{"version":3,"file":"js/acco-eb42d3ab.229225d5.js","mappings":";uBAAIA,sCCAG,IAAMC,EAAc,CACzBC,OAAQ,wDCDH,IAAMC,EAAW,CACtBC,uBAAwB,0DCGnB,IAAMC,EAA0B,CACrCC,+BAAgC,gCAChCC,8BAA+B,+BAC/BC,8BAA+B,kECH1B,IAAMC,EAAa,CACxBC,mBAAoB,mBACpBC,mBAAoB,mBACpBC,6BAA8B,2lDCKzB,IAAMC,EAAiB,CAC5BC,MAAO,CAAC,EACRC,gBAAiB,CAAC,EAClBC,UAAW,GACXC,YAAa,GACbC,SAAU,GACVC,YAAa,CAAC,EACdC,MAAO,GACPC,OAAQ,GACRC,MAAO,GACPC,YAAa,GACbC,WAAW,EACXC,aAAc,IAGHC,EAAsB,SAACC,GAGlC,OAFAA,EAACC,EAAAA,EAAA,GAAQf,GAAmBc,GAErB,oEAAPE,OAC+DF,EAAEF,aAAY,oDAAAI,QAErEC,EAAAA,EAAAA,IAAYH,EAAEb,OAAM,sGAAAe,OAGlBF,EAAEP,MAAK,mOAAAS,OAG+BF,EAAEP,MAAK,6CAGjD,GAAE,iCAAAS,OACmBF,EAAEN,OAAM,wNAAAQ,OAGaF,EAAET,SAAQ,MAAAW,OAAKF,EAAEZ,gBAAe,KAAAc,OAAIF,EAAEX,UAAS,2KAAAa,OAKnFF,EAAER,YAAYY,KAAI,SAACC,EAAUC,GACnC,MAAO,mGAAPJ,OAEqBG,EAASE,IAAG,0FAAAL,OACeG,EAASG,KAAI,0FAAAN,OAEdI,EAAK,4CAGtD,IAAGG,KAAK,IAAG,iGAAAP,OAILF,EAAEL,QAAUK,EAAEH,UAAS,wDAAAK,OAEjBF,EAAEJ,YAAW,KAAAM,OAAIF,EAAEL,MAAK,0BAElC,GAAE,yBAAAO,OACWF,EAAET,SAAQ,6DAAAW,OAA4DF,EAAEV,YAAW,6BAAAY,OACnFF,EAAET,SAAQ,4DAAAW,OAA2DF,EAAEV,YAAW,uDAKvG,gaC1EAoB,EAAA,kBAAAC,CAAA,MAAAC,EAAAD,EAAA,GAAAE,EAAAC,OAAAC,UAAAC,EAAAH,EAAAI,eAAAC,EAAAJ,OAAAK,gBAAA,SAAAP,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAAO,KAAA,EAAAC,EAAA,mBAAAC,OAAAA,OAAA,GAAAC,EAAAF,EAAAG,UAAA,aAAAC,EAAAJ,EAAAK,eAAA,kBAAAC,EAAAN,EAAAO,aAAA,yBAAAC,EAAAjB,EAAAD,EAAAE,GAAA,OAAAC,OAAAK,eAAAP,EAAAD,EAAA,CAAAS,MAAAP,EAAAiB,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAApB,EAAAD,EAAA,KAAAkB,EAAA,aAAAjB,GAAAiB,EAAA,SAAAjB,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,CAAA,WAAAoB,EAAArB,EAAAD,EAAAE,EAAAG,GAAA,IAAAK,EAAAV,GAAAA,EAAAI,qBAAAmB,EAAAvB,EAAAuB,EAAAX,EAAAT,OAAAqB,OAAAd,EAAAN,WAAAU,EAAA,IAAAW,EAAApB,GAAA,WAAAE,EAAAK,EAAA,WAAAH,MAAAiB,EAAAzB,EAAAC,EAAAY,KAAAF,CAAA,UAAAe,EAAA1B,EAAAD,EAAAE,GAAA,WAAA0B,KAAA,SAAAC,IAAA5B,EAAA6B,KAAA9B,EAAAE,GAAA,OAAAD,GAAA,OAAA2B,KAAA,QAAAC,IAAA5B,EAAA,EAAAD,EAAAsB,KAAAA,EAAA,IAAAS,EAAA,iBAAAC,EAAA,iBAAAC,EAAA,YAAAC,EAAA,YAAAC,EAAA,YAAAZ,IAAA,UAAAa,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAApB,EAAAoB,EAAA1B,GAAA,8BAAAvB,EAAAc,OAAAoC,eAAAC,EAAAnD,GAAAA,EAAAA,EAAAoD,EAAA,MAAAD,GAAAA,IAAAtC,GAAAG,EAAAyB,KAAAU,EAAA5B,KAAA0B,EAAAE,GAAA,IAAAE,EAAAL,EAAAjC,UAAAmB,EAAAnB,UAAAD,OAAAqB,OAAAc,GAAA,SAAAK,EAAA1C,GAAA,0BAAA2C,SAAA,SAAA5C,GAAAkB,EAAAjB,EAAAD,GAAA,SAAAC,GAAA,YAAA4C,QAAA7C,EAAAC,EAAA,gBAAA6C,EAAA7C,EAAAD,GAAA,SAAA+C,EAAA7C,EAAAK,EAAAG,EAAAE,GAAA,IAAAE,EAAAa,EAAA1B,EAAAC,GAAAD,EAAAM,GAAA,aAAAO,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAAP,MAAA,OAAAsB,GAAA,UAAAiB,EAAAjB,IAAA1B,EAAAyB,KAAAC,EAAA,WAAA/B,EAAAiD,QAAAlB,EAAAmB,SAAAC,MAAA,SAAAlD,GAAA8C,EAAA,OAAA9C,EAAAS,EAAAE,EAAA,aAAAX,GAAA8C,EAAA,QAAA9C,EAAAS,EAAAE,EAAA,IAAAZ,EAAAiD,QAAAlB,GAAAoB,MAAA,SAAAlD,GAAAe,EAAAP,MAAAR,EAAAS,EAAAM,EAAA,aAAAf,GAAA,OAAA8C,EAAA,QAAA9C,EAAAS,EAAAE,EAAA,IAAAA,EAAAE,EAAAe,IAAA,KAAA3B,EAAAK,EAAA,gBAAAE,MAAA,SAAAR,EAAAI,GAAA,SAAA+C,IAAA,WAAApD,GAAA,SAAAA,EAAAE,GAAA6C,EAAA9C,EAAAI,EAAAL,EAAAE,EAAA,WAAAA,EAAAA,EAAAA,EAAAiD,KAAAC,EAAAA,GAAAA,GAAA,aAAA1B,EAAA1B,EAAAE,EAAAG,GAAA,IAAAE,EAAAwB,EAAA,gBAAArB,EAAAE,GAAA,GAAAL,IAAA0B,EAAA,UAAAoB,MAAA,mCAAA9C,IAAA2B,EAAA,cAAAxB,EAAA,MAAAE,EAAA,OAAAH,MAAAR,EAAAqD,MAAA,OAAAjD,EAAAkD,OAAA7C,EAAAL,EAAAwB,IAAAjB,IAAA,KAAAE,EAAAT,EAAAmD,SAAA,GAAA1C,EAAA,KAAAE,EAAAyC,EAAA3C,EAAAT,GAAA,GAAAW,EAAA,IAAAA,IAAAmB,EAAA,gBAAAnB,CAAA,cAAAX,EAAAkD,OAAAlD,EAAAqD,KAAArD,EAAAsD,MAAAtD,EAAAwB,SAAA,aAAAxB,EAAAkD,OAAA,IAAAhD,IAAAwB,EAAA,MAAAxB,EAAA2B,EAAA7B,EAAAwB,IAAAxB,EAAAuD,kBAAAvD,EAAAwB,IAAA,gBAAAxB,EAAAkD,QAAAlD,EAAAwD,OAAA,SAAAxD,EAAAwB,KAAAtB,EAAA0B,EAAA,IAAAK,EAAAX,EAAA3B,EAAAE,EAAAG,GAAA,cAAAiC,EAAAV,KAAA,IAAArB,EAAAF,EAAAiD,KAAApB,EAAAF,EAAAM,EAAAT,MAAAM,EAAA,gBAAA1B,MAAA6B,EAAAT,IAAAyB,KAAAjD,EAAAiD,KAAA,WAAAhB,EAAAV,OAAArB,EAAA2B,EAAA7B,EAAAkD,OAAA,QAAAlD,EAAAwB,IAAAS,EAAAT,IAAA,YAAA4B,EAAAzD,EAAAE,GAAA,IAAAG,EAAAH,EAAAqD,OAAAhD,EAAAP,EAAAa,SAAAR,GAAA,GAAAE,IAAAN,EAAA,OAAAC,EAAAsD,SAAA,eAAAnD,GAAAL,EAAAa,SAAAiD,SAAA5D,EAAAqD,OAAA,SAAArD,EAAA2B,IAAA5B,EAAAwD,EAAAzD,EAAAE,GAAA,UAAAA,EAAAqD,SAAA,WAAAlD,IAAAH,EAAAqD,OAAA,QAAArD,EAAA2B,IAAA,IAAAkC,UAAA,oCAAA1D,EAAA,aAAA8B,EAAA,IAAAzB,EAAAiB,EAAApB,EAAAP,EAAAa,SAAAX,EAAA2B,KAAA,aAAAnB,EAAAkB,KAAA,OAAA1B,EAAAqD,OAAA,QAAArD,EAAA2B,IAAAnB,EAAAmB,IAAA3B,EAAAsD,SAAA,KAAArB,EAAA,IAAAvB,EAAAF,EAAAmB,IAAA,OAAAjB,EAAAA,EAAA0C,MAAApD,EAAAF,EAAAgE,YAAApD,EAAAH,MAAAP,EAAA+D,KAAAjE,EAAAkE,QAAA,WAAAhE,EAAAqD,SAAArD,EAAAqD,OAAA,OAAArD,EAAA2B,IAAA5B,GAAAC,EAAAsD,SAAA,KAAArB,GAAAvB,GAAAV,EAAAqD,OAAA,QAAArD,EAAA2B,IAAA,IAAAkC,UAAA,oCAAA7D,EAAAsD,SAAA,KAAArB,EAAA,UAAAgC,EAAAlE,GAAA,IAAAD,EAAA,CAAAoE,OAAAnE,EAAA,SAAAA,IAAAD,EAAAqE,SAAApE,EAAA,SAAAA,IAAAD,EAAAsE,WAAArE,EAAA,GAAAD,EAAAuE,SAAAtE,EAAA,SAAAuE,WAAAC,KAAAzE,EAAA,UAAA0E,EAAAzE,GAAA,IAAAD,EAAAC,EAAA0E,YAAA,GAAA3E,EAAA4B,KAAA,gBAAA5B,EAAA6B,IAAA5B,EAAA0E,WAAA3E,CAAA,UAAAyB,EAAAxB,GAAA,KAAAuE,WAAA,EAAAJ,OAAA,SAAAnE,EAAA2C,QAAAuB,EAAA,WAAAS,OAAA,YAAAnC,EAAAzC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAAY,GAAA,GAAAV,EAAA,OAAAA,EAAA4B,KAAA9B,GAAA,sBAAAA,EAAAiE,KAAA,OAAAjE,EAAA,IAAA6E,MAAA7E,EAAA8E,QAAA,KAAAvE,GAAA,EAAAG,EAAA,SAAAuD,IAAA,OAAA1D,EAAAP,EAAA8E,QAAA,GAAAzE,EAAAyB,KAAA9B,EAAAO,GAAA,OAAA0D,EAAAxD,MAAAT,EAAAO,GAAA0D,EAAAX,MAAA,EAAAW,EAAA,OAAAA,EAAAxD,MAAAR,EAAAgE,EAAAX,MAAA,EAAAW,CAAA,SAAAvD,EAAAuD,KAAAvD,CAAA,YAAAqD,UAAAf,EAAAhD,GAAA,2BAAAoC,EAAAhC,UAAAiC,EAAA9B,EAAAmC,EAAA,eAAAjC,MAAA4B,EAAAjB,cAAA,IAAAb,EAAA8B,EAAA,eAAA5B,MAAA2B,EAAAhB,cAAA,IAAAgB,EAAA2C,YAAA7D,EAAAmB,EAAArB,EAAA,qBAAAhB,EAAAgF,oBAAA,SAAA/E,GAAA,IAAAD,EAAA,mBAAAC,GAAAA,EAAAgF,YAAA,QAAAjF,IAAAA,IAAAoC,GAAA,uBAAApC,EAAA+E,aAAA/E,EAAAkF,MAAA,EAAAlF,EAAAmF,KAAA,SAAAlF,GAAA,OAAAE,OAAAiF,eAAAjF,OAAAiF,eAAAnF,EAAAoC,IAAApC,EAAAoF,UAAAhD,EAAAnB,EAAAjB,EAAAe,EAAA,sBAAAf,EAAAG,UAAAD,OAAAqB,OAAAkB,GAAAzC,CAAA,EAAAD,EAAAsF,MAAA,SAAArF,GAAA,OAAAiD,QAAAjD,EAAA,EAAA0C,EAAAG,EAAA1C,WAAAc,EAAA4B,EAAA1C,UAAAU,GAAA,0BAAAd,EAAA8C,cAAAA,EAAA9C,EAAAuF,MAAA,SAAAtF,EAAAC,EAAAG,EAAAE,EAAAG,QAAA,IAAAA,IAAAA,EAAA8E,SAAA,IAAA5E,EAAA,IAAAkC,EAAAxB,EAAArB,EAAAC,EAAAG,EAAAE,GAAAG,GAAA,OAAAV,EAAAgF,oBAAA9E,GAAAU,EAAAA,EAAAqD,OAAAd,MAAA,SAAAlD,GAAA,OAAAA,EAAAqD,KAAArD,EAAAQ,MAAAG,EAAAqD,MAAA,KAAAtB,EAAAD,GAAAxB,EAAAwB,EAAA1B,EAAA,aAAAE,EAAAwB,EAAA9B,GAAA,0BAAAM,EAAAwB,EAAA,qDAAA1C,EAAAyF,KAAA,SAAAxF,GAAA,IAAAD,EAAAG,OAAAF,GAAAC,EAAA,WAAAG,KAAAL,EAAAE,EAAAuE,KAAApE,GAAA,OAAAH,EAAAwF,UAAA,SAAAzB,IAAA,KAAA/D,EAAA4E,QAAA,KAAA7E,EAAAC,EAAAyF,MAAA,GAAA1F,KAAAD,EAAA,OAAAiE,EAAAxD,MAAAR,EAAAgE,EAAAX,MAAA,EAAAW,CAAA,QAAAA,EAAAX,MAAA,EAAAW,CAAA,GAAAjE,EAAAyC,OAAAA,EAAAhB,EAAArB,UAAA,CAAA6E,YAAAxD,EAAAmD,MAAA,SAAA5E,GAAA,QAAA4F,KAAA,OAAA3B,KAAA,OAAAP,KAAA,KAAAC,MAAA1D,EAAA,KAAAqD,MAAA,OAAAE,SAAA,UAAAD,OAAA,YAAA1B,IAAA5B,EAAA,KAAAuE,WAAA5B,QAAA8B,IAAA1E,EAAA,QAAAE,KAAA,WAAAA,EAAA2F,OAAA,IAAAxF,EAAAyB,KAAA,KAAA5B,KAAA2E,OAAA3E,EAAA4F,MAAA,WAAA5F,GAAAD,EAAA,EAAA8F,KAAA,gBAAAzC,MAAA,MAAArD,EAAA,KAAAuE,WAAA,GAAAG,WAAA,aAAA1E,EAAA2B,KAAA,MAAA3B,EAAA4B,IAAA,YAAAmE,IAAA,EAAApC,kBAAA,SAAA5D,GAAA,QAAAsD,KAAA,MAAAtD,EAAA,IAAAE,EAAA,cAAA+F,EAAA5F,EAAAE,GAAA,OAAAK,EAAAgB,KAAA,QAAAhB,EAAAiB,IAAA7B,EAAAE,EAAA+D,KAAA5D,EAAAE,IAAAL,EAAAqD,OAAA,OAAArD,EAAA2B,IAAA5B,KAAAM,CAAA,SAAAA,EAAA,KAAAiE,WAAAM,OAAA,EAAAvE,GAAA,IAAAA,EAAA,KAAAG,EAAA,KAAA8D,WAAAjE,GAAAK,EAAAF,EAAAiE,WAAA,YAAAjE,EAAA0D,OAAA,OAAA6B,EAAA,UAAAvF,EAAA0D,QAAA,KAAAwB,KAAA,KAAA9E,EAAAT,EAAAyB,KAAApB,EAAA,YAAAM,EAAAX,EAAAyB,KAAApB,EAAA,iBAAAI,GAAAE,EAAA,SAAA4E,KAAAlF,EAAA2D,SAAA,OAAA4B,EAAAvF,EAAA2D,UAAA,WAAAuB,KAAAlF,EAAA4D,WAAA,OAAA2B,EAAAvF,EAAA4D,WAAA,SAAAxD,GAAA,QAAA8E,KAAAlF,EAAA2D,SAAA,OAAA4B,EAAAvF,EAAA2D,UAAA,YAAArD,EAAA,UAAAqC,MAAA,kDAAAuC,KAAAlF,EAAA4D,WAAA,OAAA2B,EAAAvF,EAAA4D,WAAA,KAAAT,OAAA,SAAA5D,EAAAD,GAAA,QAAAE,EAAA,KAAAsE,WAAAM,OAAA,EAAA5E,GAAA,IAAAA,EAAA,KAAAK,EAAA,KAAAiE,WAAAtE,GAAA,GAAAK,EAAA6D,QAAA,KAAAwB,MAAAvF,EAAAyB,KAAAvB,EAAA,oBAAAqF,KAAArF,EAAA+D,WAAA,KAAA5D,EAAAH,EAAA,OAAAG,IAAA,UAAAT,GAAA,aAAAA,IAAAS,EAAA0D,QAAApE,GAAAA,GAAAU,EAAA4D,aAAA5D,EAAA,UAAAE,EAAAF,EAAAA,EAAAiE,WAAA,UAAA/D,EAAAgB,KAAA3B,EAAAW,EAAAiB,IAAA7B,EAAAU,GAAA,KAAA6C,OAAA,YAAAU,KAAAvD,EAAA4D,WAAAnC,GAAA,KAAA+D,SAAAtF,EAAA,EAAAsF,SAAA,SAAAjG,EAAAD,GAAA,aAAAC,EAAA2B,KAAA,MAAA3B,EAAA4B,IAAA,gBAAA5B,EAAA2B,MAAA,aAAA3B,EAAA2B,KAAA,KAAAqC,KAAAhE,EAAA4B,IAAA,WAAA5B,EAAA2B,MAAA,KAAAoE,KAAA,KAAAnE,IAAA5B,EAAA4B,IAAA,KAAA0B,OAAA,cAAAU,KAAA,kBAAAhE,EAAA2B,MAAA5B,IAAA,KAAAiE,KAAAjE,GAAAmC,CAAA,EAAAgE,OAAA,SAAAlG,GAAA,QAAAD,EAAA,KAAAwE,WAAAM,OAAA,EAAA9E,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAsE,WAAAxE,GAAA,GAAAE,EAAAoE,aAAArE,EAAA,YAAAiG,SAAAhG,EAAAyE,WAAAzE,EAAAqE,UAAAG,EAAAxE,GAAAiC,CAAA,GAAAiE,MAAA,SAAAnG,GAAA,QAAAD,EAAA,KAAAwE,WAAAM,OAAA,EAAA9E,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAsE,WAAAxE,GAAA,GAAAE,EAAAkE,SAAAnE,EAAA,KAAAI,EAAAH,EAAAyE,WAAA,aAAAtE,EAAAuB,KAAA,KAAArB,EAAAF,EAAAwB,IAAA6C,EAAAxE,EAAA,QAAAK,CAAA,YAAA8C,MAAA,0BAAAgD,cAAA,SAAArG,EAAAE,EAAAG,GAAA,YAAAmD,SAAA,CAAA3C,SAAA4B,EAAAzC,GAAAgE,WAAA9D,EAAAgE,QAAA7D,GAAA,cAAAkD,SAAA,KAAA1B,IAAA5B,GAAAkC,CAAA,GAAAnC,CAAA,UAAAsG,EAAAC,EAAAtD,EAAAuD,EAAAC,EAAAC,EAAAC,EAAA9E,GAAA,QAAA+E,EAAAL,EAAAI,GAAA9E,GAAApB,EAAAmG,EAAAnG,KAAA,OAAAoG,GAAA,YAAAL,EAAAK,EAAA,CAAAD,EAAAtD,KAAAL,EAAAxC,GAAA+E,QAAAvC,QAAAxC,GAAA0C,KAAAsD,EAAAC,EAAA,UAAAI,EAAAC,GAAA,sBAAAC,EAAA,KAAAC,EAAAC,UAAA,WAAA1B,SAAA,SAAAvC,EAAAuD,GAAA,IAAAD,EAAAQ,EAAAI,MAAAH,EAAAC,GAAA,SAAAR,EAAAhG,GAAA6F,EAAAC,EAAAtD,EAAAuD,EAAAC,EAAAC,EAAA,OAAAjG,EAAA,UAAAiG,EAAAU,GAAAd,EAAAC,EAAAtD,EAAAuD,EAAAC,EAAAC,EAAA,QAAAU,EAAA,CAAAX,OAAAY,EAAA,cAAAC,EAAAtH,EAAAE,GAAA,IAAAD,EAAAE,OAAAsF,KAAAzF,GAAA,GAAAG,OAAAoH,sBAAA,KAAAhH,EAAAJ,OAAAoH,sBAAAvH,GAAAE,IAAAK,EAAAA,EAAAiH,QAAA,SAAAtH,GAAA,OAAAC,OAAAsH,yBAAAzH,EAAAE,GAAAiB,UAAA,KAAAlB,EAAAwE,KAAA0C,MAAAlH,EAAAM,EAAA,QAAAN,CAAA,UAAAX,EAAAU,GAAA,QAAAE,EAAA,EAAAA,EAAAgH,UAAApC,OAAA5E,IAAA,KAAAD,EAAA,MAAAiH,UAAAhH,GAAAgH,UAAAhH,GAAA,GAAAA,EAAA,EAAAoH,EAAAnH,OAAAF,IAAA,GAAA2C,SAAA,SAAA1C,GAAA,IAAAwH,EAAAf,EAAAlG,EAAAiH,EAAA1H,EAAA2G,EAAAzG,EAAAO,EAAAR,EAAAC,IAAAyG,EAAAgB,EAAAhB,MAAAe,EAAAvH,OAAAK,eAAAkH,EAAAf,EAAA,CAAAlG,MAAAA,EAAAU,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAqG,EAAAf,GAAAlG,CAAA,IAAAN,OAAAyH,0BAAAzH,OAAA0H,iBAAA7H,EAAAG,OAAAyH,0BAAA3H,IAAAqH,EAAAnH,OAAAF,IAAA2C,SAAA,SAAA1C,GAAAC,OAAAK,eAAAR,EAAAE,EAAAC,OAAAsH,yBAAAxH,EAAAC,GAAA,WAAAF,CAAA,UAAA8H,EAAAC,EAAAC,GAAA,QAAAtH,EAAA,EAAAA,EAAAsH,EAAAlD,OAAApE,IAAA,KAAAuH,EAAAD,EAAAtH,GAAAuH,EAAA9G,WAAA8G,EAAA9G,aAAA,EAAA8G,EAAA7G,cAAA,YAAA6G,IAAAA,EAAA5G,UAAA,GAAAlB,OAAAK,eAAAuH,EAAAJ,EAAAM,EAAAtB,KAAAsB,EAAA,WAAAN,EAAA9F,GAAA,IAAA8E,EAAA,SAAAuB,EAAAC,GAAA,cAAAnF,EAAAkF,IAAA,OAAAA,EAAA,OAAAA,EAAA,IAAAE,EAAAF,EAAAvH,OAAA0H,aAAA,QAAAhB,IAAAe,EAAA,KAAAE,EAAAF,EAAAtG,KAAAoG,EAAAC,UAAA,cAAAnF,EAAAsF,GAAA,OAAAA,EAAA,UAAAvE,UAAA,uDAAAwE,OAAAL,EAAA,CAAAM,CAAA3G,GAAA,iBAAAmB,EAAA2D,GAAAA,EAAA4B,OAAA5B,EAAA,CAQA,IAAM8B,EAAeC,EAAQ,MAE7BA,EAAQ,OAER,IAAMC,EAAY,gBACZC,EAAyB,mBACzBC,EAAS,oBAETC,EAAgB,CACpBC,6BAA8B,oBAAFxJ,OAAsBqJ,EAAsB,MACxEI,UAAW,cAGQC,EAAU,SAAAC,EAAAC,GAU7B,SAAAF,EAAaG,GAAuB,IAAAC,EAAA,KAAdC,EAAOpC,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,EAqB/B,GApDJ,SAAAqC,EAAAC,GAAA,KAAAD,aAAAC,GAAA,UAAAzF,UAAA,qCA+BoC0F,CAAA,KAAAR,GAChCS,KAAKN,QAAUA,EACfM,KAAKC,OAAS,IAAIlB,EAElBmB,EAAAA,EAAiBC,qBAAqBlB,EAAWe,KAAKC,OAAMrK,EAAA,GACvDoK,KAAKN,QAAQU,aAAahB,EAAcE,YAAc,CAAEe,MAAOL,KAAKN,QAAQY,WAAWlB,EAAcE,WAAWvI,SAGrHiJ,KAAKO,MAAQb,EAAQc,cAAc,YACnCR,KAAKjK,IAAM2J,EAAQc,cAAc,sBAEjCR,KAAKS,SAAQ7K,EAAAA,EAAA,IAAQ8K,EAAAA,EAAAA,IAAQV,KAAKN,UAAaE,GAC/CI,KAAKS,SAASE,mBAAqBX,KAAKY,0BAA4B,GACpEZ,KAAKO,MAAM,WAAWN,OAAOY,GAAG,SAAUb,KAAKc,SAAUd,MACzDA,KAAKO,MAAM,WAAWN,OAAOY,GAAG,OAAQb,KAAKe,YAAaf,MAC1DA,KAAKO,MAAM,WAAWN,OAAOY,GAAG,QAASb,KAAKgB,iBAAkBhB,MAChEA,KAAKiB,aAAejB,KAAKS,SAASQ,aAClCjB,KAAKkB,kBAAoBlB,KAAKS,SAASS,kBACvClB,KAAKmB,aAAc,EACnBnB,KAAKoB,2BAA6B,IAE7BpB,KAAKS,SAASY,cAAe,CAChC,IAAMC,EAAsBC,SAASf,cAAcpB,EAAcC,8BACjE,GAAIiC,EAAqB,CACvB,IAAME,EAAmBF,EAAoBpC,GACzCsC,GAAoBA,EAAiBvB,QACvCuB,EAAiBvB,OAAOwB,KAAKC,EAAAA,GAAoBC,4BAA4B,SAACC,GAC5EjC,EAAKkC,cAAcD,EACrB,GAEJ,CACF,CACF,CA/DF,IAAA9B,EAAAgC,EAqSG,OArSHhC,EAiEEP,EAjEFuC,EAiEE,EAAA7E,IAAA,iBAAAlG,MAAA,kBAAAyI,EAAAA,GAAApC,EAAA/G,IAAAoF,MAKA,SAAAsG,IAAA,IAAA7L,EAAA8L,EAAA,OAAA3L,IAAAuB,MAAA,SAAAqK,GAAA,cAAAA,EAAA/F,KAAA+F,EAAA1H,MAAA,OACiD,OAAzCrE,GAAMgM,EAAAA,EAAAA,IAAiBlC,KAAKiB,cAAagB,EAAA1H,KAAA,GAC1B4H,EAAAA,EAAAA,IAAcjM,GAAI,OAA3B,OAAN8L,EAAMC,EAAAjI,KAAAiI,EAAA9H,OAAA,SAEL6H,GAAM,wBAAAC,EAAA5F,OAAA,GAAA0F,EAAA,WACdtE,MAAA,KAAAD,UAAA,IAAAP,IAAA,0BAAAlG,MAAA,SAAAqL,GAAA,OAAA3C,EAAAA,GAAArC,EAAA/G,IAAAoF,MAED,SAAA4G,EAA+BC,GAAgB,IAAAC,EAAArM,EAAA8L,EAAA,OAAA3L,IAAAuB,MAAA,SAAA4K,GAAA,cAAAA,EAAAtG,KAAAsG,EAAAjI,MAAA,OAOe,OANtDgI,EAASD,EAAiBG,QAAO,SAACT,EAAQU,EAAIzM,GAClD,IAAM0M,EAAQ,CAAC,EAEf,OADAA,EAAM,mBAAqB1M,EAAQ,KAAOyM,EAC1C9M,EAAAA,EAAA,GAAYoM,GAAWW,EACzB,GAAG,CAAC,GAEEzM,GAAMgM,EAAAA,EAAAA,IAAiBlC,KAAKkB,kBAAmBqB,GAAOC,EAAAjI,KAAA,GACvC4H,EAAAA,EAAAA,IAAcjM,GAAI,OAA3B,OAAN8L,EAAMQ,EAAAxI,KAAAwI,EAAArI,OAAA,SAEL6H,GAAM,wBAAAQ,EAAAnG,OAAA,GAAAgG,EAAA,WACd5E,MAAA,KAAAD,UAAA,IAAAP,IAAA,oBAAAlG,MAED,SAAmB6L,GAAM,IAAAC,EAAA,KACvBD,EAAKE,eAAe5J,SAAQ,SAAC6J,EAAe9M,GAC1C,IAAM+M,EAAWC,WAAWF,EAAcC,UACpCE,EAAYD,WAAWF,EAAcG,WACrCC,EAAWlN,EAAQ,EACnBmN,EAAQ,CACZC,QAAST,EAAKU,OACdC,SAASX,EAAKY,cAAgBZ,EAAKY,cAG/BlB,EAAmB,CAACS,EAAcU,iBACxCV,EAAcW,2BAA2BxK,SAAQ,SAACyK,GAAWrB,EAAiBvH,KAAK4I,EAAKF,gBAAiB,IAEzGZ,EAAK9M,IAAIoJ,GAAQyE,UACfT,EACAH,EACAE,EACAE,EACA,UACA,EACA,CAAC,CAAElL,KAAM,QAAS2L,SAAUhB,EAAKiB,gBAAgBC,KAAKlB,EAAM,SAAUP,KAE1E,IAEAtC,KAAKjK,IAAIoJ,GAAQ6E,uBAEbhE,KAAKS,SAASwD,eAChBjE,KAAKjK,IAAIoJ,GAAQ8E,eAErB,GAAC,CAAAhH,IAAA,8BAAAlG,MAED,WACE,MAAO,CACLjC,MAAO,CACLoP,KAAMlE,KAAKS,SAAS0D,cACpBC,eAAgBpE,KAAKS,SAAS4D,wBAC9BC,YAAatE,KAAKS,SAAS8D,qBAC3BC,YAAaxE,KAAKS,SAASgE,qBAC3BC,MAAO1E,KAAKS,SAASkE,eACrBC,cAAe5E,KAAK6E,0BAA4B,CAAC,EACjDtL,QAASyG,KAAKS,SAASqE,kBAEzB5P,SAAU8K,KAAKS,SAASsE,aACxB/P,UAAWgL,KAAKS,SAASuE,cACzB5P,MAAO4K,KAAKS,SAASwE,UACrB5P,OAAQ2K,KAAKS,SAASyE,WACtBjQ,YAAa+K,KAAKS,SAASxL,YAC3BM,YAAayK,KAAKS,SAAS0E,gBAC3BhQ,YAAa6K,KAAKS,SAASE,oBAAsBX,KAAKY,0BAA4B,GAClFpL,UAAWwK,KAAKS,SAASY,cACzB/L,MAAO0K,KAAK1K,MAEhB,GAAC,CAAA2H,IAAA,gCAAAlG,MAED,SAA+BqO,GAAY,IAAAC,EAAA,KACnCC,EAAwB,GACxBC,EAAmB,GAqBzB,OAnBAH,EAAWtC,eAAe5J,SAAQ,SAAC6J,GACjC,GAAIE,WAAWoC,EAAK5E,SAASuC,YAAcD,EAAcC,UAAYC,WAAWoC,EAAK5E,SAASyC,aAAeH,EAAcG,UACzHqC,EAAiBxK,KAAInF,EAAC,CAAC,EAAImN,QACtB,CACL,IAAMyC,EAAiBF,EAAsBG,MAAK,SAAAC,GAAA,IAAG1C,EAAQ0C,EAAR1C,SAAUE,EAASwC,EAATxC,UAAWO,EAAeiC,EAAfjC,gBAAe,OACvFT,IAAaD,EAAcC,UAC3BE,IAAcH,EAAcG,WAC5BO,IAAoBV,EAAcU,eAAe,IAE9C+B,EAGHA,EAAe9B,2BAA2B3I,KAAInF,EAAC,CAAC,EAAImN,IAFpDuC,EAAsBvK,KAAInF,EAAAA,EAAC,CAAC,EAAImN,GAAa,IAAEW,2BAA4B,KAI/E,CACF,IAIO,CAAEiC,kBAFc/P,EAAAA,EAAA,GAAQwP,GAAU,IAAEtC,eAAgB,GAAFjN,OAAMyP,KAEnCC,iBAAAA,EAC9B,GAAC,CAAAtI,IAAA,kBAAAlG,MAED,SAAiB6O,EAAYtD,GAAkB,IAAAuD,EAAA,KAC7C7F,KAAK8F,wBAAwBxD,GAAkB7I,MAAK,SAAAmI,GAClD,IAAAmE,EAAgDF,EAAKpF,SAA7CxL,EAAW8Q,EAAX9Q,YAAaM,EAAWwQ,EAAXxQ,YAAaC,EAASuQ,EAATvQ,UAE5BwQ,GADiBC,MAAMC,QAAQtE,GAAaA,EAAW,CAACA,IACzB7L,KAAI,SAAC6M,GAAI,OAAAhN,EAAAA,EAAA,GAAWgN,GAAI,IAAE3N,YAAAA,EAAaM,YAAAA,EAAaC,UAAAA,GAAS,IAClGqQ,EAAKM,2BAA2BP,EAAYI,EAC9C,IAAGtJ,OAAM,SAAAS,GACPiJ,EAAQjJ,MAAMA,EAChB,GACF,GAAC,CAAAF,IAAA,6BAAAlG,MAED,SAA4B6O,EAAYI,GACtC,ICrLsCrQ,EDqLhC0Q,EAAwBJ,MAAMC,QAAQF,GAAmBA,EAAe,GAAKA,EAGnF,GAFAhG,KAAKC,OAAOqG,KAAKC,EAAAA,GAAiB3R,6BAA4BgB,EAAAA,EAAA,GAAOyQ,GAAoB,IAAET,WAAAA,KAEvFI,EAAe5K,OAAS,EAAG,CAC7B,IAGMoL,GC5L8B7Q,ED4LgB,CAAE8Q,YAHlCT,EAAejQ,KAAI,SAAA4N,GAAI,OACzCjO,EAAmBE,EAAAA,EAAC,CAAC,EAAI+N,GAAI,IAAElO,aAAc,gBAAgB,MClL5DiR,EAAAA,EAAAA,IAAe,CACpBhE,GAAI,mCACJiE,MAAOhR,EAAE8Q,YACTnG,WAVuB,CACvB,aAAa,EACb,kBAAmB,OACnB,cAAe,KACf,oBAAqB,MAOrBsG,eAAe,EACfC,iBAAiB,EACjBC,cAAc,EACdrR,aAAc,wCD8KZuK,KAAKjK,IAAIoJ,GAAQ4H,eAAeP,GAChCQ,EAAAA,EAAUC,8BAA8BjH,KAAKO,MAC/C,KAAO,CACL,IAAMiG,EAAoB9Q,EAAmBE,EAAC,CAAC,EAAIyQ,IACnDrG,KAAKjK,IAAIoJ,GAAQ4H,eAAeP,EAClC,CACF,GAAC,CAAAvJ,IAAA,cAAAlG,MAED,WACMiJ,KAAKmB,aACPnB,KAAKjK,IAAIoJ,GAAQ+H,cAErB,GAAC,CAAAjK,IAAA,WAAAlG,MAED,WAAY,IAAAoQ,EAAAC,EAAA,KACVpH,KAAKS,SAAS4G,YAAc,IAAIC,KAChCtH,KAAKC,OAAOqG,KAAKC,EAAAA,GAAiB7R,mBAAkBkB,EAAA,GAAOoK,KAAKS,WAChET,KAAKjK,IAAIoJ,GAAQoI,UAEjBvH,KAAKwH,iBAAiB/N,MAAK,SAADgO,GAAA,OAAAN,EAAAA,GAAA/J,EAAA/G,IAAAoF,MAAC,SAAAiM,EAAO9F,GAAQ,IAAA+F,EAAAhC,EAAAJ,EAAAqC,EAAAC,EAAAvF,EAAAwF,EAAAC,EAAA9S,EAAAM,EAAAC,EAAAwS,EAAA,OAAA3R,IAAAuB,MAAA,SAAAqQ,GAAA,cAAAA,EAAA/L,KAAA+L,EAAA1N,MAAA,OAEC,GAFDoN,EACQP,EAAKc,8BAA8BtG,GAA3E+D,EAAiBgC,EAAjBhC,kBAAmBJ,EAAgBoC,EAAhBpC,iBAC3B6B,EAAKe,kBAAkBxC,IAEnByB,EAAK3G,SAAS2H,iBAAkB,CAAFH,EAAA1N,KAAA,SAEkC,GAD9DqN,EAAgC,GAC9BC,EAA0BT,EAAKiB,gCAEjC9C,EAAiBnK,OAAS,GAAC,CAAA6M,EAAA1N,KAAA,SACkD,OAAzE+H,EAAmBiD,EAAiBxP,KAAI,SAAAuN,GAAM,OAAIA,EAAOG,eAAe,IAACwE,EAAA1N,KAAA,EACxD6M,EAAKtB,wBAAwBxD,GAAiB,OAA/DV,EAAQqG,EAAAjO,KAAA+N,EACkCX,EAAK3G,SAA7CxL,EAAW8S,EAAX9S,YAAaM,EAAWwS,EAAXxS,YAAaC,EAASuS,EAATvS,UAC5BwS,EAAiB/B,MAAMC,QAAQtE,GAAaA,EAAW,CAACA,GAC9DgG,EAAgCI,EAAcjS,KAAI,SAAC6M,GAAI,OAAAhN,EAAAA,EAAA,GAAWgN,GAAI,IAAE3N,YAAAA,EAAaM,YAAAA,EAAaC,UAAAA,GAAS,IAAI,QAGjH4R,EAAKkB,iBAAiB,CAACT,GAAuBhS,sDAAK+R,skBAA+B,yBAAAK,EAAA5L,YAAA,GAAAqL,EAAA,MAErFjK,MAAA,KAAAD,UAAA,IAAEd,OAAM,SAAAS,GACPiJ,EAAQjJ,MAAMA,EAChB,IAEA6C,KAAKmB,aAAc,CACrB,GAAC,CAAAlE,IAAA,mBAAAlG,MAED,WACEiJ,KAAKS,SAAS8H,cAAgB,IAAIjB,KAClCtH,KAAKC,OAAOqG,KAAKC,EAAAA,GAAiB5R,mBAAkBiB,EAAA,GAAOoK,KAAKS,WAChET,KAAKwI,WACP,GAAC,CAAAvL,IAAA,YAAAlG,MAED,WACEiJ,KAAKjK,IAAIoJ,GAAQsJ,iBACnB,GAAC,CAAAxL,IAAA,mBAAAlG,MAED,SAAkBqK,GAChB,IAAM4B,EAAWC,WAAWjD,KAAKS,SAASuC,UACpCE,EAAYD,WAAWjD,KAAKS,SAASyC,WAErCE,EAAQ,CACZC,QAASrD,KAAKS,SAASiI,WACvBnF,SAASvD,KAAKS,SAASkI,kBAAoB3I,KAAKS,SAASkI,kBAG3D3I,KAAKjK,IAAIoJ,GAAQyE,UANA,EAQfZ,EACAE,EACAE,EACA,UACA,EACA,CAAC,CAAElL,KAAM,QAAS2L,SAAU7D,KAAKmG,2BAA2BpC,KAAK/D,KAAM,SAAUoB,MAEnFpB,KAAKmG,2BAA2B,SAAU/E,EAC5C,GAAC,CAAAnE,IAAA,gBAAAlG,MAED,SAAezB,GACb0K,KAAK1K,MAAQA,EACT0K,KAAKmB,aACHnB,KAAKS,SAAS2H,mBAChBpI,KAAKjK,IAAIoJ,GAAQ+H,eACjBlH,KAAKsI,mBAGX,GAAC,CAAArL,IAAA,yBAAAlG,MAED,WACE,IAAM6R,EAAqBrH,SAASf,cAAc,gCAAD3K,OAAiCmK,KAAKN,QAAQgD,GAAE,oBAC7FmG,EAAkB,KACtB,IACEA,EAAkBC,KAAKC,MAAMH,EAAmBI,YAClD,CAAE,MAAOtL,GAAO,CAEhB,OAAOmL,CACT,GAAC,CAAA5L,IAAA,yBAAAlG,MAED,WACE,IAAMkS,EAAuB1H,SAASf,cAAc,gCAAD3K,OAAiCmK,KAAKN,QAAQgD,GAAE,sBAC/FwG,EAAoB,KACxB,IACEA,EAAoBJ,KAAKC,MAAME,EAAqBD,YACtD,CAAE,MAAOtL,GAAO,CAEhB,OAAOwL,CACT,IArSFpH,GAAA1D,EAAA0B,EAAApJ,UAAAoL,GAAArL,OAAAK,eAAAgJ,EAAA,aAAAnI,UAAA,IAqSG4H,CAAA,CAhR4B,IAmR/B4J,EAAAA,EAAAA,GAAe5J,EAAYN,qCErSpB,IAAMmK,EAAc,CACzBC,aAAc,0BACdC,YAAa,yBACbC,YAAa,4DCHR,IAAMC,EAAgB,CAC3B7H,2BAA4B,wgDCOvB,IAAM8H,EAAmC,CAC9CC,MAAO,GACPlF,YAAa,GACbmF,WAAY,GACZC,WAAW,GAUPC,EAAgC,SAAClU,GAGrC,IAAMmU,GAFNnU,EAACC,EAAAA,EAAA,GAAQ6T,GAAqC9T,IAE1BoU,SAAW,2BAA6B,yBAE5D,MAAO,qBAAPlU,OACgBiU,EAAS,2CAAAjU,OACjBF,EAAE+T,MAAQ,iDAAH7T,OAAoDF,EAAE+T,MAAK,UAAW,GAAE,cAAA7T,OAC/EF,EAAE6O,YAAc,uDAAH3O,OAA0DF,EAAE6O,YAAW,UAAW,GAAE,cAAA3O,QACjGmU,EAAAA,EAAAA,GAAY,CACVC,QAAS,OACTC,OAAO,EACP/T,KAAMR,EAAEgU,WACRlU,aAAc,yBAAFI,OAA2BF,EAAEiU,UAAY,kCAAoC,MAC3F,mBAGV,6sCCnBO,IAAMO,EAAiC,CAC5C7U,MAAO,CAAC,EACR8U,uBAAwB,GACxBT,WAAY,GACZU,aAAc,CAAC,EACfC,OAAQ,GACRC,WAAY,GACZC,iBAAiB,EACjBC,kBAAmB,CAAC,EACpBb,WAAW,EACXc,iBAAkB,GAClBC,wBAAyB,GACzBC,WAAY,GACZC,cAAe,2rCCrBV,IAAMC,EAAuC,CAClDxV,MAAO,CAAC,EACRqU,WAAY,GACZW,OAAQ,GACRC,WAAY,GACZC,iBAAiB,EACjBG,wBAAyB,GACzBC,WAAY,GACZG,cAAe,GACfC,oBAAqB,IAGVC,EAA8B,SAACtV,GAG1C,OAFAA,EAACC,EAAAA,EAAA,GAAQkV,GAAyCnV,GAE3C,uDAAPE,QAEMqV,EAAAA,EAAAA,GAAatV,EAAAA,EAAAA,EAAC,CAAC,EACZuV,EAAAA,IACAxV,EAAEL,OAAK,IACV8V,kBAAmBzV,EAAEyU,uBACrBR,UAAWjU,EAAEiU,UACbY,kBAAmB7U,EAAEgV,wBACrBU,MAAO1V,EAAE2V,wBACTC,OAAQ5V,EAAEgV,yBAA2BhV,EAAEL,MAAMgV,QAAU3U,EAAEL,MAAMiV,YAC3DiB,EAAAA,EAAAA,IAAgB5V,EAAAA,EAAC,CAAC,EAAID,GAAC,IAAEQ,KAAMR,EAAEgV,wBAAyBC,WAAYjV,EAAEiV,WAAYN,OAAQ3U,EAAEL,MAAMgV,OAAQmB,QAAS9V,EAAEL,MAAMiV,cAC7H5U,EAAEiV,WACNc,aAAa,KACb,YAAA7V,QACAmU,EAAAA,EAAAA,GAAY,CACZC,QAAS,OACTC,OAAO,EACP/T,KAAMR,EAAEgU,WACRlU,aAAc,yBAAFI,OAA2BF,EAAEiU,UAAY,kCAAoC,MACzF,mBAGR,6tCCzCA,IAAM+B,EAA2B,CAC/BlW,aAAc,0BACdmW,KAAM,SAGFC,EAAmC,CACvCpW,aAAc,mCAUT,SAASqW,EAAclJ,EAAMmJ,EAAaxB,EAAYyB,GAC3D,IAAIC,EAOA3B,EALJ,QAA+B3M,IAA3BiF,EAAKtN,MAAM4W,YAA2B,CACxC,IAAMC,EAASvJ,EAAKtN,MAAM8W,iBAAiBD,OAC3CF,EAA+E,iBAA/CrJ,EAAKtN,MAAM8W,iBAAiBC,eAAoC,GAAHxW,OAAMsW,EAAM,KAAAtW,OAAI+M,EAAKtN,MAAM4W,aAAW,GAAArW,OAAQ+M,EAAKtN,MAAM4W,YAAW,KAAArW,OAAIsW,EACvK,CASA,OALIvJ,EAAK0J,gBAAkB1J,EAAK0J,eAAehC,SAE7CA,GADAA,EAAS1H,EAAK0J,eAAehC,OAAOiC,QAAQ,0BAA2B,KACrD,kBAAoBP,GAGxCpW,EAAAA,EAAA,GACK+V,GAAwB,IAC3B5U,MAAO6L,EAAKtN,MAAMyB,MAClByV,SAAU5J,EAAKtN,MAAM8W,iBAAiBD,OACtCM,iBAAiE,iBAA/C7J,EAAKtN,MAAM8W,iBAAiBC,eAAoC,SAAW,QAC7FK,SAAU9J,EAAKtN,MAAMqX,mBAAkB,IAAA9W,OAC/B+M,EAAKtN,MAAMqX,mBAAkB,KACjC/J,EAAKtN,MAAM4W,aAAetJ,EAAKtN,MAAMsX,8BAAgC,IAAH/W,OAAO+M,EAAKtN,MAAMsX,8BAA6B,UAAMjP,EAC3HkP,SAAUjK,EAAKtN,MAAMwX,cAAgBlK,EAAKtN,MAAMwX,mBAAgBnP,EAChE2M,OAAAA,EACAC,WAAY3H,EAAK0J,gBAAkB1J,EAAK0J,eAAehC,OAASC,OAAa5M,EAC7EoP,OAAQhB,EAAYxW,YACpByX,YAAaf,EAAgCF,EAAYiB,YAAc,IAAMf,OAAgCtO,GAEjH,CAuBO,SAASsP,EAA2BrK,GACzC,OAAOA,EAAKwH,sBACd,qWCjFA/T,EAAA,kBAAAC,CAAA,MAAAC,EAAAD,EAAA,GAAAE,EAAAC,OAAAC,UAAAC,EAAAH,EAAAI,eAAAC,EAAAJ,OAAAK,gBAAA,SAAAP,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAAO,KAAA,EAAAC,EAAA,mBAAAC,OAAAA,OAAA,GAAAC,EAAAF,EAAAG,UAAA,aAAAC,EAAAJ,EAAAK,eAAA,kBAAAC,EAAAN,EAAAO,aAAA,yBAAAC,EAAAjB,EAAAD,EAAAE,GAAA,OAAAC,OAAAK,eAAAP,EAAAD,EAAA,CAAAS,MAAAP,EAAAiB,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAApB,EAAAD,EAAA,KAAAkB,EAAA,aAAAjB,GAAAiB,EAAA,SAAAjB,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,CAAA,WAAAoB,EAAArB,EAAAD,EAAAE,EAAAG,GAAA,IAAAK,EAAAV,GAAAA,EAAAI,qBAAAmB,EAAAvB,EAAAuB,EAAAX,EAAAT,OAAAqB,OAAAd,EAAAN,WAAAU,EAAA,IAAAW,EAAApB,GAAA,WAAAE,EAAAK,EAAA,WAAAH,MAAAiB,EAAAzB,EAAAC,EAAAY,KAAAF,CAAA,UAAAe,EAAA1B,EAAAD,EAAAE,GAAA,WAAA0B,KAAA,SAAAC,IAAA5B,EAAA6B,KAAA9B,EAAAE,GAAA,OAAAD,GAAA,OAAA2B,KAAA,QAAAC,IAAA5B,EAAA,EAAAD,EAAAsB,KAAAA,EAAA,IAAAS,EAAA,iBAAAC,EAAA,iBAAAC,EAAA,YAAAC,EAAA,YAAAC,EAAA,YAAAZ,IAAA,UAAAa,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAApB,EAAAoB,EAAA1B,GAAA,8BAAAvB,EAAAc,OAAAoC,eAAAC,EAAAnD,GAAAA,EAAAA,EAAAoD,EAAA,MAAAD,GAAAA,IAAAtC,GAAAG,EAAAyB,KAAAU,EAAA5B,KAAA0B,EAAAE,GAAA,IAAAE,EAAAL,EAAAjC,UAAAmB,EAAAnB,UAAAD,OAAAqB,OAAAc,GAAA,SAAAK,EAAA1C,GAAA,0BAAA2C,SAAA,SAAA5C,GAAAkB,EAAAjB,EAAAD,GAAA,SAAAC,GAAA,YAAA4C,QAAA7C,EAAAC,EAAA,gBAAA6C,EAAA7C,EAAAD,GAAA,SAAA+C,EAAA7C,EAAAK,EAAAG,EAAAE,GAAA,IAAAE,EAAAa,EAAA1B,EAAAC,GAAAD,EAAAM,GAAA,aAAAO,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAAP,MAAA,OAAAsB,GAAA,UAAAiB,EAAAjB,IAAA1B,EAAAyB,KAAAC,EAAA,WAAA/B,EAAAiD,QAAAlB,EAAAmB,SAAAC,MAAA,SAAAlD,GAAA8C,EAAA,OAAA9C,EAAAS,EAAAE,EAAA,aAAAX,GAAA8C,EAAA,QAAA9C,EAAAS,EAAAE,EAAA,IAAAZ,EAAAiD,QAAAlB,GAAAoB,MAAA,SAAAlD,GAAAe,EAAAP,MAAAR,EAAAS,EAAAM,EAAA,aAAAf,GAAA,OAAA8C,EAAA,QAAA9C,EAAAS,EAAAE,EAAA,IAAAA,EAAAE,EAAAe,IAAA,KAAA3B,EAAAK,EAAA,gBAAAE,MAAA,SAAAR,EAAAI,GAAA,SAAA+C,IAAA,WAAApD,GAAA,SAAAA,EAAAE,GAAA6C,EAAA9C,EAAAI,EAAAL,EAAAE,EAAA,WAAAA,EAAAA,EAAAA,EAAAiD,KAAAC,EAAAA,GAAAA,GAAA,aAAA1B,EAAA1B,EAAAE,EAAAG,GAAA,IAAAE,EAAAwB,EAAA,gBAAArB,EAAAE,GAAA,GAAAL,IAAA0B,EAAA,UAAAoB,MAAA,mCAAA9C,IAAA2B,EAAA,cAAAxB,EAAA,MAAAE,EAAA,OAAAH,MAAAR,EAAAqD,MAAA,OAAAjD,EAAAkD,OAAA7C,EAAAL,EAAAwB,IAAAjB,IAAA,KAAAE,EAAAT,EAAAmD,SAAA,GAAA1C,EAAA,KAAAE,EAAAyC,EAAA3C,EAAAT,GAAA,GAAAW,EAAA,IAAAA,IAAAmB,EAAA,gBAAAnB,CAAA,cAAAX,EAAAkD,OAAAlD,EAAAqD,KAAArD,EAAAsD,MAAAtD,EAAAwB,SAAA,aAAAxB,EAAAkD,OAAA,IAAAhD,IAAAwB,EAAA,MAAAxB,EAAA2B,EAAA7B,EAAAwB,IAAAxB,EAAAuD,kBAAAvD,EAAAwB,IAAA,gBAAAxB,EAAAkD,QAAAlD,EAAAwD,OAAA,SAAAxD,EAAAwB,KAAAtB,EAAA0B,EAAA,IAAAK,EAAAX,EAAA3B,EAAAE,EAAAG,GAAA,cAAAiC,EAAAV,KAAA,IAAArB,EAAAF,EAAAiD,KAAApB,EAAAF,EAAAM,EAAAT,MAAAM,EAAA,gBAAA1B,MAAA6B,EAAAT,IAAAyB,KAAAjD,EAAAiD,KAAA,WAAAhB,EAAAV,OAAArB,EAAA2B,EAAA7B,EAAAkD,OAAA,QAAAlD,EAAAwB,IAAAS,EAAAT,IAAA,YAAA4B,EAAAzD,EAAAE,GAAA,IAAAG,EAAAH,EAAAqD,OAAAhD,EAAAP,EAAAa,SAAAR,GAAA,GAAAE,IAAAN,EAAA,OAAAC,EAAAsD,SAAA,eAAAnD,GAAAL,EAAAa,SAAAiD,SAAA5D,EAAAqD,OAAA,SAAArD,EAAA2B,IAAA5B,EAAAwD,EAAAzD,EAAAE,GAAA,UAAAA,EAAAqD,SAAA,WAAAlD,IAAAH,EAAAqD,OAAA,QAAArD,EAAA2B,IAAA,IAAAkC,UAAA,oCAAA1D,EAAA,aAAA8B,EAAA,IAAAzB,EAAAiB,EAAApB,EAAAP,EAAAa,SAAAX,EAAA2B,KAAA,aAAAnB,EAAAkB,KAAA,OAAA1B,EAAAqD,OAAA,QAAArD,EAAA2B,IAAAnB,EAAAmB,IAAA3B,EAAAsD,SAAA,KAAArB,EAAA,IAAAvB,EAAAF,EAAAmB,IAAA,OAAAjB,EAAAA,EAAA0C,MAAApD,EAAAF,EAAAgE,YAAApD,EAAAH,MAAAP,EAAA+D,KAAAjE,EAAAkE,QAAA,WAAAhE,EAAAqD,SAAArD,EAAAqD,OAAA,OAAArD,EAAA2B,IAAA5B,GAAAC,EAAAsD,SAAA,KAAArB,GAAAvB,GAAAV,EAAAqD,OAAA,QAAArD,EAAA2B,IAAA,IAAAkC,UAAA,oCAAA7D,EAAAsD,SAAA,KAAArB,EAAA,UAAAgC,EAAAlE,GAAA,IAAAD,EAAA,CAAAoE,OAAAnE,EAAA,SAAAA,IAAAD,EAAAqE,SAAApE,EAAA,SAAAA,IAAAD,EAAAsE,WAAArE,EAAA,GAAAD,EAAAuE,SAAAtE,EAAA,SAAAuE,WAAAC,KAAAzE,EAAA,UAAA0E,EAAAzE,GAAA,IAAAD,EAAAC,EAAA0E,YAAA,GAAA3E,EAAA4B,KAAA,gBAAA5B,EAAA6B,IAAA5B,EAAA0E,WAAA3E,CAAA,UAAAyB,EAAAxB,GAAA,KAAAuE,WAAA,EAAAJ,OAAA,SAAAnE,EAAA2C,QAAAuB,EAAA,WAAAS,OAAA,YAAAnC,EAAAzC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAAY,GAAA,GAAAV,EAAA,OAAAA,EAAA4B,KAAA9B,GAAA,sBAAAA,EAAAiE,KAAA,OAAAjE,EAAA,IAAA6E,MAAA7E,EAAA8E,QAAA,KAAAvE,GAAA,EAAAG,EAAA,SAAAuD,IAAA,OAAA1D,EAAAP,EAAA8E,QAAA,GAAAzE,EAAAyB,KAAA9B,EAAAO,GAAA,OAAA0D,EAAAxD,MAAAT,EAAAO,GAAA0D,EAAAX,MAAA,EAAAW,EAAA,OAAAA,EAAAxD,MAAAR,EAAAgE,EAAAX,MAAA,EAAAW,CAAA,SAAAvD,EAAAuD,KAAAvD,CAAA,YAAAqD,UAAAf,EAAAhD,GAAA,2BAAAoC,EAAAhC,UAAAiC,EAAA9B,EAAAmC,EAAA,eAAAjC,MAAA4B,EAAAjB,cAAA,IAAAb,EAAA8B,EAAA,eAAA5B,MAAA2B,EAAAhB,cAAA,IAAAgB,EAAA2C,YAAA7D,EAAAmB,EAAArB,EAAA,qBAAAhB,EAAAgF,oBAAA,SAAA/E,GAAA,IAAAD,EAAA,mBAAAC,GAAAA,EAAAgF,YAAA,QAAAjF,IAAAA,IAAAoC,GAAA,uBAAApC,EAAA+E,aAAA/E,EAAAkF,MAAA,EAAAlF,EAAAmF,KAAA,SAAAlF,GAAA,OAAAE,OAAAiF,eAAAjF,OAAAiF,eAAAnF,EAAAoC,IAAApC,EAAAoF,UAAAhD,EAAAnB,EAAAjB,EAAAe,EAAA,sBAAAf,EAAAG,UAAAD,OAAAqB,OAAAkB,GAAAzC,CAAA,EAAAD,EAAAsF,MAAA,SAAArF,GAAA,OAAAiD,QAAAjD,EAAA,EAAA0C,EAAAG,EAAA1C,WAAAc,EAAA4B,EAAA1C,UAAAU,GAAA,0BAAAd,EAAA8C,cAAAA,EAAA9C,EAAAuF,MAAA,SAAAtF,EAAAC,EAAAG,EAAAE,EAAAG,QAAA,IAAAA,IAAAA,EAAA8E,SAAA,IAAA5E,EAAA,IAAAkC,EAAAxB,EAAArB,EAAAC,EAAAG,EAAAE,GAAAG,GAAA,OAAAV,EAAAgF,oBAAA9E,GAAAU,EAAAA,EAAAqD,OAAAd,MAAA,SAAAlD,GAAA,OAAAA,EAAAqD,KAAArD,EAAAQ,MAAAG,EAAAqD,MAAA,KAAAtB,EAAAD,GAAAxB,EAAAwB,EAAA1B,EAAA,aAAAE,EAAAwB,EAAA9B,GAAA,0BAAAM,EAAAwB,EAAA,qDAAA1C,EAAAyF,KAAA,SAAAxF,GAAA,IAAAD,EAAAG,OAAAF,GAAAC,EAAA,WAAAG,KAAAL,EAAAE,EAAAuE,KAAApE,GAAA,OAAAH,EAAAwF,UAAA,SAAAzB,IAAA,KAAA/D,EAAA4E,QAAA,KAAA7E,EAAAC,EAAAyF,MAAA,GAAA1F,KAAAD,EAAA,OAAAiE,EAAAxD,MAAAR,EAAAgE,EAAAX,MAAA,EAAAW,CAAA,QAAAA,EAAAX,MAAA,EAAAW,CAAA,GAAAjE,EAAAyC,OAAAA,EAAAhB,EAAArB,UAAA,CAAA6E,YAAAxD,EAAAmD,MAAA,SAAA5E,GAAA,QAAA4F,KAAA,OAAA3B,KAAA,OAAAP,KAAA,KAAAC,MAAA1D,EAAA,KAAAqD,MAAA,OAAAE,SAAA,UAAAD,OAAA,YAAA1B,IAAA5B,EAAA,KAAAuE,WAAA5B,QAAA8B,IAAA1E,EAAA,QAAAE,KAAA,WAAAA,EAAA2F,OAAA,IAAAxF,EAAAyB,KAAA,KAAA5B,KAAA2E,OAAA3E,EAAA4F,MAAA,WAAA5F,GAAAD,EAAA,EAAA8F,KAAA,gBAAAzC,MAAA,MAAArD,EAAA,KAAAuE,WAAA,GAAAG,WAAA,aAAA1E,EAAA2B,KAAA,MAAA3B,EAAA4B,IAAA,YAAAmE,IAAA,EAAApC,kBAAA,SAAA5D,GAAA,QAAAsD,KAAA,MAAAtD,EAAA,IAAAE,EAAA,cAAA+F,EAAA5F,EAAAE,GAAA,OAAAK,EAAAgB,KAAA,QAAAhB,EAAAiB,IAAA7B,EAAAE,EAAA+D,KAAA5D,EAAAE,IAAAL,EAAAqD,OAAA,OAAArD,EAAA2B,IAAA5B,KAAAM,CAAA,SAAAA,EAAA,KAAAiE,WAAAM,OAAA,EAAAvE,GAAA,IAAAA,EAAA,KAAAG,EAAA,KAAA8D,WAAAjE,GAAAK,EAAAF,EAAAiE,WAAA,YAAAjE,EAAA0D,OAAA,OAAA6B,EAAA,UAAAvF,EAAA0D,QAAA,KAAAwB,KAAA,KAAA9E,EAAAT,EAAAyB,KAAApB,EAAA,YAAAM,EAAAX,EAAAyB,KAAApB,EAAA,iBAAAI,GAAAE,EAAA,SAAA4E,KAAAlF,EAAA2D,SAAA,OAAA4B,EAAAvF,EAAA2D,UAAA,WAAAuB,KAAAlF,EAAA4D,WAAA,OAAA2B,EAAAvF,EAAA4D,WAAA,SAAAxD,GAAA,QAAA8E,KAAAlF,EAAA2D,SAAA,OAAA4B,EAAAvF,EAAA2D,UAAA,YAAArD,EAAA,UAAAqC,MAAA,kDAAAuC,KAAAlF,EAAA4D,WAAA,OAAA2B,EAAAvF,EAAA4D,WAAA,KAAAT,OAAA,SAAA5D,EAAAD,GAAA,QAAAE,EAAA,KAAAsE,WAAAM,OAAA,EAAA5E,GAAA,IAAAA,EAAA,KAAAK,EAAA,KAAAiE,WAAAtE,GAAA,GAAAK,EAAA6D,QAAA,KAAAwB,MAAAvF,EAAAyB,KAAAvB,EAAA,oBAAAqF,KAAArF,EAAA+D,WAAA,KAAA5D,EAAAH,EAAA,OAAAG,IAAA,UAAAT,GAAA,aAAAA,IAAAS,EAAA0D,QAAApE,GAAAA,GAAAU,EAAA4D,aAAA5D,EAAA,UAAAE,EAAAF,EAAAA,EAAAiE,WAAA,UAAA/D,EAAAgB,KAAA3B,EAAAW,EAAAiB,IAAA7B,EAAAU,GAAA,KAAA6C,OAAA,YAAAU,KAAAvD,EAAA4D,WAAAnC,GAAA,KAAA+D,SAAAtF,EAAA,EAAAsF,SAAA,SAAAjG,EAAAD,GAAA,aAAAC,EAAA2B,KAAA,MAAA3B,EAAA4B,IAAA,gBAAA5B,EAAA2B,MAAA,aAAA3B,EAAA2B,KAAA,KAAAqC,KAAAhE,EAAA4B,IAAA,WAAA5B,EAAA2B,MAAA,KAAAoE,KAAA,KAAAnE,IAAA5B,EAAA4B,IAAA,KAAA0B,OAAA,cAAAU,KAAA,kBAAAhE,EAAA2B,MAAA5B,IAAA,KAAAiE,KAAAjE,GAAAmC,CAAA,EAAAgE,OAAA,SAAAlG,GAAA,QAAAD,EAAA,KAAAwE,WAAAM,OAAA,EAAA9E,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAsE,WAAAxE,GAAA,GAAAE,EAAAoE,aAAArE,EAAA,YAAAiG,SAAAhG,EAAAyE,WAAAzE,EAAAqE,UAAAG,EAAAxE,GAAAiC,CAAA,GAAAiE,MAAA,SAAAnG,GAAA,QAAAD,EAAA,KAAAwE,WAAAM,OAAA,EAAA9E,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAsE,WAAAxE,GAAA,GAAAE,EAAAkE,SAAAnE,EAAA,KAAAI,EAAAH,EAAAyE,WAAA,aAAAtE,EAAAuB,KAAA,KAAArB,EAAAF,EAAAwB,IAAA6C,EAAAxE,EAAA,QAAAK,CAAA,YAAA8C,MAAA,0BAAAgD,cAAA,SAAArG,EAAAE,EAAAG,GAAA,YAAAmD,SAAA,CAAA3C,SAAA4B,EAAAzC,GAAAgE,WAAA9D,EAAAgE,QAAA7D,GAAA,cAAAkD,SAAA,KAAA1B,IAAA5B,GAAAkC,CAAA,GAAAnC,CAAA,UAAAsG,EAAAC,EAAAtD,EAAAuD,EAAAC,EAAAC,EAAAC,EAAA9E,GAAA,QAAA+E,EAAAL,EAAAI,GAAA9E,GAAApB,EAAAmG,EAAAnG,KAAA,OAAAoG,GAAA,YAAAL,EAAAK,EAAA,CAAAD,EAAAtD,KAAAL,EAAAxC,GAAA+E,QAAAvC,QAAAxC,GAAA0C,KAAAsD,EAAAC,EAAA,UAAAI,EAAAC,GAAA,sBAAAC,EAAA,KAAAC,EAAAC,UAAA,WAAA1B,SAAA,SAAAvC,EAAAuD,GAAA,IAAAD,EAAAQ,EAAAI,MAAAH,EAAAC,GAAA,SAAAR,EAAAhG,GAAA6F,EAAAC,EAAAtD,EAAAuD,EAAAC,EAAAC,EAAA,OAAAjG,EAAA,UAAAiG,EAAAU,GAAAd,EAAAC,EAAAtD,EAAAuD,EAAAC,EAAAC,EAAA,QAAAU,EAAA,CAAAX,OAAAY,EAAA,cAAAC,EAAAtH,EAAAE,GAAA,IAAAD,EAAAE,OAAAsF,KAAAzF,GAAA,GAAAG,OAAAoH,sBAAA,KAAAhH,EAAAJ,OAAAoH,sBAAAvH,GAAAE,IAAAK,EAAAA,EAAAiH,QAAA,SAAAtH,GAAA,OAAAC,OAAAsH,yBAAAzH,EAAAE,GAAAiB,UAAA,KAAAlB,EAAAwE,KAAA0C,MAAAlH,EAAAM,EAAA,QAAAN,CAAA,UAAAX,EAAAU,GAAA,QAAAE,EAAA,EAAAA,EAAAgH,UAAApC,OAAA5E,IAAA,KAAAD,EAAA,MAAAiH,UAAAhH,GAAAgH,UAAAhH,GAAA,GAAAA,EAAA,EAAAoH,EAAAnH,OAAAF,IAAA,GAAA2C,SAAA,SAAA1C,GAAA,IAAAwH,EAAAf,EAAAlG,EAAAiH,EAAA1H,EAAA2G,EAAAzG,EAAAO,EAAAR,EAAAC,IAAAyG,EAAAgB,EAAAhB,MAAAe,EAAAvH,OAAAK,eAAAkH,EAAAf,EAAA,CAAAlG,MAAAA,EAAAU,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAAqG,EAAAf,GAAAlG,CAAA,IAAAN,OAAAyH,0BAAAzH,OAAA0H,iBAAA7H,EAAAG,OAAAyH,0BAAA3H,IAAAqH,EAAAnH,OAAAF,IAAA2C,SAAA,SAAA1C,GAAAC,OAAAK,eAAAR,EAAAE,EAAAC,OAAAsH,yBAAAxH,EAAAC,GAAA,WAAAF,CAAA,UAAA8H,EAAAC,EAAAC,GAAA,QAAAtH,EAAA,EAAAA,EAAAsH,EAAAlD,OAAApE,IAAA,KAAAuH,EAAAD,EAAAtH,GAAAuH,EAAA9G,WAAA8G,EAAA9G,aAAA,EAAA8G,EAAA7G,cAAA,YAAA6G,IAAAA,EAAA5G,UAAA,GAAAlB,OAAAK,eAAAuH,EAAAJ,EAAAM,EAAAtB,KAAAsB,EAAA,WAAAN,EAAA9F,GAAA,IAAA8E,EAAA,SAAAuB,EAAAC,GAAA,cAAAnF,EAAAkF,IAAA,OAAAA,EAAA,OAAAA,EAAA,IAAAE,EAAAF,EAAAvH,OAAA0H,aAAA,QAAAhB,IAAAe,EAAA,KAAAE,EAAAF,EAAAtG,KAAAoG,EAAAC,UAAA,cAAAnF,EAAAsF,GAAA,OAAAA,EAAA,UAAAvE,UAAA,uDAAAwE,OAAAL,EAAA,CAAAM,CAAA3G,GAAA,iBAAAmB,EAAA2D,GAAAA,EAAA4B,OAAA5B,EAAA,CAoBA,IAAMiQ,GAAoBC,EAAAA,EAAAA,GAAS,sBAADtX,OAAuBuX,EAAAA,EAAQ,mBAE3DrO,EAAeC,EAAQ,MACvBC,EAAY,mBAEZG,EAAgB,CACpBiO,QAAS,QAAFxX,OAAUoJ,EAAS,aAC1BqO,cAAe,IAAFzX,OAAMoJ,EAAS,UAC5BsO,gBAAiB,IAAF1X,OAAMoJ,EAAS,YAC9BuO,cAAe,QAAF3X,OAAUoJ,EAAS,oBAChCwO,YAAa,uBACbC,OAAQ,IAAF7X,OAAMoJ,EAAS,SACrBwM,QAAS,QAAF5V,OAAUoJ,EAAS,cAC1B0O,WAAY,SAAF9X,OAAWoJ,EAAS,kBAC9B2K,UAAW,QAAF/T,OAAUoJ,EAAS,iBAC5BK,UAAW,cAOQsO,EAAa,SAAAC,EAAAC,GAWhC,SAAAF,EAAalO,GAAuB,IAAAC,EAAA,KAAdC,EAAOpC,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,GArDnC,SAAAqC,EAAAC,GAAA,KAAAD,aAAAC,GAAA,UAAAzF,UAAA,qCAqDoC0F,CAAA,KAAA6N,GAChC5N,KAAKN,QAAUA,EACfM,KAAK+N,SAAW/N,KAAKgO,qBACrBhO,KAAKyN,YAAczN,KAAKiO,yBACxBjO,KAAKkO,OAAStO,EAAQ1J,KAAO8J,KAAKN,QAAQyO,aAAa/O,EAAciO,SACrErN,KAAKwN,cAAgB5N,EAAQ4N,eAAiBxN,KAAKN,QAAQU,aAAahB,EAAcoO,iBAAkB,EACxGxN,KAAKyL,QAAU7L,EAAQ6L,SAAWzL,KAAKN,QAAQyO,aAAa/O,EAAcqM,SAC1EzL,KAAK2N,WAAa/N,EAAQ+N,YAAc3N,KAAKoO,wBAC7CpO,KAAK4J,UAAYhK,EAAQgK,WAAa5J,KAAKN,QAAQU,aAAahB,EAAcwK,aAAc,EAC5F5J,KAAKqO,SAAWrO,KAAKN,QAAQ4O,UAAUC,SAAS,MAChDvO,KAAKwO,aAAc,EAEnBxO,KAAKyO,mBAAoBC,EAAAA,EAAAA,IAAuBC,EAAAA,EAAAA,GAAuBpN,SAASvL,WAEhFgK,KAAKC,OAAS,IAAIlB,EAElBiB,KAAK4O,QAAU5O,KAAK6O,cAEpB7O,KAAKN,QAAQT,GAAa,CACxB6P,QAAS9O,KAAK8O,QAAQ/K,KAAK/D,MAC3B+O,aAAc/O,KAAK+O,aAAahL,KAAK/D,MACrCgP,KAAMhP,KAAKgP,KAAKjL,KAAK/D,MACrBiP,MAAOjP,KAAKiP,MAAMlL,KAAK/D,MACvBkP,wBAAyBlP,KAAKmP,yBAAyBpL,KAAK/D,MAC5DC,OAAQD,KAAKC,OACbmP,yBAA0BpP,KAAKqP,0BAA0BtL,KAAK/D,OAGhEE,EAAAA,EAAiBC,qBAAqBlB,EAAWe,KAAKC,OAAMrK,EAAA,GACtDoK,KAAKN,QAAQU,aAAahB,EAAcE,YAAc,CACxDe,MAAOL,KAAKN,QAAQY,WAAWlB,EAAcE,WAAWvI,SAI5DiJ,KAAKsP,eACLC,EAAAA,EAAgBC,aAAaxP,KAAKyP,WAAYxQ,GAE1Ce,KAAK2N,YACP3N,KAAK8O,QACH,CAAC,EACD,CACEnB,WAAY3N,KAAK2N,WACjB/D,UAAW5J,KAAK4J,YAKtB5J,KAAKC,OAAOY,GAAGa,EAAAA,GAAoBC,4BAA4B,SAAAhM,GAC7DgK,EAAK+P,oBAAoB/Z,EAAGgK,EAAKiP,QACnC,GACF,CAvGF,IAAA9O,EAAAgC,EAuaG,OAvaHhC,EA+GE8N,EA/GF9L,EA+GE,EAAA7E,IAAA,qBAAAlG,MAKA,WACE,MAAO,CACLuW,cAAetN,KAAKN,QAAQc,cAAcpB,EAAckO,eAE5D,GAEA,CAAArQ,IAAA,QAAAlG,MAAA,SAAAqL,GAAA,OAAAyL,EAAAA,GAAAzQ,EAAA/G,IAAAoF,MASA,SAAAsG,EAAa4N,GAAU,IAAA/P,EAAAgQ,EAAAC,EAAAC,EAAAC,EAAAvS,UAAA,OAAAnH,IAAAuB,MAAA,SAAAqK,GAAA,cAAAA,EAAA/F,KAAA+F,EAAA1H,MAAA,OAAc,KAAZqF,EAAOmQ,EAAA3U,OAAA,QAAAuC,IAAAoS,EAAA,GAAAA,EAAA,GAAG,CAAC,GACtBpC,WAAY,CAAF1L,EAAA1H,KAAA,eAAA0H,EAAA9H,OAAA,SACb,CACL6V,QAASpQ,EAAQ+N,WACjB/K,KAAM5C,KAAKiQ,sBAAsBrQ,EAAQ+N,cAC1C,UAGE3N,KAAKkO,OAAQ,CAAFjM,EAAA1H,KAAA,eAAA0H,EAAA9H,OAAA,cAASwD,GAAS,OAKjC,OAHKiS,GAAmB1N,EAAAA,EAAAA,IACvBlC,KAAKkO,QACLgC,EAAAA,EAAAA,GAActa,EAAAA,EAAAA,EAAC,CAAC,EAAIoK,KAAKyN,aAAgBkC,GAAe3P,KAAKyO,qBAC9DxM,EAAA1H,KAAA,GAC4C4V,EAAAA,EAAAA,IAA2BP,EAAkB,CACxFQ,2BAA2B,IAC3B,OAFkC,IAA9BP,EAA8B5N,EAAAjI,MAGAqW,IAAoD,MAA9CR,EAA+BS,WAAkB,CAAArO,EAAA1H,KAAA,gBAAA0H,EAAA9H,OAAA,SAClF,MAAI,QAEwD,OAA/D2V,EAAwBD,EAA+BU,SAAQtO,EAAA9H,OAAA,SAC9D,CACL6V,QAASF,EACTlN,KAAM5C,KAAKiQ,sBAAsBH,KAClC,yBAAA7N,EAAA5F,OAAA,GAAA0F,EAAA,WACFtE,MAAA,KAAAD,UAAA,GAED,CAAAP,IAAA,UAAAlG,MAAA,SAAA0Q,GAAA,OAAAqG,EAAAA,GAAA1Q,EAAA/G,IAAAoF,MAOA,SAAA4G,EAAesN,GAAU,IAAAa,EAAA5Q,EAAA6Q,EAAAC,EAAAC,EAAAC,EAAAC,EAAAhO,EAAA,KAAAiO,EAAAtT,UAAA,OAAAnH,IAAAuB,MAAA,SAAA4K,GAAA,cAAAA,EAAAtG,KAAAsG,EAAAjI,MAAA,OACiC,OAD/BqF,EAAOkR,EAAA1V,OAAA,QAAAuC,IAAAmT,EAAA,GAAAA,EAAA,GAAG,CAAC,EACpCvB,EAAAA,EAAgBwB,aAAa/Q,KAAKyP,WAAYxQ,GAAUuD,EAAAjI,KAAA,EAE7BuB,QAAQkV,IAAI,CAAChR,KAAKiR,MAAMtB,EAAY/P,GAAUI,KAAKiP,UAAS,OAE/C,GAFlCwB,EAAYjO,EAAAxI,KAElBgG,KAAK0Q,kBAAoBD,EAAa,GACjCzQ,KAAK0Q,kBAAmB,CAAFlO,EAAAjI,KAAA,QACN,OAAnByF,KAAK+O,eAAcvM,EAAArI,OAAA,iBA4CnB,OAxCIuW,EAAiB9a,EAAAA,EAAA,GAAQoK,KAAK0Q,kBAAkB9N,MAAI,IAAEgH,UAAW5J,KAAK4J,aAC1Dc,iBAAmB1K,KAAK0Q,kBAAkBV,QAAQkB,cAAcC,IAClFT,EAAkB/F,wBAA0B3K,KAAK0Q,kBAAkBV,QAAQ1a,MAAMqV,wBACjF+F,EAAkB9F,WAAa5K,KAAK0Q,kBAAkBV,QAAQ1a,MAAMsV,WACpE8F,EAAkBpF,wBAA0BtL,KAAK0Q,kBAAkBV,QAAQ1a,MAAMgW,wBACjFoF,EAAkBU,6BAA+BpR,KAAK0Q,kBAAkBV,QAAQoB,6BAChFpR,KAAKqR,sBAAwBrR,KAAKqR,sBAC9BrR,KAAKqR,sBACLX,EAAkBhG,iBACtBgG,EAAkB7F,eAA8C,QAA9B2F,EAAAxQ,KAAK0Q,kBAAkBV,eAAO,IAAAQ,OAAA,EAA9BA,EAAgC3F,gBAAiB,KAE7E8F,GAAiBW,EAAAA,EAAAA,KHpJW3b,EGoJ6B+a,OHpJvBa,OAAAC,EAAAC,SAAAC,SAAAC,SAAAC,SAC1Cjc,EAACC,EAAAA,EAAA,GAAQuU,GAAmCxU,GACrC,2GAAPE,OAG2B,QAAnB0b,EAAA5b,EAAE8U,yBAAiB,IAAA8G,GAAnBA,EAAqBM,IAAM,6CAAHhc,OAAgDF,EAAE8U,kBAAkBoH,IAAG,MAAO,GAAE,cAAAhc,QACxGic,EAAAA,EAAAA,GAAoBlc,EAAAA,EAAAA,EAAC,CAAC,EACnBmc,EAAAA,GACApc,EAAE0U,cAAY,IACjBK,iBAAkB/U,EAAE+U,iBACpB0G,6BAA8Bzb,EAAEyb,gCAChC,0BAAAvb,QAEFqV,EAAAA,EAAAA,GAAatV,EAAAA,EAAAA,EAAC,CAAC,EACZuV,EAAAA,IACAxV,EAAEL,OAAK,IACV8V,kBAAmBzV,EAAEyU,uBACrBR,UAAWjU,EAAEiU,UACbY,kBAAmB7U,EAAEgV,wBACrBU,MAAO1V,EAAE2V,wBACTC,OAAQ5V,EAAEgV,yBAA2BhV,EAAEL,MAAMgV,QAAU3U,EAAEL,MAAMiV,YAC3DiB,EAAAA,EAAAA,IAAgB5V,EAAAA,EAAC,CAAC,EAAID,GAAC,IAAEQ,KAAMR,EAAEgV,wBAAyBC,WAAYjV,EAAEiV,WAAYN,OAAQ3U,EAAEL,MAAMgV,OAAQmB,QAAS9V,EAAEL,MAAMiV,cAC7H5U,EAAEiV,WACNc,aAAa,KACb,YAAA7V,QACAmU,EAAAA,EAAAA,GAAY,CACZC,QAAS,OACTC,OAAO,EACP/T,KAAMR,EAAEgU,WACRlU,aAAc,yBAAFI,OAA2BF,EAAEiU,UAAY,kCAAoC,MACzF,YAAA/T,OACe,QAAf2b,EAAA7b,EAAEkV,qBAAa,IAAA2G,GAAfA,EAAiBQ,MAAuB,QAAnBP,EAAI9b,EAAEkV,qBAAa,IAAA4G,GAAfA,EAAiBtb,KAAI,gIAAAN,OAG8B,QAH9B6b,EAGe/b,EAAEkV,qBAAa,IAAA6G,OAAA,EAAfA,EAAiBM,KAAI,WAAAnc,OAAyB,QAAzB8b,EAAUhc,EAAEkV,qBAAa,IAAA8G,OAAA,EAAfA,EAAiBxb,KAAI,kBAAAN,OAC9F,QAD8F+b,EAC7Gjc,EAAEkV,qBAAa,IAAA+G,OAAA,EAAfA,EAAiBzb,KAAI,4BAG/B,GAAE,sBG+GI6J,KAAK+N,SAAST,eAAetN,KAAK+N,SAAST,cAAc2E,YAAYtB,GACzE3Q,KAAK+N,SAAST,cAAgBqD,EAC9B3J,EAAAA,EAAUkL,4BAA4BvB,GAElC3Q,KAAKwN,gBACPxN,KAAK+N,SAASR,gBAAkBhM,SAAS4Q,KAAK3R,cAAcpB,EAAcmO,iBACpEqD,GAAqB5Q,KAAK+N,SAASR,gBAEnCsD,GAAmBS,EAAAA,EAAAA,IAAkBrG,EAA4ByF,IACnE1Q,KAAK+N,SAASR,iBAAiBvN,KAAK+N,SAASR,gBAAgB0E,YAAYpB,GAC7E7Q,KAAK+N,SAASR,gBAAkBsD,EAChC7Q,KAAKmP,yBAAyB,CAAEX,YAAaxO,KAAKwO,cAClDxH,EAAAA,EAAUkL,4BAA4BrB,GAElCD,IACFrP,SAAS4Q,KAAKC,YAAYvB,GAEL7Q,KAAK+N,SAASR,gBAAgB/M,cAAcpB,EAAcsO,QAClE2E,iBAAiB,SAAS,SAAAC,GAAE,OAAIzP,EAAK0P,gCAAgCD,EAAG,MAIzFtS,KAAKsP,eACLC,EAAAA,EAAgBC,aAAaxP,KAAKyP,WAAYxQ,GAE9Ce,KAAKC,OAAOqG,KAAK5E,EAAAA,GAAoBC,2BAA0B/L,EAAAA,EAAA,GAC1DoK,KAAK0Q,kBAAkBV,SAAO,IACjCwC,aAAc7C,EAAW8C,aAAa,MACtCjQ,EAAArI,OAAA,SAEK6F,KAAKgP,QAAM,yBAAAxM,EAAAnG,OHnLe,IAAC1G,EAAM4b,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,CGmLtB,GAAAvP,EAAA,WACnB5E,MAAA,KAAAD,UAAA,IAAAP,IAAA,eAAAlG,MAED,WAAgB,IAAA2b,EAAArN,EAAA,KAEd,GAD+F,OAAzErF,KAAKN,QAAQiT,QAAQ,gDAC3C,CAKApD,EAAAA,EAAgBwB,aAAa/Q,KAAKyP,WAAYxQ,GAE9C,IAAMyR,EAAoB,CACxBV,aAASrS,EACT+L,MAAO1J,KAAK4O,QAAQ7D,cACpBvG,YAAaxE,KAAK4O,QAAQ5D,oBAC1BrB,WAA2C,QAAjC+I,EAAE1S,KAAK4O,QAAQgE,0BAAkB,IAAAF,EAAAA,EAAI1S,KAAK4O,QAAQiE,WAC5DjJ,UAAW5J,KAAK4J,WAGZ+G,GAAiBW,EAAAA,EAAAA,IJ3NlBzH,EAA6BjU,EAAAA,EAAC,CAAC,EI2NmC8a,GJ3N9B,IAAE3G,UAAU,MIgOrD,GAJI/J,KAAK+N,SAAST,eAAetN,KAAK+N,SAAST,cAAc2E,YAAYtB,GACzE3Q,KAAK+N,SAAST,cAAgBqD,EAC9B3J,EAAAA,EAAUkL,4BAA4BvB,GAElC3Q,KAAKwN,cAAe,CACtBxN,KAAK+N,SAASR,gBAAkBhM,SAAS4Q,KAAK3R,cAAcpB,EAAcmO,iBAC1E,IAAMqD,GAAqB5Q,KAAK+N,SAASR,gBAEnCsD,GAAmBS,EAAAA,EAAAA,IJjOtBzH,EAA6BjU,EAAAA,EAAC,CAAC,EIiO6C8a,GJjOxC,IAAE3G,UAAU,MIkO/C/J,KAAK+N,SAASR,iBAAiBvN,KAAK+N,SAASR,gBAAgB0E,YAAYpB,GAC7E7Q,KAAK+N,SAASR,gBAAkBsD,EAChC7Q,KAAKmP,yBAAyB,CAAEX,YAAaxO,KAAKwO,cAClDxH,EAAAA,EAAUkL,4BAA4BrB,GAElCD,IACFrP,SAAS4Q,KAAKC,YAAYvB,GAEL7Q,KAAK+N,SAASR,gBAAgB/M,cAAcpB,EAAcsO,QAClE2E,iBAAiB,SAAS,SAAAC,GAAE,OAAIjN,EAAKkN,gCAAgCD,EAAG,IAEzF,CAQA,OANAtS,KAAKsP,eACLC,EAAAA,EAAgBC,aAAaxP,KAAKyP,WAAYxQ,GAKvCe,KAAKgP,MAzCZ,CA0CF,GAEA,CAAA/R,IAAA,OAAAlG,MAGA,WAAQ,IAAA8O,EAAA,KACN,OAAO,IAAI/J,SAAQ,SAAAvC,GACjB,GAAIsM,EAAKwI,SAAU,OAAO9U,IAC1BsM,EAAKwI,UAAW,EAChBxI,EAAKnG,QAAQ4O,UAAUwE,IAAI,eAC3BC,EAAAA,EAAAA,IAAalN,EAAKnG,SAClBmG,EAAKnG,QAAQ4O,UAAUwE,IAAI,MAM3BjN,EAAKnG,QAAQ2S,iBAAiB,iBALf,SAATW,IACJnN,EAAKnG,QAAQ4O,UAAU2E,OAAO,cAC9B1Z,IACAsM,EAAKnG,QAAQwT,oBAAoB,gBAAiBF,GAAQ,EAC5D,IACuD,EACzD,GACF,GAEA,CAAA/V,IAAA,QAAAlG,MAGA,WAAS,IAAAqQ,EAAA,KACP,OAAO,IAAItL,SAAQ,SAAAvC,GACjB,IAAK6N,EAAKiH,SAAU,OAAO9U,IAC3B6N,EAAKiH,UAAW,EAChBjH,EAAK1H,QAAQ4O,UAAUwE,IAAI,eAC3BC,EAAAA,EAAAA,IAAa3L,EAAK1H,SAClB0H,EAAK1H,QAAQ4O,UAAU2E,OAAO,MAM9B7L,EAAK1H,QAAQ2S,iBAAiB,iBALf,SAATc,IACJ/L,EAAK1H,QAAQ4O,UAAU2E,OAAO,cAC9B1Z,IACA6N,EAAK1H,QAAQwT,oBAAoB,gBAAiBC,GAAQ,EAC5D,IACuD,EACzD,GACF,GAEA,CAAAlW,IAAA,wBAAAlG,MAOA,SAAuB+Y,GACrB,MAAO,CACLxa,MAAOwW,EAAagE,EAAuB9P,KAAK4O,QAAS5O,KAAKyL,QAASzL,KAAKyN,YAAY2F,eACxF/I,cD7P+BzH,EC6PGkN,ED5PtCla,EAAAA,EAAA,GACKiW,GAAgC,IACnCwH,iBAAkBzQ,EAAKyQ,iBACvBC,QAAS1Q,EAAK2Q,gBACdrC,cAAetO,EAAKsO,cAAcsC,aCyPhCpJ,uBAAwB6C,EAA0B6C,GAClDnG,WAAY3J,KAAK4O,QAAQiE,WACzBpI,kBACEqF,EAAsBrF,mBAAqBqF,EAAsBrF,kBAAkBoH,IAC/E,CAAEA,IAAK/B,EAAsBrF,kBAAkBoH,UAC/ClU,GDnQL,IAA8BiF,CCqQnC,GAEA,CAAA3F,IAAA,yBAAAlG,MAKA,WACE,IAAM0c,EAAsBzT,KAAKN,QAAQgU,iBAAiBtU,EAAcqO,aAClEA,EAAchX,OAAOsC,OAAO0a,GAClC,OAAOhG,EACHA,EAAYhL,QAAO,SAACzE,EAAK2V,GAEzB,OADA3V,EAAI2V,EAAGnY,MAAQmY,EAAG5c,MACXiH,CACT,GAAG,CAAC,QACFL,CACN,GAEA,CAAAV,IAAA,wBAAAlG,MAKA,WACE,IAAM6c,EAAoB5T,KAAKN,QAAQc,cAAcpB,EAAcuO,YACnE,GAAKiG,EACL,IACE,OAAO9K,KAAKC,MAAM6K,EAAkBC,UACtC,CAAE,MAAOvd,GACP,MACF,CACF,GAAC,CAAA2G,IAAA,eAAAlG,MAED,WAAgB,IAAA+c,EAAA,KACd9T,KAAKyP,WAAa,CAChB,CAACzP,KAAKN,QAAQc,cAAcpB,EAAcsO,QAAS,CAAEqG,MAAO,SAAAzB,GAAE,OAAIwB,EAAKvB,gCAAgCD,EAAG,IAE9G,GAAC,CAAArV,IAAA,kCAAAlG,MAED,SAAiCub,GAAI,IAAA0B,EACnChU,KAAKC,OAAOqG,KAAK,uBAA8C,QAAxB0N,EAAEhU,KAAK0Q,yBAAiB,IAAAsD,OAAA,EAAtBA,EAAwBhE,QACnE,GAEA,CAAA/S,IAAA,cAAAlG,MAGA,WACE,IAAMkd,EAAsB1S,SAASf,cAAc,gCAAD3K,OAAiCmK,KAAKN,QAAQgD,GAAE,OAClG,IAAKuR,EAAqB,OAAO/G,EAEjC,IAAIgH,EAAmB,KACvB,IACEA,EAAmBpL,KAAKC,MAAMkL,EAAoBjL,YACpD,CAAE,MAAOtL,GAAM,CAEf,OAAA9H,EAAAA,EAAA,GACKsX,GACAgH,EAEP,GAAC,CAAAjX,IAAA,4BAAAlG,MAED,WACE,OAAOiJ,KAAKqR,qBACd,GAAC,CAAApU,IAAA,2BAAAlG,MAED,SAA0Bod,GAGF,IAAAC,EAEfC,EAJPrU,KAAKwO,YAAc2F,EAAQ3F,YAEvBxO,KAAKwO,YACsB,QAA7B4F,EAAApU,KAAK+N,SAASR,uBAAe,IAAA6G,GAAW,QAAXA,EAA7BA,EAA+B9F,iBAAS,IAAA8F,GAAxCA,EAA0CtB,IAAI,aAEjB,QAA7BuB,EAAArU,KAAK+N,SAASR,uBAAe,IAAA8G,GAAW,QAAXA,EAA7BA,EAA+B/F,iBAAS,IAAA+F,GAAxCA,EAA0CpB,OAAO,YAErD,GAAC,CAAAhW,IAAA,sBAAAlG,MAED,SAAqBpB,EAAGiZ,GAAS,IAAA0F,EACzB5U,EAAU6B,SAASf,cAAc,oBACvC,IAAY,QAAP8T,EAAA3e,EAAEL,aAAK,IAAAgf,GAAPA,EAAS3H,oBAAsBhX,EAAE4e,oBAAsB3F,EAAQ4F,sBAAuB,CACzF,GAAI9U,EAAS,OACb,IAAM+U,GAASnD,EAAAA,EAAAA,IAAkB,gCAADzb,OAAiC+Y,EAAQ4F,sBAAqB,WACxFE,EAAYnT,SAASf,cAAc,gCACnCmU,EAAmBD,aAAS,EAATA,EAAWlU,cAAc,qBAClD,GAAImU,EACFD,EAAUE,aAAaH,EAAQE,EAAiBE,iBAC3C,CAEL,IAAMC,EAAsBJ,aAAS,EAATA,EAAWlU,cAAc,2BACrDiU,EAAOnG,UAAUwE,IAAI,qCACjBgC,GACFJ,EAAUE,aAAaH,EAAQK,EAAoBD,YAEvD,CACF,MACMnV,GACFA,EAAQuT,QAGd,IAvaFnR,GAAA1D,EAAA0B,EAAApJ,UAAAoL,GAAArL,OAAAK,eAAAgJ,EAAA,aAAAnI,UAAA,IAuaGiW,CAAA,CA7X+B,IAgYlCzE,EAAAA,EAAAA,GAAeyE,EAAe3O,qCC3avB,IAAM8V,EAAS,CACpBC,iBAAkB,kBAClBC,uBAAwB,2CCEnB,IAAMC,EAAc,CACzBC,yBAA0B,oBAC1BC,+BAAgC,8BAChCC,6BAA8B,4BAC9BC,wBAAyB,2DCJpB,IAAMC,EAAgB,CAC3BC,sBAAuB,SACvBC,4BAA6B,u+CCmBxB,IAAMC,EAAkC,CAC7ChT,GAAI,GACJiT,YAAa,GACbC,MAAO,GACPC,wCAAyC,EACzCC,mBAAoB,GACpBC,kBAAmB,GACnBC,eAAgB,GAChBC,YAAa,CAAC,EACdC,OAAQ,07CCrBVlX,EAAQ,OAER,IAAMmX,GAAiBhJ,EAAAA,EAAAA,GAAS,sBAADtX,OAAuBuX,EAAAA,EAAQ,YACxDF,GAAoBC,EAAAA,EAAAA,GAAS,sBAADtX,OAAuBuX,EAAAA,EAAQ,kBAE3DgJ,EAAa,kBAEbC,EAAiB,CACrBngB,IAAK,QAAFL,OAAUugB,EAAU,SACvBE,YAAa,SAAFzgB,OAAWugB,EAAU,mBAChCG,QAAS,SAAF1gB,OAAWugB,EAAU,cAC5BF,OAAQ,SAAFrgB,OAAWugB,EAAU,sBAC3BI,UAAW,SAAF3gB,OAAWugB,EAAU,iBAC9BK,kBAAmB,oBACnBC,eAAgB,2CAGZC,EAAkB,CACtB/H,QAAS,CAAC,EACVhM,KAAM,CACJF,GAAI,GACJuT,YAAa,CAAC,EACdL,MAAO,KAIUgB,EAAY,WAc/B,SAAAA,EAAalX,GAAuB,IAAdE,EAAOpC,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,+FAACuC,CAAA,KAAA6W,GAChC5W,KAAKN,QAAUA,EACfM,KAAKJ,QAAOhK,EAAAA,EAAA,GACP+gB,GACA/W,GAELI,KAAKC,OAAS,IAAIlB,KAElBiB,KAAK4O,QAAOhZ,EAAAA,EAAAA,EAAA,GACPugB,GACAjJ,GACAtN,EAAQgP,SAGb5O,KAAK6W,cACL7W,KAAK8W,mBACL9W,KAAK+W,aACP,SAiIC,SA/HDH,IAAA,EAAA3Z,IAAA,cAAAlG,MAOA,SAAa6e,GAAqB,IAAdhW,EAAOpC,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC7BwC,KAAKJ,QAAQgD,KAAKgT,MAAQA,GAAS,GAC/BhW,EAAQqW,cAAajW,KAAKJ,QAAQgD,KAAKqT,YAAcrW,EAAQqW,aAEjEjW,KAAK0W,eAAe7C,WAAYmD,EAAAA,EAAAA,GAAuB,CACrD1W,WAAY,CAAE,mCAAoC,IAClD2W,OAAO,EACPC,OAAQ,CACNC,SAAU,OACVC,cAAepX,KAAKJ,QAAQgD,KAAKqT,YACjCJ,wCAAyC7V,KAAK4O,QAAQiH,wCACtDC,mBAAoB9V,KAAK4O,QAAQkH,mBACjCC,kBAAmB/V,KAAK4O,QAAQmH,kBAChCC,eAAgBhW,KAAK4O,QAAQoH,gBAE/BrP,MAAO3G,KAAKJ,QAAQgD,KAAKgT,QAE3B5O,EAAAA,EAAUC,8BAA8BjH,KAAK0W,gBAC7C1W,KAAKwW,UAAYxW,KAAKN,QAAQc,cAAc6V,EAAeG,WAC3DxW,KAAKqX,kBACP,GAAC,CAAApa,IAAA,cAAAlG,MAED,WAAiByG,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,IAAGwC,KAAKJ,QAAQgD,KAAM,IDhEJjN,ECiE3B2hB,GAAmBhG,EAAAA,EAAAA,KDjEQ3b,ECiE8BC,EAAAA,EAAC,CAAD,EAExDoK,KAAK4O,SACL5O,KAAKJ,QAAQgD,MDnEtBjN,EAACC,EAAAA,EAAA,GAAQ8f,GAAoC/f,GAEtC,YAAPE,OAAmBF,EAAE+M,GAAE,kCAAA7M,QACrB0hB,EAAAA,EAAAA,GAAgB,CAChB7U,GAAI,GAAF7M,OAAKF,EAAE+M,GAAE,aACX8U,UAAU,EACVlX,WAAY,CAAE,gCAAiC,IAC/C0R,KAAM,eACNyF,aAAc,QACd9B,YAAahgB,EAAEggB,cACf,QAAA9f,QACA6hB,EAAAA,EAAAA,GAAoB,CACpBC,UAAU,EACVliB,aAAc,gCACd6K,WAAY,CAAE,qCAAsC,MAEtDsX,EAAAA,EAAAA,GAA0B,CAAC,EAAG,KAC9BC,EAAAA,EAAAA,GAAwB,CAAC,EAAC,GAAAhiB,OACrBF,EAAEigB,MAAK,4DAAA/f,QAEAmhB,EAAAA,EAAAA,GAAuB,CACvB1W,WAAY,CAAE,mCAAoC,IAClD2W,OAAO,EACPC,OAAQ,CACNC,SAAU,OACVC,cAAezhB,EAAEsgB,YACjBJ,wCAAyClgB,EAAEkgB,wCAC3CC,mBAAoBngB,EAAEmgB,mBACtBC,kBAAmBpgB,EAAEogB,kBACrBC,eAAgBrgB,EAAEqgB,gBAEpBrP,MAAOhR,EAAEigB,QACT,UACJ,MACRkC,EAAAA,EAAAA,GAA0B,CAAC,GACzB9N,EAAAA,EAAAA,GAAY,CACVC,QAAS,eACT3J,WAAY,CAAE,+BAAgC,UAC9CnK,KAAMR,EAAEugB,WAEX,mBC8BC6B,EAAAA,EAAAA,IAAiBT,EAAkBtX,KAAKN,QAAS,CAAEsY,OAAO,EAAM1X,YAAY,IAC5E0G,EAAAA,EAAUC,8BAA8BjH,KAAKN,QAC/C,GAAC,CAAAzC,IAAA,mBAAAlG,MAED,WACEiJ,KAAKsW,YAActW,KAAKN,QAAQc,cAAc6V,EAAeC,aAC7DtW,KAAKuW,QAAUvW,KAAKN,QAAQc,cAAc6V,EAAeE,SACzDvW,KAAKiY,aAAejY,KAAKuW,QAAQ/V,cAAc,SAC/CR,KAAKwW,UAAYxW,KAAKN,QAAQc,cAAc6V,EAAeG,WAC3DxW,KAAKkW,OAASlW,KAAKN,QAAQc,cAAc6V,EAAeH,QACxDlW,KAAKkY,WAAalY,KAAKuW,QAAQ,aAC/BvW,KAAKmY,eAAiBnY,KAAKsW,YAAY,kBACvCtW,KAAK0W,eAAiB1W,KAAKN,QAAQc,cAAc6V,EAAeK,eAClE,GAAC,CAAAzZ,IAAA,mBAAAlG,MAED,WACEiJ,KAAKoY,aAAepY,KAAKwW,UAAUH,EAAeI,mBAClDzW,KAAKoY,aAAanY,OAAOY,GAAG,aAAcb,KAAKqY,gBAAgBtU,KAAK/D,MACtE,GAAC,CAAA/C,IAAA,cAAAlG,MAED,WAAe,IAAA4I,EAAA,KACbK,KAAKqX,mBACLrX,KAAKkY,WAAWjY,OAAOY,GAAG,QAASb,KAAKsY,SAAUtY,MAClDA,KAAKyP,WAAa,CAChB,CAACzP,KAAKkW,OAAQ,CAAEnC,MAAO,kBAAMpU,EAAK4Y,WAAW,KAE/ChJ,EAAAA,EAAgBC,aAAaxP,KAAKyP,WAAY2G,EAChD,GAAC,CAAAnZ,IAAA,kBAAAlG,MAED,SAAiBub,GACftS,KAAKC,OAAOqG,KAAK,WAAYgM,GAC7BtS,KAAKwY,mBACP,GAAC,CAAAvb,IAAA,WAAAlG,MAED,WACEiJ,KAAKyY,kBACP,GAAC,CAAAxb,IAAA,mBAAAlG,MAED,WAAoB,IAAA8L,EAAA,KAClB7C,KAAKiY,aAAa3J,UAAUwE,IAAI,cAChC9S,KAAKmY,eAAeO,QAAQ,UAAU,GACtC1Y,KAAK2Y,mBAAqB,CACxB,CAACpX,SAAU,CAAEqX,UAAW,SAACtG,GAAE,OAAKzP,EAAK0V,UAAUjG,EAAG,KAEpDtS,KAAK6Y,mBACLtJ,EAAAA,EAAgBC,aAAaxP,KAAK2Y,mBAAoBvC,EACxD,GAAC,CAAAnZ,IAAA,oBAAAlG,MAED,WAAqB,IAAAsO,EAAA,KACfrF,KAAKmY,eAAeW,QAAQ,YAC9B9Y,KAAK+Y,cAAgB,KACrBxJ,EAAAA,EAAgBwB,aAAa/Q,KAAK2Y,mBAAoBvC,GACtDpW,KAAKmY,eAAeO,QAAQ,UAAU,GAAOjf,MAAK,WAChD4L,EAAK4S,aAAa3J,UAAU2E,OAAO,aACrC,IAEJ,GAAC,CAAAhW,IAAA,YAAAlG,MAED,SAAWub,GACT,IAAM0G,EAAiB1G,GAAMA,EAAGjU,QAAUiU,EAAGjU,OAAOsU,QAAQ,IAAD9c,OAAKugB,IAC3D4C,GAAkBhZ,KAAKN,UAAYsZ,GAAkBhZ,KAAKwY,mBACjE,GAAC,CAAAvb,IAAA,8BAAAlG,MAED,SAA6BkiB,GAE3B,IAAMC,EAAoBlZ,KAAKsW,YAAY6C,aAErCC,EADiBH,EAAYI,aACGH,EAOtC,OAL0BlZ,KAAKN,QAAQ4Z,wBAAwBC,IAAMN,EAAYO,UAC1DxZ,KAAKN,QAAQyZ,aACb,GAGYC,CACrC,GAAC,CAAAnc,IAAA,mBAAAlG,MAED,WACE,IAAM0iB,EAAgE,WAA3CC,EAAAA,EAAAA,IAAS1Z,KAAKsW,YAAa,YAEtD,GAD2D,UAA1CoD,EAAAA,EAAAA,IAAS1Z,KAAKsW,YAAa,YAC5BmD,EAAoB,CAClC,IAAME,EAA2BpY,SAASqY,kBAAoBrY,SAASsY,gBACjEC,EAA0B9Z,KAAK+Z,4BAA4BJ,IACjEK,EAAAA,EAAAA,IAAOL,EACLA,EAAyBM,WACzBH,EACJ,CACF,GAAC,CAAA7c,IAAA,kBAAAlG,MAED,WACEiJ,KAAKmY,eAAe+B,qBACtB,2EAACtD,CAAA,CAhK8B,+RCrCpBuD,EAAY,CAEvBzX,GAAI0X,EAAAA,OAAOC,WAEX3Q,MAAO0Q,EAAAA,OAAOC,WAEd7V,YAAa4V,EAAAA,OAEb9kB,MAAO8kB,EAAAA,OAAOC,WAEdC,oBAAqBF,EAAAA,OAErBG,6BAA8BH,EAAAA,QAGnBI,EAAe,CAC1B9Q,MAAO,GACPpU,MAAO,GACPmlB,cAAc,EACdF,6BAA8B,4wCCVhC,IAAMG,EAAe1b,EAAAA,OAAAA,EACf2b,EAAe,WACnB,IACE,OAAO3b,OAAAA,WAAAA,IAAAA,EAAAA,IAAAA,MAAAA,0GAAAA,MAAAA,EAAAA,KAAAA,mBAAAA,CAAAA,CAAAA,GACT,CAAE,MAAO7B,GACP,MAAO,CAAC,CACV,CACF,CANqB,GAOfyd,EAAMhlB,EAAAA,EAAA,GAAQ8kB,GAAiBC,GAExBE,EAA+B5a,EAAAA,GAAO6a,2BAEtCC,EAAuB,SAACzc,GACnC,IAAM3I,EAACC,EAAAA,EAAA,GAAQ4kB,GAAiBlc,IAChC0c,EAAAA,EAAAA,gBAAeb,EAAWxkB,EAAG,OAAQ,wBAErC,IAAMslB,EAAoBtlB,EAAEulB,8BAAgC,0CAA4C,GAExG,MAAO,kCAAPrlB,OAC6BF,EAAEF,aAAeE,EAAEF,aAAe,GAAE,SAAAI,OAC/DF,EAAE+M,GAAK,sBAAH7M,OAAyBF,EAAE+M,GAAE,KAAM,GAAE,uIAAA7M,OAI/BF,EAAEwlB,WAAaxlB,EAAEiZ,QAAQoH,gBAAkBrgB,EAAE8kB,cACzCW,EAAAA,EAAAA,GAAc,CACdjlB,KAAMR,EAAEiZ,QAAQoH,eAChB/L,QAAS,OACTxU,aAAc,gCAEd,GAAE,kBAAAI,OACNF,EAAE2kB,qBAAuB3kB,EAAE8kB,cACvBW,EAAAA,EAAAA,GAAc,CACdjlB,KAAMR,EAAE2kB,oBACRrQ,QAAS,OACTxU,aAAc,kCAAFI,OAAoColB,KAEhD,GAAE,4IAAAplB,OAE6DF,EAAE+T,MAAK,6BAAA7T,OACtEF,EAAE6O,YAAW,+CAAA3O,OACoCF,EAAE6O,YAAW,WAC5D,GAAE,qGAAA3O,QAIRqV,EAAAA,EAAAA,GAAatV,EAAAA,EAAC,CAAC,EACZD,EAAEsgB,aAAW,IAChBlf,MAAOpB,EAAEL,SACT,sCAAAO,OAGRF,EAAE8kB,aAAY,+HAAA5kB,OAGNF,EAAE0lB,iBAAmB1lB,EAAEiZ,QAAQ0M,yBAAwB,mNAAAzlB,OAEoFF,EAAE+M,GAAE,KAAA7M,OAAIF,EAAE4lB,WAAU,mHAAA1lB,OAClGF,EAAEiZ,QAAQ0M,yBAAwB,gKAI7F,GAAE,gFAAAzlB,OAGFF,EAAEiZ,SAAWjZ,EAAEiZ,QAAQ4M,sBACrBxR,EAAAA,EAAAA,GAAY,CACZvU,aAAc,2CACdwU,QAAS,QACTgN,OAAO,EACP9gB,KAAMR,EAAEiZ,QAAQ4M,qBAChBlb,WAAY,CACV,wBAAyB3K,EAAE8lB,WAC3B,eAAgB9lB,EAAE+M,GAClB,oBAAqB/M,EAAE+lB,YACvB,kBAAmB/lB,EAAEgmB,aAGzB,GAAE,sDAAA9lB,OAGNF,EAAE0lB,gBAAe,GAAAxlB,QACZ+lB,EAAAA,EAAAA,GAAgBhmB,EAAAA,EAAC,CAAC,EAClBimB,EAAAA,GACA,CACDnZ,GAAI,GAAF7M,OAAKF,EAAE+M,GAAE,KAAA7M,OAAIF,EAAE4lB,YACjBlb,MAAOwa,EACPva,WAAY,CACV,sBAAuB3K,EAAE+T,OAE3BoS,KAAMC,EAA2BpmB,OAGnC,GAAE,oBAGV,GAAE,iBAGR,EAEMomB,EAA6B,SAACpmB,GAClC,IAAImmB,EAAO,GAIX,OAHInmB,EAAEqmB,SACJF,GAAOG,EAAAA,EAAAA,GAAqB,CAAEC,WAAYvmB,EAAE+T,MAAOqE,SAAUpY,EAAEqmB,UAE1D,GAAPnmB,OAAUimB,EAAI,wFAAAjmB,QACoEsmB,EAAAA,EAAAA,GAAc,+BAAgCxmB,EAAE4kB,6BAA8BK,GAAO,wDAAA/kB,OAEjKF,EAAE0lB,gBAAgBtlB,KAAI,SAAC4N,GAAI,mCAAA9N,OAAkC8N,EAAI,YAASvN,KAAK,IAAG,0BAI1F,ksCC7DO,IAAMgmB,EAA8B,CACzC1Z,GAAI,GACJ2Z,SAAU,GACVd,WAAY,EACZe,+BAA+B,EAC/BC,gCAAiC,GACjC3G,MAAO,GACP4G,0BAA2B,GAC3BC,mBAAoB,IA8BTC,EAAwB,SAAC/mB,GACpC,MAAO,wBAAPE,OAEMF,EAAEigB,MAAM7f,KAAI,SAAA4N,GAAI,mBAAA9N,OACdklB,EAAoBnlB,EAAAA,EAAC,CAAC,EACnB+N,GAAI,IACP4X,WAAY5lB,EAAE4lB,WACd3M,QAASjZ,EAAEiZ,QACX6L,cAAc,EACdxE,YAAWrgB,EAAAA,EAAA,GACND,EAAEsgB,aAAW,IAChBlJ,OAAQpX,EAAEgnB,oBACEhnB,EAAEiZ,QAAQgO,cACV,QAEd,eACDxmB,KAAK,IAAG,gBAAAP,OAEPF,EAAE2mB,8BAA6B,4EAAAzmB,OAEvBF,EAAEiZ,QAAQiO,mBAAkB,0BAElC,GAAE,gBAAAhnB,OAEJF,EAAE6mB,2BAA6B7mB,EAAE6mB,0BAA0BphB,OAAS,EAAC,IAAAvF,OAC/DF,EAAE4mB,gCAA+B,qEAAA1mB,OAE7BF,EAAE4mB,gCAA+B,4BAErC,GAAE,4FAAA1mB,OAGFF,EAAE6mB,0BAA0BzmB,KAAI,SAAA4N,GAAI,6BAAA9N,OAElCklB,EAAoBnlB,EAAAA,EAAC,CAAC,EACnB+N,GAAI,IACPiL,QAASjZ,EAAEiZ,QACXqH,YAAWrgB,EAAAA,EAAA,GACND,EAAEsgB,aAAW,IAChBlJ,OAAQpX,EAAEiZ,QAAQgO,gBAEpBnnB,aAAc,iCACdglB,cAAc,KACd,yBACCrkB,KAAK,IAAG,yCAGjB,GAAE,6BAIZ,uhDChJA4I,EAAQ,OAER,IAAMkO,GAAoBC,EAAAA,EAAAA,GAAS,sBAADtX,OAAuBuX,EAAAA,EAAQ,cAE3DgJ,EAAa,cAGbC,EAAiB,CACrBngB,IAAK,QAAFL,OAAUugB,EAAU,SACvB0G,2BAA4B,IAAFjnB,OAAMugB,EAAU,iCAC1C2G,uBAAwB,IAAFlnB,OAAMugB,EAAU,oBACtC4G,0BAA2B,SAAFnnB,OAAWugB,EAAU,kBAG1CO,EAAkB,CACtB/H,QAAS,CAAC,EACVqO,YAAaC,EAAAA,EAAYC,aACzBva,KAAM,CACJF,GAAI,GACJuT,YAAa,CAAC,EACdL,MAAO,KAIUwH,EAAQ,WAc3B,SAAAA,EAAa1d,GAAuB,IAAdE,EAAOpC,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,+FAACuC,CAAA,KAAAqd,GAChCpd,KAAKN,QAAUA,EACfM,KAAKJ,QAAOhK,EAAAA,EAAA,GACP+gB,GACA/W,GAELI,KAAKC,OAAS,IAAIlB,KAElBiB,KAAK4O,QAAOhZ,EAAAA,EAAA,GACPsX,GACAtN,EAAQgP,SAGb5O,KAAKqd,uBACLrd,KAAK6W,cACL7W,KAAK8W,mBACL9W,KAAK+W,cACL/W,KAAKsd,eACP,SAiJC,SAjJAF,IAAA,EAAAngB,IAAA,cAAAlG,MAED,WAAuC,IDQRpB,ECRlBiN,EAAIpF,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAGwC,KAAKJ,QAAQgD,KACzB2a,GAAejM,EAAAA,EAAAA,KDOQ3b,ECP0BC,EAAAA,EAAC,CAAD,EAEhDgN,GAAI,IACPgM,QAAS5O,KAAK4O,QACdqH,YAAajW,KAAKJ,QAAQgD,KAAKqT,YAC/BL,MAAO,KDGbjgB,EAACC,EAAAA,EAAA,GAAQwmB,GAAgCzmB,GAElC,0TAAPE,OAMqDF,EAAE0mB,SAAQ,KAAAxmB,OAAIF,EAAE4lB,WAAa5lB,EAAE4lB,WAAa,GAAE,uBAAA1lB,OACvFF,EAAE6nB,cAAgB,mDAAH3nB,OAAsDF,EAAE6nB,cAAa,WAAY,GAAE,kCAAA3nB,OAEpGF,EAAE8mB,oBAAsB9mB,EAAE8mB,mBAAmBrhB,OAAS,EAAC,8EAAAvF,OAGnDF,EAAE8mB,mBAAmB1mB,KAAI,SAAA0nB,GAAiB,OAAIC,EAAAA,EAAAA,GAqF9D,SAA+BC,EAAQF,GACrC,MAAO,CACL/a,GAAIib,EAAS,IAAH9nB,OAAO4nB,EAAkBG,cACnC7mB,MAAO0mB,EAAkBI,SAAW,EACpCC,SAAU,EACVC,SAAUN,EAAkBO,IAC5BC,KAAM,EACN5S,MAAOoS,EAAkBjiB,KACzB0iB,iBAAkBT,EAAkBjZ,YACpC/O,aAAc,8BACd6K,WAAY,CAAE,mBAAoBmd,EAAkBG,cAExD,CAjGoFO,CAAqBxoB,EAAE+M,GAAI+a,GAAmB,IAAErnB,KAAK,KAAI,sCAG/H,GAAE,uCAAAP,OAEGF,EAAE+M,GAAE,kHClBnBsE,EAAAA,EAAUC,8BAA8BsW,IACxCxF,EAAAA,EAAAA,IAAiBwF,EAAcvd,KAAKN,QAAS,CAAEsY,OAAO,EAAM1X,YAAY,IACxE0G,EAAAA,EAAUkL,4BAA4BqL,EACxC,GAAC,CAAAtgB,IAAA,mBAAAlG,MAED,iBACEiJ,KAAKoe,8DAAqBpe,KAAKN,QAAQgU,iBAAiB2C,EAAe0G,0lBACvE/c,KAAKqe,kBAAoBre,KAAKoe,eAAeroB,KAAI,SAAAuoB,GAAO,OAAIA,EAtErC,mBAsEgE,IACvFte,KAAK0W,eAAiB1W,KAAKN,QAAQc,cAAc6V,EAAe2G,2BAChEhd,KAAKue,yBACP,GAAC,CAAAthB,IAAA,0BAAAlG,MAED,WACEiJ,KAAK8c,2BAA6B9c,KAAKN,QAAQgU,iBAAiB2C,EAAeyG,2BACjF,GAAC,CAAA7f,IAAA,cAAAlG,MAED,WAAe,IAAA4I,EAAA,KACbK,KAAKqe,kBAAkBnlB,SAAQ,SAAAslB,GAC7BA,EAAiBve,OAAOY,GAAG,SAAUlB,EAAK8e,sBAAuB9e,EACnE,IACAK,KAAK0e,kBACP,GAAC,CAAAzhB,IAAA,mBAAAlG,MAED,WAAoB,IAAA8L,EAAA,KAClB7C,KAAK8c,2BAA2B5jB,SAAQ,SAAAylB,GACtCA,EAAiB,SAAS1e,OAAOY,GAAG,cAAegC,EAAKwV,gBAAiBxV,EAC3E,GACF,GAAC,CAAA5F,IAAA,4BAAAlG,MAED,WACEiQ,EAAAA,EAAUkL,4BAA4BlS,KAAK0W,eAC7C,GAAC,CAAAzZ,IAAA,kBAAAlG,MAED,SAAiB2W,EAAQ4E,GACvB,IAAMsM,EAA4B5e,KAAKJ,QAAQif,oBAAoBC,YAAYF,0BAA0B5e,KAAK+e,iBAExGC,EAAY,CAChBC,eAAgB3M,EAAG4M,KAAKD,eACxBtB,OAAQrL,EAAG4M,KAAKvB,OAChBjC,YAAapJ,EAAG4M,KAAKxD,YACrBC,UAAWiD,OAA4BjhB,EAAY2U,EAAG4M,KAAKvD,UAC3DwD,UAAWP,OAA4BjhB,EAAYqC,KAAK+e,iBAE1D/e,KAAKC,OAAOqG,KAAK,WAAY0Y,EAC/B,GAAC,CAAA/hB,IAAA,wBAAAlG,MAED,WACE,IAAMgoB,EAAkB/e,KAAKof,wCAC7Bpf,KAAKqf,uBAAuBN,EAC9B,GAAC,CAAA9hB,IAAA,yBAAAlG,MAED,SAAwBgoB,GAA8C,IAA7Bnf,EAAOpC,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAE8hB,QAAQ,GAC3Dtf,KAAK+e,gBAAkBA,EAClBnf,EAAQ0f,SACXtf,KAAKsd,gBACLtd,KAAKuf,4BAET,GAAC,CAAAtiB,IAAA,uBAAAlG,MAED,WACE,GAAIiJ,KAAKJ,QAAQgD,KAAK6Z,mBAAoB,CACxC,IAAMsC,EAAkB/e,KAAKJ,QAAQgD,KAAK6Z,mBAAmBha,QAAO,SAAC0c,EAAW1B,GAC9E,IAAMI,EAAUJ,EAAkBI,SAAW,EAI7C,OAFAsB,EAAU1B,EAAkBG,cAAgBC,EAC5CsB,EAAUK,OAASL,EAAUK,OAAS,GAAK3B,EACpCsB,CACT,GAAG,CAAC,GAEJnf,KAAKqf,uBAAuBN,EAAiB,CAAEO,QAAQ,GACzD,CACF,GAAC,CAAAriB,IAAA,wCAAAlG,MAED,WACE,OAAOiJ,KAAKqe,kBAAkB5b,QAAO,SAAC0c,EAAWb,GAI/C,OAFAa,EADmBb,EAAQ5e,QAAQY,WAAW,oBAAoBvJ,OAC1CunB,EAAQhgB,MAAMvH,MACtCooB,EAAUK,OAASL,EAAUK,OAAS,GAAKlB,EAAQhgB,MAAMvH,MAClDooB,CACT,GAAG,CAAC,EACN,GAAC,CAAAliB,IAAA,gBAAAlG,MAED,WACE,IDLsC2O,EAA6D+Z,EAAAC,EAAvD/pB,EAAGgqB,EAAsBC,ECejEC,EAVEC,EAAiB9f,KAAKJ,QAAQif,oBAChC7e,KAAKJ,QAAQif,oBAAoBkB,YAAY/f,KAAKJ,QAAQgD,KAAKgT,MAAO5V,KAAK+e,gBAAiB/e,KAAKJ,QAAQqd,aACzG,CAAErH,MAAO5V,KAAKJ,QAAQgD,KAAKgT,MAAO4G,0BAA2B,IAE3DwD,EAA2BhgB,KAAKqe,mBAAqBre,KAAKqe,kBAAkBjjB,OAAS,EACrF6kB,EAAyBD,GAA4BhgB,KAAKJ,QAAQif,oBAAoBC,YAAYF,0BAA0B5e,KAAK+e,iBAEjImB,EAAwBJ,EAAeK,uBAAuBriB,QAAO,SAAAsiB,GAAI,OAAIA,EAAKC,QAAQ,IAC1FC,EAA2BR,EAAeK,uBAAuBriB,QAAO,SAAAsiB,GAAI,OAAKA,EAAKC,QAAQ,IAIlGR,EADEK,EAAsB9kB,QACZkW,EAAAA,EAAAA,KDjBiCqO,GAATja,ECiBwB,CAC1D/P,EAAG,CACD4lB,WAAYvb,KAAKJ,QAAQgD,KAAK2Y,WAC9BiB,0BAA2BsD,EAAetD,0BAC1CF,8BAAgF,IAAjDwD,EAAeK,uBAAuB/kB,OACrEmhB,gCAAiCvc,KAAKugB,2CAA2CT,EAAetD,2BAChGG,oBAAqBqD,GAA4BC,EACjDrR,QAAS5O,KAAK4O,QACdqH,YAAajW,KAAKJ,QAAQgD,KAAKqT,aAEjC0J,qBAAsBO,EACtBN,wBAAyBU,ID5BkBX,qBAAsBC,EAAuBla,EAAvBka,wBAChE,iEAAP/pB,OAEa,QAAT4pB,GAH0C9pB,EAAC+P,EAAD/P,GAGxCiZ,eAAO,IAAA6Q,GAATA,EAAWe,sBAAwB,sDAAH3qB,OAAyDF,EAAEiZ,QAAQ4R,sBAAqB,UAAW,GAAE,YAAA3qB,OACnI6mB,EAAqB9mB,EAAAA,EAAC,CAAC,EAAID,GAAC,IAAEigB,MAAO+J,KAAuB,sBAAA9pB,OAG9D+pB,SAAAA,EAAyBxkB,OAAM,8GAAAvF,OAIpB,QAAT6pB,EAAA/pB,EAAEiZ,eAAO,IAAA8Q,GAATA,EAAWe,mBAAqB,sDAAH5qB,OAAyDF,EAAEiZ,QAAQ6R,mBAAkB,UAAW,GAAE,cAAA5qB,OAC7H6mB,EAAqB9mB,EAAAA,EAAC,CAAC,EAAID,GAAC,IAAEigB,MAAOgK,KAA0B,kBAEvE,GAAE,uBCiBctO,EAAAA,EAAAA,IAAkBoL,EAAsB,CAClDnB,WAAYvb,KAAKJ,QAAQgD,KAAK2Y,WAC9B3F,MAAOkK,EAAeK,uBACtB3D,0BAA2BsD,EAAetD,0BAC1CF,8BAAgF,IAAjDwD,EAAeK,uBAAuB/kB,OACrEmhB,gCAAiCvc,KAAKugB,2CAA2CT,EAAetD,2BAChGG,oBAAqBqD,GAA4BC,EACjDrR,QAAS5O,KAAK4O,QACdqH,YAAajW,KAAKJ,QAAQgD,KAAKqT,eAInCjP,EAAAA,EAAUC,8BAA8B4Y,IACxC9H,EAAAA,EAAAA,IAAiB8H,EAAW7f,KAAK0W,eAAgB,CAAEsB,OAAO,EAAM1X,YAAY,IAC5EN,KAAKue,0BACLve,KAAK0e,kBACP,GAAC,CAAAzhB,IAAA,6CAAAlG,MAED,SAA4CylB,GAC1C,IAAIkE,EAAU,GAId,OAHIlE,GAA6BA,EAA0BphB,OAAS,IAClEslB,GAAW1gB,KAAK4O,QAAQ2N,iCAAmC,IAAIhQ,QAAQ,MAAOiQ,EAA0BphB,SAEnGslB,CACT,2EAACtD,CAAA,CAjL0B,+jDCxBtB,IAAMuD,EAA0B,CACrCC,WAAY,utCCMP,IAAMC,EAAiC,CAC5CC,aAAa,EACbC,MAAO,OACPC,aAAc,GACdC,WAAW,EACXC,cAAe,MACfC,MAAO,GACP1rB,aAAc,yrCCCT,IAAM2rB,EAA4C,CACvDC,YAAa,GACbC,iBAAkB,GAClBC,aAAc,GACdC,WAAY,GACZC,SAAU,0BC1BCtH,EAAY,CAEvBzX,GAAI0X,EAAAA,OAAOC,WAEXgC,SAAUjC,EAAAA,OAAOC,WAEjBkB,WAAYmG,EAAAA,OAAOrH,WAEnBsH,SAAUvH,EAAAA,OAAOC,WAEjBuH,gBAAiBxH,EAAAA,OAEjB9kB,OAAOusB,EAAAA,EAAAA,OAAM,CACX9qB,MAAOqjB,EAAAA,OACP3N,iBAAkB2N,EAAAA,OAClB5N,SAAU4N,EAAAA,OACVrN,OAAQqN,EAAAA,OACR0H,YAAa1H,EAAAA,SACZC,WAEH0H,YAAa3H,EAAAA,OAEb4H,aAAc5H,EAAAA,OAEdE,oBAAqBF,EAAAA,OAErBe,UAAW8G,EAAAA,KAEXjM,eAAgBoE,EAAAA,OAEhB8H,UAAWD,EAAAA,KAEXE,qBAAsBF,EAAAA,KAEtB1H,6BAA8BH,EAAAA,OAE9BqC,oBAAoB2F,EAAAA,EAAAA,UAClBP,EAAAA,EAAAA,OAAM,CACJnf,GAAI0X,EAAAA,OACJyD,QAAS6D,EAAAA,OACTW,IAAKX,EAAAA,OACL1D,IAAK0D,EAAAA,OACLlmB,KAAM4e,EAAAA,OACN5V,YAAa4V,EAAAA,UAKjB3kB,aAAc2kB,EAAAA,OAGd9Z,YAAYgiB,EAAAA,EAAAA,WACVC,EAAAA,EAAAA,WAAU,CACRN,EAAAA,KACA7H,EAAAA,WAKOI,EAAe,CAC1B9X,GAAI,GACJ2Z,SAAU,GACVd,WAAY,EACZoG,SAAU,GACVrsB,MAAO,CACLyB,MAAO,GACP0V,iBAAkB,GAClBD,SAAU,GACVO,OAAQ,IAEVmV,WAAW,EACXC,sBAAsB,EACtB5H,6BAA8B,uxCC9DhC,IAAMG,EAAe1b,EAAAA,OAAAA,EACf2b,EAAe,WACnB,IACE,OAAO3b,OAAAA,WAAAA,IAAAA,EAAAA,IAAAA,MAAAA,oHAAAA,MAAAA,EAAAA,KAAAA,mBAAAA,CAAAA,CAAAA,GACT,CAAE,MAAO7B,GACP,MAAO,CAAC,CACV,CACF,CANqB,GAOfyd,EAAMhlB,EAAAA,EAAA,GAAQ8kB,GAAiBC,GAoI/BoB,EAA6B,SAACpmB,GAClC,IAAImmB,EAAO,GAIX,OAHInmB,EAAEqmB,SACJF,GAAOG,EAAAA,EAAAA,GAAqB,CAAEC,WAAYvmB,EAAE+T,MAAOqE,SAAUpY,EAAEqmB,UAE1D,GAAPnmB,OAAUimB,EAAI,wFAAAjmB,QACoEsmB,EAAAA,EAAAA,GAAc,+BAAgCxmB,EAAE4kB,6BAA8BK,GAAO,wDAAA/kB,OAEjKF,EAAE0lB,gBAAgBtlB,KAAI,SAAC4N,GAAI,mCAAA9N,OAAkC8N,EAAI,YAASvN,KAAK,IAAG,0BAI1F,4/BClKA,IAAM2I,EAAeC,EAAQ,MACvBoX,EAAa,mBACbC,EAAiB,CACrB+H,eAAgB,IAAFvoB,OAAMugB,EAAU,oBAC9BoM,iBAAkB,IAAF3sB,OAAMugB,EAAU,oBAKbqM,EAAa,WAUhC,SAAAA,EAAa/iB,GAAuB,IAAdE,EAAOpC,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,+FAACuC,CAAA,KAAA0iB,GAChCziB,KAAKN,QAAUA,EACfM,KAAKJ,udAAOhK,CAAA,GACPgK,GAGLI,KAAK+N,SAAW/N,KAAK0iB,oBAErB1iB,KAAKC,OAAS,IAAIlB,EAClBiB,KAAK2iB,kBAAoB,GAEzB3iB,KAAK4iB,yBACL5iB,KAAK6iB,gBAEL7iB,KAAKN,QAAQ0W,GAAc,CACzB1W,QAASM,KAAKN,QACdE,QAASI,KAAKJ,QACdK,OAAQD,KAAKC,OAEjB,SA2DC,SA3DAwiB,KAAA,EAAAxlB,IAAA,oBAAAlG,MAED,WACE,MAAO,CACLqnB,kBAAoBpe,KAAKN,QAAQgU,iBAAiB2C,EAAe+H,koBACjEoE,iBAAkBxiB,KAAKN,QAAQc,cAAc6V,EAAemM,wBAEhE,GAEA,CAAAvlB,IAAA,yBAAAlG,MAKA,WACEiJ,KAAKqe,kBAAoBre,KAAK+N,SAASqQ,eAAeroB,KAAI,SAAAuoB,GAAO,OAAIA,EA9C9C,mBA8CyE,GAClG,GAEA,CAAArhB,IAAA,gBAAAlG,MAGA,WAAiB,IAAA4I,EAAA,KACXK,KAAKqe,mBAAqBre,KAAKqe,kBAAkBjjB,OAAS,GAC5D4E,KAAKqe,kBAAkBnlB,SAAQ,SAAA4pB,GAC7BA,EAAI7iB,OAAOY,GAAG,SAAUlB,EAAKojB,4BAA6BpjB,EAC5D,IAGEK,KAAK+N,SAASyU,kBAChBxiB,KAAK+N,SAASyU,iBAAiB,SAASviB,OAAOY,GAAG,cAAeb,KAAKgjB,+BAAgChjB,KAE1G,GAEA,CAAA/C,IAAA,eAAAlG,MAKA,WACE,OAAOiJ,KAAKqe,kBAAkB5b,QAAO,SAAC0c,EAAWb,GAI/C,OAFAa,EADmBb,EAAQ5e,QAAQY,WAAW,oBAAoBvJ,OAC1CunB,EAAQhgB,MAAMvH,MAE/BooB,CACT,GAAG,CAAC,EACN,GAEA,CAAAliB,IAAA,8BAAAlG,MAGA,WACEiJ,KAAKC,OAAOqG,KAAK,uBAAwBtG,KAAKijB,eAChD,GAEA,CAAAhmB,IAAA,iCAAAlG,MAGA,WACEiJ,KAAKC,OAAOqG,KAAK,aAActG,KAAKN,QAAQgD,GAC9C,0EAAC+f,CAAA,CAxF+B,IA2FlCtZ,EAAAA,EAAAA,GAAesZ,EAAerM,6BCnGxB8M,qBAAyB,CAI7BC,SAAU,WAKVC,aAAc,eAIdC,YAAa,cAKbC,QAAS,SAACC,GACR,OAAO9sB,OAAOsC,OAAOmqB,GAAwBM,SAASD,EACxD,IAGF,mlFCTA,IAAMxkB,GAAeC,EAAQ,MACvBykB,IAAgBtW,EAAAA,EAAAA,GAAS,sBAADtX,OAAuBuX,EAAAA,EAAQ,YACvDsW,IAAmBvW,EAAAA,EAAAA,GAAS,sBAADtX,OAAuBuX,EAAAA,EAAQ,kBAE1DuJ,GAAkB,CACtB/H,QAAS,CAAC,EACV+U,uBAAuB,EACvBC,eAAe,EACfC,eAAgBC,EAAAA,EAAeC,yBAC/BC,SAAU,KACVC,gBAAiB,KACjBC,WAAY,MAGR9N,GAAa,kBACbC,GAAiB,CACrB8N,qBAAsB,SAAFtuB,OAAWugB,GAAU,qBACzCgO,qBAAsB,IAAFvuB,OAAMugB,GAAU,gBACpCiO,qCAAsC,IAAFxuB,OAAMugB,GAAU,wCAGjCkO,GAAY,WAC/B,SAAAA,EAAa5kB,EAAS8S,EAAc5P,GAAoB,IAAdhD,EAAOpC,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,EAACuC,GAAA,KAAAukB,GACpDtkB,KAAKN,QAAUA,EACfM,KAAKwS,aAAe5P,EAAK4P,cAAgBA,EACzCxS,KAAK4C,KAAOA,EACZ5C,KAAKJ,QAAOhK,GAAAA,GAAA,GACP+gB,IACA/W,GAELI,KAAK4O,QAAOhZ,GAAAA,GAAAA,GAAA,GACP6tB,IACAC,IACA1jB,KAAKJ,QAAQgP,SAGlB5O,KAAKC,OAAS,IAAIlB,GAClBiB,KAAK6e,oBAAsB,IAAI0F,EAAAA,EAAoBvkB,KAAK4C,MAExD5C,KAAKwkB,aACLxkB,KAAKykB,aACLzkB,KAAK0kB,WACP,CA0tBC,OA1tBAC,GAAAL,EAAA,EAAArnB,IAAA,uBAAAlG,MAED,WACE,OAAOiJ,KAAK4kB,iBACd,GAAC,CAAA3nB,IAAA,2BAAAlG,MAED,WACE,OAAOiJ,KAAK+gB,MAAM8D,qBACpB,GAAC,CAAA5nB,IAAA,qBAAAlG,MAED,WACE,OAAIiJ,KAAKJ,QAAQ+jB,sBACR3jB,KAAK8kB,gBAGL9kB,KAAK6e,oBAAoBkG,4BAA4B/kB,KAAKwS,aAErE,GAAC,CAAAvV,IAAA,aAAAlG,MAED,WAAc,IAAA4I,EAAA,KACZK,KAAK4kB,kBAAoB,KACzB5kB,KAAK8kB,gBAAkB9kB,KAAKJ,QAAQ+jB,sBAChC3jB,KAAK6e,oBAAoBkG,4BAA4B/kB,KAAKwS,cAC1DxS,KAAK6e,oBAAoBmG,0BAE7BhlB,KAAKilB,mBAAqB,EAC1B,IAAIC,EAAe,KAEnB,GAAIllB,KAAKJ,QAAQikB,iBAAmBC,EAAAA,EAAeC,0BAA4B/jB,KAAKJ,QAAQokB,SAAU,CACpG,IAAMmB,EAAkBnlB,KAAKJ,QAAQqkB,gBACjCjkB,KAAK6e,oBAAoBuG,yCAAyCplB,KAAKJ,QAAQokB,SAAUhkB,KAAKJ,QAAQqkB,iBACtGjkB,KAAK6e,oBAAoBwG,uBAAuBrlB,KAAKJ,QAAQokB,UAEjE,GAAIhkB,KAAKJ,QAAQ+jB,sBAAuB,CACtC,IAAA2B,EAAiEtlB,KAAK6e,oBAAoB0G,8BAA8BJ,EAAiBnlB,KAAK8kB,iBAA3HU,EAAaF,EAAxBnG,UAAsCsG,EAAcH,EAA1BpB,WAC5BwB,EAAc1lB,KAAK6e,oBAAoB8G,SAASC,oBAAoB5lB,KAAKJ,QAAQokB,UAAUve,MAAK,SAAAogB,GAAG,OAAIA,EAAInK,cAAgB8J,EAAc9iB,EAAE,IAEjJwiB,EAAe,CACbjG,eAAgBjf,KAAKJ,QAAQqf,eAC7BtB,OAAQ3d,KAAKJ,QAAQokB,SACrBrI,UAAW+J,EAAYhjB,GACvBwhB,WAAYuB,EAEhB,KAAO,CACL,IAAMjI,EAAgB2H,EAAgB1f,MAAK,SAAA0Z,GAAS,OAAIxf,EAAKmmB,gBAAgBnmB,EAAKC,QAAQskB,WAAY/E,EAAU4G,OAAO,IAEvH,GAAIvI,EAAe,CACjB,IAAMwI,EAAkBhmB,KAAK6e,oBAAoB8G,SAASC,oBAAoB5lB,KAAKJ,QAAQokB,UAAUve,MAAK,SAAAogB,GAAG,OAAIA,EAAInK,cAAgB8B,EAAc9a,EAAE,IAErJwiB,EAAe,CACbvH,OAAQ3d,KAAKJ,QAAQokB,SACrB/E,eAAgBjf,KAAKJ,QAAQqf,eAC7BtD,UAAWqK,EAAgBtjB,GAC3BwhB,WAAY1G,EAEhB,CACF,CACF,CAEA,IAAMuD,EAAQ,CACZ4E,cAAUhoB,EACVknB,sBAAuB7kB,KAAK8kB,iBAG1B9kB,KAAKJ,QAAQ+jB,uBAEf5C,EAAM4E,SAAW,GAEbT,IAEFllB,KAAKilB,kBAAoB,EACzBlE,EAAM4E,SAAS5qB,KAAKmqB,GACpBnE,EAAM8D,sBAAwB7kB,KAAK6e,oBAAoBoH,wBAAwBjmB,KAAK8kB,gBAAiBI,EAAahB,eAIhHgB,IACFllB,KAAKilB,kBAAoBjlB,KAAKwS,aAAa0T,WAAU,SAAAC,GACnD,IAAMjC,EAAavkB,EAAKkf,oBAAoBkG,4BAA4BoB,GACxE,OAAOxmB,EAAKmmB,gBAAgB5B,EAAYgB,EAAahB,WAAW6B,OAClE,KAGE/lB,KAAKilB,kBAAoB,GAAKC,IAChCllB,KAAKilB,kBAAoBjlB,KAAKwS,aAAa0T,WAAU,SAAAC,GAAW,OAAIxmB,EAAKkf,oBAAoBkG,4BAA4BoB,GAAa3G,QAAU0F,EAAahB,WAAW6B,OAAOvG,MAAMxB,GAAG,KAG1L+C,EAAM4E,SAAW3lB,KAAKwS,aAAazc,KAAI,SAACqwB,EAAyBC,GAAG,MAAM,CACxE1I,OAAQhe,EAAKslB,oBAAsBoB,EAAMnB,EAAavH,YAAShgB,EAC/DshB,eAAgBtf,EAAKslB,oBAAsBoB,EAAMnB,EAAajG,oBAAiBthB,EAC/Ege,UAAWhc,EAAKslB,oBAAsBoB,EAAMnB,EAAavJ,eAAYhe,EACrEumB,WAAYvkB,EAAKkf,oBAAoBkG,4BAA4BqB,GAClE,KAGHpmB,KAAK+gB,MAAQA,CACf,GAAC,CAAA9jB,IAAA,kBAAAlG,MAED,SAAiBmtB,EAAYoC,GAK3B,OAJcpC,EAAWqC,SAAWD,EAAiBC,OAAOvI,KAC9CkG,EAAWsC,WAAaF,EAAiBE,SAASxI,KAClDkG,EAAWuC,SAAWH,EAAiBG,OAAOzI,GAG9D,GAAC,CAAA/gB,IAAA,eAAAlG,MAED,SAAc2vB,GAAuC,IAAA7jB,EAAA,KAA7BjD,EAAOpC,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAE8hB,QAAQ,GACpCuF,EAAwB7kB,KAAKJ,QAAQ+jB,sBACvC+C,EAASf,SAASljB,QAAO,SAACkkB,EAAKd,GAAG,OAAKhjB,EAAKgc,oBAAoBoH,wBAAwBU,EAAKd,EAAI3B,WAAW,GAAAtuB,GAAA,GAAOoK,KAAK8kB,kBACxH9kB,KAAK+gB,MAAM8D,sBAEf7kB,KAAK+gB,MAAKnrB,GAAAA,GAAA,GACL8wB,GAAQ,IACX7B,sBAAAA,IAGGjlB,EAAQ0f,QACXtf,KAAK0kB,WAET,GAAC,CAAAznB,IAAA,aAAAlG,MAED,WPxKkC,IAACpB,EOyKjCqK,KAAKN,QAAQmU,WPzKoBle,EOyKaqK,KAAK4O,QPxKrDjZ,EAACC,EAAAA,EAAA,GAAQ+qB,GAA4BhrB,GAE9B,+EAAPE,OAC0EF,EAAEirB,WAAU,gEOsKpF5gB,KAAK+N,SAAW/N,KAAKgO,oBACvB,GAAC,CAAA/Q,IAAA,qBAAAlG,MAED,WACE,MAAO,CACLotB,qBAAsBnkB,KAAKN,QAAQc,cAAc6V,GAAe8N,sBAEpE,GAAC,CAAAlnB,IAAA,qBAAAlG,MAED,WAAsB,IAAAsO,EAAA,KAChBuhB,GAAW,EAWf,OATA5mB,KAAK+gB,MAAM4E,SAASzsB,SAAQ,SAAC2sB,EAAKQ,GAChC,GAAKhhB,EAAKzF,QAAQ+jB,uBAA0BkC,EAAIlI,OAEzC,CACL,IAAMkJ,EAAaxhB,EAAKyhB,6BAA6BjB,EAAKQ,GAC1DO,EAAWA,GAAYC,CACzB,MAJExhB,EAAK0hB,6BAA6BlB,EAAKQ,EAK3C,IAEOO,CACT,GAAC,CAAA3pB,IAAA,+BAAAlG,MAED,SAA8B8uB,EAAKQ,GAAK,IAAAxgB,EAAA,KAChC0V,EAAa8K,EAAM,EACnBW,GAAkB1V,EAAAA,EAAAA,IC5MnB,mHD6MetR,KAAKinB,sBAAsBD,EAAiBnB,EAAI3B,WAAY3I,GACpEtb,OAAOY,GAAG,YAAY,SAACyR,GAAE,OAAKzM,EAAKqhB,sBAAsBb,EAAK/T,EAAGqL,OAAO,IAEpF3d,KAAK+N,SAASoW,qBAAqB/R,YAAY4U,GAC/ChgB,EAAAA,EAAUkL,4BAA4B8U,EACxC,GAAC,CAAA/pB,IAAA,gCAAAlG,MAED,WAAiC,IAAAqQ,EAAA,KACzBmU,EAAavb,KAAK+gB,MAAM4E,SAASvqB,OAAS,EAC1C4rB,GAAkB1V,EAAAA,EAAAA,ICtNnB,mHDuNetR,KAAKinB,sBAAsBD,EAAiBhnB,KAAK+gB,MAAM8D,sBAAuBtJ,GACtFtb,OAAOY,GAAG,YAAY,SAACyR,GAAE,OAAKlL,EAAK+f,eAAe7U,EAAGqL,OAAQrL,EAAGqJ,UAAWrJ,EAAG6M,UAAU,IAEpGnf,KAAK+N,SAASoW,qBAAqB/R,YAAY4U,GAC/ChgB,EAAAA,EAAUkL,4BAA4B8U,EACxC,GAAC,CAAA/pB,IAAA,+BAAAlG,MAED,WAAgC,ILnMqBpB,EKmMrBme,EAAA,KAG9B,GAFoB9T,KAAK4C,KAAKwkB,oBAEb,CACf,IAAMC,EAA+B,CACnChG,YAAarhB,KAAK4O,QAAQ0Y,6BAC1BhG,iBAAkBthB,KAAK4O,QAAQ2Y,kCAC/B/F,WAAY,6BACZD,aAAcvhB,KAAK4O,QAAQ4Y,8BAC3B/F,SAAUzhB,KAAK6e,oBAAoB4I,YAAYC,mBAC5C3xB,KAAI,SAAA4xB,GAAU,MAAK,CAClBje,MAAOoK,EAAK8T,mBAAmBD,EAAWjlB,IAC1CvM,KAAM2d,EAAK+T,wBAAwBF,GACpC,KAECG,GAAkCxW,EAAAA,EAAAA,KLlNS3b,EKkNgD0xB,ELjNrG1xB,EAACC,EAAAA,EAAA,GAAQwrB,GAA8CzrB,GAExC,4EAAHE,QACQkyB,EAAAA,EAAAA,GAAY,CACZjM,KAAM,+KAAFjmB,OAEgEF,EAAE0rB,YAAW,+KAAAxrB,OAC6DF,EAAE6rB,WAAU,2HAAA3rB,OAC7FF,EAAE2rB,iBAAgB,6QAAAzrB,OAIhBF,EAAE6rB,WAAU,wIAAA3rB,OAE9DF,EAAE4rB,aAAY,qIAAA1rB,OAEjBF,EAAE8rB,SAAQ,GAAA5rB,OACLF,EAAE8rB,SAAS1rB,KAAI,SAAAiyB,GAAO,oNAAAnyB,OAE4CmyB,EAAQte,MAAK,+GAAA7T,OACdmyB,EAAQ7xB,KAAI,2FAE7EC,KAAK,KACR,GAAE,4GAIdX,aAAc,0EACd,gCKsLhBuK,KAAK+N,SAASoW,qBAAqB/R,YAAY0V,GAC/C9gB,EAAAA,EAAUC,8BAA8B6gB,EAC1C,CACF,GAAC,CAAA7qB,IAAA,uCAAAlG,MAED,WACE,IN/NwCpB,EAGpCsyB,EACAC,EACAC,EM0NEC,EAA+B,CACnCpH,aAAc,CAAChhB,KAAKqoB,+CACpBlH,MAAO,6BACP1rB,aAAc,8BAEV6yB,GAAkChX,EAAAA,EAAAA,KNpOA3b,EMoO8CyyB,ENjOlFH,GAFNtyB,EAACC,EAAAA,EAAA,GAAQirB,GAAmClrB,IAEzBqrB,cAAgBrrB,EAAEqrB,aAAaljB,QAAO,SAAAyqB,GAAG,OAAIA,GAAsB,KAAfA,EAAIntB,MAAa,IAClF8sB,EAAiBvyB,EAAEmrB,aAAemH,EAAS7sB,OAAS,EACpD+sB,EAA0BxyB,EAAEsrB,WAAatrB,EAAEurB,cAAgB,gBAAHrrB,OAAmBF,EAAEurB,eAAkB,GAEtFgH,EAAc,wCAAAryB,OACeF,EAAEF,aAAY,sBAAAI,QAC5CkyB,EAAAA,EAAAA,GAAY,CACZ9d,QAAStU,EAAEsrB,UAAY,QAAU,GACjCnF,KAAM,+EAAFjmB,OACQoyB,EAASlyB,KAAI,SAAA2qB,GAAO,YAAA7qB,OAAU6qB,EAAO,WAAQtqB,KAAK,IAAG,kCAEjEX,aAAc,GAAFI,OAAKsyB,EAAuB,2CAAAtyB,OAA0CF,EAAEorB,MAAK,cAAAlrB,OAAaF,EAAEorB,MAAK,aAC7G,wBAEV,KMoNF/gB,KAAK+N,SAASoW,qBAAqB/R,YAAYkW,EACjD,GAAC,CAAArrB,IAAA,kCAAAlG,MAED,WACE,INpNwCpB,EACpCsyB,EMqNEO,EAA2B,CAC/BxH,aAHmB,CAAChhB,KAAK4O,QAAQ6Z,kCAIjChzB,aAAc,4BAEVizB,GAA8BpX,EAAAA,EAAAA,KNzNhC2W,GADoCtyB,EM0N0C6yB,GNzNjExH,cAAgBrrB,EAAEqrB,aAAaljB,QAAO,SAAAyqB,GAAG,OAAIA,GAAsB,KAAfA,EAAIntB,MAAa,IACjF,wDAAPvF,OACmDF,EAAEF,aAAY,cAAAI,OAC3DoyB,EAASlyB,KAAI,SAAA2qB,GAAO,YAAA7qB,OAAU6qB,EAAO,WAAQtqB,KAAK,IAAG,sBMuNzD4J,KAAK+N,SAASoW,qBAAqB/R,YAAYsW,EACjD,GAAC,CAAAzrB,IAAA,wBAAAlG,MAED,SAAuB4xB,EAAqBC,EAAsBrN,GAAY,IAAAsN,EAAA,KACtEC,EAAuB9oB,KAAK6e,oBAAoBkK,qCAAqCH,EAAsB5oB,KAAKJ,QAAQ+jB,sBAAuBpI,GAC/IyN,EAAyBhpB,KAAKipB,2BAA2BH,GA4B/D,OA1BKE,GAA4D,IAAlCA,EAAuB5tB,QACNutB,EAAoBjV,iBAAiB2C,GAAegO,sCAI5DnrB,SAAQ,SAAAwG,GAC5CA,EAAQwpB,UAAYL,EAAKja,QAAQua,+CACnC,IAGkB,IAAI/L,EAAAA,QAASuL,EAAqB,CACpD/Z,QAAS5O,KAAK4O,QACdnZ,aAAc,gCACdopB,oBAAqB7e,KAAK6e,oBAC1Bjc,KAAM,CACJF,GAAI,GAAF7M,OAAKmK,KAAKN,QAAQgD,GAAE,eACtB2Z,SAAUrc,KAAK4O,QAAQyN,SACvBd,WAAAA,EACAqN,qBAAAA,EACApL,cAAexd,KAAKJ,QAAQ+jB,sBAAwB,GAAK3jB,KAAKopB,wCAAwCR,GACtGnM,mBAAoBzc,KAAKJ,QAAQ+jB,sBAAwB3jB,KAAKqpB,kCAAkCT,GAAwB,KACxHhT,MAAOoT,EACP/S,YAAajW,KAAKspB,uBAKxB,GAAC,CAAArsB,IAAA,qBAAAlG,MAED,WACE,IAAIwyB,EAEJ,GAAIvpB,KAAK4C,KAAKwJ,iBACZ,OAAQpM,KAAK4C,KAAKwJ,iBAAiBC,gBACjC,KAAK6W,EAAuBE,aAC1BmG,EAAiB,CACf9c,iBAAkB,SAClBD,SAAUxM,KAAK4C,KAAKwJ,iBAAiBD,QAEvC,MACF,KAAK+W,EAAuBG,YAC1BkG,EAAiB,CACf9c,iBAAkB,QAClBD,SAAUxM,KAAK4C,KAAKwJ,iBAAiBD,QAEvC,MACF,KAAK+W,EAAuBC,SAC1BoG,EAAiB,CACf9c,iBAAkB,GAClBD,SAAU,IAEZ,MACF,QACE+c,OAAiB5rB,EAKvB,OAAO4rB,CACT,GAAC,CAAAtsB,IAAA,wBAAAlG,MAED,SAAuBsvB,EAAK1I,GAC1B,IAAMwH,EAAkBnlB,KAAK6e,oBAAoBwG,uBAAuB1H,GACrD6H,EAAkBxlB,KAAK6e,oBAAoB0G,8BAA8BJ,EAAiBnlB,KAAK+gB,MAAM4E,SAASU,GAAKnC,YAA9H/E,UACFuG,EAAc1lB,KAAK6e,oBAAoB8G,SAASC,oBAAoBjI,GAAQlY,MAAK,SAAAogB,GAAG,OAAIA,EAAInK,cAAgB8J,EAAc9iB,EAAE,IAE5H8mB,EAAgBC,GACjBzpB,KAAK+gB,MAAM4E,UAGhB6D,EAAiBnD,GAAK1I,OAAS6L,EAAiBnD,GAAK1I,QAAUA,EAC/D6L,EAAiBnD,GAAK1K,UAAY6N,EAAiBnD,GAAK1K,WAAa+J,EAAYhjB,GACjF8mB,EAAiBnD,GAAKpH,eAAiBuK,EAAiBnD,GAAKpH,gBAAkByG,EAAYjK,WAE3F,IAAMiL,EAAQ9wB,GAAAA,GAAA,GACToK,KAAK+gB,OAAK,IACb4E,SAAU6D,IAGZxpB,KAAK0pB,aAAahD,EACpB,GAAC,CAAAzpB,IAAA,iBAAAlG,MAED,SAAgB4mB,EAAQhC,EAAWwD,GACjC,IAAIwK,EAEJ,GAAIxK,GAAaxD,EAEI3b,KAAK6e,oBAAoB8G,SAASiE,eAAejO,KAElEgO,EAAa,CACXhM,OAAAA,EACAhC,UAAAA,EACAuI,WAAY/E,QAGX,CAEL,IAAMgG,EAAkBnlB,KAAK6e,oBAAoBwG,uBAAuB1H,GACxEkM,EAAiE7pB,KAAK6e,oBAAoB0G,8BAA8BJ,EAAiBnlB,KAAK+gB,MAAM8D,uBAAjIW,EAAaqE,EAAxB1K,UAAsCsG,EAAcoE,EAA1B3F,WAC5BwB,EAAc1lB,KAAK6e,oBAAoB8G,SAASC,oBAAoBjI,GAAQlY,MAAK,SAAAogB,GAAG,OAAIA,EAAInK,cAAgB8J,EAAc9iB,EAAE,IAC9HgjB,IACFiE,EAAa,CACXhM,OAAAA,EACAhC,UAAW+J,EAAYhjB,GACvBwhB,WAAYuB,GAGlB,CAEA,GAAIkE,EAAY,CACd,IAAMjD,EAAW,CACff,SAAU,GAAF9vB,OAAA4zB,GACHzpB,KAAK+gB,MAAM4E,UAAQ,CACtBgE,KAGJ3pB,KAAK0pB,aAAahD,GAClB1mB,KAAK8pB,wBACP,CACF,GAAC,CAAA7sB,IAAA,yBAAAlG,MAED,WACE,IACMgzB,EAAa/pB,KAAK+N,SAASoW,qBAAqBzQ,iBAAiB,qBACvE,GAAIqW,EAAW3uB,OAAQ,CACrB,IAAMue,EAA2BpY,SAASqY,kBAAoBrY,SAASsY,gBAEjEmQ,EADgBD,EAAWA,EAAW3uB,OAAS,GAChBke,wBAAwBC,IAAM0Q,OAAOC,aAL3D,IAMflQ,EAAAA,EAAAA,IAAOL,EAA0B,EAAGqQ,EACtC,CACF,GAAC,CAAA/sB,IAAA,6BAAAlG,MAED,SAA4B+xB,GAAsB,IAAAqB,EAAA,KAWhD,OAVArB,EAAqB5vB,SAAQ,SAAAknB,GAC3B,QAAmBziB,IAAfyiB,EAAKgK,MAAqB,CAC5B,IAAMC,EAAgBF,EAAKpJ,MAAM4E,SAAS7nB,QAAO,SAAA+nB,GAAG,OAAIA,EAAIlI,SAAWyC,EAAK1d,IAAMmjB,EAAI5G,iBAAmBmB,EAAK3E,UAAU,IAAErgB,OAE1HglB,EAAKgK,MAAQhK,EAAKgK,MAAQC,EAC1BjK,EAAK9F,oBAAsB6P,EAAKG,wBAAwBlK,EAAKgK,OAC7DhK,EAAKlF,8BAAgCiP,EAAKI,kCAAkCnK,EAAKgK,MACnF,CACF,IAEOtB,EAAqBhrB,QAAO,SAAAsiB,GAAI,YAAmBziB,IAAfyiB,EAAKgK,OAAuBhK,EAAKgK,MAAQ,CAAC,GACvF,GAAC,CAAAntB,IAAA,YAAAlG,MAED,WAAa,IAAAyzB,EAAA,KACXxqB,KAAK4kB,kBAAoB,MACzB5M,EAAAA,EAAAA,IAAMhY,KAAK+N,SAASoW,sBAEpB,IAAIyC,GAAW,EAEf5mB,KAAKyqB,+BAEDzqB,KAAK+gB,MAAM4E,SAASvqB,OAAS,IAC/BwrB,EAAW5mB,KAAK0qB,sBAGlB,IAAMC,EAAuB3qB,KAAK4qB,wBAC5BC,EAAuB7qB,KAAK8qB,2BAE5BC,GAA4BJ,IAAyBE,EAW3D,GAZsCjE,GAAY5mB,KAAKJ,QAAQ+jB,wBAA0BgH,IAIvF3qB,KAAKgrB,uCACLhrB,KAAKirB,iCAGHF,GACF/qB,KAAKkrB,kCAGHP,EACF,GAAIE,EAAsB,CACxB,IAAIM,EAAanrB,KAAKwS,aAAa4Y,OAEnCprB,KAAK4kB,kBAAoB5kB,KAAK+gB,MAAM4E,SAAS5vB,KAAI,SAAC8vB,EAAK5vB,GACrD,IAAIuc,EACJ,GAAIgY,EAAK5qB,QAAQ+jB,sBAAuB,CACtC,IAAM3hB,EAASwoB,EAAK3L,oBAAoBwM,2BAA2BF,EAAYtF,EAAI3B,YACnF1R,EAAexQ,EAAOspB,OACtBH,EAAanpB,EAAOupB,SACtB,MACE/Y,EAAegY,EAAKhY,aAAavc,GAGnC,OAAAL,GAAAA,GAAA,GACKiwB,GAAG,IACN5B,gBAAiBuG,EAAK3L,oBAAoB8G,SAASiE,eAAe/D,EAAIlK,WAAWsI,gBACjFtC,SAAU6I,EAAK3L,oBAAoBjJ,MAAM4V,YAAY3F,EAAIlI,QAAQniB,KACjEgX,aAAAA,GAEJ,IAEAxS,KAAKC,OAAOqG,KAAK,wBAAyBtG,KAAK4kB,kBACjD,MACE5kB,KAAKC,OAAOqG,KAAK,gCAGnBtG,KAAKC,OAAOqG,KAAK,0BAErB,GAAC,CAAArJ,IAAA,wBAAAlG,MAED,WACE,OAAoI,IAA7HN,OAAOsC,OAAOiH,KAAK+gB,MAAM8D,uBAAuBpiB,QAAO,SAACgpB,EAAeC,GAAY,OAAKD,EAAgBC,CAAY,GAAE,EAC/H,GAAC,CAAAzuB,IAAA,2BAAAlG,MAED,WACE,OAAQiJ,KAAK+gB,MAAM4E,SAASlgB,MAAK,SAAAogB,GAAG,YAAmBloB,IAAfkoB,EAAIlI,MAAoB,GAClE,GAAC,CAAA1gB,IAAA,kBAAAlG,MAED,SAAiB8uB,EAAK5vB,GAAO,IAAA01B,EAAA,KACnBhQ,EAAkDkK,EAAlDlK,UAAWuI,EAAuC2B,EAAvC3B,WAAYvG,EAA2BkI,EAA3BlI,OAAQsB,EAAmB4G,EAAnB5G,eAIjC1D,EAAatlB,EAAQ,EACrB21B,EAAcjQ,EAChB3b,KAAK6e,oBAAoB8G,SAAS/iB,KACjC9E,QAAO,SAAA+nB,GAAG,OAAIA,EAAInjB,KAAOiZ,CAAS,IAClC7d,QAAO,SAAA+nB,GAAG,OAAIA,EAAItK,aAAeA,CAAU,IAC3C9V,MAAK,SAAAogB,GAAG,OAAI8F,EAAK9M,oBAAoBC,YAAY+M,2BAA2BhG,EAAInK,YAAawI,EAAW,SACzGvmB,EAIEmuB,EAA+B,IAAV71B,EAAc,EAAI+J,KAAK+gB,MAAM4E,SAASvpB,MAAM,EAAGnG,GAAO6H,QAAO,SAAA+nB,GAAG,OAAIA,EAAIlI,SAAWA,GAAUkI,EAAI5G,iBAAmBA,CAAc,IAAE7jB,OAEzJ2wB,EAAW/rB,KAAK6e,oBAAoBjJ,MAAM4V,YAAY7N,GACtDqO,OAAoCruB,IAAnBouB,EAAS3B,WAC5BzsB,EACAouB,EAAS3B,MAAQ0B,EACftO,EAAgBxd,KAAK6e,oBAAoBoN,qBAAqBtO,GAE9DuO,EAAoBhI,EACpBiI,EAAgBnsB,KAAKosB,wCAAwC5O,EAAe0O,GAE5EG,EAAqB1Q,EACvB,CACEjZ,GAAIiZ,EACJrmB,MAAKM,GAAA,CACHmB,MAAOiJ,KAAK6e,oBAAoByN,gBAAgBV,EAAYt2B,OAC5DyX,OAAQ/M,KAAKopB,wCAAwC8C,GACrDpK,YAAa9hB,KAAK4O,QAAQ2d,4BACvBvsB,KAAKspB,sBAEVnO,UAAWyQ,EAAYzQ,UACvBnF,eAAgB4V,EAAYzQ,UAAYnb,KAAK4O,QAAQoH,eAAiB,IAExE,CAAC,EAEL,OAAApgB,GAAAA,GAAA,GACKy2B,GAAkB,IAErBnK,UAAWliB,KAAKJ,QAAQikB,iBAAmBC,EAAAA,EAAe0I,0BAA4Bv2B,IAAU+J,KAAKilB,kBACrGvb,MAAO,GAAF7T,OAAKmK,KAAK4O,QAAQyN,SAAQ,KAAAxmB,OAAII,EAAQ,GAC3CslB,WAAAA,EACAc,SAAUrc,KAAK4O,QAAQyN,SACvBsF,SAAUoK,EAASvwB,KACnBomB,gBAAiBmK,EAASU,SAC1BzK,aAAcmK,EAAc/1B,KAAK,MACjCkkB,oBAAqBta,KAAKsqB,wBAAwB0B,GAClD7J,qBAAsBniB,KAAKJ,QAAQ+jB,sBACnClH,mBAAoBzc,KAAK0sB,uBAAuBlP,EAAe0O,EAAmBj2B,GAClFqlB,yBAA0Btb,KAAK4O,QAAQ0M,yBACvCD,gBAAiB0Q,EAAS1Q,gBAC1BW,OAAQ+P,EAAS/P,OACjB/lB,MAAAA,GAEJ,GAAC,CAAAgH,IAAA,0BAAAlG,MAED,SAAyBi1B,GAGvB,QAAuBruB,IAAnBquB,GAAgCA,GAAkBhsB,KAAK4O,QAAQiH,wCAAyC,CAC1G,GAAuB,IAAnBmW,EACF,OAAOhsB,KAAK4O,QAAQmH,mBAAqB/V,KAAK4O,QAAQkH,mBAAmBvJ,QAAQ,MAAO,GACnF,GAAIyf,GAAkBhsB,KAAK4O,QAAQiH,wCACxC,OAAO7V,KAAK4O,QAAQkH,mBAAmBvJ,QAAQ,MAAOyf,EAE1D,CAEA,MAVuB,EAWzB,GAAC,CAAA/uB,IAAA,oCAAAlG,MAED,SAAmCi1B,GACjC,QAAuBruB,IAAnBquB,GAAgCA,GAAkBhsB,KAAK4O,QAAQiH,wCACjE,OAA2B,IAAnBmW,CAIZ,GAAC,CAAA/uB,IAAA,0CAAAlG,MAED,SAAyCmtB,GACvC,IAAMyI,EAAO,GAEb,GAAIzI,EAAWqC,OAAQ,CACrB,IAAMqG,EAAmC,IAAtB1I,EAAWqC,OAAevmB,KAAK4O,QAAQie,UAAY7sB,KAAK4O,QAAQge,WACnFD,EAAK5xB,KAAK,GAADlF,OAAIquB,EAAWqC,OAAM,KAAA1wB,OAAI+2B,GACpC,CAEA,GAAI1I,EAAWsC,SAAU,CACvB,IAAMsG,EAAuC,IAAxB5I,EAAWsC,SAAiBxmB,KAAK4O,QAAQme,UAAY/sB,KAAK4O,QAAQke,aACvFH,EAAK5xB,KAAK,GAADlF,OAAIquB,EAAWsC,SAAQ,KAAA3wB,OAAIi3B,GACtC,CAEA,GAAI5I,EAAWuC,OAAQ,CACrB,IAAMuG,EAAmC,IAAtB9I,EAAWuC,OAAezmB,KAAK4O,QAAQqe,SAAWjtB,KAAK4O,QAAQoe,WAClFL,EAAK5xB,KAAK,GAADlF,OAAIquB,EAAWuC,OAAM,KAAA5wB,OAAIm3B,GACpC,CAEA,OAAOL,EAAKv2B,KAAK,KACnB,GAAC,CAAA6G,IAAA,0CAAAlG,MAED,SAAyCymB,EAAe0O,GAAmB,IAAAgB,EAAA,KACnEP,EAAO,GAmBb,OAhBAl2B,OAAOsF,KAAKiE,KAAK8kB,iBAAiB5rB,SAAQ,SAAA0kB,GACxC,GAAKsP,EAAKpI,gBAAgBlH,GAA1B,CAEA,IAAI2K,EAAM,KACJ4E,EAAqB3P,EAAcI,GAAcyE,IAAM6J,EAAkBtO,GACzEwP,EAAsBlB,EAAkBtO,GAAgBJ,EAAcI,GAAcI,IAEtFmP,EAAqB,EACvB5E,EAAM2E,EAAKG,mCAAmCF,EAAoBD,EAAKtF,mBAAmBhK,EAAcuP,IAC/FC,EAAsB,IAC/B7E,EAAM2E,EAAKI,mCAAmCF,EAAqBF,EAAKtF,mBAAmBhK,EAAcwP,KAGvG7E,GAAKoE,EAAK5xB,KAAKwtB,EAZ4B,CAajD,IAEOoE,CACT,GAAC,CAAA1vB,IAAA,qBAAAlG,MAED,SAAoB6mB,GAA+B,IAAjB2P,EAAW/vB,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,EAC1CgwB,EAAW,KAEf,OAAQ5P,GACN,IAAK,SACH4P,EAA2B,IAAhBD,EAAoB,YAAc,aAC7C,MAEF,IAAK,WACHC,EAA2B,IAAhBD,EAAoB,YAAc,eAC7C,MAEF,IAAK,SACHC,EAA2B,IAAhBD,EAAoB,WAAa,aAC5C,MAEF,IAAK,QACHC,EAA2B,IAAhBD,EAAoB,aAAe,aAIlD,OAAOvtB,KAAK4O,QAAQ4e,EACtB,GAAC,CAAAvwB,IAAA,8CAAAlG,MAED,WAA+C,IAAA02B,EAAA,KACvCC,EAAwB,GAY9B,GAVA1tB,KAAK6e,oBAAoB4I,YAAYkG,SAASz0B,SAAQ,SAAA0kB,GACpD,IAAMgQ,EAAuBH,EAAK1M,MAAM8D,sBAAsBjH,GAE9D,GAAIgQ,EAAuB,EAAG,CAC5B,IAAMC,EAAiBJ,EAAK7F,mBAAmBhK,EAAcgQ,GACvDE,EAAuB,GAAHj4B,OAAM+3B,EAAoB,KAAA/3B,OAAIg4B,GACxDH,EAAsB3yB,KAAK+yB,EAC7B,CACF,IAEIJ,EAAsBtyB,OAAS,EAAG,CACpC,IAAM2yB,EAAgCL,EAAsBzxB,MAC5D,OAAO+D,KAAKqtB,mCAAmC,GAADx3B,OAAI63B,EAAsBt3B,KAAK,MAAK,KAAAP,OAAImK,KAAK4O,QAAQof,UAAS,KAAAn4B,OAAIk4B,GAClH,CACE,OAAO/tB,KAAKqtB,mCAAmCK,EAAsBt3B,KAAK,IAE9E,GAAC,CAAA6G,IAAA,qCAAAlG,MAED,SAAoC+2B,GAElC,OADiB9tB,KAAK4O,QAAQqf,6BAA+B,gFAE1D1hB,QAAQ,oBAAqBuhB,EAClC,GAAC,CAAA7wB,IAAA,qCAAAlG,MAED,SAAoCm3B,EAAmBL,GACrD,OAA0B,IAAtBK,EAAgC,MAEnBluB,KAAK4O,QAAQuf,yBAA2B,yEAEtD5hB,QAAQ,uBAAwB2hB,GAChC3hB,QAAQ,uBAAwBshB,EACrC,GAAC,CAAA5wB,IAAA,yBAAAlG,MAED,SAAwBymB,EAAe0O,EAAmBj2B,GAAO,IAAAm4B,EAAA,KACzD3R,EAAqB,GACrB4R,EAAgCruB,KAAKJ,QAAQikB,iBAAmBC,EAAAA,EAAe0I,yBAC/E8B,EAAiBr4B,EAAQ,EACzBs4B,EAAuBvuB,KAAK6e,oBAAoB4I,YAAY+G,qBAAqBxuB,KAAK8kB,iBAAiB1pB,OA2B7G,OAxBK4E,KAAKJ,QAAQgkB,gBAAkByK,GAAiCC,GAAkBC,EAAuB,IAC5GvuB,KAAK6e,oBAAoB4I,YAAY7kB,KAAK1J,SAAQ,SAAAyuB,GAChD,GAAKyG,EAAKtJ,gBAAgB6C,EAAWjlB,IAArC,CAEA,IAAM+rB,EAAoBvC,EAAkBvE,EAAWjlB,KAAO,EACxDgsB,EAAwC,IAAzBH,EACjBI,KAAK3Q,IAAIR,EAAcmK,EAAWjlB,IAAI2f,IAAK7E,EAAcgC,MAAM6C,KAC/D,EACEuM,EAAmE,IAApDR,EAAKrN,MAAM8D,sBAAsB8C,EAAWjlB,IAC7D+rB,EACAE,KAAKtM,IAAI7E,EAAcmK,EAAWjlB,IAAIsb,IAAKoQ,EAAKtJ,gBAAgB6C,EAAWjlB,KACzEmrB,EAAiBO,EAAKxG,mBAAmBD,EAAWjlB,GAAI+rB,GAE9DhS,EAAmB1hB,KAAK,CACtB2H,GAAIilB,EAAWjlB,GACfmb,QAAS4Q,EACTpM,IAAKqM,EACL1Q,IAAK4Q,EACLpzB,KAAMqyB,EACNrpB,YAAa4pB,EAAKvG,wBAAwBF,IAjBI,CAmBlD,IAGKlL,CACT,GAAC,CAAAxf,IAAA,0BAAAlG,MAED,SAAyB4wB,GACvB,OAAQ3nB,KAAK4O,QAAQ,GAAD/Y,OAAI8xB,EAAWjlB,GAAE,iBAAkB1C,KAAK4O,QAAQ,GAAD/Y,OAAI8xB,EAAWjlB,GAAE,cACjF6J,QAAQ,cAAe,IACvBA,QAAQ,aAAcob,EAAWkH,QAAU,EAAIlH,EAAWkH,OAAS,IACnEtiB,QAAQ,aAAcob,EAAWmH,QAAU,EAAInH,EAAWmH,OAAS,GACxE,GAAC,CAAA7xB,IAAA,oCAAAlG,MAED,SAAmC6xB,GAAsB,IAAAmG,EAAA,KACjDtS,EAAqB,GAErB7N,EAAU5O,KAAK4O,QAkBrB,OAhBA5O,KAAK6e,oBAAoB4I,YAAY7kB,KAAK1J,SAAQ,SAAAyuB,GAChD,IAAMqH,EAA8BpG,EAAqBjB,EAAWjlB,IACpE,GAAIssB,EAA8B,EAAG,CACnC,IAAMnB,EAAiBkB,EAAKnH,mBAAmBD,EAAWjlB,GAAIssB,GAE9DvS,EAAmB1hB,KAAK,CACtB6iB,aAAc+J,EAAWjlB,GACzBsb,IAAKgR,EACLxzB,KAAMqyB,EACNrpB,aAAcoK,EAAQ,GAAD/Y,OAAI8xB,EAAWjlB,GAAE,iBAAkBkM,EAAQ,GAAD/Y,OAAI8xB,EAAWjlB,GAAE,cAC7E6J,QAAQ,cAAeshB,GACvBthB,QAAQ,aAAcob,EAAWkH,QAAUlH,EAAWkH,QAAU,EAAIlH,EAAWkH,OAAS,IACxFtiB,QAAQ,aAAcob,EAAWmH,QAAUnH,EAAWmH,QAAU,EAAInH,EAAWmH,OAAS,KAE/F,CACF,IACOrS,CACT,GAAC,CAAAxf,IAAA,+BAAAlG,MAED,SAA8B8uB,EAAK5vB,GAAO,IHxqBNqI,EAC9B3I,EGuqBoCs5B,EAAA,KAClCC,EAAWt5B,GAAAA,GAAA,GACZoK,KAAKmvB,gBAAgBtJ,EAAK5vB,IAAM,IACnCR,aAAc,kCAEV25B,GAAiB9d,EAAAA,EAAAA,KH7qBWhT,EG6qB6B4wB,EH5qB3Dv5B,EAACC,EAAAA,EAAA,GAAQ4kB,GAAiBlc,IAChC0c,EAAAA,EAAAA,gBAAeb,EAAWxkB,EAAG,OAAQ,yBAE9B,gBAAPE,OACWF,EAAE+M,GAAE,8BAAA7M,OAA6BF,EAAEF,aAAeE,EAAEF,aAAe,GAAE,kDAAAI,OAE5EF,EAAE2K,YAAa+uB,EAAAA,EAAAA,IAAiB15B,EAAE2K,YAAc,GAAE,mMAAAzK,OAGFF,EAAE0mB,SAAQ,KAAAxmB,OAAIF,EAAE4lB,WAAa5lB,EAAE4lB,WAAa,GAAE,wHAAA1lB,OAGtDF,EAAEqsB,aAAe,qCAAuC,GAAE,8HAAAnsB,OAG1FF,EAAEwlB,WAAaxlB,EAAEqgB,gBACjBoF,EAAAA,EAAAA,GAAc,CACdjlB,KAAMR,EAAEqgB,eACR/L,QAAS,OACTxU,aAAc,gCAEd,GAAE,kBAAAI,OACFF,EAAE2kB,qBACAc,EAAAA,EAAAA,GAAc,CACdjlB,KAAMR,EAAE2kB,oBACRrQ,QAAS,OACTxU,aAAc,mCAEhB,GAAE,qIAAAI,OAE+DF,EAAEgsB,SAAQ,2BAAA9rB,OACzEF,EAAEisB,gBAAe,+CAAA/rB,OACgCF,EAAEisB,gBAAe,WAChE,GAAE,yGAAA/rB,QAINqV,EAAAA,EAAAA,GAAcvV,EAAEL,OAAM,gDAAAO,OAG1BF,EAAEqsB,aAAY,kEAAAnsB,OAENF,EAAEqsB,aAAY,wBAEpB,GAAE,cAAAnsB,OAEJF,EAAEwsB,sBAAyBxsB,EAAE8mB,oBAAsB9mB,EAAE8mB,mBAAmBrhB,OAAS,EAAE,uEAAAvF,OAE3EF,EAAE8mB,mBAAmB1mB,KAAI,SAAA0nB,GAAiB,OAAIC,EAAAA,EAAAA,GAmChE,SAA+Bhb,EAAI/M,GACjC,MAAO,CACL+M,GAAIA,EAAK,IAAH7M,OAAOF,EAAE+M,IACf3L,MAAOpB,EAAEkoB,QACTC,SAAUnoB,EAAE0sB,IACZtE,SAAUpoB,EAAEqoB,IACZC,KAAM,EACN5S,MAAO1V,EAAE6F,KACT0iB,iBAAkBvoB,EAAE6O,YACpB/O,aAAc,mCACd6K,WAAY,CAAE,mBAAoB3K,EAAE+M,IAExC,CA/CsFyb,CAAqBxoB,EAAE+M,GAAI+a,GAAmB,IAAErnB,KAAK,KAAI,wBAEnI,GAAE,gBAAAP,OAEJF,EAAE0lB,gBAAe,kQAAAxlB,OAG8GF,EAAE+M,GAAE,KAAA7M,OAAIF,EAAEM,MAAK,iHAAAJ,OAC/EF,EAAE2lB,yBAAwB,0KAAAzlB,QAInF+lB,EAAAA,EAAAA,GAAgBhmB,EAAAA,EAAC,CAAC,EACfimB,EAAAA,GACA,CACDnZ,GAAI,GAAF7M,OAAKF,EAAE+M,GAAE,KAAA7M,OAAIF,EAAEM,OACjB6lB,KAAMC,EAA2BpmB,MAEnC,wBAEJ,GAAE,0BAAAE,OAGNF,EAAEusB,WACAlY,EAAAA,EAAAA,GAAY,CACZC,QAAS,YACT+H,KAAM,MACNvc,aAAc,kCACdwhB,OAAO,IAEP,GAAE,6BG+lBRjX,KAAK+N,SAASoW,qBAAqB/R,YAAYgd,GAC/CpoB,EAAAA,EAAUC,8BAA8BmoB,GACxC,IAAME,EAAmB,IAAI7M,EAAc2M,EAAgB,CAAC,GAI5D,OAHAE,EAAiBrvB,OAAOY,GAAG,wBAAwB,SAAC0uB,GAAY,OAAKN,EAAKO,+BAA+Bv5B,EAAOs5B,EAAa,IAC7HD,EAAiBrvB,OAAOY,GAAG,cAAc,kBAAMouB,EAAKQ,eAAex5B,EAAM,IAE9B,IAApCi5B,EAAYlN,aAAa5mB,MAClC,GAAC,CAAA6B,IAAA,iBAAAlG,MAED,SAAgBsvB,GACd,IAAMK,EAAW,CACff,SAAU3lB,KAAKJ,QAAQ+jB,sBACnB3jB,KAAK+gB,MAAM4E,SAAS7nB,QAAO,SAAC+nB,EAAK5vB,GAAK,OAAKA,IAAUowB,CAAG,IACxDrmB,KAAK+gB,MAAM4E,SAAS5vB,KAAI,SAAC8vB,EAAK5vB,GAAK,OAAAL,GAAAA,GAAA,GAChCiwB,GAAG,IACNlI,OAAQ1nB,IAAUowB,OAAM1oB,EAAYkoB,EAAIlI,OACxCsB,eAAgBhpB,IAAUowB,OAAM1oB,EAAYkoB,EAAI5G,eAChDtD,UAAW1lB,IAAUowB,OAAM1oB,EAAYkoB,EAAIlK,WAAS,KAK1D3b,KAAK0pB,aAAahD,EACpB,GAAC,CAAAzpB,IAAA,iCAAAlG,MAED,SAAgCsvB,EAAKkJ,GACnCA,EAAevvB,KAAK6e,oBAAoB6Q,8BAA8BH,GACtE,IAAM/F,EAAgBC,GACjBzpB,KAAK+gB,MAAM4E,UAGhB6D,EAAiBnD,GAAKnC,WAAUtuB,GAAAA,GAAA,GAC3B4zB,EAAiBnD,GAAKnC,YACtBqL,GAGL,IAAMI,EAAkB3vB,KAAK6e,oBAAoB+Q,yBAAyB5vB,KAAK+gB,MAAM4E,SAASU,GAAK1I,OAAQ4R,GAC3G/F,EAAiBnD,GAAK1K,UAAYgU,EAAkBA,EAAgBjtB,QAAK/E,EAEzE,IAAM+oB,EAAQ9wB,GAAAA,GAAA,GACToK,KAAK+gB,OAAK,IACb4E,SAAU6D,IAGZxpB,KAAK0pB,aAAahD,EACpB,GAAC,CAAAzpB,IAAA,6CAAAlG,MAED,WACE,OAAOiJ,KAAK4kB,iBACd,KAACN,CAAA,CA/uB8B,GAuvB3BuL,GAA0B,SAAAC,0RAAAC,CAAAF,EAAAC,GAAA,QAAAE,KAAAH,0rBAC9B,SAAAA,EAAanwB,GAAuB,IAAdE,EAAOpC,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAC,OAAAuC,GAAA,KAAA8vB,GAAAG,EAAA53B,KAAA,KAC1BsH,OAAS/B,OAAWA,EAAWiC,EACvC,CAAC,OAAA+kB,GAAAkL,EAAA,CAH6B,CAASvL,KAMzCnb,EAAAA,EAAAA,GAAe0mB,GAA4BzZ,sCE/xBpC,IAAM6Z,EAAS,CACpBC,uBAAwB,wBACxBC,eAAgB,iBAChBC,aAAc,eACdC,iCAAkC,gCAClCC,oBAAqB,qBACrBC,uBAAwB,yBACxBC,mBAAoB,wBACpBC,yBAA0B,2BAC1BC,kBAAmB,w3ECuBrB,IAEMC,EAA4B,CAChCC,oBAAqB,CAAC,EACtBC,gBAAiB,CAAC,EAClBC,eAAgB,CACdlb,MAAO,GACPmb,SAAU,GACVC,YAAa,CAAC,GAEhBC,YAAa,GACbC,YAAa,IAMMC,EAAsB,WAUzC,SAAAA,IAAsC,IAAzBvuB,EAAIpF,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,EAAGoC,EAAOpC,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,+FAACuC,CAAA,KAAAoxB,GAClCnxB,KAAK4C,KAAIhN,EAAAA,EAAA,GACJ+6B,GACA/tB,GAEL5C,KAAK4O,QAAUhP,EAAQgP,SAAW,CAAC,EACnC5O,KAAKoxB,UAAYxxB,EAAQ8C,IAAM,EACjC,WAcC,SAZDyuB,IAgLC,EAAAl0B,IAAA,uBAAAlG,MAzKD,WACE,OAD0CyG,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,IACtBzH,KAAI,SAAA2P,GAAA,IAAGsM,EAAItM,EAAJsM,KAAMqf,EAAK3rB,EAAL2rB,MAAK,OAAAz7B,EAAA,CACrCoc,KAAAA,GAASqf,EAAM,KAAEx7B,OAAA4zB,EAChB4H,EAAMj1B,MAAM,GAAG0B,QAAO,SAAAqJ,GAAO,QAAAA,EAAJhR,IAAiB,IAAEJ,KAAI,SAACu7B,GAAI,OAAA17B,EAAA,CAAQ27B,cAAc,GAASD,EAAI,KAAI,IAC9F7uB,QAAO,SAACzE,EAAK2I,GAAK,SAAA9Q,OAAA4zB,EAAUzrB,GAAGyrB,EAAK9iB,GAAK,GAAI,GAClD,OAZA,EAAA1J,IAAA,gCAAAlG,MAmBA,WAAiC,IAAAy6B,EAEzBC,EAAmBzxB,KAAK4C,KAAK6uB,kBAAoBzxB,KAAK4C,KAAK6uB,iBAAiBA,iBAC9EzxB,KAAK4C,KAAK6uB,iBAAiBA,iBAAiB17B,KAAI,SAAA27B,GAAO,MAAK,CAC5D1f,KAAM0f,EAAQ1f,KACd7b,KAAMu7B,EAAQl2B,KACf,IACC,GAEJ,MAAO,CACLkH,GAAI1C,KAAKoxB,UACTO,cAAe3xB,KAAK4O,QAAQqiB,aAAejxB,KAAK4O,QAAQqiB,YAAYrQ,WACpEgR,kBAAmB5xB,KAAK4C,KAAKkuB,gBAAkB9wB,KAAK4C,KAAKkuB,eAAeE,aAAehxB,KAAK4C,KAAKkuB,eAAeE,YAAY76B,KAC5H07B,mBAAoB7xB,KAAK4C,KAAKkuB,gBAAkB9wB,KAAK4C,KAAKkuB,eAAeE,aAAehxB,KAAK4C,KAAKkuB,eAAeE,YAAYc,MACzH9xB,KAAK4C,KAAKkuB,eAAeE,YAAYc,MACrC,OACJ/uB,cAAe/C,KAAK4O,QAAQ7L,cAC5BgvB,YAAa,GAAFl8B,OAAA4zB,EACN0H,EAAuBa,qBAAqBhyB,KAAK4C,KAAKqvB,sBAAoBxI,EAC1E0H,EAAuBa,qBAAqBhyB,KAAK4C,KAAKquB,eAE3DQ,iBAAkB,CAChBpmB,MAAOrL,KAAK4O,QAAQ6iB,iBAAiBpmB,MACrC6mB,QAASlyB,KAAK4O,QAAQ6iB,iBAAiBS,QACvCvrB,MAAO8qB,GAETX,eAAgB,CACdnqB,MAAO3G,KAAKmyB,iCACZC,gBAAiBpyB,KAAKqyB,2CACtBC,4BAAqD,QAA1Bd,EAAExxB,KAAK4C,KAAKkuB,sBAAc,IAAAU,OAAA,EAAxBA,EAA0Be,uBACvDC,WAAYxyB,KAAKyyB,sCACjBC,UAAW1yB,KAAK4O,QAAQkiB,eAAe4B,UACvCC,cAAe3yB,KAAK4O,QAAQkiB,eAAe6B,cAC3CC,eAAgB5yB,KAAK4C,KAAKiwB,UAAY7yB,KAAK4O,QAAQkiB,eAAe8B,eAAiB,GACnFhS,WAAY5gB,KAAK4O,QAAQkiB,eAAelQ,WACxCkS,qBAAsB9yB,KAAK4O,QAAQkiB,eAAegC,qBAClDC,4BAA6B/yB,KAAKgzB,qCAEpCC,eAAgB,CACdvpB,MAAO1J,KAAK4O,QAAQkiB,eAAeoC,oBACnCC,QAASnzB,KAAK4O,QAAQkiB,eAAesC,uBAEvCC,iBAAkBrzB,KAAKszB,uBACvBC,YAAavzB,KAAK4C,KAAKkuB,eAAe0C,KACtCtC,YAAalxB,KAAK4C,KAAKsuB,YAE3B,GAAC,CAAAj0B,IAAA,uBAAAlG,MAED,WACE,IAAM08B,EAAczzB,KAAK4O,QAAQkiB,eAAe4C,WAC1CC,GAAgB3zB,KAAK4C,KAAKgxB,eAAiB,IAAIC,cAUrD,OAPqB,WAAjBF,EACuB3zB,KAAK4O,QAAQkiB,eAAegD,yBAC3B,QAAjBH,EACgB3zB,KAAK4O,QAAQkiB,eAAeiD,sBAE5B/zB,KAAK4O,QAAQkiB,eAAekD,8BAEtBP,GAAe,EAClD,GAEA,CAAAx2B,IAAA,iCAAAlG,MAKA,WAAkC,IAAAk9B,EAAAt0B,EAAA,KAC1BiW,EAAQ5V,KAAK4C,KAAKkuB,eAAelb,MAAM7f,KAAI,SAACqqB,EAAMnqB,GAAK,MAAM,CAAEyT,MAAOzT,EAAQ,EAAG0Q,MAAOyZ,EAAM,IAC9F2Q,EAAW,CAAEpqB,MAAO3G,KAAK4C,KAAKkuB,eAAeC,UAEnD,MAAO,GAAPl7B,OAAA4zB,EACK7T,EAAM7f,KAAI,SAACqqB,GAAI,MAAM,CACtB8T,QAASv0B,EAAKiP,QAAQkiB,eAAeqD,SAAW,IAAM/T,EAAK1W,MAC3D0qB,SAAUhU,EAAKzZ,MAAM5Q,KAAI,SAAC4N,GAAI,MAAM,CAAEuwB,QAASvwB,EAAKxN,KAAMY,MAAO4M,EAAK5M,MAAO,IAC7EyoB,QAAOY,EAAKZ,OAAQY,EAAKZ,MACzBzoB,MAAOqpB,EAAKrpB,MACZs9B,qBAAsB,8CACtBC,qBAAsB,8CACvB,KAAE7K,EACAsH,EAASpqB,MAAM5Q,KAAI,SAAC27B,GAAO,MAAM,CAClCwC,QAASxC,EAAQv7B,KACjBY,MAAO26B,EAAQ36B,MACfw9B,aAAY7C,EAAQ6C,YAAa7C,EAAQ6C,WACzCF,qBAAsB,GAAFx+B,OAA2B,IAAtB67B,EAAQ8C,UAAkB,4DAA8D,GAAE,mDACpH,KAAE/K,EACAzpB,KAAKy0B,4BAAqC,QAAVR,EAACj0B,KAAK4C,YAAI,IAAAqxB,GAAgB,QAAhBA,EAATA,EAAWnD,sBAAc,IAAAmD,GAA0B,QAA1BA,EAAzBA,EAA2BS,gCAAwB,IAAAT,OAAA,EAAnDA,EAAqDU,YAE7F,GAAC,CAAA13B,IAAA,8BAAAlG,MAED,SAA6BA,GAC3B,OAAOA,EACH,CAAC,CACCm9B,QAASl0B,KAAK4O,QAAQkiB,eAAe8D,aACrC79B,MAAAA,EACAs9B,qBAAsB,qCAExB,EACN,GAAC,CAAAp3B,IAAA,2CAAAlG,MAED,WAA4C,IAAA89B,EAAAC,EACpCC,GAAqC,QAAxBF,EAAA70B,KAAK4C,KAAKkuB,sBAAc,IAAA+D,OAAA,EAAxBA,EAA0BG,sBAAuB,GACpE,MAAO,GAAPn/B,OAAA4zB,EACKsL,EAAWh/B,KAAI,SAACk/B,GAAS,MAAM,CAChCf,QAASe,EAAUz5B,KACnB44B,SAAU,CAAC,CAAEF,QAASe,EAAUzwB,cAChCzN,MAAOk+B,EAAU3/B,MAAMq/B,UACxB,KAAElL,EACAzpB,KAAKy0B,4BAAqC,QAAVK,EAAC90B,KAAK4C,YAAI,IAAAkyB,GAAgB,QAAhBA,EAATA,EAAWhE,sBAAc,IAAAgE,GAA0B,QAA1BA,EAAzBA,EAA2BI,gCAAwB,IAAAJ,OAAA,EAAnDA,EAAqDH,YAE7F,GAAC,CAAA13B,IAAA,sCAAAlG,MAED,WAAuC,IAAAo+B,EAAAC,EAC/BC,EAAiBr1B,KAAK4C,KAAKkuB,eAAewE,YACxBt1B,KAAK4C,KAAKkuB,eAAeyE,iBACzBv1B,KAAK4C,KAAKkuB,eAAewE,WAAWnkB,MAAQnR,KAAK4C,KAAKkuB,eAAeyE,gBAAgBpkB,IACvGqkB,EAAqB,CAAC,CAC1BtB,QAASl0B,KAAK4O,QAAQkiB,eAAe2E,mBACrC1+B,MAAOiJ,KAAK4C,KAAKguB,oBAAoB+D,YAiBvC,OAfa,QAAbQ,EAAIn1B,KAAK4C,YAAI,IAAAuyB,GAAgB,QAAhBA,EAATA,EAAWrE,sBAAc,IAAAqE,GAAzBA,EAA2BT,0BAC7Bc,EAAmBz6B,KAAK,CACtBm5B,QAASl0B,KAAK4O,QAAQkiB,eAAelQ,WACrC7pB,MAAOiJ,KAAK4C,KAAKkuB,eAAe4D,yBAAyBC,UACzDe,WAAY,0GAGH,QAAbN,EAAIp1B,KAAK4C,YAAI,IAAAwyB,GAAgB,QAAhBA,EAATA,EAAWtE,sBAAc,IAAAsE,GAAzBA,EAA2BF,0BAC7BM,EAAmBz6B,KAAK,CACtBm5B,QAASl0B,KAAK4O,QAAQkiB,eAAegC,qBACrC/7B,MAAOiJ,KAAK4C,KAAKkuB,eAAeoE,yBAAyBP,UACzDe,WAAY,oDAIT,CACL,CACEC,QAAUN,EACN,CACEt+B,MAAOiJ,KAAK4C,KAAKkuB,eAAeyE,gBAAgBZ,UAChDL,qBAAsB,gDAExB,GACJJ,QAASl0B,KAAK4O,QAAQkiB,eAAe8E,UACrC7+B,MAAOiJ,KAAK4C,KAAKiuB,gBAAgB8D,UACjCnV,OAAO,EACP6U,qBAAsB,sDACtBD,SAAUoB,GAGhB,GAAC,CAAAv4B,IAAA,oCAAAlG,MAED,WACE,OAAOiJ,KAAK4C,KAAKkuB,eAAe+E,uBAC5B71B,KAAK4O,QAAQkiB,eAAeiC,4BAA4BxmB,QAlN/B,aAkNiE,WAAF1W,OAAamK,KAAK4C,KAAKkuB,eAAe+E,uBAAsB,cACpJ,EACN,oFApKC1E,CAAA,CA/BwC,0xCCI3C,IAAMvW,EAAS5b,EAAAA,OAAAA,EAEF82B,EAA2B,CACtCpzB,GAAI,GACJivB,cAAe,GACfC,kBAAmB,GACnBC,mBAAoB,OACpB9uB,cAAe,CACbvH,KAAM,eACNu6B,SAAU,EACVjhC,MAAO,GACPkhC,iBAAkB,GAClBC,gBAAiB,GACjBzC,KAAM,IAERzB,YAAa,GACbN,iBAAkB,CAChBpmB,MAAO,GACP6mB,QAAS,GACTvrB,MAAO,IAETmqB,eAAgB,CACdnqB,MAAO,GACP+rB,UAAW,GACXE,eAAgB,IAElBK,eAAgB,CACdvpB,MAAO,GACPypB,QAAS,IAEXE,iBAAkB,aAClBE,YAAa,GACbrC,YAAa,IAmHTgF,EAAuB,SAACxsB,GAC5B,MAAO,qEAAP7T,OAD+C2H,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,IAAAA,UAAA,GAEgC,8DAAgE,GAAE,cAAA3H,OAC3I6T,EAAQ,mFAAH7T,OAAsF6T,EAAK,SAAU,GAAE,mBAGpH,EA2EMysB,EAA0B,SAACC,GAC/B,MAAO,4EAAPvgC,QAEgCsmB,EAAAA,EAAAA,GAAc,kBAAmBia,EAAIC,KAAMzb,GAAO,iPAAA/kB,OAIhEugC,EAAI1sB,MAAK,0DAAA7T,OAGfugC,EAAI3J,SAAQ,gCAG1B,82CCpSA,IAAM1tB,EAAeC,EAAQ,MAEvBs3B,EAAY,mBAEZC,EAAW,CACf3zB,KAAM,CAAC,EACPgM,QAAS,CAAC,GAOS4nB,EAAa,WAUhC,SAAAA,EAAa92B,GAAuB,IAAdE,EAAOpC,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,GAAAA,UAAA,GAAG,CAAC,+FAACuC,CAAA,KAAAy2B,GAChCx2B,KAAKN,QAAUA,EACfM,KAAKJ,QAAOhK,EAAAA,EAAA,GACP2gC,GACA32B,GAELI,KAAKC,OAAS,IAAIlB,EAGlBiB,KAAKN,QAAQ42B,GAAa,CACxBxnB,QAAS9O,KAAK8O,QAAQ/K,KAAK/D,MAC3By2B,gBAAiBz2B,KAAKy2B,gBAAgB1yB,KAAK/D,MAC3CC,OAAQD,KAAKC,QAGfD,KAAK02B,6BACL12B,KAAK22B,aACL32B,KAAK42B,aAEL52B,KAAKN,QAAQ42B,GAAWO,uBAAyB72B,KAAK62B,sBACxD,SAoEC,SApEAL,IAAA,EAAAv5B,IAAA,6BAAAlG,MAED,WACMiJ,KAAK62B,+BAA+B72B,KAAK62B,uBACzC72B,KAAKJ,QAAQgD,MAAQnM,OAAOsF,KAAKiE,KAAKJ,QAAQgD,MAAMxH,OAAS,IAC/D4E,KAAK62B,uBAAyB,IAAI1F,EAChCnxB,KAAKJ,QAAQgD,KACb,CACEF,GAAI1C,KAAKN,QAAQgD,GACjBkM,QAAS5O,KAAKJ,QAAQgP,UAI9B,GAAC,CAAA3R,IAAA,aAAAlG,MAED,WACE,IAAM+/B,GAAuBxlB,EAAAA,EAAAA,ID2BI,SAAC3b,EAAGiK,GAAY,IAAAm3B,EAAAC,EAAAC,EAAAC,EAAAC,EAGnD,IAFAxhC,EAACC,EAAAA,EAAAA,EAAA,GAAQkgC,GAA6BngC,GAAMiK,IAEtCw3B,QAAS,MAAO,YAAPvhC,OAAmBF,EAAE+M,GAAE,qCAGtC,IAkL2B8wB,EAtCGP,EAAgBvwB,EAAI20B,EA1Bb7yB,EA8CMuwB,EA1CPtD,EAtH9B6F,EAAoB3hC,EAAEu7B,YAAcv7B,EAAEu7B,YAAYn7B,KAAI,SAAAqgC,GAAG,MAAK,CAAEjgC,KAAMigC,EAAK,IAAK,KAGhFmB,EAAmB5hC,EAAEo8B,YAAYh8B,KAAI,SAAA4N,GAGzC,MAFkB,yBAAdA,EAAKqO,OAAiCrO,EAAKqO,KAAO,sBACpC,wBAAdrO,EAAKqO,OAAgCrO,EAAKqO,KAAO,mBAC9CrO,CACT,IAUA,OAPAhO,EAAEoN,cAAcjO,MAAQa,EAAEoN,cAAcjO,OAASa,EAAEoN,cAAckzB,gBAC7DtgC,EAAEoN,cAAckzB,gBACf1pB,QAAQ,MAAO,OACfA,QAAQ,MAAO,OACf1W,OAAO,yBACR,KAEG,cAAPA,OACSF,EAAE+M,GAAE,6GAAA7M,OAC+DF,EAAEg8B,cAAa,aAAA97B,OACzFF,EAAEi8B,kBAAiB,8DAAA/7B,OAC+CF,EAAEk8B,mBAAkB,YAAAh8B,OACpEF,EAAEk8B,mBAAkB,cAAAh8B,OAAaF,EAAEk8B,mBAAkB,WACjE,GAAE,+DAAAh8B,OAC6CF,EAAEi8B,kBAAiB,oBAEpE,GAAE,2JAAA/7B,OAKAF,EAAEoN,cAAcjO,MAAK,uFAAAe,OACgEF,EAAEoN,cAAcjO,MAAK,qDAC5G,GAAE,cAAAe,QAEA2hC,EAAAA,EAAAA,GAAmB,CACvB7wB,MAAO4wB,EACP9hC,aAAc,4BACd,0BAAAI,QAgFgC47B,EA9ED97B,EAAE87B,iBAgFhCA,EAAiB9qB,OAAU8qB,EAAiB9qB,MAAMvL,OAEhD,gDAAPvF,OACA47B,EAAiBpmB,OACX+P,EAAAA,EAAAA,GAAc,CACdjlB,KAAMs7B,EAAiBpmB,MAAMosB,cAC7BhiC,aAAc,iDAEd,GAAE,MAAAI,OAER47B,EAAiBS,QAAO,yDAAAr8B,OACuC47B,EAAiBS,QAAO,YACjF,GAAE,oDAAAr8B,QAGN2hC,EAAAA,EAAAA,GAAmB,CAAE7wB,MAAO8qB,EAAiB9qB,QAAQ,qBAfe,IAhFhB,8IAAA9Q,OAI9CqgC,EAAqC,QAAjBa,EAACphC,EAAEm7B,sBAAc,IAAAiG,OAAA,EAAhBA,EAAkBnW,YAAW,cAAA/qB,QAClD6hC,EAAAA,EAAAA,GAAuB,CAAE/wB,MAAOhR,EAAEm7B,eAAenqB,QAAQ,gBAAA9Q,QAEzB,QAAhCmhC,EAAArhC,EAAEm7B,eAAesB,uBAAe,IAAA4E,OAAA,EAAhCA,EAAkC57B,QAAS,IAAiD,QAA5C67B,EAAAthC,EAAEm7B,eAAewB,mCAA2B,IAAA2E,OAAA,EAA5CA,EAA8C77B,QAAS,EAAC,GAAAvF,OACnGqgC,EAAqC,QAAjBgB,EAACvhC,EAAEm7B,sBAAc,IAAAoG,OAAA,EAAhBA,EAAkBpE,sBAAsB,GAAK,mBAAAj9B,QAClE6hC,EAAAA,EAAAA,GAAuB,CAAE/wB,MAAOhR,EAAEm7B,eAAesB,gBAAiB38B,aAAc,sDAAsD,mBAAAI,QA+GxGk/B,EA9GMp/B,EAAEm7B,eAAewB,4BAgHxC,KAD1ByC,EAAaA,GAAc,IACZ35B,OACN,GAIF,+DAAPvF,OACMk/B,EAAWh/B,KAAI,SAAAk/B,GAAS,OAAIA,EAAUz5B,MAAQy5B,EAAUzwB,YAAW,2EAAA3O,OAE3Do/B,EAAUz5B,KAAO,gEAAH3F,OAAmEo/B,EAAUz5B,KAAI,UAAW,GAAE,oBAAA3F,OAC5Go/B,EAAUzwB,YAAc,uEAAH3O,OAA0Eo/B,EAAUzwB,YAAW,UAAW,GAAE,wBAEvI,EAAE,IACJpO,KAAK,IAAG,iBA5HgF,mBAAAP,QAgEzD2O,EA/DsB,QAAjB2yB,EAACxhC,EAAEm7B,sBAAc,IAAAqG,OAAA,EAAhBA,EAAkBpE,4BAgEtD,GAAPl9B,OAAU2O,EAAc,wEAAH3O,OAA2E2O,EAAW,UAAW,MA/D5G,GAAE,gBAAA3O,QAGJ6hC,EAAAA,EAAAA,GAAuB,CAAE/wB,MAAOhR,EAAEm7B,eAAe0B,aAAa,kFAAA38B,QAqFxCo9B,EAlFGt9B,EAAEs9B,eAkFWvwB,EAlFK/M,EAAE+M,GAkFH20B,EAlFO1hC,EAAE0hC,wBAoFtDpE,EAAeE,SAAYF,EAAeE,QAAQ/3B,OAEhD,oIAAPvF,OAC2E6M,EAAE,gHAAA7M,OAChBo9B,EAAevpB,MAAK,uJAAA7T,OACyD6M,EAAE,wIAAA7M,QAI5I+lB,EAAAA,EAAAA,GAAiB,CACflZ,GAAI,GAAF7M,OAAK6M,EAAE,cACTjN,aAAc,qCACdqmB,KAAMmX,EAAeE,QAAQp9B,KAAI,SAAC4hC,GAAW,YAAA9hC,OAAW8hC,EAAW,WAAQvhC,KAAK,IAChF4c,QAASqkB,IACT,YAdoE,IApFa,oEAAAxhC,QAEvEmU,EAAAA,EAAAA,GAAY,CACpB7T,KAAMR,EAAE09B,iBACRppB,QAAS,OACTgN,OAAO,EACPxhB,aAAc,oCACd,kCAAAI,OAEMF,EAAEm7B,eAAe8B,eAAc,6FAAA/8B,QAEzB+hC,EAAAA,EAAAA,GAAuB,CACvBzlB,KAAMxc,EAAEm7B,eAAe8B,eACvBiF,UAAW,UACXC,UAAU,IACV,0BAEJ,GAAE,gBAAAjiC,OAEJF,EAAEm7B,eAAe4B,UAAS,+FAAA78B,QAEpB+hC,EAAAA,EAAAA,GAAuB,CACvBzlB,KAAM,GAAFtc,OAAKF,EAAEm7B,eAAe6B,cAAgB,+BAAH98B,OAAkCF,EAAEm7B,eAAe6B,cAAa,aAAc,GAAE,KAAA98B,OAAIF,EAAEm7B,eAAe4B,WAC5ImF,UAAW,OACXC,UAAU,IACV,0BAEJ,GAAE,gBAAAjiC,QA6Fa29B,EA3FG79B,EAAE49B,YA6F3BC,GAASA,EAAKp4B,OAEZ,iDAAPvF,OACA29B,EAAKp3B,MAAM,EAAG,GAAGrG,KAAI,SAACqgC,GAAG,OAAKD,EAAwBC,EAAI,IAAEhgC,KAAK,IAAG,YAHlC,IA7FU,0DAAAP,OAK5CyhC,EAAiB,0DAAAzhC,QAEf2hC,EAAAA,EAAAA,GAAmB,CACf7wB,MAAO2wB,EACPtlB,KAAM,YACN/H,QAAS,SACTxU,aAAc,wBACd,cAEA,GAAE,aAGV,CCxIMsiC,CACE/3B,KAAK62B,uBACD72B,KAAK62B,uBAAuBmB,gCAC5B,CAAEt1B,GAAI1C,KAAKN,QAAQgD,GAAI00B,SAAS,GACpC,CACEC,wBAAyBr3B,KAAKJ,QAAQy3B,4BAI5Ctf,EAAAA,EAAAA,IAAiB+e,EAAsB92B,KAAKN,QAAS,CACnDsY,OAAO,EACP1X,YAAY,IAGdN,KAAKi4B,aAAej4B,KAAKN,QAAQc,cAAc,oCAC/C03B,EAAAA,QAAIC,0BAA0Bn4B,KAAKN,SACnCsH,EAAAA,EAAUC,8BAA8BjH,KAAKN,QAC/C,GAAC,CAAAzC,IAAA,aAAAlG,MAED,WACEiJ,KAAKo4B,wBAA0Bp4B,KAAKo4B,yBAA2Bp4B,KAAKq4B,yBAAyBt0B,KAAK/D,MAC9FA,KAAKi4B,cAAcj4B,KAAKi4B,aAAa5lB,iBAAiB,QAASrS,KAAKo4B,wBAC1E,GAAC,CAAAn7B,IAAA,eAAAlG,MAED,WACMiJ,KAAKi4B,cAAcj4B,KAAKi4B,aAAa/kB,oBAAoB,QAASlT,KAAKo4B,wBAC7E,GAAC,CAAAn7B,IAAA,kBAAAlG,MAED,WAA8C,IAA7BuhC,EAAmB96B,UAAApC,OAAA,QAAAuC,IAAAH,UAAA,IAAAA,UAAA,GAC9BwC,KAAKi4B,cAAgBj4B,KAAKi4B,aAAa,UAAUj4B,KAAKi4B,aAAa,SAASvf,QAAQ,UAAW4f,EACrG,GAEA,CAAAr7B,IAAA,2BAAAlG,MAGA,WACEiJ,KAAKC,OAAOqG,KAAK,SAAUtG,KAAKJ,QAAQgD,KAC1C,GAEA,CAAA3F,IAAA,UAAAlG,MAKA,SAAS6L,GACP5C,KAAKJ,QAAQgD,KAAOA,EACpB5C,KAAKu4B,eACLv4B,KAAK02B,6BACL12B,KAAK22B,aACL32B,KAAK42B,aACL52B,KAAKC,OAAOqG,KAAK,UACnB,2EAACkwB,CAAA,CAlG+B,qCCf3B,IAAMgC,EAAoB,CAC/BC,0BAA2B,glBCJ7BpiC,EAAA,kBAAAC,CAAA,MAAAC,EAAAD,EAAA,GAAAE,EAAAC,OAAAC,UAAAC,EAAAH,EAAAI,eAAAC,EAAAJ,OAAAK,gBAAA,SAAAP,EAAAD,EAAAE,GAAAD,EAAAD,GAAAE,EAAAO,KAAA,EAAAC,EAAA,mBAAAC,OAAAA,OAAA,GAAAC,EAAAF,EAAAG,UAAA,aAAAC,EAAAJ,EAAAK,eAAA,kBAAAC,EAAAN,EAAAO,aAAA,yBAAAC,EAAAjB,EAAAD,EAAAE,GAAA,OAAAC,OAAAK,eAAAP,EAAAD,EAAA,CAAAS,MAAAP,EAAAiB,YAAA,EAAAC,cAAA,EAAAC,UAAA,IAAApB,EAAAD,EAAA,KAAAkB,EAAA,aAAAjB,GAAAiB,EAAA,SAAAjB,EAAAD,EAAAE,GAAA,OAAAD,EAAAD,GAAAE,CAAA,WAAAoB,EAAArB,EAAAD,EAAAE,EAAAG,GAAA,IAAAK,EAAAV,GAAAA,EAAAI,qBAAAmB,EAAAvB,EAAAuB,EAAAX,EAAAT,OAAAqB,OAAAd,EAAAN,WAAAU,EAAA,IAAAW,EAAApB,GAAA,WAAAE,EAAAK,EAAA,WAAAH,MAAAiB,EAAAzB,EAAAC,EAAAY,KAAAF,CAAA,UAAAe,EAAA1B,EAAAD,EAAAE,GAAA,WAAA0B,KAAA,SAAAC,IAAA5B,EAAA6B,KAAA9B,EAAAE,GAAA,OAAAD,GAAA,OAAA2B,KAAA,QAAAC,IAAA5B,EAAA,EAAAD,EAAAsB,KAAAA,EAAA,IAAAS,EAAA,iBAAAC,EAAA,iBAAAC,EAAA,YAAAC,EAAA,YAAAC,EAAA,YAAAZ,IAAA,UAAAa,IAAA,UAAAC,IAAA,KAAAC,EAAA,GAAApB,EAAAoB,EAAA1B,GAAA,8BAAAvB,EAAAc,OAAAoC,eAAAC,EAAAnD,GAAAA,EAAAA,EAAAoD,EAAA,MAAAD,GAAAA,IAAAtC,GAAAG,EAAAyB,KAAAU,EAAA5B,KAAA0B,EAAAE,GAAA,IAAAE,EAAAL,EAAAjC,UAAAmB,EAAAnB,UAAAD,OAAAqB,OAAAc,GAAA,SAAAK,EAAA1C,GAAA,0BAAA2C,SAAA,SAAA5C,GAAAkB,EAAAjB,EAAAD,GAAA,SAAAC,GAAA,YAAA4C,QAAA7C,EAAAC,EAAA,gBAAA6C,EAAA7C,EAAAD,GAAA,SAAA+C,EAAA7C,EAAAK,EAAAG,EAAAE,GAAA,IAAAE,EAAAa,EAAA1B,EAAAC,GAAAD,EAAAM,GAAA,aAAAO,EAAAc,KAAA,KAAAZ,EAAAF,EAAAe,IAAAE,EAAAf,EAAAP,MAAA,OAAAsB,GAAA,UAAAiB,EAAAjB,IAAA1B,EAAAyB,KAAAC,EAAA,WAAA/B,EAAAiD,QAAAlB,EAAAmB,SAAAC,MAAA,SAAAlD,GAAA8C,EAAA,OAAA9C,EAAAS,EAAAE,EAAA,aAAAX,GAAA8C,EAAA,QAAA9C,EAAAS,EAAAE,EAAA,IAAAZ,EAAAiD,QAAAlB,GAAAoB,MAAA,SAAAlD,GAAAe,EAAAP,MAAAR,EAAAS,EAAAM,EAAA,aAAAf,GAAA,OAAA8C,EAAA,QAAA9C,EAAAS,EAAAE,EAAA,IAAAA,EAAAE,EAAAe,IAAA,KAAA3B,EAAAK,EAAA,gBAAAE,MAAA,SAAAR,EAAAI,GAAA,SAAA+C,IAAA,WAAApD,GAAA,SAAAA,EAAAE,GAAA6C,EAAA9C,EAAAI,EAAAL,EAAAE,EAAA,WAAAA,EAAAA,EAAAA,EAAAiD,KAAAC,EAAAA,GAAAA,GAAA,aAAA1B,EAAA1B,EAAAE,EAAAG,GAAA,IAAAE,EAAAwB,EAAA,gBAAArB,EAAAE,GAAA,GAAAL,IAAA0B,EAAA,UAAAoB,MAAA,mCAAA9C,IAAA2B,EAAA,cAAAxB,EAAA,MAAAE,EAAA,OAAAH,MAAAR,EAAAqD,MAAA,OAAAjD,EAAAkD,OAAA7C,EAAAL,EAAAwB,IAAAjB,IAAA,KAAAE,EAAAT,EAAAmD,SAAA,GAAA1C,EAAA,KAAAE,EAAAyC,EAAA3C,EAAAT,GAAA,GAAAW,EAAA,IAAAA,IAAAmB,EAAA,gBAAAnB,CAAA,cAAAX,EAAAkD,OAAAlD,EAAAqD,KAAArD,EAAAsD,MAAAtD,EAAAwB,SAAA,aAAAxB,EAAAkD,OAAA,IAAAhD,IAAAwB,EAAA,MAAAxB,EAAA2B,EAAA7B,EAAAwB,IAAAxB,EAAAuD,kBAAAvD,EAAAwB,IAAA,gBAAAxB,EAAAkD,QAAAlD,EAAAwD,OAAA,SAAAxD,EAAAwB,KAAAtB,EAAA0B,EAAA,IAAAK,EAAAX,EAAA3B,EAAAE,EAAAG,GAAA,cAAAiC,EAAAV,KAAA,IAAArB,EAAAF,EAAAiD,KAAApB,EAAAF,EAAAM,EAAAT,MAAAM,EAAA,gBAAA1B,MAAA6B,EAAAT,IAAAyB,KAAAjD,EAAAiD,KAAA,WAAAhB,EAAAV,OAAArB,EAAA2B,EAAA7B,EAAAkD,OAAA,QAAAlD,EAAAwB,IAAAS,EAAAT,IAAA,YAAA4B,EAAAzD,EAAAE,GAAA,IAAAG,EAAAH,EAAAqD,OAAAhD,EAAAP,EAAAa,SAAAR,GAAA,GAAAE,IAAAN,EAAA,OAAAC,EAAAsD,SAAA,eAAAnD,GAAAL,EAAAa,SAAAiD,SAAA5D,EAAAqD,OAAA,SAAArD,EAAA2B,IAAA5B,EAAAwD,EAAAzD,EAAAE,GAAA,UAAAA,EAAAqD,SAAA,WAAAlD,IAAAH,EAAAqD,OAAA,QAAArD,EAAA2B,IAAA,IAAAkC,UAAA,oCAAA1D,EAAA,aAAA8B,EAAA,IAAAzB,EAAAiB,EAAApB,EAAAP,EAAAa,SAAAX,EAAA2B,KAAA,aAAAnB,EAAAkB,KAAA,OAAA1B,EAAAqD,OAAA,QAAArD,EAAA2B,IAAAnB,EAAAmB,IAAA3B,EAAAsD,SAAA,KAAArB,EAAA,IAAAvB,EAAAF,EAAAmB,IAAA,OAAAjB,EAAAA,EAAA0C,MAAApD,EAAAF,EAAAgE,YAAApD,EAAAH,MAAAP,EAAA+D,KAAAjE,EAAAkE,QAAA,WAAAhE,EAAAqD,SAAArD,EAAAqD,OAAA,OAAArD,EAAA2B,IAAA5B,GAAAC,EAAAsD,SAAA,KAAArB,GAAAvB,GAAAV,EAAAqD,OAAA,QAAArD,EAAA2B,IAAA,IAAAkC,UAAA,oCAAA7D,EAAAsD,SAAA,KAAArB,EAAA,UAAAgC,EAAAlE,GAAA,IAAAD,EAAA,CAAAoE,OAAAnE,EAAA,SAAAA,IAAAD,EAAAqE,SAAApE,EAAA,SAAAA,IAAAD,EAAAsE,WAAArE,EAAA,GAAAD,EAAAuE,SAAAtE,EAAA,SAAAuE,WAAAC,KAAAzE,EAAA,UAAA0E,EAAAzE,GAAA,IAAAD,EAAAC,EAAA0E,YAAA,GAAA3E,EAAA4B,KAAA,gBAAA5B,EAAA6B,IAAA5B,EAAA0E,WAAA3E,CAAA,UAAAyB,EAAAxB,GAAA,KAAAuE,WAAA,EAAAJ,OAAA,SAAAnE,EAAA2C,QAAAuB,EAAA,WAAAS,OAAA,YAAAnC,EAAAzC,GAAA,GAAAA,GAAA,KAAAA,EAAA,KAAAE,EAAAF,EAAAY,GAAA,GAAAV,EAAA,OAAAA,EAAA4B,KAAA9B,GAAA,sBAAAA,EAAAiE,KAAA,OAAAjE,EAAA,IAAA6E,MAAA7E,EAAA8E,QAAA,KAAAvE,GAAA,EAAAG,EAAA,SAAAuD,IAAA,OAAA1D,EAAAP,EAAA8E,QAAA,GAAAzE,EAAAyB,KAAA9B,EAAAO,GAAA,OAAA0D,EAAAxD,MAAAT,EAAAO,GAAA0D,EAAAX,MAAA,EAAAW,EAAA,OAAAA,EAAAxD,MAAAR,EAAAgE,EAAAX,MAAA,EAAAW,CAAA,SAAAvD,EAAAuD,KAAAvD,CAAA,YAAAqD,UAAAf,EAAAhD,GAAA,2BAAAoC,EAAAhC,UAAAiC,EAAA9B,EAAAmC,EAAA,eAAAjC,MAAA4B,EAAAjB,cAAA,IAAAb,EAAA8B,EAAA,eAAA5B,MAAA2B,EAAAhB,cAAA,IAAAgB,EAAA2C,YAAA7D,EAAAmB,EAAArB,EAAA,qBAAAhB,EAAAgF,oBAAA,SAAA/E,GAAA,IAAAD,EAAA,mBAAAC,GAAAA,EAAAgF,YAAA,QAAAjF,IAAAA,IAAAoC,GAAA,uBAAApC,EAAA+E,aAAA/E,EAAAkF,MAAA,EAAAlF,EAAAmF,KAAA,SAAAlF,GAAA,OAAAE,OAAAiF,eAAAjF,OAAAiF,eAAAnF,EAAAoC,IAAApC,EAAAoF,UAAAhD,EAAAnB,EAAAjB,EAAAe,EAAA,sBAAAf,EAAAG,UAAAD,OAAAqB,OAAAkB,GAAAzC,CAAA,EAAAD,EAAAsF,MAAA,SAAArF,GAAA,OAAAiD,QAAAjD,EAAA,EAAA0C,EAAAG,EAAA1C,WAAAc,EAAA4B,EAAA1C,UAAAU,GAAA,0BAAAd,EAAA8C,cAAAA,EAAA9C,EAAAuF,MAAA,SAAAtF,EAAAC,EAAAG,EAAAE,EAAAG,QAAA,IAAAA,IAAAA,EAAA8E,SAAA,IAAA5E,EAAA,IAAAkC,EAAAxB,EAAArB,EAAAC,EAAAG,EAAAE,GAAAG,GAAA,OAAAV,EAAAgF,oBAAA9E,GAAAU,EAAAA,EAAAqD,OAAAd,MAAA,SAAAlD,GAAA,OAAAA,EAAAqD,KAAArD,EAAAQ,MAAAG,EAAAqD,MAAA,KAAAtB,EAAAD,GAAAxB,EAAAwB,EAAA1B,EAAA,aAAAE,EAAAwB,EAAA9B,GAAA,0BAAAM,EAAAwB,EAAA,qDAAA1C,EAAAyF,KAAA,SAAAxF,GAAA,IAAAD,EAAAG,OAAAF,GAAAC,EAAA,WAAAG,KAAAL,EAAAE,EAAAuE,KAAApE,GAAA,OAAAH,EAAAwF,UAAA,SAAAzB,IAAA,KAAA/D,EAAA4E,QAAA,KAAA7E,EAAAC,EAAAyF,MAAA,GAAA1F,KAAAD,EAAA,OAAAiE,EAAAxD,MAAAR,EAAAgE,EAAAX,MAAA,EAAAW,CAAA,QAAAA,EAAAX,MAAA,EAAAW,CAAA,GAAAjE,EAAAyC,OAAAA,EAAAhB,EAAArB,UAAA,CAAA6E,YAAAxD,EAAAmD,MAAA,SAAA5E,GAAA,QAAA4F,KAAA,OAAA3B,KAAA,OAAAP,KAAA,KAAAC,MAAA1D,EAAA,KAAAqD,MAAA,OAAAE,SAAA,UAAAD,OAAA,YAAA1B,IAAA5B,EAAA,KAAAuE,WAAA5B,QAAA8B,IAAA1E,EAAA,QAAAE,KAAA,WAAAA,EAAA2F,OAAA,IAAAxF,EAAAyB,KAAA,KAAA5B,KAAA2E,OAAA3E,EAAA4F,MAAA,WAAA5F,GAAAD,EAAA,EAAA8F,KAAA,gBAAAzC,MAAA,MAAArD,EAAA,KAAAuE,WAAA,GAAAG,WAAA,aAAA1E,EAAA2B,KAAA,MAAA3B,EAAA4B,IAAA,YAAAmE,IAAA,EAAApC,kBAAA,SAAA5D,GAAA,QAAAsD,KAAA,MAAAtD,EAAA,IAAAE,EAAA,cAAA+F,EAAA5F,EAAAE,GAAA,OAAAK,EAAAgB,KAAA,QAAAhB,EAAAiB,IAAA7B,EAAAE,EAAA+D,KAAA5D,EAAAE,IAAAL,EAAAqD,OAAA,OAAArD,EAAA2B,IAAA5B,KAAAM,CAAA,SAAAA,EAAA,KAAAiE,WAAAM,OAAA,EAAAvE,GAAA,IAAAA,EAAA,KAAAG,EAAA,KAAA8D,WAAAjE,GAAAK,EAAAF,EAAAiE,WAAA,YAAAjE,EAAA0D,OAAA,OAAA6B,EAAA,UAAAvF,EAAA0D,QAAA,KAAAwB,KAAA,KAAA9E,EAAAT,EAAAyB,KAAApB,EAAA,YAAAM,EAAAX,EAAAyB,KAAApB,EAAA,iBAAAI,GAAAE,EAAA,SAAA4E,KAAAlF,EAAA2D,SAAA,OAAA4B,EAAAvF,EAAA2D,UAAA,WAAAuB,KAAAlF,EAAA4D,WAAA,OAAA2B,EAAAvF,EAAA4D,WAAA,SAAAxD,GAAA,QAAA8E,KAAAlF,EAAA2D,SAAA,OAAA4B,EAAAvF,EAAA2D,UAAA,YAAArD,EAAA,UAAAqC,MAAA,kDAAAuC,KAAAlF,EAAA4D,WAAA,OAAA2B,EAAAvF,EAAA4D,WAAA,KAAAT,OAAA,SAAA5D,EAAAD,GAAA,QAAAE,EAAA,KAAAsE,WAAAM,OAAA,EAAA5E,GAAA,IAAAA,EAAA,KAAAK,EAAA,KAAAiE,WAAAtE,GAAA,GAAAK,EAAA6D,QAAA,KAAAwB,MAAAvF,EAAAyB,KAAAvB,EAAA,oBAAAqF,KAAArF,EAAA+D,WAAA,KAAA5D,EAAAH,EAAA,OAAAG,IAAA,UAAAT,GAAA,aAAAA,IAAAS,EAAA0D,QAAApE,GAAAA,GAAAU,EAAA4D,aAAA5D,EAAA,UAAAE,EAAAF,EAAAA,EAAAiE,WAAA,UAAA/D,EAAAgB,KAAA3B,EAAAW,EAAAiB,IAAA7B,EAAAU,GAAA,KAAA6C,OAAA,YAAAU,KAAAvD,EAAA4D,WAAAnC,GAAA,KAAA+D,SAAAtF,EAAA,EAAAsF,SAAA,SAAAjG,EAAAD,GAAA,aAAAC,EAAA2B,KAAA,MAAA3B,EAAA4B,IAAA,gBAAA5B,EAAA2B,MAAA,aAAA3B,EAAA2B,KAAA,KAAAqC,KAAAhE,EAAA4B,IAAA,WAAA5B,EAAA2B,MAAA,KAAAoE,KAAA,KAAAnE,IAAA5B,EAAA4B,IAAA,KAAA0B,OAAA,cAAAU,KAAA,kBAAAhE,EAAA2B,MAAA5B,IAAA,KAAAiE,KAAAjE,GAAAmC,CAAA,EAAAgE,OAAA,SAAAlG,GAAA,QAAAD,EAAA,KAAAwE,WAAAM,OAAA,EAAA9E,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAsE,WAAAxE,GAAA,GAAAE,EAAAoE,aAAArE,EAAA,YAAAiG,SAAAhG,EAAAyE,WAAAzE,EAAAqE,UAAAG,EAAAxE,GAAAiC,CAAA,GAAAiE,MAAA,SAAAnG,GAAA,QAAAD,EAAA,KAAAwE,WAAAM,OAAA,EAAA9E,GAAA,IAAAA,EAAA,KAAAE,EAAA,KAAAsE,WAAAxE,GAAA,GAAAE,EAAAkE,SAAAnE,EAAA,KAAAI,EAAAH,EAAAyE,WAAA,aAAAtE,EAAAuB,KAAA,KAAArB,EAAAF,EAAAwB,IAAA6C,EAAAxE,EAAA,QAAAK,CAAA,YAAA8C,MAAA,0BAAAgD,cAAA,SAAArG,EAAAE,EAAAG,GAAA,YAAAmD,SAAA,CAAA3C,SAAA4B,EAAAzC,GAAAgE,WAAA9D,EAAAgE,QAAA7D,GAAA,cAAAkD,SAAA,KAAA1B,IAAA5B,GAAAkC,CAAA,GAAAnC,CAAA,UAAAsG,EAAAC,EAAAtD,EAAAuD,EAAAC,EAAAC,EAAAC,EAAA9E,GAAA,QAAA+E,EAAAL,EAAAI,GAAA9E,GAAApB,EAAAmG,EAAAnG,KAAA,OAAAoG,GAAA,YAAAL,EAAAK,EAAA,CAAAD,EAAAtD,KAAAL,EAAAxC,GAAA+E,QAAAvC,QAAAxC,GAAA0C,KAAAsD,EAAAC,EAAA,UAAAI,EAAAC,GAAA,sBAAAC,EAAA,KAAAC,EAAAC,UAAA,WAAA1B,SAAA,SAAAvC,EAAAuD,GAAA,IAAAD,EAAAQ,EAAAI,MAAAH,EAAAC,GAAA,SAAAR,EAAAhG,GAAA6F,EAAAC,EAAAtD,EAAAuD,EAAAC,EAAAC,EAAA,OAAAjG,EAAA,UAAAiG,EAAAU,GAAAd,EAAAC,EAAAtD,EAAAuD,EAAAC,EAAAC,EAAA,QAAAU,EAAA,CAAAX,OAAAY,EAAA,cAAA+6B,EAAAC,EAAAC,IAAA,MAAAA,GAAAA,EAAAD,EAAAv9B,UAAAw9B,EAAAD,EAAAv9B,QAAA,QAAApE,EAAA,EAAA6hC,EAAA,IAAA5yB,MAAA2yB,GAAA5hC,EAAA4hC,EAAA5hC,IAAA6hC,EAAA7hC,GAAA2hC,EAAA3hC,GAAA,OAAA6hC,CAAA,UAAAz6B,EAAAC,EAAAC,GAAA,QAAAtH,EAAA,EAAAA,EAAAsH,EAAAlD,OAAApE,IAAA,KAAAuH,EAAAD,EAAAtH,GAAAuH,EAAA9G,WAAA8G,EAAA9G,aAAA,EAAA8G,EAAA7G,cAAA,YAAA6G,IAAAA,EAAA5G,UAAA,GAAAlB,OAAAK,eAAAuH,QAAApB,IAAA,SAAAuB,EAAAC,GAAA,cAAAnF,EAAAkF,IAAA,OAAAA,EAAA,OAAAA,EAAA,IAAAE,EAAAF,EAAAvH,OAAA0H,aAAA,QAAAhB,IAAAe,EAAA,KAAAE,EAAAF,EAAAtG,KAAAoG,EAAAC,UAAA,cAAAnF,EAAAsF,GAAA,OAAAA,EAAA,UAAAvE,UAAA,uDAAAwE,OAAAL,EAAA,CAAAM,CAAAP,EAAAtB,KAAA,WAAA3D,EAAA2D,GAAAA,EAAA4B,OAAA5B,IAAAsB,EAAA,KAAAtB,CAAA,CAIA,IAAMmZ,EAAa,mBAEbC,EAAiB,CACrByiB,KAAM,+BACNC,YAAa,SAAFljC,OAAWugB,EAAU,kBAChC4iB,WAAY,SAAFnjC,OAAWugB,EAAU,kBAC/B6iB,cAAe,SAAFpjC,OAAWugB,EAAU,sBAG9B8iB,EAIS,+BAJTA,EAKO,6BAIbl6B,EAAQ,OACRA,EAAQ,OACR,IAAMD,EAAeC,EAAQ,MAERm6B,EAAa,SAAAC,EAAAC,EAAAC,GAQhC,SAAAH,EAAaz5B,IAlCf,SAAAG,EAAAC,GAAA,KAAAD,aAAAC,GAAA,UAAAzF,UAAA,qCAkCwB0F,CAAA,KAAAo5B,GACfz5B,IACLM,KAAKN,QAAUA,EACfM,KAAKC,OAAS,IAAIlB,EAClBiB,KAAKu5B,YAAcv5B,KAAKN,QAAQ85B,QAA8B,0BAC9Dx5B,KAAKy5B,aAAez5B,KAAKN,QAAQ85B,QAA+B,2BAGhEx5B,KAAKN,QAAQ0W,GAAc,CACzB1W,QAASM,KAAKN,SAGhBM,KAAK05B,gBAELx5B,EAAAA,EAAiBC,qBAAqBiW,EAAYpW,KAAKC,OAAQ,CAAEI,MAAO+V,IAC1E,CAjDF,IAAAtW,EAAAgC,EA6JG,OA7JHhC,EAiDGq5B,EAjDHr3B,EAiDG,EAAA7E,IAAA,gBAAAlG,MAED,WAAiB,IAnDnB4hC,EAmDmBh5B,EAAA,KACfK,KAAK84B,KAAO94B,KAAKN,QAAQc,cAAc6V,EAAeyiB,MAElD94B,KAAK84B,OACP94B,KAAK25B,QAAU35B,KAAK84B,KAAK,WAG3B94B,KAAKg5B,WAAah5B,KAAKN,QAAQc,cAAc6V,EAAe2iB,YAExDh5B,KAAKg5B,aACPh5B,KAAK45B,cAAgB55B,KAAKg5B,WAAW,cAGvCh5B,KAAK65B,qBAAuB75B,KAAKN,QAAQc,cAAc6V,EAAe4iB,eACtEj5B,KAAK+4B,YAjET,SAAAJ,GAAA,GAAA1yB,MAAAC,QAAAyyB,GAAA,OAAAD,EAAAC,EAAA,CAAAmB,CAAAnB,EAiE2B34B,KAAKN,QAAQgU,iBAAiB2C,EAAe0iB,eAjExE,SAAAgB,GAAA,uBAAA9iC,QAAA,MAAA8iC,EAAA9iC,OAAAE,WAAA,MAAA4iC,EAAA,qBAAA9zB,MAAA+zB,KAAAD,EAAA,CAAAE,CAAAtB,IAAA,SAAA9hC,EAAAqjC,GAAA,GAAArjC,EAAA,qBAAAA,EAAA,OAAA6hC,EAAA7hC,EAAAqjC,GAAA,IAAAvjC,EAAAF,OAAAC,UAAAyjC,SAAA/hC,KAAAvB,GAAAuF,MAAA,uBAAAzF,GAAAE,EAAA0E,cAAA5E,EAAAE,EAAA0E,YAAAC,MAAA,QAAA7E,GAAA,QAAAA,EAAAsP,MAAA+zB,KAAAnjC,GAAA,cAAAF,GAAA,2CAAAyjC,KAAAzjC,GAAA+hC,EAAA7hC,EAAAqjC,QAAA,GAAAG,CAAA1B,IAAA,qBAAAt+B,UAAA,wIAAAigC,GAmEQt6B,KAAK+4B,aACP/4B,KAAK+4B,YAAY7/B,SAAQ,SAAAwU,GACvBA,EAAO2E,iBAAiB,SAAS,SAACC,GAAE,OAAK3S,EAAK46B,iBAAiBjoB,EAAG,GACpE,GAEJ,GAAC,CAAArV,IAAA,mBAAAlG,MAAA,SAAAqL,GAAA,OAAAg3B,EAAAA,GAAAh8B,EAAA/G,IAAAoF,MAED,SAAAsG,EAAwBuQ,GAAE,OAAAjc,IAAAuB,MAAA,SAAAqK,GAAA,cAAAA,EAAA/F,KAAA+F,EAAA1H,MAAA,OAKgD,GAJxE+X,EAAGkoB,iBAAgBv4B,EAAA/F,KAAA,EAGjB8D,KAAKy6B,aAAY,GACjBz6B,KAAK65B,qBAAqBvrB,UAAU2E,OAAOimB,IAEvCl5B,KAAK06B,yBAA0B16B,KAAK25B,QAAQgB,WAAU,CAAA14B,EAAA1H,KAAA,eAAA0H,EAAA1H,KAAA,EAClDyF,KAAK46B,iCAAgC,OAAA34B,EAAA1H,KAAA,gBAAA0H,EAAA/F,KAAA,EAAA+F,EAAA44B,GAAA54B,EAAA,SAG7CmE,EAAQjJ,MAAK8E,EAAA44B,IACb76B,KAAKy6B,aAAY,GAAK,yBAAAx4B,EAAA5F,OAAA,GAAA0F,EAAA,mBAEzBtE,MAAA,KAAAD,UAAA,IAAAP,IAAA,iCAAAlG,MAAA,kBAAAsiC,EAAAA,GAAAj8B,EAAA/G,IAAAoF,MAED,SAAA4G,IAAA,IAAA2c,EAAA,OAAA3oB,IAAAuB,MAAA,SAAA4K,GAAA,cAAAA,EAAAtG,KAAAsG,EAAAjI,MAAA,OACQykB,EAAY,CAChBnlB,OAAQmG,KAAK25B,QAAQ9/B,OACrB3D,IAAK8J,KAAK25B,QAAQmB,QAGQ,QAAxB96B,KAAK25B,QAAQ9/B,SACfmlB,EAAU7M,KAAO,CACf4oB,MAAO/6B,KAAK06B,uBACZM,OAAQh7B,KAAKu5B,YACbE,aAAcz5B,KAAKy5B,eAInBza,EAAU9oB,KACZ8J,KAAKi7B,QAAQjc,EAAUnlB,OAAQmlB,EAAU9oB,IAAK8oB,EAAU7M,MACzD,wBAAA3P,EAAAnG,OAAA,GAAAgG,EAAA,WACF5E,MAAA,KAAAD,UAAA,GAED,CAAAP,IAAA,UAAAlG,MAAA,SAAA0Q,EAAAyzB,EAAAC,GAAA,OAAA7B,EAAAA,GAAAl8B,EAAA/G,IAAAoF,MAOA,SAAAiM,EAAe7N,EAAQ3D,EAAKic,GAAI,IAAAnQ,EAAA,OAAA3L,IAAAuB,MAAA,SAAAqQ,GAAA,cAAAA,EAAA/L,KAAA+L,EAAA1N,MAAA,cAAA0N,EAAA/L,KAAA,EAAA+L,EAAA1N,KAAA,GAEP6gC,EAAAA,EAAAA,GAAUllC,EAAK,CAClC2D,OAAAA,EACAsY,KAAAA,IACA,QAHInQ,EAAMiG,EAAAjO,MAKDqhC,SACTr7B,KAAKs7B,QAAUt5B,EAAOJ,SAElB5B,KAAKs7B,SACPt7B,KAAKu7B,4BAGPv7B,KAAKC,OAAOqG,KAAKk1B,EAAAA,GAAkBC,oCAAqC,CAAC,IAEzEz7B,KAAK07B,0BACN,OAEqB,OAFrBzzB,EAAA/L,KAAA,EAED8D,KAAKy6B,aAAY,GAAKxyB,EAAAxL,OAAA,2BAAAwL,EAAA5L,OAAA,GAAAqL,EAAA,sBAEzBjK,MAAA,KAAAD,UAAA,IAAAP,IAAA,cAAAlG,MAED,SAAa4kC,GACX11B,MAAM+zB,KAAKh6B,KAAK84B,MAAM5/B,SAAQ,SAAA0iC,GAAUA,EAAKC,UAAYF,CAAa,IAEtE37B,KAAK+4B,YAAY7/B,SAAQ,SAAA4iC,GAAG,OAAIA,EAAI,SAASC,YAAYJ,EAAa,GACxE,GAAC,CAAA1+B,IAAA,uBAAAlG,MAED,WACE,OAAOiJ,KAAK45B,cAAc9gB,QAAQ,SAASkjB,MAC7C,GAAC,CAAA/+B,IAAA,4BAAAlG,MAED,WACEiJ,KAAK65B,qBAAqBvrB,UAAU2E,OAAOimB,GAC3Cl5B,KAAK65B,qBAAqBvrB,UAAUwE,IAAIomB,EAC1C,GAAC,CAAAj8B,IAAA,0BAAAlG,MAED,WACEiJ,KAAK65B,qBAAqBvrB,UAAU2E,OAAOimB,GAC3Cl5B,KAAK65B,qBAAqBvrB,UAAUwE,IAAIomB,EAC1C,IA7JFp3B,GAAA1D,EAAA0B,EAAApJ,UAAAoL,GAAArL,OAAAK,eAAAgJ,EAAA,aAAAnI,UAAA,IA6JGwhC,CAAA,CAnI+B,IAsIlChwB,EAAAA,EAAAA,GAAegwB,EAAe/iB,okDC7J9B,IAAMrX,EAAeC,EAAQ,MAEvBC,EAAY,gBACZG,EACG,aAGY68B,EAAU,WAS7B,SAAAA,EAAav8B,EAASw8B,GAAa,IAAAv8B,EAAA,kGAAAI,CAAA,KAAAk8B,GACjCj8B,KAAKN,QAAUA,EACfM,KAAKC,OAAS,IAAIlB,EAElBiB,KAAKm8B,gBAAkB,CACrBz5B,GAAI,GAAF7M,OAAKmK,KAAKN,QAAQgD,GAAE,UACtBiE,MAAO,GACPsD,QAAS,YACTxU,aAAc,IAGhBuK,KAAKo8B,eAAeF,GAEpBl8B,KAAKq8B,UAAY,CACf,CAACr8B,KAAKN,QAAS,CAAEqU,MAAO,SAACzB,GAAE,OAAK3S,EAAK28B,cAAchqB,EAAG,KAExD/C,EAAAA,EAAgBC,aAAaxP,KAAKq8B,UAAWp9B,GAE7CiB,EAAAA,EAAiBC,qBAAqBlB,EAAWe,KAAKC,OAAMrK,EAAA,GACvDoK,KAAKN,QAAQU,aAAahB,IAAwB,CAAEiB,MAAOL,KAAKN,QAAQY,WAAWlB,GAAqBrI,QAE/G,SA2FC,SAzFDklC,KAAA,EAAAh/B,IAAA,iBAAAlG,MAUA,SAAgBmlC,GAAa,IAAAr5B,EAAA,KAO3B,OANA7C,KAAKk8B,YAAcA,EAEnBl8B,KAAKu8B,aAELv8B,KAAKk8B,YAAYj8B,OAAOY,GAAG,UAAU,kBAAMgC,EAAK05B,YAAY,IAErDv8B,IACT,GAEA,CAAA/C,IAAA,0BAAAlG,MAKA,SAAyBA,GAIvB,OAHAiJ,KAAKk8B,YACFM,eAAe,CAAEld,QAAQ,IACzBmd,kBAAkB,CAAC1lC,IACfiJ,IACT,GAEA,CAAA/C,IAAA,4BAAAlG,MAKA,WACE,OAAAnB,EAAAA,EAAA,GACKoK,KAAKm8B,iBAAe,IACvBx1B,MAAO3G,KAAKk8B,YAAYnjC,OAAO2jC,OAAO3mC,KAAI,SAAA4mC,GAAK,MAAK,CAClDxmC,KAAMwmC,EAAMxuB,aAAa,WACzByuB,OAAQD,EAAMxuB,aAAa,cAC3B7N,WAAY,CACV,aAAcq8B,EAAMxuB,aAAa,UAEpC,KAEL,GAEA,CAAAlR,IAAA,aAAAlG,MAGA,WACEiJ,KAAKN,QAAQmU,WAAYgpB,EAAAA,EAAAA,GAAgB78B,KAAK88B,6BAC9C,IAAMC,EAAe/8B,KAAKN,QAAQc,cAAc,mBAC5Cu8B,GAAcC,EAAAA,QAAMC,wBAAwBF,EAAc,CAAEG,YAAa,WAC/E,GAEA,CAAAjgC,IAAA,gBAAAlG,MAKA,SAAeub,GACb,IAAM6qB,EAAmBn9B,KAAKo9B,yBAAyB9qB,GACvD,GAAK6qB,EAAL,CAEA,IAAMpmC,EAAQomC,EAAiBhvB,aAAa,cAC5CnO,KAAKq9B,wBAAwBtmC,GAC7BiJ,KAAKC,OAAOqG,KAAK,aAAcvP,EAJF,CAK/B,GAEA,CAAAkG,IAAA,2BAAAlG,MAMA,SAA0Bub,GASxB,OARsB,SAACqB,EAAI2pB,GACzB,EAAG,CACD,GAAI3pB,IAAO2pB,EAAmB,OAAO,KACrC,GAAI3pB,EAAG4pB,QAAQ,sBAAuB,OAAO5pB,EAC7CA,EAAKA,EAAG6pB,eAAiB7pB,EAAG8pB,UAC9B,OAAgB,OAAP9pB,GAAeA,IAAO2pB,GAAqC,IAAhB3pB,EAAG+pB,UACvD,OAAO,IACT,CACOC,CAAcrrB,EAAGjU,OAAQ2B,KAAKN,QACvC,0EAACu8B,CAAA,CAzH4B,qCCPxB,IAAM2B,EAAkB,CAC7BC,yCAA0C,wCAC1CC,8BAA+B,glDCL7BC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBtgC,IAAjBugC,EACH,OAAOA,EAAaC,QAGrB,IAAIC,EAASL,EAAyBE,GAAY,CACjDv7B,GAAIu7B,EACJI,QAAQ,EACRF,QAAS,CAAC,GAUX,OANAG,EAAoBL,GAAU7lC,KAAKgmC,EAAOD,QAASC,EAAQA,EAAOD,QAASH,GAG3EI,EAAOC,QAAS,EAGTD,EAAOD,OACf,CAGAH,EAAoBO,EAAID,EC5BxBN,EAAoBQ,KAAO,CAAC,E1CAxBxqC,EAAW,GACfgqC,EAAoBS,EAAI,CAACz8B,EAAQ08B,EAAUrhC,EAAIshC,KAC9C,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAAS7nC,EAAI,EAAGA,EAAIhD,EAASoH,OAAQpE,IAAK,CAGzC,IAFA,IAAK0nC,EAAUrhC,EAAIshC,GAAY3qC,EAASgD,GACpC8nC,GAAY,EACPC,EAAI,EAAGA,EAAIL,EAAStjC,OAAQ2jC,MACpB,EAAXJ,GAAsBC,GAAgBD,IAAaloC,OAAOsF,KAAKiiC,EAAoBS,GAAGO,OAAO/hC,GAAS+gC,EAAoBS,EAAExhC,GAAKyhC,EAASK,MAC9IL,EAASO,OAAOF,IAAK,IAErBD,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACb9qC,EAASirC,OAAOjoC,IAAK,GACrB,IAAIR,EAAI6G,SACEM,IAANnH,IAAiBwL,EAASxL,EAC/B,CACD,CACA,OAAOwL,CAnBP,CAJC28B,EAAWA,GAAY,EACvB,IAAI,IAAI3nC,EAAIhD,EAASoH,OAAQpE,EAAI,GAAKhD,EAASgD,EAAI,GAAG,GAAK2nC,EAAU3nC,IAAKhD,EAASgD,GAAKhD,EAASgD,EAAI,GACrGhD,EAASgD,GAAK,CAAC0nC,EAAUrhC,EAAIshC,EAqBjB,E2CzBdX,EAAoBrnC,EAAKynC,IACxB,IAAIc,EAASd,GAAUA,EAAOe,WAC7B,IAAOf,EAAiB,QACxB,IAAM,EAEP,OADAJ,EAAoBroC,EAAEupC,EAAQ,CAAEhoC,EAAGgoC,IAC5BA,CAAM,ECLdlB,EAAoBroC,EAAI,CAACwoC,EAASiB,KACjC,IAAI,IAAIniC,KAAOmiC,EACXpB,EAAoBnnC,EAAEuoC,EAAYniC,KAAS+gC,EAAoBnnC,EAAEsnC,EAASlhC,IAC5ExG,OAAOK,eAAeqnC,EAASlhC,EAAK,CAAExF,YAAY,EAAM4nC,IAAKD,EAAWniC,IAE1E,ECND+gC,EAAoBhlC,EAAI,WACvB,GAA0B,iBAAfsmC,WAAyB,OAAOA,WAC3C,IACC,OAAOt/B,MAAQ,IAAIu/B,SAAS,cAAb,EAChB,CAAE,MAAOjpC,GACR,GAAsB,iBAAX2zB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB+T,EAAoBnnC,EAAI,CAACmH,EAAKwhC,IAAU/oC,OAAOC,UAAUE,eAAewB,KAAK4F,EAAKwhC,GCClFxB,EAAoBxnC,EAAK2nC,IACH,oBAAXlnC,QAA0BA,OAAOM,aAC1Cd,OAAOK,eAAeqnC,EAASlnC,OAAOM,YAAa,CAAER,MAAO,WAE7DN,OAAOK,eAAeqnC,EAAS,aAAc,CAAEpnC,OAAO,GAAO,ECL9DinC,EAAoByB,IAAOrB,IAC1BA,EAAOsB,MAAQ,GACVtB,EAAO5X,WAAU4X,EAAO5X,SAAW,IACjC4X,SCER,IAAIuB,EAAkB,CACrB,KAAM,GAaP3B,EAAoBS,EAAEM,EAAKa,GAA0C,IAA7BD,EAAgBC,GAGxD,IAAIC,EAAuB,CAACC,EAA4Bl9B,KACvD,IAGIq7B,EAAU2B,GAHTlB,EAAUqB,EAAaC,GAAWp9B,EAGhB5L,EAAI,EAC3B,GAAG0nC,EAASuB,MAAMv9B,GAAgC,IAAxBi9B,EAAgBj9B,KAAa,CACtD,IAAIu7B,KAAY8B,EACZ/B,EAAoBnnC,EAAEkpC,EAAa9B,KACrCD,EAAoBO,EAAEN,GAAY8B,EAAY9B,IAGhD,GAAG+B,EAAS,IAAIh+B,EAASg+B,EAAQhC,EAClC,CAEA,IADG8B,GAA4BA,EAA2Bl9B,GACrD5L,EAAI0nC,EAAStjC,OAAQpE,IACzB4oC,EAAUlB,EAAS1nC,GAChBgnC,EAAoBnnC,EAAE8oC,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAO5B,EAAoBS,EAAEz8B,EAAO,EAGjCk+B,EAAqB5iC,KAA6C,uCAAIA,KAA6C,wCAAK,GAC5H4iC,EAAmBhnC,QAAQ2mC,EAAqB97B,KAAK,KAAM,IAC3Dm8B,EAAmBnlC,KAAO8kC,EAAqB97B,KAAK,KAAMm8B,EAAmBnlC,KAAKgJ,KAAKm8B,QC7CvF,IAAIC,EAAsBnC,EAAoBS,OAAE9gC,EAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,OAAO,IAAOqgC,EAAoB,SACxLmC,EAAsBnC,EAAoBS,EAAE0B","sources":["webpack://@sunwebgroup/design-system/webpack/runtime/chunk loaded","webpack://@sunwebgroup/design-system/./shared/modules/widgets/login-status/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/main-menu/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/preference-questionnaire/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/product-map/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/product-map/product-card.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/product-map/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/product-map/product-card-slider.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/profile-data/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/promoted-price/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/promoted-price/w-promoted-price-fallback.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/promoted-price/w-promoted-price.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/promoted-price/w-promoted-price-sticky.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/promoted-price/data-processor.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/promoted-price/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/refund/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/reviews-list/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/reviews-teaser/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-dropdown/w-room-dropdown.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-dropdown/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-list/w-room-list-item.props.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-list/w-room-list-item.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-list/w-room-list.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-list/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-selector/w-room-selector.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-selector/w-room-selector__message.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-selector/w-room-selector__age-profiles-message.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-occupancy/w-room-occupancy.props.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-occupancy/w-room-occupancy.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-occupancy/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-selector/currency-symbol-position.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-selector/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/room-selector/w-room-selector__list.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/search/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/selected-state/selected-state-data-model.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/selected-state/w-selected-state.template.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/selected-state/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/static-content-data/event-types.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/subscribe-form/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/tabs-filter/main.js","webpack://@sunwebgroup/design-system/./shared/modules/widgets/voucher-redeemer/event-types.js","webpack://@sunwebgroup/design-system/webpack/bootstrap","webpack://@sunwebgroup/design-system/webpack/runtime/amd options","webpack://@sunwebgroup/design-system/webpack/runtime/compat get default export","webpack://@sunwebgroup/design-system/webpack/runtime/define property getters","webpack://@sunwebgroup/design-system/webpack/runtime/global","webpack://@sunwebgroup/design-system/webpack/runtime/hasOwnProperty shorthand","webpack://@sunwebgroup/design-system/webpack/runtime/make namespace object","webpack://@sunwebgroup/design-system/webpack/runtime/node module decorator","webpack://@sunwebgroup/design-system/webpack/runtime/jsonp chunk loading","webpack://@sunwebgroup/design-system/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","export const loginStatus = {\n LOADED: 'loginStatus.loaded'\n}\n","export const mainMenu = {\n MAIN_MENU_ITEM_CLICKED: 'mainMenu.itemClicked'\n}\n","/**\n * List of events used by personal details edit widget\n *\n */\nexport const preferenceQuestionnaire = {\n PREFERENCE_QUESTIONNAIRE_START: 'preferenceQuestionnaire.start',\n PREFERENCE_QUESTIONNAIRE_SEND: 'preferenceQuestionnaire.send',\n PREFERENCE_QUESTIONNAIRE_EDIT: 'preferenceQuestionnaire.edit'\n}\n","/**\n * List of events used by product map widget\n *\n */\nexport const productMap = {\n PRODUCT_MAP_OPENED: 'productMapOpened',\n PRODUCT_MAP_CLOSED: 'productMapClosed',\n ACCOMMODATION_MARKER_CLICKED: 'accommodationMarkerClicked'\n}\n","import { ImgTemplate } from '../../components/img/c-img.template'\n\n/**\n * The BoxData contains all data needed to hydrate a Box view\n *\n * @typedef {Object} BoxData\n *\n * @property {String} [variant] - Box's variant\n * @property {String} [extraClasses] - Extra classes for the button\n * @property {Object} [attributes] - Attributes for the button\n *\n */\nexport const defaultBoxData = {\n image: {},\n titleAttributes: {},\n titleText: '',\n infoCtaText: '',\n titleUrl: '',\n breadcrumbs: {},\n grade: '',\n rating: '',\n price: '',\n priceLegend: '',\n hidePrice: true,\n extraClasses: ''\n}\n\nexport const ProductCardTemplate = (d) => {\n d = { ...defaultBoxData, ...d }\n\n return `\n
\n
\n ${ImgTemplate(d.image)}\n
\n
\n ${d.grade\n ? `
\n
\n ${d.grade}\n
\n
`\n : ''}\n \n
\n

\n ${d.titleText}\n

\n
\n
\n
    \n ${d.breadcrumbs.map((location, index) => {\n return `\n
  1. \n \n ${location.text}\n \n \n
  2. \n `\n }).join('')}\n
\n
\n
\n ${d.price && !d.hidePrice\n ? `
\n ${d.priceLegend} ${d.price}\n
`\n : ''}\n ${d.infoCtaText}\n ${d.infoCtaText}\n
\n
\n
\n `\n}\n","import Component from '../../../js/core/component/component'\nimport { registerWidget } from '../../../js/core/widget/widget-directory'\nimport { getData } from '../../../js/document/html-helper'\nimport { ProductCardTemplate } from './product-card.template'\nimport { ProductCardSliderTemplate } from './product-card-slider.template'\nimport { promotedPriceEvents, productMapEvents } from '../../../js/document/event-types'\nimport registeredEvents from '../../../js/helpers/registered-events'\nimport { getUrlFromString } from '../../../js/document/url'\nimport { fetchJsonData } from '../../../js/helpers/json-fetch'\nconst EventEmitter = require('eventemitter3')\n\nrequire('../../components/map-interactive/main')\n\nconst widgetApi = 'w-product-map'\nconst promotedPriceWidgetApi = 'w-promoted-price'\nconst mapApi = 'c-map-interactive'\n\nconst widgetQueries = {\n promotedPriceWidgetsSelector: `[data-js-widget=\"${promotedPriceWidgetApi}\"]`,\n trackAttr: 'data-track'\n}\n\nexport default class ProductMap {\n /**\n * Creates a new Map\n *\n * @constructor\n *\n * @param {HTMLElement} element - The HTML component element.\n * @param {AutocompleteOptions} [options={}] - Options object\n *\n */\n constructor (element, options = {}) {\n this.element = element\n this.events = new EventEmitter()\n\n registeredEvents.registerWidgetEvents(widgetApi, this.events, {\n ...this.element.hasAttribute(widgetQueries.trackAttr) && { track: this.element.attributes[widgetQueries.trackAttr].value }\n })\n\n this.modal = element.querySelector('.c-modal')\n this.map = element.querySelector('.c-map-interactive')\n\n this.settings = { ...getData(this.element), ...options }\n this.settings.productBreadcrumbs = this._getProductBreadcrumbs() || []\n this.modal['c-modal'].events.on('opened', this._showMap, this)\n this.modal['c-modal'].events.on('open', this._prepareMap, this)\n this.modal['c-modal'].events.on('close', this._handleMapClosed, this)\n this.nearbyApiUrl = this.settings.nearbyApiUrl\n this.accoDetailsApiUrl = this.settings.accoDetailsApiUrl\n this.initialized = false\n this.centerMarkerInfoWindowData = []\n\n if (!this.settings.infoHidePrice) {\n const promotedPriceWidget = document.querySelector(widgetQueries.promotedPriceWidgetsSelector)\n if (promotedPriceWidget) {\n const promotedPriceApi = promotedPriceWidget[promotedPriceWidgetApi]\n if (promotedPriceApi && promotedPriceApi.events) {\n promotedPriceApi.events.once(promotedPriceEvents.PROMOTED_PRICE_DATA_LOADED, (response) => {\n this._addPriceData(response)\n })\n }\n }\n }\n }\n\n /**\n * Fetches the nearby products\n *\n * @returns {Object|undefined}\n */\n async _fetchProducts () {\n const url = getUrlFromString(this.nearbyApiUrl)\n const result = await fetchJsonData(url)\n\n return result\n }\n\n async _fetchAccommodationData (accommodationIds) {\n const params = accommodationIds.reduce((result, id, index) => {\n const idObj = {}\n idObj['accommodationId[' + index + ']'] = id\n return { ...result, ...idObj }\n }, {})\n\n const url = getUrlFromString(this.accoDetailsApiUrl, params)\n const result = await fetchJsonData(url)\n\n return result\n }\n\n _addNearbyMarkers (data) {\n data.accommodations.forEach((accommodation, index) => {\n const latitude = parseFloat(accommodation.latitude)\n const longitude = parseFloat(accommodation.longitude)\n const markerId = index + 1\n const icons = {\n default: data.marker,\n active: (data.markerActive) ? data.markerActive : false\n }\n\n const accommodationIds = [accommodation.accommodationId]\n accommodation.sameLocationAccommodations.forEach((item) => { accommodationIds.push(item.accommodationId) })\n\n this.map[mapApi].addMarker(\n markerId,\n latitude,\n longitude,\n icons,\n 'nearby',\n true,\n [{ type: 'click', callBack: this._loadInfoWindow.bind(this, 'nearby', accommodationIds) }]\n )\n })\n\n this.map[mapApi].createClusterMarkers()\n\n if (this.settings.zoomToMarkers) {\n this.map[mapApi].zoomToMarkers()\n }\n }\n\n _getCenterMarkerInitialData () {\n return {\n image: {\n sync: this.settings.infoImageSync,\n placeholderSrc: this.settings.infoImagePlaceholdersrc,\n resolvedSrc: this.settings.infoImageResolvedsrc,\n description: this.settings.infoImageDescription,\n ratio: this.settings.infoImageRatio,\n dynamicRatios: this._getImageDynamicRatios() || {},\n resolve: this.settings.infoImageResolve\n },\n titleUrl: this.settings.infoTitleUrl,\n titleText: this.settings.infoTitleText,\n grade: this.settings.infoGrade,\n rating: this.settings.infoRating,\n infoCtaText: this.settings.infoCtaText,\n priceLegend: this.settings.infoPriceLegend,\n breadcrumbs: this.settings.productBreadcrumbs || this._getProductBreadcrumbs() || [],\n hidePrice: this.settings.infoHidePrice,\n price: this.price\n }\n }\n\n _groupMarkersWithSameLocation (markerData) {\n const groupedAccommodations = []\n const centerMarkerData = []\n\n markerData.accommodations.forEach((accommodation) => {\n if (parseFloat(this.settings.latitude) === accommodation.latitude && parseFloat(this.settings.longitude) === accommodation.longitude) {\n centerMarkerData.push({ ...accommodation })\n } else {\n const markerDataItem = groupedAccommodations.find(({ latitude, longitude, accommodationId }) => (\n latitude === accommodation.latitude &&\n longitude === accommodation.longitude &&\n accommodationId !== accommodation.accommodationId\n ))\n if (!markerDataItem) {\n groupedAccommodations.push({ ...accommodation, sameLocationAccommodations: [] })\n } else {\n markerDataItem.sameLocationAccommodations.push({ ...accommodation })\n }\n }\n })\n\n const nearbyMarkersData = { ...markerData, accommodations: [...groupedAccommodations] }\n\n return { nearbyMarkersData, centerMarkerData }\n }\n\n _loadInfoWindow (markerType, accommodationIds) {\n this._fetchAccommodationData(accommodationIds).then(response => {\n const { infoCtaText, priceLegend, hidePrice } = this.settings\n const responseArray = (Array.isArray(response)) ? response : [response]\n const infoWindowData = responseArray.map((data) => ({ ...data, infoCtaText, priceLegend, hidePrice }))\n this._populateAndShowInfoWindow(markerType, infoWindowData)\n }).catch(error => {\n console.error(error)\n })\n }\n\n _populateAndShowInfoWindow (markerType, infoWindowData) {\n const infoWindowSingleData = (Array.isArray(infoWindowData)) ? infoWindowData[0] : infoWindowData\n this.events.emit(productMapEvents.ACCOMMODATION_MARKER_CLICKED, { ...infoWindowSingleData, markerType })\n\n if (infoWindowData.length > 1) {\n const sliderItems = infoWindowData.map(item => (\n ProductCardTemplate({ ...item, extraClasses: 'slider-item' }))\n )\n const infoWindowContent = ProductCardSliderTemplate({ sliderItems })\n this.map[mapApi].showInfoWindow(infoWindowContent)\n Component.initDocumentComponentsFromAPI(this.modal)\n } else {\n const infoWindowContent = ProductCardTemplate({ ...infoWindowSingleData })\n this.map[mapApi].showInfoWindow(infoWindowContent)\n }\n }\n\n _prepareMap () {\n if (this.initialized) {\n this.map[mapApi].clearMarkers()\n }\n }\n\n _showMap () {\n this.settings.mapOpenDate = new Date()\n this.events.emit(productMapEvents.PRODUCT_MAP_OPENED, { ...this.settings })\n this.map[mapApi].showMap()\n\n this._fetchProducts().then(async (response) => {\n const { nearbyMarkersData, centerMarkerData } = this._groupMarkersWithSameLocation(response)\n this._addNearbyMarkers(nearbyMarkersData)\n\n if (this.settings.showCenterMarker) {\n let centerMarkerSameLocationsData = []\n const centerMarkerInitialData = this._getCenterMarkerInitialData()\n\n if (centerMarkerData.length > 0) {\n const accommodationIds = centerMarkerData.map(marker => marker.accommodationId)\n const response = await this._fetchAccommodationData(accommodationIds)\n const { infoCtaText, priceLegend, hidePrice } = this.settings\n const responseArray = (Array.isArray(response)) ? response : [response]\n centerMarkerSameLocationsData = responseArray.map((data) => ({ ...data, infoCtaText, priceLegend, hidePrice }))\n }\n\n this._addCenterMarker([centerMarkerInitialData, ...centerMarkerSameLocationsData])\n }\n }).catch(error => {\n console.error(error)\n })\n\n this.initialized = true\n }\n\n _handleMapClosed () {\n this.settings.mapClosedDate = new Date()\n this.events.emit(productMapEvents.PRODUCT_MAP_CLOSED, { ...this.settings })\n this._clearMap()\n }\n\n _clearMap () {\n this.map[mapApi].clearInfoWindow()\n }\n\n _addCenterMarker (centerMarkerInfoWindowData) {\n const latitude = parseFloat(this.settings.latitude)\n const longitude = parseFloat(this.settings.longitude)\n const markerId = 0\n const icons = {\n default: this.settings.markerIcon,\n active: (this.settings.markerIconActive) ? this.settings.markerIconActive : false\n }\n\n this.map[mapApi].addMarker(\n markerId,\n latitude,\n longitude,\n icons,\n 'center',\n false,\n [{ type: 'click', callBack: this._populateAndShowInfoWindow.bind(this, 'center', centerMarkerInfoWindowData) }]\n )\n this._populateAndShowInfoWindow('center', centerMarkerInfoWindowData)\n }\n\n _addPriceData (price) {\n this.price = price\n if (this.initialized) {\n if (this.settings.showCenterMarker) {\n this.map[mapApi].clearMarkers()\n this._addCenterMarker()\n }\n }\n }\n\n _getProductBreadcrumbs () {\n const breadcrumbsElement = document.querySelector(`[data-type=\"i18n\"][data-uid=\"${this.element.id}__breadcrumbs\"]`)\n let breadcrumbsData = null\n try {\n breadcrumbsData = JSON.parse(breadcrumbsElement.textContent)\n } catch (err) { }\n\n return breadcrumbsData\n }\n\n _getImageDynamicRatios () {\n const dynamicRatiosElement = document.querySelector(`[data-type=\"i18n\"][data-uid=\"${this.element.id}__dynamicRatios\"]`)\n let dynamicRatiosData = null\n try {\n dynamicRatiosData = JSON.parse(dynamicRatiosElement.textContent)\n } catch (err) { }\n\n return dynamicRatiosData\n }\n}\n\nregisterWidget(ProductMap, widgetApi)\n","import { SliderTemplate } from '../../components/slider/c-slider.template'\n\nexport const ProductCardSliderTemplate = (d) => {\n const sliderAttributes = {\n 'data-loop': false,\n 'data-responsive': 'xs:1',\n 'data-gutter': '32',\n 'data-edge-padding': '16'\n }\n\n return SliderTemplate({\n id: 'product-map__product-card-slider',\n items: d.sliderItems,\n attributes: sliderAttributes,\n barNavigation: false,\n outerNavigation: false,\n withGradient: false,\n extraClasses: 'w-product-map__product-card-slider'\n })\n}\n","/**\n * List of events used by profile-data\n *\n */\nexport const profileData = {\n NAME_CHANGED: 'profileData.nameChanged',\n DATA_OPENED: 'profileData.dataOpened',\n DATA_EDITED: 'profileData.dataEdited'\n}\n","/**\n * List of events used by promoted price widget\n *\n */\nexport const promotedPrice = {\n PROMOTED_PRICE_DATA_LOADED: 'promotedPriceLoaded'\n}\n","import { BtnTemplate } from '../../components/btn/c-btn.template'\n\n/**\n * The PromotedPriceData contains all data needed to hydrate a PromotedPrice view\n *\n * @typedef {Object} PromotedPriceFallbackData\n *\n * @property {String} title - Promoted price title\n * @property {String} description - Promoted price description\n * @property {String} buttonText - Promoted price text button\n * @property {Boolean} [hasUiTest] - Flag to indicate if this component is subjected to a UI test.\n */\nexport const defaultPromotedPriceFallbackData = {\n title: '',\n description: '',\n buttonText: '',\n hasUiTest: false\n}\n\nexport const PromotedPriceFallbackTemplate = (d) => {\n return promotedPriceFallbackTemplate({ ...d, isSticky: false })\n}\nexport const PromotedPriceStickyFallbackTemplate = (d) => {\n return promotedPriceFallbackTemplate({ ...d, isSticky: true })\n}\n\nconst promotedPriceFallbackTemplate = (d) => {\n d = { ...defaultPromotedPriceFallbackData, ...d }\n\n const className = d.isSticky ? 'w-promoted-price__sticky' : 'w-promoted-price__main'\n\n return `\n
\n ${d.title ? `
${d.title}
` : ''}\n ${d.description ? `
${d.description}
` : ''}\n ${BtnTemplate({\n variant: 'flow',\n block: true,\n text: d.buttonText,\n extraClasses: `w-promoted-price__btn ${d.hasUiTest ? 'qa-promoted-price-click-trigger' : ''}`\n })}\n
\n `\n}\n","import { defaultPackageBlockData, PackageBlockTemplate } from '../../components/package-block/c-package-block.template'\nimport { defaultPriceData, PriceTemplate, getACMPriceLabel } from '../../components/price/c-price.template'\nimport { BtnTemplate } from '../../components/btn/c-btn.template'\n\n/**\n * The PromotedPriceData contains all data needed to hydrate a PromotedPrice view\n *\n * @typedef {Object} PromotedPriceResultData\n *\n * @property {PriceData} price - Price data\n * @property {String} skiPassPublicPriceText - Ski pass public price text\n * @property {String} buttonText - Promoted price text button\n * @property {PackageBlockData} packageBlock - package data\n * @property {String} [acmUrl] - ACM url where to request info to be displayed\n * @property {String} [acmModalId] - Modal ID where the ACM info will be shown at\n * @property {Boolean} [acmHideInfoIcon] - Hide the ACM info icon (an 'i' in an circle).\n * @property {Object} [yieldCampaignLogo] - Yield campaign logo\n * @property {String} [yieldCampaignLogo.src] - Yield campaign logo > src\n * @property {Boolean} [hasUiTest] - Flag to indicate if this component is subjected to a UI test.\n * @property {String} [rawDepartureDate] - The package departure date, expressed as machine readable string.\n * @property {String} [mandatoryExtraCostsText] - The mandatory extra costs text, to be shown with the price.\n * @property {String} [staticText] - Some optional static text to be shown along the price.\n * @property {PaymentMethodData} [paymentMethod] - Text and icon for payment method under promoted price container\n */\nexport const defaultPromotedPriceResultData = {\n price: {},\n skiPassPublicPriceText: '',\n buttonText: '',\n packageBlock: {},\n acmUrl: '',\n acmModalId: '',\n acmHideInfoIcon: true,\n yieldCampaignLogo: {},\n hasUiTest: false,\n rawDepartureDate: '',\n mandatoryExtraCostsText: '',\n staticText: '',\n paymentMethod: null\n}\n\nexport const PromotedPriceTemplate = (d) => {\n d = { ...defaultPromotedPriceResultData, ...d }\n return `\n
\n
\n ${d.yieldCampaignLogo?.src ? `` : ''}\n ${PackageBlockTemplate({\n ...defaultPackageBlockData,\n ...d.packageBlock,\n rawDepartureDate: d.rawDepartureDate,\n outboundDepartureAirportName: d.outboundDepartureAirportName\n })}\n
\n ${PriceTemplate({\n ...defaultPriceData,\n ...d.price,\n publicPriceDetail: d.skiPassPublicPriceText,\n hasUiTest: d.hasUiTest,\n acmHideInfoIcon: !!d.mandatoryExtraCostsText,\n label: d.scratchPriceDescription,\n label2: d.mandatoryExtraCostsText && d.price.acmUrl && d.price.acmModalId\n ? getACMPriceLabel({ ...d, text: d.mandatoryExtraCostsText, staticText: d.staticText, acmUrl: d.price.acmUrl, modalId: d.price.acmModalId })\n : d.staticText,\n labelGrayed: true\n })}\n ${BtnTemplate({\n variant: 'flow',\n block: true,\n text: d.buttonText,\n extraClasses: `w-promoted-price__btn ${d.hasUiTest ? 'qa-promoted-price-click-trigger' : ''}`\n })}\n ${d.paymentMethod?.icon && d.paymentMethod?.text\n? `\n
\n \"${d.paymentMethod?.text}\"\n ${d.paymentMethod?.text}\n
\n `\n: ''}\n
\n `\n}\n","import { defaultPriceData, PriceTemplate, getACMPriceLabel } from '../../components/price/c-price.template'\nimport { BtnTemplate } from '../../components/btn/c-btn.template'\n\n/**\n * The PromotedPriceData contains all data needed to hydrate a PromotedPrice view\n *\n * @typedef {Object} PromotedPriceStickyResultData\n *\n * @property {PriceData} price - Price data\n * @property {String} buttonText - Promoted price text button\n * @property {String} [acmUrl] - ACM url where to request info to be displayed\n * @property {String} [acmModalId] - Modal ID where the ACM info will be shown at\n * @property {Boolean} [acmHideInfoIcon] - Hide the ACM info icon (an 'i' in an circle).\n * @property {String} [mandatoryExtraCostsText] - The mandatory extra costs text, to be shown with the price.\n * @property {String} [staticText] - Some optional static text to be shown along the price.\n */\nexport const defaultPromotedPriceStickyResultData = {\n price: {},\n buttonText: '',\n acmUrl: '',\n acmModalId: '',\n acmHideInfoIcon: true,\n mandatoryExtraCostsText: '',\n staticText: '',\n fallbackTitle: '',\n fallbackDescription: ''\n}\n\nexport const PromotedPriceStickyTemplate = (d) => {\n d = { ...defaultPromotedPriceStickyResultData, ...d }\n\n return `\n
\n ${PriceTemplate({\n ...defaultPriceData,\n ...d.price,\n publicPriceDetail: d.skiPassPublicPriceText,\n hasUiTest: d.hasUiTest,\n acmHideInfoIcon: !!d.mandatoryExtraCostsText,\n label: d.scratchPriceDescription,\n label2: d.mandatoryExtraCostsText && d.price.acmUrl && d.price.acmModalId\n ? getACMPriceLabel({ ...d, text: d.mandatoryExtraCostsText, staticText: d.staticText, acmUrl: d.price.acmUrl, modalId: d.price.acmModalId })\n : d.staticText,\n labelGrayed: true\n })}\n ${BtnTemplate({\n variant: 'flow',\n block: true,\n text: d.buttonText,\n extraClasses: `w-promoted-price__btn ${d.hasUiTest ? 'qa-promoted-price-click-trigger' : ''}`\n })}\n
\n `\n}\n","/**\n * ---------------\n * README\n * ---------------\n * ⚠ About this ⚠\n *\n * The reason to have this file here, is because the differences on data models in between\n * Sitecore and Design System components. The responsibility of this file is, given an API\n * model, obtain a ready to render model.\n *\n */\n\nconst DEFAULT_PRICE_DATA_MODEL = {\n extraClasses: 'w-promoted-price__price',\n size: 'large'\n}\n\nconst DEFAULT_PACKAGE_BLOCK_DATA_MODEL = {\n extraClasses: 'w-promoted-price__package-block'\n}\n\n/**\n * Builds a PriceData model from raw API data\n *\n * @param {Object} data - The orginal data retrieved from API\n *\n * @returns {PriceData}\n */\nexport function getPriceData (data, staticTexts, acmModalId, contextItemId) {\n let publicPriceWithCurrencySymbol\n\n if (data.price.publicValue !== undefined) {\n const symbol = data.price.currencySettings.symbol\n publicPriceWithCurrencySymbol = data.price.currencySettings.symbolPosition === 'BeforeAmount' ? `${symbol} ${data.price.publicValue}` : `${data.price.publicValue} ${symbol}`\n }\n\n let acmUrl\n\n if (data.acmInformation && data.acmInformation.acmUrl) {\n acmUrl = data.acmInformation.acmUrl.replace(/contextItemId=[\\w-]*&/ig, '')\n acmUrl = acmUrl + '&contextItemId=' + contextItemId\n }\n\n return {\n ...DEFAULT_PRICE_DATA_MODEL,\n value: data.price.value,\n currency: data.price.currencySettings.symbol,\n currencyPosition: data.price.currencySettings.symbolPosition === 'BeforeAmount' ? 'before' : 'after',\n saleText: data.price.discountPercentage\n ? `-${data.price.discountPercentage}%`\n : data.price.publicValue && data.price.discountPercentagePublicPrice ? `-${data.price.discountPercentagePublicPrice}%` : undefined,\n oldPrice: data.price.originalValue ? data.price.originalValue : undefined,\n acmUrl,\n acmModalId: data.acmInformation && data.acmInformation.acmUrl ? acmModalId : undefined,\n legend: staticTexts.priceLegend,\n publicPrice: publicPriceWithCurrencySymbol ? staticTexts.publicPrice + ' ' + publicPriceWithCurrencySymbol : undefined\n }\n}\n\n/**\n * Builds a PackageBlockData model from raw API data\n *\n * @param {Object} data - The orginal data retrieved from API\n *\n * @returns {PackageBlockData}\n */\nexport function getPackageBlockData (data) {\n return {\n ...DEFAULT_PACKAGE_BLOCK_DATA_MODEL,\n includedServices: data.includedServices,\n filters: data.featuredFilters,\n departureDate: data.departureDate.humanized\n }\n}\n\n/**\n * Returns the ski pass public price text\n *\n * @param {Object} data - The orginal data retrieved from API\n */\nexport function getSkiPassPublicPriceText (data) {\n return data.skiPassPublicPriceText\n}\n","import domEventsHelper from '../../../js/document/dom-events-helper'\nimport {\n PromotedPriceFallbackTemplate,\n PromotedPriceStickyFallbackTemplate\n} from './w-promoted-price-fallback.template'\nimport { PromotedPriceTemplate } from './w-promoted-price.template'\nimport { PromotedPriceStickyTemplate } from './w-promoted-price-sticky.template'\nimport { fetchJsonDataAndStatusInfo } from '../../../js/helpers/json-fetch'\nimport { registerWidget } from '../../../js/core/widget/widget-directory'\nimport { getPriceData, getPackageBlockData, getSkiPassPublicPriceText } from './data-processor'\nimport { arrayifyObject } from '../../../js/helpers/arrayify-object'\nimport { getUrlFromString, getSearchParamsFromUrl } from '../../../js/document/url'\nimport { register } from '../../../js/document/namespace'\nimport { language } from '../../../js/user/locale-settings'\nimport { elementFromString } from '../../../js/document/html-helper'\nimport { forceRepaint } from '../../../js/document/css'\nimport registeredEvents from '../../../js/helpers/registered-events'\nimport Component from '../../../js/core/component/component'\nimport { promotedPriceEvents } from '../../../js/document/event-types'\nimport { GET_PASSTHROUGH_PARAMS } from '../../../js/helpers/pass-through-params'\n\nconst COMPONENT_LOCALES = register(`window.sundio.i18n.${language}.promotedPrice`)\n\nconst EventEmitter = require('eventemitter3')\nconst widgetApi = 'w-promoted-price'\n\nconst widgetQueries = {\n urlAttr: `data-${widgetApi}__api-url`,\n mainContainer: `.${widgetApi}__main`,\n stickyContainer: `.${widgetApi}__sticky`,\n stickyEnabled: `data-${widgetApi}__sticky-enabled`,\n extraParams: 'input[type=\"hidden\"]',\n button: `.${widgetApi}__btn`,\n modalId: `data-${widgetApi}__modal-id`,\n dataSource: `[data-${widgetApi}__data-source]`,\n hasUiTest: `data-${widgetApi}__has-ui-test`,\n trackAttr: 'data-track'\n}\n\n/**\n * PromotedPrice content\n *\n */\nexport default class PromotedPrice {\n /**\n * Creates a new PromotedPrice behaviour, exposes an API to the element.\n *\n * @constructor\n * @param {HTMLElement} element - The HTML element.\n * @param {Object} [options={}] - Options object\n * @param {String} [options.url] - API url\n * @param {String} [options.modalId] - Modal ID (used by ACM)\n * @param {Object} [options.dataSource] - Optional static JSON data to render on experience editor\n */\n constructor (element, options = {}) {\n this.element = element\n this.elements = this._runElementQueries()\n this.extraParams = this._getExtraParamsFromDom()\n this.apiUrl = options.url || this.element.getAttribute(widgetQueries.urlAttr)\n this.stickyEnabled = options.stickyEnabled || this.element.hasAttribute(widgetQueries.stickyEnabled) || false\n this.modalId = options.modalId || this.element.getAttribute(widgetQueries.modalId)\n this.dataSource = options.dataSource || this._getDataSourceFromDom()\n this.hasUiTest = options.hasUiTest || this.element.hasAttribute(widgetQueries.hasUiTest) || false\n this.isOpened = this.element.classList.contains('in')\n this.isPricesTab = false\n\n this.passThroughParams = GET_PASSTHROUGH_PARAMS(getSearchParamsFromUrl(document.location))\n\n this.events = new EventEmitter()\n\n this.locales = this._getLocales()\n\n this.element[widgetApi] = {\n refresh: this.refresh.bind(this),\n showFallback: this.showFallback.bind(this),\n open: this.open.bind(this),\n close: this.close.bind(this),\n showStickyPromotedPrice: this._showStickyPromotedPrice.bind(this),\n events: this.events,\n getOriginalDepartureDate: this._getOriginalDepartureDate.bind(this)\n }\n\n registeredEvents.registerWidgetEvents(widgetApi, this.events, {\n ...(this.element.hasAttribute(widgetQueries.trackAttr) && {\n track: this.element.attributes[widgetQueries.trackAttr].value\n })\n })\n\n this._buildEvents()\n domEventsHelper.attachEvents(this._domEvents, widgetApi)\n\n if (this.dataSource) {\n this.refresh(\n {},\n {\n dataSource: this.dataSource,\n hasUiTest: this.hasUiTest\n }\n )\n }\n\n this.events.on(promotedPriceEvents.PROMOTED_PRICE_DATA_LOADED, d => {\n this.addBannerifDiscount(d, this.locales)\n })\n }\n\n /*\n * -----------------------------------------------------\n * INITIALIZATION RELATED METHODS\n * -----------------------------------------------------\n * */\n\n /**\n * Runs element queries\n *\n * @returns {Object}\n */\n _runElementQueries () {\n return {\n mainContainer: this.element.querySelector(widgetQueries.mainContainer)\n }\n }\n\n /**\n * Fetch promoted price data from API\n *\n * @param {Object} parameters - Parameters to be sent on calling API\n * @param {Object} [options={}]\n * @param {Object} [options.dataSource] - If provided will skip to call API\n *\n * @returns {Promise} raw data from API\n */\n async fetch (parameters, options = {}) {\n if (options.dataSource) {\n return {\n rawData: options.dataSource,\n data: this._getPromotedPriceData(options.dataSource)\n }\n }\n\n if (!this.apiUrl) return undefined\n\n const promotedPriceUrl = getUrlFromString(\n this.apiUrl,\n arrayifyObject({ ...this.extraParams, ...parameters, ...this.passThroughParams })\n )\n const promotedPriceResponseAndStatus = await fetchJsonDataAndStatusInfo(promotedPriceUrl, {\n fullReferrerOnCrossOrigin: true\n })\n if (!promotedPriceResponseAndStatus.ok || promotedPriceResponseAndStatus.statusCode === 204) {\n return null\n }\n const promotedPriceResponse = promotedPriceResponseAndStatus.jsonData\n return {\n rawData: promotedPriceResponse,\n data: this._getPromotedPriceData(promotedPriceResponse)\n }\n }\n\n /**\n * Recreates HTML content\n *\n * @param {object} parameters to fetch promoted price API\n * @param {Object} [options={}]\n * @param {Object} [options.dataSource] - If provided will skip to call API\n */\n async refresh (parameters, options = {}) {\n domEventsHelper.detachEvents(this._domEvents, widgetApi)\n\n const actionsQueue = await Promise.all([this.fetch(parameters, options), this.close()])\n\n this.promotedPriceData = actionsQueue[0]\n if (!this.promotedPriceData) {\n this.showFallback()\n return\n }\n\n const promotedPriceData = { ...this.promotedPriceData.data, hasUiTest: this.hasUiTest }\n promotedPriceData.rawDepartureDate = this.promotedPriceData.rawData.departureDate.raw // Required for the UI tests.\n promotedPriceData.mandatoryExtraCostsText = this.promotedPriceData.rawData.price.mandatoryExtraCostsText\n promotedPriceData.staticText = this.promotedPriceData.rawData.price.staticText\n promotedPriceData.scratchPriceDescription = this.promotedPriceData.rawData.price.scratchPriceDescription\n promotedPriceData.outboundDepartureAirportName = this.promotedPriceData.rawData.outboundDepartureAirportName\n this.originalDepartureDate = this.originalDepartureDate\n ? this.originalDepartureDate\n : promotedPriceData.rawDepartureDate\n promotedPriceData.paymentMethod = this.promotedPriceData.rawData?.paymentMethod || null\n\n const newMainContent = elementFromString(PromotedPriceTemplate(promotedPriceData))\n if (this.elements.mainContainer) this.elements.mainContainer.replaceWith(newMainContent)\n this.elements.mainContainer = newMainContent\n Component.initComponentActionElements(newMainContent)\n\n if (this.stickyEnabled) {\n this.elements.stickyContainer = document.body.querySelector(widgetQueries.stickyContainer)\n const mustAppendElement = !this.elements.stickyContainer\n\n const newStickyContent = elementFromString(PromotedPriceStickyTemplate(promotedPriceData))\n if (this.elements.stickyContainer) this.elements.stickyContainer.replaceWith(newStickyContent)\n this.elements.stickyContainer = newStickyContent\n this._showStickyPromotedPrice({ isPricesTab: this.isPricesTab })\n Component.initComponentActionElements(newStickyContent)\n\n if (mustAppendElement) {\n document.body.appendChild(newStickyContent)\n\n const buttonSticky = this.elements.stickyContainer.querySelector(widgetQueries.button)\n buttonSticky.addEventListener('click', ev => this._handlePromotedPriceButtonClick(ev))\n }\n }\n\n this._buildEvents()\n domEventsHelper.attachEvents(this._domEvents, widgetApi)\n\n this.events.emit(promotedPriceEvents.PROMOTED_PRICE_DATA_LOADED, {\n ...this.promotedPriceData.rawData,\n participants: parameters.Participants[0]\n })\n\n return this.open()\n }\n\n showFallback () {\n const accosWithTabs = this.element.closest('.l-site-main__content--accommodation-no-tabs') === null\n if (accosWithTabs) {\n // Fallback shouldn't be shown when acco is configured WITH tabs because user can click on Prices tab by themselves.\n return\n }\n\n domEventsHelper.detachEvents(this._domEvents, widgetApi)\n\n const promotedPriceData = {\n rawData: undefined,\n title: this.locales.fallbackTitle,\n description: this.locales.fallbackDescription,\n buttonText: this.locales.fallbackButtonText ?? this.locales.textButton,\n hasUiTest: this.hasUiTest\n }\n\n const newMainContent = elementFromString(PromotedPriceFallbackTemplate(promotedPriceData))\n if (this.elements.mainContainer) this.elements.mainContainer.replaceWith(newMainContent)\n this.elements.mainContainer = newMainContent\n Component.initComponentActionElements(newMainContent)\n\n if (this.stickyEnabled) {\n this.elements.stickyContainer = document.body.querySelector(widgetQueries.stickyContainer)\n const mustAppendElement = !this.elements.stickyContainer\n\n const newStickyContent = elementFromString(PromotedPriceStickyFallbackTemplate(promotedPriceData))\n if (this.elements.stickyContainer) this.elements.stickyContainer.replaceWith(newStickyContent)\n this.elements.stickyContainer = newStickyContent\n this._showStickyPromotedPrice({ isPricesTab: this.isPricesTab })\n Component.initComponentActionElements(newStickyContent)\n\n if (mustAppendElement) {\n document.body.appendChild(newStickyContent)\n\n const buttonSticky = this.elements.stickyContainer.querySelector(widgetQueries.button)\n buttonSticky.addEventListener('click', ev => this._handlePromotedPriceButtonClick(ev))\n }\n }\n\n this._buildEvents()\n domEventsHelper.attachEvents(this._domEvents, widgetApi)\n\n // emit event for FALLBACK LOADED ?? Do we want to track fallbacks in Google Analytics??\n // this.events.emit(promotedPriceEvents.PROMOTED_PRICE_DATA_LOADED, { ...this.promotedPriceData.rawData, participants: parameters.Participants[0] })\n\n return this.open()\n }\n\n /**\n * Opening animation to show promoted price\n */\n open () {\n return new Promise(resolve => {\n if (this.isOpened) return resolve()\n this.isOpened = true\n this.element.classList.add('is-opening')\n forceRepaint(this.element)\n this.element.classList.add('in')\n const opened = () => {\n this.element.classList.remove('is-opening')\n resolve()\n this.element.removeEventListener('transitionend', opened, false)\n }\n this.element.addEventListener('transitionend', opened, false)\n })\n }\n\n /**\n * Closing animation to hide promoted price\n */\n close () {\n return new Promise(resolve => {\n if (!this.isOpened) return resolve()\n this.isOpened = false\n this.element.classList.add('is-closing')\n forceRepaint(this.element)\n this.element.classList.remove('in')\n const closed = () => {\n this.element.classList.remove('is-closing')\n resolve()\n this.element.removeEventListener('transitionend', closed, false)\n }\n this.element.addEventListener('transitionend', closed, false)\n })\n }\n\n /**\n * Builds a PackageBlockData model from raw API data\n *\n * @param {Object} promotedPriceResponse - The original data retrieved from api\n *\n * @returns {PromotedPriceData}\n */\n _getPromotedPriceData (promotedPriceResponse) {\n return {\n price: getPriceData(promotedPriceResponse, this.locales, this.modalId, this.extraParams.contextitemid),\n packageBlock: getPackageBlockData(promotedPriceResponse),\n skiPassPublicPriceText: getSkiPassPublicPriceText(promotedPriceResponse),\n buttonText: this.locales.textButton,\n yieldCampaignLogo:\n promotedPriceResponse.yieldCampaignLogo && promotedPriceResponse.yieldCampaignLogo.src\n ? { src: promotedPriceResponse.yieldCampaignLogo.src }\n : undefined\n }\n }\n\n /**\n * Gets extra params through hidden inputs on DOM\n *\n * @returns {Object|undefined}\n */\n _getExtraParamsFromDom () {\n const extraParamsElements = this.element.querySelectorAll(widgetQueries.extraParams)\n const extraParams = Object.values(extraParamsElements)\n return extraParams\n ? extraParams.reduce((obj, el) => {\n obj[el.name] = el.value\n return obj\n }, {})\n : undefined\n }\n\n /**\n * Gets dataSource through DOM element if any\n *\n * @returns {Object|undefined}\n */\n _getDataSourceFromDom () {\n const dataSourceElement = this.element.querySelector(widgetQueries.dataSource)\n if (!dataSourceElement) return undefined\n try {\n return JSON.parse(dataSourceElement.innerHTML)\n } catch (e) {\n return undefined\n }\n }\n\n _buildEvents () {\n this._domEvents = [\n [this.element.querySelector(widgetQueries.button), { click: ev => this._handlePromotedPriceButtonClick(ev) }]\n ]\n }\n\n _handlePromotedPriceButtonClick (ev) {\n this.events.emit('promotedPriceClicked', this.promotedPriceData?.rawData)\n }\n\n /**\n * Return a locale strings object\n */\n _getLocales () {\n const customLocaleElement = document.querySelector(`[data-type=\"i18n\"][data-uid=\"${this.element.id}\"]`)\n if (!customLocaleElement) return COMPONENT_LOCALES\n\n let customLocaleData = null\n try {\n customLocaleData = JSON.parse(customLocaleElement.textContent)\n } catch (err) {}\n\n return {\n ...COMPONENT_LOCALES,\n ...customLocaleData\n }\n }\n\n _getOriginalDepartureDate () {\n return this.originalDepartureDate\n }\n\n _showStickyPromotedPrice (context) {\n this.isPricesTab = context.isPricesTab\n\n if (this.isPricesTab) {\n this.elements.stickyContainer?.classList?.add('is-hidden')\n } else {\n this.elements.stickyContainer?.classList?.remove('is-hidden')\n }\n }\n\n addBannerifDiscount (d, locales) {\n const element = document.querySelector('.discount-banner')\n if ((d.price?.discountPercentage || d.yieldCampaignCode) && locales.discountBannerMessage) {\n if (element) return\n const banner = elementFromString(`
${locales.discountBannerMessage}
`)\n const container = document.querySelector('.t-accommodation__main-top-b')\n const carrouselElement = container?.querySelector('.fr-acco-carousel')\n if (carrouselElement) {\n container.insertBefore(banner, carrouselElement.nextSibling)\n } else {\n // If there is no carousel, we need to check if there is a react gallery\n const galleryReactElement = container?.querySelector('.accommodation-carousel')\n banner.classList.add('discount-banner--react-compatible')\n if (galleryReactElement) {\n container.insertBefore(banner, galleryReactElement.nextSibling)\n }\n }\n } else {\n if (element) {\n element.remove()\n }\n }\n }\n}\n\nregisterWidget(PromotedPrice, widgetApi)\n","export const refund = {\n REFUND_REQUESTED: 'refundRequested',\n REFUND_REQUEST_CLICKED: 'click'\n}\n","/**\n * List of events used by reviews list widget\n *\n */\nexport const reviewsList = {\n REVIEWS_LIST_DATA_LOADED: 'reviewsListLoaded',\n REVIEWS_LIST_REVIEW_TRANSLATED: 'reviewsListReviewTranslated',\n REVIEWS_LIST_LANGUAGE_SWITCH: 'reviewsListLanguageSwitch',\n REVIEWS_LIST_PAGINATION: 'reviewsListPagination'\n}\n","/**\n * List of events used by reviews teaser widget\n *\n */\nexport const reviewsTeaser = {\n REVIEWS_TEASER_LOADED: 'loaded',\n REVIEWS_TEASER_MODAL_OPENED: 'reviewsModalOpened'\n}\n","import { FloatingBoxTemplate } from '../../components/floating-box/c-floating-box.template'\nimport { TextboxTemplate } from '../../components/textbox/c-textbox.template'\nimport { FloatingBoxHeaderTemplate } from '../../components/floating-box/c-floating-box__header.template'\nimport { FloatingBoxBodyTemplate } from '../../components/floating-box/c-floating-box__body.template'\nimport { FloatingBoxFooterTemplate } from '../../components/floating-box/c-floating-box__footer.template'\nimport { BtnTemplate } from '../../components/btn/c-btn.template'\nimport { ActionableListTemplate } from '../../components/actionable-list/c-actionable-list.template'\n\n/**\n * The RoomDropdownTemplate contains all the data needed to hydrate a RoomDropdownTemplate component.\n *\n * @typedef {Object} RoomDropdownTemplate\n *\n * @property {String} id - The element id\n * @property {String} placeholder - The dropdown placeholder\n * @property {Object[]} rooms - The rooms to be appended as actionableList\n * @property {Number} roomStockThresholdToShowLowAvailability - The stock threshold to show warning labels\n * @property {String} roomsLeftAvailable - The pattern to warn how many rooms are left, if necessary\n * @property {String} lastRoomAvailable - The pattern to warn about last room available\n * @property {String} onRequestLabel - The text to show when a room is \"on request\"\n * @property {PriceData} priceConfig - The price config\n * @property {String} cancel - The cancel button text\n *\n */\n\nexport const defaultRoomDropdownTemplateData = {\n id: '',\n placeholder: '',\n rooms: [],\n roomStockThresholdToShowLowAvailability: 5,\n roomsLeftAvailable: '',\n lastRoomAvailable: '',\n onRequestLabel: '',\n priceConfig: {},\n cancel: ''\n}\n\nexport const RoomDropdownTemplate = (d) => {\n d = { ...defaultRoomDropdownTemplateData, ...d }\n\n return `
\n ${TextboxTemplate({\n id: `${d.id}__textbox`,\n readonly: true,\n attributes: { 'data-w-room-dropdown__textbox': '' },\n icon: 'chevron-down',\n iconPosition: 'right',\n placeholder: d.placeholder\n })}\n ${FloatingBoxTemplate({\n gradient: true,\n extraClasses: 'w-room-dropdown__floating-box',\n attributes: { 'data-w-room-dropdown__floating-box': '' }\n },\n FloatingBoxHeaderTemplate({}, '') +\n FloatingBoxBodyTemplate({},\n `${d.rooms\n ? `
\n ${ActionableListTemplate({\n attributes: { 'data-w-room-dropdown__rooms-list': '' },\n jsApi: true,\n config: {\n itemType: 'room',\n priceDefaults: d.priceConfig,\n roomStockThresholdToShowLowAvailability: d.roomStockThresholdToShowLowAvailability,\n roomsLeftAvailable: d.roomsLeftAvailable,\n lastRoomAvailable: d.lastRoomAvailable,\n onRequestLabel: d.onRequestLabel\n },\n items: d.rooms\n })}
`\n : ''}`) +\n FloatingBoxFooterTemplate({},\n BtnTemplate({\n variant: 'flat-neutral',\n attributes: { 'data-w-room-dropdown__action': 'cancel' },\n text: d.cancel\n }))\n )}\n
\n`\n}\n","// TODO This widget is not used anymore from room selector, so it can be deleted.\n// We keep the widget live until we can ensure that everything works fine.\nimport domEventsHelper from '../../../js/document/dom-events-helper'\nimport { RoomDropdownTemplate } from './w-room-dropdown.template'\nimport { elementFromString, moveChildrenFrom } from '../../../js/document/html-helper'\nimport Component from '../../../js/core/component/component'\nimport EventEmitter from 'eventemitter3'\nimport { ActionableListTemplate } from '../../components/actionable-list/c-actionable-list.template'\nimport { language } from '../../../js/user/locale-settings'\nimport { register } from '../../../js/document/namespace'\nimport { getStyle } from '../../../js/document/css'\nimport { smooth } from '../../../js/document/scroll'\n\nrequire('../../components/floating-box/main')\n\nconst GLOBAL_LOCALES = register(`window.sundio.i18n.${language}.global`)\nconst COMPONENT_LOCALES = register(`window.sundio.i18n.${language}.roomDropdown`)\n\nconst WIDGET_API = 'w-room-dropdown'\n\nconst WIDGET_QUERIES = {\n url: `data-${WIDGET_API}__url`,\n floatingBox: `[data-${WIDGET_API}__floating-box]`,\n textBox: `[data-${WIDGET_API}__textbox]`,\n cancel: `[data-${WIDGET_API}__action=\"cancel\"]`,\n roomsList: `[data-${WIDGET_API}__rooms-list]`,\n actionableListApi: 'c-actionable-list',\n roomsContainer: '[data-w-room-dropdown__rooms-container]'\n}\n\nconst DEFAULT_OPTIONS = {\n locales: {},\n data: {\n id: '',\n priceConfig: {},\n rooms: []\n }\n}\n\nexport default class RoomDropdown {\n /**\n * Creates a new RoomDropdown\n *\n * @constructor\n *\n * @param {HTMLElement} element - The main HTML element\n * @param {Object} [options={}] - Options object\n * @param {Object} [options.locales] - Localized texts\n * @param {Object} [options.data] - Data to be used\n * @param {String} [options.data.id] - Element ID to be used\n * @param {PriceData} [options.data.priceConfig] - Price config object\n * @param {Object[]} [options.data.rooms] - Rooms to be rendered\n */\n constructor (element, options = {}) {\n this.element = element\n this.options = {\n ...DEFAULT_OPTIONS,\n ...options\n }\n this.events = new EventEmitter()\n\n this.locales = {\n ...GLOBAL_LOCALES,\n ...COMPONENT_LOCALES,\n ...options.locales\n }\n\n this._createHtml()\n this._getHtmlElements()\n this._bindEvents()\n }\n\n /**\n * Updates the room list with given rooms\n *\n * @param {Object[]} rooms - Rooms to be rendered\n * @param {Object} [options={}] - Options object\n * @param {PriceData} [options.priceConfig] - Price config object\n */\n updateRooms (rooms, options = {}) {\n this.options.data.rooms = rooms || []\n if (options.priceConfig) this.options.data.priceConfig = options.priceConfig\n\n this.roomsContainer.innerHTML = ActionableListTemplate({\n attributes: { 'data-w-room-dropdown__rooms-list': '' },\n jsApi: true,\n config: {\n itemType: 'room',\n priceDefaults: this.options.data.priceConfig,\n roomStockThresholdToShowLowAvailability: this.locales.roomStockThresholdToShowLowAvailability,\n roomsLeftAvailable: this.locales.roomsLeftAvailable,\n lastRoomAvailable: this.locales.lastRoomAvailable,\n onRequestLabel: this.locales.onRequestLabel\n },\n items: this.options.data.rooms\n })\n Component.initDocumentComponentsFromAPI(this.roomsContainer)\n this.roomsList = this.element.querySelector(WIDGET_QUERIES.roomsList)\n this._bindRoomsEvents()\n }\n\n _createHtml (data = this.options.data) {\n const roomDropdownHtml = elementFromString(RoomDropdownTemplate(\n {\n ...this.locales,\n ...this.options.data\n }\n ))\n moveChildrenFrom(roomDropdownHtml, this.element, { flush: true, attributes: true })\n Component.initDocumentComponentsFromAPI(this.element)\n }\n\n _getHtmlElements () {\n this.floatingBox = this.element.querySelector(WIDGET_QUERIES.floatingBox)\n this.textBox = this.element.querySelector(WIDGET_QUERIES.textBox)\n this.textBoxInput = this.textBox.querySelector('input')\n this.roomsList = this.element.querySelector(WIDGET_QUERIES.roomsList)\n this.cancel = this.element.querySelector(WIDGET_QUERIES.cancel)\n this.textBoxApi = this.textBox['c-textbox']\n this.floatingBoxApi = this.floatingBox['c-floating-box']\n this.roomsContainer = this.element.querySelector(WIDGET_QUERIES.roomsContainer)\n }\n\n _bindRoomsEvents () {\n this.roomsListApi = this.roomsList[WIDGET_QUERIES.actionableListApi]\n this.roomsListApi.events.on('selectItem', this._selectRoomItem.bind(this))\n }\n\n _bindEvents () {\n this._bindRoomsEvents()\n this.textBoxApi.events.on('focus', this._onFocus, this)\n this._domEvents = [\n [this.cancel, { click: () => this._onCancel() }]\n ]\n domEventsHelper.attachEvents(this._domEvents, WIDGET_API)\n }\n\n _selectRoomItem (ev) {\n this.events.emit('selected', ev)\n this._closeFloatingBox()\n }\n\n _onFocus () {\n this._openFloatingBox()\n }\n\n _openFloatingBox () {\n this.textBoxInput.classList.add('is-focused')\n this.floatingBoxApi.setProp('opened', true)\n this._floatingBoxEvents = [\n [document, { mousedown: (ev) => this._onCancel(ev) }]\n ]\n this._useScrollEffect()\n domEventsHelper.attachEvents(this._floatingBoxEvents, WIDGET_API)\n }\n\n _closeFloatingBox () {\n if (this.floatingBoxApi.getProp('opened')) {\n this.tempSelection = null\n domEventsHelper.detachEvents(this._floatingBoxEvents, WIDGET_API)\n this.floatingBoxApi.setProp('opened', false).then(() => {\n this.textBoxInput.classList.remove('is-focused')\n })\n }\n }\n\n _onCancel (ev) {\n const delegateTarget = ev && ev.target && ev.target.closest(`.${WIDGET_API}`)\n if (!delegateTarget || this.element !== delegateTarget) { this._closeFloatingBox() }\n }\n\n _getSafeDocumentYCoordinate (rootElement) {\n // Calc the viewport free vertical space\n const floatingBoxHeight = this.floatingBox.offsetHeight\n const viewportHeight = rootElement.clientHeight\n const viewportFree = viewportHeight - floatingBoxHeight\n // Calc the distance from documentTop to dropdown including safe margin\n const dropdownOffsetTop = this.element.getBoundingClientRect().top + rootElement.scrollTop\n const dropdownHeight = this.element.offsetHeight\n const dropdownMargin = 20\n const dropdownTargetYCoordinate = dropdownOffsetTop + dropdownHeight + dropdownMargin\n // Return the perfect coordinate to ensure visibility\n return dropdownTargetYCoordinate - viewportFree\n }\n\n _useScrollEffect () {\n const isFloatingBoxFixed = getStyle(this.floatingBox, 'position') === 'fixed'\n const isOpened = getStyle(this.floatingBox, 'display') !== 'none'\n if (isOpened && isFloatingBoxFixed) {\n const documentScrollingElement = document.scrollingElement || document.documentElement\n const safeDocumentYCoordinate = this._getSafeDocumentYCoordinate(documentScrollingElement)\n smooth(documentScrollingElement,\n documentScrollingElement.scrollLeft,\n safeDocumentYCoordinate)\n }\n }\n\n forceQuickClose () {\n this.floatingBoxApi.forceClosedCallback()\n }\n}\n","import { string } from 'prop-types'\n\nexport const propTypes = {\n\n id: string.isRequired,\n\n title: string.isRequired,\n\n description: string,\n\n price: string.isRequired,\n\n stockWarningMessage: string,\n\n characteristicsContentLayout: string\n}\n\nexport const defaultProps = {\n title: '',\n price: '',\n isSelectable: true,\n characteristicsContentLayout: 'default'\n}\n","import { propTypes, defaultProps } from './w-room-list-item.props'\nimport { checkPropTypes } from 'prop-types'\nimport { PriceTemplate } from '../../components/price/c-price.template'\nimport { BtnTemplate } from '../../components/btn/c-btn.template'\nimport { LabelTemplate } from '../../components/label/c-label.template'\nimport { CollapseTemplate, defaultCollapseData } from '../../components/collapse/c-collapse.template'\nimport { PhotoGalleryTemplate } from '../../components/photo-gallery/c-photo-gallery.template'\nimport { getTokenClass } from '../../../js/helpers/tokens'\nimport { accommodationRoomtypesType as events } from '../data-layer/types'\n\n// Import room occupancy tokens\nconst tokensShared = require('./data/w-room-list__tokens.json')['w-room-list']\nconst tokensBrand = (() => {\n try {\n return require(`../../../../brands/${WEBPACK_BRAND}/modules/widgets/room-list/data/w-room-list__tokens.json`)['w-room-list'] // eslint-disable-line\n } catch (error) {\n return {}\n }\n})()\nconst tokens = { ...tokensShared, ...tokensBrand }\n\nexport const dataRoomtypeCollapseListener = events.ROOMTYPES_SELECTOR_TOGGLED\n\nexport const RoomListItemTemplate = (props) => {\n const d = { ...defaultProps, ...props }\n checkPropTypes(propTypes, d, 'prop', 'RoomListItemTemplate')\n\n const classNameLastRoom = d.stockWarningMessageIsLastRoom ? 'w-room-list-item__availability-lastroom' : ''\n\n return `\n
\n
\n
\n ${d.onRequest && d.locales.onRequestLabel && d.isSelectable\n ? LabelTemplate({\n text: d.locales.onRequestLabel,\n variant: 'sale',\n extraClasses: 'w-room-list-item__onrequest'\n })\n : ''}\n ${d.stockWarningMessage && d.isSelectable\n ? LabelTemplate({\n text: d.stockWarningMessage,\n variant: 'sale',\n extraClasses: `w-room-list-item__availability ${classNameLastRoom}`\n })\n : ''}\n
\n ${d.title}\n ${d.description\n ? `${d.description}`\n : ''}\n
\n
\n
\n ${PriceTemplate({\n ...d.priceConfig,\n value: d.price\n })}\n
\n
\n ${d.isSelectable\n ? `
\n
\n ${d.characteristics && d.locales.roomTypeDescriptionTitle\n ? `
\n \n
`\n : ''\n }\n
\n ${d.locales && d.locales.selectRoomButtonText\n ? BtnTemplate({\n extraClasses: 'w-room-list-item__room-selection--button',\n variant: 'trust',\n jsApi: true,\n text: d.locales.selectRoomButtonText,\n attributes: {\n 'data-room-contract-id': d.contractId,\n 'data-room-id': d.id,\n 'data-occupancy-id': d.occupancyId,\n 'data-package-id': d.packageId\n }\n })\n : ''}\n
\n
\n ${d.characteristics\n ? `${CollapseTemplate({\n ...defaultCollapseData,\n ...{\n id: `${d.id}-${d.roomNumber}`,\n track: dataRoomtypeCollapseListener,\n attributes: {\n 'data-roomtype-title': d.title\n },\n html: GetRoomCharacteristicsHtml(d)\n }\n })}`\n : ''\n }\n
`\n : ''}\n
\n `\n}\n\nconst GetRoomCharacteristicsHtml = (d) => {\n let html = ''\n if (d.images) {\n html = PhotoGalleryTemplate({ popupTitle: d.title, elements: d.images })\n }\n return `${html}\n
\n \n
\n`\n}\n","import { RoomListItemTemplate } from './w-room-list-item.template'\nimport { NumberStepperTemplate } from '../../components/number-stepper/c-number-stepper.template'\n\n/**\n * The RoomData contains the information for each room that will be printed as a item for the list.\n *\n * @typedef {Object} RoomData\n *\n * @property {String} id - The identifier of the room\n * @property {Boolean} onRequest - A boolean that indicates if the room is on request or not\n * @property {String} stockWarningMessage - The text to show when as a warning on the stock\n * @property {String} title - Name of the room\n * @property {String} description - Occupancy description of the room\n * @property {Decimal} price - The price value\n * @property {Array} characteristics - Array of texts enumerating the characteristics of the room\n * @property {Object[]} images - Array of objects representing the images of the room\n *\n */\n\n/**\n * The LocalesData contains the locales used for this template.\n *\n * @typedef {Object} LocalesData\n *\n * @property {String} onRequestLabel - The text to show when a room is \"on request\"\n * @property {String} roomTypeDescriptionTitle - The text to show as collapse header of the room characteristics\n * @property {String} selectRoomButtonText - The text to show in the button to select a room\n * @property {String} emptyFilteredRooms - The message to show to the user when the filtered rooms are empty\n * @property {String} roomsNotMatchingOccupancyHeader - The message to show in the header of filtered out rooms (rooms that doesn't match the occupancy filter)\n * @property {String} priceFromWord - The text 'from' to show next to the price when the room will cost that price or greater\n *\n */\n\n/**\n * The OccupancySelectorData contains the information needed for each number stepper to be rendered.\n *\n * @typedef {Object} OccupancySelectorData\n *\n * @property {String} ageProfileId - The age profile identifier (tipically adults, children or babies)\n * @property {Number} current - The current value for the number stepper\n * @property {Number} max - The maximum number that can be inserted in number stepper\n * @property {String} name - The primary label text to name to shown in the number stepper\n * @property {String} description - The secondary label text (less prominent) to show below the primary text\n *\n */\n\n/**\n * The RoomListTemplate contains all the data needed to hydrate a RoomList component.\n *\n * @typedef {Object} RoomListTemplate\n *\n * @property {String} id - The element id\n * @property {String} roomWord - The word to say 'room'\n * @property {String} roomNumber - The room number to numerate the rooms\n * @property {String} roomOccupancy - The room occupancy description to be shown next to the title\n * @property {Boolean} showEmtpyFilteredRoomsMessage - A boolean that indicates if the message about empty rows must be shown\n * @property {String} roomsNotMatchingOccupancyHeader - The message to show when filter results in no rooms available, and all of them are on the grayed zone\n * @property {RoomData[]} rooms - The rooms to be appended as actionableList\n * @property {PriceData} priceConfig - The price config\n * @property {LocalesData} locales - The locales texts\n * @property {OccupancySelectorData[]} occupancySelectors - The rooms to be appended as actionableList\n *\n */\nexport const defaultRoomListTemplateData = {\n id: '',\n roomWord: '',\n roomNumber: 0,\n showEmtpyFilteredRoomsMessage: false,\n roomsNotMatchingOccupancyHeader: '',\n rooms: [],\n roomsNotMatchingOccupancy: [],\n occupancySelectors: []\n}\n\nexport const RoomListTemplate = (d) => {\n d = { ...defaultRoomListTemplateData, ...d }\n\n return `\n
\n
\n
\n
\n \n

${d.roomWord} ${d.roomNumber ? d.roomNumber : ''}

\n ${d.roomOccupancy ? `${d.roomOccupancy}` : ''}\n
\n ${d.occupancySelectors && d.occupancySelectors.length > 0\n ? `\n
\n ${d.occupancySelectors.map(occupancySelector => NumberStepperTemplate(getNumberStepperData(d.id, occupancySelector))).join(' ')}\n
\n `\n : ''}\n
\n
\n
\n
\n
\n `\n}\n\nexport const RoomListItemsTemplate = (d) => {\n return `\n
\n ${d.rooms.map(item => `\n ${RoomListItemTemplate({\n ...item,\n roomNumber: d.roomNumber,\n locales: d.locales,\n isSelectable: true,\n priceConfig: {\n ...d.priceConfig,\n legend: d.showFromTextInRooms\n ? d.locales.priceFromWord\n : ''\n }\n })}\n `).join('')}\n\n ${d.showEmtpyFilteredRoomsMessage\n ? `
\n ${d.locales.emptyFilteredRooms}\n
`\n : ''}\n\n ${d.roomsNotMatchingOccupancy && d.roomsNotMatchingOccupancy.length > 0\n ? ` ${d.roomsNotMatchingOccupancyHeader\n ? `
\n ${d.roomsNotMatchingOccupancyHeader}\n
`\n : ''}\n\n
\n ${d.roomsNotMatchingOccupancy.map(item => `\n\n ${RoomListItemTemplate({\n ...item,\n locales: d.locales,\n priceConfig: {\n ...d.priceConfig,\n legend: d.locales.priceFromWord\n },\n extraClasses: 'w-room-list-item__filtered-out',\n isSelectable: false\n })}\n `).join('')}\n
\n `\n : ''}\n\n
\n `\n}\n\nexport const slpittedRoomListItemsTemplate = ({ d, selectedRoomTypeList, notSelectedRoomTypeList }) => {\n return `
\n
\n ${d.locales?.roomListSelectedTitle ? `
${d.locales.roomListSelectedTitle}
` : ''}\n ${RoomListItemsTemplate({ ...d, rooms: selectedRoomTypeList })}\n
\n ${\n notSelectedRoomTypeList?.length\n? `\n
\n
\n ${d.locales?.roomListOtherTitle ? `
${d.locales.roomListOtherTitle}
` : ''}\n ${RoomListItemsTemplate({ ...d, rooms: notSelectedRoomTypeList })}\n
`\n: ''\n }\n\n
\n `\n}\nfunction getNumberStepperData (roomId, occupancySelector) {\n return {\n id: roomId + `_${occupancySelector.ageProfileId}`,\n value: occupancySelector.current || 0,\n minValue: 0,\n maxValue: occupancySelector.max,\n step: 1,\n label: occupancySelector.name,\n labelDescription: occupancySelector.description,\n extraClasses: 'w-room-list__number-stepper',\n attributes: { 'data-age-profile': occupancySelector.ageProfileId }\n }\n}\n","import { RoomListTemplate, RoomListItemsTemplate, slpittedRoomListItemsTemplate } from './w-room-list.template'\nimport { elementFromString, moveChildrenFrom } from '../../../js/document/html-helper'\nimport Component from '../../../js/core/component/component'\nimport EventEmitter from 'eventemitter3'\nimport { language } from '../../../js/user/locale-settings'\nimport { register } from '../../../js/document/namespace'\nimport SortRoomsBy from '../../../js/data/room-selector/sort-rooms-by'\n\nrequire('../../components/floating-box/main')\n\nconst COMPONENT_LOCALES = register(`window.sundio.i18n.${language}.roomList`)\n\nconst WIDGET_API = 'w-room-list'\nconst NUMBER_STEPPER_API = 'c-number-stepper'\n\nconst WIDGET_QUERIES = {\n url: `data-${WIDGET_API}__url`,\n roomsListSelectRoomButtons: `.${WIDGET_API}-item__room-selection--button`,\n roomListNumberSteppers: `.${WIDGET_API}__number-stepper`,\n roomsListContainerElement: `[data-${WIDGET_API}__rooms-list]`\n}\n\nconst DEFAULT_OPTIONS = {\n locales: {},\n sortRoomsBy: SortRoomsBy.PriceAndName,\n data: {\n id: '',\n priceConfig: {},\n rooms: []\n }\n}\n\nexport default class RoomList {\n /**\n * Creates a new RoomList\n *\n * @constructor\n *\n * @param {HTMLElement} element - The main HTML element\n * @param {Object} [options={}] - Options object\n * @param {Object} [options.locales] - Localized texts\n * @param {Object} [options.data] - Data to be used\n * @param {String} [options.data.id] - Element ID to be used\n * @param {PriceData} [options.data.priceConfig] - Price config object\n * @param {Object[]} [options.data.rooms] - Rooms to be rendered\n */\n constructor (element, options = {}) {\n this.element = element\n this.options = {\n ...DEFAULT_OPTIONS,\n ...options\n }\n this.events = new EventEmitter()\n\n this.locales = {\n ...COMPONENT_LOCALES,\n ...options.locales\n }\n\n this._initOccupancyFilter()\n this._createHtml()\n this._getHtmlElements()\n this._bindEvents()\n this._refreshRooms()\n }\n\n _createHtml (data = this.options.data) {\n const roomListHtml = elementFromString(RoomListTemplate(\n {\n ...data,\n locales: this.locales,\n priceConfig: this.options.data.priceConfig,\n rooms: []\n }\n ))\n\n Component.initDocumentComponentsFromAPI(roomListHtml)\n moveChildrenFrom(roomListHtml, this.element, { flush: true, attributes: true })\n Component.initComponentActionElements(roomListHtml)\n }\n\n _getHtmlElements () {\n this.numberSteppers = [...this.element.querySelectorAll(WIDGET_QUERIES.roomListNumberSteppers)]\n this.numberSteppersApi = this.numberSteppers.map(stepper => stepper[NUMBER_STEPPER_API])\n this.roomsContainer = this.element.querySelector(WIDGET_QUERIES.roomsListContainerElement)\n this._getHtmlElementsInItems()\n }\n\n _getHtmlElementsInItems () {\n this.roomsListSelectRoomButtons = this.element.querySelectorAll(WIDGET_QUERIES.roomsListSelectRoomButtons)\n }\n\n _bindEvents () {\n this.numberSteppersApi.forEach(numberStepperApi => {\n numberStepperApi.events.on('change', this._numberStepperChanged, this)\n })\n this._bindEventsItems()\n }\n\n _bindEventsItems () {\n this.roomsListSelectRoomButtons.forEach(selectRoomButton => {\n selectRoomButton['c-btn'].events.on('clickButton', this._selectRoomItem, this)\n })\n }\n\n _initRoomsContainerEvents () {\n Component.initComponentActionElements(this.roomsContainer)\n }\n\n _selectRoomItem (button, ev) {\n const isOccupationEmptyOrNotSet = this.options.roomSelectorService.occupancies.isOccupationEmptyOrNotSet(this.occupancyFilter)\n\n const eventArgs = {\n roomContractId: ev.attr.roomContractId,\n roomId: ev.attr.roomId,\n occupancyId: ev.attr.occupancyId,\n packageId: isOccupationEmptyOrNotSet ? undefined : ev.attr.packageId,\n occupancy: isOccupationEmptyOrNotSet ? undefined : this.occupancyFilter\n }\n this.events.emit('selected', eventArgs)\n }\n\n _numberStepperChanged () {\n const occupancyFilter = this._getOccupancyFilterFromNumberSteppers()\n this._updateOccupancyFilter(occupancyFilter)\n }\n\n _updateOccupancyFilter (occupancyFilter, options = { silent: false }) {\n this.occupancyFilter = occupancyFilter\n if (!options.silent) {\n this._refreshRooms()\n this._initRoomsContainerEvents()\n }\n }\n\n _initOccupancyFilter () {\n if (this.options.data.occupancySelectors) {\n const occupancyFilter = this.options.data.occupancySelectors.reduce((occupancy, occupancySelector) => {\n const current = occupancySelector.current || 0\n\n occupancy[occupancySelector.ageProfileId] = current\n occupancy.total = (occupancy.total || 0) + current\n return occupancy\n }, {})\n\n this._updateOccupancyFilter(occupancyFilter, { silent: true })\n }\n }\n\n _getOccupancyFilterFromNumberSteppers () {\n return this.numberSteppersApi.reduce((occupancy, stepper) => {\n const ageProfile = stepper.element.attributes['data-age-profile'].value\n occupancy[ageProfile] = stepper.props.value\n occupancy.total = (occupancy.total || 0) + stepper.props.value\n return occupancy\n }, {})\n }\n\n _refreshRooms () {\n const filterResponse = this.options.roomSelectorService\n ? this.options.roomSelectorService.filterRooms(this.options.data.rooms, this.occupancyFilter, this.options.sortRoomsBy)\n : { rooms: this.options.data.rooms, roomsNotMatchingOccupancy: [] }\n\n const isOccupancyFilterDefined = this.numberSteppersApi && this.numberSteppersApi.length > 0\n const isOccupancyFilterEmpty = isOccupancyFilterDefined && this.options.roomSelectorService.occupancies.isOccupationEmptyOrNotSet(this.occupancyFilter)\n\n const selectedRoomTypeRooms = filterResponse.roomsMatchingOccupancy.filter(room => room.selected)\n const notSelectedRoomTypeRooms = filterResponse.roomsMatchingOccupancy.filter(room => !room.selected)\n\n let roomsHtml = null\n if (selectedRoomTypeRooms.length) {\n roomsHtml = elementFromString(slpittedRoomListItemsTemplate({\n d: {\n roomNumber: this.options.data.roomNumber,\n roomsNotMatchingOccupancy: filterResponse.roomsNotMatchingOccupancy,\n showEmtpyFilteredRoomsMessage: filterResponse.roomsMatchingOccupancy.length === 0,\n roomsNotMatchingOccupancyHeader: this._getHeaderTextForRoomsNotMatchingOccupancy(filterResponse.roomsNotMatchingOccupancy),\n showFromTextInRooms: isOccupancyFilterDefined && isOccupancyFilterEmpty,\n locales: this.locales,\n priceConfig: this.options.data.priceConfig\n },\n selectedRoomTypeList: selectedRoomTypeRooms,\n notSelectedRoomTypeList: notSelectedRoomTypeRooms\n }))\n } else {\n roomsHtml = elementFromString(RoomListItemsTemplate({\n roomNumber: this.options.data.roomNumber,\n rooms: filterResponse.roomsMatchingOccupancy,\n roomsNotMatchingOccupancy: filterResponse.roomsNotMatchingOccupancy,\n showEmtpyFilteredRoomsMessage: filterResponse.roomsMatchingOccupancy.length === 0,\n roomsNotMatchingOccupancyHeader: this._getHeaderTextForRoomsNotMatchingOccupancy(filterResponse.roomsNotMatchingOccupancy),\n showFromTextInRooms: isOccupancyFilterDefined && isOccupancyFilterEmpty,\n locales: this.locales,\n priceConfig: this.options.data.priceConfig\n }))\n }\n\n Component.initDocumentComponentsFromAPI(roomsHtml)\n moveChildrenFrom(roomsHtml, this.roomsContainer, { flush: true, attributes: false })\n this._getHtmlElementsInItems()\n this._bindEventsItems()\n }\n\n _getHeaderTextForRoomsNotMatchingOccupancy (roomsNotMatchingOccupancy) {\n let message = ''\n if (roomsNotMatchingOccupancy && roomsNotMatchingOccupancy.length > 0) {\n message = (this.locales.roomsNotMatchingOccupancyHeader || '').replace('{n}', roomsNotMatchingOccupancy.length)\n }\n return message\n }\n}\n","/**\n * The RoomSelectorTemplateData contains all data needed to hydrate a RoomSelector view\n *\n * @typedef {Object} RoomSelectorTemplateData\n *\n * @property {String} [headerText]\n */\n\nexport const defaultRoomSelectorData = {\n headerText: '[Select your rooms]'\n}\n\nexport const RoomSelectorTemplate = (d) => {\n d = { ...defaultRoomSelectorData, ...d }\n\n return `\n

${d.headerText}

\n
\n
\n`\n}\n","import { BoxTemplate } from '../../components/box/c-box.template'\n\n/**\n * The RoomSelectorDropdownTemplateData contains all data needed to hydrate a RoomSelector view\n *\n * @typedef {Object} RoomSelectorDropdownTemplateData\n *\n * @property {Boolean} [showMessage] - Indicates if the message must be shown\n * @property {String} [state] - State of the message which sets one color or another\n * @property {String[]} [messagesText] - List of texts to show\n * @property {String} [token] - Token name to be used in the title so each brand can use a different style in the title\n * @property {String} [extraClasses] - Extra classes to be injected in the main
of the rendered html\n * @property {String} [showArrow] - Indicates if an arrow must be shown in the box of the message\n * @property {String} [arrowPosition] - [top|bottom|left|right] Indicates the position of the arrow\n */\nexport const defaultRoomSelectorMessageData = {\n showMessage: true,\n state: 'info',\n messagesText: [],\n showArrow: false,\n arrowPosition: 'top',\n token: '',\n extraClasses: ''\n}\n\nexport const RoomSelectorMessageTemplate = (d) => {\n d = { ...defaultRoomSelectorMessageData, ...d }\n\n const messages = d.messagesText && d.messagesText.filter(msg => msg && msg.length !== '')\n const showMessageBox = d.showMessage && messages.length > 0\n const extraClassArrowPosition = d.showArrow && d.arrowPosition ? `c-box--arrow-${d.arrowPosition}` : ''\n\n const result = showMessageBox\n ? `
\n ${BoxTemplate({\n variant: d.showArrow ? 'arrow' : '',\n html: `
\n ${messages.map(message => `

${message}

`).join('')}\n
`,\n extraClasses: `${extraClassArrowPosition} w-room-selector__message-box cs-state-${d.state} cs-state-${d.state}--light`\n })}\n
`\n : ''\n return result\n}\n\nexport const RoomSelectorWarningTemplate = (d) => {\n const messages = d.messagesText && d.messagesText.filter(msg => msg && msg.length !== '')\n return `\n
\n ${messages.map(message => `

${message}

`).join('')}\n
\n `\n}\n","import { BoxTemplate } from '../../components/box/c-box.template'\n\n/**\n * The ProfileData contains the information needed for each age profile to be rendered.\n *\n * @typedef {Object} AgeProfileData\n *\n * @property {String} title - Title of the profile (example: 'adults', 'children' or 'babies')\n * @property {String} text - Text to describe the profile\n *\n */\n\n/**\n * The RoomSelectorDropdownTemplateData contains all data needed to hydrate a RoomSelector view\n *\n * @typedef {Object} RoomSelectorAgeProfilesMessageData\n *\n * @property {String} [headerTitle] - Title text that will be shown always\n * @property {String} [headerToggleText] - Text to show in the link to expand the content of the message\n * @property {String} [contentTitle] - Title text to show on the header of the content part that can be collapsed.\n * @property {String} [collapseId] - Identifier for the collapsible\n * @property {AgeProfileData[]} [profiles] - Array of profiles that will be rendered as part of the content\n */\nexport const defaultRoomSelectorAgeProfilesMessageData = {\n headerTitle: '',\n headerToggleText: '',\n contentTitle: '',\n collapseId: '',\n profiles: []\n}\n\nexport const RoomSelectorAgeProfilesMessageTemplate = (d) => {\n d = { ...defaultRoomSelectorAgeProfilesMessageData, ...d }\n\n const result = `
\n ${BoxTemplate({\n html: `\n
\n ${d.headerTitle}\n \n
\n
\n
\n
${d.contentTitle}
\n \n ${d.profiles\n ? `${d.profiles.map(profile => `\n \n \n \n \n `).join('')}`\n : ''}\n
${profile.title}${profile.text}
\n
\n
`,\n extraClasses: 'w-room-selector__age-profile-message-box cs-default cs-default--light'\n })}\n
`\n return result\n}\n","import { arrayOf, bool, number, objectOf, oneOfType, shape, string } from 'prop-types'\n\nexport const propTypes = {\n\n id: string.isRequired,\n\n roomWord: string.isRequired,\n\n roomNumber: number.isRequired,\n\n roomName: string.isRequired,\n\n roomDescription: string,\n\n price: shape({\n value: string,\n currencyPosition: string,\n currency: string,\n legend: string,\n priceSuffix: string\n }).isRequired,\n\n infoMessage: string,\n\n errorMessage: string,\n\n stockWarningMessage: string,\n\n onRequest: bool,\n\n onRequestLabel: string,\n\n removable: bool,\n\n isFlexibleAllocation: bool,\n\n characteristicsContentLayout: string,\n\n occupancySelectors: arrayOf(\n shape({\n id: string,\n current: number,\n min: number,\n max: number,\n name: string,\n description: string\n })\n ),\n\n /** Extra class names to be appended on root element */\n extraClasses: string,\n\n /** Extra attributes to be appended on root element */\n attributes: objectOf(\n oneOfType([\n bool,\n string\n ])\n )\n}\n\nexport const defaultProps = {\n id: '',\n roomWord: '',\n roomNumber: 0,\n roomName: '',\n price: {\n value: '',\n currencyPosition: '',\n currency: '',\n legend: ''\n },\n removable: false,\n isFlexibleAllocation: false,\n characteristicsContentLayout: 'default'\n}\n","import { propTypes, defaultProps } from './w-room-occupancy.props'\nimport { checkPropTypes } from 'prop-types'\nimport { NumberStepperTemplate } from '../../components/number-stepper/c-number-stepper.template'\nimport { PriceTemplate } from '../../components/price/c-price.template'\nimport { BtnTemplate } from '../../components/btn/c-btn.template'\nimport { LabelTemplate } from '../../components/label/c-label.template'\nimport { encodeAttributes } from '../../../js/helpers/string'\nimport { CollapseTemplate, defaultCollapseData } from '../../components/collapse/c-collapse.template'\nimport { PhotoGalleryTemplate } from '../../components/photo-gallery/c-photo-gallery.template'\nimport { getTokenClass } from '../../../js/helpers/tokens'\n\n// Import room occupancy tokens\nconst tokensShared = require('./data/w-room-occupancy__tokens.json')['w-room-occupancy']\nconst tokensBrand = (() => {\n try {\n return require(`../../../../brands/${WEBPACK_BRAND}/modules/widgets/room-occupancy/data/w-room-occupancy__tokens.json`)['w-room-occupancy'] // eslint-disable-line\n } catch (error) {\n return {}\n }\n})()\nconst tokens = { ...tokensShared, ...tokensBrand }\n\n/**\n * The RoomOccupancyTemplate contains all the data needed to hydrate a RoomOccupancy component.\n *\n * @typedef {Object} RoomOccupancyTemplate\n *\n * @property {String} id - The identifier of the room\n * @property {String} extraClasses - The extra styles that will be applied\n * @property {String} attributes - Attributes to add to the root element of the widget\n * @property {String} roomWord - The word to say 'room'\n * @property {String} roomNumber - The room number to numerate the rooms\n * @property {String} errorMessage - The error message to show when the occupancy of the room is wrong\n * @property {Boolean} onRequest - A boolean that indicates if the room is on request or not\n * @property {String} onRequestLabel - The text to show when a room is \"on request\"\n * @property {String} stockWarningMessage - The text to show when as a warning on the stock\n * @property {String} roomName - Name of the room\n * @property {String} roomDescription - Occupancy description of the room\n * @property {Decimal} price - The price value\n * @property {Array} characteristics - Array of texts enumerating the characteristics of the room\n * @property {Object[]} images - Array of objects representing the images of the room\n * @property {String} roomTypeDescriptionTitle - The text to show as collapse header of the room characteristics\n * @property {Boolean} removable - Indicates if the room can be removed, so it will show an icon/button to remove the room\n * @property {Boolean} isFlexibleAllocation - Indicates if the allocation can be changed (flexible) or not\n * @property {String} characteristicsContentLayout - Defines the layout of the characteristics content\n * @property {Array} occupancySelectors - An Array of occupancy selectors {OccSelector} with the information for them\n * @property {String} OccupancySelector.id - identifier of the selector (ex: 'adults')\n * @property {String} OccupancySelector.current - value of the occupancy (ex: 2)\n * @property {String} OccupancySelector.min - min value (ex: 1)\n * @property {String} OccupancySelector.max - max value (ex: 4)\n * @property {String} OccupancySelector.name - name of the occupancy (ex: \"Volwassen\")\n * @property {String} OccupancySelector.description - description of the occupancy (ex: \"from 17 years\")\n *\n */\nexport const RoomOccupancyTemplate = (props) => {\n const d = { ...defaultProps, ...props }\n checkPropTypes(propTypes, d, 'prop', 'RoomOccupancyTemplate')\n\n return `\n
\n
\n \n

${d.roomWord} ${d.roomNumber ? d.roomNumber : ''}

\n
\n
\n
\n
\n
\n ${d.onRequest && d.onRequestLabel\n ? LabelTemplate({\n text: d.onRequestLabel,\n variant: 'sale',\n extraClasses: 'w-room-occupancy__onrequest'\n })\n : ''}\n ${d.stockWarningMessage\n ? LabelTemplate({\n text: d.stockWarningMessage,\n variant: 'sale',\n extraClasses: 'w-room-occupancy__availability'\n })\n : ''}\n
\n ${d.roomName}\n ${d.roomDescription\n ? `${d.roomDescription}`\n : ''}\n
\n
\n
\n ${PriceTemplate(d.price)}\n
\n
\n ${d.errorMessage\n ? `
\n ${d.errorMessage}\n
`\n : ''\n }\n ${d.isFlexibleAllocation && (d.occupancySelectors && d.occupancySelectors.length > 0)\n ? `
\n ${d.occupancySelectors.map(occupancySelector => NumberStepperTemplate(getNumberStepperData(d.id, occupancySelector))).join(' ')}\n
`\n : ''}\n\n ${d.characteristics\n ? `
\n
\n \n
\n ${CollapseTemplate({\n ...defaultCollapseData,\n ...{\n id: `${d.id}-${d.index}`,\n html: GetRoomCharacteristicsHtml(d)\n }\n })}\n
`\n : ''\n }\n
\n ${d.removable\n ? BtnTemplate({\n variant: 'icon-only',\n icon: 'bin',\n extraClasses: 'w-room-occupancy__remove-button',\n jsApi: true\n })\n : ''}\n
\n
`\n}\n\nfunction getNumberStepperData (id, d) {\n return {\n id: id + `_${d.id}`,\n value: d.current,\n minValue: d.min,\n maxValue: d.max,\n step: 1,\n label: d.name,\n labelDescription: d.description,\n extraClasses: 'w-room-occupancy__number-stepper',\n attributes: { 'data-age-profile': d.id }\n }\n}\n\nconst GetRoomCharacteristicsHtml = (d) => {\n let html = ''\n if (d.images) {\n html = PhotoGalleryTemplate({ popupTitle: d.title, elements: d.images })\n }\n return `${html}\n
\n \n
\n`\n}\n","import { registerWidget } from '../../../js/core/widget/widget-directory'\n\nconst EventEmitter = require('eventemitter3')\nconst WIDGET_API = 'w-room-occupancy'\nconst WIDGET_QUERIES = {\n numberSteppers: `.${WIDGET_API}__number-stepper`,\n removeRoomButton: `.${WIDGET_API}__remove-button`\n\n}\nconst NUMBER_STEPPER_API = 'c-number-stepper'\n\nexport default class RoomOccupancy {\n /**\n * Creates a new RoomOccupancy\n *\n * @constructor\n *\n * @param {HTMLElement} element - The HTML widget element.\n * @param {options} [options={}] - Options object\n *\n */\n constructor (element, options = {}) {\n this.element = element\n this.options = {\n ...options\n }\n\n this.elements = this.runElementQueries()\n\n this.events = new EventEmitter()\n this.NumberSteppersApi = []\n\n this._initNumberSteppersApi()\n this._bindElements()\n\n this.element[WIDGET_API] = {\n element: this.element,\n options: this.options,\n events: this.events\n }\n }\n\n runElementQueries () {\n return {\n numberSteppers: [...this.element.querySelectorAll(WIDGET_QUERIES.numberSteppers)],\n removeRoomButton: this.element.querySelector(WIDGET_QUERIES.removeRoomButton)\n }\n }\n\n /**\n * Make accessible elements Api of componets to this\n *\n * @returns {Object}\n */\n _initNumberSteppersApi () {\n this.numberSteppersApi = this.elements.numberSteppers.map(stepper => stepper[NUMBER_STEPPER_API])\n }\n\n /**\n * Bind events of the NumberSteppers and RemoveButton\n */\n _bindElements () {\n if (this.numberSteppersApi && this.numberSteppersApi.length > 0) {\n this.numberSteppersApi.forEach(api => {\n api.events.on('change', this._handleRoomOccupancyChanged, this)\n })\n }\n\n if (this.elements.removeRoomButton) {\n this.elements.removeRoomButton['c-btn'].events.on('clickButton', this._handleRemoveRoomButtonClicked, this)\n }\n }\n\n /**\n * Gets the room occupancy by ageProfile\n *\n * @returns {PartyComposition}\n */\n getOccupancy () {\n return this.numberSteppersApi.reduce((occupancy, stepper) => {\n const ageProfile = stepper.element.attributes['data-age-profile'].value\n occupancy[ageProfile] = stepper.props.value\n\n return occupancy\n }, {})\n }\n\n /**\n * Common code to handle event of number of occupancy changed\n */\n _handleRoomOccupancyChanged () {\n this.events.emit('roomOccupancyChanged', this.getOccupancy())\n }\n\n /**\n * handle event remove room clicked button\n */\n _handleRemoveRoomButtonClicked () {\n this.events.emit('removeRoom', this.element.id)\n }\n}\n\nregisterWidget(RoomOccupancy, WIDGET_API)\n","/**\n * Enumeration for the position of the currency symbol.\n */\nconst CurrencySymbolPosition = {\n /**\n * Currency not shown.\n */\n NotShown: 'NotShown',\n\n /**\n * The currency must be shown before the amount.\n */\n BeforeAmount: 'BeforeAmount',\n /**\n * The currency must be shown after the amount.\n */\n AfterAmount: 'AfterAmount',\n\n /**\n * Checks if a value is a member of the enumeration.\n */\n isValid: (enumValue) => {\n return Object.values(CurrencySymbolPosition).includes(enumValue)\n }\n}\n\nexport default CurrencySymbolPosition\n","import RoomList from '../room-list/main'\r\nimport Component from '../../../js/core/component/component'\r\nimport { language } from '../../../js/user/locale-settings'\r\nimport { register } from '../../../js/document/namespace'\r\nimport { registerWidget } from '../../../js/core/widget/widget-directory'\r\nimport { RoomSelectorTemplate } from './w-room-selector.template'\r\nimport { RoomSelectorListTemplate } from './w-room-selector__list.template'\r\nimport { RoomSelectorMessageTemplate, RoomSelectorWarningTemplate } from './w-room-selector__message.template'\r\nimport { RoomSelectorAgeProfilesMessageTemplate } from './w-room-selector__age-profiles-message.template'\r\nimport RoomSelectorService from '../../../js/data/room-selector/room-selector-service'\r\nimport { RoomOccupancyTemplate } from '../room-occupancy/w-room-occupancy.template'\r\nimport RoomOccupancy from '../room-occupancy/main'\r\nimport { elementFromString, flush } from '../../../js/document/html-helper'\r\nimport PriceTableType from '../booking-gate/price-table-type'\r\nimport CurrencySymbolPosition from './currency-symbol-position'\r\nimport { smooth } from '../../../js/document/scroll'\r\n\r\nconst EventEmitter = require('eventemitter3')\r\nconst globalLocales = register(`window.sundio.i18n.${language}.global`)\r\nconst componentLocales = register(`window.sundio.i18n.${language}.roomSelector`)\r\n\r\nconst DEFAULT_OPTIONS = {\r\n locales: {},\r\n hasFlexibleAllocation: true,\r\n allInSameRoom: false,\r\n priceTableType: PriceTableType.DepartureDateAndRoomType,\r\n roomCode: null,\r\n roomOccupancyId: null,\r\n occupation: null\r\n}\r\n\r\nconst WIDGET_API = 'w-room-selector'\r\nconst WIDGET_QUERIES = {\r\n mainContainerElement: `[data-${WIDGET_API}--main-container]`,\r\n roomSelectorItemList: `.${WIDGET_API}__items-list`,\r\n wrongAllocationMessageContentElement: `.${WIDGET_API}__wrong-allocation-message--content`\r\n}\r\n\r\nexport default class RoomSelector {\r\n constructor (element, participants, data, options = {}) {\r\n this.element = element\r\n this.participants = data.participants || participants\r\n this.data = data\r\n this.options = {\r\n ...DEFAULT_OPTIONS,\r\n ...options\r\n }\r\n this.locales = {\r\n ...globalLocales,\r\n ...componentLocales,\r\n ...this.options.locales\r\n }\r\n\r\n this.events = new EventEmitter()\r\n this.roomSelectorService = new RoomSelectorService(this.data)\r\n\r\n this._initState()\r\n this._buildHtml()\r\n this._updateUi()\r\n }\r\n\r\n getAllocatedPackages () {\r\n return this.allocatedPackages\r\n }\r\n\r\n getUnallocatedOccupation () {\r\n return this.state.unallocatedOccupation\r\n }\r\n\r\n getTotalOccupation () {\r\n if (this.options.hasFlexibleAllocation) {\r\n return this.totalOccupation\r\n } else {\r\n // totalOccupation for DP it's empty\r\n return this.roomSelectorService.getOccupationFromBirthDates(this.participants)\r\n }\r\n }\r\n\r\n _initState () {\r\n this.allocatedPackages = null\r\n this.totalOccupation = this.options.hasFlexibleAllocation\r\n ? this.roomSelectorService.getOccupationFromBirthDates(this.participants)\r\n : this.roomSelectorService.getOccupationBaseObject()\r\n\r\n this.indexFirstPackage = -1\r\n let firstPackage = null\r\n\r\n if (this.options.priceTableType === PriceTableType.DepartureDateAndRoomType && this.options.roomCode) {\r\n const roomOccupancies = this.options.roomOccupancyId\r\n ? this.roomSelectorService.getOccupanciesByRoomIdAndRoomOccupancyId(this.options.roomCode, this.options.roomOccupancyId)\r\n : this.roomSelectorService.getOccupanciesByRoomId(this.options.roomCode)\r\n\r\n if (this.options.hasFlexibleAllocation) {\r\n const { occupancy: bestOccupancy, occupation: bestOccupation } = this.roomSelectorService.getBestOccupancyForOccupation(roomOccupancies, this.totalOccupation)\r\n const bestPackage = this.roomSelectorService.packages.getPackagesByRoomId(this.options.roomCode).find(pkg => pkg.occupancyId === bestOccupancy.id)\r\n\r\n firstPackage = {\r\n roomContractId: this.options.roomContractId,\r\n roomId: this.options.roomCode,\r\n packageId: bestPackage.id,\r\n occupation: bestOccupation\r\n }\r\n } else {\r\n const roomOccupancy = roomOccupancies.find(occupancy => this._findOccupation(this.options.occupation, occupancy.limits))\r\n\r\n if (roomOccupancy) {\r\n const selectedPackage = this.roomSelectorService.packages.getPackagesByRoomId(this.options.roomCode).find(pkg => pkg.occupancyId === roomOccupancy.id)\r\n\r\n firstPackage = {\r\n roomId: this.options.roomCode,\r\n roomContractId: this.options.roomContractId,\r\n packageId: selectedPackage.id,\r\n occupation: roomOccupancy\r\n }\r\n }\r\n }\r\n }\r\n\r\n const state = {\r\n packages: undefined,\r\n unallocatedOccupation: this.totalOccupation\r\n }\r\n\r\n if (this.options.hasFlexibleAllocation) {\r\n // Pre-packaging.\r\n state.packages = []\r\n\r\n if (firstPackage) {\r\n // Price table 1.0.\r\n this.indexFirstPackage = 0\r\n state.packages.push(firstPackage)\r\n state.unallocatedOccupation = this.roomSelectorService.getOccupationDifference(this.totalOccupation, firstPackage.occupation)\r\n }\r\n } else {\r\n // Dynamic packaging.\r\n if (firstPackage) {\r\n this.indexFirstPackage = this.participants.findIndex(participant => {\r\n const occupation = this.roomSelectorService.getOccupationFromBirthDates(participant)\r\n return this._findOccupation(occupation, firstPackage.occupation.limits)\r\n })\r\n }\r\n\r\n if (this.indexFirstPackage < 0 && firstPackage) {\r\n this.indexFirstPackage = this.participants.findIndex(participant => this.roomSelectorService.getOccupationFromBirthDates(participant).total === firstPackage.occupation.limits.total.max)\r\n }\r\n\r\n state.packages = this.participants.map((currentRoomParticipants, idx) => ({\r\n roomId: this.indexFirstPackage === idx ? firstPackage.roomId : undefined,\r\n roomContractId: this.indexFirstPackage === idx ? firstPackage.roomContractId : undefined,\r\n packageId: this.indexFirstPackage === idx ? firstPackage.packageId : undefined,\r\n occupation: this.roomSelectorService.getOccupationFromBirthDates(currentRoomParticipants)\r\n }))\r\n }\r\n\r\n this.state = state\r\n }\r\n\r\n _findOccupation (occupation, occupationLimits) {\r\n const match = occupation.adults === occupationLimits.adults.max &&\r\n occupation.children === occupationLimits.children.max &&\r\n occupation.babies === occupationLimits.babies.max\r\n\r\n return match\r\n }\r\n\r\n _updateState (newState, options = { silent: false }) {\r\n const unallocatedOccupation = this.options.hasFlexibleAllocation\r\n ? newState.packages.reduce((occ, pkg) => this.roomSelectorService.getOccupationDifference(occ, pkg.occupation), { ...this.totalOccupation })\r\n : this.state.unallocatedOccupation\r\n\r\n this.state = {\r\n ...newState,\r\n unallocatedOccupation\r\n }\r\n\r\n if (!options.silent) {\r\n this._updateUi()\r\n }\r\n }\r\n\r\n _buildHtml () {\r\n this.element.innerHTML = RoomSelectorTemplate(this.locales)\r\n this.elements = this._runElementQueries()\r\n }\r\n\r\n _runElementQueries () {\r\n return {\r\n mainContainerElement: this.element.querySelector(WIDGET_QUERIES.mainContainerElement)\r\n }\r\n }\r\n\r\n _addRoomsAllocated () {\r\n let statusOk = true\r\n\r\n this.state.packages.forEach((pkg, idx) => {\r\n if (!this.options.hasFlexibleAllocation && !pkg.roomId) {\r\n this._addRoomAllocatedNotSelected(pkg, idx)\r\n } else {\r\n const roomStatus = this._addRoomAllocatedAndSelected(pkg, idx)\r\n statusOk = statusOk && roomStatus\r\n }\r\n })\r\n\r\n return statusOk\r\n }\r\n\r\n _addRoomAllocatedNotSelected (pkg, idx) {\r\n const roomNumber = idx + 1\r\n const roomListElement = elementFromString(RoomSelectorListTemplate())\r\n const roomListApi = this._roomSelectorListHtml(roomListElement, pkg.occupation, roomNumber)\r\n roomListApi.events.on('selected', (ev) => this._handleAddRoomDynamic(idx, ev.roomId))\r\n\r\n this.elements.mainContainerElement.appendChild(roomListElement)\r\n Component.initComponentActionElements(roomListElement)\r\n }\r\n\r\n _addRoomListWithoutAllocation () {\r\n const roomNumber = this.state.packages.length + 1\r\n const roomListElement = elementFromString(RoomSelectorListTemplate())\r\n const roomListApi = this._roomSelectorListHtml(roomListElement, this.state.unallocatedOccupation, roomNumber)\r\n roomListApi.events.on('selected', (ev) => this._handleAddRoom(ev.roomId, ev.packageId, ev.occupancy))\r\n\r\n this.elements.mainContainerElement.appendChild(roomListElement)\r\n Component.initComponentActionElements(roomListElement)\r\n }\r\n\r\n _addSpecialAgeProfileMessage () {\r\n const showMessage = this.data.isSpecialAgeProfile\r\n\r\n if (showMessage) {\r\n const specialAgeProfileMessageData = {\r\n headerTitle: this.locales.specialAgeProfileHeaderTitle,\r\n headerToggleText: this.locales.specialAgeProfileHeaderToggleText,\r\n collapseId: 'room-selector-age-profiles',\r\n contentTitle: this.locales.specialAgeProfileContentTitle,\r\n profiles: this.roomSelectorService.ageProfiles.getValidProfiles()\r\n .map(ageProfile => ({\r\n title: this._getAgeProfileName(ageProfile.id),\r\n text: this._getAgeRangeDescription(ageProfile)\r\n }))\r\n }\r\n const specialAgeProfileMessageElement = elementFromString(RoomSelectorAgeProfilesMessageTemplate(specialAgeProfileMessageData))\r\n this.elements.mainContainerElement.appendChild(specialAgeProfileMessageElement)\r\n Component.initDocumentComponentsFromAPI(specialAgeProfileMessageElement)\r\n }\r\n }\r\n\r\n _addInfoMessageWithPendingAllocation () {\r\n const pendingAllocationMessageData = {\r\n messagesText: [this._getAllAgeProfilesPendingToAllocateMessages()],\r\n token: 'pending-allocation-message',\r\n extraClasses: 'pending-allocation-message'\r\n }\r\n const pendingAllocationMessageElement = elementFromString(RoomSelectorMessageTemplate(pendingAllocationMessageData))\r\n this.elements.mainContainerElement.appendChild(pendingAllocationMessageElement)\r\n }\r\n\r\n _addErrorMessageWrongAllocation () {\r\n const messagesText = [this.locales.wrongAllocationMessageToContinue]\r\n\r\n const errorWrongAllocationData = {\r\n messagesText,\r\n extraClasses: 'wrong-allocation-message'\r\n }\r\n const errorWrongAllocationElement = elementFromString(RoomSelectorWarningTemplate(errorWrongAllocationData))\r\n this.elements.mainContainerElement.appendChild(errorWrongAllocationElement)\r\n }\r\n\r\n _roomSelectorListHtml (roomSelectorElement, occupationToAllocate, roomNumber) {\r\n const roomSelectorListData = this.roomSelectorService.getListOfRoomsSelectableByOccupation(occupationToAllocate, this.options.hasFlexibleAllocation, roomNumber)\r\n const availableRoomsListData = this._getAvailableRoomsListData(roomSelectorListData)\r\n\r\n if (!availableRoomsListData || availableRoomsListData.length === 0) {\r\n const wrongAllocationMessageContentElements = roomSelectorElement.querySelectorAll(WIDGET_QUERIES.wrongAllocationMessageContentElement)\r\n\r\n // Set the message that there are no compatible rooms with the people pending to allocate (so the message\r\n // indicating the participants per age category pending to allocate will be overwritten).\r\n wrongAllocationMessageContentElements.forEach(element => {\r\n element.innerText = this.locales.noCompatibleRoomsForPeoplePendingToAllocateText\r\n })\r\n }\r\n\r\n const roomListApi = new RoomList(roomSelectorElement, {\r\n locales: this.locales,\r\n extraClasses: 'w-room-selector__item-wrapper',\r\n roomSelectorService: this.roomSelectorService,\r\n data: {\r\n id: `${this.element.id}__list-item`,\r\n roomWord: this.locales.roomWord,\r\n roomNumber,\r\n occupationToAllocate,\r\n roomOccupancy: this.options.hasFlexibleAllocation ? '' : this._getPartyCompostionAllocatedDescription(occupationToAllocate),\r\n occupancySelectors: this.options.hasFlexibleAllocation ? this._getOccupancySelectorsForRoomList(occupationToAllocate) : null,\r\n rooms: availableRoomsListData,\r\n priceConfig: this._getCurrencyConfig()\r\n }\r\n })\r\n\r\n return roomListApi\r\n }\r\n\r\n _getCurrencyConfig () {\r\n let currencyConfig\r\n\r\n if (this.data.currencySettings) {\r\n switch (this.data.currencySettings.symbolPosition) {\r\n case CurrencySymbolPosition.BeforeAmount:\r\n currencyConfig = {\r\n currencyPosition: 'before',\r\n currency: this.data.currencySettings.symbol\r\n }\r\n break\r\n case CurrencySymbolPosition.AfterAmount:\r\n currencyConfig = {\r\n currencyPosition: 'after',\r\n currency: this.data.currencySettings.symbol\r\n }\r\n break\r\n case CurrencySymbolPosition.NotShown:\r\n currencyConfig = {\r\n currencyPosition: '',\r\n currency: ''\r\n }\r\n break\r\n default:\r\n currencyConfig = undefined\r\n break\r\n }\r\n }\r\n\r\n return currencyConfig\r\n }\r\n\r\n _handleAddRoomDynamic (idx, roomId) {\r\n const roomOccupancies = this.roomSelectorService.getOccupanciesByRoomId(roomId)\r\n const { occupancy: bestOccupancy } = this.roomSelectorService.getBestOccupancyForOccupation(roomOccupancies, this.state.packages[idx].occupation)\r\n const bestPackage = this.roomSelectorService.packages.getPackagesByRoomId(roomId).find(pkg => pkg.occupancyId === bestOccupancy.id)\r\n\r\n const newStatePackages = [\r\n ...this.state.packages\r\n ]\r\n\r\n newStatePackages[idx].roomId = newStatePackages[idx].roomId || roomId\r\n newStatePackages[idx].packageId = newStatePackages[idx].packageId || bestPackage.id\r\n newStatePackages[idx].roomContractId = newStatePackages[idx].roomContractId || bestPackage.contractId\r\n\r\n const newState = {\r\n ...this.state,\r\n packages: newStatePackages\r\n }\r\n\r\n this._updateState(newState)\r\n }\r\n\r\n _handleAddRoom (roomId, packageId, occupancy) {\r\n let newPackage\r\n\r\n if (occupancy && packageId) {\r\n // filtered by an occupancy, so we know how many adults/children/baby we need to allocate\r\n const packageObj = this.roomSelectorService.packages.getPackageById(packageId)\r\n if (packageObj) {\r\n newPackage = {\r\n roomId,\r\n packageId,\r\n occupation: occupancy\r\n }\r\n }\r\n } else {\r\n // not filtered by an occupancy, so we need to find the best occupancy for that room\r\n const roomOccupancies = this.roomSelectorService.getOccupanciesByRoomId(roomId)\r\n const { occupancy: bestOccupancy, occupation: bestOccupation } = this.roomSelectorService.getBestOccupancyForOccupation(roomOccupancies, this.state.unallocatedOccupation)\r\n const bestPackage = this.roomSelectorService.packages.getPackagesByRoomId(roomId).find(pkg => pkg.occupancyId === bestOccupancy.id)\r\n if (bestPackage) {\r\n newPackage = {\r\n roomId,\r\n packageId: bestPackage.id,\r\n occupation: bestOccupation\r\n }\r\n }\r\n }\r\n\r\n if (newPackage) {\r\n const newState = {\r\n packages: [\r\n ...this.state.packages,\r\n newPackage\r\n ]\r\n }\r\n this._updateState(newState)\r\n this._scrollToLastRoomAdded()\r\n }\r\n }\r\n\r\n _scrollToLastRoomAdded () {\r\n const yOffset = -10\r\n const roomsAdded = this.elements.mainContainerElement.querySelectorAll('.w-room-occupancy')\r\n if (roomsAdded.length) {\r\n const documentScrollingElement = document.scrollingElement || document.documentElement\r\n const lastRoomAdded = roomsAdded[roomsAdded.length - 1]\r\n const lastRoomAddedY = lastRoomAdded.getBoundingClientRect().top + window.pageYOffset + yOffset\r\n smooth(documentScrollingElement, 0, lastRoomAddedY)\r\n }\r\n }\r\n\r\n _getAvailableRoomsListData (roomSelectorListData) {\r\n roomSelectorListData.forEach(room => {\r\n if (room.stock !== undefined) {\r\n const roomUsedStock = this.state.packages.filter(pkg => pkg.roomId === room.id && pkg.roomContractId === room.contractId).length\r\n\r\n room.stock = room.stock - roomUsedStock\r\n room.stockWarningMessage = this._getStockWarningMessage(room.stock)\r\n room.stockWarningMessageIsLastRoom = this._getStockWarningMessageIsLastRoom(room.stock)\r\n }\r\n })\r\n\r\n return roomSelectorListData.filter(room => room.stock === undefined || room.stock > 0)\r\n }\r\n\r\n _updateUi () {\r\n this.allocatedPackages = null\r\n flush(this.elements.mainContainerElement)\r\n\r\n let statusOk = true\r\n\r\n this._addSpecialAgeProfileMessage()\r\n\r\n if (this.state.packages.length > 0) {\r\n statusOk = this._addRoomsAllocated()\r\n }\r\n\r\n const isEverybodyAllocated = this._isEverybodyAllocated()\r\n const allPackagesAllocated = this._areAllPackagesAllocated()\r\n const showFlexibleAllocationSection = statusOk && this.options.hasFlexibleAllocation && !isEverybodyAllocated\r\n const showErrorWrongAllocation = !isEverybodyAllocated || !allPackagesAllocated\r\n\r\n if (showFlexibleAllocationSection) {\r\n this._addInfoMessageWithPendingAllocation()\r\n this._addRoomListWithoutAllocation()\r\n }\r\n\r\n if (showErrorWrongAllocation) {\r\n this._addErrorMessageWrongAllocation()\r\n }\r\n\r\n if (isEverybodyAllocated) {\r\n if (allPackagesAllocated) {\r\n let birthdates = this.participants.flat()\r\n\r\n this.allocatedPackages = this.state.packages.map((pkg, index) => {\r\n let participants\r\n if (this.options.hasFlexibleAllocation) {\r\n const result = this.roomSelectorService.pickBirthdatesByOccupation(birthdates, pkg.occupation)\r\n participants = result.picked\r\n birthdates = result.remaining\r\n } else {\r\n participants = this.participants[index]\r\n }\r\n\r\n return {\r\n ...pkg,\r\n roomOccupancyId: this.roomSelectorService.packages.getPackageById(pkg.packageId).roomOccupancyId,\r\n roomName: this.roomSelectorService.rooms.getRoomById(pkg.roomId).name,\r\n participants\r\n }\r\n })\r\n\r\n this.events.emit('participantsAllocated', this.allocatedPackages)\r\n } else {\r\n this.events.emit('participantsUnallocated')\r\n }\r\n } else {\r\n this.events.emit('participantsUnallocated')\r\n }\r\n }\r\n\r\n _isEverybodyAllocated () {\r\n return Object.values(this.state.unallocatedOccupation).reduce((accOccupation, amountPeople) => accOccupation + amountPeople, 0) === 0\r\n }\r\n\r\n _areAllPackagesAllocated () {\r\n return !this.state.packages.find(pkg => pkg.roomId === undefined)\r\n }\r\n\r\n _getRoomRowData (pkg, index) {\r\n const { packageId, occupation, roomId, roomContractId } = pkg\r\n\r\n // ----------------\r\n // TODO: Quick fix to mitigate incorrectly selected package due to duplicated package ID.\r\n const roomNumber = index + 1\r\n const packageData = packageId\r\n ? this.roomSelectorService.packages.data\r\n .filter(pkg => pkg.id === packageId)\r\n .filter(pkg => pkg.roomNumber === roomNumber)\r\n .find(pkg => this.roomSelectorService.occupancies.occupancyMatchesOccupation(pkg.occupancyId, occupation))\r\n : undefined\r\n // ----------------\r\n\r\n // Calculate how many rooms before the current one of the same type has been assigned by the custome, to calculate real stock per room\r\n const stockRoomsAssigned = index === 0 ? 0 : this.state.packages.slice(0, index).filter(pkg => pkg.roomId === roomId && pkg.roomContractId === roomContractId).length\r\n\r\n const roomData = this.roomSelectorService.rooms.getRoomById(roomId)\r\n const availableStock = roomData.stock === undefined\r\n ? undefined\r\n : roomData.stock - stockRoomsAssigned\r\n const roomOccupancy = this.roomSelectorService.getRoomOccupancyData(roomId)\r\n\r\n const packageOccupation = occupation\r\n const errorMessages = this._getPeopleAllocationInRoomErrorMessages(roomOccupancy, packageOccupation)\r\n\r\n const roomRowPackageData = packageId\r\n ? {\r\n id: packageId,\r\n price: {\r\n value: this.roomSelectorService.getRoundedPrice(packageData.price),\r\n legend: this._getPartyCompostionAllocatedDescription(packageOccupation),\r\n priceSuffix: this.locales.pricePerPersonAbbreviation,\r\n ...this._getCurrencyConfig()\r\n },\r\n onRequest: packageData.onRequest,\r\n onRequestLabel: packageData.onRequest ? this.locales.onRequestLabel : ''\r\n }\r\n : {}\r\n\r\n return {\r\n ...roomRowPackageData,\r\n // Only on price table 1.0 for the first row the customer must not be able to delete the room row. All others are removable.\r\n removable: this.options.priceTableType === PriceTableType.DepartureDateAndDuration || index !== this.indexFirstPackage,\r\n title: `${this.locales.roomWord} ${index + 1}`, // TODO Delete Only used by room-occupancy integrated title\r\n roomNumber,\r\n roomWord: this.locales.roomWord,\r\n roomName: roomData.name,\r\n roomDescription: roomData.subtitle,\r\n errorMessage: errorMessages.join(', '),\r\n stockWarningMessage: this._getStockWarningMessage(availableStock),\r\n isFlexibleAllocation: this.options.hasFlexibleAllocation,\r\n occupancySelectors: this._getOccupancySelectors(roomOccupancy, packageOccupation, index),\r\n roomTypeDescriptionTitle: this.locales.roomTypeDescriptionTitle,\r\n characteristics: roomData.characteristics,\r\n images: roomData.images,\r\n index\r\n }\r\n }\r\n\r\n _getStockWarningMessage (availableStock) {\r\n const warningMessage = ''\r\n\r\n if (availableStock !== undefined && availableStock <= this.locales.roomStockThresholdToShowLowAvailability) {\r\n if (availableStock === 1) {\r\n return this.locales.lastRoomAvailable || this.locales.roomsLeftAvailable.replace('{n}', 1)\r\n } else if (availableStock <= this.locales.roomStockThresholdToShowLowAvailability) {\r\n return this.locales.roomsLeftAvailable.replace('{n}', availableStock)\r\n }\r\n }\r\n\r\n return warningMessage\r\n }\r\n\r\n _getStockWarningMessageIsLastRoom (availableStock) {\r\n if (availableStock !== undefined && availableStock <= this.locales.roomStockThresholdToShowLowAvailability) {\r\n return (availableStock === 1)\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n _getPartyCompostionAllocatedDescription (occupation) {\r\n const msgs = []\r\n\r\n if (occupation.adults) {\r\n const adultsWord = occupation.adults === 1 ? this.locales.adultWord : this.locales.adultsWord\r\n msgs.push(`${occupation.adults} ${adultsWord}`)\r\n }\r\n\r\n if (occupation.children) {\r\n const childrenWord = occupation.children === 1 ? this.locales.childWord : this.locales.childrenWord\r\n msgs.push(`${occupation.children} ${childrenWord}`)\r\n }\r\n\r\n if (occupation.babies) {\r\n const babiesWord = occupation.babies === 1 ? this.locales.babyWord : this.locales.babiesWord\r\n msgs.push(`${occupation.babies} ${babiesWord}`)\r\n }\r\n\r\n return msgs.join(', ')\r\n }\r\n\r\n _getPeopleAllocationInRoomErrorMessages (roomOccupancy, packageOccupation) {\r\n const msgs = []\r\n\r\n // Validate each age profile occupancy.\r\n Object.keys(this.totalOccupation).forEach(ageProfileId => {\r\n if (!this.totalOccupation[ageProfileId]) return\r\n\r\n let msg = null\r\n const peoplePendingCount = roomOccupancy[ageProfileId].min - packageOccupation[ageProfileId]\r\n const peopleInExcessCount = packageOccupation[ageProfileId] - roomOccupancy[ageProfileId].max\r\n\r\n if (peoplePendingCount > 0) {\r\n msg = this._getPeoplePendingToAllocateMessage(peoplePendingCount, this._getAgeProfileName(ageProfileId, peoplePendingCount))\r\n } else if (peopleInExcessCount > 0) {\r\n msg = this._getPeopleAllocatedInExcessMessage(peopleInExcessCount, this._getAgeProfileName(ageProfileId, peopleInExcessCount))\r\n }\r\n\r\n if (msg) msgs.push(msg)\r\n })\r\n\r\n return msgs\r\n }\r\n\r\n _getAgeProfileName (ageProfileId, peopleCount = 0) {\r\n let localeId = null\r\n\r\n switch (ageProfileId) {\r\n case 'adults':\r\n localeId = peopleCount === 1 ? 'adultWord' : 'adultsWord'\r\n break\r\n\r\n case 'children':\r\n localeId = peopleCount === 1 ? 'childWord' : 'childrenWord'\r\n break\r\n\r\n case 'babies':\r\n localeId = peopleCount === 1 ? 'babyWord' : 'babiesWord'\r\n break\r\n\r\n case 'total':\r\n localeId = peopleCount === 1 ? 'personWord' : 'peopleWord'\r\n break\r\n }\r\n\r\n return this.locales[localeId]\r\n }\r\n\r\n _getAllAgeProfilesPendingToAllocateMessages () {\r\n const pendingToAllocateMsgs = []\r\n\r\n this.roomSelectorService.ageProfiles.getIds().forEach(ageProfileId => {\r\n const pendingToAllocateNum = this.state.unallocatedOccupation[ageProfileId]\r\n\r\n if (pendingToAllocateNum > 0) {\r\n const ageProfileName = this._getAgeProfileName(ageProfileId, pendingToAllocateNum)\r\n const pendingToAllocateMsg = `${pendingToAllocateNum} ${ageProfileName}`\r\n pendingToAllocateMsgs.push(pendingToAllocateMsg)\r\n }\r\n })\r\n\r\n if (pendingToAllocateMsgs.length > 1) {\r\n const pendingToAllocateMsgsLastItem = pendingToAllocateMsgs.pop()\r\n return this._getPeoplePendingToAllocateMessage(`${pendingToAllocateMsgs.join(', ')} ${this.locales.separator} ${pendingToAllocateMsgsLastItem}`)\r\n } else {\r\n return this._getPeoplePendingToAllocateMessage(pendingToAllocateMsgs.join(''))\r\n }\r\n }\r\n\r\n _getPeoplePendingToAllocateMessage (pendingToAllocateMsg) {\r\n const template = this.locales.peoplePendingToAllocateText || 'There are still {pendingPeople} without room assigned. Please, allocate them'\r\n return template\r\n .replace(/{pendingPeople}/ig, pendingToAllocateMsg)\r\n }\r\n\r\n _getPeopleAllocatedInExcessMessage (participantsCount, ageProfileName) {\r\n if (participantsCount === 0) return null\r\n\r\n const template = this.locales.peopleAllocatedInExcess || 'There are {PARTICIPANTS_NUM} {AGE_PROFILE_NAME} that must be removed.'\r\n return template\r\n .replace(/{PARTICIPANTS_NUM}/ig, participantsCount)\r\n .replace(/{AGE_PROFILE_NAME}/ig, ageProfileName)\r\n }\r\n\r\n _getOccupancySelectors (roomOccupancy, packageOccupation, index) {\r\n const occupancySelectors = []\r\n const isPriceTableGroupedByDuration = this.options.priceTableType === PriceTableType.DepartureDateAndDuration\r\n const isNotFirstRoom = index > 0\r\n const usedAgeProfilesCount = this.roomSelectorService.ageProfiles.getIdsWithOccupation(this.totalOccupation).length\r\n\r\n // If people not in same room and on price table 1.0 for the first row the customer must not be able to change distribution.\r\n if (!this.options.allInSameRoom && (isPriceTableGroupedByDuration || isNotFirstRoom || usedAgeProfilesCount > 1)) {\r\n this.roomSelectorService.ageProfiles.data.forEach(ageProfile => {\r\n if (!this.totalOccupation[ageProfile.id]) return\r\n\r\n const currentOccupation = packageOccupation[ageProfile.id] || 0\r\n const minOccupants = usedAgeProfilesCount === 1\r\n ? Math.max(roomOccupancy[ageProfile.id].min, roomOccupancy.total.min)\r\n : 0\r\n const maxOccupants = this.state.unallocatedOccupation[ageProfile.id] === 0\r\n ? currentOccupation\r\n : Math.min(roomOccupancy[ageProfile.id].max, this.totalOccupation[ageProfile.id])\r\n const ageProfileName = this._getAgeProfileName(ageProfile.id, currentOccupation)\r\n\r\n occupancySelectors.push({\r\n id: ageProfile.id,\r\n current: currentOccupation,\r\n min: minOccupants,\r\n max: maxOccupants,\r\n name: ageProfileName,\r\n description: this._getAgeRangeDescription(ageProfile)\r\n })\r\n })\r\n }\r\n\r\n return occupancySelectors\r\n }\r\n\r\n _getAgeRangeDescription (ageProfile) {\r\n return (this.locales[`${ageProfile.id}AgeRangeNew`] || this.locales[`${ageProfile.id}AgeRange`])\r\n .replace(/{ageword}/ig, '') // TODO: remove ageword replace when not used in SC\r\n .replace(/{minage}/ig, ageProfile.minAge >= 0 ? ageProfile.minAge : '')\r\n .replace(/{maxage}/ig, ageProfile.maxAge >= 0 ? ageProfile.maxAge : '')\r\n }\r\n\r\n _getOccupancySelectorsForRoomList (occupationToAllocate) {\r\n const occupancySelectors = []\r\n\r\n const locales = this.locales\r\n\r\n this.roomSelectorService.ageProfiles.data.forEach(ageProfile => {\r\n const ageProfilePendingToAllocate = occupationToAllocate[ageProfile.id]\r\n if (ageProfilePendingToAllocate > 0) {\r\n const ageProfileName = this._getAgeProfileName(ageProfile.id, ageProfilePendingToAllocate)\r\n\r\n occupancySelectors.push({\r\n ageProfileId: ageProfile.id,\r\n max: ageProfilePendingToAllocate,\r\n name: ageProfileName,\r\n description: (locales[`${ageProfile.id}AgeRangeNew`] || locales[`${ageProfile.id}AgeRange`])\r\n .replace(/{ageword}/ig, ageProfileName)\r\n .replace(/{minage}/ig, ageProfile.minAge || ageProfile.minAge >= 0 ? ageProfile.minAge : '')\r\n .replace(/{maxage}/ig, ageProfile.maxAge || ageProfile.maxAge >= 0 ? ageProfile.maxAge : '')\r\n })\r\n }\r\n })\r\n return occupancySelectors\r\n }\r\n\r\n _addRoomAllocatedAndSelected (pkg, index) {\r\n const roomRowData = {\r\n ...this._getRoomRowData(pkg, index),\r\n extraClasses: 'w-room-selector__item-wrapper'\r\n }\r\n const roomRowElement = elementFromString(RoomOccupancyTemplate(roomRowData))\r\n this.elements.mainContainerElement.appendChild(roomRowElement)\r\n Component.initDocumentComponentsFromAPI(roomRowElement)\r\n const roomOccupancyApi = new RoomOccupancy(roomRowElement, {})\r\n roomOccupancyApi.events.on('roomOccupancyChanged', (newOccupancy) => this._handleRoomRowOccupancyChanged(index, newOccupancy))\r\n roomOccupancyApi.events.on('removeRoom', () => this._removeRoomRow(index))\r\n\r\n return roomRowData.errorMessage.length === 0\r\n }\r\n\r\n _removeRoomRow (idx) {\r\n const newState = {\r\n packages: this.options.hasFlexibleAllocation\r\n ? this.state.packages.filter((pkg, index) => index !== idx)\r\n : this.state.packages.map((pkg, index) => ({\r\n ...pkg,\r\n roomId: index === idx ? undefined : pkg.roomId,\r\n roomContractId: index === idx ? undefined : pkg.roomContractId,\r\n packageId: index === idx ? undefined : pkg.packageId\r\n })\r\n )\r\n }\r\n\r\n this._updateState(newState)\r\n }\r\n\r\n _handleRoomRowOccupancyChanged (idx, newOccupancy) {\r\n newOccupancy = this.roomSelectorService.getOccupancyExpandedWithTotal(newOccupancy)\r\n const newStatePackages = [\r\n ...this.state.packages\r\n ]\r\n\r\n newStatePackages[idx].occupation = {\r\n ...newStatePackages[idx].occupation,\r\n ...newOccupancy\r\n }\r\n\r\n const cheapestPackage = this.roomSelectorService.getCheapestPackageOfRoom(this.state.packages[idx].roomId, newOccupancy)\r\n newStatePackages[idx].packageId = cheapestPackage ? cheapestPackage.id : undefined\r\n\r\n const newState = {\r\n ...this.state,\r\n packages: newStatePackages\r\n }\r\n\r\n this._updateState(newState)\r\n }\r\n\r\n getAllocatedPackagesIfEverybodyIsAllocated () {\r\n return this.allocatedPackages\r\n }\r\n}\r\n\r\n/**\r\n * This facade is needed because RoomSelector constructor does not comply with the interface of a widget.\r\n *\r\n * Widget constructors must be of the shape constructor(el: HTMLElement, options: Object).\r\n */\r\nclass RoomSelectorRegisterFacade extends RoomSelector {\r\n constructor (element, options = {}) {\r\n super(element, undefined, undefined, options)\r\n }\r\n}\r\n\r\nregisterWidget(RoomSelectorRegisterFacade, WIDGET_API)\r\n","/**\n * The RoomSelectorListTemplateData contains all data needed to hydrate a RoomSelector view\n */\nexport const RoomSelectorListTemplate = () => {\n return `\n
\n
\n `\n}\n","/**\n * List of events used by search widget\n *\n */\nexport const search = {\n SEARCH_FILTERS_APPLIED: 'Search.FiltersApplied',\n SEARCH_RESULTS: 'Search.Results',\n SEARCH_ERROR: 'Search.Error',\n SEARCH_REMOVE_SINGLE_CHIP_FILTER: 'Search.RemoveSingleChipFilter',\n SEARCH_RESULT_CLICK: 'Search.ResultClick',\n SEARCH_MODIFIER_CHANGE: 'Search.ModifierChanged',\n SEARCH_SORT_CHANGE: 'Search.SortingChanged',\n SEARCH_PAGINATION_CHANGE: 'Search.PaginationChanged',\n SEARCH_MAP_OPENED: 'Search.MapOpened'\n}\n","/**\n * The TripSummaryData identifies the trip summary info\n *\n * @typedef {Object} TripSummaryData\n *\n * @property {String} icon - Trip summary item's icon\n * @property {Object[]} lines - Trip summary item's lines\n * @property {String} lines.text\n * @property {Boolean} lines.isBold - If true, text line is bold\n */\n\n/**\n * The SelectedStateApiDataModel contains all data as received from API\n *\n * @typedef {Object} SelectedStateApiDataModel\n *\n * @property {Object} routePricePerPerson - Price per person\n * @property {String} routePricePerPerson.formatted - Price per person humanized text\n * @property {Object} routeTotalPrice - Overall price\n * @property {String} routeTotalPrice.formatted - Overall price humanized text\n * @property {Object} priceBreakdown\n * @property {Object[]} priceBreakdown.rooms - Room breakdown info\n * @property {String} priceBreakdown.rooms.text - Room item's text\n * @property {String} priceBreakdown.rooms.value - Room item's value\n * @property {Object[]} priceBreakdown.services - Services breakdown info\n * @property {String} priceBreakdown.services.text - Services item's text\n * @property {String} priceBreakdown.services.value - Services item's value\n * @property {Object} priceBreakdown.bookMessage - Conditional/alert message\n * @property {String} priceBreakdown.bookMessage.level - Type of alert\n * @property {String} priceBreakdown.bookMessage.text - Conditional message's text\n * @property {TripSummaryData[]} tripSummary - Global trip summary\n * @property {TripSummaryData[]} selectorTripSummary - Transport specific trip summary\n * @property {String} campaignCode - Campaign code\n * @property {String[]} contentUsps - Content USP's\n*/\n\nconst LOCAL_COSTS_CURRENCY_TAG = '{Currency}'\n\nconst selectedStateDataDefaults = {\n routePricePerPerson: {},\n routeTotalPrice: {},\n priceBreakdown: {\n rooms: [],\n services: [],\n bookMessage: {}\n },\n tripSummary: [],\n contentUsps: []\n}\n\n/**\n * A SelectedStateData model\n */\nexport default class SelectedStateDataModel {\n /**\n * Creates a new SelectedStateDataModel\n *\n * @constructor\n * @param {SelectedStateApiDataModel} data - The model data\n * @param {Object} options - Locales data\n * @param {String} [options.id] - Element id\n * @param {Object} [options.locales] - Locales data\n */\n constructor (data = {}, options = {}) {\n this.data = {\n ...selectedStateDataDefaults,\n ...data\n }\n this.locales = options.locales || {}\n this.elementId = options.id || ''\n }\n\n /**\n * Transfrom tripSummary data from API to template's desired format\n *\n * @param {TripSummaryData[]} tripSummaryData an array of TripSummaryData\n *\n * @returns {BulletListItemData[]} an array of BulletListItemData\n */\n static transformTripSummary (tripSummaryData = []) {\n return tripSummaryData.map(({ icon, lines }) => [\n { icon, ...lines[0] },\n ...lines.slice(1).filter(({ text }) => !!text).map((line) => ({ isIconHidden: true, ...line }))\n ]).reduce((obj, items) => ([...obj, ...items]), [])\n }\n\n /**\n * Gets the selected state object the template will use\n *\n * @returns {SelectedStateTemplateData} the SelectedStateTemplateData\n */\n _getSelectedStateTemplateData () {\n // Map optionalServices to BulletListItemData scheme\n const optionalServices = this.data.optionalServices && this.data.optionalServices.optionalServices\n ? this.data.optionalServices.optionalServices.map(service => ({\n icon: service.icon,\n text: service.name\n }))\n : []\n\n return {\n id: this.elementId,\n mainTitleText: this.locales.tripSummary && this.locales.tripSummary.headerText,\n headerMessageText: this.data.priceBreakdown && this.data.priceBreakdown.bookMessage && this.data.priceBreakdown.bookMessage.text,\n headerMessageLevel: this.data.priceBreakdown && this.data.priceBreakdown.bookMessage && this.data.priceBreakdown.bookMessage.level\n ? this.data.priceBreakdown.bookMessage.level\n : 'info',\n accommodation: this.locales.accommodation,\n tripDetails: [\n ...SelectedStateDataModel.transformTripSummary(this.data.detailedTripSummary),\n ...SelectedStateDataModel.transformTripSummary(this.data.tripSummary)\n ],\n optionalServices: {\n label: this.locales.optionalServices.label,\n tagLine: this.locales.optionalServices.tagLine,\n items: optionalServices\n },\n priceBreakdown: {\n items: this._getBreakdownTableTemplateData(),\n itemsLocalCosts: this._getBreakdownTableTemplateDataLocalCosts(),\n itemsLocalCostsWithouPrices: this.data.priceBreakdown?.localCostsWithoutPrice,\n itemsTotal: this._getBreakdownTableTemplateDataTotal(),\n extraInfo: this.locales.priceBreakdown.extraInfo,\n extraInfoIcon: this.locales.priceBreakdown.extraInfoIcon,\n openJawMessage: this.data.isOpenJaw ? this.locales.priceBreakdown.openJawMessage : '',\n headerText: this.locales.priceBreakdown.headerText,\n headerTextLocalCosts: this.locales.priceBreakdown.headerTextLocalCosts,\n headerDescriptionLocalCosts: this._getLocalCostsCurrencyDescription()\n },\n mandatoryCosts: {\n title: this.locales.priceBreakdown.mandatoryCostsTitle,\n content: this.locales.priceBreakdown.mandatoryCostsContent\n },\n submitButtonText: this._getSubmitButtonText(),\n packageUsps: this.data.priceBreakdown.usps,\n contentUsps: this.data.contentUsps\n }\n }\n\n _getSubmitButtonText () {\n const genericText = this.locales.priceBreakdown.bookButton\n const tranportType = (this.data.transportType || '').toLowerCase()\n\n let buttonTextPerTransport\n if (tranportType === 'flight') {\n buttonTextPerTransport = this.locales.priceBreakdown.bookButtonFlightSelector\n } else if (tranportType === 'bus') {\n buttonTextPerTransport = this.locales.priceBreakdown.bookButtonBusSelector\n } else {\n buttonTextPerTransport = this.locales.priceBreakdown.bookButtonSelfDriveSelector\n }\n return buttonTextPerTransport || genericText || ''\n }\n\n /**\n * Builds BreakdownTableItemData from current data\n *\n * @returns {BreakdownTableItemData[]}\n */\n _getBreakdownTableTemplateData () {\n const rooms = this.data.priceBreakdown.rooms.map((room, index) => ({ title: index + 1, items: room }))\n const services = { items: this.data.priceBreakdown.services }\n\n return [\n ...rooms.map((room) => ({\n concept: this.locales.priceBreakdown.roomText + ' ' + room.title,\n subitems: room.items.map((item) => ({ concept: item.text, value: item.value })),\n total: room.total ? room.total : false,\n value: room.value,\n topItemsExtraClasses: 'w-selected-state__price-overview__row-title',\n preItemsExtraClasses: 'w-selected-state__price-overview__row-title'\n })),\n ...services.items.map((service) => ({\n concept: service.text,\n value: service.value,\n isDiscount: service.isDiscount ? service.isDiscount : false,\n topItemsExtraClasses: `${service.rawAmount === 0 ? 'w-selected-state__price-overview__row-services--inclusive' : ''} w-selected-state__price-overview__row-services`\n })),\n ...this._getSubTotalRowTemplateData(this.data?.priceBreakdown?.subTotalPayAtReservation?.formatted)\n ]\n }\n\n _getSubTotalRowTemplateData (value) {\n return value\n ? [{\n concept: this.locales.priceBreakdown.subTotalText,\n value,\n topItemsExtraClasses: 'w-selected-state__price-subtotal'\n }]\n : []\n }\n\n _getBreakdownTableTemplateDataLocalCosts () {\n const localCosts = this.data.priceBreakdown?.localCostsWithPrice || []\n return [\n ...localCosts.map((localCost) => ({\n concept: localCost.name,\n subitems: [{ concept: localCost.description }],\n value: localCost.price.formatted\n })),\n ...this._getSubTotalRowTemplateData(this.data?.priceBreakdown?.subTotalPayAtDestination?.formatted)\n ]\n }\n\n _getBreakdownTableTemplateDataTotal () {\n const showGrossPrice = this.data.priceBreakdown.totalPrice &&\n this.data.priceBreakdown.totalGrossPrice &&\n this.data.priceBreakdown.totalPrice.raw !== this.data.priceBreakdown.totalGrossPrice.raw\n const totalPriceSubItems = [{\n concept: this.locales.priceBreakdown.pricePerPersonText,\n value: this.data.routePricePerPerson.formatted\n }]\n if (this.data?.priceBreakdown?.subTotalPayAtReservation) {\n totalPriceSubItems.push({\n concept: this.locales.priceBreakdown.headerText,\n value: this.data.priceBreakdown.subTotalPayAtReservation.formatted,\n extraClass: 'w-selected-state__price-overview__total-subitem w-selected-state__price-overview__total-subitem-first'\n })\n }\n if (this.data?.priceBreakdown?.subTotalPayAtDestination) {\n totalPriceSubItems.push({\n concept: this.locales.priceBreakdown.headerTextLocalCosts,\n value: this.data.priceBreakdown.subTotalPayAtDestination.formatted,\n extraClass: 'w-selected-state__price-overview__total-subitem'\n })\n }\n\n return [\n {\n preitem: (showGrossPrice)\n ? {\n value: this.data.priceBreakdown.totalGrossPrice.formatted,\n preItemsExtraClasses: 'w-selected-state__price-overview__grossprice'\n }\n : '',\n concept: this.locales.priceBreakdown.totalText,\n value: this.data.routeTotalPrice.formatted,\n total: true,\n topItemsExtraClasses: 'w-selected-state__price-overview__item--highlighted',\n subitems: totalPriceSubItems\n }\n ]\n }\n\n _getLocalCostsCurrencyDescription () {\n return this.data.priceBreakdown.localCostsCurrencyCode\n ? this.locales.priceBreakdown.headerDescriptionLocalCosts.replace(LOCAL_COSTS_CURRENCY_TAG, `${this.data.priceBreakdown.localCostsCurrencyCode}`)\n : ''\n }\n}\n","/**\n *\n * @typedef {Object} PackageUspData\n *\n * @property {String} kind\n * @property {String} title\n * @property {String} subtitle\n */\n\n/**\n * The SelectedStateTemplateData contains all data needed to hydrate a Selected State view\n *\n * @typedef {Object} SelectedStateTemplateData\n *\n * @property {String} id - SelectedState's id\n * @property {String} [mainTitleText]\n * @property {String} [headerMessageText]\n * @property {String} [headerMessageLevel]\n\n * @property {Object} [accommodation]\n * @property {String} [accommodation.name]\n * @property {Number} [accommodation.category]\n * @property {String} [accommodation.image]\n * @property {String} [accommodation.imagePlaceholder]\n * @property {String} [accommodation.imageUnresolved]\n * @property {String[]} [accommodation.usps]\n *\n * @property {BulletListItemData[]} [tripDetails]\n *\n * @property {Object} [optionalServices]\n * @property {String} [optionalServices.label]\n * @property {String} [optionalServices.tagLine]\n * @property {BulletListItemData[]} [optionalServices.items]\n *\n * @property {Object} [priceBreakdown]\n * @property {BreakdownTableItemData[]} [priceBreakdown.items]\n * @property {String} [priceBreakdown.extraInfo]\n * @property {String} [priceBreakdown.openJawMessage]\n *\n * @property {Object} [mandatoryCosts]\n * @property {String} [mandatoryCosts.title]\n * @property {String[]} [mandatoryCosts.content]\n *\n * @property {String} [submitButtonText]\n *\n * @property {PackageUspData[]} [packageUsps]\n * @property {String[]} [contentUsps]\n *\n */\n\nimport { BulletListTemplate } from '../../components/bullet-list/c-bullet-list.template'\nimport { CollapseTemplate } from '../../components/collapse/c-collapse.template'\nimport { BtnTemplate } from '../../components/btn/c-btn.template'\nimport { BreakdownTableTemplate } from '../../components/breakdown-table/c-breakdown-table.template'\nimport { LabelTemplate } from '../../components/label/c-label.template'\nimport { getTokenClass } from '../../../js/helpers/tokens'\nimport { AbsoluteDialogTemplate } from '../../components/absolute-dialog/c-absolute-dialog.template'\nconst tokens = require('./data/w-selected-state__tokens.json')['w-selected-state']\n\nexport const defaultSelectedStateData = {\n id: '',\n mainTitleText: '',\n headerMessageText: '',\n headerMessageLevel: 'info',\n accommodation: {\n name: '[Hotel Name]',\n category: 4,\n image: '',\n imagePlaceholder: '',\n imageUnresolved: '',\n usps: []\n },\n tripDetails: [],\n optionalServices: {\n label: '',\n tagLine: '',\n items: []\n },\n priceBreakdown: {\n items: [],\n extraInfo: '',\n openJawMessage: ''\n },\n mandatoryCosts: {\n title: '',\n content: []\n },\n submitButtonText: '[Book now]',\n packageUsps: [],\n contentUsps: []\n}\n\nexport const SelectedStateTemplate = (d, options) => {\n d = { ...defaultSelectedStateData, ...d, ...options }\n\n if (d.isEmpty) return `
`\n\n // ⚠️ Build BulletListItemData for accommodation USPs\n const accommodationUSPs = d.contentUsps ? d.contentUsps.map(usp => ({ text: usp })) : null\n\n // ⚠️ Flight Icons are hardcoded from API, fix here till they're not\n const tripDetailsItems = d.tripDetails.map(item => {\n if (item.icon === 'icon-flight-outbound') item.icon = 'airplane-departure'\n if (item.icon === 'icon-flight-inbound') item.icon = 'airplane-return'\n return item\n })\n\n // ⚠️ Image is fixed to be sync and same size\n d.accommodation.image = d.accommodation.image && d.accommodation.imageUnresolved\n ? d.accommodation.imageUnresolved\n .replace('{W}', '640')\n .replace('{H}', '320')\n .concat('&scale=both&mode=crop')\n : null\n\n return `\n
\n

${d.mainTitleText}

\n ${d.headerMessageText\n ? `
\n

${d.headerMessageText}

\n
`\n : ''\n }\n
\n
\n
\n ${d.accommodation.image\n ? `
`\n : ''\n }\n ${BulletListTemplate({\n items: tripDetailsItems,\n extraClasses: 'w-selected-state__lists'\n })}\n
\n ${OptionalServicesItemTemplate(d.optionalServices)}\n
\n
\n
\n ${TitleSectionTemplate(d.priceBreakdown?.headerText)}\n ${BreakdownTableTemplate({ items: d.priceBreakdown.items })}\n\n ${d.priceBreakdown.itemsLocalCosts?.length > 0 || d.priceBreakdown.itemsLocalCostsWithouPrices?.length > 0\n ? `${TitleSectionTemplate(d.priceBreakdown?.headerTextLocalCosts, true)}\n ${BreakdownTableTemplate({ items: d.priceBreakdown.itemsLocalCosts, extraClasses: 'w-selected-state__price-overview-localcosts-table' })}\n ${MandatoryCostsWithoutPricesTemplate(d.priceBreakdown.itemsLocalCostsWithouPrices)}\n ${LocalCostsDescriptionTemplate(d.priceBreakdown?.headerDescriptionLocalCosts)}`\n : ''\n }\n\n ${BreakdownTableTemplate({ items: d.priceBreakdown.itemsTotal })}\n\n
\n ${MandatoryCostsTemplate(d.mandatoryCosts, d.id, d.mandatoryCostsCollapsed)}\n
\n ${BtnTemplate({\n text: d.submitButtonText,\n variant: 'flow',\n jsApi: true,\n extraClasses: 'w-selected-state__footer-button'\n })}\n
\n ${d.priceBreakdown.openJawMessage\n ? `
\n ${AbsoluteDialogTemplate({\n body: d.priceBreakdown.openJawMessage,\n alertType: 'warning',\n closable: false\n })}\n
`\n : ''\n }\n ${d.priceBreakdown.extraInfo\n ? `
\n ${AbsoluteDialogTemplate({\n body: `${d.priceBreakdown.extraInfoIcon ? `` : ''} ${d.priceBreakdown.extraInfo}`,\n alertType: 'info',\n closable: false\n })}\n
`\n : ''\n }\n ${PackageUspsTemplate(d.packageUsps)}\n
\n
\n
\n
\n${accommodationUSPs\n ? `
\n ${BulletListTemplate({\n items: accommodationUSPs,\n icon: 'checkmark',\n variant: 'inline',\n extraClasses: 'w-bullet-list__usps'\n })}\n
`\n : ''}\n\n
`\n}\n\nconst TitleSectionTemplate = (title, useMarginTop = false) => {\n return `\n
\n ${title ? `

${title}

` : ''}\n
\n `\n}\n\nconst LocalCostsDescriptionTemplate = (description) => {\n return `${description ? `
${description}
` : ''}`\n}\n\nconst OptionalServicesItemTemplate = (optionalServices) => {\n // Skip render if there's no items\n if (!optionalServices.items || !optionalServices.items.length) return ''\n\n return `
\n${optionalServices.label\n ? LabelTemplate({\n text: optionalServices.label.toUpperCase(),\n extraClasses: 'w-overview__optional-service-promotion-label'\n })\n : ''\n }\n${optionalServices.tagLine\n ? ``\n : ''\n }\n
\n ${BulletListTemplate({ items: optionalServices.items })}\n
\n
`\n}\n\nconst MandatoryCostsTemplate = (mandatoryCosts, id, mandatoryCostsCollapsed) => {\n // Skip render if there's no content\n if (!mandatoryCosts.content || !mandatoryCosts.content.length) return ''\n\n return `
\n

\n ${mandatoryCosts.title}\n \n

\n${CollapseTemplate({\n id: `${id}__collapse`,\n extraClasses: 'w-selected-state__collapse-wrapper',\n html: mandatoryCosts.content.map((contentItem) => `

${contentItem}

`).join(''),\n opened: !mandatoryCostsCollapsed\n })}\n
`\n}\n\nconst MandatoryCostsWithoutPricesTemplate = (localCosts) => {\n localCosts = localCosts || []\n if (localCosts.length === 0) {\n return ''\n }\n\n // Skip render if there's no content\n return `
\n ${localCosts.map(localCost => localCost.name || localCost.description\n ? `
\n ${localCost.name ? `
${localCost.name}
` : ''}\n ${localCost.description ? `
${localCost.description}
` : ''}\n
`\n : ''\n ).join('')}\n
`\n}\n\nconst PackageUspsTemplate = (usps) => {\n // Skip render if there's no content\n if (!usps || !usps.length) return ''\n\n return `
\n${usps.slice(0, 3).map((usp) => PackageUspsItemTemplate(usp)).join('')}\n
`\n}\n\nconst PackageUspsItemTemplate = (usp) => {\n return `\n
\n \n
\n
\n \n ${usp.title}\n \n
\n ${usp.subtitle}\n
\n
`\n}\n","import Component from '../../../js/core/component/component'\nimport SelectedStateDataModel from './selected-state-data-model'\nimport { elementFromString, moveChildrenFrom } from '../../../js/document/html-helper'\nimport { SelectedStateTemplate } from './w-selected-state.template'\nimport Img from '../../components/img/main'\n\nconst EventEmitter = require('eventemitter3')\n\nconst widgetAPI = 'w-selected-state'\n\nconst defaults = {\n data: {},\n locales: {}\n}\n\n/**\n * SelectedState content\n *\n */\nexport default class SelectedState {\n /**\n * Creates a new SelectedState behaviour, exposes an API to the element.\n *\n * @constructor\n * @param {HTMLElement} element - The HTML element.\n * @param {Object} [options] - Options object\n * @param {SelectedStateApiDataModel} [options.data] - Selected state info\n * @param {Object} [options.locales] - Selected locales data\n */\n constructor (element, options = {}) {\n this.element = element\n this.options = {\n ...defaults,\n ...options\n }\n this.events = new EventEmitter()\n\n // Expose component public API\n this.element[widgetAPI] = {\n refresh: this.refresh.bind(this),\n setLoadingState: this.setLoadingState.bind(this),\n events: this.events\n }\n\n this.initSelectedStateDataModel()\n this.createHtml()\n this.bindEvents()\n\n this.element[widgetAPI].selectedStateDataModel = this.selectedStateDataModel\n }\n\n initSelectedStateDataModel () {\n if (this.selectedStateDataModel) delete this.selectedStateDataModel\n if (this.options.data && Object.keys(this.options.data).length > 0) {\n this.selectedStateDataModel = new SelectedStateDataModel(\n this.options.data,\n {\n id: this.element.id,\n locales: this.options.locales\n }\n )\n }\n }\n\n createHtml () {\n const selectedStateElement = elementFromString(\n SelectedStateTemplate(\n this.selectedStateDataModel\n ? this.selectedStateDataModel._getSelectedStateTemplateData()\n : { id: this.element.id, isEmpty: true },\n {\n mandatoryCostsCollapsed: this.options.mandatoryCostsCollapsed\n }\n )\n )\n moveChildrenFrom(selectedStateElement, this.element, {\n flush: true,\n attributes: true\n })\n\n this.submitButton = this.element.querySelector('.w-selected-state__footer-button')\n Img.createInstancesOnDocument(this.element)\n Component.initDocumentComponentsFromAPI(this.element)\n }\n\n bindEvents () {\n this.handleSubmitButtonClick = this.handleSubmitButtonClick || this._handleSubmitButtonClick.bind(this)\n if (this.submitButton) this.submitButton.addEventListener('click', this.handleSubmitButtonClick)\n }\n\n unBindEvents () {\n if (this.submitButton) this.submitButton.removeEventListener('click', this.handleSubmitButtonClick)\n }\n\n setLoadingState (currentLoadingState = false) {\n if (this.submitButton && this.submitButton['c-btn']) this.submitButton['c-btn'].setProp('loading', currentLoadingState)\n }\n\n /**\n * Handle submit button click\n */\n _handleSubmitButtonClick () {\n this.events.emit('submit', this.options.data)\n }\n\n /**\n * Refreshes selectedState with new data\n *\n * @param {Object} data\n */\n refresh (data) {\n this.options.data = data\n this.unBindEvents()\n this.initSelectedStateDataModel()\n this.createHtml()\n this.bindEvents()\n this.events.emit('refresh')\n }\n}\n","/**\n * List of events used by static content data widget\n *\n */\nexport const staticContentData = {\n STATIC_CONTENT_DATA_READY: 'staticContentData.InfoReady'\n}\n","import { apiCaller } from '../../../js/helpers/api-caller'\nimport { registerWidget } from '../../../js/core/widget/widget-directory'\nimport registeredEvents from '../../../js/helpers/registered-events'\nimport { bookingGateEvents } from '../../../js/document/event-types'\n\nconst WIDGET_API = 'w-subscribe-form'\n\nconst WIDGET_QUERIES = {\n form: '[data-js-component=\"c-form\"]',\n saveButtons: `[data-${WIDGET_API}--save-button]`,\n emailInput: `[data-${WIDGET_API}--email-input]`,\n successToggle: `[data-${WIDGET_API}--success-toggle]`\n}\n\nconst ATTRIBUTES = {\n componentId: 'wSubscribeFormComponentId',\n datasourceId: 'wSubscribeFormDatasourceId',\n classes: {\n isSuccess: 'w-subscribe-form__is-success',\n isError: 'w-subscribe-form__is-error'\n }\n}\n\nrequire('../../components/form/main')\nrequire('../../components/textbox/main')\nconst EventEmitter = require('eventemitter3')\n\nexport default class SubscribeForm {\n /**\n * Creates a new Subscribe form widget\n *\n * @constructor\n *\n * @param {HTMLElement} element - The HTML element\n */\n constructor (element) {\n if (!element) { return }\n this.element = element\n this.events = new EventEmitter()\n this.componentId = this.element.dataset[ATTRIBUTES.componentId]\n this.datasourceId = this.element.dataset[ATTRIBUTES.datasourceId]\n\n // Expose component public API\n this.element[WIDGET_API] = {\n element: this.element\n }\n\n this._attachEvents()\n\n registeredEvents.registerWidgetEvents(WIDGET_API, this.events, { track: WIDGET_API })\n }\n\n _attachEvents () {\n this.form = this.element.querySelector(WIDGET_QUERIES.form)\n\n if (this.form) {\n this.formApi = this.form['c-form']\n }\n\n this.emailInput = this.element.querySelector(WIDGET_QUERIES.emailInput)\n\n if (this.emailInput) {\n this.emailInputApi = this.emailInput['c-textbox']\n }\n\n this.successToggleElement = this.element.querySelector(WIDGET_QUERIES.successToggle)\n this.saveButtons = [...this.element.querySelectorAll(WIDGET_QUERIES.saveButtons)]\n\n if (this.saveButtons) {\n this.saveButtons.forEach(button => {\n button.addEventListener('click', (ev) => this._clickSaveButton(ev))\n })\n }\n }\n\n async _clickSaveButton (ev) {\n ev.preventDefault()\n\n try {\n this._enableForm(false)\n this.successToggleElement.classList.remove(ATTRIBUTES.classes.isError)\n\n if (this._getEmailToSubscribe() && this.formApi.validate()) {\n await this._saveEmailAndGetDataChangeData()\n }\n } catch (ex) {\n console.error(ex)\n this._enableForm(true)\n }\n }\n\n async _saveEmailAndGetDataChangeData () {\n const eventArgs = {\n method: this.formApi.method,\n url: this.formApi.action\n }\n\n if (this.formApi.method !== 'GET') {\n eventArgs.body = {\n email: this._getEmailToSubscribe(),\n itemId: this.componentId,\n datasourceId: this.datasourceId\n }\n }\n\n if (eventArgs.url) {\n this.callApi(eventArgs.method, eventArgs.url, eventArgs.body)\n }\n }\n\n /**\n * Calls backend to retrieve data, and pings all registred items\n *\n * @param {string} method - GET|POST|PATCH\n * @param {string} uri - Full url to execute the action\n * @param {object} body - (Optional) The payload for the POST or PATCH operations\n */\n async callApi (method, url, body) {\n try {\n const result = await apiCaller(url, {\n method,\n body\n })\n\n if (result.success) {\n this.apiData = result.response\n\n if (this.apiData) {\n this._showSubscribeFormSuccess()\n }\n\n this.events.emit(bookingGateEvents.BOOKING_GATE_SUBSCRIBE_FORM_SUCCESS, {})\n } else {\n this._showSubscribeFormError()\n }\n } finally {\n this._enableForm(true)\n }\n }\n\n _enableForm (enableStatus) {\n Array.from(this.form).forEach(elem => { elem.disabled = !enableStatus })\n\n this.saveButtons.forEach(btn => btn['c-btn'].setLoading(!enableStatus))\n }\n\n _getEmailToSubscribe () {\n return this.emailInputApi.getProp('value').trim()\n }\n\n _showSubscribeFormSuccess () {\n this.successToggleElement.classList.remove(ATTRIBUTES.classes.isError)\n this.successToggleElement.classList.add(ATTRIBUTES.classes.isSuccess)\n }\n\n _showSubscribeFormError () {\n this.successToggleElement.classList.remove(ATTRIBUTES.classes.isSuccess)\n this.successToggleElement.classList.add(ATTRIBUTES.classes.isError)\n }\n}\n\nregisterWidget(SubscribeForm, WIDGET_API)\n","import { TabsNavTemplate } from '../../components/tabs/c-tabs__nav.template'\nimport domEventsHelper from '../../../js/document/dom-events-helper'\nimport Swipe from '../../objects/swipe/main'\nimport registeredEvents from '../../../js/helpers/registered-events'\nconst EventEmitter = require('eventemitter3')\n\nconst widgetApi = 'w-tabs-filter'\nconst widgetQueries = {\n track: 'data-track'\n}\n\nexport default class TabsFilter {\n /**\n * Creates a new TabsFilter\n *\n * @constructor\n *\n * @param {HTMLElement} element - The element where to attach TabsFilter\n * @param {FilterModel} filterModel - The associated FilterModel\n */\n constructor (element, filterModel) {\n this.element = element\n this.events = new EventEmitter()\n\n this.defaultTabsData = {\n id: `${this.element.id}__tabs`,\n items: [],\n variant: 'secondary',\n extraClasses: ''\n }\n\n this.setFilterModel(filterModel)\n\n this.domEvents = [\n [this.element, { click: (ev) => this._onMouseClick(ev) }]\n ]\n domEventsHelper.attachEvents(this.domEvents, widgetApi)\n\n registeredEvents.registerWidgetEvents(widgetApi, this.events, {\n ...this.element.hasAttribute(widgetQueries.track) && { track: this.element.attributes[widgetQueries.track].value }\n })\n }\n\n /**\n * Set the current filterModel\n * - Set given filterModel to filterModel self property\n * - Set options on tabs\n * - Bind filter model events\n *\n * @param {FilterModel} filterModel - The associated FilterModel\n *\n * @returns {TabsFilter} self instance\n */\n setFilterModel (filterModel) {\n this.filterModel = filterModel\n // Setting options silently so that value prop changed is not triggered in case it changes when changing options\n this.renderTabs()\n\n this.filterModel.events.on('change', () => this.renderTabs())\n\n return this\n }\n\n /**\n * Set the current Tabs selectedValues to filter\n *\n * @returns {TabsFilter} self instance\n */\n _setTabsOptionsToFilter (value) {\n this.filterModel\n .clearSelection({ silent: true })\n .setSelectedValues([value])\n return this\n }\n\n /**\n * Get the current Tabs options from filter\n *\n * @returns {TabsSingleOptionData[]} The parsed filter to Tabs options\n */\n _getTabsOptionsFromFilter () {\n return {\n ...this.defaultTabsData,\n items: this.filterModel.values.models.map(model => ({\n text: model.getAttribute('caption'),\n isOpen: model.getAttribute('isSelected'),\n attributes: {\n 'data-value': model.getAttribute('value')\n }\n }))\n }\n }\n\n /**\n * Render the tabs from the current filter data.\n */\n renderTabs () {\n this.element.innerHTML = TabsNavTemplate(this._getTabsOptionsFromFilter())\n const swipeElement = this.element.querySelector('[data-js-swipe]')\n if (swipeElement) Swipe.CreateInstanceOnElement(swipeElement, { activeClass: 'is-open' })\n }\n\n /**\n * Handle the mouse click.\n *\n * @param {MouseEvent} ev - The mouse event.\n */\n _onMouseClick (ev) {\n const tabItemCandidate = this._findTabItemByMouseEvent(ev)\n if (!tabItemCandidate) return\n\n const value = tabItemCandidate.getAttribute('data-value')\n this._setTabsOptionsToFilter(value)\n this.events.emit('tabChanged', value)\n }\n\n /**\n * Small utility to find a tabItemElement candidate from mouse event, traversing the DOM\n *\n * @param {MouseEvent} ev - The mouse event.\n * @returns {(HTMLElement|null)} - The tabItemElement if found\n */\n _findTabItemByMouseEvent (ev) {\n const closestResult = (el, lastParentToCheck) => {\n do {\n if (el === lastParentToCheck) return null\n if (el.matches('button[data-value]')) return el\n el = el.parentElement || el.parentNode\n } while (el !== null && el !== lastParentToCheck && el.nodeType === 1)\n return null\n }\n return closestResult(ev.target, this.element)\n }\n}\n","/**\n * List of events used by voucher-redeemer\n *\n */\nexport const voucherRedeemer = {\n VOUCHER_REDEEMER_SERVER_VALIDATION_ERROR: 'VoucherRedeemer.ServerValidationError',\n VOUCHER_REDEEMER_SERVER_ERROR: 'VoucherRedeemer.ServerError'\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3270: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_sunwebgroup_design_system\"] = self[\"webpackChunk_sunwebgroup_design_system\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [3200,3456,7186,2511,5569,2145,9316,6153,9438,9497,4675,8444,5861,7826,8636,2435,1919,2322,2255], () => (__webpack_require__(74667)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","loginStatus","LOADED","mainMenu","MAIN_MENU_ITEM_CLICKED","preferenceQuestionnaire","PREFERENCE_QUESTIONNAIRE_START","PREFERENCE_QUESTIONNAIRE_SEND","PREFERENCE_QUESTIONNAIRE_EDIT","productMap","PRODUCT_MAP_OPENED","PRODUCT_MAP_CLOSED","ACCOMMODATION_MARKER_CLICKED","defaultBoxData","image","titleAttributes","titleText","infoCtaText","titleUrl","breadcrumbs","grade","rating","price","priceLegend","hidePrice","extraClasses","ProductCardTemplate","d","_objectSpread","concat","ImgTemplate","map","location","index","url","text","join","_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","ownKeys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","obj","_toPropertyKey","getOwnPropertyDescriptors","defineProperties","_defineProperties","target","props","descriptor","input","hint","prim","toPrimitive","res","String","_toPrimitive","EventEmitter","require","widgetApi","promotedPriceWidgetApi","mapApi","widgetQueries","promotedPriceWidgetsSelector","trackAttr","ProductMap","_fetchProducts2","_fetchAccommodationData2","element","_this","options","instance","Constructor","_classCallCheck","this","events","registeredEvents","registerWidgetEvents","hasAttribute","track","attributes","modal","querySelector","settings","getData","productBreadcrumbs","_getProductBreadcrumbs","on","_showMap","_prepareMap","_handleMapClosed","nearbyApiUrl","accoDetailsApiUrl","initialized","centerMarkerInfoWindowData","infoHidePrice","promotedPriceWidget","document","promotedPriceApi","once","promotedPriceEvents","PROMOTED_PRICE_DATA_LOADED","response","_addPriceData","protoProps","_callee","result","_context","getUrlFromString","fetchJsonData","_x","_callee2","accommodationIds","params","_context2","reduce","id","idObj","data","_this2","accommodations","accommodation","latitude","parseFloat","longitude","markerId","icons","default","marker","active","markerActive","accommodationId","sameLocationAccommodations","item","addMarker","callBack","_loadInfoWindow","bind","createClusterMarkers","zoomToMarkers","sync","infoImageSync","placeholderSrc","infoImagePlaceholdersrc","resolvedSrc","infoImageResolvedsrc","description","infoImageDescription","ratio","infoImageRatio","dynamicRatios","_getImageDynamicRatios","infoImageResolve","infoTitleUrl","infoTitleText","infoGrade","infoRating","infoPriceLegend","markerData","_this3","groupedAccommodations","centerMarkerData","markerDataItem","find","_ref","nearbyMarkersData","markerType","_this4","_fetchAccommodationData","_this4$settings","infoWindowData","Array","isArray","_populateAndShowInfoWindow","console","infoWindowSingleData","emit","productMapEvents","infoWindowContent","sliderItems","SliderTemplate","items","barNavigation","outerNavigation","withGradient","showInfoWindow","Component","initDocumentComponentsFromAPI","clearMarkers","_ref2","_this5","mapOpenDate","Date","showMap","_fetchProducts","_x2","_callee3","_this5$_groupMarkersW","centerMarkerSameLocationsData","centerMarkerInitialData","_response","_this5$settings","responseArray","_context3","_groupMarkersWithSameLocation","_addNearbyMarkers","showCenterMarker","_getCenterMarkerInitialData","_addCenterMarker","mapClosedDate","_clearMap","clearInfoWindow","markerIcon","markerIconActive","breadcrumbsElement","breadcrumbsData","JSON","parse","textContent","dynamicRatiosElement","dynamicRatiosData","registerWidget","profileData","NAME_CHANGED","DATA_OPENED","DATA_EDITED","promotedPrice","defaultPromotedPriceFallbackData","title","buttonText","hasUiTest","promotedPriceFallbackTemplate","className","isSticky","BtnTemplate","variant","block","defaultPromotedPriceResultData","skiPassPublicPriceText","packageBlock","acmUrl","acmModalId","acmHideInfoIcon","yieldCampaignLogo","rawDepartureDate","mandatoryExtraCostsText","staticText","paymentMethod","defaultPromotedPriceStickyResultData","fallbackTitle","fallbackDescription","PromotedPriceStickyTemplate","PriceTemplate","defaultPriceData","publicPriceDetail","label","scratchPriceDescription","label2","getACMPriceLabel","modalId","labelGrayed","DEFAULT_PRICE_DATA_MODEL","size","DEFAULT_PACKAGE_BLOCK_DATA_MODEL","getPriceData","staticTexts","contextItemId","publicPriceWithCurrencySymbol","publicValue","symbol","currencySettings","symbolPosition","acmInformation","replace","currency","currencyPosition","saleText","discountPercentage","discountPercentagePublicPrice","oldPrice","originalValue","legend","publicPrice","getSkiPassPublicPriceText","COMPONENT_LOCALES","register","language","urlAttr","mainContainer","stickyContainer","stickyEnabled","extraParams","button","dataSource","PromotedPrice","_fetch","_refresh","elements","_runElementQueries","_getExtraParamsFromDom","apiUrl","getAttribute","_getDataSourceFromDom","isOpened","classList","contains","isPricesTab","passThroughParams","GET_PASSTHROUGH_PARAMS","getSearchParamsFromUrl","locales","_getLocales","refresh","showFallback","open","close","showStickyPromotedPrice","_showStickyPromotedPrice","getOriginalDepartureDate","_getOriginalDepartureDate","_buildEvents","domEventsHelper","attachEvents","_domEvents","addBannerifDiscount","parameters","promotedPriceUrl","promotedPriceResponseAndStatus","promotedPriceResponse","_args","rawData","_getPromotedPriceData","arrayifyObject","fetchJsonDataAndStatusInfo","fullReferrerOnCrossOrigin","ok","statusCode","jsonData","_this$promotedPriceDa","actionsQueue","promotedPriceData","newMainContent","mustAppendElement","newStickyContent","_args2","detachEvents","all","fetch","departureDate","raw","outboundDepartureAirportName","originalDepartureDate","elementFromString","_d$yieldCampaignLogo","_d$paymentMethod","_d$paymentMethod2","_d$paymentMethod3","_d$paymentMethod4","_d$paymentMethod5","src","PackageBlockTemplate","defaultPackageBlockData","icon","replaceWith","initComponentActionElements","body","appendChild","addEventListener","ev","_handlePromotedPriceButtonClick","participants","Participants","_this$locales$fallbac","closest","fallbackButtonText","textButton","add","forceRepaint","opened","remove","removeEventListener","closed","contextitemid","includedServices","filters","featuredFilters","humanized","extraParamsElements","querySelectorAll","el","dataSourceElement","innerHTML","_this6","click","_this$promotedPriceDa2","customLocaleElement","customLocaleData","context","_this$elements$sticky","_this$elements$sticky2","_d$price","yieldCampaignCode","discountBannerMessage","banner","container","carrouselElement","insertBefore","nextSibling","galleryReactElement","refund","REFUND_REQUESTED","REFUND_REQUEST_CLICKED","reviewsList","REVIEWS_LIST_DATA_LOADED","REVIEWS_LIST_REVIEW_TRANSLATED","REVIEWS_LIST_LANGUAGE_SWITCH","REVIEWS_LIST_PAGINATION","reviewsTeaser","REVIEWS_TEASER_LOADED","REVIEWS_TEASER_MODAL_OPENED","defaultRoomDropdownTemplateData","placeholder","rooms","roomStockThresholdToShowLowAvailability","roomsLeftAvailable","lastRoomAvailable","onRequestLabel","priceConfig","cancel","GLOBAL_LOCALES","WIDGET_API","WIDGET_QUERIES","floatingBox","textBox","roomsList","actionableListApi","roomsContainer","DEFAULT_OPTIONS","RoomDropdown","_createHtml","_getHtmlElements","_bindEvents","ActionableListTemplate","jsApi","config","itemType","priceDefaults","_bindRoomsEvents","roomDropdownHtml","TextboxTemplate","readonly","iconPosition","FloatingBoxTemplate","gradient","FloatingBoxHeaderTemplate","FloatingBoxBodyTemplate","FloatingBoxFooterTemplate","moveChildrenFrom","flush","textBoxInput","textBoxApi","floatingBoxApi","roomsListApi","_selectRoomItem","_onFocus","_onCancel","_closeFloatingBox","_openFloatingBox","setProp","_floatingBoxEvents","mousedown","_useScrollEffect","getProp","tempSelection","delegateTarget","rootElement","floatingBoxHeight","offsetHeight","viewportFree","clientHeight","getBoundingClientRect","top","scrollTop","isFloatingBoxFixed","getStyle","documentScrollingElement","scrollingElement","documentElement","safeDocumentYCoordinate","_getSafeDocumentYCoordinate","smooth","scrollLeft","forceClosedCallback","propTypes","string","isRequired","stockWarningMessage","characteristicsContentLayout","defaultProps","isSelectable","tokensShared","tokensBrand","tokens","dataRoomtypeCollapseListener","ROOMTYPES_SELECTOR_TOGGLED","RoomListItemTemplate","checkPropTypes","classNameLastRoom","stockWarningMessageIsLastRoom","onRequest","LabelTemplate","characteristics","roomTypeDescriptionTitle","roomNumber","selectRoomButtonText","contractId","occupancyId","packageId","CollapseTemplate","defaultCollapseData","html","GetRoomCharacteristicsHtml","images","PhotoGalleryTemplate","popupTitle","getTokenClass","defaultRoomListTemplateData","roomWord","showEmtpyFilteredRoomsMessage","roomsNotMatchingOccupancyHeader","roomsNotMatchingOccupancy","occupancySelectors","RoomListItemsTemplate","showFromTextInRooms","priceFromWord","emptyFilteredRooms","roomsListSelectRoomButtons","roomListNumberSteppers","roomsListContainerElement","sortRoomsBy","SortRoomsBy","PriceAndName","RoomList","_initOccupancyFilter","_refreshRooms","roomListHtml","roomOccupancy","occupancySelector","NumberStepperTemplate","roomId","ageProfileId","current","minValue","maxValue","max","step","labelDescription","getNumberStepperData","numberSteppers","numberSteppersApi","stepper","_getHtmlElementsInItems","numberStepperApi","_numberStepperChanged","_bindEventsItems","selectRoomButton","isOccupationEmptyOrNotSet","roomSelectorService","occupancies","occupancyFilter","eventArgs","roomContractId","attr","occupancy","_getOccupancyFilterFromNumberSteppers","_updateOccupancyFilter","silent","_initRoomsContainerEvents","total","_d$locales","_d$locales2","selectedRoomTypeList","notSelectedRoomTypeList","roomsHtml","filterResponse","filterRooms","isOccupancyFilterDefined","isOccupancyFilterEmpty","selectedRoomTypeRooms","roomsMatchingOccupancy","room","selected","notSelectedRoomTypeRooms","_getHeaderTextForRoomsNotMatchingOccupancy","roomListSelectedTitle","roomListOtherTitle","message","defaultRoomSelectorData","headerText","defaultRoomSelectorMessageData","showMessage","state","messagesText","showArrow","arrowPosition","token","defaultRoomSelectorAgeProfilesMessageData","headerTitle","headerToggleText","contentTitle","collapseId","profiles","number","roomName","roomDescription","shape","priceSuffix","infoMessage","errorMessage","bool","removable","isFlexibleAllocation","arrayOf","min","objectOf","oneOfType","removeRoomButton","RoomOccupancy","runElementQueries","NumberSteppersApi","_initNumberSteppersApi","_bindElements","api","_handleRoomOccupancyChanged","_handleRemoveRoomButtonClicked","getOccupancy","CurrencySymbolPosition","NotShown","BeforeAmount","AfterAmount","isValid","enumValue","includes","globalLocales","componentLocales","hasFlexibleAllocation","allInSameRoom","priceTableType","PriceTableType","DepartureDateAndRoomType","roomCode","roomOccupancyId","occupation","mainContainerElement","roomSelectorItemList","wrongAllocationMessageContentElement","RoomSelector","RoomSelectorService","_initState","_buildHtml","_updateUi","_createClass","allocatedPackages","unallocatedOccupation","totalOccupation","getOccupationFromBirthDates","getOccupationBaseObject","indexFirstPackage","firstPackage","roomOccupancies","getOccupanciesByRoomIdAndRoomOccupancyId","getOccupanciesByRoomId","_this$roomSelectorSer","getBestOccupancyForOccupation","bestOccupancy","bestOccupation","bestPackage","packages","getPackagesByRoomId","pkg","_findOccupation","limits","selectedPackage","getOccupationDifference","findIndex","participant","currentRoomParticipants","idx","occupationLimits","adults","children","babies","newState","occ","statusOk","roomStatus","_addRoomAllocatedAndSelected","_addRoomAllocatedNotSelected","roomListElement","_roomSelectorListHtml","_handleAddRoomDynamic","_handleAddRoom","isSpecialAgeProfile","specialAgeProfileMessageData","specialAgeProfileHeaderTitle","specialAgeProfileHeaderToggleText","specialAgeProfileContentTitle","ageProfiles","getValidProfiles","ageProfile","_getAgeProfileName","_getAgeRangeDescription","specialAgeProfileMessageElement","BoxTemplate","profile","messages","showMessageBox","extraClassArrowPosition","pendingAllocationMessageData","_getAllAgeProfilesPendingToAllocateMessages","pendingAllocationMessageElement","msg","errorWrongAllocationData","wrongAllocationMessageToContinue","errorWrongAllocationElement","roomSelectorElement","occupationToAllocate","_this7","roomSelectorListData","getListOfRoomsSelectableByOccupation","availableRoomsListData","_getAvailableRoomsListData","innerText","noCompatibleRoomsForPeoplePendingToAllocateText","_getPartyCompostionAllocatedDescription","_getOccupancySelectorsForRoomList","_getCurrencyConfig","currencyConfig","newStatePackages","_toConsumableArray","_updateState","newPackage","getPackageById","_this$roomSelectorSer3","_scrollToLastRoomAdded","roomsAdded","lastRoomAddedY","window","pageYOffset","_this8","stock","roomUsedStock","_getStockWarningMessage","_getStockWarningMessageIsLastRoom","_this9","_addSpecialAgeProfileMessage","_addRoomsAllocated","isEverybodyAllocated","_isEverybodyAllocated","allPackagesAllocated","_areAllPackagesAllocated","showErrorWrongAllocation","_addInfoMessageWithPendingAllocation","_addRoomListWithoutAllocation","_addErrorMessageWrongAllocation","birthdates","flat","pickBirthdatesByOccupation","picked","remaining","getRoomById","accOccupation","amountPeople","_this10","packageData","occupancyMatchesOccupation","stockRoomsAssigned","roomData","availableStock","getRoomOccupancyData","packageOccupation","errorMessages","_getPeopleAllocationInRoomErrorMessages","roomRowPackageData","getRoundedPrice","pricePerPersonAbbreviation","DepartureDateAndDuration","subtitle","_getOccupancySelectors","msgs","adultsWord","adultWord","childrenWord","childWord","babiesWord","babyWord","_this11","peoplePendingCount","peopleInExcessCount","_getPeoplePendingToAllocateMessage","_getPeopleAllocatedInExcessMessage","peopleCount","localeId","_this12","pendingToAllocateMsgs","getIds","pendingToAllocateNum","ageProfileName","pendingToAllocateMsg","pendingToAllocateMsgsLastItem","separator","peoplePendingToAllocateText","participantsCount","peopleAllocatedInExcess","_this13","isPriceTableGroupedByDuration","isNotFirstRoom","usedAgeProfilesCount","getIdsWithOccupation","currentOccupation","minOccupants","Math","maxOccupants","minAge","maxAge","_this14","ageProfilePendingToAllocate","_this15","roomRowData","_getRoomRowData","roomRowElement","encodeAttributes","roomOccupancyApi","newOccupancy","_handleRoomRowOccupancyChanged","_removeRoomRow","getOccupancyExpandedWithTotal","cheapestPackage","getCheapestPackageOfRoom","RoomSelectorRegisterFacade","_RoomSelector","_inherits","_super","search","SEARCH_FILTERS_APPLIED","SEARCH_RESULTS","SEARCH_ERROR","SEARCH_REMOVE_SINGLE_CHIP_FILTER","SEARCH_RESULT_CLICK","SEARCH_MODIFIER_CHANGE","SEARCH_SORT_CHANGE","SEARCH_PAGINATION_CHANGE","SEARCH_MAP_OPENED","selectedStateDataDefaults","routePricePerPerson","routeTotalPrice","priceBreakdown","services","bookMessage","tripSummary","contentUsps","SelectedStateDataModel","elementId","lines","line","isIconHidden","_this$data$priceBreak","optionalServices","service","mainTitleText","headerMessageText","headerMessageLevel","level","tripDetails","transformTripSummary","detailedTripSummary","tagLine","_getBreakdownTableTemplateData","itemsLocalCosts","_getBreakdownTableTemplateDataLocalCosts","itemsLocalCostsWithouPrices","localCostsWithoutPrice","itemsTotal","_getBreakdownTableTemplateDataTotal","extraInfo","extraInfoIcon","openJawMessage","isOpenJaw","headerTextLocalCosts","headerDescriptionLocalCosts","_getLocalCostsCurrencyDescription","mandatoryCosts","mandatoryCostsTitle","content","mandatoryCostsContent","submitButtonText","_getSubmitButtonText","packageUsps","usps","genericText","bookButton","tranportType","transportType","toLowerCase","bookButtonFlightSelector","bookButtonBusSelector","bookButtonSelfDriveSelector","_this$data","concept","roomText","subitems","topItemsExtraClasses","preItemsExtraClasses","isDiscount","rawAmount","_getSubTotalRowTemplateData","subTotalPayAtReservation","formatted","subTotalText","_this$data$priceBreak2","_this$data2","localCosts","localCostsWithPrice","localCost","subTotalPayAtDestination","_this$data3","_this$data4","showGrossPrice","totalPrice","totalGrossPrice","totalPriceSubItems","pricePerPersonText","extraClass","preitem","totalText","localCostsCurrencyCode","defaultSelectedStateData","category","imagePlaceholder","imageUnresolved","TitleSectionTemplate","PackageUspsItemTemplate","usp","kind","widgetAPI","defaults","SelectedState","setLoadingState","initSelectedStateDataModel","createHtml","bindEvents","selectedStateDataModel","selectedStateElement","_d$priceBreakdown","_d$priceBreakdown$ite","_d$priceBreakdown$ite2","_d$priceBreakdown2","_d$priceBreakdown3","isEmpty","mandatoryCostsCollapsed","accommodationUSPs","tripDetailsItems","BulletListTemplate","toUpperCase","BreakdownTableTemplate","contentItem","AbsoluteDialogTemplate","alertType","closable","SelectedStateTemplate","_getSelectedStateTemplateData","submitButton","Img","createInstancesOnDocument","handleSubmitButtonClick","_handleSubmitButtonClick","currentLoadingState","unBindEvents","staticContentData","STATIC_CONTENT_DATA_READY","_arrayLikeToArray","arr","len","arr2","form","saveButtons","emailInput","successToggle","ATTRIBUTES","SubscribeForm","_clickSaveButton2","_saveEmailAndGetDataChangeData2","_callApi","componentId","dataset","datasourceId","_attachEvents","formApi","emailInputApi","successToggleElement","_arrayWithoutHoles","iter","from","_iterableToArray","minLen","toString","test","_unsupportedIterableToArray","_nonIterableSpread","_clickSaveButton","preventDefault","_enableForm","_getEmailToSubscribe","validate","_saveEmailAndGetDataChangeData","t0","action","email","itemId","callApi","_x3","_x4","apiCaller","success","apiData","_showSubscribeFormSuccess","bookingGateEvents","BOOKING_GATE_SUBSCRIBE_FORM_SUCCESS","_showSubscribeFormError","enableStatus","elem","disabled","btn","setLoading","trim","TabsFilter","filterModel","defaultTabsData","setFilterModel","domEvents","_onMouseClick","renderTabs","clearSelection","setSelectedValues","models","model","isOpen","TabsNavTemplate","_getTabsOptionsFromFilter","swipeElement","Swipe","CreateInstanceOnElement","activeClass","tabItemCandidate","_findTabItemByMouseEvent","_setTabsOptionsToFilter","lastParentToCheck","matches","parentElement","parentNode","nodeType","closestResult","voucherRedeemer","VOUCHER_REDEEMER_SERVER_VALIDATION_ERROR","VOUCHER_REDEEMER_SERVER_ERROR","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","m","amdO","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","every","splice","getter","__esModule","definition","get","globalThis","Function","prop","nmd","paths","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}