{"version":3,"file":"static/js/13.b7a16a78abf49cff18cd.chunk.js","mappings":";uSAsBM,MAAOA,UAAyBC,EAAAA,cAGlCC,YAAYC,GACRC,MAAMD,GAmDO,KAAAE,UAAYC,MAAAA,IACzBC,EAAEC,iBACF,MAAMC,EAAeF,EAAEG,cAAcC,aAAa,cAC9CF,GAAgBA,EAAaG,OAAS,SAChCC,KAAKV,MAAMW,SAASL,IAtD9BI,KAAKE,sBAAwBF,KAAKE,sBAAsBC,KAAKH,MAC7DA,KAAKI,sBAAwBhB,EAAAA,YAC7BY,KAAKK,MAAQ,CACTC,mBAAmB,GAIpBC,SACH,MAAM,yBAAEC,EAAwB,eAAEC,GAAmBT,KAAKV,MAE1D,OACIF,EAAAA,cAAA,OAAKsB,UAAU,yCACXtB,EAAAA,cAAA,UAAQsB,UAAU,6CAA6CC,QAASX,KAAKE,uBACxEM,EACDpB,EAAAA,cAAA,QAAMsB,UAAU,gDAEnBV,KAAKK,MAAMC,kBACRlB,EAAAA,cAAA,MAAIsB,UAAU,6CAA6CE,KAAK,OAAOC,IAAKb,KAAKI,uBAC5EK,MAAAA,OAAc,EAAdA,EAAgBK,KAAKC,GAEd3B,EAAAA,cAAA,MAAIwB,KAAK,OAAOF,UAAU,kDAAkDM,IAAKD,EAASE,MACtF7B,EAAAA,cAAA,KACI4B,IAAKD,EAASE,KAAI,aACNF,EAASE,KACrBP,UAAU,kDACVQ,SAAU,EAAC,aACCH,EAASI,YACrBR,QAASX,KAAKR,UACdoB,KAAK,YAELxB,EAAAA,cAAA,QAAMsB,UAAU,yDACXK,EAASI,kBAOlC,MAKRjB,wBACJ,MAAMkB,EAAyBpB,KAAKK,MAAMC,kBAC1CN,KAAKqB,SAAS,CACVf,mBAAoBc,KC5C1B,MAAOE,UAA8BlC,EAAAA,cAGvCC,YAAmBC,GACfC,MAAMD,GAuDO,KAAAY,sBAAwB,KACrC,MAAMqB,EAAuBvB,KAAKK,MAAMmB,iBACxCxB,KAAKqB,SAAS,CACVG,kBAAmBD,KASV,KAAA/B,UAAYC,MAAAA,IACzBgC,EAAM9B,iBACN,MAAMC,EAAe6B,EAAM5B,cAAcC,aAAa,cACjC,OAAjBF,IACAI,KAAKqB,SAAS,CACVK,mBAAoB9B,IAGxBI,KAAKE,8BACCF,KAAKV,MAAMW,SAASL,KASjB,KAAA+B,WAAalC,MAAAA,IAC1BgC,EAAM9B,iBACN,MAAMC,EAAe6B,EAAM5B,cAAcC,aAAa,cACjC,OAAjBF,IACAI,KAAKqB,SAAS,CACVK,mBAAoB9B,IAGxBI,KAAKE,8BACCF,KAAKV,MAAMW,SAASL,KA7F9BI,KAAK4B,2BAA6BxC,EAAAA,YAClCY,KAAKK,MAAQ,CACTmB,kBAAkB,EAClBE,mBAAoB,IAIrBnB,SAAM,IAAAsB,EACT,MAAM,gCAAEC,EAA+B,sBAAEC,GAA0B/B,KAAKV,MAClE0C,EAAyBD,MAAAA,GAE9B,QAFmDF,EAArBE,EAAuBE,MACjDlB,GAA6BA,EAASE,OAASjB,KAAKK,MAAMqB,4BAC9D,IAAAG,OAAA,EAF8BA,EAE5BV,YACH,OACI/B,EAAAA,cAAA,OAAKsB,UAAU,yCACXtB,EAAAA,cAAA,UAAQsB,UAAU,6CAA6CC,QAASX,KAAKE,4BAC7CgC,IAA3BF,EAAuCA,EAAyBF,EACjE1C,EAAAA,cAAA,QAAMsB,UAAU,gDAEnBV,KAAKK,MAAMmB,iBACRpC,EAAAA,cAAA,MAAIsB,UAAU,6CAA6CG,IAAKb,KAAK4B,4BAChEG,MAAAA,OAAqB,EAArBA,EAAuBjB,KAAKC,GAErB3B,EAAAA,cAAA,MACIsB,UAAU,kDACVM,IAAKD,EAASE,KACdL,KAAK,MAAK,gBACKG,EAASE,OAASjB,KAAKK,MAAMqB,oBAE5CtC,EAAAA,cAAA,KACI4B,IAAKD,EAASE,KAAI,aACNF,EAASE,KACrBL,KAAK,WACLF,UAAU,kDACVQ,SAAU,EAAC,aACCH,EAASI,YACrBR,QAASX,KAAKR,UACd2C,UAAWnC,KAAK2B,YAEhBvC,EAAAA,cAAA,QAAMsB,UAAU,yDACXK,EAASI,kBAOlC,aCepB,MAAMiB,EAAgD,CAClDC,mBAAmB/C,EAA4CgD,GAC3DhD,EAAMiD,SAASC,WAAWlD,EAAMmD,SAAUH,IAE9CI,sBAAsBpD,GAClBA,EAAMiD,SAASG,sBAAsBpD,EAAMmD,SAASE,gBAExDC,uBAAuBtD,GACnBA,EAAMiD,SAASK,2BAkIjBC,EAA+BvD,GAA+C,KAChF8C,EAA8CC,mBAAmB/C,IAS/DwD,EAA4BA,CAACxD,EAA4CyD,IAAwB,KACnGX,EAA8CC,mBAAmB/C,EAAOyD,IAQtEC,EAAmC1D,GAA+C,KACpF8C,EAA8CM,sBAAsBpD,IAQlE2D,EAA+B3D,GAA+C,KAChF8C,EAA8CQ,uBAAuBtD,IAQnE4D,EAAmB5D,GAA+CG,MAAAA,IACpE2C,EAA8CC,mBAAmB/C,EAAOM,GACjEuD,QAAQC,WAiNbC,EAAuBA,CACzBC,EACAC,KAEA,MAAMC,EAAmC,GAQzC,OAPAF,MAAAA,GAAAA,EAAwBxC,KAAIC,IACxB,MAAM0C,EAASF,MAAAA,OAAqB,EAArBA,EAAuBtB,MAAKyB,GAAaA,EAAUzC,OAASF,EAASE,OAChFwC,GACAD,EAAeG,KAAKF,MAIrBD,GAGEI,EA3LyEtE,IAClF,MAAM,gBACFuE,EAAe,kBACfC,EAAiB,UACjBC,EAAS,SACTtB,EAAQ,UACRuB,EAAS,iBAETC,EAAgB,iBAChBC,EAAgB,MAChBC,EAAK,yBACLC,EAAwB,wBACxBC,EAAuB,mBACvBC,EAAkB,iBAClBC,EAAgB,sBAChBhB,EAAqB,wBACrBiB,GACAlF,EAEEmF,EAAgChC,EAASiC,YACzCC,EArKkBC,EACxBC,EACAC,EACAR,KAEA,QAAiBpC,IAAb2C,IAA0BP,EAEvB,OAAIO,EAAW,EACX,OAAOC,KAEX,IAAIC,KAAKC,MAAMH,MAAaC,MA2JUF,CAAoBnC,EAASwC,SAAU3F,EAAMwF,sBAAuBR,GAC3GY,EAAmCzC,EAAS0C,QAE5CC,EA5HYC,CAAAA,IAClB,IAAKA,EACD,OAGJ,MAAMC,EAAmBD,EAASE,QAAOC,GAAwC,IAA7BA,EAAQC,mBAA2BD,EAAQE,YAE/F,GAAIJ,GAAoBA,EAAiBvF,OAAS,EAAG,CACjD,MAAM4F,EAAsBL,EAAiBrD,MAAKuD,GAAWA,EAAQI,YAErE,OAAID,EACOA,EAAoBE,QAGxBP,EAAiB,GAAGO,UA8GGC,CAAarD,EAASsD,UAElDC,EAAgBjC,EAAYC,EAAUiC,QAAUjC,EAAUkC,WAC1DC,EAAalC,QAAsC/B,EACnDkE,EAAgCvC,OAAkB3B,EAAYiE,GAA0BH,EACxFK,EAAoBxC,GAAmBE,EACvCuC,EAAkCtC,EAAUuC,eAC5CC,EAAiCxC,EAAUyC,8BAA8BC,QAAQ,cAAejC,GAAa,IAC7GkC,EAAmBvC,IAA6B3B,EAASE,cACzDiE,GAAoBC,EAAAA,EAAAA,kBAAiB,QAAStC,EAAmBuC,EAAAA,kBAAkBC,eACnFC,GAAaC,EAAAA,EAAAA,wBAAuB1C,EAAmBqC,GAC7DA,EAAQM,cAAcC,MAAQL,EAAAA,kBAAkBM,eAChD,MAAMC,GAAqBJ,EAAAA,EAAAA,wBAAuB1C,EAAmBqC,GACrEA,EAAQM,cAAcC,MAAQL,EAAAA,kBAAkBQ,qBAChD,MAAMC,GAA2BN,EAAAA,EAAAA,wBAAuB1C,EAAmBqC,GACrEY,EAAqBnE,EAAqBmB,EAAyBjB,GAEzE,OACInE,EAAAA,cAAA,OAAKsB,UAAU,uCACXtB,EAAAA,cAAA,OAAKsB,UAAU,8CACVwD,GAAoB9E,EAAAA,cAAA,QAAMsB,UAAU,mDAAmDyD,GACxF/E,EAAAA,cAAA,QAAMsB,UAAU,kDACXyD,EAAK,KAAIM,KAEbE,GAAmBvF,EAAAA,cAAA,QAAMsB,UAAU,sDAAoD,IAAGiE,IAE/FvF,EAAAA,cAAA,OAAKsB,UAAU,+CACV2D,EACGsC,EACIvH,EAAAA,cAAA,SAAAqI,OAAAC,OAAA,CACI9G,KAAK,WACLF,UAAU,sDAAqD,YACrD,SAAQ,eACL,OAAM,aACPsD,EAAU2D,wBACtBhH,QAASsC,EAA4B3D,IACjCiI,GAEHvD,EAAU4D,oBAGfxI,EAAAA,cAAA,SAAAqI,OAAAC,OAAA,CACI9G,KAAK,WACLF,UAAU,6DAA4D,YAC5D,SAAQ,eACL,QAAO,aACRsD,EAAU6D,kCAClBR,EAAkB,CACtB1G,QAASqC,EAAgC1D,KAExC0E,EAAU8D,yBAGnB,KAEJ1I,EAAAA,cAAA,OAAKsB,UAAU,oDAEVwE,GACG9F,EAAAA,cAAA,OAAKsB,UAAU,uDACXtB,EAAAA,cAAA,QAAMsB,UAAU,kFAChBtB,EAAAA,cAAA,QAAMsB,UAAU,oDAAoDwE,IAU3EE,GACGhG,EAAAA,cAAA,OAAKsB,UAAU,qDACXtB,EAAAA,cAAA,QAAMsB,UAAU,gEAChBtB,EAAAA,cAAA,QAAMsB,UAAU,kDAAkD0E,MAY5ElB,GACE9E,EAAAA,cAAA,OAAKsB,UAAU,0DACXtB,EAAAA,cAAA,KAAGsB,UAAU,yCAAyCsD,EAAU+D,wBAC/D3B,GAAahH,EAAAA,cAAA,KAAGsB,UAAU,+CAA+C0F,GACzEtC,EACG1E,EAAAA,cAAA,KAAGsB,UAAU,mDAAmDsD,EAAUgE,mBAC1E3B,IAC8B,IAA9BmB,EAAmBzH,OACfX,EAAAA,cAAA,SAAAqI,OAAAC,OAAA,CACIhH,UAAU,8CAA6C,aAC3C8F,EACZ7F,QAASkC,EAA4BvD,IACjC0H,GAEHV,GApJX2B,EACtB3I,EACAkI,EACAlB,EACAE,SAEiCtE,IAA7B5C,EAAM4I,mBAEF9I,EAAAA,cAACD,EAAgB,CACbqB,yBAA0B8F,EAC1B7F,eAAgB+G,EAChBvH,SAAUiD,EAAgB5D,KAKlCF,EAAAA,cAAA,UACIsB,UAAU,8CAA6C,aAC3C8F,EACZ7F,QAASmC,EAA0BxD,EAAOA,EAAM4I,qBAE/C5B,GAkImB2B,CAAkB3I,EAAOkI,EAAoBlB,EAAyBE,QClYtG,IAAa2B,EAAb,cAAgD/I,EAAAA,cAO5CC,YAAmBC,GACfC,MAAMD,GAsCO,KAAA8I,eAAkBC,GAAiD,KAChFrI,KAAKV,MAAMqB,QAAQ0H,MAAAA,OAAe,EAAfA,EAAiB1F,gBA4DvB,KAAA2F,gBAAkB,KAC/B,MAAMC,EAAsBvI,KAAKwI,oBAAoBC,QAC/CC,EAASH,MAAAA,OAAmB,EAAnBA,EAAqBI,cAChCJ,GAAuBG,IACnBA,EAAOE,UAAYL,EAAoBM,UACvCH,EAAOE,UAAYL,EAAoBM,UAChCN,EAAoBM,UAAYN,EAAoBO,aAAeJ,EAAOE,UAAYF,EAAOI,eACpGJ,EAAOE,UAAYL,EAAoBM,UAAYN,EAAoBO,aAAeJ,EAAOI,gBAKxF,KAAAC,mBAAsBtG,GAClCzC,KAAKV,MAAM0J,yBAA2BvG,GAAYzC,KAAKV,MAAM0J,wBAAwBrG,gBAAkBF,EAASE,gBACjH,EAEa,KAAAsG,kBAAqBC,IAC7BlJ,KAAKV,MAAM6J,0BAIZD,GAAsBA,EAAmBnJ,OAAS,OAC3CmJ,EAAmB,GAAGE,mBAAoBF,EAAmB,GAAGE,kBAAoB,GAMlF,KAAAC,qBAAwBC,IACrC,GAAIA,MAAAA,GAAAA,EAAuBC,8BAA+BD,MAAAA,OAAqB,EAArBA,EAAuBC,4BAA4BxJ,QAAS,EAClH,IAAK,IAAIyJ,EAAI,EAAGA,EAAIF,EAAsBC,4BAA4BxJ,OAAQyJ,IAAK,KAAAC,EAC/E,IAC6C,QAAzCA,EAAAH,EAAsBI,2BAAmB,IAAAD,GAAiB,QAAjBA,EAAzCA,EAA2CE,uBAAe,IAAAF,OAAA,EAA1DA,EAA4DG,uBAC5DN,EAAsBC,4BAA4BC,GAAGK,iBAErD,OAAOP,EAAsBC,4BAA4BC,GAAGM,kBAQ3D,KAAAC,cAAiB/F,IACvB,CACHgG,kBAAmBhG,EAAUiG,YAC7BC,iBAAkBlG,EAAUmG,SAC5BpC,uBAAwB/D,EAAUoG,iBAElCC,WAAYrG,EAAUsG,qBACtBpE,WAAYlC,EAAUuG,eACtBtE,QAASjC,EAAUwG,YAEnBxC,gBAAiBhE,EAAUyG,0BAC3BlE,eAAgBvC,EAAU0G,gBAC1BjE,8BAA+BzC,EAAU2G,0BACzC7C,wBAAyB9D,EAAU8D,wBACnCD,iCAAkC7D,EAAU6D,iCAC5CD,mBAAoB5D,EAAU4D,mBAC9BD,wBAAyB3D,EAAU2D,wBAEnCiD,KAAM,CACFC,OAAQ7G,EAAU8G,qBAClBC,QAAS/G,EAAUgH,sBACnBC,UAAWjH,EAAUkH,wBACrBC,SAAUnH,EAAUoH,uBACpBC,OAAQrH,EAAUsH,qBAClBC,SAAUvH,EAAUwH,uBACpBC,OAAQzH,EAAU0H,qBAClBC,WAAY3H,EAAU4H,yBACtBC,YAAa7H,EAAU8H,0BACvBC,cAAe/H,EAAUgI,4BACzBC,aAAcjI,EAAUkI,2BACxBC,WAAYnI,EAAUoI,yBACtBC,aAAcrI,EAAUsI,2BACxBC,WAAYvI,EAAUwI,4BA7K9BxM,KAAKwI,oBAAsBpJ,EAAAA,YAC3BY,KAAKyM,aAAe,EAGjBC,mBAAmBC,GAClB3M,KAAKV,MAAMsN,0BAA4BD,EAAUC,yBACjD5M,KAAKsI,kBAINuE,oBACC7M,KAAKV,MAAMwN,YACX9M,KAAK+M,QAAU/M,KAAKgN,YAAYhN,KAAKV,MAAMwN,YAI5CvM,SACH,OAAKP,KAAK+M,SAAmC,IAAxB/M,KAAK+M,QAAQhN,QAIlCC,KAAKyM,aAAe,EAGhBrN,EAAAA,cAAA,OAAKsB,UAAWuM,GAAAA,CAAW,6BAA8B,CAAEC,KAAMlN,KAAKV,MAAM6N,cAAgBvM,KAAK,QAC5FZ,KAAK+M,QAAQjM,KAAI,CAACsM,EAAOjJ,IACfnE,KAAKqN,qBAAqBD,EAAOjJ,OARzC,KAuBPkJ,qBAAqBD,EAAiCjJ,GAAa,IAAAmJ,EACvE,MAAMjF,EAAkB+E,MAAAA,GAA0B,QAArBE,EAALF,EAAO1D,2BAAmB,IAAA4D,OAAA,EAA1BA,EAA4B3D,gBAC9CiD,EAA0B5M,KAAKV,MAAMsN,wBACrCW,EAAkBH,MAAAA,OAAK,EAALA,EAAOI,2BAEV,IAAAC,EAArB,GAAIpF,EAEA,QADErI,KAAKyM,aAEHrN,EAAAA,cAAA,OACIsB,UAAWuM,GAAAA,CAAW,4BAA6B,CAC/CS,SAAUd,IAA4BvE,EAAgB1F,gBAE1D3B,IAAKmD,EACLvD,KAAK,WAAU,eACD+M,EAAAA,gBAAgBC,YAAY5N,KAAK+M,SAAW/M,KAAK+M,QAAQhN,OAVxD,EAUmF,gBACnFC,KAAKyM,aACpB9L,QAASX,KAAKoI,eAAeC,GAC7BxH,IAAK+L,IAA4BvE,EAAgB1F,cAAgB3C,KAAKwI,yBAAsBtG,GAE5F9C,EAAAA,cAACwE,EAAsC,CACnCnB,SAAU4F,EACVwF,WAAYT,EAAMU,WAClB9J,UAAWhE,KAAK+J,cAAc/J,KAAKV,MAAM0E,WACzCc,sBAAuB9E,KAAKV,MAAMwF,sBAClChB,kBAAmB9D,KAAK+I,mBAAmBV,GAC3CtE,UAAW/D,KAAKiJ,kBAAkBmE,MAAAA,GAA0B,QAArBK,EAALL,EAAO1D,2BAAmB,IAAA+D,OAAA,EAA1BA,EAA4BvE,oBAC9D3G,SAAU,CACNC,WAAYxC,KAAKV,MAAM+C,mBACvBK,sBAAuB1C,KAAKV,MAAMoD,sBAClCE,uBAAwB5C,KAAKV,MAAMsD,wBAEvCqB,iBAAkBjE,KAAKqJ,qBAAqB+D,GAC5ClJ,iBAAkBlE,KAAKV,MAAM4E,iBAC7BC,MAAOnE,KAAKyM,aAAasB,WACzB3J,yBAA0BpE,KAAKV,MAAM8E,yBACrCC,wBAAyBrE,KAAKV,MAAM+E,wBACpCE,iBAAkBvE,KAAKV,MAAMiF,iBAC7BD,mBAAoBtE,KAAKV,MAAMgF,mBAC/Bf,sBAAuBgK,MAAAA,OAAe,EAAfA,EAAiBS,gBACxCxJ,wBAAyBxE,KAAKV,MAAM2O,6BACpC/F,mBAAoBlI,KAAKV,MAAM4I,sBAQ3C8E,YAAYkB,GAChB,MAAMvH,EAAoBwH,IAA+B,IAAAC,EAAA,OACrDpO,KAAKV,MAAM+E,yBACXrE,KAAKV,MAAM8E,2BACX+J,MAAAA,GAA0B,QAArBC,EAALD,EAAOzE,2BAAmB,IAAA0E,GAAiB,QAAjBA,EAA1BA,EAA4BzE,uBAAe,IAAAyE,OAAA,EAA3CA,EAA6CzL,iBAAkB3C,KAAKV,MAAM8E,0BAE9E,MAAO,IAAI8J,EAAO3I,OAAOoB,MAAsBuH,EAAO3I,QAAO6H,IAAUzG,EAAiByG,SArGhFiB,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,8BAHFnG,GAA0BkG,EAAAA,EAAAA,IAAA,CADtCE,EAAAA,IACYpG,GCWP,MAAOqG,UAAgCpP,EAAAA,cASzCC,YAAYC,GACRC,MAAMD,GATO,KAAAmP,aAAkDrP,EAAAA,YAwGlD,KAAAsP,oBAAuBjN,IAChCA,EAAMkN,UAAYC,EAAAA,SAASC,OAASpN,EAAMkN,UAAYC,EAAAA,SAASE,OAC/D9O,KAAKV,MAAMyP,mBAQF,KAAAC,mBAAqBvP,MAAAA,IAClC,MAAMwP,EAAqBxN,EAAMyN,OAAOf,YAElCnO,KAAKV,MAAM6P,kBAAkBF,IAOtB,KAAAG,UAAY3P,MAAAA,IAAqD,IAAA4P,EAC9E5N,EAAM9B,iBACmB,QAAzB0P,EAAArP,KAAKyO,aAAahG,eAAO,IAAA4G,GAAzBA,EAA2BC,aACrBtP,KAAKV,MAAMiQ,cAAcvP,KAAKV,MAAM6O,QAO7B,KAAAqB,iBAAmB,IAAM/P,MAAAA,IACtCO,KAAKV,MAAMmQ,yBAAyB7P,GAC7BuD,QAAQC,WAcF,KAAAsM,sBAAwB,CACrCpQ,EACAqQ,EACA1B,EACA2B,EACAC,EACAC,EACAC,IAEIA,EAEI3Q,EAAAA,cAAA,OAAKsB,UAAU,kCACVmP,GACGzQ,EAAAA,cAAA,SAAAqI,OAAAC,OAAA,CACIhH,UAAU,+BACVC,QAASrB,EAAM0Q,0BACXhQ,KAAKiQ,yBAERN,GAGTvQ,EAAAA,cAACkC,EAAqB,CAClBQ,gCAAiC8N,EACjC7N,sBAAuBkM,EACvBhO,SAAUD,KAAKwP,qBAEnBpQ,EAAAA,cAAA,OAAKsB,UAAU,0CAA0CoP,IAIjED,EAEIzQ,EAAAA,cAAA,SAAAqI,OAAAC,OAAA,CAAQhH,UAAU,+BAA+BC,QAASrB,EAAM0Q,0BAA8BhQ,KAAKiQ,yBAC9FN,GAIN,KAjLP3P,KAAKK,MAAQ,CAAE8N,MAAO,IACtBnO,KAAK0O,oBAAsB1O,KAAK0O,oBAAoBvO,KAAKH,MACzD,MAAM4G,GAAoBC,EAAAA,EAAAA,kBAAiB,QAASvH,EAAMiF,iBAAmBuC,EAAAA,kBAAkBoJ,aAC/FlQ,KAAKmQ,uBAAwBlJ,EAAAA,EAAAA,wBAAuB3H,EAAMiF,iBAAmBqC,GAC7EA,EAAQM,cAAcC,MAAQL,EAAAA,kBAAkBsJ,aAChDpQ,KAAKqQ,wBAAyBpJ,EAAAA,EAAAA,wBAAuB3H,EAAMiF,iBAAmBqC,GAC9EA,EAAQM,cAAcC,MAAQL,EAAAA,kBAAkBwJ,cAChDtQ,KAAKiQ,yBAA0BhJ,EAAAA,EAAAA,wBAAuB3H,EAAMiF,iBAAmBqC,GAG5ErG,SACH,MACIyD,WAAW,sBACPuM,EAAqB,sBACrBC,EAAqB,iBACrBC,EAAgB,aAChBC,EAAY,YACZC,EAAW,sBACXb,EAAqB,wBACrBF,GACH,GACDgB,EAAE,MACFzC,EAAK,cACL0C,EAAa,cACbC,EAAa,YACb3D,EAAW,YACX0C,EAAW,gBACXd,EAAe,6BACfd,EAA4B,kCAC5B8B,GACA/P,KAAKV,MAEHqQ,EAAmBxC,EAAcwD,EAAcD,EAErD,OACItR,EAAAA,cAAA,OAAKsB,UAAU,2BACXtB,EAAAA,cAAA,QACIsB,UAAU,+BAA8B,aAC5B6P,EACZQ,KAAK,0BACLnQ,KAAK,OACLoQ,aAAa,MACbC,SAAUjR,KAAKoP,UACfwB,GAAI,yCAAyCA,KAE7CxR,EAAAA,cAAA,SACI8R,KAAK,OAAM,aACClR,KAAKV,MAAM0E,UAAUmN,qBACjCzQ,UAAU,iDACV0Q,YAAaZ,EACbrC,MAAOA,EACPlO,SAAUD,KAAKgP,mBACf4B,GAAI,+BAA+BA,IACnC/P,IAAKb,KAAKyO,aACV7N,KAAK,WAAU,gBACD,QAAO,gBACP,uBAElBxB,EAAAA,cAAA,SAAAqI,OAAAC,OAAA,CACIhH,UAAW,kCAAiCmQ,EAAgB,uBAAyB,IAAI,aAC7EN,EACZc,MAAM,WACFrR,KAAKmQ,yBAGhBW,GACG1R,EAAAA,cAAA,MAAAqI,OAAAC,OAAA,CACIhH,UAAU,yCACVQ,SAAU,EACVN,KAAK,SACL0Q,QAAStR,KAAK0O,oBACd/N,QAASoO,GACL/O,KAAKqQ,wBAERI,GAGRzQ,KAAK0P,sBACF1P,KAAKV,MACLqQ,EACA1B,EACA2B,EACAC,EACAC,EACAC,KC1Ib,MAAMwB,EAAuEC,IAAA,IAAC,UAAExN,GAAWwN,EAAA,OAC9FpS,EAAAA,cAAA,OAAKsB,UAAU,iCACXtB,EAAAA,cAAA,SAAI4E,EAAUyN,sBAITC,EAAiCA,IAAMtS,EAAAA,cAAA,OAAKsB,UAAWuM,GAAAA,CAAW,cAAe,yCAQjF0E,EAA2EC,IAA2C,IAA1C,KAAEC,EAAI,eAAEC,EAAc,aAAEC,GAAcH,EAC3H,GAAIC,EAAM,CACN,MAAMG,EAAoC,CACtCC,UAAWJ,EAAKI,UAChBvR,UAAW,8BACXwR,SAAUL,EAAKK,SACfC,QAASN,EAAKM,QAAQC,eACtBC,aAAcR,EAAKQ,aACnBzR,KAAM,QAGV,OACIxB,EAAAA,cAAA,OAAKsB,UAAU,2BACXtB,EAAAA,cAACkT,EAAAA,GAAa,CAACT,KAAMG,EAAcO,UAAW,CAAER,aAAAA,EAAcD,eAAAA,MAI1E,OAAO,MAUEU,EAAoFC,IAM5F,IAN6F,UAC9F3F,EAAS,aACT4F,EAAY,UACZ1O,EAAS,cACT2O,EAAa,sBACb7N,GACH2N,EACG,GAAI3F,EAAW,CACX,MAAM8F,EACF9N,IAA0Bd,EAAU6O,eAAiB7O,EAAU4O,kBAAoB5O,EAAU8O,sBACjG,OACI1T,EAAAA,cAAA,OAAKsB,UAAU,oCACViS,EACK3O,EAAU+O,qBAAqBrM,QAAQ,UAAWoG,EAAU/M,OAAOgO,YACnE6E,EAAkBlM,QAAQ,UAAWoG,EAAU/M,OAAOgO,YAAYrH,QAAQ,WAAYgM,EAAa3E,aAKrH,OAAO,2BCjDJ,MAAMiF,EAAiBC,IAC1B,QAAgB/Q,IAAZ+Q,EACA,OAEJ,IAAIC,EAAQnO,KAAKC,MAAMiO,EAAU,MACjC,MAAME,EAAOD,GAAS,GAAK,KAAO,KAClCA,GAAS,GACTA,EAAQA,GAAgB,GACxB,MAAME,EAAoBH,EAAU,KAEpC,MAAO,GAAGC,KADMnO,KAAKC,MAAMoO,EAAoB,IAAM,GAAK,IAAIrO,KAAKC,MAAMoO,EAAoB,MAAQrO,KAAKC,MAAMoO,EAAoB,OACtGD,KAG5BE,EAAqBA,CAACC,EAActP,KACtC,OAAQsP,GACJ,IAAK,MACD,OAAOtP,EAAU4G,KAAKC,OAC1B,IAAK,MACD,OAAO7G,EAAU4G,KAAKG,QAC1B,IAAK,MACD,OAAO/G,EAAU4G,KAAKK,UAC1B,IAAK,MACD,OAAOjH,EAAU4G,KAAKO,SAC1B,IAAK,MACD,OAAOnH,EAAU4G,KAAKS,OAC1B,IAAK,MACD,OAAOrH,EAAU4G,KAAKW,SAC1B,QAEI,OAAOvH,EAAU4G,KAAKa,SAI5B8H,EAAoBA,CAACD,EAActP,KACrC,OAAQsP,GACJ,IAAK,MACD,OAAOtP,EAAU4G,KAAKe,WAC1B,IAAK,MACD,OAAO3H,EAAU4G,KAAKiB,YAC1B,IAAK,MACD,OAAO7H,EAAU4G,KAAKmB,cAC1B,IAAK,MACD,OAAO/H,EAAU4G,KAAKqB,aAC1B,IAAK,MACD,OAAOjI,EAAU4G,KAAKuB,WAC1B,IAAK,MACD,OAAOnI,EAAU4G,KAAKyB,aAC1B,QAEI,OAAOrI,EAAU4G,KAAK2B,aAI5BiH,EAAwBA,CAC1BC,EACAC,EACAC,EACA3P,KAEO,CACH4P,cAAeP,EAAmBI,EAAUzP,GAC5C6P,aAAcN,EAAkBE,EAAUzP,GAC1C8P,YAAaL,IAAaC,EAASL,EAAmBK,EAAQ1P,QAAa9B,EAC3E6R,WAAYN,IAAaC,EAASH,EAAkBG,EAAQ1P,QAAa9B,EACzE8R,UAAWL,IAIbM,EAAmBA,CAACC,EAAuBC,OACzCD,EAAUE,WAAYD,EAAWC,YAIhCF,EAAUE,WAAaD,EAAWC,WAC5BF,EAAUG,WAAaF,EAAWE,UAAYH,EAAUI,YAAcH,EAAWG,WAM1FC,EAAoBA,CAAC1G,EAA+B2G,KAC/C,CACHJ,SAAUK,GAAAA,CAAI5G,EAAY,aAAa2G,KAAiB,GACxDH,SAAUI,GAAAA,CAAI5G,EAAY,GAAG2G,iBAAyBtS,GACtDoS,UAAWG,GAAAA,CAAI5G,EAAY,GAAG2G,kBAA0BtS,KAI1DwS,EAAwBA,CAACf,EAAuB3P,KAClD,GAAI2P,EAAUS,SACV,OAAOpQ,EAAUqG,WAKrB,MAAO,GAH8B2I,EAAcW,EAAUU,aAC1BrB,EAAcW,EAAUW,cAKlDK,EAAkBA,CAAC9G,EAA+B7J,KAC3D,MAAM4Q,EAAsC,GAEtCC,EAAcN,EAAkB1G,EAAY,UAC5CiH,EAAeP,EAAkB1G,EAAY,WAC7CkH,EAAiBR,EAAkB1G,EAAY,aAC/CmH,EAAgBT,EAAkB1G,EAAY,YAC9CoH,EAAcV,EAAkB1G,EAAY,UAC5CqH,EAAgBX,EAAkB1G,EAAY,YAC9CsH,EAAcZ,EAAkB1G,EAAY,UAElD,IAAIuH,EAAuB,MACvBC,EAAqB,MA8CzB,OA5CKpB,EAAiBY,EAAaC,KAC/BF,EAAejR,KAAK6P,EAAsB4B,EAAaC,EAAWX,EAAsBG,EAAa7Q,GAAYA,IAEjHoR,EAAc,OAElBC,EAAY,MAEPpB,EAAiBa,EAAcC,KAChCH,EAAejR,KAAK6P,EAAsB4B,EAAaC,EAAWX,EAAsBI,EAAc9Q,GAAYA,IAElHoR,EAAc,OAElBC,EAAY,MAEPpB,EAAiBc,EAAgBC,KAClCJ,EAAejR,KAAK6P,EAAsB4B,EAAaC,EAAWX,EAAsBK,EAAgB/Q,GAAYA,IAEpHoR,EAAc,OAElBC,EAAY,MAEPpB,EAAiBe,EAAeC,KACjCL,EAAejR,KAAK6P,EAAsB4B,EAAaC,EAAWX,EAAsBM,EAAehR,GAAYA,IAEnHoR,EAAc,OAElBC,EAAY,MAEPpB,EAAiBgB,EAAaC,KAC/BN,EAAejR,KAAK6P,EAAsB4B,EAAaC,EAAWX,EAAsBO,EAAajR,GAAYA,IAEjHoR,EAAc,OAElBC,EAAY,MAEPpB,EAAiBiB,EAAeC,KACjCP,EAAejR,KAAK6P,EAAsB4B,EAAaC,EAAWX,EAAsBQ,EAAelR,GAAYA,IAEnHoR,EAAc,OAElBC,EAAY,MAEZT,EAAejR,KAAK6P,EAAsB4B,EAAaC,EAAWX,EAAsBS,EAAanR,GAAYA,IAE1G4Q,GC9KJ,IAAWU,EAAAA,EAKAC,EAKAC,EAAAA,GAVAF,EAAAA,IAAAA,EAAI,KAClB,wBACAA,EAAA,8BAGJ,SAAkBC,GACdA,EAAA,cACAA,EAAA,wBAFJ,CAAkBA,IAAAA,EAAgB,MAKhBC,EAAAA,IAAAA,EAAK,KACnB,gBACAA,EAAA,imBC2KJ,IAAMC,EAAN,cAA4BrW,EAAAA,UAOxBC,YAAmBC,GACfC,MAAMD,GAFF,KAAAoW,YAA6B,GA2H7B,KAAAC,eAAiBlW,UACrB,GAAIO,KAAKV,MAAMsW,QAAQC,cAAc/D,eAAegE,KAAKC,gBAAiB,CACtE,MAAMC,EAAwBhW,KAAKV,MAAMsW,QAAQC,cAAc/D,eAAegE,KAAKE,sBACnF,GAAIA,EAAuB,CACvB,MAAMC,QAAyBC,EAAAA,EAAAA,WAAU,CAAEC,cAAenW,KAAKV,MAAMsW,QAAQC,eAAiBG,GAC9FhW,KAAKqB,SAAS,CAAE4U,YAAAA,OAiQrB,KAAAG,qBAAwB3U,IACvBzB,KAAKV,MAAM+W,OAAOC,qBAClBtW,KAAKV,MAAM+W,OAAOC,mBAAmBpE,SAAWzQ,EAAMyN,OAAOf,QAS9D,KAAAoI,oBAAuB9U,GAA0CzB,KAAKV,MAAM+W,OAAOG,QAAU/U,EAAMyN,OAAOf,MAKhG,KAAAsI,uBAAyB,KACtCzW,KAAK0W,4BAA2B,IAOnB,KAAAC,qBAAwB/W,IACrCI,KAAKqB,SAAS,CAAE6G,mBAAoBtI,KA0EvB,KAAAgX,sBAAwBnX,UACrC,MACI4W,QAAQ,mBAAEQ,GACVjB,SAAS,UACLkB,EACAjB,eACI/D,gBAAgB,QAAEiF,KAG1BC,MACIC,2BAA6BC,OAAQD,KAEzCjX,KAAKV,MAEL2X,MAAAA,GAAAA,EAA2BE,iBAAmBnX,KAAKoX,oBACnDC,UAAUC,KAAKC,WAAW,6BAA8B,CACpDC,SAAUA,KACN,MAAMC,EAAOC,EAAAA,EAAA,GAAQb,GAAkB,IAAEc,YAAaZ,MAAAA,OAAO,EAAPA,EAASa,8BAC/D5X,KAAKoX,mBAAqB,IAAIC,UAAUC,KAAKO,mBAAmBJ,GAChEzX,KAAKoX,mBAAmBU,kBACpB,gCAAgC9X,KAAKV,MAAMsR,KAC3C,0CAA0C5Q,KAAKV,MAAMsR,KACrD5Q,KAAK+X,wBAGbC,cAAeA,KACPlB,GACAA,EAAUmB,MAAM,uCAGxBC,YAAanB,MAAAA,OAAO,EAAPA,EAASoB,kBASjB,KAAAJ,sBAAwBtY,MAAAA,IACrC,MAAMmW,EACF5V,KAAKV,MAAM0X,KAAKC,2BAChBjX,KAAKV,MAAM0X,KAAKC,0BAA0BC,QAC1ClX,KAAKV,MAAM0X,KAAKC,0BAA0BC,OAAOtB,QACjDA,GAAWA,EAAQhF,KAAO5Q,KAAKV,MAAMsR,WAC/B5Q,KAAKoY,mBAAmBlB,EAAOmB,2BAC/BrY,KAAKsY,eAAepB,EAAOmB,uBAQxB,KAAAE,mBAAqB9Y,MAAAA,IAAqD,IAAA+Y,EAAAC,EAAAC,EACvF,IAAKC,EACD,OAGJ,MACI/C,SACIC,eACI/D,gBAAgB,QAAE8G,KAG1BvC,QAAQ,KAAEf,GACV0B,MACIC,2BAA6BC,OAAQD,GACrC4B,gBAAkB3B,OAAQ2B,GAC1BC,yBAA2B5B,OAAQ4B,KAEvC9Y,KAAKV,MAET,IAAK2X,EACD,OAIJ,IAAI/I,EAEAA,QAJyBhM,IAAToT,EAAqBA,EAAOyD,EAASC,iBAGrCD,EAASE,YAAcJ,EAC9BA,EAEAC,EAGb,MAAMI,EAAgBhL,EAAOjM,MAAKmL,IAAK,IAAAE,EAAA,OAA6B,QAAzBA,EAAAF,EAAM1D,2BAAmB,IAAA4D,GAAiB,QAAjBA,EAAzBA,EAA2B3D,uBAAe,IAAA2D,OAAA,EAA1CA,EAA4C3K,iBAAkBgW,WAEnG1B,EAA0BkC,0BAC5BR,EACAO,MAAAA,GAAkC,QAArBV,EAAbU,EAAexP,2BAAmB,IAAA8O,GAAiB,QAAjBA,EAAlCA,EAAoC7O,uBAAe,IAAA6O,OAAA,EAAnDA,EAAqD9T,YACrDkU,EAAQQ,iBACRF,MAAAA,GAAkC,QAArBT,EAAbS,EAAexP,2BAAmB,IAAA+O,GAAiB,QAAjBA,EAAlCA,EAAoC9O,uBAAe,IAAA8O,OAAA,EAAnDA,EAAqDY,SACrDH,MAAAA,GAAkC,QAArBR,EAAbQ,EAAexP,2BAAmB,IAAAgP,GAAiB,QAAjBA,EAAlCA,EAAoC/O,uBAAe,IAAA+O,OAAA,EAAnDA,EAAqDY,WAEzD,MAAMtD,EAAwBhW,KAAKV,MAAMsW,QAAQC,cAAc/D,eAAegE,KAAKE,sBACnF,GAAIA,EAAuB,CACvB,MAAMuD,QAAsBrD,EAAAA,EAAAA,WAAU,CAAEC,cAAenW,KAAKV,MAAMsW,QAAQC,eAAiBG,GACrFhP,EAAauS,EAASC,WACtBC,EAAyBzS,EAAW0S,WAAWC,GAC1C3Z,KAAKV,MAAM+W,OAAOuD,wBAA0BD,EAAEE,OAEzD,GAAIJ,GAA0B,EAAG,KAAAK,EAC7B,MAAMC,EAAoB/S,EAAWyS,GACrCM,EAAkBC,eAAeC,YAAcf,MAAAA,GAAkC,QAArBY,EAAbZ,EAAexP,2BAAmB,IAAAoQ,GAAiB,QAAjBA,EAAlCA,EAAoCnQ,uBAAe,IAAAmQ,OAAA,EAAnDA,EAAqDpV,YACpGsC,EAAWyS,GAA0BM,MAClC,KAAAG,EACH,MAAMH,EAAoB,CACtBI,cAAe,EACfC,QAASpa,KAAKV,MAAM+W,OAAOuD,sBAC3BC,KAAM7Z,KAAKV,MAAM+W,OAAOuD,sBACxBS,SAAUra,KAAKV,MAAM+W,OAAOiE,0BAC5BN,eAAgB,CACZC,YAAaf,MAAAA,GAAkC,QAArBgB,EAAbhB,EAAexP,2BAAmB,IAAAwQ,GAAiB,QAAjBA,EAAlCA,EAAoCvQ,uBAAe,IAAAuQ,OAAA,EAAnDA,EAAqDxV,aAEtE6V,oBAAqB,GACrBC,iBAAkB,IAEtBxT,EAAWrD,KAAKoW,GAIpB,MAAMU,EAAgB,CAClBC,cAAenB,EAASmB,cACxBL,SAAUd,EAASc,SACnBM,gBAAiBpB,EAASoB,gBAC1BC,YAAarB,EAASqB,YACtBC,WAAYtB,EAASsB,WACrBC,uBAAwBvB,EAASuB,uBACjCC,MAAOxB,EAASwB,MAChBC,cAAezB,EAASyB,cACxBC,SAAU1B,EAAS0B,SACnBC,UAAW3B,EAAS2B,UACpBC,MAAO5B,EAAS4B,MAChBC,cAAe7B,EAAS6B,cACxBC,IAAK9B,EAAS8B,IACdC,YAAa/B,EAAS+B,YACtBzB,KAAMN,EAASM,KACf0B,aAAchC,EAASgC,aACvBC,UAAWjC,EAASiC,UACpBC,WAAYlC,EAASkC,WACrBC,SAAUnC,EAASmC,SACnBC,uBAAwBpC,EAASoC,uBACjCC,YAAarC,EAASqC,YACtBC,kBAAmBtC,EAASsC,kBAC5BC,SAAUvC,EAASuC,SACnBC,cAAexC,EAASwC,cACxBC,aAAczC,EAASyC,aACvBC,cAAe1C,EAAS0C,cACxBC,qBAAsB3C,EAAS2C,qBAC/BC,eAAgB5C,EAAS4C,eACzBC,qBAAsB7C,EAAS6C,qBAC/BC,aAAc9C,EAAS8C,aACvBC,YAAa/C,EAAS+C,YACtBC,QAAShD,EAASgD,QAClBC,QAASjD,EAASiD,QAClBC,YAAalD,EAASkD,YACtBC,wBAAyBnD,EAASmD,wBAClCC,eAAgBpD,EAASoD,eACzBC,mBAAoBrD,EAASqD,mBAC7BC,uBAAwBtD,EAASsD,uBACjCC,mBAAoBvD,EAASuD,mBAC7BC,kBAAmBxD,EAASwD,kBAC5BC,SAAUzD,EAASyD,SACnBC,cAAe1D,EAAS0D,cACxBC,uBAAwB3D,EAAS2D,uBACjCC,gBAAiB5D,EAAS4D,gBAC1BC,UAAW7D,EAAS6D,UACpBC,UAAW9D,EAAS8D,UACpBC,qBAAsB/D,EAAS+D,qBAC/BC,IAAKhE,EAASgE,IACdC,gBAAiBjE,EAASiE,gBAC1BC,aAAclE,EAASkE,aACvBC,sBAAuBnE,EAASmE,sBAChCC,0BAA2BpE,EAASoE,0BACpCC,4BAA6BrE,EAASqE,4BACtCC,aAActE,EAASsE,aACvBC,gBAAiBvE,EAASuE,gBAC1BC,uBAAwBxE,EAASwE,uBACjCC,qBAAsBzE,EAASyE,qBAC/BC,UAAW1E,EAAS0E,UACpBzE,WAAYxS,EACZkX,OAAQ3E,EAAS2E,OACjBC,cAAe5E,EAAS4E,cACxBC,oBAAqB7E,EAAS6E,oBAC9BC,MAAO9E,EAAS8E,MAChBC,WAAY/E,EAAS+E,WACrBC,kBAAmBhF,EAASgF,kBAC5BxY,SAAUwT,EAASxT,SACnByY,sBAAuBjF,EAASiF,sBAChCjE,oBAAqBhB,EAASgB,2BAE5BkE,EAAAA,EAAAA,aAAY,CAAEtI,cAAenW,KAAKV,MAAMsW,QAAQC,eAAiB4E,GACnEza,KAAK0V,cACLgJ,OAAOjc,SAASkc,KAAO3e,KAAK0V,eAQvB,KAAAkJ,sBAAwBnf,UACrC,MACImW,SACIC,eACI/D,gBAAgB,QAAE8G,KAG1B5B,MACIC,2BAA6BC,OAAQD,KAEzCjX,KAAKV,MAEJ2X,SAICA,EAA0B4H,oBAAoBjG,EAAQQ,mBAO/C,KAAA0F,kBAAoBrf,MAAAA,IACjC,MACIuX,MACIC,2BAA6BC,OAAQD,KAEzCjX,KAAKV,MAEJ2X,SAICA,EAA0B8H,2BAA2BpG,IAO9C,KAAAL,eAAiB7Y,MAAAA,IAC9B,MACImW,SAAS,cAAEC,GACXmB,MACIC,2BAA6BC,OAAQD,KAEzCjX,KAAKV,MAET,IAAK0f,IAAe/H,EAChB,OAGJjX,KAAKqB,SAAS,CAAE4d,oBAAoB,EAAMC,oBAAoB,IAE9D,MAAMzc,QAAiBwU,EAA0BkI,UAAgC,KAAtBH,EAAWI,OAAgBJ,EAAa,IAAKnJ,GAEpGpT,QACMzC,KAAKqf,iBAAiB5c,EAAS6c,SAAU7c,EAAS8c,iBAElDvf,KAAKqf,mBAGfrf,KAAKqB,SAAS,CAAE4d,oBAAoB,KAOvB,KAAA7G,mBAAqB3Y,MAAAA,IAClCO,KAAKqB,SAAS,CAAE2d,WAAAA,KAOH,KAAAtI,2BAA8B5F,IAC3C,MACIuF,QAAQ,MAAEb,GACVwB,MACIC,2BAA6BC,OAAQD,KAEzCjX,KAAKV,aAEsB4C,IAAVsT,EAAsBA,EAAQgK,EAAUC,UAExCD,EAAUE,QAAYzI,GAA8BA,EAA0B0I,gBAKnG3f,KAAKqB,SAAS,CAAE4d,oBAAoB,EAAMC,oBAAoB,IAE1DU,WAAaA,UAAUC,YACvBD,UAAUC,YAAYC,oBAClBrgB,MAAAA,IAEIO,KAAKqB,SAAS,CAAEiD,oBAAoB,EAAO2a,oBAAoB,IAC3DnO,GACA9Q,KAAKqB,SAAS,CAAE6d,oBAAoB,UAC9Blf,KAAKoY,mBAAmB,UACxBpY,KAAKqf,iBAAiBU,EAASC,OAAOV,SAAUS,EAASC,OAAOT,UAAW,UAE3Evf,KAAKqf,iBAAiBU,EAASC,OAAOV,SAAUS,EAASC,OAAOT,WAG1Evf,KAAKqB,SAAS,CAAE4d,oBAAoB,OAExCxf,MAAAA,IAEQwgB,EAAMC,oBACNlgB,KAAKqB,SAAS,CAAEiD,oBAAoB,IAChCwM,GACA9Q,KAAKqB,SAAS,CAAE6d,oBAAoB,UAC9Blf,KAAKoY,mBAAmB,UACxBpY,KAAKqf,sBAAiB,OAAQ,EAAQ,UAEtCrf,KAAKqf,oBAInBrf,KAAKqB,SAAS,CAAE4d,oBAAoB,MAExC,CAAEkB,QAAS,MAGfngB,KAAKqB,SAAS,CAAE4d,oBAAoB,MAQ3B,KAAAmB,aAAe3gB,UAC5B,MACIuX,MACIC,2BAA6BC,OAAQD,KAEzCjX,KAAKV,MAIsB,IAAA+gB,EAA/B,GAFArgB,KAAKqB,SAAS,CAAE2d,WAAY,KAExB/H,EAEA,OADiC,QAAjCoJ,EAAApJ,EAA0BrB,eAAO,IAAAyK,GAAkB,QAAlBA,EAAjCA,EAAmCC,wBAAgB,IAAAD,GAAS,QAATA,EAAnDA,EAAqD5X,eAAO,IAAA4X,GAA5DA,EAA8DE,QACvDtJ,EAA0BuJ,eASxB,KAAAC,4BAA8BhhB,MAAAA,IAC3C,MACIuX,MACIC,2BAA6BC,OAAQD,IAEzCZ,QAAQ,MAAEb,GAAO,UACjBsB,GACA9W,KAAKV,MAET,IAAK2X,EACD,OAGJ,MAAMrB,EAAUqB,EAA0BrB,QACpChF,EAAagF,GAAWA,EAAQhF,GAAKgF,EAAQhF,GAAK5Q,KAAKV,MAAMsR,GAC7D8P,OAAyBxe,IAAVsT,EAAsBA,EAAQgK,EAAUC,aACvDxI,EACD0J,2BAA2B,CACxB/P,GAAAA,EACAgQ,gBAAiBhL,GAAWA,EAAQgL,gBACpCN,iBAAkB1K,MAAAA,OAAO,EAAPA,EAAS0K,iBAC3BO,SAAUH,IAAiBlB,EAAUC,OACrCqB,wBAAAA,EACAze,mBAAoB5C,MAAAA,GAET0D,QAAQC,YAGtB2d,OAAOd,IACAnJ,IACAA,EAAUmJ,MAAMA,EAAMe,SACtBlK,EAAUmB,MAAM,8CAYf,KAAAoH,iBAAmB5f,MAAO6f,EAAmBC,EAAoB0B,KAC9E,MAAM,UACFnK,EACAT,QAAQ,KAAEf,EAAI,aAAE4L,EAAY,MAAE1L,GAC9BI,SAAS,cAAEC,GACXmB,MACIC,2BAA6BC,OAAQD,KAEzCjX,KAAKV,MAEHohB,OAAyBxe,IAAVsT,EAAsBA,EAAQgK,EAAUC,OACvD0B,EAAYF,GAAqB,IAAXA,EAAeA,EAASC,GAAgB,GAC9DE,EAAoBphB,KAAKV,MAAM+W,OAAOd,mBAAqBA,EAAiB8L,WAAa,EAAI,EAC7FC,OAAuBpf,IAAToT,EAAqBA,EAAOyD,EAASC,cACnDuI,EAAyCtK,MAAAA,OAAyB,EAAzBA,EAA2BsK,eAC1E,IAAIC,EAAMxhB,KAAKK,MAAM2e,YAAeuC,MAAAA,IAAAA,EAAgBlI,SAAWiG,EAAWiC,EAAelI,SACrFoI,EAAOzhB,KAAKK,MAAM2e,YAAeuC,MAAAA,IAAAA,EAAgBjI,UAAYiG,EAAYgC,EAAejI,UAC5F,GAAIoH,IAAiBlB,EAAUE,OAAQ,CACnC,MAAMgC,EAA0BzK,MAAAA,OAAyB,EAAzBA,EAA2B0K,yBACvDD,IAA4B1hB,KAAKK,MAAM2e,aACvCwC,EAAME,EAAwBrI,SAAWqI,EAAwBrI,SAAWmI,EAC5EC,EAAOC,EAAwBpI,UAAYoI,EAAwBpI,UAAYmI,SAE7ExK,MAAAA,OAAyB,EAAzBA,EAA2B2K,uBAAuBJ,EAAKC,IAGjE,GAAIH,IAAgBvI,EAASE,WAAY,CACrC,MAAM4I,EAAwB,IAAIC,EAAAA,+BAC9BN,EACAC,EACAN,EACAC,EACAphB,KAAKK,MAAMiE,oBAGTyd,QAAyBC,EAAAA,EAAAA,2BAA0BH,EAAuBhM,GAKhF,YAJIkM,UACM/hB,KAAKygB,4BAA4BsB,SACjC/hB,KAAK8e,uBAAkB5c,KAKrC,IAAK+U,IAA8BA,EAA0BrB,QAEzD,OAGJ,IAAKqB,EAA0BrB,QAAQqM,QAEnC,OAGJ,MAAMC,EAAQ,IAAIC,EAAAA,qCACdlL,EAA0BrB,QAAQqM,QAAQ5H,SAC1CmH,GAAO,EACPC,GAAQ,EACRN,EACAC,EACAphB,KAAKK,MAAMiE,0BAGT8d,EAAAA,EAAAA,iCAAgCF,EAAOrM,GAAekL,OAAMd,IAC9DnJ,EAAUuL,QAAQpC,GAClBnJ,EAAUmJ,MAAMA,EAAMe,SACtBlK,EAAUmB,MAAM,sDAUP,KAAAqK,2BAA6B7iB,MAAOgD,EAAuCH,KACxF,MAAM,UACFwU,EACAE,MACIC,2BAA6BC,OAAQD,KAEzCjX,KAAKV,MAEL2X,IACIxU,GAAYwU,EAA0BrB,eAEhCqB,EAA0BrB,QAAQvT,mBAAmBI,EAAUH,GAAcye,OAAMd,IACrFnJ,EAAUuL,QAAQpC,GAClBnJ,EAAUmJ,MAAMA,EAAMe,SACtBlK,EAAUmB,MAAM,wDAIlBhB,EAA0BuJ,gBA2EvB,KAAAzW,cAAiB/F,IACvB,CACHgG,kBAAmBhG,EAAUiG,YAC7BC,iBAAkBlG,EAAUmG,SAC5BpC,uBAAwB/D,EAAUoG,iBAElCC,WAAYrG,EAAUsG,qBACtBpE,WAAYlC,EAAUuG,eACtBtE,QAASjC,EAAUwG,YAEnBxC,gBAAiBhE,EAAUyG,0BAC3BlE,eAAgBvC,EAAU0G,gBAC1BjE,8BAA+BzC,EAAU2G,0BACzC7C,wBAAyB9D,EAAU8D,wBACnCD,iCAAkC7D,EAAU6D,iCAC5CD,mBAAoB5D,EAAU4D,mBAC9BD,wBAAyB3D,EAAU2D,wBAEnCiD,KAAM,CACFC,OAAQ7G,EAAU8G,qBAClBC,QAAS/G,EAAUgH,sBACnBC,UAAWjH,EAAUkH,wBACrBC,SAAUnH,EAAUoH,uBACpBC,OAAQrH,EAAUsH,qBAClBC,SAAUvH,EAAUwH,uBACpBC,OAAQzH,EAAU0H,qBAClBC,WAAY3H,EAAU4H,yBACtBC,YAAa7H,EAAU8H,0BACvBC,cAAe/H,EAAUgI,4BACzBC,aAAcjI,EAAUkI,2BACxBC,WAAYnI,EAAUoI,yBACtBC,aAAcrI,EAAUsI,2BACxBC,WAAYvI,EAAUwI,4BAKjB,KAAAzD,mBAAqB,CAACtG,EAAuC8f,IACzEA,GAAoB9f,GAAY8f,EAAiB5f,gBAAkBF,EAASE,gBAAkB,EAQlF,KAAAsG,kBAAoB,CACjCuZ,EACAC,KAEA,IAAKD,EACD,OAAO,EAGX,QAAI7U,EAAAA,gBAAgBC,YAAY6U,OACrBA,EAAmB,GAAGrZ,mBAAoBqZ,EAAmB,GAAGrZ,kBAFrD,IAaT,KAAAC,qBAAwBtF,IACrC,GAAIA,MAAAA,GAAAA,EAAWwF,6BAA+BoE,EAAAA,gBAAgBC,YAAY7J,EAAUwF,6BAChF,IAAK,IAAIpF,EAAQ,EAAGA,EAAQJ,EAAUwF,4BAA4BxJ,OAAQoE,IAAS,KAAAue,EAC/E,IACiC,QAA7BA,EAAA3e,EAAU2F,2BAAmB,IAAAgZ,GAAiB,QAAjBA,EAA7BA,EAA+B/Y,uBAAe,IAAA+Y,OAAA,EAA9CA,EAAgD9Y,uBAChD7F,EAAUwF,4BAA4BpF,GAAO0F,iBAE7C,OAAO9F,EAAUwF,4BAA4BpF,GAAO2F,kBAOnD,KAAA6Y,0BAA4B,KACzC,GAAIjE,QAAUA,OAAOjc,UAAYic,OAAOjc,SAASkc,KAAM,CACnD,MAAMiE,EAAS,IAAIC,gBAAgB7iB,KAAKV,MAAMsW,QAAQkN,QAAQC,IAAIC,WAAWC,QAC7E,GAAIL,EAAOM,IAAI,eACXljB,KAAK0V,YAAckN,EAAOnO,IAAI,mBAC3B,CACH,MAAMqO,EAAU9iB,KAAKV,MAAMsW,QAAQkN,QACnC,IAAIK,EAAcL,EAAQC,IAAIC,WAAWI,OACrCN,EAAQO,WACRF,GAA4BL,EAAQO,UAExCrjB,KAAK0V,YAAc,GAAGyN,gBApnC9BnjB,KAAKK,MAAQ,CACT4e,oBAAoB,EACpBD,WAAY,GACZE,oBAAoB,EACpBhX,wBAAoBhG,EACpB+T,iBAAa/T,GAEjBlC,KAAKuE,kBAAmB+e,EAAAA,EAAAA,oBACpBtjB,KAAKV,MAAMsW,QAAQkN,QAAQS,kBAC3BvjB,KAAKV,MAAMkkB,aACXxjB,KAAKV,MAAMwX,WAEf9W,KAAKyM,aAAe,EAGjBI,oBAAiB,IAAA4W,EACpB,MACI7N,SAAS,UACLkB,EACAjB,eACI/D,gBAAgB,QAAEiF,KAG1BV,QAAQ,sBAAEqN,IACV1jB,KAAKV,MA+BT,GA5BAqkB,YAAW,KACP3jB,KAAK0W,+BACN,IAEHkN,EAAAA,EAAAA,KACI,IAAM5jB,KAAKV,MAAM0X,KAAKC,0BAA0BC,QAAUlX,KAAKV,MAAM0X,KAAKC,0BAA0BC,OAAOyI,eAC3GlgB,UAAW,IAAAokB,EACP,MAAMjO,EAA0D,QAAnDiO,EAAG7jB,KAAKV,MAAM0X,KAAKC,0BAA0BC,cAAM,IAAA2M,OAAA,EAAhDA,EAAkDjO,SAC9DA,MAAAA,OAAO,EAAPA,EAAShF,MAAO5Q,KAAKV,MAAMsR,IAC3B5Q,KAAK0W,iCAKjBkN,EAAAA,EAAAA,KACI,IACI5jB,KAAKV,MAAM0X,KAAKC,0BAA0BC,QAC1ClX,KAAKV,MAAM0X,KAAKC,0BAA0BC,OAAOtB,SACjD5V,KAAKV,MAAM0X,KAAKC,0BAA0BC,OAAOtB,QAAQhF,KAC7DnR,UAAW,IAAAqkB,EACP,MAAMlO,EAA0D,QAAnDkO,EAAG9jB,KAAKV,MAAM0X,KAAKC,0BAA0BC,cAAM,IAAA4M,OAAA,EAAhDA,EAAkDlO,QAC7DA,IAAWA,MAAAA,OAAO,EAAPA,EAAShF,MAAO5Q,KAAKV,MAAMsR,WACjC5Q,KAAKoY,mBAAmB,IAC9BpY,KAAK0W,kCAKbK,GAAYA,EAAQoB,eAKxB,IAAIpB,GAAYA,EAAQgN,gBAAxB,CAKkE,IAAAC,EAAAC,EAAlE,GAAoD,QAApDR,EAAIzjB,KAAKV,MAAM0X,KAAKC,0BAA0BC,cAAM,IAAAuM,GAAhDA,EAAkDS,WACF,QAAhDF,EAAAhkB,KAAKV,MAAM0X,KAAKC,0BAA0BC,cAAM,IAAA8M,GAAhDA,EACME,WAAW,CACTljB,IAAK+V,MAAAA,OAAO,EAAPA,EAASoB,eACdgM,KAAMnkB,KAAKV,MAAMsW,QAAQC,cAAc/D,eAAesS,OACtDC,OAA0B,QAApBJ,EAAEjkB,KAAKV,MAAMsW,eAAO,IAAAqO,GAAe,QAAfA,EAAlBA,EAAoBpO,qBAAa,IAAAoO,GAAgB,QAAhBA,EAAjCA,EAAmCnS,sBAAc,IAAAmS,GAAS,QAATA,EAAjDA,EAAmDlN,eAAO,IAAAkN,OAAA,EAA1DA,EAA4DrM,8BAEvE0M,OACAvD,SAGT6C,EAAAA,EAAAA,KACI,SAAAW,EAAA,OAAsD,QAAtDA,EAAMvkB,KAAKV,MAAM0X,KAAKC,0BAA0BC,cAAM,IAAAqN,OAAA,EAAhDA,EAAkDL,cACxD,KAAK,IAAAM,EAAAC,EAC+C,QAAhDD,EAAAxkB,KAAKV,MAAM0X,KAAKC,0BAA0BC,cAAM,IAAAsN,GAAhDA,EAAkDN,WAAW,CACzDljB,IAAK+V,MAAAA,OAAO,EAAPA,EAASoB,eACdgM,KAAMnkB,KAAKV,MAAMsW,QAAQC,cAAc/D,eAAesS,OACtDC,OAA0B,QAApBI,EAAEzkB,KAAKV,MAAMsW,eAAO,IAAA6O,GAAe,QAAfA,EAAlBA,EAAoB5O,qBAAa,IAAA4O,GAAgB,QAAhBA,EAAjCA,EAAmC3S,sBAAc,IAAA2S,GAAS,QAATA,EAAjDA,EAAmD1N,eAAO,IAAA0N,OAAA,EAA1DA,EAA4D7M,iCAK5E8L,IACAgB,EAAAA,EAAAA,KACI,KAAK,IAAAC,EAAAC,EAAAC,EACD,MAAM1N,IAAmE,QAAjDwN,EAAC3kB,KAAKV,MAAM0X,KAAKC,0BAA0BC,cAAM,IAAAyN,IAAhDA,EAAkDxN,gBACrEwI,IAAiE,QAAjDiF,EAAC5kB,KAAKV,MAAM0X,KAAKC,0BAA0BC,cAAM,IAAA0N,IAAhDA,EAAkDjF,cACnEmF,GAAgE,QAAhDD,EAAA7kB,KAAKV,MAAM0X,KAAKC,0BAA0BC,cAAM,IAAA2N,GAAS,QAATA,EAAhDA,EAAkDjP,eAAO,IAAAiP,OAAA,EAAzDA,EAA2DjU,MAAO5Q,KAAKV,MAAMsR,GACnG,OAAOuG,GAAkBwI,GAAgBmF,KAE7CrlB,UACIkkB,YAAWlkB,gBACDO,KAAK4W,0BACZ,MAIV5W,KAAK2V,iBACV3V,KAAK2iB,4BACL3iB,KAAKqB,SAAS,SA3CVyV,EAAUmJ,MAAM,iCALhBnJ,EAAUmJ,MAAM,8BAmDjB8E,sBAAsBC,GACzB,MACIhO,MACIC,2BAA6BC,OAAQD,KAEzCjX,KAAKV,MACHsW,EAAUqB,EAA4BA,EAA0BrB,aAAU1T,EAChF,SAAI0T,GAAWA,EAAQhF,KAAO5Q,KAAKV,MAAMsR,IAiBtCrQ,SAAM,IAAA0kB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACT,MACIjP,QAAQ,mBACJC,EAAkB,UAClB5V,EAAS,QACT8V,EAAO,KACPlB,EAAI,MACJE,EAAK,oBACL+P,EAAmB,cACnBzU,EAAa,aACboQ,EAAY,8BACZsE,GAEJ5P,SAAS,UACLkB,EACA2O,KAAOpP,OAAQqP,GACf7P,eACI/D,gBAAgB,QAAEiF,EAAO,QAAE6B,KAElC,UACD5U,EACAgT,MACI8B,yBAA2B5B,OAAQ4B,GACnC7B,2BAA6BC,OAAQD,GACrC4B,gBAAkB3B,OAAQ2B,KAE9B7Y,KAAKV,MAETU,KAAKyM,aAAe,EACpB,MAAMoE,IAAkBkG,GAAWA,EAAQoB,gBAAkBpB,EAAQgN,iBAC/DnO,EAAUqB,EAA4BA,EAA0BrB,aAAU1T,EAC1Eyd,IAAwB1I,IACxBA,EAA0B0I,eAAgB/J,MAAAA,OAAO,EAAPA,EAAShF,MAAO5Q,KAAKV,MAAMsR,IAErE8P,OAAyBxe,IAAVsT,EAAsBA,EAAQgK,EAAUC,OACvD6B,OAAuBpf,IAAToT,EAAqBA,EAAOyD,EAASC,cACnD2M,EAAajF,IAAiBlB,EAAUE,OACxC7P,EAAcyR,IAAgBvI,EAASE,WACvC2M,EAAgB/V,EAChBjD,EAA0BqK,MAAAA,OAAyB,EAAzBA,EAA2BrK,wBACrDO,EAAc8J,MAAAA,GAA2C,QAAlBgO,EAAzBhO,EAA2B4O,wBAAgB,IAAAZ,OAAA,EAA3CA,EAA6C9X,YAC3D9I,EAA0BkhB,IAAuB3M,MAAAA,OAAO,EAAPA,EAASQ,kBAC1D0M,EACFlQ,SAC6B1T,IAA5B0T,EAAQgL,iBAAiChL,EAAQgL,kBAClD/Q,IACAoH,MAAAA,OAAyB,EAAzBA,EAA2B8O,mBAEzBC,EAAuB,CACzBC,yBACIhP,MAAAA,GAAAA,EAA2BgP,2BAI7BlP,GAAWA,EAAQoB,gBACrBrB,EAAUmJ,MAAM,8BAGpB,MAAMiG,EAAgB1P,IAAoB3G,EAAc7L,EAAUmiB,uBAAyBniB,EAAUoiB,yBAC/FthB,EACF9E,KAAKV,MAAM+W,OAAOd,mBAAqBA,EAAiB8L,WAAard,EAAUqiB,oBAAsBriB,EAAU6O,eACnH,IAAI0O,EAAyCtK,MAAAA,OAAyB,EAAzBA,EAA2BsK,eACxE,MAAM+E,EAAoC,QAAdpB,EAAA3D,SAAc,IAAA2D,GAAdA,EAAgBqB,QAAUhF,EAAegF,QAAU,GACzEC,GAAwDZ,EAAgB/M,EAAiBC,EAC/F,IAAI2N,GAAe,KAInB,GAHID,KACAC,GAAezmB,KAAKgN,YAAYwZ,GAAeniB,EAAyBiiB,IAExErP,GAA6BA,EAA0BsK,gBAAkBvhB,KAAKK,MAAM4V,YAAa,CAEjG,GAD8BjW,KAAKV,MAAMsW,QAAQC,cAAc/D,eAAegE,KAAKE,sBAE/E,GAAIhW,KAAKV,MAAMsW,QAAQC,cAAc/D,eAAegE,KAAKC,gBAAiB,CACtE,MAAM2Q,EAAW1mB,KAAKK,MAAM4V,YAAYuD,WAAWvX,MAAM0kB,GAC9CA,EAAK9M,OAAS7Z,KAAKV,MAAM+W,OAAOuD,wBAErC9M,EAAY9M,KAAKV,MAAM0X,KAAK6B,eAAe3B,OACjD,GAAIwP,GAAY5Z,EAAW,CACvB,MAAM8Z,EAAoB9Z,EAAU7K,MAAM4kB,GAC/BA,EAAInd,oBAAoBC,gBAAgBjF,cAAgBgiB,EAAS1M,eAAeC,cAEvF2M,EACArF,EAAiB,CACbuF,UAAWF,EAAald,oBAAoBC,gBAAgBjF,YAC5D6hB,QAASK,EAAald,oBAAoBC,gBAAgBhH,cAC1D0W,SAAUuN,EAAald,oBAAoBC,gBAAgB0P,SAC3DC,UAAWsN,EAAald,oBAAoBC,gBAAgB2P,WAEjB,SAAxCoN,EAAS1M,eAAeC,cAC/BsH,OAAiBrf,QAGrBqf,OAAiBrf,OAGrBqf,OAAiBrf,OAIzBqf,OADOtK,GAA8BA,EAA0BsK,gBAKnE,MAAMwF,IAAmBrB,MAAAA,OAAS,EAATA,EAAWsB,oBAAoB,EAClDhe,GAA0B4M,EAAUA,EAAQ5M,6BAA0B9G,EACtEsC,GAA0ByS,MAAAA,GAAkC,QAATkO,EAAzBlO,EAA2BrB,eAAO,IAAAuP,GAAiB,QAAjBA,EAAlCA,EAAoC5X,uBAAe,IAAA4X,OAAA,EAAnDA,EAAqDnX,gBAC/EiZ,GAAoBjnB,KAAKknB,2BAC3BH,GACAlX,EACAyW,EACAjiB,EACAuI,EACA4Z,MAAAA,GAAAA,GAAiB,KACjB1hB,EACAkE,GACAxE,IAEE2iB,GAASzP,EAAAA,EAAA,GACP1X,KAAKV,OAAqD,IAC9De,MAAOL,KAAKK,MAEZ+mB,YAAa,CACTC,IAAK1B,EAAc,MAAoB2B,EAAAA,MACvCC,YAAavnB,KAAKV,MAClBoB,UAAW8mB,GAAAA,CACP,aAAY7B,EAAa,SAAW,UACpCjlB,EACAilB,EAAa,GAAK,4BAEtB8B,WAAW,EACXC,MAAM,EACNC,OAAQhI,EACR,aAAcuG,EACd0B,SAAU5nB,KAAKogB,aACfyH,mBAAoB,SACpBC,iBAAkB,SAClBC,OAAQ/nB,KAAKogB,cAEjB4H,qBAAsB,CAClBX,IAAK1B,EAAc,MAAoBsC,EAAAA,YACvCvnB,UAAW,qBAAoBilB,EAAa,SAAW,gBACvDoC,OAAQ/nB,KAAKogB,cAEjB8H,YAAahC,GACT9mB,EAAAA,cAACkT,EAAAA,GAAa7K,OAAAC,OAAA,CACVhH,UAAU,oBACNwlB,EAAa,CACjBmB,IAAI,KACJc,KAAMjC,EACN3T,UAAW,CAAE6V,OAAQpoB,KAAKuW,oBAAqBzE,eAAgB9R,KAAKV,MAAMsW,QAAQkN,YAG1FuF,qBAAsB,CAClBhB,IAAK1B,EAAc,MAAoB2C,EAAAA,YACvC5nB,UAAW,oBAAoBilB,EAAa,SAAW,kBAAmBxY,EAAgC,GAAlB,mBAE5Fob,mBAAoB,CAChBlB,IAAK1B,EAAc,MAAoB6C,EAAAA,UACvC9nB,UAAW,qBAAoBilB,EAAa,OAAS,eAEzD8C,kBAAmBzoB,KAAKK,MAAMiE,oBAC1BlF,EAAAA,cAACoT,EAAkC,CAC/BxO,UAAWA,EACX8I,UAAW8Y,EAAgB/M,EAAiBC,EAC5CpG,aAAcwO,GAAgB,GAC9Bpc,sBAAuBA,EACvB6N,cAAe3S,KAAKK,MAAM6e,qBAGlC+D,OACI7jB,EAAAA,cAACoP,EAAuB,CACpBL,MAAOnO,KAAKK,MAAM2e,YAAc,GAChChb,UAAWA,EACXuL,cAAevP,KAAKsY,eACpBnJ,kBAAmBnP,KAAKoY,mBACxBvH,cAAeA,EACfC,cAAeA,EACfF,GAAI5Q,KAAKV,MAAMsR,GACf7B,gBAAiB/O,KAAKyW,uBACtBzG,yBAA0BgW,EAAqBC,uBAC/C9Y,YAAaA,EACb0C,YAAaiW,EACb7X,6BAA8BgJ,MAAAA,GAAkC,QAATmO,EAAzBnO,EAA2BrB,eAAO,IAAAwP,GAAiB,QAAjBA,EAAlCA,EAAoC7X,uBAAe,IAAA6X,OAAA,EAAnDA,EAAqDpX,gBACnFzJ,iBAAkBvE,KAAKuE,iBACvBkL,yBAA0BzP,KAAK2W,qBAC/B5G,kCAAmCyV,IAG3CkD,QAAStpB,EAAAA,cAACsS,EAAoB,MAC9B8U,eAAiB1N,GAA2BA,EAAwB/Y,QAAY8Y,GAAkBA,EAAe9Y,SAC7GX,EAAAA,cAAC+I,EAA0B,CACvB2E,UAAW8Y,EAAgB/M,EAAiBC,EAC5C9U,UAAWA,EACXc,sBAAuBA,EACvBkE,wBAAyB4M,EAAUA,EAAQ5M,6BAA0B9G,EACrEymB,oBAAqBjD,EAAUiD,qBAAuB,EACtDxf,sBAAuBuc,EAAUsB,mBAAoB,EACrD3kB,mBAAoBrC,KAAKsiB,2BACzBpe,iBAAkB2L,EAClBjD,wBAAyBA,EACzBjM,QAASX,KAAK8e,kBACd1a,yBAAwC,QAAdihB,EAAA9D,SAAc,IAAA8D,GAAdA,EAAgBkB,QAAUhF,EAAegF,QAAU,GAC7E7jB,sBAAuB1C,KAAKuY,mBAC5B3V,uBAAwB5C,KAAK4e,sBAC7Bva,wBAAyBA,EACzB8I,YAAaA,EACb5I,iBAAkBvE,KAAKuE,iBACvBD,mBAAoBtE,KAAKK,MAAMiE,mBAC/B2J,6BAA8BgJ,MAAAA,GAAkC,QAATqO,EAAzBrO,EAA2BrB,eAAO,IAAA0P,GAAiB,QAAjBA,EAAlCA,EAAoC/X,uBAAe,IAAA+X,OAAA,EAAnDA,EAAqDtX,gBACnF9F,mBAAoBlI,KAAKK,MAAM6H,qBAGvC0gB,mBAAoBxpB,EAAAA,cAACmS,EAAyB,CAACvN,UAAWA,IAC1D6kB,MACIzpB,EAAAA,cAACuS,EAA2B,CACxBE,KAAMyE,EACNvE,aAAc/R,KAAKoW,qBACnBtE,eAAgB9R,KAAKV,MAAMsW,QAAQkN,UAK3CgG,WACI1pB,EAAAA,cAAA,YAAOoX,IAAoB3G,EAAc7L,EAAUmiB,uBAAyBniB,EAAUoiB,0BAE1F2C,cAAetC,GACfQ,kBAAAA,GACA+B,UAAW,CACP7Z,kBAAmBnP,KAAKoY,mBACxB7I,cAAevP,KAAKsY,eACpBkI,YAAaxgB,KAAKogB,aAClBmC,iBAAkBviB,KAAKsiB,2BACvB2G,yBAA0BxpB,UACtBO,KAAK0W,6BACEvT,QAAQC,WAEnB8lB,qBAAsBlpB,KAAK4W,sBAC3BuS,qBAAsBnpB,KAAKsiB,2BAC3B8G,kBAAmBppB,KAAKuY,mBACxB8Q,qBAAsBrpB,KAAK4e,sBAC3B0K,iBAAkBtpB,KAAK8e,kBACvB6B,2BAA4B3gB,KAAKygB,+BAIzC,OAAOzgB,KAAKV,MAAMiqB,WAAWpC,IA2CzBna,YACJkB,EACA7J,EACAD,GAEA,MAAMuC,EAAoBwH,IAA+B,IAAAC,EAAA,OACrD/J,GACAD,IACyB,QAAzBgK,EAAAD,EAAMzE,2BAAmB,IAAA0E,GAAiB,QAAjBA,EAAzBA,EAA2BzE,uBAAe,IAAAyE,OAAA,EAA1CA,EAA4CzL,iBAAkByB,GAElE,MAAO,IAAI8J,EAAO3I,OAAOoB,MAAsBuH,EAAO3I,QAAO6H,IAAUzG,EAAiByG,MAgBpF8Z,2BACJsC,EACAC,EACArlB,EACAC,EACAuI,EACAsB,EACApJ,EACAkE,EACAxE,GAEA,MAAMklB,EAAmD,GAoBzD,OAnBI/b,EAAAA,gBAAgBC,YAAYM,KAC5BA,MAAAA,GAAAA,EAAQpN,KAAI,CAACsM,EAAOjJ,KAChB,MAAMwlB,EAAiB3pB,KAAK4pB,yBACxBxc,EACAjJ,EACAqlB,EACAC,EACArlB,EACAC,EACAuI,EACA9H,EACAkE,EACAxE,GAEAmlB,GACAD,EAAU/lB,KAAKgmB,OAIpBD,EAqgBHE,yBACJxc,EACAjJ,EACAqlB,EACAC,EACArlB,EACAC,EACAuI,EACA9H,EACAkE,EACAxE,GAA0C,IAAAiJ,EAE1C,MAAMpF,EAAkB+E,MAAAA,GAA0B,QAArBK,EAALL,EAAO1D,2BAAmB,IAAA+D,OAAA,EAA1BA,EAA4B9D,gBAC9CkgB,EAAwBjd,EACxBW,EAAkBH,MAAAA,OAAK,EAALA,EAAOI,2BACzBsc,EAAgB9pB,KAAK+J,cAAc/J,KAAKV,MAAM0E,WAC9C+lB,EAAoC/W,EAAc3K,MAAAA,OAAe,EAAfA,EAAiB2hB,UACnEC,EAAkCjX,EAAc3K,MAAAA,OAAe,EAAfA,EAAiB6hB,QACjErc,EAAaT,EAAMU,WAEJ,IAAAqc,EAArB,GAAI9hB,EAEA,QADErI,KAAKyM,aACA,CACHhK,SAAU4F,EACVuE,wBAAyBid,EACzBhc,WAAAA,EACA7J,UAAW8lB,EACXhlB,sBAAuBA,EACvBhB,kBAAmB9D,KAAK+I,mBAAmBV,EAAiBW,GAC5DjF,UAAW/D,KAAKiJ,kBAAkBugB,EAA2Bpc,MAAAA,GAA0B,QAArB+c,EAAL/c,EAAO1D,2BAAmB,IAAAygB,OAAA,EAA1BA,EAA4BjhB,oBACzFjF,iBAAkBjE,KAAKqJ,qBAAqB+D,GAC5ClJ,iBAAkBulB,EAClBtlB,MAAOnE,KAAKyM,aAAasB,WACzB3J,yBAAAA,EACAC,wBAAAA,EACAE,iBAAkBvE,KAAKuE,iBACvBD,mBAAoBtE,KAAKK,MAAMiE,mBAC/Bf,sBAAuBgK,MAAAA,OAAe,EAAfA,EAAiBS,gBACxCxJ,wBAAAA,EACA4lB,aAAc,CAAEC,SAAUN,EAAeO,OAAQL,GACjDrV,eAAgB/G,MAAAA,GAAAA,EAAY0c,kBAAoB5V,EAAgB9G,EAAW0c,kBAAmBT,GAAiB,GAC/GnpB,QAASX,KAAK8e,kBACdvc,SAAU,CACNC,WAAYxC,KAAKsiB,2BACjB5f,sBAAuB1C,KAAKuY,mBAC5B3V,uBAAwB5C,KAAK4e,0BAthC3CnJ,GAAapH,EAAAA,EAAAA,IAAA,CADlBE,EAAAA,IACKkH,GAmoCN,kGCxzCA,MA+BA,EA/B6DnW,IACzD,MAAM,mBACFipB,EAAkB,qBAClBF,EAAoB,qBACpBL,EAAoB,YACpBE,EAAW,YACXd,EAAW,iBAGXqB,EAAgB,OAChBxF,EAAM,MACN5iB,EAAK,QACLqoB,EAAO,cACPlC,EAAa,mBACboC,EAAkB,MAClBC,GACAvpB,EAEJ,OACIF,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAK0f,GACRhoB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKsgB,GAAuBE,GACjC9oB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK6gB,GACLE,EACAxF,EACA5iB,EAAM4e,mBAAqByJ,EAAUtpB,EAAAA,cAAAA,EAAAA,SAAA,KAAGonB,GAAgCoC,IAE7ExpB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK2gB,GAAuBQ,gFC5B7C,MAYA,EAZuEvpB,IACnE,MAAM,mBAAEorB,EAAkB,QAAElU,EAAO,MAAEmU,GAAUrrB,EAE/C,OACIF,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAKgjB,GACPlU,EACDpX,EAAAA,cAAA,KAAGsB,UAAU,wCAAsC,wBAClDiqB,iGCLb,MA+BA,EA/BuDrrB,IACnD,MAAM,KAAEsrB,EAAI,MAAED,EAAK,WAAEE,EAAU,oBAAEC,EAAmB,eAAEC,EAAc,mBAAEC,GAAuB1rB,EAC7F,OAAKsrB,GAASD,GAAUE,EAKpBzrB,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAKojB,GACR1rB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKqjB,GACLH,GACGxrB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKsjB,GACLJ,EACAD,GAASvrB,EAAAA,cAAA,mBAEjByrB,GACGzrB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKsjB,GACLH,GAERF,GAASA,EAAM7pB,KAAI,CAAC+Q,EAAM1N,IACvB/E,EAAAA,cAACA,EAAAA,SAAc,CAAC4B,IAAKmD,GACjB/E,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKsjB,EAAkB,CAAEtqB,UAAWuM,GAAAA,CAAW+d,EAAmBtqB,UAAWyD,IAAUwmB,EAAM5qB,OAAS,EAAI,0BAA4B,MACtI8R,EACA8Y,EAAMxmB,EAAQ,IAAM/E,EAAAA,cAAA,yBAnBzCE,EAAMsW,QAAQkB,UAAUmJ,MAAM,mDACvB,uWCmBf,MAOMgL,GAA8C1c,EAAAA,EAAAA,KAAUjP,IAC1D,MAAM,UAAE4rB,EAAS,aAAEC,EAAcnU,MAAM,KAAEoU,IAAW9rB,EAIpD,IAAI+rB,EAHiC,EAKjCD,IACAC,EAAWD,EAAKE,eANiB,EAMuBF,EAAKG,kBAGjE,IAAIC,EAAmB,GAInBA,EADAH,EAF4B,GACC,OAIlBI,EAAAA,EAAAA,QAAON,EAAcE,GAEpC,MAAMK,GAAQD,EAAAA,EAAAA,QAAOP,EAAWG,GAG1BzkB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASvH,EAAMiF,iBAAmB,YAAa,IAC1EyC,GAAaC,EAAAA,EAAAA,wBAAuB3H,EAAMiF,iBAAmBqC,GAC7D4O,EAA6B,CAC/BmW,WAAYP,EAAO,UAAY,UAEnC,OACIhsB,EAAAA,cAAA,MAAAqI,OAAAC,OAAA,CACIhH,UAAU,gBAAgBE,KAAK,SAAQ,aAAa8qB,EACpDE,MAAOF,GACH1kB,GACJ5H,EAAAA,cAAA,OAAKsB,UAAU,uBAAsB,iBAAa8U,MAAOA,GACpDgW,OAOJK,EAAsEC,EAAAA,GAAiBC,wBAChG,gXAAUrU,CAAA,CACRsU,UAAWf,GAjDgB,KAoDjC,oWCpDA,MAOMA,GAA8C1c,EAAAA,EAAAA,KAAUjP,IAC1D,MAAM,UAAE4rB,EAAS,aAAEC,EAAcnU,MAAM,KAAEoU,IAAW9rB,EAIpD,IAAI+rB,EAHiC,EAKjCD,IACAC,EAAWD,EAAKE,eANiB,EAMuBF,EAAKG,kBAGjE,IAAIC,EAAmB,GAInBA,EADAH,EAF4B,GACC,OAIlBI,EAAAA,EAAAA,QAAON,EAAcE,GAEpC,MAAMK,GAAQD,EAAAA,EAAAA,QAAOP,EAAWG,GAG1BzkB,GAAUC,EAAAA,EAAAA,kBAAiB,QAASvH,EAAMiF,iBAAmB,YAAa,IAC1EyC,GAAaC,EAAAA,EAAAA,wBAAuB3H,EAAMiF,iBAAmBqC,GAC7D4O,EAA6B,CAC/BmW,WAAYP,EAAO,UAAY,UAEnC,OACIhsB,EAAAA,cAAA,MAAAqI,OAAAC,OAAA,CACIhH,UAAU,gBAAgBE,KAAK,SAAQ,aAAa8qB,EACpDE,MAAOF,GACH1kB,GACJ5H,EAAAA,cAAA,OAAKsB,UAAU,uBAAsB,iBAAa8U,MAAOA,GACpDgW,OAOJK,EAAsEC,EAAAA,GAAiBC,wBAChG,gXAAUrU,CAAA,CACRsU,UAAWf,GAjDgB,KAoDjC,sFCjCA,MAAMgB,UAAkB7sB,EAAAA,cAIpBC,YAAmBC,GACfC,MAAMD,GA4BO,KAAA4sB,sBAAyBzqB,IACtC,MAAMwe,EAA+B,KAAvBxe,EAAMyN,OAAOf,MAAe,GAAKnO,KAAKK,MAAM4f,MAC1DjgB,KAAKqB,SAAS,CACV8qB,oBAAqB1qB,EAAMyN,OAAOf,MAAO8R,MAAAA,EACzCmM,WAAY3qB,EAAMyN,OAAOf,SAQhB,KAAAke,gBAAmBC,IAChC,IAAKA,EACD,OAEJ,MAAMC,EAAevsB,KAAKK,MAAM8rB,oBAEhCG,EAAUE,aAAa,CAAEC,UAAWF,IAC/BjI,MAAKpN,IACoB,YAAlBA,EAAOwV,OAEP1sB,KAAKqB,SAAS,CAAE8qB,oBAAqB,GAAIlM,MAAO,GAAImM,UAAU,IAClC,iBAArBlV,EAAOyV,UACd3sB,KAAKqB,SAAS,CAAE4e,MAAOjgB,KAAKV,MAAMstB,8BAElC5sB,KAAKqB,SAAS,CAAE4e,MAAOjgB,KAAKV,MAAMutB,+BAGzC9L,OAAM,KACH/gB,KAAKqB,SAAS,CAAE4e,MAAOjgB,KAAKV,MAAMwtB,oCAS7B,KAAAC,iBAAoBT,GAAuC7qB,IACxEA,EAAM9B,iBACNK,KAAKqsB,gBAAgBC,IAQR,KAAAU,sBAAyBV,GAAsC,KAC5EtsB,KAAKqsB,gBAAgBC,IAUR,KAAAW,YAAc,CAACC,EAA8BC,EAAkCb,KAE5F,MAAMtlB,GAAaC,EAAAA,EAAAA,wBAAuBjH,KAAKV,MAAMiF,iBAAmBvE,KAAK4G,SAE7E,OACIxH,EAAAA,cAAA,QAAM6R,SAAUjR,KAAK+sB,iBAAiBT,GAAY5rB,UAAU,kCACxDtB,EAAAA,cAAA,OAAKsB,UAAU,yBACXtB,EAAAA,cAAA,SACIsB,UAAU,4BACVT,SAAUD,KAAKksB,sBACf/d,MAAOnO,KAAKK,MAAM8rB,oBAClB/a,YAAa8b,IAEjB9tB,EAAAA,cAACguB,EAAAA,OAAM3lB,OAAAC,OAAA,CACHkkB,MAAOuB,EACPzsB,UAAU,gCACVC,QAASX,KAAKgtB,sBAAsBV,GACpCe,UAAWrtB,KAAKK,MAAM+rB,UAClBplB,OAYP,KAAAsmB,iBAAmB,CAAChB,EAAmC7qB,KAA2B,IAAA8rB,EAC/F,IAAKjB,EACD,OAEJ,MAAMkB,EAAqD,QAAjDD,EAAG9rB,EAAM5B,cAAcC,aAAa,qBAAa,IAAAytB,EAAAA,EAAI,GAC/DjB,EAAUmB,iBAAiB,CACvBC,WAAY,CAACF,KAEZlJ,MAAKpN,IACoB,YAAlBA,EAAOwV,QACP1sB,KAAKqB,SAAS,CAAE4e,MAAO,QAG9Bc,OAAM,KACH/gB,KAAKqB,SAAS,CAAE4e,MAAOjgB,KAAKV,MAAMquB,uCAU7B,KAAAC,wBAA2BtuB,IACxC,IAAKA,EAAM8rB,OAAS9rB,EAAM8rB,KAAKA,KAAKyC,UAAYlgB,EAAAA,gBAAgBC,YAAYtO,EAAM8rB,KAAKA,KAAKyC,SACxF,OAOJ,MAAMC,EAA0BrsB,IAC5BzB,KAAKstB,iBAAiBhuB,EAAM8rB,KAAM3pB,IAGtC,OACIrC,EAAAA,cAAAA,EAAAA,SAAA,KAEQE,EAAM8rB,KAAKA,KAAKyC,QAAQ/sB,KAAKitB,IACzB,MAAM9b,EAAY3S,EAAM0uB,4BAA6BvC,EAAAA,EAAAA,QAAOnsB,EAAM0uB,2BAA4B1uB,EAAM2uB,gBAAiBF,EAAO9sB,MAAQ,GAEpI,OACI7B,EAAAA,cAAA,OAAK4B,IAAK+sB,EAAO9sB,KAAMP,UAAU,kCAC7BtB,EAAAA,cAAA,OAAKsB,UAAU,8BACV,QACDtB,EAAAA,cAAA,QAAMsB,UAAU,mCACXqtB,EAAO9sB,MAEX,YAGL7B,EAAAA,cAACguB,EAAAA,OAAM,CACHxB,MAAOtsB,EAAM2uB,gBACbvtB,UAAU,mCACVC,QAASmtB,EAAsB,aACnBC,EAAO9sB,KAAI,aACXgR,UA/KxCjS,KAAK4G,SAAUC,EAAAA,EAAAA,kBAAiB,QAAS7G,KAAKV,MAAMiF,iBAAmBuC,EAAAA,kBAAkBonB,gBACzFluB,KAAKK,MAAQ,CACT8rB,oBAAqB,GACrBlM,MAAO,GACPmM,UAAU,GAIX7rB,SACH,OACInB,EAAAA,cAAA,WACIA,EAAAA,cAAA,OAAKsB,UAAU,0BACVV,KAAKV,MAAM6uB,sBAEfnuB,KAAKitB,YAAYjtB,KAAKV,MAAM4tB,qBAAsBltB,KAAKV,MAAM6tB,yBAA0BntB,KAAKV,MAAM8rB,MACnGhsB,EAAAA,cAAA,KAAGsB,UAAWV,KAAKK,MAAM4f,MAAQ,mBAAqB,GAAE,YAAY,aAC/DjgB,KAAKK,MAAM4f,OAEfjgB,KAAK4tB,wBAAwB5tB,KAAKV,SAwKnD,kSC/NO,MAAM8uB,EAA2D5c,IAAA,IAAC,sBACI6c,EAAqB,QACrBC,EAAO,UACPC,EAAS,YACTC,EAAW,YACXC,EAAW,MACXC,EAAK,OACLC,EAAM,mBACNC,GACHpd,EAAA,OACtEpS,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK2mB,GACLG,EACAF,EACAC,EACAE,EACAC,EACAC,EACAC,IAIIC,EAAsDjd,IAAA,IAAC,cACIkd,EAAa,QACbtY,EAAO,MACPkY,EAAK,WACLK,EAAU,QACVC,EAAO,aACPC,GACHrd,EAAA,OACjExS,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKonB,GACLtY,EACAkY,EACAK,EACAC,EACAC,IAMIC,EAAuCzc,IAAA,IAAC,WAAE0c,EAAU,SAAEpuB,EAAQ,gBAAEquB,EAAe,WAAEC,EAAU,YAAE9H,GAAa9U,EAAA,OACnHrT,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKynB,GACLE,GACGjwB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK0nB,GACLC,EAAWvuB,KAAIwuB,GACZlwB,EAAAA,cAACA,EAAAA,SAAc,CAAC4B,IAAKsuB,EAAUtY,KAAKsY,UAAUC,QAC1CnwB,EAAAA,cAACowB,EAAuB,CAACjI,YAAaA,EAAavQ,KAAMsY,EAAUtY,aAU9EyY,EAAyCC,IAAA,IAAC,YAAEC,EAAW,OAAEC,EAAM,YAAErI,GAAamI,EAAA,OACvFtwB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKioB,GACLC,EAAO9uB,KAAI,CAAC+uB,EAAO1rB,IAChB/E,EAAAA,cAAC8vB,EAAiBznB,OAAAC,OAAA,CAAC1G,IAAKmD,GAAW0rB,EAAK,CAAEtI,YAAaA,SAKtDuI,EAAwCC,IAAA,IAAC,YAAEC,EAAW,QAAExZ,EAAO,gBAAEyZ,EAAe,aAAEC,GAAcH,EAAA,OACzG3wB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKsoB,GACLxZ,EACAyZ,EACAC,IAMIC,EAAgDC,IAAA,IAAC,gBACIC,EAAe,gBACfC,EAAe,OACfV,EAAM,iBACNW,EAAgB,qBAChBC,EAAoB,YACpBjJ,GACH6I,EAAA,OAC3DhxB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK2oB,GACLC,GAAmBlxB,EAAAA,cAACgvB,EAA2B3mB,OAAAC,OAAA,GAAK4oB,IACpDV,GAAUxwB,EAAAA,cAACqwB,EAAkBhoB,OAAAC,OAAA,GAAKkoB,EAAM,CAAErI,YAAgBA,KAC1DiJ,EACAD,IAQIE,EAAqCC,IAAA,IAAC,UAAEC,EAAS,YAAEC,EAAW,YAAErJ,GAAamJ,EAAA,OACtFtxB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKipB,GACLC,GACDA,EAAY9vB,KAAI,CAAC+vB,EAAY1sB,IAAU/E,EAAAA,cAAC+wB,EAAqB1oB,OAAAC,OAAA,CAAC1G,IAAKmD,GAAW0sB,EAAU,CAAEtJ,YAAgBA,SAoC5GiI,EAAwDlwB,IAAc,IAAAwxB,EAAAC,EAAAC,EACxE,MAAMC,EAAsC,QAA3BH,EAAqB,QAArBC,EAAGzxB,EAAM0X,KAAKiL,eAAO,IAAA8O,OAAA,EAAlBA,EAAoBlX,YAAI,IAAAiX,EAAAA,EAAIxxB,EAAM0X,KAAKsY,UAAUnuB,YAC/D2Q,EAAiBxS,EAAMioB,YAAYA,YAAY3R,QAAQC,cAAc/D,eACrEof,GAAmBC,EAAAA,EAAAA,qBAAsC,QAAnBH,EAAC1xB,EAAM0X,KAAKiL,eAAO,IAAA+O,OAAA,EAAlBA,EAAoBI,OAAQtf,EAAeuf,aACxF,OAAOC,EACH,mBACAxf,EACAmf,EACA3xB,EAAM0X,KAAKiL,QACXiP,EACApf,EAAeyf,aACfjyB,EAAMioB,YAAYA,YAAYlR,OAAOmb,cACrClyB,EAAM0X,KAAKya,eACXnyB,EAAM0X,KAAKsY,YAIbgC,EAAoBA,CACtBI,EACA5f,EACAmf,EACAhP,EACAiP,EACAK,EACAC,EACAC,EACAnC,KACA,IAAAqC,EACA,IAAIC,EAAqC,QAA3BD,EAAG1P,MAAAA,OAAO,EAAPA,EAAS4P,uBAAe,IAAAF,EAAAA,EAAI,GAC7C,GAAIrC,EAAU/U,qBAAuB+U,EAAU/U,oBAAoBxa,OAAS,EAAG,CAC3E,MAAM+xB,EAAWxC,EAAU/U,oBAAoBtY,MAAMvC,GAChC,uBAAVA,EAAEqyB,MAETD,GAAYA,EAASE,OAASF,EAASE,MAAM/X,cAC7C2X,EAAaE,EAASE,MAAM/X,aAGpC,QACKwX,MAAAA,GAAAA,EAAgBQ,WACb7yB,EAAAA,cAAA,OAAKsB,UAAW,GAAGgxB,yBACftyB,EAAAA,cAAC8yB,EAAAA,GAAK,CACFpgB,eAAgBA,EAChBpR,UAAW,GAAGgxB,sBACdS,QAASlB,EACTmB,IAAKR,EACLS,YAAanB,EACbK,aAAcA,EACdC,cAAeA,EACfc,oBAAoB,YAOxC,EAvF2DC,IAAA,IAAC,kBACIC,EAAiB,OACjBC,EAAM,MACNC,EAAK,QACLC,EAAO,aACPC,EAAY,mBACZC,EAAkB,KAClBC,EAAI,MACJC,EAAK,WACLC,GACHT,EAAA,OACzDnzB,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAK8qB,GACPC,GAAUrzB,EAAAA,cAAC0wB,EAAkBroB,OAAAC,OAAA,GAAK+qB,IAClCE,EACAD,GACGtzB,EAAAA,cAAAA,EAAAA,SAAA,KACKszB,EACAG,GAGRD,GACGxzB,EAAAA,cAACqrB,EAAAA,KAAI,CAAC/pB,UAAU,6CACXkyB,EACAC,GAGRC,GAAQ1zB,EAAAA,cAACqxB,EAAgBhpB,OAAAC,OAAA,GAAKorB,EAAI,CAAEvL,YAAaiL,KACjDO,EACAC,GAAcA,2HC5HvB,MA+BaC,EAA+H3zB,IACxI,MAAM,kBAEF4zB,EAAiB,eAAEC,EAAc,cAAEC,EAAa,OAChD1G,EAAM,cACN2G,EAAa,QACb7c,EAAO,eACP8c,EAAc,0BACdC,EAAyB,4BACzBC,GACAl0B,EAEJ,OACIF,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAKwrB,GACP1c,EACW,YAAXkW,GAAwB2G,EACzBj0B,EAAAA,cAACqrB,EAAAA,KAAI,CAAC/pB,UAAU,IACA,YAAXgsB,GACKyG,GAAmBG,GACpB3lB,EAAAA,gBAAgBC,YAAY0lB,GAUzBC,EATAn0B,EAAAA,cAAA,OAAKsB,UAAU,iCACXtB,EAAAA,cAAA,MAAIsB,UAAU,yCACTpB,EAAM0E,UAAUyvB,kCAErBr0B,EAAAA,cAAA,KAAGsB,UAAU,sCACRpB,EAAM0E,UAAU0vB,+BAEpBH,GAGZC,GAEHL,GAAkBG,GAAkB3lB,EAAAA,gBAAgBC,YAAY0lB,IAC9Dl0B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKyrB,GACLG,EAAexyB,KAAK6yB,GAjEbC,EAACD,EAA8CE,KAGvE,MAAM,IAAE7yB,EAAG,gBAAE8yB,EAAe,mBAAEC,EAAkB,2BAAEC,EAA0B,aAAEC,EAAY,kBAAEC,GAAsBP,EAE5GQ,EAAiDJ,EACjDK,EAAyBD,EAA0B70B,MAAM+0B,SAASt0B,OAGxE,GAAIq0B,EAF8B,EAG9B,IAAK,IAAIjwB,EAAQ,EAAGA,EAHU,EAG0BiwB,EAAwBjwB,IAC5EgwB,EAA0B70B,MAAM+0B,SAAS1wB,KAAKvE,EAAAA,cAAA,iBAItD,OACIA,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,CAAC1G,IAAKA,EAAKN,UAAWmzB,EAAwBnzB,WAAemzB,GAC7DK,EACAH,EACAD,EACAG,EACAD,IA6CkBJ,CAAoBD,EAAeP,QAOlE,uICxEA,MAaMkB,EAAoBA,CAACC,EAAwBhwB,KAC/C,IAAKgwB,GAAgC,IAApBA,EAASx0B,OACtB,OAAO,KAEX,MAAMy0B,EAAuC,GACvC5tB,GAAUC,EAAAA,EAAAA,kBAAiB,QAAStC,EAAmB,IAgB7D,OAfAgwB,EAASE,SAAQ,CAAC5iB,EAAM1N,KACpByC,EAAQM,cAAcC,MAAQ0K,EAAKK,SACnC,MAAMlL,GAAaC,EAAAA,EAAAA,wBAAuB1C,EAAmBqC,GACvDoL,EAAoC,CACtCC,UAAWJ,EAAKI,UAChBvR,UAAW,gCACXwR,SAAUL,EAAKK,SACfC,QAASN,EAAKM,QAAQC,eACtBC,aAAcR,EAAKQ,aACnBzR,KAAM,OACN8zB,qBAAsB1tB,GAE1BwtB,EAAc7wB,KAAKqO,MAGhBwiB,GAGX,EArCoEhjB,IAA8D,IAA7D,MAAEmZ,EAAK,iBAAEpmB,EAAgB,aAAEwN,EAAY,eAAED,GAAgBN,EAC1H,GAAqB,IAAjBmZ,EAAM5qB,OACN,OAAO,KAEX,MAAMy0B,EAAgBF,EAAkB3J,EAAOpmB,GAC/C,OACInF,EAAAA,cAAA,OAAKsB,UAAU,kCACV8zB,GAAiBA,EAAcz0B,OAAS,EACrCX,EAAAA,cAACkT,EAAAA,GAAc,CAACqY,MAAO6J,EAAejiB,UAAW,CAAER,aAAAA,EAAcD,eAAAA,KACjE,4kBCRhB,MAAM6iB,UAA2Bv1B,EAAAA,cAG7BC,YAAYC,GACRC,MAAMD,GAiEH,KAAAiX,oBAAuB9U,GAA0CzB,KAAKV,MAAM+W,OAAOG,QAAQ2R,KAAO1mB,EAAMyN,OAAOf,MAE/G,KAAAiI,qBAAwBwe,GAAuBnzB,IAC9CzB,KAAKV,MAAM+W,OAAOwe,gBAAkB70B,KAAKV,MAAM+W,OAAOye,eACtD90B,KAAKV,MAAM+W,OAAOye,aAAerzB,EAAMyN,OAAOf,QApElDnO,KAAKuE,kBAAmB+e,EAAAA,EAAAA,oBACpBtjB,KAAKV,MAAMsW,QAAQkN,QAAQS,kBAC3BvjB,KAAKV,MAAMkkB,aACXxjB,KAAKV,MAAMwX,WAIZvW,SACH,MAAM,OAAE8V,EAAM,KAAEW,EAAI,UAAEhT,EAAS,QAAE4R,GAAY5V,KAAKV,OAC5C,UAAEoB,EAAS,QAAE8V,EAAO,eAAEqe,EAAc,oBAAEE,EAAmB,aAAED,EAAY,kBAAEE,GAAsB3e,GAC/F,sBAAE4e,EAAqB,4BAAEC,GAAgClxB,GACzD,YAAEmxB,GAAgBne,EAExB,IAAIoe,EAAcH,EACdlS,EAAMzQ,EAAAA,GAAoB,cAAesD,EAAQC,gBAAkB,GACvE,MAAMhE,EAAO,CAAEK,SAAU2iB,EAAgB1iB,QAAS,CAAEC,eAAgB2Q,GAAO9Q,UAAW8iB,GAEtF,GAAII,GAAeA,EAAYje,QAAUie,EAAYje,OAAOme,WAAY,CACpE,MAAMC,EAAmB,EACzB,IAAIC,EAAS,EAETJ,EAAYje,OAAOse,cAAgBL,EAAYje,OAAOse,aAAaz1B,OAAS,GAC5Eo1B,EAAYje,OAAOse,aAAaf,SAASgB,IACrCF,GAAUE,EAAYC,gBAG9B7jB,EAAKI,UAAY+iB,EACjBnjB,EAAKK,SAAW4iB,EAChB/R,EAAMzQ,EAAAA,GAAoB,UAAWsD,EAAQC,gBAAkB,GAC/DhE,EAAKM,QAAQC,eAAiB2Q,EAC9BqS,GAAc3J,EAAAA,EAAAA,QAAOyJ,EAA6BK,EAAOI,QAAQL,IAGrE,MAAMnO,EAASzP,EAAAA,EAAA,GACR1X,KAAKV,OAAK,IACboB,UAAAA,EACAi0B,mBAAoB,CAChBpN,YAAavnB,KAAKV,MAClBoB,UAAWuM,GAAAA,CAAW,0BAA2BoJ,EAAO3V,YAE5D8V,QAASA,GACLpX,EAAAA,cAACkT,EAAAA,GAAa,CACV5R,UAAU,mCACV2mB,IAAK7Q,EAAQ6Q,KAAO,KACpBc,KAAM3R,EAAQ2R,KACd5V,UAAW,CAAE6V,OAAQpoB,KAAKuW,oBAAqBzE,eAAgB9R,KAAKV,MAAMsW,QAAQkN,WAG1F6H,MACIvrB,EAAAA,cAACw2B,EAAcnuB,OAAAC,OAAA,GACP,CACAijB,MAAO,CAAC9Y,GACRE,aAAc/R,KAAKoW,qBACnBtE,eAAgB9R,KAAKV,MAAMsW,QAAQkN,QACnCve,iBAAkBvE,KAAKuE,oBAInC6wB,YAAah2B,EAAAA,cAACy2B,EAAAA,EAAoB,CAACT,YAAaA,MAGpD,OAAOp1B,KAAKV,MAAMiqB,WAAWpC,IAYrC,2FCjGA,MAYA,EAZuE7nB,IACnE,MAAM,mBAAEq1B,EAAkB,QAAEne,EAAO,YAAE4e,EAAW,MAAEzK,GAAUrrB,EAE5D,OACIF,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAKitB,GACPne,EACA4e,EACAzK,wDCLb,MAIA,EAJiFnZ,IAAA,IAAC,YAAE4jB,GAAa5jB,EAAA,OAC7FpS,EAAAA,cAAA,KAAGsB,UAAU,wCAAwC00B,6JCFlD,MAAMU,EAAwFtkB,IAAA,IAAC,YAAE4jB,GAAa5jB,EAAA,OACjHpS,EAAAA,cAAA,KAAGsB,UAAU,gDAAgD00B,ICUpDW,EAA4EvkB,IAKpF,IALqF,MACtFmZ,EAAK,aACL5Y,EAAY,iBACZxN,EAAgB,eAChBuN,GACHN,EACG,GAAqB,IAAjBmZ,EAAM5qB,OACN,OAAO,KAEX,MAAMy0B,EAAgBF,EAAkB3J,EAAOpmB,GAC/C,OACInF,EAAAA,cAAA,OAAKsB,UAAU,0CACV8zB,GAAiBA,EAAcz0B,OAAS,EACrCX,EAAAA,cAACkT,EAAAA,GAAc,CAACqY,MAAO6J,EAAejiB,UAAW,CAAER,aAAAA,EAAcD,eAAAA,KACjE,OAKVwiB,EAAoBA,CAACC,EAAwBhwB,KAC/C,IAAKgwB,GAAgC,IAApBA,EAASx0B,OACtB,OAAO,KAEX,MAAMy0B,EAAuC,GACvC5tB,GAAUC,EAAAA,EAAAA,kBAAiB,QAAStC,EAAmB,IAgB7D,OAfAgwB,EAASE,SAAQ,CAAC5iB,EAAM1N,KACpByC,EAAQM,cAAcC,MAAQ0K,EAAKK,SACnC,MAAMlL,GAAaC,EAAAA,EAAAA,wBAAuB1C,EAAmBqC,GACvDoL,EAAoC,CACtCC,UAAWJ,EAAKI,UAChBvR,UAAW,wCACXwR,SAAUL,EAAKK,SACfC,QAASN,EAAKM,QAAQC,eACtBC,aAAcR,EAAKQ,aACnBzR,KAAM,OACN8zB,qBAAsB1tB,GAE1BwtB,EAAc7wB,KAAKqO,MAGhBwiB,wkBCnCJ,MAAMwB,UAAkC52B,EAAAA,cAG3CC,YAAYC,GACRC,MAAMD,GA0DH,KAAAiX,oBAAuB9U,IAC1BzB,KAAKV,MAAM+W,OAAOG,QAAQ2R,KAAO1mB,EAAMyN,OAAOf,OAG3C,KAAAiI,qBAAwBwe,GAAuBnzB,IAC9CzB,KAAKV,MAAM+W,OAAOsU,OAAS3qB,KAAKV,MAAM+W,OAAOsU,MAAMiK,KACnD50B,KAAKV,MAAM+W,OAAOsU,MAAMiK,GAAW1iB,SAAWzQ,EAAMyN,OAAOf,QA/D/DnO,KAAKuE,kBAAmB+e,EAAAA,EAAAA,oBACpBtjB,KAAKV,MAAMsW,QAAQkN,QAAQS,kBAC3BvjB,KAAKV,MAAMkkB,aACXxjB,KAAKV,MAAMwX,WAIZvW,SAAM,IAAA01B,EAAAC,EACT,MAAM,OAAE7f,EAAM,UAAErS,EAAS,KAAEgT,GAAShX,KAAKV,MACnC62B,EAAoE,QAAtCF,EAAGj2B,KAAKV,MAAM0X,KAAKof,aAAalf,cAAM,IAAA+e,OAAA,EAAnCA,EAAqCh0B,MACxEm0B,GAAsC,sDAAtBA,EAAavc,OAEjC,KACK7Z,KAAKV,MAAMsW,QAAQkN,QAAQF,OAAOyT,UACjCF,MAAAA,GAAAA,EAAgCG,WAAwD,QAA3CJ,EAACl2B,KAAKV,MAAM0X,KAAKuf,oBAAoBrf,cAAM,IAAAgf,GAA1CA,EAA4C7X,OAE5F,OAAOjf,EAAAA,cAAAA,EAAAA,SAAA,MAGX,MAAM,UAAEsB,EAAS,QAAE8V,EAAO,MAAEmU,GAAUtU,GAChC,qCAAEmgB,GAAyCxyB,EAC3CsvB,EAAiBtc,EAAKsc,eAEtBmD,IAAuBnD,MAAAA,OAAc,EAAdA,EAAgBpc,SAAU,IAAInX,OACrDq1B,GAAc3J,EAAAA,EAAAA,QAAO+K,EAAsCC,GAE3DtP,EAASzP,EAAAA,EAAA,GACR1X,KAAKV,OAAK,IACboB,UAAAA,EACAs1B,0BAA2B,CACvBzO,YAAavnB,KAAKV,MAClBoB,UAAWuM,GAAAA,CAAW,kCAAmCoJ,EAAO3V,YAEpE8V,QAASA,GAAWA,EAAQ2R,MACxB/oB,EAAAA,cAACkT,EAAAA,GAAa,CACV5R,UAAU,2CACV2mB,IAAK7Q,EAAQ6Q,IACbc,KAAM3R,EAAQ2R,KACd5V,UAAW,CAAE6V,OAAQpoB,KAAKuW,oBAAqBzE,eAAgB9R,KAAKV,MAAMsW,QAAQkN,WAG1F6H,MAAOA,GAASA,EAAM5qB,OAAS,GAC3BX,EAAAA,cAAC22B,EAA8BtuB,OAAAC,OAAA,GACvB,CACAijB,MAAAA,EACA5Y,aAAc/R,KAAKoW,qBACnBtE,eAAgB9R,KAAKV,MAAMsW,QAAQkN,QACnCve,iBAAkBvE,KAAKuE,oBAInC6wB,YAAah2B,EAAAA,cAAC02B,EAAoC,CAACV,YAAaA,MAGpE,OAAOp1B,KAAKV,MAAMiqB,WAAWpC,IAcrC,2FC1FA,MAYA,EAZqF7nB,IACjF,MAAM,0BAAE02B,EAAyB,QAAExf,EAAO,YAAE4e,EAAW,MAAEzK,GAAUrrB,EAEnE,OACIF,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAKsuB,GACPxf,EACA4e,EACAzK,kECCb,MAUA,EAV4DnZ,IAA4E,IAA3E,GAAEZ,EAAE,UAAElQ,EAAS,KAAEynB,EAAI,UAAElW,EAAS,SAAEob,EAAQ,iBAAE9oB,EAAgB,QAAE5D,GAAS6Q,EAChI,MAAM5K,GAAUC,EAAAA,EAAAA,kBAAiB,QAAStC,EAAmB4jB,GACvDnhB,GAAaC,EAAAA,EAAAA,wBAAuB1C,EAAmBqC,GAC7D,OACIxH,EAAAA,cAACguB,EAAAA,OAAM3lB,OAAAC,OAAA,CAACkJ,GAAIA,EAAIlQ,UAAWA,EAAS,aAAcuR,EAAWob,SAAUA,EAAU1sB,QAASA,GAAaqG,GAClGmhB,mECRb,MAUA,EAV+D3W,IAA8C,IAA7C,GAAEZ,EAAE,UAAElQ,EAAS,KAAEwQ,EAAO,OAAM,QAAE8P,GAASxP,EACrG,MAAMklB,EAAiB,GAAGh2B,MAAcwQ,UAExC,OACI9R,EAAAA,cAAA,OAAKwR,GAAIA,EAAIlQ,UAAWuM,GAAAA,CAAWypB,EAAgB,QAAS,GAAGxlB,UAActQ,KAAK,QAAO,YAAW,YAAW,cAAa,QACxHxB,EAAAA,cAAA,KAAGsB,UAAW,GAAGg2B,UAAwB1V,wDCQrD,MAAM2V,EAAgBC,IAClB,GAAIA,EAAW,CACX,MAAMC,EAAkBC,OAAOC,SAASH,EAAW,IACnD,IAAKI,MAAMH,GACP,OAAOA,IAoBnB,EAb+DrlB,IAAA,IAAC,GAAEZ,EAAE,KAAEM,EAAI,MAAE/C,EAAK,QAAE8oB,EAAO,UAAEv2B,EAAS,UAAEk2B,EAAS,SAAE32B,GAAUuR,EAAA,OACxHpS,EAAAA,cAAA,SACIwR,GAAIA,EACJM,KAAMA,EACN/C,MAAOA,EACPzN,UAAW,GAAGA,WAAmBA,KAAakQ,IAC9CqmB,QAAqB,KAAZA,EAAiBA,OAAU/0B,EAAS,gBAC/B,OACd00B,UAAWD,EAAaC,GACxB32B,SAAUA,kDClClB,MAMA,EAN0DuR,IAAA,IAAC,GAAEZ,EAAE,MAAEsmB,EAAK,UAAEx2B,EAAS,KAAEynB,GAAM3W,EAAA,OACrFpS,EAAAA,cAAA,SAAOwR,GAAI,GAAGA,UAAYlQ,UAAW,GAAGA,UAAmBy2B,QAASD,GAC/D/O,iDCLT,MAEA,EAFsE3W,IAAA,IAAC,UAAE9Q,GAAW8Q,EAAA,OAAKpS,EAAAA,cAAA,OAAKsB,UAAW,GAAGA,kECC5G,MAIA,EAJ4E8Q,IAAA,IAAC,UAAE9Q,EAAS,QAAEsgB,GAASxP,EAAA,OAC/FpS,EAAAA,cAAA,OAAKsB,UAAW,GAAGA,sBAA+BsgB,uxBCsDtD,IAAMoW,EAAN,cAA4Bh4B,EAAAA,UAcxBC,YAAYC,GACRC,MAAMD,GAdO,KAAA+3B,gBAA0B,oBA0FpC,KAAA9gB,oBAAuB9U,GAA0CzB,KAAKV,MAAM+W,OAAOG,QAAS2R,KAAO1mB,EAAMyN,OAAOf,MAGhH,KAAAmpB,QAAU,KACbt3B,KAAKu3B,mBACLv3B,KAAKw3B,sBAGLx3B,KAAKy3B,oBAAsBC,aAAY,KACnC13B,KAAK23B,gCACN,KACHhU,YAAW,KACPiU,cAAc53B,KAAKy3B,uBACpB,MAIU,KAAAE,4BAA8B,KAEvCjZ,QAAUA,OAAe,QAAKA,OAAe,OAA4B,2BACzEkZ,cAAc53B,KAAKy3B,qBACnBz3B,KAAK63B,eAAgB,IAIZ,KAAAN,iBAAmB,KAE5B7Y,OAAkB,WAAKA,OAAkB,UAAmB,iBAE5DA,OAAkB,UAAmB,gBAAE5d,KAAKg3B,IACxC,OAAQA,EAAIC,GAAGC,eACX,IAAK,cACDh4B,KAAKi4B,iBAAmBH,EAAII,IAC5B,MAEJ,IAAK,kBACDl4B,KAAKm4B,qBAAuBL,EAAII,SASnC,KAAAV,oBAAsB,KACnC,MAAM,UAAExzB,GAAchE,KAAKV,MAG3B,GAAIof,QAAUA,OAAgB,QAAG,CAC7B,MAAMsC,EAAU,CACZoX,gBAAiBp0B,EAAUq0B,gBAI/B5wB,OAAOC,OAAOgX,OAAgB,QAAGsC,KAjIrChhB,KAAKi4B,iBAAmBK,EAAAA,cAAcC,aAAaC,OACnDx4B,KAAKm4B,qBAAuBG,EAAAA,cAAcC,aAAaC,OACvDx4B,KAAK63B,eAAgB,EACrB73B,KAAKuE,kBAAmB+e,EAAAA,EAAAA,oBACpBtjB,KAAKV,MAAMsW,QAAQkN,QAAQS,kBAC3BvjB,KAAKV,MAAMkkB,aACXxjB,KAAKV,MAAMwX,WAIZjK,oBACH7M,KAAKs3B,UAIF5qB,qBAEC1M,KAAK63B,eAAiBnZ,QAAUA,OAAiB,UAAKA,OAAiB,SAAc,YAErFA,OAAiB,SAAc,aAIhCqG,sBAAsBC,EAAsDyT,GAC/E,OAAIz4B,KAAKK,QAAUo4B,GAAaz4B,KAAKV,MAAM0X,OAASgO,EAAUhO,KAM3DzW,SACH,MAAM,OAAE8V,EAAM,UAAErS,GAAchE,KAAKV,MAE7B6nB,EAASzP,EAAAA,EAAA,GACR1X,KAAKV,OAAK,IACbo5B,UAAW,CACPC,eAAgB34B,KAAK63B,eAEzBe,cAAe,CACXrR,YAAavnB,KAAKV,MAClBoB,UAAWuM,GAAAA,CAAWjN,KAAKq3B,gBAAiBhhB,EAAO3V,YAEvDiyB,QAAS,CACLkG,MAAO,CACHxR,IAAKC,EAAAA,MACLK,QAAQ,GAEZmR,UAAW,CACPzR,IAAKmB,EAAAA,WAETuQ,KAAM35B,EAAAA,cAAC45B,EAAAA,EAAiC,CAACt4B,UAAWV,KAAKq3B,kBACzDrW,QAAS5hB,EAAAA,cAAC65B,EAAAA,EAAoC,CAACv4B,UAAWV,KAAKq3B,gBAAiBrW,QAAShd,EAAUq0B,kBAEvGa,mBAAoB,CAChBtoB,GAAI,MACJ4E,MAAO,CAAE2jB,QAAS,SAEtBC,YAAa,CACTxoB,GAAI5Q,KAAK63B,cAAgB,MAAQ,KACjCn3B,UAAW,GAAGV,KAAKq3B,8BAEvB7gB,QAASH,EAAOG,SACZpX,EAAAA,cAACkT,EAAAA,GAAa7K,OAAAC,OAAA,CACVhH,UAAW,GAAGV,KAAKq3B,4BACfhhB,EAAOG,QAAO,CAClBjE,UAAW,CAAE6V,OAAQpoB,KAAKuW,oBAAqBzE,eAAgB9R,KAAKV,MAAMsW,QAAQkN,YAG1FuW,0BAA2Br5B,KAAKs5B,wBAGpC,OAAOt5B,KAAKV,MAAMiqB,WAAWpC,GA8DzBmS,sBACJ,MAAM,UAAEt1B,GAAchE,KAAKV,MAC3B,MAAO,CACHi6B,aAAc,CACV3oB,GAAI,gBACJlQ,UAAW,GAAGV,KAAKq3B,uCAEvBmC,MAAO,CACHx5B,KAAKy5B,aAAa,cAAe,WAAYz1B,EAAU01B,qBAAsB15B,KAAKi4B,kBAClFj4B,KAAKy5B,aAAa,kBAAmB,WAAYz1B,EAAU21B,yBAA0B35B,KAAKm4B,uBAE9FyB,aAAc,CACVx6B,EAAAA,cAACy6B,EAAAA,EAA2B,CACxB74B,IAAI,wBACJ4P,GAAG,wBACHlQ,UAAWV,KAAKq3B,gBAChBrW,QAAShd,EAAU81B,6BAEvB16B,EAAAA,cAACy6B,EAAAA,EAA2B,CACxB74B,IAAI,uBACJ4P,GAAG,uBACHlQ,UAAWV,KAAKq3B,gBAChBrW,QAAShd,EAAU+1B,4BAEvB36B,EAAAA,cAACy6B,EAAAA,EAA2B,CACxB74B,IAAI,uBACJ4P,GAAG,iBACHlQ,UAAWV,KAAKq3B,gBAChBrW,QAAShd,EAAUg2B,sBAEvB56B,EAAAA,cAACy6B,EAAAA,EAA2B,CACxB74B,IAAI,+BACJ4P,GAAG,+BACHlQ,UAAWV,KAAKq3B,mBAGxB4C,eAAgB,CACZv5B,UAAW,GAAGV,KAAKq3B,4BAEvB6C,QAAS,CACL96B,EAAAA,cAAC+6B,EAAAA,EAA4B,CACzBn5B,IAAI,WACJ4P,GAAG,WACHlQ,UAAW,GAAGV,KAAKq3B,mCACnBplB,UAAWjO,EAAUo2B,oBACrBjS,KAAMnkB,EAAUq2B,eAChB91B,iBAAkBvE,KAAKuE,mBAE3BnF,EAAAA,cAAC+6B,EAAAA,EAA4B,CACzBn5B,IAAI,SACJ4P,GAAG,SACHlQ,UAAW,GAAGV,KAAKq3B,iCACnBplB,UAAWjO,EAAUs2B,iBACrBnS,KAAMnkB,EAAUs2B,iBAChB/1B,iBAAkBvE,KAAKuE,oBAG/Bg2B,yBAA0B,CACtB75B,UAAW,GAAGV,KAAKq3B,oDAEvBmD,gCAAiC,CAC7B5pB,GAAI,kBACJlQ,UAAW,GAAGV,KAAKq3B,6CAKvBoC,aAAa7oB,EAAYM,EAAcupB,EAAmBxD,GAC9D,MAAMv2B,EAAY,GAAGV,KAAKq3B,gCAC1B,MAAO,CACHqD,QAAS,CACLh6B,UAAWuM,GAAAA,CAAWvM,EAAW,GAAGA,KAAakQ,IAAM,aAAc,cAEzE5P,IAAK4P,EACL8a,MACItsB,EAAAA,cAACu7B,EAAAA,EAA2BlzB,OAAAC,OAAA,GACpB,CACAkJ,GAAAA,EACAsmB,MAAOtmB,EACPlQ,UAAAA,EACAynB,KAAMsS,KAIlBb,aACIx6B,EAAAA,cAACy6B,EAAAA,EAA2BpyB,OAAAC,OAAA,GACpB,CACAhH,UAAWV,KAAKq3B,gBAChBnmB,KAAM,UAIlBgR,MACI9iB,EAAAA,cAACw7B,EAAAA,EAA2BnzB,OAAAC,OAAA,GACpB,CACAkJ,GAAAA,EACAM,KAAAA,EACA+lB,QAAAA,EACAv2B,UAAAA,SAnPR2N,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,wCAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,4CAECD,EAAAA,EAAAA,IAAA,CAAXC,EAAAA,IAAU,oCATT8oB,GAAa/oB,EAAAA,EAAAA,IAAA,CADlBE,EAAAA,IACK6oB,GAgQN,oFCzTA,MAAMyD,EAAkDrpB,IAA4C,IAA3C,QAAEkpB,EAAO,MAAEhP,EAAK,aAAEkO,EAAY,MAAE1X,GAAO1Q,EAC5F,OACIpS,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKgzB,GACLhP,EACAkO,EACA1X,IAuCP4Y,EAAwDroB,IAAwC,IAAvC,MAAEomB,EAAK,UAAEC,EAAS,KAAEC,EAAI,QAAE/X,GAASvO,EAC9F,OACIrT,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKmxB,GACNz5B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKoxB,GACLC,EACA/X,KAqBjB,EAf6D1hB,IACzD,MAAM,cAAEs5B,EAAa,UAAEF,EAAS,QAAE/F,EAAO,mBAAEuG,EAAkB,YAAEE,EAAW,QAAE5iB,EAAO,0BAAE6iB,GAA8B/5B,EAEnH,OACIF,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAKkxB,GACPF,EAAUC,eAAiBv5B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKwxB,IACrCR,EAAUC,eAAiBv5B,EAAAA,cAAC07B,EAAoBrzB,OAAAC,OAAA,GAAKirB,IACtDvzB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK0xB,GACL5iB,EArD0C5E,CAAAA,IAQtD,IARuD,aACxD2nB,EAAY,MACZC,EAAK,aACLI,EAAY,eACZK,EAAc,QACdC,EAAO,yBACPK,EAAwB,gCACxBC,GACH5oB,EACG,OACIxS,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK6xB,GACLC,GACGA,EAAM14B,KAAKi6B,GAEA37B,EAAAA,cAACy7B,EAAiBpzB,OAAAC,OAAA,GAAKqzB,MAErCnB,GACGA,EAAa94B,KAAI,CAACmf,EAAwB9b,IAC/B/E,EAAAA,cAACA,EAAAA,SAAc,CAAC4B,IAAKmD,GAAQ8b,KAE5C7gB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKuyB,GACLC,GACGA,EAAQp5B,KAAI,CAACk6B,EAAyB72B,IAC3B/E,EAAAA,cAACA,EAAAA,SAAc,CAAC4B,IAAKmD,GAAQ62B,MAIhD57B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK6yB,GACNn7B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK8yB,OA0BTS,CAAa5B,wJCvB9B,MA4FM6B,EAAeA,CACjBH,EACAz7B,EACA67B,KAC6C,IAAAC,EAO7C,MAAO,CACH5kB,QAPgBukB,EAAKvkB,SAjGP6kB,EAACC,EAAkCh8B,EAA4C67B,KACjG,MAAMrpB,EAAiBxS,EAAMwS,eAC7B,OACI1S,EAAAA,cAACkT,EAAAA,GAAa,CACV6V,KAAMmT,EACNjU,IAAI,IACJ3mB,UAAU,sDACV6R,UAAW,CAKP6V,OAAQ3mB,IACJnC,EAAMi8B,2BAA2BJ,EAAW15B,IAEhDqQ,eAAAA,MAkFwBupB,CAAcN,EAAKvkB,QAASlX,EAAO67B,GAQnEhT,KAPkB4S,EAAKS,SAtEPC,EAACC,EAAwCp8B,EAA4C67B,KACzG,MAAMrpB,EAAiBxS,EAAMwS,eAC7B,OACI1S,EAAAA,cAACkT,EAAAA,GAAa,CACV6V,KAAMuT,EACNrU,IAAI,IACJ3mB,UAAU,2DACV6R,UAAW,CAKP6V,OAAQ3mB,IACJnC,EAAMi8B,2BAA2BJ,EAAW15B,IAEhDqQ,eAAAA,MAuD0B2pB,CAAgBV,EAAKS,QAASl8B,EAAO67B,GAQvExQ,MAPwB,QAAbyQ,EAAGL,EAAKpQ,aAAK,IAAAyQ,OAAA,EAAVA,EAAYt6B,KAAI,CAAC66B,EAAqBx3B,IA1CxCy3B,EAACD,EAAqBr8B,EAA4C67B,EAAmBvG,KACrG,MAAM5iB,EAAoC,CACtCC,UAAW0pB,EAAQ1pB,UACnBvR,UAAW,0DACXwR,SAAUypB,EAAQzpB,SAClBC,QAASwpB,EAAQxpB,QAAQC,eACzBC,aAAcspB,EAAQtpB,aACtBzR,KAAM,QAEJkR,EAAiBxS,EAAMwS,eAC7B,OACI1S,EAAAA,cAACkT,EAAAA,GAAa,CACVtR,IAAK4zB,EACL/iB,KAAMG,EACNO,UAAW,CAKPR,aAActQ,IACVnC,EAAMu8B,+BAA+BjH,EAAWuG,EAAW15B,IAE/DqQ,eAAAA,MAqBD8pB,CAAYD,EAASr8B,EAAO67B,EAAWh3B,KAO9C23B,+BAAgC,CAAEp7B,UAAW,4DAC7Cq7B,2BAA4B,CAAEr7B,UAAW,uDASpCs7B,EACT18B,IAEA,MAAM,kBAAE28B,GAAsB38B,EAC9B,IAAK28B,EACD,OAGJ,MAAMC,EAA4D,GAKlE,OAJAD,EAAkBn7B,KAAI,CAACi6B,EAAM52B,IAClB+3B,EAAWv4B,KAAKu3B,EAAaH,EAAMz7B,EAAO6E,MAG9C,CACHg4B,sBAAuB,CAAEz7B,UAAW,iDACpC07B,uBAAwBF,IC/JzB,MAAMG,UAAyBj9B,EAAAA,cAAtCC,cAAA,oBAeqB,KAAAi1B,kBAAqBC,IAClC,IAAKA,GAAgC,IAApBA,EAASx0B,OACtB,OAAO,KAEX,MAAMy0B,EAAuC,GAqB7C,OApBAD,EAASE,SAAQ,CAAC5iB,EAAM1N,KAEpB,MAAMyC,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS7G,KAAKV,MAAMiF,iBAAkB,GAAI,IACrE2N,EAAWL,EAAKK,SAAWL,EAAKK,SAAW,GACjDtL,EAAQM,cAAcC,MAAQ+K,EAC9B,MAAMlL,GAAaC,EAAAA,EAAAA,wBAAuBjH,KAAKV,MAAMiF,iBAAkBqC,GACjE01B,EAAqB,IAAVn4B,EAAc,mBAAqB,qBAC9C6N,EAAoC,CACtCC,UAAWJ,EAAKI,UAChBvR,UAAW47B,EACXpqB,SAAUL,EAAKK,SACfC,QAASN,EAAKM,QAAQC,eACtBC,aAAcR,EAAKQ,aACnBzR,KAAMZ,KAAKV,MAAMsB,KACjB8zB,qBAAsB1tB,EACtBrG,SAAS47B,EAAAA,EAAAA,kBAAiBv8B,KAAKV,MAAMiF,iBAAkBqC,EAASsL,IAEpEsiB,EAAc7wB,KAAKqO,MAGhBwiB,GAvCJj0B,SACH,MAAMi0B,EAAgBx0B,KAAKs0B,kBAAkBt0B,KAAKV,MAAMqrB,OACxD,OACIvrB,EAAAA,cAAA,OAAKsB,UAAU,yBACV8zB,GAAiBA,EAAcz0B,OAAS,EACrCX,EAAAA,cAACkT,EAAAA,GAAc,CACXqY,MAAO6J,EACPjiB,UAAW,CAAER,aAAc/R,KAAKV,MAAMyS,aAAcD,eAAgB9R,KAAKV,MAAMwS,kBAEnF,OAiCpB,+kBCtBO,MAAM0qB,UAAqBp9B,EAAAA,cAAlCC,cAAA,oBACqB,KAAAkF,kBAAsC+e,EAAAA,EAAAA,oBACnDtjB,KAAKV,MAAMsW,QAAQkN,QAAQS,kBAC3BvjB,KAAKV,MAAMkkB,aACXxjB,KAAKV,MAAMwX,WAmGR,KAAA2lB,iBAAoBh7B,GAA0CzB,KAAKV,MAAM+W,OAAOG,QAAS2R,KAAO1mB,EAAMyN,OAAOf,MAS7G,KAAAuuB,sBAAyBj7B,GAA0CzB,KAAKV,MAAM+W,OAAOsmB,UAAYl7B,EAAMyN,OAAOf,MAO9G,KAAAiI,qBAAwBwe,GAAuBnzB,IAC9CzB,KAAKV,MAAM+W,OAAOsU,OAAS3qB,KAAKV,MAAM+W,OAAOsU,MAAMmM,OAAOlC,MAC1D50B,KAAKV,MAAM+W,OAAOsU,MAAMmM,OAAOlC,IAAY1iB,SAAWzQ,EAAMyN,OAAOf,QAlHpE5N,SAAM,IAAAq8B,EAAAC,EAAAC,EACT,MAAM,QAAEtmB,EAAO,UAAEmmB,EAAS,MAAEI,EAAK,MAAEpS,EAAK,UAAEjqB,EAAS,eAAEs8B,GAAmBh9B,KAAKV,MAAM+W,OAC7E4mB,EAAoBzmB,GACtBpX,EAAAA,cAACkT,EAAAA,GAAa,CACV5R,UAAU,0BACV2mB,IAAgB,QAAbuV,EAAEpmB,EAAQ6Q,WAAG,IAAAuV,EAAAA,EAAI,KACpBzU,KAAM3R,EAAQ2R,KACd5V,UAAW,CAAE6V,OAAQpoB,KAAKy8B,iBAAkB3qB,eAAgB9R,KAAKV,MAAMsW,QAAQkN,WAGjFoa,EAAa,CACf3L,aAAqD,QAAzCsL,EAAE78B,KAAKV,MAAMsW,QAAQkN,QAAQyO,oBAAY,IAAAsL,EAAAA,EAAI,GACzDrL,cAAeuL,MAAAA,OAAK,EAALA,EAAOvL,eAEpB2L,EAAoBxS,GAAShd,EAAAA,gBAAgBC,YAAY+c,IAC3DvrB,EAAAA,cAACw2B,EAAcnuB,OAAAC,OAAA,GACP,CACAijB,MAAAA,EACA5Y,aAAc/R,KAAKoW,qBACnBtE,eAAgB9R,KAAKV,MAAMsW,QAAQkN,QACnCve,iBAAkBvE,KAAKuE,iBACvB3D,KAAgF,SAAzEZ,KAAKV,MAAM+W,OAAmC+mB,uBAAoC,OAAS,YAIxGC,EAAmBV,GACrBv9B,EAAAA,cAACkT,EAAAA,GAA0B,CACvB6V,KAAMwU,EACNj8B,UAAU,yBACV6R,UAAW,CAAE6V,OAAQpoB,KAAK08B,sBAAuB5qB,eAAgB9R,KAAKV,MAAMsW,QAAQkN,WAGtFwa,EACFl+B,EAAAA,cAACkT,EAAAA,GAAc7K,OAAAC,OAAA,GACPq1B,EACAG,EAAU,CACdprB,eAAgB9R,KAAKV,MAAMsW,QAAQkN,QACnCya,oBAAoB,EACpBhrB,UAAW,CACPvR,IAA4B,QAAzB87B,EAAE98B,KAAKV,MAAM+W,OAAO0mB,aAAK,IAAAD,EAAAA,EAAI,GAChChrB,eAAgB9R,KAAKV,MAAMsW,QAAQkN,QACnC0a,WAAYx9B,KAAKV,MAAMm+B,SACvBC,kBAAmB,QACnBC,SAAU39B,KAAKV,MAAMsR,GACrBgtB,OAAS59B,KAAKV,MAAM+W,OAAmC+mB,wBAE3DS,uBAAqB,KAI7B,IAAKZ,IAAsBI,IAAqBF,EAE5C,OADAn9B,KAAKV,MAAMsW,QAAQkB,UAAUmJ,MAAM,uDAC5B,KAEX,MAAM6d,EAAqBpmB,EAAAA,EAAA,GACpB1X,KAAKV,OAAK,IACbssB,MAAOqR,EACP9U,KAAMkV,EACNN,MAAOO,EACP3S,MAAOwS,EACPY,YAAa/9B,KAAKV,MAAM+W,OAAO3V,UAC/Bs9B,sBAAuB,CACnBzW,YAAavnB,KAAKV,MAClBoB,UAAWuM,GAAAA,CAAW,mBAAoBvM,IAE9Cu9B,eAAgB,CAAEv9B,UAAW,2BAC7Bw9B,iBAAkB,CAAEx9B,UAAW,6BAC/By9B,sBAAuB,CACnB9W,IAAK,IACL3mB,UAAW,yBACXE,KAAM,QAEVw9B,UAAWp+B,KAAKq+B,gBAChBrB,eAAAA,EACAf,kBAAmBD,EAA8B,CAC7ClqB,eAAgB9R,KAAKV,MAAMsW,QAAQkN,QACnCmZ,kBAAmBj8B,KAAKV,MAAM+W,OAAO4lB,kBACrCV,2BAA4Bv7B,KAAKu7B,2BACjC+C,gCAAiCt+B,KAAKs+B,gCACtCzC,+BAAgC77B,KAAK67B,iCAEzC0C,qBAAsBv+B,KAAKu7B,2BAC3BiD,0BAA2Bx+B,KAAKs+B,gCAChCzC,+BAAgC77B,KAAK67B,iCAGzC,OAAO77B,KAAKV,MAAMiqB,WAAWuU,GAgC1BvC,2BAA2Bp3B,EAAe1C,GACzCzB,KAAKV,MAAM+W,OAAO4lB,oBAClBj8B,KAAKV,MAAM+W,OAAO4lB,kBAAkBnF,OAAO3yB,IAAQqS,QAAU/U,EAAMyN,OAAOf,OAI3E0tB,+BAA+BjH,EAAmBzwB,EAAe1C,GACpE,MAAMg9B,EACDz+B,KAAKV,MAAM+W,OAAO4lB,mBACftuB,EAAAA,gBAAgBC,YAAY5N,KAAKV,MAAM+W,OAAO4lB,oBAC9Cj8B,KAAKV,MAAM+W,OAAO4lB,kBAAkBnF,OAAO3yB,KAC/C,GACAs6B,EAAwB9T,QACxB8T,EAAwB9T,MAAMmM,OAAOlC,IAAY1iB,SAAWzQ,EAAMyN,OAAOf,OAI1EmwB,gCAAgCn6B,EAAe1C,GAC9CzB,KAAKV,MAAM+W,OAAO4lB,oBAClBj8B,KAAKV,MAAM+W,OAAO4lB,kBAAkBnF,OAAO3yB,IAAQq3B,QAAU/5B,EAAMyN,OAAOf,OAI1EkwB,gBACJ,MAAM,UAAED,EAAS,MAAEzT,EAAK,iBAAE+T,GAAqB1+B,KAAKV,MAAM+W,OAC1D,MAAoB,kBAAhBqoB,EACIN,MAAAA,GAAAA,EAAWhsB,eACJgsB,EAAUhsB,eACVuY,GAAShd,EAAAA,gBAAgBC,YAAY+c,IAAUA,EAAM,GAAGxY,QACxDwY,EAAM,GAAGxY,QAAQC,eAErB,KAEJ,MAIf,qFC/LA,MAAMusB,EAA2B1C,IAA8D,IAAA2C,EAC3F,OACIx/B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKu0B,EAAkBE,uBACiB,QADIyC,EAC5C3C,EAAkBG,8BAAsB,IAAAwC,OAAA,EAAxCA,EAA0C99B,KAAKi6B,GAExC37B,EAAAA,cAAAA,EAAAA,SAAA,KACK27B,EAAKvkB,QACNpX,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKqzB,EAAKe,gCACVf,EAAK5S,KACN/oB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKqzB,EAAKgB,4BAA6BhB,EAAKpQ,aAyD7E,EAhD2DrrB,IACvD,MAAM,sBACF0+B,EAAqB,eACrBC,EAAc,iBACdC,EAAgB,MAChBtS,EAAK,KACLzD,EAAI,MACJwC,EAAK,MACLoS,EAAK,sBACLoB,EAAqB,UACrBC,EAAS,eACTpB,EAAc,kBACdf,GACA38B,EAEJ,OAAI8+B,EAEIh/B,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAKs2B,GACR5+B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GACGy2B,EAAqB,CACzBxf,KAAMyf,EACN19B,UAAWy9B,EAAwBA,EAAsBz9B,UAAY,GAAE,aAC3Ds8B,IAEZ59B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKu2B,GAAiBlB,IAE/B39B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKw2B,GACLtS,EACAzD,EACAwC,EACAsR,GAAqB0C,EAAwB1C,KAM1D78B,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAKs2B,GACR5+B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKu2B,GAAiBlB,GAC3B39B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKw2B,GACLtS,EACAzD,EACAwC,EACAsR,GAAqB0C,EAAwB1C,gRC1DvD,MAAM7N,EAA2D5c,IAAA,IAAC,sBACrE6c,EAAqB,QACrBC,EAAO,UACPC,EAAS,YACTC,EAAW,YACXC,EAAW,MACXC,EAAK,OACLC,EAAM,mBACNC,GACHpd,EAAA,OACGpS,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK2mB,GACLG,EACAF,EACAC,EACAE,EACAC,EACAC,EACAC,IAIIC,EAAsDjd,IAAA,IAAC,cAChEkd,EAAa,QACbtY,EAAO,MACPkY,EAAK,WACLK,EAAU,QACVC,EAAO,aACPC,GACHrd,EAAA,OACGxS,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKonB,GACLtY,EACAkY,EACAK,EACAC,EACAC,IAIIC,EAAsCzc,IAAA,IAAC,WAAE0c,EAAU,SAAEpuB,EAAQ,gBAAEquB,EAAe,WAAEC,GAAY5c,EAAA,OACrGrT,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKynB,GACLE,GACGjwB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK0nB,GACLC,EAAWvuB,KAAIwuB,GACZlwB,EAAAA,cAACA,EAAAA,SAAc,CAAC4B,IAAKsuB,EAAUtY,KAAKsY,UAAUC,QAASD,EAAUA,gBAOxEG,EAAwCC,IAAA,IAAC,YAAEC,EAAW,OAAEC,GAAQF,EAAA,OACzEtwB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKioB,GACLC,EAAO9uB,KAAI,CAAC+uB,EAAO1rB,IAChB/E,EAAAA,cAAC8vB,EAAiBznB,OAAAC,OAAA,CAAC1G,IAAKmD,GAAW0rB,QAKlCC,EAAwCC,IAAA,IAAC,YAAEC,EAAW,QAAExZ,EAAO,gBAAEyZ,EAAe,aAAEC,GAAcH,EAAA,OACzG3wB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKsoB,GACLxZ,EACAyZ,EACAC,IAIIC,EAA+CC,IAAA,IAAC,gBACzDC,EAAe,gBACfC,EAAe,OACfV,EAAM,iBACNW,EAAgB,qBAChBC,GACHJ,EAAA,OACGhxB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK2oB,GACLC,GAAmBlxB,EAAAA,cAACgvB,EAA2B3mB,OAAAC,OAAA,GAAK4oB,IACpDV,GAAUxwB,EAAAA,cAACqwB,EAAkBhoB,OAAAC,OAAA,GAAKkoB,IAClCY,EACAD,IAIIE,EAAoCC,IAAA,IAAC,UAAEC,EAAS,YAAEC,GAAaF,EAAA,OACxEtxB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKipB,GACLC,GAAeA,EAAY9vB,KAAI,CAAC+vB,EAAY1sB,IAAU/E,EAAAA,cAAC+wB,EAAqB1oB,OAAAC,OAAA,CAAC1G,IAAKmD,GAAW0sB,QAoCtG,EAhC2D0B,IAAA,IAAC,kBACxDC,EAAiB,OACjBC,EAAM,MACNC,EAAK,QACLC,EAAO,aACPC,EAAY,mBACZC,EAAkB,KAClBC,EAAI,MACJC,EAAK,WACLC,GACHT,EAAA,OACGnzB,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAK8qB,GACPC,GAAUrzB,EAAAA,cAAC0wB,EAAkBroB,OAAAC,OAAA,GAAK+qB,IAClCE,EACAD,GACGtzB,EAAAA,cAAAA,EAAAA,SAAA,KACKszB,EACAG,GAGRD,GACGxzB,EAAAA,cAACqrB,EAAAA,KAAI,CAAC/pB,UAAU,6CACXkyB,EACAC,GAGRC,GAAQ1zB,EAAAA,cAACqxB,EAAgBhpB,OAAAC,OAAA,GAAKorB,IAC9BC,EACAC,GAAcA,+EC5HvB,MAcM6L,EAAiBv/B,GAEfF,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAMw/B,aACXx/B,EAAMy/B,UACNz/B,EAAM0/B,IACN1/B,EAAM2/B,YAKnB,EAxBmE3/B,IAC/D,MAAM,QAAEkX,EAAO,eAAE0oB,EAAc,eAAEC,EAAc,YAAE5X,GAAgBjoB,EACjE,OACIF,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAK6f,GACP/Q,EACDpX,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKy3B,GACLD,EAAep+B,KAAIi6B,GACT8D,EAAc9D,mFCDzC,MA6CMqE,EAAmB9/B,GAEjBF,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAM+/B,WACZjgC,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAM0wB,aACX1wB,EAAMggC,OACNhgC,EAAMyR,KACNzR,EAAMigC,MAEXngC,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAMkgC,eACZpgC,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAMmgC,aACXngC,EAAMogC,YACNpgC,EAAMqgC,YAEXvgC,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAMsgC,eACXtgC,EAAMugC,aACNvgC,EAAMwgC,aACNxgC,EAAMygC,cAEX3gC,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAM0gC,eACX1gC,EAAM2gC,mBACN3gC,EAAM4gC,KACN5gC,EAAM6gC,QACN7gC,EAAM8gC,KACN9gC,EAAM+gC,UAOrBC,EAAoBA,CAAChhC,EAA8BioB,IAEjDnoB,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAKpI,EAAMu5B,MAAWtR,GACxBjoB,EAAMihC,YACPnhC,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAMw5B,WACZ15B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAMkhC,MACZphC,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAMmhC,UACXnhC,EAAMggC,OACNhgC,EAAMohC,aAEXthC,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAMmhC,UACXnhC,EAAMqhC,WACNrhC,EAAMshC,YAEXxhC,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAMmhC,UACXnhC,EAAMuhC,UACNvhC,EAAMwhC,WAEVxhC,EAAMyhC,iBACNzhC,EAAM2gB,QAGf7gB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAM0hC,aACX1hC,EAAM2hC,aACN3hC,EAAM4hC,eAMjBC,EAAoBA,CAAC7hC,EAAoCe,IAEvDjB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAMu5B,OACZz5B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAMihC,aAAclgC,EAAM+gC,SAAW9hC,EAAM+hC,gBAAkB/hC,EAAMmzB,QAC7ErzB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAMw5B,WACXz4B,EAAM+gC,SAAW9hC,EAAMgiC,uBAAyB,CAAChiC,EAAMiiC,cAAejiC,EAAMkiC,aAAcliC,EAAM2gB,QAErG7gB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKpI,EAAM0hC,aAAc3gC,EAAM+gC,SAAW9hC,EAAMmiC,gBAAkB,CAACniC,EAAM2hC,aAAc3hC,EAAM4hC,gBAK9G,EArHyD5hC,IACrD,MAAM,cACFoiC,EAAa,iBACbC,EAAgB,YAChBpa,EAAW,iBACXqa,EAAgB,2BAChBC,EAA0B,aAC1BC,EAAY,mBACZC,EAAkB,kBAClBC,EAAiB,iBACjBC,EAAgB,YAChBC,EAAW,YACXC,EAAW,YACXC,EAAW,eACXC,EAAc,MACdhiC,EAAK,WACLiiC,GACAhjC,EAEJ,OAAKgjC,GAAqC,IAAvBJ,EAAYniC,QAAiBM,EAAMkiC,gBAKlDnjC,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAK6f,GACPma,EACAS,EACD/iC,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKq6B,GACLM,EACAV,GAELviC,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKu6B,GACLK,GAAclD,EAAgBkD,GAC9BJ,EAAYphC,KAAI0hC,GACNpD,EAAgBoD,MAGP,IAAvBN,EAAYniC,QAAgBM,EAAMkiC,iBAAmBV,EACrDC,EACAxB,EAAkB8B,EAAa7a,GAC/B4Z,EAAkBa,EAAmB3hC,IApBnCjB,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAK6f,GAAcqa,iLClBlC,MAAMa,EAAaA,CAAC/hC,EAAmByN,IACnC/O,EAAAA,cAAA,OAAKsB,UAAWA,GAAYyN,GAS1Bu0B,EAAmBA,CAACC,EAA8BC,IACpDD,GAAwBvjC,EAAAA,cAAA,OAAKsB,UAAWkiC,GAAwBD,GAW9DE,EAA8BA,CACvC7+B,EACA8+B,EACAC,EACAC,KAEA,MAAM,8BAAEC,EAA6B,2BAAEC,EAA0B,0BAAEC,GAA8Bn/B,EAC3Fgd,EAAkBiiB,EAClBG,EAAsBF,EACtBG,EAAqBF,EAC3B,OACI/jC,EAAAA,cAAA,OAAKsB,UAAWsiC,GACXhiB,EACD5hB,EAAAA,cAAA,KAAGsB,UAAWqiC,EAAqBpkB,KAAMmkB,GACpCO,GAEJD,IAoFAE,EAAqBC,GACvBnkC,EAAAA,cAAA,OAAKsB,UAAU,+CAA+C6iC,GCrGzE,IAAqBC,EAArB,cAAmEpkC,EAAAA,UAC/DC,YAAmBC,GACfC,MAAMD,GAGHylB,sBAAsBC,GACzB,OAAIhlB,KAAKV,QAAU0lB,EAMhBzkB,SACH,OACInB,EAAAA,cAAA,OAAKsB,UAAU,qDACVV,KAAKyjC,kCAAkCC,qBACvC1jC,KAAKyjC,kCAAkCE,qBACvC3jC,KAAKyjC,kCAAkCG,sBAS5CH,kCACJ,MAAO,CACHC,qBAAsBjB,EAAWziC,KAAKV,MAAMukC,8BAA+B7jC,KAAKV,MAAMokC,sBACtFE,qBACIxkC,EAAAA,cAAA,OAAKsB,UAAU,mEACXtB,EAAAA,cAAA,SACI8R,KAAMlR,KAAKV,MAAMwkC,UACjB7jC,SAAUD,KAAKV,MAAMW,SAAQ,aACjBD,KAAKV,MAAM2S,UACvB9D,MAAOnO,KAAKV,MAAM6O,MAClB4C,KAAM/Q,KAAKV,MAAMyR,QAI7B4yB,qBACIvkC,EAAAA,cAAA,OAAKsB,UAAU,kEACTV,KAAKV,MAAMykC,2BAA2E,GAA9C/jC,KAAKV,MAAM0kC,qCA1CpDR,GAAqCn1B,EAAAA,EAAAA,IAAA,CADzDE,EAAAA,IACoBi1B,GA+CpB,UC5CD,IAAqBS,EAArB,cAAyD7kC,EAAAA,UACrDC,YAAmBC,GACfC,MAAMD,GAGHylB,sBAAsBC,GACzB,OAAIhlB,KAAKV,QAAU0lB,EAMhBzkB,SACH,OACInB,EAAAA,cAAA,OAAKsB,UAAWV,KAAKV,MAAMoB,WACtBV,KAAKkkC,wBAAwBxY,MAC7B1rB,KAAKkkC,wBAAwBjkB,MAC7BjgB,KAAKkkC,wBAAwBhiB,OASlCgiB,wBACJ,MAAO,CACHxY,MAAO+W,EAAWziC,KAAKV,MAAM6kC,0BAA2BnkC,KAAKV,MAAM8kC,kBACnEliB,MACI9iB,EAAAA,cAAA,OAAKsB,UAAU,wDACXtB,EAAAA,cAAA,SACIyB,IAAKb,KAAKV,MAAM+kC,eAChBnzB,KAAMlR,KAAKV,MAAMwkC,UACjB7jC,SAAUD,KAAKV,MAAMW,SAAQ,aACjBD,KAAKV,MAAM2S,UACvB9D,MAAOnO,KAAKV,MAAM6O,MAClB4C,KAAM/Q,KAAKV,MAAMyR,QAI7BkP,MACI7gB,EAAAA,cAAA,OAAKsB,UAAWV,KAAKV,MAAMglC,qBACtBtkC,KAAKV,MAAMilC,iBAAmBvkC,KAAKV,MAAMklC,YAAYxkC,KAAKV,MAAMyR,MAAQ,GACxE/Q,KAAKV,MAAMmlC,kBAAoBzkC,KAAKV,MAAMklC,YAAYxkC,KAAKV,MAAMyR,MAAQ,OA5CzEkzB,GAA2B51B,EAAAA,EAAAA,IAAA,CAD/CE,EAAAA,IACoB01B,GAiDpB,+kBCrCD,IAAKS,GAAL,SAAKA,GACDA,EAAA,cACAA,EAAA,0BAFJ,CAAKA,IAAAA,EAAuB,KAsC5B,MAAMC,UAAoBvlC,EAAAA,cAetBC,YAAmBC,GACfC,MAAMD,GAXH,KAAAslC,cAAwB,EAMvB,KAAAC,oBAA8B,EAE9B,KAAAC,0BAAqD,GAoLtD,KAAArI,iBAAoBh7B,IACvBzB,KAAKV,MAAM+W,OAAOG,QAAS2R,KAAO1mB,EAAMyN,OAAOf,OAO5C,KAAAuuB,sBAAyBj7B,IAC5B,MAAM,OAAE4U,GAAWrW,KAAKV,MACxB+W,EAAOsmB,UAAYl7B,EAAMyN,OAAOf,OAepB,KAAA42B,aAAe,KAC3B,MAAM,OAAE1uB,EAAM,QAAET,GAAY5V,KAAKV,OAC3B,cAAEuW,GAAkBD,GACpB,qBAAE8e,EAAoB,YAAEsQ,EAAW,MAAE5/B,GAAUpF,KAAKK,MACpD4kC,EAAmB7/B,GACnB,gCAAE8/B,GAAoC7uB,EACtC8uB,OAAsDjjC,IAApCgjC,EAAgDA,EAAkC,GAE1G,GADyBllC,KAAKolC,2BACjB,CAAC,IAADC,EACT,MAAMC,EAAqCzvB,EACrC0vB,EAA0E,QAA1DF,EAAG/yB,EAAAA,GAAoB,eAAgBgzB,UAAmB,IAAAD,EAAAA,EAAI,GACpF,GAAIE,EAAkB,CAClB,MAAMC,EAAU,IAAIC,IAAI/mB,OAAOjc,SAAS2gB,QAClCsiB,EAAc,IAAID,IAAIF,EAAkBC,GACxCG,EAAmBD,EAAYE,aAErCD,EAAiBE,IAAI,iBAAkBb,GACvCW,EAAiBE,IAAI,eAAgBV,GACrCQ,EAAiBE,IAAI,gBAAiBZ,GAElCt3B,EAAAA,gBAAgBC,YAAY8mB,IAC5BA,EAAqB5zB,KAAI,CAACi6B,EAAM52B,KAC5B,MAAM2hC,EAAaC,EAAAA,iBAAiBC,mBAAmBjL,EAAK9oB,WAEtD,GADA8oB,EAAK9oB,UAAUvL,QAAQ,IAAK,IAAIu/B,oBAEhCC,EAAcH,EAAAA,iBAAiBC,mBAAmBjL,EAAKmL,YAAgC,GAAlBnL,EAAKmL,WAGhF,OAFAP,EAAiBE,IAAI,QAAQ1hC,EAAQ,QAAS2hC,GAC9CH,EAAiBE,IAAI,QAAQ1hC,EAAQ,SAAU+hC,GACxCnL,KAIfrc,OAAOjc,SAASiF,OAAOg+B,EAAY33B,eAS/B,KAAA9N,SAAYwB,IAAoD,IAAA0kC,EAAAC,EAC5E,MAAM,qBAAE1R,GAAyB10B,KAAKK,OAChC,OAAEgW,GAAWrW,KAAKV,OAClB,gCAAE4lC,GAAoC7uB,EACtCtF,EAAOtP,EAAMyN,OAAO6B,MAAQ,GAC5B5C,EAAQ1M,EAAMyN,OAAOf,OAAS,GACpCnO,KAAK6kC,oBAAsBkB,EAAAA,iBAAiBC,mBAAmD,QAAjCG,EAACnmC,KAAKqmC,oBAAoB59B,eAAO,IAAA09B,OAAA,EAAhCA,EAAkCh4B,OACjGnO,KAAK4kC,cAAgBmB,EAAAA,iBAAiBC,mBAA6C,QAA3BI,EAACpmC,KAAKsmC,cAAc79B,eAAO,IAAA29B,OAAA,EAA1BA,EAA4Bj4B,OAExB,UAAzD+2B,MAAAA,OAA+B,EAA/BA,EAAiCe,uBACjCjmC,KAAK4kC,cAAe,GAGxB5kC,KAAKqB,SAAS,CAAEshC,qBAAsB,KACtC,MAAM4D,EAA2D,GACjE,IAAIC,GAAkC,EAClCC,GAA4C,EAEhD,IAAK,MAAM1L,KAAQrG,EAAsB,CACrC,MAAMoR,EAAoB/K,EAAK9oB,UAAUvL,QAAQ,IAAK,IAClDo/B,EAAUG,sBAAwBl1B,EAAKk1B,oBACvCM,EAAyB5iC,KAAK,CAC1B+iC,UAAW3L,EAAK2L,UAChBC,kBAAkB,EAClBT,WAAY/3B,EACZ8D,UAAW8oB,EAAK9oB,UAChB20B,4BAA6B7L,EAAK6L,8BAGtCL,EAAyB5iC,KAAK,CAC1B+iC,UAAW3L,EAAK2L,UAChBC,iBAAkB5L,EAAK4L,iBACvBT,WAAYnL,EAAKmL,WACjBj0B,UAAW8oB,EAAK9oB,UAChB20B,4BAA6B7L,EAAK6L,8BAGtCd,EAAUG,uBAAwBf,MAAAA,OAA+B,EAA/BA,EAAiCe,uBACnEQ,GAAmC,GAI3C,IAAK,MAAMjN,KAAS+M,EACZR,EAAAA,iBAAiBC,mBAAmBxM,EAAM0M,cAC1CM,GAAyB,GAMjC,GAFAxmC,KAAKqB,SAAS,CAAEqzB,qBAAsB6R,KAEjCE,EACD,OAAQ11B,EAAKk1B,qBACT,KAAKvB,EAAwBmC,YACzB7mC,KAAKqB,SAAS,CACV2jC,YAAa72B,EACb24B,kBAAkB,EAClBC,YAAY,IAEhB,MAEJ,KAAKrC,EAAwBt/B,MACzBpF,KAAKqB,SAAS,CACV+D,MAAO+I,EACP64B,cAAc,EACdC,mBAAmB,EACnBF,YAAY,IAEhB,MAEJ,QACI/mC,KAAKqB,SAAS,CAAE0lC,YAAY,IAMpC/mC,KAAK6kC,oBACL7kC,KAAK4kC,cACL4B,GACAxmC,KAAKK,MAAM6mC,qBACVlnC,KAAKK,MAAM8mC,6BAEZnnC,KAAKqB,SAAS,CAAE+lC,YAAY,IAE5BpnC,KAAKqB,SAAS,CAAE+lC,YAAY,KAwBnB,KAAAC,aAAgB3mC,IAC7B,MACIsD,WAAW,uCAAEsjC,EAAsC,oCAAEC,IACrDvnC,KAAKV,OAEH,aAAE0nC,EAAY,MAAE5hC,EAAK,kBAAE6hC,EAAiB,WAAEF,GAAe/mC,KAAKK,MAChE2mC,IACAhnC,KAAKwnC,qBAAuBD,IAG3BxB,EAAAA,iBAAiB0B,cAAcriC,IAAU6hC,IAC1CjnC,KAAK0nC,4BAA8BJ,GAGvC,MAAMK,EAAiBZ,EACjBa,EAAoBX,EACpBY,EAAoBnnC,EAAUulC,sBAAwBvB,EAAwBt/B,MACpF,OACIhG,EAAAA,cAAAA,EAAAA,SAAA,KACKuoC,GACGvoC,EAAAA,cAAA,QAAMsB,UAAW,GAAGA,WAAoBE,KAAK,SACxCZ,KAAKwnC,sBAGbI,GAAqBC,GAClBzoC,EAAAA,cAAA,QAAMsB,UAAW,GAAGA,WAAoBE,KAAK,SACxCZ,KAAK0nC,+BAYT,KAAAI,wBAA2BpnC,IACxC,MACIsD,WAAW,6CAAE+jC,EAA4C,oCAAER,IAC3DvnC,KAAKV,OAEH,iBAAEwnC,EAAgB,WAAEC,GAAe/mC,KAAKK,MAC9C,OACIjB,EAAAA,cAAAA,EAAAA,SAAA,KACK2nC,GACG3nC,EAAAA,cAAA,QAAMsB,UAAW,GAAGA,WAAoBE,KAAK,SACxC2mC,GAGRT,GACG1nC,EAAAA,cAAA,QAAMsB,UAAW,GAAGA,WAAoBE,KAAK,SACxCmnC,KAkCJ,KAAAC,wBAA0B,KACvC,MAAM,MAAE5iC,EAAK,aAAE4hC,EAAY,kBAAEC,GAAsBjnC,KAAKK,OAEpDgW,QAAQ,gCAAE6uB,GACVlhC,WAAW,sBAAEikC,EAAqB,0BAAEC,IACpCloC,KAAKV,MAET,OAAQ4lC,GACJ,IAAI,OACA,OACJ,IAAI,QACJ,QACI,OACI9lC,EAAAA,cAAC6kC,EAA2B,CACxBI,eAAgBrkC,KAAKsmC,cACrBr0B,UAAWi2B,EACXxnC,UAAU,yCACVojC,UAAU,OACV31B,MAAO/I,EACP2L,KAAM2zB,EAAwBt/B,MAC9Bg/B,iBAAkB6D,EAClB9D,0BAA0B,sDAC1BG,oBAAoB,4DACpBC,iBAAkByC,EAClBvC,kBAAmBwC,EACnBzC,YAAaxkC,KAAKqnC,aAClBpnC,SAAUD,KAAKC,aAUlB,KAAAkoC,2BAA6B,KAC1C,MAAM5B,EAA2D,GACjE,IAAK,MAAMxL,KAAQ/6B,KAAKK,MAAMq0B,qBAAsB,CAChD,MAAM0T,GAAyBrC,EAAAA,iBAAiBC,mBAAmBjL,EAAKmL,cH/f7Cn1B,EG+fmFgqB,EAAKmL,WH9f7G,IAAImC,OAAO,2BAA4B,KACxCC,KAAKv3B,IG8fVw1B,EAAyB5iC,KAAK,CAC1B+iC,UAAW3L,EAAK2L,UAChBC,iBAAkByB,EAClBlC,WAAYnL,EAAKmL,WACjBj0B,UAAW8oB,EAAK9oB,UAChB20B,4BAA6B7L,EAAK6L,8BHrgBX71B,IAAAA,EGwgB/B,OAAOw1B,GAOM,KAAAnB,yBAA2B,KACxC,MAAM,OAAE/uB,GAAWrW,KAAKV,OAClB,YAAE0lC,EAAW,MAAE5/B,GAAUpF,KAAKK,OAC9B,gCAAE6kC,GAAoC7uB,EAC5C,IAAIkwB,EAA2D,GAC3DgC,GAAU,EACVC,GAAY,EAEhB,GAAI76B,EAAAA,gBAAgBC,YAAY5N,KAAKK,MAAMq0B,sBAAuB,CAC9D6R,EAA2BvmC,KAAKmoC,6BAChC,IAAK,MAAMpN,KAAQwL,EACVxL,EAAK4L,mBACN6B,GAAY,GAIhBA,GACAxoC,KAAKqB,SAAS,CACVqzB,qBAAsB6R,EACtBa,YAAY,IAyCxB,OApCIrB,EAAAA,iBAAiBC,mBAAmBhB,GACpChlC,KAAKqB,SAAS,CACVylC,kBAAkB,EAClBC,YAAY,EACZK,YAAY,IAETpC,EAAY5lB,SAAW4lB,EAC9BhlC,KAAKqB,SAAS,CACVylC,kBAAkB,EAClBC,YAAY,EACZK,YAAY,IAGe,UAA/BlC,GACAa,EAAAA,iBAAiBC,mBAAmB5gC,GAEpCpF,KAAKqB,SAAS,CACV2lC,cAAc,EACdD,YAAY,EACZK,YAAY,IAEsB,UAA/BlC,GHrkBU9/B,CAAAA,GAClBqjC,EAAAA,WAAWlQ,aAAa+P,KAAKljC,GGokB0DsjC,CAAatjC,GAK5FojC,IAAcxoC,KAAKK,MAAM6mC,oBAAsBlnC,KAAKK,MAAM8mC,6BACjEnnC,KAAKqB,SAAS,CACV+lC,YAAY,KAGhBpnC,KAAKqB,SAAS,CACV+lC,YAAY,IAEhBmB,GAAU,GAZVvoC,KAAKqB,SAAS,CACV4lC,mBAAmB,EACnBG,YAAY,IAYbmB,GAxiBPvoC,KAAKqmC,oBAAsBjnC,EAAAA,YAC3BY,KAAKsmC,cAAgBlnC,EAAAA,YACrB,MAAM,OAAEiX,GAAWrW,KAAKV,OAClB,kCAAEqpC,GAAsCtyB,EACxCkwB,EAA2D,GAEjE,GAAIoC,EACA,IAAK,MAAM5N,KAAQ4N,EAAmC,CAAC,IAADC,EAAAC,EAAAC,EAClDvC,EAAyB5iC,KAAK,CAC1B+iC,UAAyB,QAAhBkC,EAAE7N,EAAK2L,iBAAS,IAAAkC,EAAAA,EAAI,GAC7BjC,kBAAkB,EAClBT,WAAY,GACZj0B,UAAyB,QAAhB42B,EAAE9N,EAAK9oB,iBAAS,IAAA42B,EAAAA,EAAI,GAC7BjC,4BAAmD,QAAxBkC,EAAE/N,EAAKgO,yBAAiB,IAAAD,EAAAA,EAAI,KAKnE9oC,KAAKK,MAAQ,CACT2kC,YAAa,GACb5/B,MAAO,GACP0hC,kBAAkB,EAClBE,cAAc,EACdC,mBAAmB,EACnBF,YAAY,EACZK,YAAY,EACZF,oBAAoB,EACpBC,8BAA8B,EAC9BxE,qBAAsB,GACtBjO,qBAAsB6R,GAIvBhmC,SAAM,IAAAq8B,EAAAoM,EACT,MACI3yB,QAAQ,UAAEsmB,EAAS,QAAEnmB,GAAS,UAC9BxS,EAAS,QACT4R,GACA5V,KAAKV,OAEH,8BACF2pC,EAA6B,uBAC7BC,EAAsB,yBACtBC,EAAwB,4BACxBC,EAA2B,gCAC3BC,EAA+B,2BAC/BC,EAA0B,uCAC1B/F,GACAv/B,GAEE,qBAAE2+B,EAAoB,WAAEyE,EAAU,YAAEpC,EAAW,iBAAE8B,GAAqB9mC,KAAKK,MAE3EkpC,EAAcxD,EAAAA,iBAAiB0B,cAAcjxB,MAAAA,OAAO,EAAPA,EAAS2R,MAAQ8gB,EAAgCzyB,MAAAA,OAAO,EAAPA,EAAS2R,KACvGqhB,EAAyB,QAAf5M,EAAGpmB,MAAAA,OAAO,EAAPA,EAAS6Q,WAAG,IAAAuV,EAAAA,EAAI,KAE7BvF,EAAkB,kBAClBoS,EAAgC,2BAEhCC,EAA2B,iCAC3BC,EAA+C,GAAGD,iCAClDE,EAAiC,GAAGF,YACpCG,EAA4B,GAAGD,wBAC/BE,EAAiC,GAAGF,8BACpCG,EAAwB,GAAGL,YAE3B1G,EAA0B,mCAC1BgH,EAAsB,GAAGhH,0BAEzBiH,EACF7qC,EAAAA,cAACkT,EAAAA,GAAa,CACV5R,UAb4B,oCAc5B2mB,IAAKmiB,EACLrhB,KAAMohB,EACNh3B,UAAW,CAAE6V,OAAQpoB,KAAKy8B,iBAAkB3qB,eAAgB9R,KAAKV,MAAMsW,QAAQkN,WAIjFqE,EAASzP,EAAAA,EAAA,GACR1X,KAAKV,OAAK,IACb4qC,YAAa,CACT3iB,YAAavnB,KAAKV,MAClBoB,UAAW22B,GAGf8S,qBAAsB,CAClBzpC,UAAW+oC,GAEfW,oCAAqC,CACjC1pC,UAAWipC,GAEfhN,UAAWA,GAAa38B,KAAKqqC,iBAAiB1N,GAC9CnmB,QAASyzB,EAETK,4BAA6BtqC,KAAKgoC,0BAClCuC,gBAAiB,CACb7pC,UAAWgpC,EACXriB,IAAK,OACL,aAAc8hB,EACdp4B,KAAM,kBACNnQ,KAAM,OACNoQ,aAAc,MACdC,SAAUjR,KAAK+kC,cAEnByF,iBACIprC,EAAAA,cAAC6kC,EAA2B,CACxBI,eAAgBrkC,KAAKqmC,oBACrBp0B,UAAWo3B,EACX3oC,UAAWkpC,EACX9F,UAAU,OACV31B,MAAO62B,EACPj0B,KAAM2zB,EAAwBmC,YAC9BzC,iBAAkBgF,EAClBjF,0BAA2B0F,EAC3BvF,oBAAqBwF,EACrBvF,kBAAkB,EAClBE,kBAAmBqC,EACnBtC,YAAaxkC,KAAK8nC,wBAClB7nC,SAAUD,KAAKC,WAIvBghC,aAAc,CACVvgC,UAAWqpC,EACX1iB,IAAK+F,EAAAA,OACL,aAAckc,EACdp4B,KAAM,SACNtQ,KAAM,SACNgrB,MAAOsd,EACPvoC,QAASX,KAAK+kC,aACd1X,SAAU+Z,GAGdqD,sBAAuBvB,EACvBtP,aAAc8I,EAAiBC,EArEA,kCAsE/B+H,oBACM1qC,KAAKK,MAAM6mC,oBAAsBlnC,KAAKK,MAAM8mC,+BAC9C7D,EAAkBC,GACtBoH,sBAAuB9H,EACnB7+B,EAC8B,QADrBglC,EACTpzB,EAAQkN,QAAQhN,KAAKgtB,iBAAS,IAAAkG,EAAAA,EAAI,GAClCgB,EACAhH,GAEJ/iC,SAAUD,KAAKC,SACf2qC,OAAQ5qC,KAAK+kC,aACbrQ,qBAAsB10B,KAAK6qC,4BAE/B,OAAO7qC,KAAKV,MAAMiqB,WAAWpC,GAG1B,0BAAuB,IAAA2jB,EAAAC,EAC1B,MAAM,OAAE10B,EAAM,QAAET,GAAY5V,KAAKV,OAC3B,cAAEuW,GAAkBD,GACpB,gCAAEsvB,EAA+B,kCAAEyD,GAAsCtyB,EAC/E,IAAI20B,GAA6C,EAC7CC,GAAmC,EAEvC,MAAMC,QAAkCC,EAAAA,2BAAAA,+BAA0D,CAAEh1B,cAAeN,IACnH7V,KAAK8kC,0BACoH,QAD3FgG,EACmE,QADnEC,EAC1BG,EAA0BjpC,MAAK84B,GAA0B,sCAAlBA,EAAKqQ,kBAAiD,IAAAL,OAAA,EAA7FA,EAA+FM,8BAAsB,IAAAP,EAAAA,EAAI,GAE7H,MACMQ,EAA2E3C,MAAAA,EAAAA,EAAqC,GAEtHsC,EH5LgCM,EACpCC,EACA1G,KAEA,IAAI2G,GAAwB,EAC5B,IAAK,MAAM1Q,KAAQ+J,EACf,GAAI/J,EAAKlhB,KAAKosB,sBAAwBuF,EAA2BvF,oBAE7D,OADAwF,GAAe,EACRA,EAGf,OAAOA,GGiLuBF,CAHWrG,MAAAA,EAAAA,EAAmC,GAGCllC,KAAK8kC,2BAC9EkG,EH/J0CU,EAC9CC,EACA7G,KAEA,IAAI8G,GAAkC,EAYtC,OAXIj+B,EAAAA,gBAAgBC,YAAY+9B,GAC5BA,EAAsC7qC,KAAIi6B,IAAO,IAAA8Q,EAC7C,MAAMC,EAAgC,QAAxBD,EAAW9Q,EAAK+Q,gBAAQ,IAAAD,EAAAA,EAAI,GAI1C,OAHKD,IACDA,EAnBgCG,EAAC59B,EAAe22B,KACpDA,EAA0BkH,MAAKjR,GAAQA,EAAKlhB,KAAKosB,sBAAwB93B,EAAM83B,sBAkBlD8F,CAAiCD,EAAUhH,IAEjE8G,KAGXA,GAAyB,EAEtBA,GG+IiCF,CAChCJ,EACAtrC,KAAK8kC,2BAET9kC,KAAKisC,oBAAoBhB,EAAyBD,GAyB/CiB,oBAAoBR,EAAuBG,GAC9C5rC,KAAKqB,SAAS,CAAE6lC,mBAAoBuE,EAActE,6BAA8ByE,IAuI5EvB,iBAAiBliB,GACrB,MAAM,QAAEvS,GAAY5V,KAAKV,OACnB,QAAEwjB,GAAYlN,EACpB,OAAKuS,EAID/oB,EAAAA,cAACkT,EAAAA,GAA0B,CACvB6V,KAAMA,EACNznB,UAAU,iCACV6R,UAAW,CAAE6V,OAAQpoB,KAAK08B,sBAAuB5qB,eAAgBgR,KAN9D,KA4EP+nB,0BACJ,MAAM,qBAAEnW,GAAyB10B,KAAKK,MAChC6rC,EAAuC,GAC7C,IAAK,MAAMnR,KAAQrG,EAAsB,CACrC,MAAM3jB,EAAegqB,EAAK9oB,UAAUvL,QAAQ,IAAK,IACjDwlC,EAAsBvoC,KAClBvE,EAAAA,cAACokC,EAAqC,CAClC9iC,UAAWqQ,EAAKk1B,oBAChBh0B,UAAW8oB,EAAK9oB,UAChB6xB,UAAU,OACV31B,MAAO4sB,EAAKmL,WACZn1B,KAAMA,EAAKk1B,oBACXvC,qBAAsB3I,EAAK2L,UAC3B7C,8BAA8B,2DAC9BE,2BAA4BhJ,EAAK4L,iBACjC3C,iCAAkCjJ,EAAK6L,4BACvC3mC,SAAUD,KAAKC,YAI3B,OAAOisC,GA8Hf,2HCzoBO,MAAMC,EAA4D7sC,IAAQ,IAAA8sC,EAAAC,EAC7E,MAAM,YACFnC,EAAW,qBACXC,EAAoB,oCACpBC,EAAmC,QACnC5zB,EAAO,UACPmmB,EAAS,gBACT4N,EAAe,4BACfD,EAA2B,iBAC3BE,EAAgB,aAChB5Q,EAAY,aACZqH,EAAY,qBACZvM,EAAoB,sBACpBiW,EAAqB,kBACrBD,GACAprC,EACJ,OACIF,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAKwiC,GACR9qC,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKyiC,GACL3zB,EACAmmB,EACDv9B,EAAAA,cAACqrB,EAAAA,KAAI,CAAC/pB,UAAqC,QAA5B0rC,EAAE7B,MAAAA,OAAe,EAAfA,EAAiB7pC,iBAAS,IAAA0rC,EAAAA,EAAI,IAC1C5B,EACAF,EACA38B,EAAAA,gBAAgBC,YAAY8mB,IACzBt1B,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK0iC,GACL1V,EAAqB5zB,KAAKi6B,GACvB37B,EAAAA,cAACA,EAAAA,SAAc,CAAC4B,IAAI,IAAI+5B,MAInC2P,EACDtrC,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKu5B,EAAY,CAAEvgC,UAAkC,QAAzB2rC,EAAEpL,MAAAA,OAAY,EAAZA,EAAcvgC,iBAAS,IAAA2rC,EAAAA,EAAI,KACzD/sC,EAAMmrC,uBAEV7Q,GAEJ+Q,KAMjB,+FCzCA,MAqCA,EArC4HrrC,IAAQ,IAAAgtC,EAChI,MAAM,kBAAEC,EAAiB,QAAE/1B,EAAO,MAAEuc,GAAUzzB,GACxC,4BAAEktC,GAAgCltC,EAAM0E,UAG9C,OAFqB,KAEkB,QAAnCsoC,EAAAhtC,EAAM0X,KAAKy1B,kBAAkBv1B,cAAM,IAAAo1B,OAAA,EAAnCA,EAAqCvsC,QAEjCX,IAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAK6kC,GACP/1B,EACDpX,IAAAA,cAACqrB,EAAAA,KAAI,CAAC/pB,UAAU,IACZtB,IAAAA,cAAA,OAAKsB,UAAU,uCACXtB,IAAAA,cAAA,MAAIsB,UAAU,+CAA+CpB,EAAM0E,UAAU0oC,8BAC7EttC,IAAAA,cAAA,KAAGsB,UAAU,4CAA4CpB,EAAM0E,UAAU2oC,2BACzEvtC,IAAAA,cAACqrB,EAAAA,KAAI,CAAC/pB,UAAU,oDACZtB,IAAAA,cAACguB,EAAAA,OAAM,CACHxsB,KAAK,SACLgrB,MAAO4gB,EAA2B,aACtBA,EACZ9rC,UAAU,0DACVie,MAAMiuB,EAAAA,EAAAA,IAAW,OAAQttC,EAAMsW,QAAQC,gBAEtC22B,OASzBptC,IAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAK6kC,GACP/1B,EACAuc,gHCtCN,MAAM8Z,EAAwDr7B,IAAA,IAAC,UAClEs7B,EAAS,MACTphB,EAAK,iBACLqhB,EAAgB,YAChBC,EAAW,aACXC,EAAY,mBACZC,GACH17B,EAAA,OACGpS,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKolC,GACN1tC,EAAAA,cAAAA,EAAAA,SAAA,KACKssB,EACAwhB,EACAH,EACAC,EACAC,KAKAE,EAAkDv7B,IAAA,IAAC,UAC5Dk7B,EAAS,WACTM,EAAU,YACVC,EAAW,iBACXN,EAAgB,aAChBO,EAAY,sBACZt3B,EAAqB,cACrBu3B,EAAa,cACbC,EAAa,MACb9a,EAAK,eACL+a,EAAc,YACdT,EAAW,aACXC,GACHr7B,EAAA,OACGxS,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKolC,GACN1tC,EAAAA,cAAAA,EAAAA,SAAA,KACKkuC,EACAt3B,EACAu3B,EACAC,EACAC,EACAL,EACA1a,EACA2a,EACAN,EACAC,EACAC,KAgBb,EAXwF3tC,IACpF,MAAM,wBAAEouC,EAAuB,iBAAEC,EAAgB,YAAEC,EAAW,SAAEC,EAAQ,YAAEC,EAAW,MAAEpb,GAAUpzB,EACjG,OACIF,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAKgmC,EAAuB,CAAE7sC,IAAK8sC,IACrCjb,EACAob,EAAYC,SAAWH,GAAexuC,EAAAA,cAACytC,EAAWplC,OAAAC,OAAA,GAAKkmC,KACtDE,EAAYC,SAAWF,GAAYzuC,EAAAA,cAAC+tC,EAAQ1lC,OAAAC,OAAA,GAAKmmC,gRClDxD,MAAMzf,EAA2D5c,IAAA,IAAC,sBACrE6c,EAAqB,QACrBC,EAAO,UACPC,EAAS,YACTC,EAAW,YACXC,EAAW,MACXC,EAAK,OACLC,EAAM,mBACNC,GACHpd,EAAA,OACGpS,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK2mB,GACLG,EACAF,EACAC,EACAE,EACAC,EACAC,EACAC,IAIIC,EAAsDjd,IAAA,IAAC,cAChEkd,EAAa,QACbtY,EAAO,MACPkY,EAAK,WACLK,EAAU,QACVC,EAAO,aACPC,GACHrd,EAAA,OACGxS,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKonB,GACLtY,EACAkY,EACAK,EACAC,EACAC,IAIIC,EAAsCzc,IAAA,IAAC,WAAE0c,EAAU,SAAEpuB,EAAQ,gBAAEquB,EAAe,WAAEC,GAAY5c,EAAA,OACrGrT,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKynB,GACLE,GACGjwB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK0nB,GACLC,EAAWvuB,KAAIwuB,GACZlwB,EAAAA,cAACA,EAAAA,SAAc,CAAC4B,IAAKsuB,EAAUtY,KAAKsY,UAAUC,QAASD,EAAUA,gBAOxEG,EAAwCC,IAAA,IAAC,YAAEC,EAAW,OAAEC,GAAQF,EAAA,OACzEtwB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKioB,GACLC,EAAO9uB,KAAI,CAAC+uB,EAAO1rB,IAChB/E,EAAAA,cAAC8vB,EAAiBznB,OAAAC,OAAA,CAAC1G,IAAKmD,GAAW0rB,QAKlCC,EAAwCC,IAAA,IAAC,YAAEC,EAAW,QAAExZ,EAAO,gBAAEyZ,EAAe,aAAEC,GAAcH,EAAA,OACzG3wB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKsoB,GACLxZ,EACAyZ,EACAC,IAIIC,EAA+CC,IAAA,IAAC,gBACzDC,EAAe,gBACfC,EAAe,OACfV,EAAM,iBACNW,EAAgB,qBAChBC,GACHJ,EAAA,OACGhxB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAK2oB,GACLC,GAAmBlxB,EAAAA,cAACgvB,EAA2B3mB,OAAAC,OAAA,GAAK4oB,IACpDV,GAAUxwB,EAAAA,cAACqwB,EAAkBhoB,OAAAC,OAAA,GAAKkoB,IAClCY,EACAD,IAIIE,EAAoCC,IAAA,IAAC,UAAEC,EAAS,YAAEC,GAAaF,EAAA,OACxEtxB,EAAAA,cAACqrB,EAAAA,KAAIhjB,OAAAC,OAAA,GAAKipB,GACLC,GAAeA,EAAY9vB,KAAI,CAAC+vB,EAAY1sB,IAAU/E,EAAAA,cAAC+wB,EAAqB1oB,OAAAC,OAAA,CAAC1G,IAAKmD,GAAW0sB,QAoCtG,EAhC2D0B,IAAA,IAAC,kBACxDC,EAAiB,OACjBC,EAAM,MACNC,EAAK,QACLC,EAAO,aACPC,EAAY,mBACZC,EAAkB,KAClBC,EAAI,MACJC,EAAK,WACLC,GACHT,EAAA,OACGnzB,EAAAA,cAACorB,EAAAA,OAAM/iB,OAAAC,OAAA,GAAK8qB,GACPC,GAAUrzB,EAAAA,cAAC0wB,EAAkBroB,OAAAC,OAAA,GAAK+qB,IAClCE,EACAD,GACGtzB,EAAAA,cAAAA,EAAAA,SAAA,KACKszB,EACAG,GAGRD,GACGxzB,EAAAA,cAACqrB,EAAAA,KAAI,CAAC/pB,UAAU,6CACXkyB,EACAC,GAGRC,GAAQ1zB,EAAAA,cAACqxB,EAAgBhpB,OAAAC,OAAA,GAAKorB,IAC9BC,EACAC,GAAcA","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/cz-store-selector/components/pickup-option-list.tsx?b553","webpack://Msdyn365.Commerce.Online/./src/modules/cz-store-selector/components/store-pickup-option-list.tsx?02d3","webpack://Msdyn365.Commerce.Online/./src/modules/cz-store-selector/components/cz-store-selector-location-line-item/cz-store-selector-location-line-item.components.tsx?687f","webpack://Msdyn365.Commerce.Online/./src/modules/cz-store-selector/components/cz-store-selector-location-lines.tsx?d221","webpack://Msdyn365.Commerce.Online/./src/modules/cz-store-selector/components/cz-store-selector-search-form.tsx?30aa","webpack://Msdyn365.Commerce.Online/./src/modules/cz-store-selector/components/cz-store-selector-small-components.tsx?12c5","webpack://Msdyn365.Commerce.Online/./src/modules/cz-store-selector/components/cz-store-selector-location-line-item/date-time-helpers.ts?a843","webpack://Msdyn365.Commerce.Online/./src/modules/cz-store-selector/cz-store-selector.props.autogenerated.ts?24d6","webpack://Msdyn365.Commerce.Online/./src/modules/cz-store-selector/cz-store-selector.tsx?9bce","webpack://Msdyn365.Commerce.Online/./src/modules/cz-store-selector/cz-store-selector.view.tsx?f89f","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/account-generic-tile.view.tsx?6b6c","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/breadcrumb.view.tsx?aba9","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/components/aaa_carticon.component.tsx?6ad9","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/components/carticon.component.tsx?fd9c","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/components/promocode.component.tsx?e3df","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/order-history.view.tsx?6480","webpack://Msdyn365.Commerce.Online/./src/themes/pallionlivadi/views/order-template-list.view.tsx?d0bf","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty-tile/components/account-loyalty-tile-links.tsx?6c7f","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty-tile/account-loyalty-tile.tsx?7f29","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty-tile/account-loyalty-tile.view.tsx?3547","webpack://Msdyn365.Commerce.Online/./src/modules/account-loyalty-tile/components/account-loyalty-tile-description.tsx?c7bb","webpack://Msdyn365.Commerce.Online/./src/modules/account-order-templates-tile/components/account-order-templates-tile-description.tsx?a8c4","webpack://Msdyn365.Commerce.Online/./src/modules/account-order-templates-tile/components/account-order-templates-tile-links.tsx?0bcf","webpack://Msdyn365.Commerce.Online/./src/modules/account-order-templates-tile/account-order-templates-tile.tsx?4e7d","webpack://Msdyn365.Commerce.Online/./src/modules/account-order-templates-tile/account-order-templates-tile.view.tsx?a1f9","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-button.tsx?a869","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-error.tsx?fbfd","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-input.tsx?20d9","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-label.tsx?6ef1","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-loading-icon.tsx?8828","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/components/password-reset-loading-message.tsx?a980","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/password-reset.tsx?0983","webpack://Msdyn365.Commerce.Online/./src/modules/password-reset/password-reset.view.tsx?b341","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/components/additional-content.tsx?d5f9","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/components/links.tsx?abbf","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/content-block.tsx?3084","webpack://Msdyn365.Commerce.Online/./src/modules/content-block/content-block.view.tsx?1773","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/order-history.view.tsx?a21d","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/ratings-histogram.view.tsx?6e01","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/reviews-list.view.tsx?cd2e","webpack://Msdyn365.Commerce.Online/./src/modules/order-lookup/utilities/order-lookup-utility.tsx?c60b","webpack://Msdyn365.Commerce.Online/./src/modules/order-lookup/components/order-lookup-additional-fields.tsx?9951","webpack://Msdyn365.Commerce.Online/./src/modules/order-lookup/components/order-lookup-fields.tsx?297b","webpack://Msdyn365.Commerce.Online/./src/modules/order-lookup/order-lookup.tsx?72d3","webpack://Msdyn365.Commerce.Online/./src/modules/order-lookup/order-lookup.view.tsx?b8e5","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/b2b-requests-status.view.tsx?de3b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/checkout-customer-account-payment.view.tsx?0efc","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-history.view.tsx?692d"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\n\r\nexport interface IPickUpOptionListProps {\r\n pickupListOptionMenuText: string;\r\n pickupmodeList?: DeliveryOption[];\r\n onChange(deliveryCode: string): Promise;\r\n}\r\n\r\nexport interface IPickOptionListState {\r\n expandSiteOptions: boolean;\r\n}\r\n\r\n/**\r\n * Simple Pickup option dropdown with Button to get menu option.\r\n */\r\nexport class PickUpOptionList extends React.PureComponent {\r\n private readonly _pickupListOptionMenu: React.RefObject;\r\n\r\n constructor(props: IPickUpOptionListProps) {\r\n super(props);\r\n this._rendeDeliveryOptions = this._rendeDeliveryOptions.bind(this);\r\n this._pickupListOptionMenu = React.createRef();\r\n this.state = {\r\n expandSiteOptions: false\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\r\n\r\n return (\r\n
\r\n \r\n {this.state.expandSiteOptions ? (\r\n
    \r\n {pickupmodeList?.map((delivery: DeliveryOption) => {\r\n return (\r\n
  • \r\n \r\n \r\n {delivery.Description}\r\n \r\n \r\n
  • \r\n );\r\n })}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n private _rendeDeliveryOptions(): void {\r\n const expandSiteOptionsState = this.state.expandSiteOptions;\r\n this.setState({\r\n expandSiteOptions: !expandSiteOptionsState\r\n });\r\n }\r\n\r\n private readonly _onSelect = async (e: React.MouseEvent): Promise => {\r\n e.preventDefault();\r\n const deliveryCode = e.currentTarget.getAttribute('data-value');\r\n if (deliveryCode && deliveryCode.length > 0) {\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Store Pickup option list interface.\r\n */\r\nexport interface IStorePickUpOptionListProps {\r\n productPickupListOptionMenuText?: string;\r\n productPickupModeList?: DeliveryOption[];\r\n onChange(deliveryCode: string): Promise;\r\n}\r\n\r\n/**\r\n * Store Pickup option state interface.\r\n */\r\nexport interface IStorePickOptionListState {\r\n isFilterExpanded: boolean;\r\n selectedPickupMode?: string;\r\n}\r\n\r\n/**\r\n * Simple Pickup option dropdown with Button to get menu option.\r\n */\r\nexport class StorePickUpOptionList extends React.PureComponent {\r\n private readonly _storePickupListOptionMenu: React.RefObject;\r\n\r\n public constructor(props: IStorePickUpOptionListProps) {\r\n super(props);\r\n this._storePickupListOptionMenu = React.createRef();\r\n this.state = {\r\n isFilterExpanded: false,\r\n selectedPickupMode: ''\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n const { productPickupListOptionMenuText, productPickupModeList } = this.props;\r\n const selectedPickupModeDesc = productPickupModeList?.find(\r\n (delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode\r\n )?.Description;\r\n return (\r\n
\r\n \r\n {this.state.isFilterExpanded ? (\r\n
    \r\n {productPickupModeList?.map((delivery: DeliveryOption) => {\r\n return (\r\n \r\n \r\n \r\n {delivery.Description}\r\n \r\n \r\n \r\n );\r\n })}\r\n
\r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Method to call when drop dwon get selected.\r\n */\r\n private readonly _rendeDeliveryOptions = () => {\r\n const isExpandOptionsState = this.state.isFilterExpanded;\r\n this.setState({\r\n isFilterExpanded: !isExpandOptionsState\r\n });\r\n };\r\n\r\n /**\r\n * Method to call on select pickup mode.\r\n * @param event - Mouse event.\r\n * @returns Void.\r\n */\r\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode !== null) {\r\n this.setState({\r\n selectedPickupMode: deliveryCode\r\n });\r\n\r\n this._rendeDeliveryOptions();\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n\r\n /**\r\n * Method to call on select pickup mode.\r\n * @param event - Mouse event.\r\n * @returns Void.\r\n */\r\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\r\n event.preventDefault();\r\n const deliveryCode = event.currentTarget.getAttribute('data-value');\r\n if (deliveryCode !== null) {\r\n this.setState({\r\n selectedPickupMode: deliveryCode\r\n });\r\n\r\n this._rendeDeliveryOptions();\r\n await this.props.onChange(deliveryCode);\r\n }\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IPayLoad,\r\n ITelemetryContent,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { PickUpOptionList } from '../pickup-option-list';\r\n//import { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\r\n\r\n/**\r\n * Store Locator line item resources.\r\n */\r\nexport interface IStoreSelectorLocationLineItemResources {\r\n contactInfoHeader: string;\r\n storeHoursHeader: string;\r\n availabilityInfoHeader: string;\r\n\r\n closedText: string;\r\n\r\n outOfStock: string;\r\n inStock: string;\r\n\r\n currentLocation: string;\r\n selectLocation: string;\r\n selectLocationAriaLabelFormat: string;\r\n setAsPreferredStoreText: string;\r\n setAsPreferredStoreTextAriaLabel: string;\r\n preferredStoreText: string;\r\n preferredStoreAriaLabel: string;\r\n\r\n days: {\r\n monday: string;\r\n tuesday: string;\r\n wednesday: string;\r\n thursday: string;\r\n friday: string;\r\n saturday: string;\r\n sunday: string;\r\n mondayFull: string;\r\n tuesdayFull: string;\r\n wednesdayFull: string;\r\n thursdayFull: string;\r\n fridayFull: string;\r\n saturdayFull: string;\r\n sundayFull: string;\r\n };\r\n}\r\n\r\n/**\r\n * Store Locator line item props.\r\n */\r\nexport interface IStoreSelectorLocationLineItemProps {\r\n location: OrgUnitLocation;\r\n storeHours?: StoreHours;\r\n\r\n hideStockStatus?: boolean;\r\n isInStock?: boolean;\r\n isCurrentLocation?: boolean;\r\n\r\n resources: IStoreSelectorLocationLineItemResources;\r\n stockStatusLabel?: string;\r\n storeLocatorView?: boolean;\r\n isPreferredStoreEnabled?: boolean;\r\n index: string;\r\n preferredStoreLocationId: string | null;\r\n storePickUpOptionList?: DeliveryOption[];\r\n productPickUpOptionList?: DeliveryOption[];\r\n filteredPickupMode?: string;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n preferredDistanceUnit: string;\r\n isLocationDisabled?: boolean;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n onSetAsPreferredStore(locationId: string | undefined): void;\r\n onRemovePreferredStore(): void;\r\n };\r\n}\r\n\r\n/**\r\n * Store Locator line item action component.\r\n */\r\nconst StoreSelectorLocationLineItemComponentActions = {\r\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\r\n props.handlers.onSelected(props.location, deliveryMode);\r\n },\r\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\r\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\r\n },\r\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\r\n props.handlers.onRemovePreferredStore();\r\n }\r\n};\r\n\r\n/**\r\n * Function to render store hours.\r\n * @param storeHours - Store Hours object.\r\n * @param location - Store Unit.\r\n * @param resources - Resources.\r\n * @returns - Jsx element.\r\n *\r\nconst renderStoreHours = (\r\n storeHours: StoreHours | undefined,\r\n location: OrgUnitLocation,\r\n resources: IStoreSelectorLocationLineItemResources\r\n): JSX.Element | null => {\r\n // First, use the store hours. This will allow listing day by day houts\r\n if (storeHours && storeHours.RegularStoreHours) {\r\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\r\n\r\n return (\r\n
\r\n {storeHoursList.map(displayTime => (\r\n
\r\n {displayTime.endDayShort ? (\r\n
\r\n {displayTime.startDayShort}–\r\n {displayTime.endDayShort}\r\n
\r\n ) : (\r\n
\r\n {displayTime.startDayShort}\r\n
\r\n )}\r\n
{displayTime.timeRange}
\r\n
\r\n ))}\r\n
\r\n );\r\n }\r\n\r\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\r\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\r\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\r\n\r\n return (\r\n
\r\n {storeOpenFrom}-{storeOpenTo}\r\n
\r\n );\r\n};\r\n\r\n*/\r\n\r\n/**\r\n * Function to retrun distance measure unit.\r\n * @param distance - Store location within radius.\r\n * @param preferredDistanceUnit - Unit configuration.\r\n * @param isLocationDisabled - Flag to check user location.\r\n * @returns - Unit of distance.\r\n */\r\nconst buildDistanceString = (\r\n distance: number | undefined,\r\n preferredDistanceUnit: string,\r\n isLocationDisabled?: boolean\r\n): string | undefined => {\r\n if (distance === undefined || isLocationDisabled) {\r\n return undefined;\r\n } else if (distance < 1) {\r\n return `(<1 ${preferredDistanceUnit})`;\r\n }\r\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\r\n};\r\n\r\n/**\r\n * Function to store contact.\r\n * @param contacts - Store location within radius.\r\n * @returns - Return primary contact number of store.\r\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\r\n if (!contacts) {\r\n return undefined;\r\n }\r\n\r\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\r\n\r\n if (allPhoneContacts && allPhoneContacts.length > 0) {\r\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\r\n\r\n if (primaryPhoneContact) {\r\n return primaryPhoneContact.Locator;\r\n }\r\n\r\n return allPhoneContacts[0].Locator;\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\n*/\r\n\r\n/**\r\n * Function to store Email.\r\n * @param contacts - Store location within radius.\r\n * @returns - Return primary contact number of store.\r\n */\r\nconst extractEmail = (contacts: OrgUnitContact[] | undefined): string | undefined => {\r\n if (!contacts) {\r\n return undefined;\r\n }\r\n\r\n const allEmailContacts = contacts.filter(contact => contact.ContactTypeValue === 2 && !contact.IsPrivate);\r\n\r\n if (allEmailContacts && allEmailContacts.length > 0) {\r\n const primaryEmailContact = allEmailContacts.find(contact => contact.IsPrimary);\r\n\r\n if (primaryEmailContact) {\r\n return primaryEmailContact.Locator;\r\n }\r\n\r\n return allEmailContacts[0].Locator;\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\n/**\r\n * On Store locator click functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onPickupInStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\r\n StoreSelectorLocationLineItemComponentActions.onLocationSelected(props);\r\n};\r\n\r\n/**\r\n * On Store locator click functionality.\r\n * @param props -Store locator location items.\r\n * @param pickupMode -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\r\n StoreSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\r\n};\r\n\r\n/**\r\n * Set Preferred store functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onSetPreferredStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\r\n StoreSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\r\n};\r\n\r\n/**\r\n * Remove preferred store functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst removePreferredStoreHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\r\n StoreSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\r\n};\r\n\r\n/**\r\n * On Change functionality.\r\n * @param props -Store locator location items.\r\n * @returns Store locator selected location line item action.\r\n */\r\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\r\n StoreSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\r\n return Promise.resolve();\r\n};\r\n\r\n/**\r\n * Method to render pickup modes.\r\n * @param props - StoreSelector Line item props.\r\n * @param deliveryOptionList - Product DeliveryOption List.\r\n * @param pickupInStoreButtonText - Pickup store button text.\r\n * @param pickupInStoreAriaLabel - Pickup store aria label.\r\n * @returns Jsx component.\r\n */\r\nconst renderPickupModes = (\r\n props: IStoreSelectorLocationLineItemProps,\r\n deliveryOptionList: DeliveryOption[],\r\n pickupInStoreButtonText: string,\r\n pickupInStoreAriaLabel: string\r\n): JSX.Element | null => {\r\n if (props.filteredPickupMode === undefined) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n {pickupInStoreButtonText}\r\n \r\n );\r\n};\r\n\r\nconst StoreSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\r\n const {\r\n hideStockStatus,\r\n isCurrentLocation,\r\n isInStock,\r\n location,\r\n resources,\r\n // storeHours,\r\n stockStatusLabel,\r\n storeLocatorView,\r\n index,\r\n preferredStoreLocationId,\r\n isPreferredStoreEnabled,\r\n isLocationDisabled,\r\n telemetryContent,\r\n storePickUpOptionList,\r\n productPickUpOptionList\r\n } = props;\r\n\r\n const storeName: string | undefined = location.OrgUnitName;\r\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\r\n const storeAddress: string | undefined = location.Address;\r\n // const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\r\n const email: string | undefined = extractEmail(location.Contacts);\r\n\r\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\r\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\r\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\r\n const canSelectLocation = hideStockStatus || isInStock;\r\n const pickupInStoreButtonText: string = resources.selectLocation;\r\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\r\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\r\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\r\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\r\n const preferredStoreAttr = getTelemetryAttributes(telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\r\n const RemovePreferredStoreAttr = getTelemetryAttributes(telemetryContent!, payLoad);\r\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\r\n\r\n return (\r\n
\r\n
\r\n {storeLocatorView && {index}}\r\n \r\n {index}. {storeName}\r\n \r\n {distanceAsString ? {distanceAsString} : false}\r\n
\r\n
\r\n {isPreferredStoreEnabled ? (\r\n isPreferredStore ? (\r\n \r\n {resources.preferredStoreText}\r\n \r\n ) : (\r\n \r\n {resources.setAsPreferredStoreText}\r\n \r\n )\r\n ) : null}\r\n\r\n
\r\n {/**

{resources.contactInfoHeader}

*/}\r\n {storeAddress && (\r\n
\r\n \r\n {storeAddress}\r\n
\r\n )}\r\n {/** {phoneNumber && (\r\n
\r\n \r\n {phoneNumber}\r\n
\r\n )}\r\n */}\r\n {email && (\r\n
\r\n \r\n {email}\r\n
\r\n )}\r\n
\r\n\r\n {/*\r\n
\r\n

{resources.storeHoursHeader}

\r\n {renderStoreHours(storeHours, location, resources)}\r\n
\r\n */}\r\n\r\n {!storeLocatorView && (\r\n
\r\n

{resources.availabilityInfoHeader}

\r\n {stockText &&

{stockText}

}\r\n {isCurrentLocation ? (\r\n

{resources.currentLocation}

\r\n ) : canSelectLocation ? (\r\n deliveryOptionList.length === 0 ? (\r\n \r\n {pickupInStoreButtonText}\r\n \r\n ) : (\r\n renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel)\r\n )\r\n ) : (\r\n false\r\n )}\r\n
\r\n )}\r\n {/*\r\n {isPreferredStoreEnabled ? (\r\n isPreferredStore ? (\r\n \r\n {resources.preferredStoreText}\r\n \r\n ) : (\r\n \r\n {resources.setAsPreferredStoreText}\r\n \r\n )\r\n ) : null}\r\n */}\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Method to check if we have atleast one common delivery code between product and channel.\r\n * @param productdeliveryOptions - Product DeliveryOption List.\r\n * @param storePickUpOptionList - Channel DeliveryOption List.\r\n * @returns DeliveryOptionList.\r\n */\r\nconst matchDeliveryOptions = (\r\n productdeliveryOptions: DeliveryOption[] | undefined,\r\n storePickUpOptionList: DeliveryOption[] | undefined\r\n): DeliveryOption[] => {\r\n const deliveryOption: DeliveryOption[] = [];\r\n productdeliveryOptions?.map(delivery => {\r\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\r\n if (pickup) {\r\n deliveryOption.push(pickup);\r\n }\r\n });\r\n\r\n return deliveryOption;\r\n};\r\n\r\nexport const StoreSelectorLocationLineItemComponent = StoreSelectorLocationLineItem as (\r\n props: IStoreSelectorLocationLineItemProps\r\n) => JSX.Element;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { observable } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ICzStoreSelectorResources } from '../cz-store-selector.props.autogenerated';\r\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './cz-store-selector-location-line-item';\r\n\r\nexport interface IStoreSelectorLocationLinesProps {\r\n locations?: IFullOrgUnitAvailability[];\r\n resources: ICzStoreSelectorResources;\r\n preferredDistanceUnit?: string;\r\n\r\n alreadySelectedLocation?: OrgUnitLocation;\r\n outOfStockThreshold: number;\r\n enableOutOfStockCheck: boolean;\r\n storeLocatorView?: boolean;\r\n selectedStoreLocationId?: string;\r\n isPreferredStoreEnabled?: boolean;\r\n displayList?: boolean;\r\n isLocationDisabled?: boolean;\r\n productPickUpDeliveryOptions?: DeliveryOption[];\r\n onClick: (locationId: string | undefined) => void;\r\n preferredStoreLocationId: string | null;\r\n onSetAsPreferredStore: (locationId: string | undefined) => void;\r\n onRemovePreferredStore: () => void;\r\n filteredPickupMode?: string;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onLocationSelected(location: OrgUnitLocation | undefined): void;\r\n}\r\n\r\n/**\r\n * Displays all the location line items, or null if none exists.\r\n */\r\n@observer\r\nexport class StoreSelectorLocationLines extends React.PureComponent {\r\n private readonly selectedLocationRef: React.RefObject;\r\n\r\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\r\n\r\n private storeCounter: number;\r\n\r\n public constructor(props: IStoreSelectorLocationLinesProps) {\r\n super(props);\r\n this.selectedLocationRef = React.createRef();\r\n this.storeCounter = 0;\r\n }\r\n\r\n public componentDidUpdate(prevProps: IStoreSelectorLocationLinesProps): void {\r\n if (this.props.selectedStoreLocationId !== prevProps.selectedStoreLocationId) {\r\n this._scrollIntoView();\r\n }\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (this.props.locations) {\r\n this._stores = this._sortStores(this.props.locations);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n if (!this._stores || this._stores.length === 0) {\r\n return null;\r\n }\r\n\r\n this.storeCounter = 0;\r\n\r\n return (\r\n
\r\n {this._stores.map((store, index) => {\r\n return this._renderStoreLocation(store, index);\r\n })}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * On click Handler function.\r\n * @param orgUnitLocation -OrgUnit location.\r\n * @returns Click action on orgUnit Location.\r\n */\r\n private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\r\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\r\n };\r\n\r\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\r\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\r\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\r\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\r\n const defaultAriaSetsize = 0;\r\n if (orgUnitLocation) {\r\n ++this.storeCounter;\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n this.props.isPreferredStoreEnabled &&\r\n this.props.preferredStoreLocationId &&\r\n value?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\r\n\r\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\r\n }\r\n\r\n private readonly _scrollIntoView = () => {\r\n const selectedLocationDiv = this.selectedLocationRef.current;\r\n const parent = selectedLocationDiv?.parentElement;\r\n if (selectedLocationDiv && parent) {\r\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\r\n parent.scrollTop = selectedLocationDiv.offsetTop;\r\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\r\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\r\n }\r\n }\r\n };\r\n\r\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\r\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\r\n false;\r\n\r\n private readonly _isProductInStock = (ItemAvailabilities: ItemAvailability[] | undefined): boolean => {\r\n if (!this.props.enableOutOfStockCheck) {\r\n return true;\r\n }\r\n\r\n if (ItemAvailabilities && ItemAvailabilities.length > 0) {\r\n return ItemAvailabilities[0].AvailableQuantity ? ItemAvailabilities[0].AvailableQuantity > 0 : false;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\r\n if (availabilityWithHours?.ProductInventoryInformation && availabilityWithHours?.ProductInventoryInformation.length > 0) {\r\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\r\n if (\r\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\r\n ) {\r\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n\r\n private readonly _mapResources = (resources: ICzStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\r\n return {\r\n contactInfoHeader: resources.contactText,\r\n storeHoursHeader: resources.timeText,\r\n availabilityInfoHeader: resources.availabilityText,\r\n\r\n closedText: resources.storeHoursClosedText,\r\n outOfStock: resources.outOfStockText,\r\n inStock: resources.inStockText,\r\n\r\n currentLocation: resources.selectedStoreLocationText,\r\n selectLocation: resources.selectStoreText,\r\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\r\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\r\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\r\n preferredStoreText: resources.preferredStoreText,\r\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\r\n\r\n days: {\r\n monday: resources.storeHoursMondayText,\r\n tuesday: resources.storeHoursTuesdayText,\r\n wednesday: resources.storeHoursWednesdayText,\r\n thursday: resources.storeHoursThursdayText,\r\n friday: resources.storeHoursFridayText,\r\n saturday: resources.storeHoursSaturdayText,\r\n sunday: resources.storeHoursSundayText,\r\n mondayFull: resources.storeHoursMondayFullText,\r\n tuesdayFull: resources.storeHoursTuesdayFullText,\r\n wednesdayFull: resources.storeHoursWednesdayFullText,\r\n thursdayFull: resources.storeHoursThursdayFullText,\r\n fridayFull: resources.storeHoursFridayFullText,\r\n saturdayFull: resources.storeHoursSaturdayFullText,\r\n sundayFull: resources.storeHoursSundayFullText\r\n }\r\n };\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IPayLoad,\r\n ITelemetryContent,\r\n KeyCodes,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { StorePickUpOptionList } from './store-pickup-option-list';\r\n\r\n/**\r\n * Store Selector Search Form Props interface.\r\n */\r\nexport interface IStoreSelectorSearchFormProps {\r\n resources: {\r\n searchInputAriaLabel: string;\r\n searchButtonAriaLabel: string;\r\n searchPlaceholderText: string;\r\n seeAllStoresText: string;\r\n viewListText: string;\r\n viewMapText: string;\r\n pickupFilterByHeading?: string;\r\n pickupFilterMenuHeading?: string;\r\n };\r\n\r\n id: string;\r\n value: string;\r\n isMapDisabled?: boolean;\r\n showAllStores?: boolean;\r\n displayList?: boolean;\r\n locatorView?: boolean;\r\n productPickUpDeliveryOptions?: DeliveryOption[];\r\n hasEnabledPickupFilterToShowStore?: boolean;\r\n filteredPickupMode?: string;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n onShowAllStores(): void;\r\n onToggleListMapViewState(): void;\r\n performSearch(searchTerm: string): Promise;\r\n searchTermChanged(searchTerm: string): Promise;\r\n filterPickupModeSelected(pickupMode: string): void;\r\n}\r\n\r\n/**\r\n * Simple search form consisting of search text and a search button.\r\n */\r\nexport class StoreSelectorSearchForm extends React.PureComponent {\r\n private readonly searchBoxRef: React.RefObject = React.createRef();\r\n\r\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\r\n\r\n private readonly showAllStoreAttributes: Msdyn365.IDictionary | undefined;\r\n\r\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\r\n\r\n constructor(props: IStoreSelectorSearchFormProps) {\r\n super(props);\r\n this.state = { value: '' };\r\n this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\r\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\r\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\r\n this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\r\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n\r\n public render(): JSX.Element {\r\n const {\r\n resources: {\r\n searchButtonAriaLabel,\r\n searchPlaceholderText,\r\n seeAllStoresText,\r\n viewListText,\r\n viewMapText,\r\n pickupFilterByHeading,\r\n pickupFilterMenuHeading\r\n },\r\n id,\r\n value,\r\n isMapDisabled,\r\n showAllStores,\r\n displayList,\r\n locatorView,\r\n onShowAllStores,\r\n productPickUpDeliveryOptions,\r\n hasEnabledPickupFilterToShowStore\r\n } = this.props;\r\n\r\n const toggleButtonText = displayList ? viewMapText : viewListText;\r\n\r\n return (\r\n
\r\n \r\n
\r\n )}\r\n {this.renderPickupModesList(\r\n this.props,\r\n toggleButtonText,\r\n productPickUpDeliveryOptions,\r\n pickupFilterMenuHeading,\r\n locatorView,\r\n pickupFilterByHeading,\r\n hasEnabledPickupFilterToShowStore\r\n )}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Calls method display result.\r\n * @param event - The first number.\r\n */\r\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\r\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\r\n this.props.onShowAllStores();\r\n }\r\n };\r\n\r\n /**\r\n * Method called on search text changed.\r\n * @param event - Input value.\r\n */\r\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\r\n const inputValue: string = event.target.value;\r\n\r\n await this.props.searchTermChanged(inputValue);\r\n };\r\n\r\n /**\r\n * Method called on search submit.\r\n * @param event - Input value.\r\n */\r\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\r\n event.preventDefault(); // Prevents form submission\r\n this.searchBoxRef.current?.blur();\r\n await this.props.performSearch(this.props.value);\r\n };\r\n\r\n /**\r\n * Method called on product pickup option change.\r\n * @returns - Void.\r\n */\r\n private readonly _onChangeHandler = () => async (deliveryCode: string): Promise => {\r\n this.props.filterPickupModeSelected(deliveryCode);\r\n return Promise.resolve();\r\n };\r\n\r\n /**\r\n * Method to render pickup mode list.\r\n * @param props - Store selector search form props.\r\n * @param toggleButtonText - Locator view button text.\r\n * @param productPickUpDeliveryOptions - Product DeliveryOption List.\r\n * @param pickupFilterMenuHeading - Pickup store button text.\r\n * @param locatorView - Locator View is on\\off.\r\n * @param pickupFilterByHeading - Pickup list label text.\r\n * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\r\n * @returns Jsx component.\r\n */\r\n private readonly renderPickupModesList = (\r\n props: IStoreSelectorSearchFormProps,\r\n toggleButtonText: string,\r\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\r\n pickupFilterMenuHeading: string | undefined,\r\n locatorView: boolean | undefined,\r\n pickupFilterByHeading: string | undefined,\r\n hasEnabledPickupFilterToShowStore: boolean | undefined\r\n ): JSX.Element | null => {\r\n if (hasEnabledPickupFilterToShowStore) {\r\n return (\r\n
\r\n {locatorView && (\r\n \r\n {toggleButtonText}\r\n \r\n )}\r\n \r\n
{pickupFilterByHeading}
\r\n
\r\n );\r\n }\r\n if (locatorView) {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { ICzStoreSelectorResources, ITermsOfServiceLinkData } from '../cz-store-selector.props.autogenerated';\r\n\r\nexport interface IStoreSelectorEmptyMessageProps {\r\n resources: ICzStoreSelectorResources;\r\n}\r\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\r\n
\r\n

{resources.emptyLocationsText}

\r\n
\r\n);\r\n\r\nexport const StoreSelectorWaiting: React.FC = () =>
;\r\n\r\nexport interface IStoreSelectorTermsOfServiceProps {\r\n link?: ITermsOfServiceLinkData;\r\n requestContext: Msdyn365.IRequestContext;\r\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\r\n}\r\n\r\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\r\n if (link) {\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'ms-store-select__terms-link',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'link'\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport interface IStoreSelectorFoundLocationsMessage {\r\n resources: ICzStoreSelectorResources;\r\n locations?: IFullOrgUnitAvailability[];\r\n searchRadius: number;\r\n preferredDistanceUnit: string;\r\n isSeeAllStore: boolean;\r\n}\r\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\r\n locations,\r\n searchRadius,\r\n resources,\r\n isSeeAllStore,\r\n preferredDistanceUnit\r\n}) => {\r\n if (locations) {\r\n const storeCountMessage =\r\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\r\n return (\r\n
\r\n {isSeeAllStore\r\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\r\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\r\n
\r\n );\r\n }\r\n\r\n return null;\r\n};\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport get from 'lodash/get';\r\n\r\nimport { IStoreSelectorLocationLineItemResources } from '.';\r\n\r\nexport interface IHoursDisplayInfo {\r\n startDayShort: string;\r\n startDayFull: string;\r\n endDayShort?: string;\r\n endDayFull?: string;\r\n timeRange: string;\r\n}\r\n\r\ninterface IHoursInfo {\r\n isClosed: boolean;\r\n openTime?: number;\r\n closeTime?: number;\r\n}\r\n\r\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\r\n\r\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\r\n if (seconds === undefined) {\r\n return undefined;\r\n }\r\n let hours = Math.floor(seconds / (60 * 60));\r\n const ampm = hours >= 12 ? 'pm' : 'am';\r\n hours %= 12;\r\n hours = hours ? hours : 12;\r\n const divisorForMinutes = seconds % (60 * 60);\r\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\r\n return `${hours}:${minutes} ${ampm}`;\r\n};\r\n\r\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\r\n switch (day) {\r\n case 'MON':\r\n return resources.days.monday;\r\n case 'TUE':\r\n return resources.days.tuesday;\r\n case 'WED':\r\n return resources.days.wednesday;\r\n case 'THU':\r\n return resources.days.thursday;\r\n case 'FRI':\r\n return resources.days.friday;\r\n case 'SAT':\r\n return resources.days.saturday;\r\n default:\r\n // Case 'SUN':\r\n return resources.days.sunday;\r\n }\r\n};\r\n\r\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\r\n switch (day) {\r\n case 'MON':\r\n return resources.days.mondayFull;\r\n case 'TUE':\r\n return resources.days.tuesdayFull;\r\n case 'WED':\r\n return resources.days.wednesdayFull;\r\n case 'THU':\r\n return resources.days.thursdayFull;\r\n case 'FRI':\r\n return resources.days.fridayFull;\r\n case 'SAT':\r\n return resources.days.saturdayFull;\r\n default:\r\n // Case 'SUN':\r\n return resources.days.sundayFull;\r\n }\r\n};\r\n\r\nconst buildHoursDisplayInfo = (\r\n startDay: DayType,\r\n endDay: DayType,\r\n hoursInfo: string,\r\n resources: IStoreSelectorLocationLineItemResources\r\n): IHoursDisplayInfo => {\r\n return {\r\n startDayShort: getShortTimeString(startDay, resources),\r\n startDayFull: getFullTimeString(startDay, resources),\r\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\r\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\r\n timeRange: hoursInfo\r\n };\r\n};\r\n\r\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\r\n if (firstLine.isClosed && secondLine.isClosed) {\r\n return true;\r\n }\r\n\r\n if (!firstLine.isClosed && !secondLine.isClosed) {\r\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\r\n return {\r\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\r\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\r\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\r\n };\r\n};\r\n\r\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\r\n if (hoursInfo.isClosed) {\r\n return resources.closedText;\r\n }\r\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\r\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\r\n\r\n return `${openFrom}–${openTo}`;\r\n};\r\n\r\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\r\n const storeHoursList: IHoursDisplayInfo[] = [];\r\n\r\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\r\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\r\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\r\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\r\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\r\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\r\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\r\n\r\n let periodStart: DayType = 'MON';\r\n let periodEnd: DayType = 'MON';\r\n\r\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\r\n\r\n periodStart = 'TUE';\r\n }\r\n periodEnd = 'TUE';\r\n\r\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\r\n\r\n periodStart = 'WED';\r\n }\r\n periodEnd = 'WED';\r\n\r\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\r\n\r\n periodStart = 'THU';\r\n }\r\n periodEnd = 'THU';\r\n\r\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\r\n\r\n periodStart = 'FRI';\r\n }\r\n periodEnd = 'FRI';\r\n\r\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\r\n\r\n periodStart = 'SAT';\r\n }\r\n periodEnd = 'SAT';\r\n\r\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\r\n\r\n periodStart = 'SUN';\r\n }\r\n periodEnd = 'SUN';\r\n\r\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\r\n\r\n return storeHoursList;\r\n};\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * ICzStoreSelector contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum mode {\r\n findStores = 'findStores',\r\n pickupInStore = 'pickupInStore'\r\n}\r\n\r\nexport const enum searchRadiusUnit {\r\n miles = 'miles',\r\n kilometers = 'kilometers'\r\n}\r\n\r\nexport const enum style {\r\n inline = 'inline',\r\n dialog = 'dialog'\r\n}\r\n\r\nexport interface ICzStoreSelectorConfig extends Msdyn365.IModuleConfig {\r\n heading?: string;\r\n termsOfServiceLink?: ITermsOfServiceLinkData;\r\n mode?: mode;\r\n searchRadiusUnit?: searchRadiusUnit;\r\n lookupRadius: number;\r\n style?: style;\r\n setAsPreferredStore?: boolean;\r\n enablePickupFilterToShowStore?: boolean;\r\n showAllStores?: boolean;\r\n autoSuggestionEnabled?: boolean;\r\n autoSuggestOptions?: IAutoSuggestOptionsData;\r\n className?: string;\r\n stockistAttributeName?: string;\r\n stockistAttributeRecordId?: number;\r\n}\r\n\r\nexport interface ICzStoreSelectorResources {\r\n searchPlaceholderText: string;\r\n searchButtonAriaLabel: string;\r\n searchInputAriaLabel: string;\r\n outOfStockText: string;\r\n inStockText: string;\r\n selectedStoreLocationText: string;\r\n emptyLocationsText: string;\r\n selectStoreText: string;\r\n selectStoreAriaFormatText: string;\r\n setAsPreferredStoreText: string;\r\n setAsPreferredStoreTextAriaLabel: string;\r\n preferredStoreText: string;\r\n preferredStoreAriaLabel: string;\r\n timeText: string;\r\n captionText: string;\r\n milesShortText: string;\r\n kilometersShortText: string;\r\n contactText: string;\r\n availabilityText: string;\r\n productDimensionTypeColor: string;\r\n productDimensionTypeConfiguration: string;\r\n productDimensionTypeSize: string;\r\n productDimensionTypeStyle: string;\r\n storeHoursClosedText: string;\r\n storeHoursMondayText: string;\r\n storeHoursTuesdayText: string;\r\n storeHoursWednesdayText: string;\r\n storeHoursThursdayText: string;\r\n storeHoursFridayText: string;\r\n storeHoursSaturdayText: string;\r\n storeHoursSundayText: string;\r\n storeHoursMondayFullText: string;\r\n storeHoursTuesdayFullText: string;\r\n storeHoursWednesdayFullText: string;\r\n storeHoursThursdayFullText: string;\r\n storeHoursFridayFullText: string;\r\n storeHoursSaturdayFullText: string;\r\n storeHoursSundayFullText: string;\r\n storePhoneAriaLabel: string;\r\n storeAddressAriaLabel: string;\r\n storeCountMessage: string;\r\n storeAllCountMessage: string;\r\n storeCountMessageInKm: string;\r\n storeSelectorHeaderText: string;\r\n storeLocatorHeaderText: string;\r\n seeAllStoresText: string;\r\n viewMapText: string;\r\n viewListText: string;\r\n pickupFilterByHeading: string;\r\n pickupFilterMenuHeading: string;\r\n}\r\n\r\nexport interface ITermsOfServiceLinkData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface IAutoSuggestOptionsData {\r\n maxResults?: number;\r\n}\r\n\r\nexport interface ICzStoreSelectorProps extends Msdyn365.IModule {\r\n resources: ICzStoreSelectorResources;\r\n config: ICzStoreSelectorConfig;\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/// \r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\r\nimport { IStoreInfo } from '@msdyn365-commerce-modules/bopis-utilities';\r\nimport {\r\n ArrayExtensions,\r\n getFullAvailableInventoryNearby,\r\n GetFullAvailableInventoryNearbyInput,\r\n getOrgUnitLocationsByArea,\r\n GetOrgUnitLocationsByAreaInput,\r\n IFullOrgUnitAvailability\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n ITelemetryContent,\r\n Modal,\r\n ModalBody,\r\n ModalFooter,\r\n ModalHeader,\r\n NodeTag\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classname from 'classnames';\r\nimport { reaction, when } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n StoreSelectorEmptyMessage,\r\n StoreSelectorFoundLocationsMessage,\r\n StoreSelectorLocationLines,\r\n StoreSelectorSearchForm,\r\n StoreSelectorTermsOfService,\r\n StoreSelectorWaiting\r\n} from './components';\r\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/cz-store-selector-location-line-item/date-time-helpers';\r\nimport { ICzStoreSelectorData } from './cz-store-selector.data';\r\nimport {\r\n ICzStoreSelectorProps,\r\n ICzStoreSelectorResources,\r\n mode as modeEnum,\r\n searchRadiusUnit,\r\n style as styleEnum\r\n} from './cz-store-selector.props.autogenerated';\r\nimport { readAsync, updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\r\n\r\n/**\r\n * StoreSelector State Interface.\r\n */\r\nexport interface IStoreSelectorState {\r\n isSearchInProgress: boolean;\r\n searchTerm?: string;\r\n isSeeAllStoreValue: boolean;\r\n isLocationDisabled?: boolean;\r\n filteredPickupMode?: string;\r\n jewelerInfo?: any;\r\n}\r\n\r\n/**\r\n * StoreSelector View Props Interface.\r\n */\r\nexport interface IStoreSelectorViewProps extends ICzStoreSelectorProps {\r\n state: IStoreSelectorState;\r\n\r\n // Containers:\r\n ModuleProps: IModuleProps;\r\n BodyContainerProps: INodeProps;\r\n FooterContainerProps: INodeProps;\r\n HeaderContainerProps: INodeProps;\r\n HeaderProps?: React.ReactNode;\r\n\r\n // Components\r\n locationsMessage?: React.ReactNode;\r\n search?: React.ReactNode;\r\n spinner?: React.ReactNode;\r\n locationsList?: React.ReactNode;\r\n noLocationsMessage?: React.ReactNode;\r\n terms?: React.ReactNode;\r\n headerText?: React.ReactNode;\r\n sortLocations?: IFullOrgUnitAvailability[];\r\n locationListProps?: IStoreSelectorLocationLineItemProps[];\r\n\r\n callbacks: {\r\n closeDialog(): Promise;\r\n searchTermChanged(searchTerm: string): Promise;\r\n performSearch(searchTerm: string): Promise;\r\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\r\n getAndUpdateUserLocation(): Promise;\r\n attachMapAutoSuggest(): Promise;\r\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\r\n setPreferredStore(storeId: string | undefined): Promise;\r\n removePreferredStore(): Promise;\r\n setSelectedStore(storeId: string | undefined): Promise;\r\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\r\n };\r\n}\r\n\r\n/**\r\n * StoreSelectorLocation Line Resources Interface.\r\n */\r\nexport interface IStoreSelectorLocationLineItemResources {\r\n contactInfoHeader: string;\r\n storeHoursHeader: string;\r\n availabilityInfoHeader: string;\r\n closedText: string;\r\n outOfStock: string;\r\n inStock: string;\r\n currentLocation: string;\r\n selectLocation: string;\r\n selectLocationAriaLabelFormat: string;\r\n setAsPreferredStoreText: string;\r\n setAsPreferredStoreTextAriaLabel: string;\r\n preferredStoreText: string;\r\n preferredStoreAriaLabel: string;\r\n\r\n days: {\r\n monday: string;\r\n tuesday: string;\r\n wednesday: string;\r\n thursday: string;\r\n friday: string;\r\n saturday: string;\r\n sunday: string;\r\n mondayFull: string;\r\n tuesdayFull: string;\r\n wednesdayFull: string;\r\n thursdayFull: string;\r\n fridayFull: string;\r\n saturdayFull: string;\r\n sundayFull: string;\r\n };\r\n}\r\n\r\n/**\r\n * ILocationHours Interface.\r\n */\r\nexport interface ILocationHours {\r\n openFrom?: string;\r\n openTo?: string;\r\n}\r\n\r\n/**\r\n * StoreSelectorLocation Line Item Props Interface.\r\n */\r\nexport interface IStoreSelectorLocationLineItemProps {\r\n location: OrgUnitLocation;\r\n storeHours?: StoreHours;\r\n storeHoursList?: IHoursDisplayInfo[];\r\n\r\n hideStockStatus?: boolean;\r\n isInStock?: boolean;\r\n isCurrentLocation?: boolean;\r\n\r\n resources: IStoreSelectorLocationLineItemResources;\r\n stockStatusLabel?: string;\r\n storeLocatorView?: boolean;\r\n isPreferredStoreEnabled?: boolean;\r\n index: string;\r\n preferredStoreLocationId: string | null;\r\n storePickUpOptionList?: DeliveryOption[];\r\n productPickUpOptionList?: DeliveryOption[];\r\n selectedStoreLocationId?: string;\r\n locationOpen?: ILocationHours;\r\n\r\n /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n preferredDistanceUnit: string;\r\n isLocationDisabled?: boolean;\r\n handlers: {\r\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\r\n onSetAsPreferredStore(locationId: string | undefined): void;\r\n onRemovePreferredStore(): void;\r\n };\r\n onClick: (locationId: string | undefined) => void;\r\n}\r\n\r\n/**\r\n *\r\n * Pick Up In Store module.\r\n * @extends React.Component>}\r\n */\r\n@observer\r\nclass StoreSelector extends React.Component, IStoreSelectorState> {\r\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private storeCounter: number;\r\n private redirectUri: string | null = '';\r\n public constructor(props: ICzStoreSelectorProps) {\r\n super(props);\r\n this.state = {\r\n isSearchInProgress: true,\r\n searchTerm: '',\r\n isSeeAllStoreValue: false,\r\n filteredPickupMode: undefined,\r\n jewelerInfo: undefined\r\n };\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.storeCounter = 0;\r\n }\r\n\r\n public componentDidMount(): void {\r\n const {\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n config: { autoSuggestionEnabled }\r\n } = this.props;\r\n\r\n // Adding Timeout to make sure it loads the data based upon the preferred store.\r\n setTimeout(() => {\r\n this._getAndUpdateStoreLocation();\r\n }, 0);\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result && this.props.data.storeSelectorStateManager.result.isDialogOpen,\r\n async () => {\r\n const context = this.props.data.storeSelectorStateManager.result?.context;\r\n if (context?.id === this.props.id) {\r\n this._getAndUpdateStoreLocation();\r\n }\r\n }\r\n );\r\n\r\n reaction(\r\n () =>\r\n this.props.data.storeSelectorStateManager.result &&\r\n this.props.data.storeSelectorStateManager.result.context &&\r\n this.props.data.storeSelectorStateManager.result.context.id,\r\n async () => {\r\n const context = this.props.data.storeSelectorStateManager.result?.context;\r\n if (!context || context?.id === this.props.id) {\r\n await this._searchTermChanged('');\r\n this._getAndUpdateStoreLocation();\r\n }\r\n }\r\n );\r\n\r\n if (channel && !channel.BingMapsApiKey) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n return;\r\n }\r\n\r\n if (channel && !channel.BingMapsEnabled) {\r\n telemetry.error('Map is disabled from HQ.');\r\n return;\r\n }\r\n\r\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\r\n this.props.data.storeSelectorStateManager.result\r\n ?.loadMapApi({\r\n key: channel?.BingMapsApiKey,\r\n lang: this.props.context.actionContext.requestContext.locale,\r\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\r\n })\r\n .then()\r\n .catch();\r\n }\r\n\r\n reaction(\r\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\r\n () => {\r\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\r\n key: channel?.BingMapsApiKey,\r\n lang: this.props.context.actionContext.requestContext.locale,\r\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\r\n });\r\n }\r\n );\r\n\r\n if (autoSuggestionEnabled) {\r\n when(\r\n () => {\r\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\r\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\r\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\r\n return isMapApiLoaded && isDialogOpen && isSameContext;\r\n },\r\n async () => {\r\n setTimeout(async () => {\r\n await this._attachMapAutoSuggest();\r\n }, 0);\r\n }\r\n );\r\n }\r\n void this.getJewelerInfo();\r\n this.checkRedirectUriAvailable();\r\n this.setState({});\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: ICzStoreSelectorProps): boolean {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\r\n if (context && context.id === this.props.id) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private getJewelerInfo = async () => {\r\n if (this.props.context.actionContext.requestContext.user.isAuthenticated) {\r\n const customerAccountNumber = this.props.context.actionContext.requestContext.user.customerAccountNumber;\r\n if (customerAccountNumber) {\r\n const jewelerInfo: any = await readAsync({ callerContext: this.props.context.actionContext }, customerAccountNumber);\r\n this.setState({ jewelerInfo });\r\n }\r\n }\r\n };\r\n\r\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\r\n public render(): JSX.Element {\r\n const {\r\n config: {\r\n termsOfServiceLink,\r\n className,\r\n heading,\r\n mode,\r\n style,\r\n setAsPreferredStore,\r\n showAllStores,\r\n lookupRadius,\r\n enablePickupFilterToShowStore\r\n },\r\n context: {\r\n telemetry,\r\n app: { config: appConfig },\r\n actionContext: {\r\n requestContext: { channel, cookies }\r\n }\r\n },\r\n resources,\r\n data: {\r\n availabilitiesWithHours: { result: availabilitiesWithHours },\r\n storeSelectorStateManager: { result: storeSelectorStateManager },\r\n storeLocations: { result: storeLocations }\r\n }\r\n } = this.props;\r\n\r\n this.storeCounter = 0;\r\n const isMapDisabled = !(channel && channel.BingMapsApiKey && channel.BingMapsEnabled);\r\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\r\n const isDialogOpen: boolean = storeSelectorStateManager\r\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\r\n : false;\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\r\n const inlineView = styleDefault === styleEnum.inline;\r\n const locatorView = modeDefault === modeEnum.findStores;\r\n const hideInventory = locatorView;\r\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\r\n const displayList = storeSelectorStateManager?.listMapViewState?.displayList;\r\n const isPreferredStoreEnabled = setAsPreferredStore && cookies?.isConsentGiven();\r\n const showLocationView =\r\n context &&\r\n (context.showMapViewLink === undefined || context.showMapViewLink) &&\r\n locatorView &&\r\n storeSelectorStateManager?.isMapModuleLoaded;\r\n\r\n const StoreSelectorActions = {\r\n toggleListMapViewState(): void {\r\n storeSelectorStateManager?.toggleListMapViewState();\r\n }\r\n };\r\n\r\n if (!(channel && channel.BingMapsApiKey)) {\r\n telemetry.error('BingMapsApiKey is missing.');\r\n }\r\n\r\n const configHeading = heading ? heading : locatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\r\n const preferredDistanceUnit =\r\n this.props.config.searchRadiusUnit === searchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\r\n let preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\r\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\r\n const locationsList: IFullOrgUnitAvailability[] | undefined = hideInventory ? storeLocations : availabilitiesWithHours;\r\n let sortLocation = null;\r\n if (locationsList) {\r\n sortLocation = this._sortStores(locationsList, isPreferredStoreEnabled, preferredLocationId);\r\n }\r\n if (storeSelectorStateManager && storeSelectorStateManager.preferredStore && this.state.jewelerInfo) {\r\n const customerAccountNumber = this.props.context.actionContext.requestContext.user.customerAccountNumber;\r\n if (customerAccountNumber) {\r\n if (this.props.context.actionContext.requestContext.user.isAuthenticated) {\r\n const stockist = this.state.jewelerInfo.Attributes.find((attr: any) => {\r\n return attr.Name === this.props.config.stockistAttributeName;\r\n });\r\n const locations = this.props.data.storeLocations.result;\r\n if (stockist && locations) {\r\n const stockistInfo: any = locations.find((loc: any) => {\r\n return loc.OrgUnitAvailability.OrgUnitLocation.OrgUnitName === stockist.AttributeValue.StringValue;\r\n });\r\n if (stockistInfo) {\r\n preferredStore = {\r\n StoreName: stockistInfo.OrgUnitAvailability.OrgUnitLocation.OrgUnitName,\r\n StoreId: stockistInfo.OrgUnitAvailability.OrgUnitLocation.OrgUnitNumber,\r\n Latitude: stockistInfo.OrgUnitAvailability.OrgUnitLocation.Latitude,\r\n Longitude: stockistInfo.OrgUnitAvailability.OrgUnitLocation.Longitude\r\n };\r\n } else if (stockist.AttributeValue.StringValue === 'None') {\r\n preferredStore = undefined;\r\n }\r\n } else {\r\n preferredStore = undefined;\r\n }\r\n } else {\r\n preferredStore = undefined;\r\n }\r\n }\r\n } else if (storeSelectorStateManager && !storeSelectorStateManager.preferredStore) {\r\n preferredStore = undefined;\r\n } else {\r\n preferredStore = undefined;\r\n }\r\n const enableOutofStock = appConfig?.enableStockCheck || false;\r\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\r\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\r\n const locationListProps = this._getStoreLocationListProps(\r\n enableOutofStock,\r\n locatorView,\r\n preferredLocationId,\r\n isPreferredStoreEnabled,\r\n selectedStoreLocationId,\r\n locationsList ?? null,\r\n preferredDistanceUnit,\r\n alreadySelectedLocation,\r\n productPickUpOptionList\r\n );\r\n const viewProps = {\r\n ...(this.props as ICzStoreSelectorProps),\r\n state: this.state,\r\n\r\n ModuleProps: {\r\n tag: inlineView ? ('div' as NodeTag) : Modal,\r\n moduleProps: this.props,\r\n className: classname(\r\n `ms-store-${inlineView ? 'locate' : 'select'}`,\r\n className,\r\n inlineView ? '' : 'msc-modal-input-required'\r\n ),\r\n autoFocus: true,\r\n fade: true,\r\n isOpen: isDialogOpen,\r\n 'aria-label': configHeading,\r\n onClosed: this._closeDialog,\r\n horizontalPosition: 'center',\r\n verticalPosition: 'center',\r\n toggle: this._closeDialog\r\n },\r\n HeaderContainerProps: {\r\n tag: inlineView ? ('div' as NodeTag) : ModalHeader,\r\n className: `ms-store-select__${inlineView ? 'header' : 'modal-header'}`,\r\n toggle: this._closeDialog\r\n },\r\n HeaderProps: configHeading && (\r\n \r\n ),\r\n FooterContainerProps: {\r\n tag: inlineView ? ('div' as NodeTag) : ModalFooter,\r\n className: `ms-store-select__${inlineView ? 'footer' : 'modal-footer'} ${!displayList ? 'map-only-view' : ''}`\r\n },\r\n BodyContainerProps: {\r\n tag: inlineView ? ('div' as NodeTag) : ModalBody,\r\n className: `ms-store-select__${inlineView ? 'body' : 'modal-body'}`\r\n },\r\n locationsMessage: !this.state.isLocationDisabled && (\r\n \r\n ),\r\n search: (\r\n \r\n ),\r\n spinner: ,\r\n locationsList: ((availabilitiesWithHours && availabilitiesWithHours.length) || (storeLocations && storeLocations.length)) && (\r\n \r\n ),\r\n noLocationsMessage: ,\r\n terms: (\r\n \r\n ),\r\n\r\n // Not being used in current context, we can use it here to pass more props.\r\n headerText: (\r\n {heading ? heading : locatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}\r\n ),\r\n sortLocations: sortLocation,\r\n locationListProps,\r\n callbacks: {\r\n searchTermChanged: this._searchTermChanged,\r\n performSearch: this._performSearch,\r\n closeDialog: this._closeDialog,\r\n selectedLocation: this._onOrgUnitLocationSelected,\r\n getAndUpdateUserLocation: async () => {\r\n this._getAndUpdateStoreLocation();\r\n return Promise.resolve();\r\n },\r\n attachMapAutoSuggest: this._attachMapAutoSuggest,\r\n onSuggestionSelected: this._onOrgUnitLocationSelected,\r\n setPreferredStore: this._setPreferredStore,\r\n removePreferredStore: this._removePreferredStore,\r\n setSelectedStore: this._setSelectedStore,\r\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\r\n }\r\n } as IStoreSelectorViewProps;\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Method to be called on link text change.\r\n * @param event -Content Edit Event.\r\n */\r\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.config.termsOfServiceLink) {\r\n this.props.config.termsOfServiceLink.linkText = event.target.value;\r\n }\r\n };\r\n\r\n /**\r\n * Method to be called on heading change.\r\n * @param event -Content Edit Event.\r\n * @returns Set the heading value.\r\n */\r\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading = event.target.value);\r\n\r\n /**\r\n * Show all stores handler function.\r\n */\r\n private readonly onShowAllStoresHandler = () => {\r\n this._getAndUpdateStoreLocation(true);\r\n };\r\n\r\n /**\r\n * Filter Store by pickup mode.\r\n * @param deliveryCode -Delivery Code.\r\n */\r\n private readonly onFilteredPickupMode = (deliveryCode: string) => {\r\n this.setState({ filteredPickupMode: deliveryCode });\r\n };\r\n\r\n /**\r\n * Method will sort all stores.\r\n * @param stores -Stores List.\r\n * @param isPreferredStoreEnabled -Module config value.\r\n * @param preferredStoreLocationId -Store Id.\r\n * @returns List of Stores.\r\n */\r\n // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\r\n private _sortStores(\r\n stores: IFullOrgUnitAvailability[],\r\n isPreferredStoreEnabled: boolean | undefined,\r\n preferredStoreLocationId: string\r\n ): IFullOrgUnitAvailability[] {\r\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\r\n isPreferredStoreEnabled &&\r\n preferredStoreLocationId &&\r\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\r\n\r\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\r\n }\r\n\r\n /**\r\n * Method will list of store selector location line.\r\n * @param hasEnabledOutOfStockCheck -Stores List.\r\n * @param isStoreLocatorView -Module config value.\r\n * @param preferredStoreLocationId -Store Id.\r\n * @param isPreferredStoreEnabled -Stores List.\r\n * @param selectedStoreLocationId -Module config value.\r\n * @param stores -Store Id.\r\n * @param preferredDistanceUnit -Module config value.\r\n * @param alreadySelectedLocation -Already Selected Location.\r\n * @param productPickUpOptionList -Product supported Pickup Modes List.\r\n * @returns List of StoreSelectorLocation Line.\r\n */\r\n private _getStoreLocationListProps(\r\n hasEnabledOutOfStockCheck: boolean,\r\n isStoreLocatorView: boolean,\r\n preferredStoreLocationId: string,\r\n isPreferredStoreEnabled: boolean | undefined,\r\n selectedStoreLocationId: string | undefined,\r\n stores: IFullOrgUnitAvailability[] | null,\r\n preferredDistanceUnit?: string | undefined,\r\n alreadySelectedLocation?: OrgUnitLocation,\r\n productPickUpOptionList?: DeliveryOption[]\r\n ): IStoreSelectorLocationLineItemProps[] {\r\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\r\n if (ArrayExtensions.hasElements(stores)) {\r\n stores?.map((store, index: number) => {\r\n const storeLineProps = this._createStoreLocationList(\r\n store,\r\n index,\r\n hasEnabledOutOfStockCheck,\r\n isStoreLocatorView,\r\n preferredStoreLocationId,\r\n isPreferredStoreEnabled,\r\n selectedStoreLocationId,\r\n preferredDistanceUnit,\r\n alreadySelectedLocation,\r\n productPickUpOptionList\r\n );\r\n if (storeLineProps) {\r\n storeList.push(storeLineProps);\r\n }\r\n });\r\n }\r\n return storeList;\r\n }\r\n\r\n /**\r\n * Intialize Map AutoSuggest.\r\n */\r\n private readonly _attachMapAutoSuggest = async (): Promise => {\r\n const {\r\n config: { autoSuggestOptions },\r\n context: {\r\n telemetry,\r\n actionContext: {\r\n requestContext: { channel }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\r\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\r\n callback: () => {\r\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\r\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\r\n this.autoSuggestManager.attachAutosuggest(\r\n `#ms-store-select__search-box_${this.props.id}`,\r\n `#ms-store-select__search-box-container_${this.props.id}`,\r\n this._onSuggestionSelected\r\n );\r\n },\r\n errorCallback: () => {\r\n if (telemetry) {\r\n telemetry.debug('Unable to attach map auto suggest.');\r\n }\r\n },\r\n credentials: channel?.BingMapsApiKey\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * On Selecting Location Suggestion.\r\n * @param result - Map Suggestions List.\r\n */\r\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\r\n const context =\r\n this.props.data.storeSelectorStateManager &&\r\n this.props.data.storeSelectorStateManager.result &&\r\n this.props.data.storeSelectorStateManager.result.context;\r\n if (context && context.id === this.props.id) {\r\n await this._searchTermChanged(result.formattedSuggestion);\r\n await this._performSearch(result.formattedSuggestion);\r\n }\r\n };\r\n\r\n /**\r\n * On Selecting Preferred Store.\r\n * @param storeId - Store Id.\r\n */\r\n private readonly _setPreferredStore = async (storeId: string | undefined): Promise => {\r\n if (!storeId) {\r\n return;\r\n }\r\n\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { cookies }\r\n }\r\n },\r\n config: { mode },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager },\r\n storeLocations: { result: storeLocations },\r\n availabilitiesWithHours: { result: availabilitiesWithHours }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\r\n\r\n let stores: IFullOrgUnitAvailability[];\r\n if (modeDefault === modeEnum.findStores && storeLocations) {\r\n stores = storeLocations;\r\n } else {\r\n stores = availabilitiesWithHours!;\r\n }\r\n\r\n const preferedStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\r\n\r\n await storeSelectorStateManager.setPreferredStoreLocation(\r\n storeId,\r\n preferedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\r\n cookies.isConsentGiven(),\r\n preferedStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\r\n preferedStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\r\n );\r\n const customerAccountNumber = this.props.context.actionContext.requestContext.user.customerAccountNumber;\r\n if (customerAccountNumber) {\r\n const customer: any = await readAsync({ callerContext: this.props.context.actionContext }, customerAccountNumber);\r\n const attributes = customer.Attributes;\r\n const stockistAttributeIndex = attributes.findIndex((a: any) => {\r\n return this.props.config.stockistAttributeName === a.Name;\r\n });\r\n if (stockistAttributeIndex > -1) {\r\n const stockistAttribute = attributes[stockistAttributeIndex];\r\n stockistAttribute.AttributeValue.StringValue = preferedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\r\n attributes[stockistAttributeIndex] = stockistAttribute;\r\n } else {\r\n const stockistAttribute = {\r\n DataTypeValue: 5,\r\n KeyName: this.props.config.stockistAttributeName,\r\n Name: this.props.config.stockistAttributeName,\r\n RecordId: this.props.config.stockistAttributeRecordId,\r\n AttributeValue: {\r\n StringValue: preferedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName\r\n },\r\n ExtensionProperties: [],\r\n NameTranslations: []\r\n };\r\n attributes.push(stockistAttribute);\r\n }\r\n\r\n // update stockist value...\r\n const updatePayload = {\r\n AccountNumber: customer.AccountNumber,\r\n RecordId: customer.RecordId,\r\n CreatedDateTime: customer.CreatedDateTime,\r\n ChargeGroup: customer.ChargeGroup,\r\n PriceGroup: customer.PriceGroup,\r\n IsCustomerTaxInclusive: customer.IsCustomerTaxInclusive,\r\n Phone: customer.Phone,\r\n PhoneRecordId: customer.PhoneRecordId,\r\n PhoneExt: customer.PhoneExt,\r\n Cellphone: customer.Cellphone,\r\n Email: customer.Email,\r\n EmailRecordId: customer.EmailRecordId,\r\n Url: customer.Url,\r\n UrlRecordId: customer.UrlRecordId,\r\n Name: customer.Name,\r\n PersonNameId: customer.PersonNameId,\r\n FirstName: customer.FirstName,\r\n MiddleName: customer.MiddleName,\r\n LastName: customer.LastName,\r\n DirectoryPartyRecordId: customer.DirectoryPartyRecordId,\r\n PartyNumber: customer.PartyNumber,\r\n CustomerTypeValue: customer.CustomerTypeValue,\r\n Language: customer.Language,\r\n CustomerGroup: customer.CustomerGroup,\r\n CurrencyCode: customer.CurrencyCode,\r\n CNPJCPFNumber: customer.CNPJCPFNumber,\r\n IdentificationNumber: customer.IdentificationNumber,\r\n InvoiceAccount: customer.InvoiceAccount,\r\n MandatoryCreditLimit: customer.MandatoryCreditLimit,\r\n CreditRating: customer.CreditRating,\r\n CreditLimit: customer.CreditLimit,\r\n Balance: customer.Balance,\r\n Blocked: customer.Blocked,\r\n BlockedType: customer.BlockedType,\r\n UseOrderNumberReference: customer.UseOrderNumberReference,\r\n OrganizationId: customer.OrganizationId,\r\n UsePurchaseRequest: customer.UsePurchaseRequest,\r\n MultilineDiscountGroup: customer.MultilineDiscountGroup,\r\n TotalDiscountGroup: customer.TotalDiscountGroup,\r\n LineDiscountGroup: customer.LineDiscountGroup,\r\n TaxGroup: customer.TaxGroup,\r\n SalesTaxGroup: customer.SalesTaxGroup,\r\n CommissionSalesGroupId: customer.CommissionSalesGroupId,\r\n TaxExemptNumber: customer.TaxExemptNumber,\r\n VatNumber: customer.VatNumber,\r\n TaxOffice: customer.TaxOffice,\r\n NonChargeableAccount: customer.NonChargeableAccount,\r\n Tag: customer.Tag,\r\n ReceiptSettings: customer.ReceiptSettings,\r\n ReceiptEmail: customer.ReceiptEmail,\r\n OptOutPersonalization: customer.OptOutPersonalization,\r\n OptOutWebActivityTracking: customer.OptOutWebActivityTracking,\r\n RetailCustomerTableRecordId: customer.RetailCustomerTableRecordId,\r\n OfflineImage: customer.OfflineImage,\r\n IsAsyncCustomer: customer.IsAsyncCustomer,\r\n NewCustomerPartyNumber: customer.NewCustomerPartyNumber,\r\n CustomerAffiliations: customer.CustomerAffiliations,\r\n Addresses: customer.Addresses,\r\n Attributes: attributes,\r\n Images: customer.Images,\r\n TitleRecordId: customer.TitleRecordId,\r\n IsFloorLimitBlocked: customer.IsFloorLimitBlocked,\r\n IsB2b: customer.IsB2b,\r\n IsB2bAdmin: customer.IsB2bAdmin,\r\n BusinessPartnerId: customer.BusinessPartnerId,\r\n Contacts: customer.Contacts,\r\n AllowOnAccountPayment: customer.AllowOnAccountPayment,\r\n ExtensionProperties: customer.ExtensionProperties\r\n };\r\n await updateAsync({ callerContext: this.props.context.actionContext }, updatePayload);\r\n if (this.redirectUri) {\r\n window.location.href = this.redirectUri;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * On Removing Preferred Store.\r\n */\r\n private readonly _removePreferredStore = async (): Promise => {\r\n const {\r\n context: {\r\n actionContext: {\r\n requestContext: { cookies }\r\n }\r\n },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\r\n };\r\n\r\n /**\r\n * On Selecting Store for pickup.\r\n * @param storeId - Store Id.\r\n */\r\n private readonly _setSelectedStore = async (storeId: string | undefined): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\r\n };\r\n\r\n /**\r\n * Method to be called on search.\r\n * @param searchTerm - Search string.\r\n */\r\n private readonly _performSearch = async (searchTerm: string): Promise => {\r\n const {\r\n context: { actionContext },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (!searchTerm || !storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\r\n\r\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\r\n\r\n if (location) {\r\n await this._updateLocations(location.latitude, location.longitude);\r\n } else {\r\n await this._updateLocations();\r\n }\r\n\r\n this.setState({ isSearchInProgress: false });\r\n };\r\n\r\n /**\r\n * Method to be called on search term changed.\r\n * @param searchTerm - Search string.\r\n */\r\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\r\n this.setState({ searchTerm });\r\n };\r\n\r\n /**\r\n * Method to be called updating the store location.\r\n * @param showAllStores - Flag to show all stores.\r\n */\r\n private readonly _getAndUpdateStoreLocation = (showAllStores?: boolean): void => {\r\n const {\r\n config: { style },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n\r\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\r\n // Store selector dialog isn't open yet, so don't try and update anything\r\n return;\r\n }\r\n\r\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\r\n\r\n if (navigator && navigator.geolocation) {\r\n navigator.geolocation.getCurrentPosition(\r\n async position => {\r\n // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\r\n this.setState({ isLocationDisabled: false, isSearchInProgress: true });\r\n if (showAllStores) {\r\n this.setState({ isSeeAllStoreValue: true });\r\n await this._searchTermChanged('');\r\n await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\r\n } else {\r\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\r\n }\r\n\r\n this.setState({ isSearchInProgress: false });\r\n },\r\n async error => {\r\n // If the location setting is turned off\r\n if (error.PERMISSION_DENIED) {\r\n this.setState({ isLocationDisabled: true });\r\n if (showAllStores) {\r\n this.setState({ isSeeAllStoreValue: true });\r\n await this._searchTermChanged('');\r\n await this._updateLocations(void 0, void 0, 0);\r\n } else {\r\n await this._updateLocations();\r\n }\r\n }\r\n\r\n this.setState({ isSearchInProgress: false });\r\n },\r\n { timeout: 5000 }\r\n );\r\n } else {\r\n this.setState({ isSearchInProgress: false });\r\n }\r\n };\r\n\r\n /**\r\n * Method to be called closing the store selector dialog.\r\n * @returns Void promise.\r\n */\r\n private readonly _closeDialog = async (): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n this.setState({ searchTerm: '' });\r\n\r\n if (storeSelectorStateManager) {\r\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\r\n return storeSelectorStateManager.closeDialog();\r\n }\r\n };\r\n\r\n /**\r\n * Method to set store info.\r\n * @param orgUnitStoreInformation - Store Info Object.\r\n * @returns Void promise.\r\n */\r\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n },\r\n config: { style },\r\n telemetry\r\n } = this.props;\r\n\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n\r\n const context = storeSelectorStateManager.context;\r\n const id: string = context && context.id ? context.id : this.props.id;\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n await storeSelectorStateManager\r\n .setOrgUnitStoreInformation({\r\n id,\r\n showMapViewLink: context && context.showMapViewLink,\r\n parentElementRef: context?.parentElementRef,\r\n isDialog: styleDefault === styleEnum.dialog,\r\n orgUnitStoreInformation,\r\n onLocationSelected: async orgUnitLocation => {\r\n // TO-DO handle event for when location in selected\r\n return Promise.resolve();\r\n }\r\n })\r\n .catch((error: Error) => {\r\n if (telemetry) {\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to Update store location state');\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Method to update user location.\r\n * @param latitude - User location.\r\n * @param longitude - User location.\r\n * @param radius - Search Critiria Radius.\r\n * @returns Void promise.\r\n */\r\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\r\n const {\r\n telemetry,\r\n config: { mode, lookupRadius, style },\r\n context: { actionContext },\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\r\n const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\r\n const distanceUnitValue = this.props.config.searchRadiusUnit === searchRadiusUnit.kilometers ? 1 : 0;\r\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\r\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\r\n let lat = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\r\n let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\r\n if (styleDefault === styleEnum.inline) {\r\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\r\n if (lastInlineStoreLocation && !this.state.searchTerm) {\r\n lat = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : lat;\r\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\r\n }\r\n await storeSelectorStateManager?.setLastInlineStoreInfo(lat, long);\r\n }\r\n\r\n if (modeDefault === modeEnum.findStores) {\r\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\r\n lat,\r\n long,\r\n calRadius,\r\n distanceUnitValue,\r\n this.state.isLocationDisabled\r\n );\r\n\r\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\r\n if (orgUnitLocations) {\r\n await this._setOrgUnitStoreInformation(orgUnitLocations);\r\n await this._setSelectedStore(undefined);\r\n }\r\n return;\r\n }\r\n\r\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\r\n // Store selector dialog isn't open yet, so don't try and update anything\r\n return;\r\n }\r\n\r\n if (!storeSelectorStateManager.context.product) {\r\n // TODO: Use alternative search method here to not make inventory check\r\n return;\r\n }\r\n\r\n const input = new GetFullAvailableInventoryNearbyInput(\r\n storeSelectorStateManager.context.product.RecordId,\r\n lat || 0,\r\n long || 0,\r\n calRadius,\r\n distanceUnitValue,\r\n this.state.isLocationDisabled\r\n );\r\n\r\n await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\r\n telemetry.warning(error);\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to get full available inventory near by');\r\n });\r\n };\r\n\r\n /**\r\n * Method to called on store selected.\r\n * @param location - Store Info.\r\n * @param deliveryMode - Pickup mode.\r\n * @returns Void promise.\r\n */\r\n private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\r\n const {\r\n telemetry,\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n if (storeSelectorStateManager) {\r\n if (location && storeSelectorStateManager.context) {\r\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\r\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch(error => {\r\n telemetry.warning(error);\r\n telemetry.error(error.message);\r\n telemetry.debug('Unable to get on org unit location selected');\r\n });\r\n }\r\n\r\n await storeSelectorStateManager.closeDialog();\r\n }\r\n };\r\n\r\n /**\r\n * Method will list of store selector location line.\r\n * @param store -Store Info.\r\n * @param index - List index.\r\n * @param hasEnabledOutOfStockCheck -Stores List.\r\n * @param isStoreLocatorView -Module config value.\r\n * @param preferredStoreLocationId -Store Id.\r\n * @param isPreferredStoreEnabled -Stores List.\r\n * @param selectedStoreLocationId -Module config value.\r\n * @param preferredDistanceUnit -Module config value.\r\n * @param alreadySelectedLocation -Already Selected Location.\r\n * @param productPickUpOptionList -Product supported Pickup Modes List.\r\n * @returns StoreSelectorLocation Line Prop.\r\n */\r\n private _createStoreLocationList(\r\n store: IFullOrgUnitAvailability,\r\n index: number,\r\n hasEnabledOutOfStockCheck: boolean,\r\n isStoreLocatorView: boolean,\r\n preferredStoreLocationId: string,\r\n isPreferredStoreEnabled: boolean | undefined,\r\n selectedStoreLocationId: string | undefined,\r\n preferredDistanceUnit?: string | undefined,\r\n alreadySelectedLocation?: OrgUnitLocation,\r\n productPickUpOptionList?: DeliveryOption[]\r\n ): IStoreSelectorLocationLineItemProps | undefined {\r\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\r\n const selectedStoreLocation = selectedStoreLocationId;\r\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\r\n const lineResources = this._mapResources(this.props.resources);\r\n const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom);\r\n const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo);\r\n const storeHours = store.StoreHours;\r\n\r\n if (orgUnitLocation) {\r\n ++this.storeCounter;\r\n return {\r\n location: orgUnitLocation,\r\n selectedStoreLocationId: selectedStoreLocation,\r\n storeHours,\r\n resources: lineResources,\r\n preferredDistanceUnit: preferredDistanceUnit!,\r\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\r\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store?.OrgUnitAvailability?.ItemAvailabilities),\r\n stockStatusLabel: this._stockInventoryLabel(store),\r\n storeLocatorView: isStoreLocatorView,\r\n index: this.storeCounter.toString(),\r\n preferredStoreLocationId,\r\n isPreferredStoreEnabled,\r\n telemetryContent: this.telemetryContent,\r\n isLocationDisabled: this.state.isLocationDisabled,\r\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\r\n productPickUpOptionList,\r\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\r\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\r\n onClick: this._setSelectedStore,\r\n handlers: {\r\n onSelected: this._onOrgUnitLocationSelected,\r\n onSetAsPreferredStore: this._setPreferredStore,\r\n onRemovePreferredStore: this._removePreferredStore\r\n }\r\n };\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Method to map resources with Location Item.\r\n * @param resources - List of strings for module.\r\n * @returns Resources for StoreSelector location line.\r\n */\r\n private readonly _mapResources = (resources: ICzStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\r\n return {\r\n contactInfoHeader: resources.contactText,\r\n storeHoursHeader: resources.timeText,\r\n availabilityInfoHeader: resources.availabilityText,\r\n\r\n closedText: resources.storeHoursClosedText,\r\n outOfStock: resources.outOfStockText,\r\n inStock: resources.inStockText,\r\n\r\n currentLocation: resources.selectedStoreLocationText,\r\n selectLocation: resources.selectStoreText,\r\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\r\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\r\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\r\n preferredStoreText: resources.preferredStoreText,\r\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\r\n\r\n days: {\r\n monday: resources.storeHoursMondayText,\r\n tuesday: resources.storeHoursTuesdayText,\r\n wednesday: resources.storeHoursWednesdayText,\r\n thursday: resources.storeHoursThursdayText,\r\n friday: resources.storeHoursFridayText,\r\n saturday: resources.storeHoursSaturdayText,\r\n sunday: resources.storeHoursSundayText,\r\n mondayFull: resources.storeHoursMondayFullText,\r\n tuesdayFull: resources.storeHoursTuesdayFullText,\r\n wednesdayFull: resources.storeHoursWednesdayFullText,\r\n thursdayFull: resources.storeHoursThursdayFullText,\r\n fridayFull: resources.storeHoursFridayFullText,\r\n saturdayFull: resources.storeHoursSaturdayFullText,\r\n sundayFull: resources.storeHoursSundayFullText\r\n }\r\n };\r\n };\r\n\r\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\r\n (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\r\n\r\n /**\r\n * Method to get stock.\r\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\r\n * @param itemAvailabilities - Item quantity availablity.\r\n * @returns Boolean value for item stock.\r\n */\r\n private readonly _isProductInStock = (\r\n hasEnableOutOfStockCheck: boolean,\r\n itemAvailabilities: ItemAvailability[] | undefined\r\n ): boolean => {\r\n if (!hasEnableOutOfStockCheck) {\r\n return true;\r\n }\r\n const quantityCount = 0;\r\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\r\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n /**\r\n * Method to get stocklevel label.\r\n * @param isInStock - Stock available in store.\r\n * @returns Label for stock status.\r\n */\r\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\r\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\r\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\r\n if (\r\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\r\n isInStock.ProductInventoryInformation[index].InventLocationId\r\n ) {\r\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\r\n }\r\n }\r\n }\r\n\r\n return undefined;\r\n };\r\n private readonly checkRedirectUriAvailable = () => {\r\n if (window && window.location && window.location.href) {\r\n const params = new URLSearchParams(this.props.context.request.url.requestUrl.search);\r\n if (params.has('redirectUri')) {\r\n this.redirectUri = params.get('redirectUri');\r\n } else {\r\n const request = this.props.context.request;\r\n let homePageUrl = request.url.requestUrl.origin;\r\n if (request.sitePath) {\r\n homePageUrl = homePageUrl + request.sitePath;\r\n }\r\n this.redirectUri = `${homePageUrl}/homepage`;\r\n }\r\n }\r\n };\r\n}\r\n\r\nexport default StoreSelector;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IStoreSelectorViewProps } from './cz-store-selector';\r\n\r\nconst StoreSelectorView: React.FC = props => {\r\n const {\r\n BodyContainerProps,\r\n FooterContainerProps,\r\n HeaderContainerProps,\r\n HeaderProps,\r\n ModuleProps,\r\n\r\n // HeaderText,\r\n locationsMessage,\r\n search,\r\n state,\r\n spinner,\r\n locationsList,\r\n noLocationsMessage,\r\n terms\r\n } = props;\r\n\r\n return (\r\n \r\n {HeaderProps}\r\n \r\n {locationsMessage}\r\n {search}\r\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\r\n \r\n {terms}\r\n \r\n );\r\n};\r\n\r\nexport default StoreSelectorView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IAccountGenericTileViewProps } from '@msdyn365-commerce-modules/account-management';\r\nconst AccountGenericTileView: React.FC = props => {\r\n const { AccountGenericTile, heading, links } = props;\r\n\r\n return (\r\n \r\n {heading}\r\n

View or Edit Profile

\r\n {links}\r\n
\r\n );\r\n};\r\n\r\nexport default AccountGenericTileView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IBreadcrumbViewProps } from '@msdyn365-commerce-modules/breadcrumb/src/modules/breadcrumb/breadcrumb';\r\n\r\nconst BreadCrumbView: React.FC = props => {\r\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem } = props;\r\n if (!root && !links && !backButton) {\r\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\r\n return null;\r\n }\r\n return (\r\n \r\n \r\n {root &&\r\n \r\n {root}\r\n {links && |}\r\n }\r\n {backButton &&\r\n \r\n {backButton}\r\n }\r\n {links && links.map((link, index) => (\r\n \r\n \r\n {link}\r\n {links[index + 1] && |}\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default BreadCrumbView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * ICartIconData: Interface for Cart Icon Data.\r\n */\r\nexport interface ICartIconData {\r\n cart?: ICartState;\r\n}\r\n\r\n/**\r\n * ICartIconComponentProps: Interface for Cart Icon component props.\r\n */\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n cartQtyLabel: string;\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\n/**\r\n * ICartIconComponent: Interface for Cart Icon component.\r\n */\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\nconst CartIconComponentActions = {};\r\n\r\n/**\r\n *\r\n * CartIcon component.\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, cartQtyLabel, data: { cart } } = props;\r\n const defaultCartItemCount: number = 0;\r\n\r\n // If there are invoice lines, don't update mini cart item quantity\r\n let cartItem = defaultCartItemCount;\r\n\r\n if (cart) {\r\n cartItem = cart.hasInvoiceLine ? defaultCartItemCount : cart.totalItemsInCart;\r\n }\r\n\r\n let qtyLabel: string = '';\r\n const cartMaxQuantity: number = 99;\r\n const maxQuantityLabel: string = '99+';\r\n if (cartItem > cartMaxQuantity) {\r\n qtyLabel = maxQuantityLabel;\r\n } else {\r\n qtyLabel = format(cartQtyLabel, cartItem);\r\n }\r\n const label = format(cartLabel, cartItem);\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\r\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n const style: React.CSSProperties = {\r\n visibility: cart ? 'visible' : 'hidden'\r\n };\r\n return (\r\n \r\n
\r\n {qtyLabel}\r\n
\r\n
\r\n );\r\n});\r\n\r\n// @ts-expect-error -- Compatible issue with the component override.\r\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'CartIcon',\r\n { component: CartIcon, ...CartIconComponentActions }\r\n);\r\n\r\nexport default CartIconComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * ICartIconData: Interface for Cart Icon Data.\r\n */\r\nexport interface ICartIconData {\r\n cart?: ICartState;\r\n}\r\n\r\n/**\r\n * ICartIconComponentProps: Interface for Cart Icon component props.\r\n */\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n cartQtyLabel: string;\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\n/**\r\n * ICartIconComponent: Interface for Cart Icon component.\r\n */\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\nconst CartIconComponentActions = {};\r\n\r\n/**\r\n *\r\n * CartIcon component.\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, cartQtyLabel, data: { cart } } = props;\r\n const defaultCartItemCount: number = 0;\r\n\r\n // If there are invoice lines, don't update mini cart item quantity\r\n let cartItem = defaultCartItemCount;\r\n\r\n if (cart) {\r\n cartItem = cart.hasInvoiceLine ? defaultCartItemCount : cart.totalItemsInCart;\r\n }\r\n\r\n let qtyLabel: string = '';\r\n const cartMaxQuantity: number = 99;\r\n const maxQuantityLabel: string = '99+';\r\n if (cartItem > cartMaxQuantity) {\r\n qtyLabel = maxQuantityLabel;\r\n } else {\r\n qtyLabel = format(cartQtyLabel, cartItem);\r\n }\r\n const label = format(cartLabel, cartItem);\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\r\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n const style: React.CSSProperties = {\r\n visibility: cart ? 'visible' : 'hidden'\r\n };\r\n return (\r\n \r\n
\r\n {qtyLabel}\r\n
\r\n \r\n );\r\n});\r\n\r\n// @ts-expect-error -- Compatible issue with the component override.\r\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'CartIcon',\r\n { component: CartIcon, ...CartIconComponentActions }\r\n);\r\n\r\nexport default CartIconComponent;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Button, format, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\n/**\r\n * IPromoCodeProps: Interface for promo code component.\r\n */\r\nexport interface IPromoCodeProps extends IComponentProps<{}> {\r\n cart: ICartState | undefined;\r\n promoCodeHeadingText: string;\r\n appliedPromoCodeHeadingText: string;\r\n removePromoAriaLabelFormat: string;\r\n promoPlaceholderText: string;\r\n promoCodeApplyButtonText: string;\r\n collapseTimeOut: number;\r\n removePromoText: string;\r\n invalidPromoCodeErrorText: string;\r\n failedToAddPromoCodeErrorText: string;\r\n duplicatePromoCodeErrorText: string;\r\n failedToRemovePromoCodeErrorText: string;\r\n\r\n /** The telemetry content. */\r\n telemetryContent?: ITelemetryContent;\r\n promoCodeApplyCallback?(): void;\r\n}\r\n\r\n/**\r\n * IPromoCodeProps: Interface for promo code component.\r\n */\r\nexport interface IPromoCodeComponent extends IComponent { }\r\n\r\n/**\r\n * IPromoCodeProps: Interface for promo code state.\r\n */\r\ninterface IPromoCodeState {\r\n promoCodeInputValue: string;\r\n error: string;\r\n canApply: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * The PromoCode component renders the promocode section.\r\n * @extends {React.PureComponent}\r\n */\r\nclass PromoCode extends React.PureComponent {\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n public constructor(props: IPromoCodeProps) {\r\n super(props);\r\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\r\n this.state = {\r\n promoCodeInputValue: '',\r\n error: '',\r\n canApply: false\r\n };\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\r\n
\r\n
\r\n {this.props.promoCodeHeadingText}\r\n
\r\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\r\n

\r\n {this.state.error}\r\n

\r\n {this._renderAppliedPromoCode(this.props)}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * On input change method.\r\n * @param event - Change event.\r\n */\r\n private readonly _onInputChangeHandler = (event: React.ChangeEvent) => {\r\n const error = event.target.value === '' ? '' : this.state.error;\r\n this.setState({\r\n promoCodeInputValue: event.target.value, error,\r\n canApply: !!event.target.value\r\n });\r\n };\r\n\r\n /**\r\n * Apply promo code method.\r\n * @param cartState - Cart state interface.\r\n */\r\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\r\n if (!cartState) {\r\n return;\r\n }\r\n const appliedPromo = this.state.promoCodeInputValue;\r\n\r\n cartState.addPromoCode({ promoCode: appliedPromo })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n // Show success text\r\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\r\n } else if (result.substatus === 'ALREADYADDED') {\r\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\r\n } else {\r\n this.setState({ error: this.props.invalidPromoCodeErrorText });\r\n }\r\n })\r\n .catch(() => {\r\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\r\n });\r\n };\r\n\r\n /**\r\n * On submit action.\r\n * @param cartState - Cart state.\r\n * @returns Apply promotion.\r\n */\r\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\r\n event.preventDefault();\r\n this._applyPromotion(cartState);\r\n };\r\n\r\n /**\r\n * On apply promotion.\r\n * @param cartState - Cart state.\r\n * @returns Apply promotion.\r\n */\r\n private readonly applyPromotionHandler = (cartState: ICartState | undefined) => () => {\r\n this._applyPromotion(cartState);\r\n };\r\n\r\n /**\r\n * Renders promo code form.\r\n * @param promoPlaceholderText - Promo code input box placeholder string.\r\n * @param promoCodeApplyButtonText - Promo code button text string.\r\n * @param cartState - Cart state interface.\r\n * @returns Promo code form.\r\n */\r\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\r\n\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\r\n\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n /**\r\n * Remove promo code method.\r\n * @param cartState - Cart state interface.\r\n * @param event - Mouse event.\r\n */\r\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\r\n if (!cartState) {\r\n return;\r\n }\r\n const code = event.currentTarget.getAttribute('data-value') ?? '';\r\n cartState.removePromoCodes({\r\n promoCodes: [code]\r\n })\r\n .then(result => {\r\n if (result.status === 'SUCCESS') {\r\n this.setState({ error: '' });\r\n }\r\n })\r\n .catch(() => {\r\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\r\n });\r\n\r\n };\r\n\r\n /**\r\n * Renders applied promo code form.\r\n * @param props - Promo code component props.\r\n * @returns Applied promo code.\r\n */\r\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\r\n if (!props.cart || !props.cart.cart.Coupons || !ArrayExtensions.hasElements(props.cart.cart.Coupons)) {\r\n return;\r\n }\r\n\r\n /**\r\n * On remove promotion action.\r\n * @param event - Mouse event.\r\n */\r\n const removePromotionHandler = (event: React.MouseEvent) => {\r\n this._removePromotion(props.cart, event);\r\n };\r\n\r\n return (\r\n <>\r\n {\r\n props.cart.cart.Coupons.map((coupon: Coupon) => {\r\n const ariaLabel = props.removePromoAriaLabelFormat ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code) : '';\r\n\r\n return (\r\n
\r\n
\r\n {'Code '}\r\n \r\n {coupon.Code}\r\n \r\n {'Applied '}\r\n\r\n
\r\n \r\n
\r\n );\r\n })\r\n }\r\n \r\n );\r\n };\r\n}\r\n\r\nexport default PromoCode;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHeader,\r\n IList,\r\n IOrderHistoryViewProps,\r\n IOrderInformation,\r\n ISalesOrder\r\n} from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { getFallbackImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IGridSettings, IImageSettings, Image, IRequestContext } from '@msdyn365-commerce/core';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { SalesLineState } from '@msdyn365-commerce-modules/order-management/src/common/sales-line-state';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId\r\n }) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({\r\n deliveryProps,\r\n heading,\r\n count,\r\n processing,\r\n address,\r\n trackingInfo\r\n }) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\ninterface IGroup2 extends IGroup {\r\n moduleProps: any;\r\n}\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines, moduleProps }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n \r\n \r\n ))}\r\n \r\n )}\r\n \r\n);\r\ninterface IGroups2 extends IGroups {\r\n moduleProps: any;\r\n}\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups, moduleProps }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\ninterface ISalesOrder2 extends ISalesOrder {\r\n moduleProps: any;\r\n}\r\nexport const OrderHistorySalesOder: React.FC = ({\r\n salesOrderProps,\r\n orderInfomation,\r\n groups,\r\n orderDetailsLink,\r\n expandProductsButton,\r\n moduleProps\r\n }) => (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {expandProductsButton}\r\n {orderDetailsLink}\r\n \r\n);\r\n\r\ninterface IList2 extends IList {\r\n moduleProps: any;\r\n}\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders, moduleProps }) => (\r\n \r\n {salesOrders &&\r\n salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n table,\r\n moreButton\r\n }) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n \r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {table}\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nconst SalesLineImageComponent: (props: any) => false | any = (props: any) => {\r\n const productName = props.data.product?.Name ?? props.data.salesLine.Description;\r\n const requestContext = props.moduleProps.moduleProps.context.actionContext.requestContext;\r\n const fallbackImageUrl = getFallbackImageUrl(props.data.product?.ItemId, requestContext.apiSettings);\r\n return getSalesLineImage(\r\n 'ms-order-history',\r\n requestContext,\r\n productName,\r\n props.data.product,\r\n fallbackImageUrl,\r\n requestContext.gridSettings!,\r\n props.moduleProps.moduleProps.config.imageSettings,\r\n props.data.salesLineState,\r\n props.data.salesLine\r\n );\r\n};\r\n\r\nconst getSalesLineImage = (\r\n moduleName: string,\r\n requestContext: IRequestContext,\r\n productName: string | undefined,\r\n product: SimpleProduct | undefined,\r\n fallbackImageUrl: string | undefined,\r\n gridSettings: IGridSettings,\r\n imageSettings: IImageSettings | undefined,\r\n salesLineState?: SalesLineState,\r\n salesLine?: any\r\n) => {\r\n let productUrl = product?.PrimaryImageUrl ?? '';\r\n if (salesLine.ExtensionProperties && salesLine.ExtensionProperties.length > 0) {\r\n const imageUrl = salesLine.ExtensionProperties.find((e: any) => {\r\n return e.Key === 'AAA_RETAILIMAGEURL';\r\n });\r\n if (imageUrl && imageUrl.Value && imageUrl.Value.StringValue) {\r\n productUrl = imageUrl.Value.StringValue;\r\n }\r\n }\r\n return (\r\n !salesLineState?.isHidden && (\r\n
\r\n \r\n
\r\n )\r\n );\r\n};\r\n\r\nexport default OrderHistoryView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IOrderTemplateListViewProps, ISingleOrderTemplateViewProps } from '@msdyn365-commerce-modules/order-template';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IOrderTemplateListProps, IOrderTemplateListResources } from '../definition-extensions/order-template-list.ext.props.autogenerated';\r\n\r\n/**\r\n * Interface for OrderTemplateImage.\r\n */\r\ninterface IOrderTemplateImage {\r\n props: {\r\n children: React.ReactElement[];\r\n };\r\n}\r\n\r\n/**\r\n * To render order template.\r\n * @param orderTemplate - The order template view props.\r\n * @param orderTemplateNodeProps - The order template node props.\r\n * @returns The JSX Element.\r\n */\r\nconst renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, orderTemplateNodeProps?: INodeProps): JSX.Element | null => {\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\r\n\r\n const orderTemplateImageElement: IOrderTemplateImage = orderTemplateImage as React.ReactElement;\r\n const currentImageListLength = orderTemplateImageElement.props.children.length;\r\n const defaultNumberImagesInTile = 4;\r\n\r\n if (currentImageListLength < defaultNumberImagesInTile) {\r\n for (let index = 0; index < defaultNumberImagesInTile - currentImageListLength; index++) {\r\n orderTemplateImageElement.props.children.push();\r\n }\r\n }\r\n\r\n return (\r\n \r\n {orderTemplateName}\r\n {orderTemplateImage}\r\n {addToCartButton}\r\n {removeButton}\r\n {orderTemplateStatusMessage}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Order Template List View.\r\n * @param props - The view props.\r\n * @returns The JSX Element.\r\n */\r\nexport const OrderTemplateListViewComponent: React.FC> = props => {\r\n const {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file\r\n OrderTemplateList, OrderTemplates, OrderTemplate,\r\n status,\r\n statusMessage,\r\n heading,\r\n orderTemplates,\r\n createOrderTemplateButton,\r\n templateHeaderStatusMessage\r\n } = props;\r\n\r\n return (\r\n \r\n {heading}\r\n {status !== 'SUCCESS' && statusMessage}\r\n \r\n {status === 'SUCCESS' &&\r\n (!OrderTemplates || !orderTemplates ||\r\n !ArrayExtensions.hasElements(orderTemplates)) ? (\r\n
\r\n

\r\n {props.resources.headingForEmptyOrderTemplateList}\r\n

\r\n

\r\n {props.resources.textForEmptyOrderTemplateList}\r\n

\r\n {createOrderTemplateButton}\r\n
\r\n ) : createOrderTemplateButton}\r\n {templateHeaderStatusMessage}\r\n
\r\n { OrderTemplates && orderTemplates && ArrayExtensions.hasElements(orderTemplates) &&\r\n \r\n {orderTemplates.map((orderTemplate) => {\r\n return renderOrderTemplate(orderTemplate, OrderTemplate);\r\n })}\r\n }\r\n
\r\n );\r\n};\r\n\r\nexport default OrderTemplateListViewComponent;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ILinkData } from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILinksData {\n linkText?: string;\n linkUrl: ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n}\n\nexport interface IAccountLoyaltyTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nconst AccountLoyaltyTileLinks: React.FC = ({ links, telemetryContent, onTextChange, requestContext }) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-loyalty-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n\nexport default AccountLoyaltyTileLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { LoyaltyRewardPoint } from '@msdyn365-commerce/retail-proxy';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyTileData } from './account-loyalty-tile.data';\nimport { IAccountLoyaltyTileProps } from './account-loyalty-tile.props.autogenerated';\nimport DescriptionComponent from './components/account-loyalty-tile-description';\nimport LinksComponent from './components/account-loyalty-tile-links';\n\nexport interface IAccountLoyaltyTileViewProps extends IAccountLoyaltyTileProps {\n AccountLoyaltyTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountLoyalty component.\n * @extends {React.PureComponent>}\n */\nclass AccountLoyaltyTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountLoyaltyTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, data, resources, context } = this.props;\n const { className, heading, signUpLinkText, signUpLinkAriaLabel, viewLinkText, viewLinkAriaLabel } = config;\n const { accountLoyaltySummary, accountLoyaltyMemberSummary } = resources;\n const { loyaltyCard } = data;\n\n let description = accountLoyaltySummary;\n let url = Msdyn365.getUrlSync('loyaltyJoin', context.actionContext) || '';\n const link = { linkText: signUpLinkText, linkUrl: { destinationUrl: url }, ariaLabel: signUpLinkAriaLabel };\n\n if (loyaltyCard && loyaltyCard.result && loyaltyCard.result.CardNumber) {\n const decimalPrecision = 2;\n let points = 0;\n\n if (loyaltyCard.result.RewardPoints && loyaltyCard.result.RewardPoints.length > 0) {\n loyaltyCard.result.RewardPoints.forEach((rewardPoint: LoyaltyRewardPoint) => {\n points += rewardPoint.ActivePoints!;\n });\n }\n link.ariaLabel = viewLinkAriaLabel;\n link.linkText = viewLinkText;\n url = Msdyn365.getUrlSync('loyalty', context.actionContext) || '';\n link.linkUrl.destinationUrl = url;\n description = format(accountLoyaltyMemberSummary, points.toFixed(decimalPrecision));\n }\n\n const viewProps = {\n ...this.props,\n className,\n AccountLoyaltyTile: {\n moduleProps: this.props,\n className: classnames('ms-account-loyalty-tile', config.className)\n },\n heading: heading && (\n \n ),\n links: (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.signUpLinkText && this.props.config.viewLinkText) {\n this.props.config.viewLinkText = event.target.value;\n }\n };\n}\n\nexport default AccountLoyaltyTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountLoyaltyTileViewProps } from './account-loyalty-tile';\n\nconst AccountLoyaltyTileView: React.FC = props => {\n const { AccountLoyaltyTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountLoyaltyTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\ninterface IAccountLoyaltyTileDescription {\n description: string;\n}\n\n// eslint-disable-next-line no-redeclare\nconst IAccountLoyaltyTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n\nexport default IAccountLoyaltyTileDescription;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountOrderTemplatesTileDescription {\n description: string;\n}\n\nexport const AccountOrderTemplatesTileDescription: React.FC = ({ description }) => (\n

{description}

\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../account-order-templates-tile.props.autogenerated';\n\nexport interface IAccountOrderTemplatesTileLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const AccountOrderTemplatesTileLinks: React.FC = ({\n links,\n onTextChange,\n telemetryContent,\n requestContext\n}) => {\n if (links.length === 0) {\n return null;\n }\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent?: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n const payLoad = getPayloadObject('click', telemetryContent!, '');\n linkdata.forEach((link, index) => {\n payLoad.contentAction.etext = link.linkText;\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-account-order-templates-tile__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { format, getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IAccountOrderTemplatesTileData } from './account-order-templates-tile.data';\nimport { IAccountOrderTemplatesTileProps } from './account-order-templates-tile.props.autogenerated';\nimport { AccountOrderTemplatesTileDescription, AccountOrderTemplatesTileLinks } from './components';\n\nexport interface IAccountOrderTemplatesTileViewProps extends IAccountOrderTemplatesTileProps {\n AccountOrderTemplatesTile: IModuleProps;\n className: string;\n heading?: React.ReactNode;\n links?: React.ReactNode;\n description?: React.ReactNode;\n}\n\n/**\n *\n * AccountOrderTemplatesTile component.\n * @extends {React.PureComponent>}\n */\nexport class AccountOrderTemplatesTile extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: IAccountOrderTemplatesTileProps) {\n super(props);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public render(): JSX.Element {\n const { config, resources, data } = this.props;\n const RetailB2BEcommerceFeatureState = this.props.data.featureState.result?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailB2BEcommerceFeature'\n );\n if (\n !this.props.context.request.params.isEditor &&\n (!RetailB2BEcommerceFeatureState?.IsEnabled || !this.props.data.customerInformation.result?.IsB2b)\n ) {\n return <>;\n }\n\n const { className, heading, links } = config;\n const { accountOrderTemplatesTileDescription } = resources;\n const orderTemplates = data.orderTemplates;\n\n const orderTemplatesCount = (orderTemplates?.result || []).length;\n const description = format(accountOrderTemplatesTileDescription, orderTemplatesCount);\n\n const viewProps = {\n ...this.props,\n className,\n AccountOrderTemplatesTile: {\n moduleProps: this.props,\n className: classnames('ms-account-order-templates-tile', config.className)\n },\n heading: heading && heading.text && (\n \n ),\n links: links && links.length > 0 && (\n \n ),\n description: \n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => {\n this.props.config.heading.text = event.target.value;\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[linkIndex]) {\n this.props.config.links[linkIndex].linkText = event.target.value;\n }\n };\n}\n\nexport default AccountOrderTemplatesTile;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAccountOrderTemplatesTileViewProps } from './account-order-templates-tile';\n\nconst AccountOrderTemplatesTileView: React.FC = props => {\n const { AccountOrderTemplatesTile, heading, description, links } = props;\n\n return (\n \n {heading}\n {description}\n {links}\n \n );\n};\n\nexport default AccountOrderTemplatesTileView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst PasswordResetButton: React.FC = ({ id, className, text, ariaLabel, disabled, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n\nexport default PasswordResetButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IPasswordResetErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst PasswordResetError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default PasswordResetError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPasswordResetInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IPasswordResetInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst PasswordResetInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default PasswordResetInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst PasswordResetLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default PasswordResetLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingIcon {\n className: string;\n}\n\nconst PasswordResetLoadingIcon: React.FC = ({ className }) =>
;\n\nexport default PasswordResetLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IPasswordResetLoadingMessage {\n className: string;\n message: string;\n}\n\nconst PasswordResetLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default PasswordResetLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { PasswordRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport PasswordResetButtonComponent from './components/password-reset-button';\nimport PasswordResetErrorComponent from './components/password-reset-error';\nimport PasswordResetInputComponent from './components/password-reset-input';\nimport PasswordResetLabelComponent from './components/password-reset-label';\nimport PasswordResetLoadingIconComponent from './components/password-reset-loading-icon';\nimport PasswordResetLoadingMessageComponent from './components/password-reset-loading-message';\nimport { IPasswordResetConfig, IPasswordResetProps } from './password-reset.props.autogenerated';\n\nexport interface IPasswordResetViewState {\n isShowLoading: boolean;\n}\n\nexport interface IPasswordResetItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IPasswordResetLocalAccount {\n localAccount: INodeProps;\n items: IPasswordResetItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IPasswordResetLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IPasswordResetViewProps {\n className: string;\n viewState: IPasswordResetViewState;\n loading: IPasswordResetLoading;\n passwordReset: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n passwordResetLocalAccount: IPasswordResetLocalAccount;\n}\n\n/**\n *\n * PasswordReset component.\n * @extends {React.Component>}\n */\n@observer\nclass PasswordReset extends React.Component> {\n private readonly moduleClassName: string = 'ms-password-reset';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable private newPasswordRegex: string;\n\n @observable private reenterPasswordRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IPasswordResetProps) {\n super(props);\n\n this.newPasswordRegex = PasswordRegex.defaultRegex.source;\n this.reenterPasswordRegex = PasswordRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(nextProps: IPasswordResetProps, nextState: IPasswordResetViewState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n passwordReset: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && (\n \n ),\n passwordResetLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map((obj: { ID: string; PAT: string }) => {\n switch (obj.ID.toLowerCase()) {\n case 'newpassword': {\n this.newPasswordRegex = obj.PAT;\n break;\n }\n case 'reenterpassword': {\n this.reenterPasswordRegex = obj.PAT;\n break;\n }\n default:\n }\n });\n }\n };\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IPasswordResetLocalAccount {\n const { resources } = this.props;\n return {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('newPassword', 'password', resources.newPasswordLabelText, this.newPasswordRegex),\n this._renderInput('reenterPassword', 'password', resources.confirmPasswordLabelText, this.reenterPasswordRegex)\n ],\n errorMessage: [\n ,\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n }\n\n private _renderInput(id: string, type: string, labelText: string, pattern?: string): IPasswordResetItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default PasswordReset;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IPasswordResetItem, IPasswordResetLoading, IPasswordResetLocalAccount, IPasswordResetViewProps } from './password-reset';\n\nconst PasswordResetItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IPasswordResetItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst PasswordResetLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst PasswordResetView: React.FC = props => {\n const { passwordReset, viewState, loading, defaultAADConainer, aadConainer, heading, passwordResetLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(passwordResetLocalAccount)}\n \n \n );\n};\n\nexport default PasswordResetView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAdditionalContentData, ILinksData } from '../content-block.props.autogenerated';\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Component props.\n */\nexport interface IContentBlockAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData[] | undefined;\n handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content view props.\n */\nexport interface IContentBlockAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IContentBlockAdditionalContentItemViewProps[];\n}\n\n/**\n * IContentBlockAdditionalContentProps: Interface for\n * Content Block Additional Content Item view props.\n */\nexport interface IContentBlockAdditionalContentItemViewProps {\n heading: React.ReactNode;\n text: React.ReactNode;\n links: React.ReactNode;\n additionalContentItemContainer: INodeProps;\n additionalContentItemLinks: INodeProps;\n}\n\n/**\n * Renders additional content heading.\n * @param additionalContentHeading - Additional content heading.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param additionalContentParagraphText - Additional content paragraph text.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IContentBlockAdditionalContentProps, itemIndex: number) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IContentBlockAdditionalContentProps, itemIndex: number, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-content-block__details__additional-content-cta-links',\n linkText: ctaLink.linkText,\n linkUrl: ctaLink.linkUrl.destinationUrl,\n openInNewTab: ctaLink.openInNewTab,\n role: 'link'\n };\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalLinkTextChange(linkIndex, itemIndex, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Content block additonal content item props.\n * @param props - Content Block Additional content component props.\n * @param itemIndex - Item index.\n * @returns IContentBlockAdditionalContentItemViewProps.\n */\nconst assembleNode = (\n item: IAdditionalContentData,\n props: IContentBlockAdditionalContentProps,\n itemIndex: number\n): IContentBlockAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props, itemIndex);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props, itemIndex);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, itemIndex, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-content-block__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-content-block__details__additional-content-cta' }\n };\n};\n\n/**\n * ContentBlockAdditionalContent component.\n * @param props - Content Block Additional content component props.\n * @returns Content Block Additional content view props.\n */\nexport const contentBlockAdditionalContent = (\n props: IContentBlockAdditionalContentProps\n): IContentBlockAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IContentBlockAdditionalContentItemViewProps[] = [];\n additionalContent.map((item, index: number) => {\n return reactNodes.push(assembleNode(item, props, index));\n });\n\n return {\n additionalContentNode: { className: 'ms-content-block__details__additional-content' },\n additionalContentItems: reactNodes\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../content-block.props.autogenerated';\n\nexport interface IContentCardLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n role?: string;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class ContentCardLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n
\n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n
\n );\n }\n\n private readonly _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: btnClass,\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: this.props.role,\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\nexport default ContentCardLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { contentBlockAdditionalContent, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport LinksComponent from './components/links';\nimport { actionableRegion as region, IContentBlockConfig, IContentBlockProps } from './content-block.props.autogenerated';\n\nexport interface IContentBlockViewProps extends IContentBlockProps<{}> {\n title?: React.ReactNode;\n text?: React.ReactNode;\n image?: React.ReactNode;\n links?: React.ReactNode;\n className?: string;\n contentBlockContainer: IModuleProps;\n imageContainer: INodeProps;\n detailsContainer: INodeProps;\n contentBlockAnchorTag?: INodeProps;\n imageLink?: string;\n imageAriaLabel?: string;\n additionalContent?: IContentBlockAdditionalContentViewProps;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleAdditionalLinkTextChange?(): void;\n}\n\n/**\n * Site-builder configuration for the module.\n */\nexport interface IContentBlockFullConfig extends IContentBlockConfig {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\n msdyn365__moduleLayout?: string;\n}\n\n/**\n * ContentCard component.\n * @extends {React.PureComponent}\n */\nexport class ContentBlock extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { heading, paragraph, image, links, className, imageAriaLabel } = this.props.config;\n const contentBlockTitle = heading && (\n \n );\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings ?? {},\n imageSettings: image?.imageSettings\n };\n const contentBlockLinks = links && ArrayExtensions.hasElements(links) && (\n \n );\n const contentBlockText = paragraph && (\n \n );\n const contentBlockImage = (\n \n );\n\n if (!contentBlockTitle && !contentBlockText && !contentBlockLinks) {\n this.props.context.telemetry.error('Content block content is empty, module wont render.');\n return null;\n }\n const contentBlockviewProps = {\n ...this.props,\n title: contentBlockTitle,\n text: contentBlockText,\n image: contentBlockImage,\n links: contentBlockLinks,\n moduleClass: this.props.config.className,\n contentBlockContainer: {\n moduleProps: this.props,\n className: classnames('ms-content-block', className)\n },\n imageContainer: { className: 'ms-content-block__image' },\n detailsContainer: { className: 'ms-content-block__details' },\n contentBlockAnchorTag: {\n tag: 'a',\n className: 'ms-content-block__link',\n role: 'link'\n },\n imageLink: this._getImageLink(),\n imageAriaLabel,\n additionalContent: contentBlockAdditionalContent({\n requestContext: this.props.context.request,\n additionalContent: this.props.config.additionalContent,\n handleAdditionalTextChange: this.handleAdditionalTextChange,\n handleAdditionalParagraphChange: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n }),\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleAdditionalLinkTextChange: this.handleAdditionalLinkTextChange\n };\n\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\n }\n\n /**\n * To handle text change.\n * @param event - To handle text change event.\n * @name - HandleTextChange\n * @public\n * @returns - The Text value.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n /**\n * To handle paragraph change.\n * @param event - To handle text change event.\n * @name - HandleParagraphChange\n * @public\n * @returns - The Paragraph value.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @returns - Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.links && this.props.config.links[Number(linkIndex)]) {\n this.props.config.links[Number(linkIndex)].linkText = event.target.value;\n }\n };\n\n public handleAdditionalTextChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].heading = event.target.value;\n }\n }\n\n public handleAdditionalLinkTextChange(linkIndex: number, index: number, event: Msdyn365.ContentEditableEvent): void {\n const additionalContentObject =\n (this.props.config.additionalContent &&\n ArrayExtensions.hasElements(this.props.config.additionalContent) &&\n this.props.config.additionalContent[Number(index)]) ||\n {};\n if (additionalContentObject.links) {\n additionalContentObject.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n public handleAdditionalParagraphChange(index: number, event: Msdyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent[Number(index)].subtext = event.target.value;\n }\n }\n\n private _getImageLink(): string | null {\n const { imageLink, links, actionableRegion } = this.props.config;\n if (actionableRegion === region.imageAndLinks) {\n if (imageLink?.destinationUrl) {\n return imageLink.destinationUrl;\n } else if (links && ArrayExtensions.hasElements(links) && links[0].linkUrl) {\n return links[0].linkUrl.destinationUrl;\n }\n return null;\n }\n return null;\n }\n}\n\nexport default ContentBlock;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IContentBlockAdditionalContentItemViewProps, IContentBlockAdditionalContentViewProps } from './components/additional-content';\nimport { IContentBlockViewProps } from './content-block';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IContentBlockAdditionalContentViewProps) => {\n return (\n \n {additionalContent.additionalContentItems?.map((item: IContentBlockAdditionalContentItemViewProps) => {\n return (\n <>\n {item.heading}\n \n {item.text}\n {item.links}\n \n \n );\n })}\n \n );\n};\n\nconst ContentBlockView: React.FC = props => {\n const {\n contentBlockContainer,\n imageContainer,\n detailsContainer,\n title,\n text,\n links,\n image,\n contentBlockAnchorTag,\n imageLink,\n imageAriaLabel,\n additionalContent\n } = props;\n\n if (imageLink) {\n return (\n \n \n {image}\n
\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n }\n return (\n \n {image}\n \n {title}\n {text}\n {links}\n {additionalContent && renderAdditionalContent(additionalContent)}\n \n \n );\n};\n\nexport default ContentBlockView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n {orderInfomation && }\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n \n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IHistogramItemViewProps, IRatingsHistogramViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst RatingsHistogramView: React.FC = props => {\n const { heading, histogramItems, histogramProps, moduleProps } = props;\n return (\n \n {heading}\n \n {histogramItems.map(item => {\n return histogramItem(item);\n })}\n \n \n );\n};\n\nconst histogramItem = (props: IHistogramItemViewProps) => {\n return (\n \n {props.starLabel}\n {props.bar}\n {props.percentage}\n \n );\n};\n\nexport default RatingsHistogramView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport {\n IReportReviewModalViewProps,\n IReviewCardViewProps,\n IReviewsListState,\n IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst ReviewsListview: React.FC = props => {\n const {\n averageRating,\n filterByDropdown,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n reviewCount,\n reviewModal,\n sortByDropdown,\n state,\n userReview\n } = props;\n\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {averageRating}\n {reviewCount}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview)}\n {reviewCards.map(review => {\n return buildReviewCard(review);\n })}\n \n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(reviewModal, moduleProps)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nconst buildReviewCard = (props: IReviewCardViewProps) => {\n return (\n \n \n {props.rating}\n {props.name}\n {props.date}\n \n \n \n {props.reviewTitle}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {props.ratingHelpfulLabel}\n {props.like}\n {props.dislike}\n {props.edit}\n {props.report}\n \n \n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\nexport default ReviewsListview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ExtensibleEnumeration } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport * as React from 'react';\n\nimport { IOrderLookupResources, IOrderLookupSearchAdditionalFieldsData } from '../order-lookup.props.autogenerated';\n\n/**\n * Render label.\n * @param className - Classname for label.\n * @param value - Text for label.\n * @returns -The JSX Element.\n */\nexport const labelGroup = (className: string, value: string): JSX.Element => {\n return
{value}
;\n};\n\n/**\n * Error label.\n * @param responseErrorMessage - Error message for label.\n * @param errorMessageClassName - Error message for class name.\n * @returns - Error ReactNode.\n */\nexport const renderErrorLabel = (responseErrorMessage: string, errorMessageClassName: string): React.ReactNode => {\n return responseErrorMessage &&
{responseErrorMessage}
;\n};\n\n/**\n * Registered user message.\n * @param resources - Resource values.\n * @param signInUrl - Signin url.\n * @param signInLinkClassName - Signin link classname.\n * @param registeredUserClassName - Registered user message classname.\n * @returns - ReactNode.\n */\nexport const renderRegisteredUserMessage = (\n resources: IOrderLookupResources,\n signInUrl: string,\n signInLinkClassName: string,\n registeredUserClassName: string\n): React.ReactNode => {\n const { orderLookupRegisteredUserText, orderLookupViewAccountText, orderLookupSignInLinkText } = resources;\n const message: string = orderLookupRegisteredUserText;\n const infoMessage: string = orderLookupViewAccountText;\n const signInText: string = orderLookupSignInLinkText;\n return (\n
\n {message}\n \n {signInText}\n \n {infoMessage}\n
\n );\n};\n\n/**\n * EmailValid submit.\n * @param email - Onsubmit of form and button click.\n * @returns - Boolean.\n */\nexport const isEmailValid = (email: string): boolean => {\n return EmailRegex.defaultRegex.test(email);\n};\n\n/**\n * Additional field validation for on submit.\n * @param name - Onsubmit of form and button click.\n * @returns - Boolean.\n */\nexport const isAdditionalFieldValid = (name: string): boolean => {\n const regEx = new RegExp('^(?!\\\\s)[A-Za-z0-9\\\\s]+$', 'u');\n return regEx.test(name);\n};\n\n/**\n * Validate order lookup field against extensible enum.\n * @param orderStatusLookUpParameter - Order lookup parameter.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateOrderLookupField = (\n orderStatusLookUpParameter: string,\n orderLookupExtensibleEnum: ExtensibleEnumeration[]\n): boolean => {\n let isValidField: boolean = false;\n for (const item of orderLookupExtensibleEnum) {\n if (item.Name.toLocaleLowerCase() === orderStatusLookUpParameter.toLocaleLowerCase()) {\n isValidField = true;\n return isValidField;\n }\n }\n return isValidField;\n};\n\n/**\n * Validate order lookup additional fields with proxy values.\n * @param value - Value to be validated.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateAdditionalFieldWithProxy = (value: string, orderLookupExtensibleEnum: ExtensibleEnumeration[]): boolean => {\n return !orderLookupExtensibleEnum.some(item => item.Name.toLocaleLowerCase() === value.toLocaleLowerCase());\n};\n\n/**\n * Validate order lookup additional fields against extensible enum.\n * @param orderStatusLookUpAdditionalParameters - Order lookup parameter.\n * @param orderLookupExtensibleEnum - Order lookup extensible enum.\n * @returns - Boolean.\n */\nexport const validateOrderLookupAdditionalField = (\n orderStatusLookUpAdditionalParameters: IOrderLookupSearchAdditionalFieldsData[],\n orderLookupExtensibleEnum: ExtensibleEnumeration[]\n): boolean => {\n let isValidAdditionalField: boolean = false;\n if (ArrayExtensions.hasElements(orderStatusLookUpAdditionalParameters)) {\n orderStatusLookUpAdditionalParameters.map(item => {\n const fieldKey: string = item.fieldKey ?? '';\n if (!isValidAdditionalField) {\n isValidAdditionalField = validateAdditionalFieldWithProxy(fieldKey, orderLookupExtensibleEnum);\n }\n return isValidAdditionalField;\n });\n } else {\n isValidAdditionalField = false;\n }\n return isValidAdditionalField;\n};\n\n/**\n * Render validation message if field does not matches with extensible enum.\n * @param orderLookupFieldValidationErrorMessage - Order lookup validation message.\n * @returns - ReactNode.\n */\nexport const renderFieldErrors = (orderLookupFieldValidationErrorMessage: string): React.ReactNode => {\n return
{orderLookupFieldValidationErrorMessage}
;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { labelGroup } from '../utilities/order-lookup-utility';\n\n/**\n * Additional input field props.\n */\nexport interface IOrderLookupAdditionalFieldInfoInput {\n className: string;\n ariaLabel: string;\n inputType: string;\n value: string;\n name: string;\n additionalFieldLabel: string;\n additionalFieldLabelClassName: string;\n isValidAdditionalFieldName: boolean;\n additionalFieldValidationMessage: string;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Order lookup additional field props.\n */\nexport interface IOrderLookupAdditionalFieldInfo {\n additionalFieldLabel: React.ReactNode;\n additionalFieldInput: React.ReactNode;\n additionalFieldError: React.ReactNode;\n}\n\n/**\n * RenderOrderLookupAdditionalFieldInput component.\n */\n@observer\nexport default class RenderOrderLookupAdditionalFieldInput extends React.Component {\n public constructor(props: IOrderLookupAdditionalFieldInfoInput) {\n super(props);\n }\n\n public shouldComponentUpdate(nextProps: IOrderLookupAdditionalFieldInfoInput): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | undefined {\n return (\n
\n {this._getOrderLookupAdditionalFields().additionalFieldLabel}\n {this._getOrderLookupAdditionalFields().additionalFieldError}\n {this._getOrderLookupAdditionalFields().additionalFieldInput}\n
\n );\n }\n\n /**\n * Function to create the order lookup additional fields.\n * @returns IOrderLookupFieldInfo.\n */\n private _getOrderLookupAdditionalFields(): IOrderLookupAdditionalFieldInfo {\n return {\n additionalFieldLabel: labelGroup(this.props.additionalFieldLabelClassName, this.props.additionalFieldLabel),\n additionalFieldInput: (\n
\n \n
\n ),\n additionalFieldError: (\n
\n {!this.props.isValidAdditionalFieldName ? this.props.additionalFieldValidationMessage : ''}\n
\n )\n };\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { labelGroup } from '../utilities/order-lookup-utility';\n\n/**\n * Input field props.\n */\nexport interface IOrderLookupFieldInfoInput {\n inputReference?: React.RefObject;\n className: string;\n ariaLabel: string;\n inputType: string;\n value: string;\n name: string;\n orderLookupLabel: string;\n orderLookupLabelClassName: string;\n fieldErrorClassName: string;\n isInputTypeError: boolean;\n isValidInputField: boolean;\n renderAlert(className: string): JSX.Element;\n onChange(event: React.ChangeEvent): void;\n}\n\n/**\n * Order lookup field props.\n */\nexport interface IOrderLookupFieldInfo {\n label: React.ReactNode;\n input: React.ReactNode;\n error: React.ReactNode;\n}\n\n/**\n * RenderOrderLookupInputs component.\n */\n@observer\nexport default class RenderOrderLookupFormFields extends React.Component {\n public constructor(props: IOrderLookupFieldInfoInput) {\n super(props);\n }\n\n public shouldComponentUpdate(nextProps: IOrderLookupFieldInfoInput): boolean {\n if (this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | undefined {\n return (\n
\n {this._getOrderLookupFields().label}\n {this._getOrderLookupFields().error}\n {this._getOrderLookupFields().input}\n
\n );\n }\n\n /**\n * Function to create the order lookup fields.\n * @returns IOrderLookupFieldInfo.\n */\n private _getOrderLookupFields(): IOrderLookupFieldInfo {\n return {\n label: labelGroup(this.props.orderLookupLabelClassName, this.props.orderLookupLabel),\n input: (\n
\n \n
\n ),\n error: (\n
\n {this.props.isInputTypeError ? this.props.renderAlert(this.props.name) : ''}\n {this.props.isValidInputField ? this.props.renderAlert(this.props.name) : ''}\n
\n )\n };\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { IActionContext } from '@msdyn365-commerce/core-internal';\nimport { ExtensibleEnumeration, StoreOperationsDataActions } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport RenderOrderLookupAdditionalFieldInput from './components/order-lookup-additional-fields';\nimport RenderOrderLookupFormFields from './components/order-lookup-fields';\nimport {\n IOrderLookupProps,\n IOrderLookupSearchAdditionalFieldsData,\n orderStatusLookUpParametersType as orderStatusLookUpParametersTypes\n} from './order-lookup.props.autogenerated';\nimport {\n isAdditionalFieldValid,\n isEmailValid,\n renderErrorLabel,\n renderFieldErrors,\n renderRegisteredUserMessage,\n validateOrderLookupAdditionalField,\n validateOrderLookupField\n} from './utilities/order-lookup-utility';\n\n/**\n * OrderLookup view props.\n */\nexport interface IOrderLookupViewProps extends IOrderLookupProps<{}> {\n additionalProperties: JSX.Element[] | undefined;\n orderLookup: IModuleProps;\n orderLookupContainer: INodeProps;\n orderLookupAdditionalFieldContainer: INodeProps;\n paragraph?: React.ReactNode;\n heading?: React.ReactNode;\n submitButton?: INodeProps;\n submitButtonLabelText?: string;\n orderLookupForm?: INodeProps;\n renderOrderLookupInputField: JSX.Element | undefined;\n orderNumberInput?: JSX.Element | undefined;\n errorMessage?: React.ReactNode;\n fieldErrorMessage?: React.ReactNode;\n registeredUserMessage?: React.ReactNode;\n onChange?(event: React.ChangeEvent): void;\n submit?(): void;\n}\n\n/**\n * OrderLookupSearchValues -- supported values.\n */\nenum OrderLookupSearchValues {\n email = 'email',\n ordernumber = 'ordernumber'\n}\n\n/**\n * To render and handle state for additional order lookup fields.\n */\nexport interface IOrderLookupAdditionalFields {\n labelName: string;\n isValidFieldName: boolean;\n fieldValue: string;\n ariaLabel: string;\n additionalfieldErrorMessage: string;\n}\n\n/**\n * OrderLookup view props.\n */\nexport interface IOrderLookupFormState {\n orderNumber: string;\n email: string;\n isOrdNumberError: boolean;\n isEmailError: boolean;\n isValidEmailError: boolean;\n isReqError: boolean;\n isDisabled: boolean;\n isValidLookupField: boolean;\n isValidAdditionalLookupField: boolean;\n responseErrorMessage: string;\n additionalProperties: IOrderLookupAdditionalFields[];\n}\n\n/**\n *\n * OrderLookup component.\n * @extends {React.PureComponent>}\n */\nclass OrderLookup extends React.PureComponent, IOrderLookupFormState> {\n public orderNumberInputRef: React.RefObject;\n\n public emailInputRef: React.RefObject;\n\n public isEmailValue: boolean = false;\n\n private requiredErrorMessage: string | undefined;\n\n private emailValidationErrorMessage: string | undefined;\n\n private isOrderNumberValue: boolean = false;\n\n private orderLookupExtensibleEnum: ExtensibleEnumeration[] = [];\n\n public constructor(props: IOrderLookupProps<{}>) {\n super(props);\n this.orderNumberInputRef = React.createRef();\n this.emailInputRef = React.createRef();\n const { config } = this.props;\n const { orderLookupSearchAdditionalFields } = config;\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n\n if (orderLookupSearchAdditionalFields) {\n for (const item of orderLookupSearchAdditionalFields) {\n additionalPropertyStates.push({\n labelName: item.labelName ?? '',\n isValidFieldName: true,\n fieldValue: '',\n ariaLabel: item.ariaLabel ?? '',\n additionalfieldErrorMessage: item.validationMessage ?? ''\n });\n }\n }\n\n this.state = {\n orderNumber: '',\n email: '',\n isOrdNumberError: false,\n isEmailError: false,\n isValidEmailError: false,\n isReqError: false,\n isDisabled: true,\n isValidLookupField: true,\n isValidAdditionalLookupField: false,\n responseErrorMessage: '',\n additionalProperties: additionalPropertyStates\n };\n }\n\n public render(): JSX.Element | null {\n const {\n config: { paragraph, heading },\n resources,\n context\n } = this.props;\n\n const {\n orderLookupDefaultHeadingText,\n orderLookupButtonLabel,\n orderLookupFormAriaLabel,\n orderLookupOrderNumberLabel,\n orderLookupOrderNumberAriaLabel,\n orderLookupSubmitAriaLabel,\n orderLookupFieldValidationErrorMessage\n } = resources;\n\n const { responseErrorMessage, isDisabled, orderNumber, isOrdNumberError } = this.state;\n\n const headingText = StringExtensions.isNullOrEmpty(heading?.text) ? orderLookupDefaultHeadingText : heading?.text;\n const headingTag = heading?.tag ?? 'h1';\n\n const moduleClassName = 'ms-order-lookup';\n const orderLookupContainerClassName = `${moduleClassName}__details`;\n const orderLookupHeadingClassName = `${orderLookupContainerClassName}__heading`;\n const orderLookupFormClassName = `${orderLookupContainerClassName}__form`;\n const orderLookupAdditionalFiledContainerClassName = `${orderLookupFormClassName}__additional-fields-container`;\n const orderLookupFormFieldsClassName = `${orderLookupFormClassName}__fields`;\n const orderNumberLabelClassName = `${orderLookupFormFieldsClassName}__order-number-label`;\n const orderNumberInputErrorClassName = `${orderLookupFormFieldsClassName}__order-number-input-error`;\n const submitButtonClassName = `${orderLookupFormClassName}__submit`;\n const labelErrorMessageClassName = `${moduleClassName}__error-message`;\n const registeredUserClassName = `${moduleClassName}__registered-user`;\n const signinLinkClassName = `${registeredUserClassName}__sign-in-link msc-btn`;\n\n const orderLookupHeading = (\n \n );\n\n const viewProps: IOrderLookupViewProps = {\n ...this.props,\n orderLookup: {\n moduleProps: this.props,\n className: moduleClassName\n },\n\n orderLookupContainer: {\n className: orderLookupContainerClassName\n },\n orderLookupAdditionalFieldContainer: {\n className: orderLookupAdditionalFiledContainerClassName\n },\n paragraph: paragraph && this._createParagraph(paragraph),\n heading: orderLookupHeading,\n\n renderOrderLookupInputField: this._renderOrderLookupInput(),\n orderLookupForm: {\n className: orderLookupFormClassName,\n tag: 'form',\n 'aria-label': orderLookupFormAriaLabel,\n name: 'orderLookupForm',\n role: 'form',\n autoComplete: 'off',\n onSubmit: this.handleSubmit\n },\n orderNumberInput: (\n \n ),\n\n submitButton: {\n className: submitButtonClassName,\n tag: Button,\n 'aria-label': orderLookupSubmitAriaLabel,\n type: 'submit',\n role: 'button',\n title: orderLookupButtonLabel,\n onClick: this.handleSubmit,\n disabled: isDisabled\n },\n\n submitButtonLabelText: orderLookupButtonLabel,\n errorMessage: renderErrorLabel(responseErrorMessage, labelErrorMessageClassName),\n fieldErrorMessage:\n (!this.state.isValidLookupField || this.state.isValidAdditionalLookupField) &&\n renderFieldErrors(orderLookupFieldValidationErrorMessage),\n registeredUserMessage: renderRegisteredUserMessage(\n resources,\n context.request.user.signInUrl ?? '',\n signinLinkClassName,\n registeredUserClassName\n ),\n onChange: this.onChange,\n submit: this.handleSubmit,\n additionalProperties: this._renderAdditionalFields()\n };\n return this.props.renderView(viewProps);\n }\n\n public async componentDidMount(): Promise {\n const { config, context } = this.props;\n const { actionContext } = context;\n const { orderStatusLookUpParametersType, orderLookupSearchAdditionalFields } = config;\n let isOrderLookupAdditionalFieldValid: boolean = false;\n let isOrderLookupFieldValid: boolean = false;\n\n const getExtensibleEnumerations = await StoreOperationsDataActions.getExtensibleEnumerationsAsync({ callerContext: actionContext });\n this.orderLookupExtensibleEnum =\n getExtensibleEnumerations.find(item => item.TypeName === 'OrderLookupAdditionalCriteriaType')?.ExtensibleEnumerations ?? [];\n\n const orderLookupParameter: string = orderStatusLookUpParametersType ?? '';\n const orderLookupAdditionalParameter: IOrderLookupSearchAdditionalFieldsData[] = orderLookupSearchAdditionalFields ?? [];\n\n isOrderLookupFieldValid = validateOrderLookupField(orderLookupParameter, this.orderLookupExtensibleEnum);\n isOrderLookupAdditionalFieldValid = validateOrderLookupAdditionalField(\n orderLookupAdditionalParameter,\n this.orderLookupExtensibleEnum\n );\n this.setLookupFieldState(isOrderLookupFieldValid, isOrderLookupAdditionalFieldValid);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent): void => {\n const { config } = this.props;\n config.paragraph = event.target.value;\n };\n\n /**\n * Sets isValidLookupField after validating with extensible emun.\n * @param isValidField - Sets the property.\n * @param isValidAdditionalField - Sets the additional field property.\n */\n public setLookupFieldState(isValidField: boolean, isValidAdditionalField: boolean): void {\n this.setState({ isValidLookupField: isValidField, isValidAdditionalLookupField: isValidAdditionalField });\n }\n\n /**\n * HandleSubmit submit.\n */\n public readonly handleSubmit = (): void => {\n const { config, context } = this.props;\n const { actionContext } = context;\n const { additionalProperties, orderNumber, email } = this.state;\n const orderLookupValue = email;\n const { orderStatusLookUpParametersType } = config;\n const orderLookupName = orderStatusLookUpParametersType !== undefined ? orderStatusLookUpParametersType : '';\n const isValid: boolean = this._validateOrderLookupForm();\n if (isValid) {\n const actionContextValue: IActionContext = actionContext;\n const orderDetailsPath = Msdyn365.getUrlSync('orderDetails', actionContextValue) ?? '';\n if (orderDetailsPath) {\n const baseUrl = new URL(window.location.origin);\n const redirectUrl = new URL(orderDetailsPath, baseUrl);\n const searchParameters = redirectUrl.searchParams;\n\n searchParameters.set('confirmationId', orderNumber);\n searchParameters.set('propertyName', orderLookupName);\n searchParameters.set('propertyValue', orderLookupValue);\n\n if (ArrayExtensions.hasElements(additionalProperties)) {\n additionalProperties.map((item, index) => {\n const fieldName = !StringExtensions.isNullOrWhitespace(item.ariaLabel)\n ? item.ariaLabel.replace(' ', '').toLocaleLowerCase()\n : '';\n const fieldValue = !StringExtensions.isNullOrWhitespace(item.fieldValue) ? item.fieldValue : '';\n searchParameters.set(`field${index + 1}Name`, fieldName);\n searchParameters.set(`field${index + 1}Value`, fieldValue);\n return item;\n });\n }\n\n window.location.assign(redirectUrl.toString());\n }\n }\n };\n\n /**\n * OnChange event.\n * @param event - Value of input field.\n */\n public readonly onChange = (event: React.ChangeEvent): void => {\n const { additionalProperties } = this.state;\n const { config } = this.props;\n const { orderStatusLookUpParametersType } = config;\n const name = event.target.name || '';\n const value = event.target.value || '';\n this.isOrderNumberValue = !StringExtensions.isNullOrWhitespace(this.orderNumberInputRef.current?.value);\n this.isEmailValue = !StringExtensions.isNullOrWhitespace(this.emailInputRef.current?.value);\n\n if (orderStatusLookUpParametersType?.toLocaleLowerCase() === 'none') {\n this.isEmailValue = true;\n }\n\n this.setState({ responseErrorMessage: '' });\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n let isAdditionalFieldError: boolean = true as boolean;\n let isKeyExistInAdditionalFieldArray: boolean = false as boolean;\n\n for (const item of additionalProperties) {\n const fieldName: string = item.ariaLabel.replace(' ', '');\n if (fieldName.toLocaleLowerCase() === name.toLocaleLowerCase()) {\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: true,\n fieldValue: value,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n } else {\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: item.isValidFieldName,\n fieldValue: item.fieldValue,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n }\n if (fieldName.toLocaleLowerCase() === orderStatusLookUpParametersType?.toLocaleLowerCase()) {\n isKeyExistInAdditionalFieldArray = true;\n }\n }\n\n for (const items of additionalPropertyStates) {\n if (StringExtensions.isNullOrWhitespace(items.fieldValue)) {\n isAdditionalFieldError = false;\n }\n }\n\n this.setState({ additionalProperties: additionalPropertyStates });\n\n if (!isKeyExistInAdditionalFieldArray) {\n switch (name.toLocaleLowerCase()) {\n case OrderLookupSearchValues.ordernumber: {\n this.setState({\n orderNumber: value,\n isOrdNumberError: false,\n isReqError: false\n });\n break;\n }\n case OrderLookupSearchValues.email: {\n this.setState({\n email: value,\n isEmailError: false,\n isValidEmailError: false,\n isReqError: false\n });\n break;\n }\n default: {\n this.setState({ isReqError: false });\n }\n }\n }\n\n if (\n this.isOrderNumberValue &&\n this.isEmailValue &&\n isAdditionalFieldError &&\n this.state.isValidLookupField &&\n !this.state.isValidAdditionalLookupField\n ) {\n this.setState({ isDisabled: false });\n } else {\n this.setState({ isDisabled: true });\n }\n };\n\n private _createParagraph(text?: Msdyn365.RichText): React.ReactNode | null {\n const { context } = this.props;\n const { request } = context;\n if (!text) {\n return null;\n }\n return (\n \n );\n }\n\n /**\n * Render order lookup validation message.\n * @param className - Class name for error field.\n * @returns - JSX.Element.\n */\n private readonly _renderAlert = (className: string): JSX.Element => {\n const {\n resources: { orderLookupEmailValidationErrorMessage, orderLookupRequiredTextErrorMessage }\n } = this.props;\n\n const { isEmailError, email, isValidEmailError, isReqError } = this.state;\n if (isEmailError) {\n this.requiredErrorMessage = orderLookupRequiredTextErrorMessage;\n }\n\n if (!StringExtensions.isNullOrEmpty(email) && isValidEmailError) {\n this.emailValidationErrorMessage = orderLookupEmailValidationErrorMessage;\n }\n\n const isRequireError = isReqError;\n const isEmailValidError = isValidEmailError;\n const isValidEmailInput = className.toLocaleLowerCase() === OrderLookupSearchValues.email;\n return (\n <>\n {isRequireError && (\n \n {this.requiredErrorMessage}\n \n )}\n {isEmailValidError && isValidEmailInput && (\n \n {this.emailValidationErrorMessage}\n \n )}\n \n );\n };\n\n /**\n * Render order number validation message.\n * @param className - Class name for error field.\n * @returns - JSX.Element.\n */\n private readonly _renderOrderNumberAlert = (className: string): JSX.Element => {\n const {\n resources: { orderLookupOrderNumberValidationErrorMessage, orderLookupRequiredTextErrorMessage }\n } = this.props;\n\n const { isOrdNumberError, isReqError } = this.state;\n return (\n <>\n {isReqError && (\n \n {orderLookupRequiredTextErrorMessage}\n \n )}\n {isOrdNumberError && (\n \n {orderLookupOrderNumberValidationErrorMessage}\n \n )}\n \n );\n };\n\n private _renderAdditionalFields(): JSX.Element[] | undefined {\n const { additionalProperties } = this.state;\n const additionalFieldsInput: JSX.Element[] = [];\n for (const item of additionalProperties) {\n const name: string = item.ariaLabel.replace(' ', '');\n additionalFieldsInput.push(\n \n );\n }\n return additionalFieldsInput;\n }\n\n /**\n * Render Input field for order lookup.\n * @returns - IOrderLookupFieldInfo.\n */\n private readonly _renderOrderLookupInput = (): JSX.Element | undefined => {\n const { email, isEmailError, isValidEmailError } = this.state;\n const {\n config: { orderStatusLookUpParametersType },\n resources: { orderLookupEmailLabel, orderLookupEmailAriaLabel }\n } = this.props;\n\n switch (orderStatusLookUpParametersType) {\n case orderStatusLookUpParametersTypes.none:\n return undefined;\n case orderStatusLookUpParametersTypes.email:\n default:\n return (\n \n );\n }\n };\n\n /**\n * _validation for additional fields.\n * @returns - Returns IOrderLookupAdditionalFields[].\n */\n private readonly _additionalFieldValidation = (): IOrderLookupAdditionalFields[] => {\n const additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n for (const item of this.state.additionalProperties) {\n const isFieldValid: boolean = !StringExtensions.isNullOrWhitespace(item.fieldValue) && isAdditionalFieldValid(item.fieldValue);\n additionalPropertyStates.push({\n labelName: item.labelName,\n isValidFieldName: isFieldValid,\n fieldValue: item.fieldValue,\n ariaLabel: item.ariaLabel,\n additionalfieldErrorMessage: item.additionalfieldErrorMessage\n });\n }\n return additionalPropertyStates;\n };\n\n /**\n * _validateOrderLookupForm submit.\n * @returns - Returns boolean.\n */\n private readonly _validateOrderLookupForm = (): boolean => {\n const { config } = this.props;\n const { orderNumber, email } = this.state;\n const { orderStatusLookUpParametersType } = config;\n let additionalPropertyStates: IOrderLookupAdditionalFields[] = [];\n let isValid = false;\n let isDisable = false;\n\n if (ArrayExtensions.hasElements(this.state.additionalProperties)) {\n additionalPropertyStates = this._additionalFieldValidation();\n for (const item of additionalPropertyStates) {\n if (!item.isValidFieldName) {\n isDisable = true;\n }\n }\n\n if (isDisable) {\n this.setState({\n additionalProperties: additionalPropertyStates,\n isDisabled: true\n });\n }\n }\n\n if (StringExtensions.isNullOrWhitespace(orderNumber)) {\n this.setState({\n isOrdNumberError: true,\n isReqError: true,\n isDisabled: true\n });\n } else if (orderNumber.trim() !== orderNumber) {\n this.setState({\n isOrdNumberError: true,\n isReqError: false,\n isDisabled: true\n });\n } else if (\n orderStatusLookUpParametersType === orderStatusLookUpParametersTypes.email &&\n StringExtensions.isNullOrWhitespace(email)\n ) {\n this.setState({\n isEmailError: true,\n isReqError: true,\n isDisabled: true\n });\n } else if (orderStatusLookUpParametersType === orderStatusLookUpParametersTypes.email && !isEmailValid(email)) {\n this.setState({\n isValidEmailError: true,\n isDisabled: true\n });\n } else if (isDisable || !this.state.isValidLookupField || this.state.isValidAdditionalLookupField) {\n this.setState({\n isDisabled: true\n });\n } else {\n this.setState({\n isDisabled: false\n });\n isValid = true;\n }\n return isValid;\n };\n}\n\nexport default OrderLookup;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderLookupViewProps } from './order-lookup';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns JSX Element.\n */\nexport const OrderLookupViewComponent: React.FC = props => {\n const {\n orderLookup,\n orderLookupContainer,\n orderLookupAdditionalFieldContainer,\n heading,\n paragraph,\n orderLookupForm,\n renderOrderLookupInputField,\n orderNumberInput,\n errorMessage,\n submitButton,\n additionalProperties,\n registeredUserMessage,\n fieldErrorMessage\n } = props;\n return (\n \n \n {heading}\n {paragraph}\n \n {orderNumberInput}\n {renderOrderLookupInputField}\n {ArrayExtensions.hasElements(additionalProperties) && (\n \n {additionalProperties.map((item: JSX.Element) => (\n {item}\n ))}\n \n )}\n {fieldErrorMessage}\n \n {props.submitButtonLabelText}\n \n {errorMessage}\n \n {registeredUserMessage}\n \n \n );\n};\n\nexport default OrderLookupViewComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n \n {heading}\n \n
\n

{props.resources.headingForEmptyRequestStatus}

\n

{props.resources.textForEmptyRequestStatus}

\n \n \n {continueShoppingButtonTitle}\n \n \n
\n
\n
\n );\n }\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutCustomerAccountPaymentViewProps } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/checkout-customer-account-payment';\nimport { IAccountPaymentEditViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/components/get-account-payment-form-edit-mode';\nimport { IAccountPaymentSummaryViewForm } from '@msdyn365-commerce-modules/checkout/src/modules/checkout-customer-account-payment/components/get-account-payment-form-summary-mode';\n\nexport const SummaryForm: React.FC = ({\n formProps,\n label,\n addPaymentButton,\n appliedLine,\n bottomBorder,\n paymentAmountInput\n}) => (\n \n <>\n {label}\n {paymentAmountInput}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nexport const EditForm: React.FC = ({\n formProps,\n inputLabel,\n inputAmount,\n addPaymentButton,\n customerName,\n customerAccountNumber,\n customerSince,\n accountCredit,\n alert,\n accountDetails,\n appliedLine,\n bottomBorder\n}) => (\n \n <>\n {customerName}\n {customerAccountNumber}\n {customerSince}\n {accountCredit}\n {accountDetails}\n {inputLabel}\n {alert}\n {inputAmount}\n {addPaymentButton}\n {appliedLine}\n {bottomBorder}\n \n \n);\n\nconst CheckoutCustomerAccountView: React.FC = props => {\n const { checkoutCustomerAccount, checkoutErrorRef, summaryView, editView, moduleState, alert } = props;\n return (\n \n {alert}\n {moduleState.isReady && summaryView && }\n {!moduleState.isReady && editView && }\n \n );\n};\n\nexport default CheckoutCustomerAccountView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n {orderInfomation && }\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n \n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n"],"names":["PickUpOptionList","React","constructor","props","super","_onSelect","async","e","preventDefault","deliveryCode","currentTarget","getAttribute","length","this","onChange","_rendeDeliveryOptions","bind","_pickupListOptionMenu","state","expandSiteOptions","render","pickupListOptionMenuText","pickupmodeList","className","onClick","role","ref","map","delivery","key","Code","tabIndex","Description","expandSiteOptionsState","setState","StorePickUpOptionList","isExpandOptionsState","isFilterExpanded","event","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","selectedPickupModeDesc","find","undefined","onKeyDown","StoreSelectorLocationLineItemComponentActions","onLocationSelected","deliveryMode","handlers","onSelected","location","onSetAsPreferredStore","OrgUnitNumber","onRemovePreferredStore","onPickupInStoreClickHandler","onPickupModeSelectHandler","pickupMode","onSetPreferredStoreClickHandler","removePreferredStoreHandler","onChangeHandler","Promise","resolve","matchDeliveryOptions","productdeliveryOptions","storePickUpOptionList","deliveryOption","pickup","_delivery","push","StoreSelectorLocationLineItemComponent","hideStockStatus","isCurrentLocation","isInStock","resources","stockStatusLabel","storeLocatorView","index","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","telemetryContent","productPickUpOptionList","storeName","OrgUnitName","distanceAsString","buildDistanceString","distance","preferredDistanceUnit","Math","floor","Distance","storeAddress","Address","email","contacts","allEmailContacts","filter","contact","ContactTypeValue","IsPrivate","primaryEmailContact","IsPrimary","Locator","extractEmail","Contacts","resourceLabel","inStock","outOfStock","stockLabel","stockText","canSelectLocation","pickupInStoreButtonText","selectLocation","pickupInStoreAriaLabel","selectLocationAriaLabelFormat","replace","isPreferredStore","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","attributes","getTelemetryAttributes","contentAction","etext","PreferredStore","preferredStoreAttr","RemovePreferredStore","RemovePreferredStoreAttr","deliveryOptionList","Object","assign","preferredStoreAriaLabel","preferredStoreText","setAsPreferredStoreTextAriaLabel","setAsPreferredStoreText","availabilityInfoHeader","currentLocation","renderPickupModes","filteredPickupMode","StoreSelectorLocationLines","onClickHandler","orgUnitLocation","_scrollIntoView","selectedLocationDiv","selectedLocationRef","current","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","ItemAvailabilities","enableOutOfStockCheck","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","i","_availabilityWithHour","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactInfoHeader","contactText","storeHoursHeader","timeText","availabilityText","closedText","storeHoursClosedText","outOfStockText","inStockText","selectedStoreLocationText","selectStoreText","selectStoreAriaFormatText","days","monday","storeHoursMondayText","tuesday","storeHoursTuesdayText","wednesday","storeHoursWednesdayText","thursday","storeHoursThursdayText","friday","storeHoursFridayText","saturday","storeHoursSaturdayText","sunday","storeHoursSundayText","mondayFull","storeHoursMondayFullText","tuesdayFull","storeHoursTuesdayFullText","wednesdayFull","storeHoursWednesdayFullText","thursdayFull","storeHoursThursdayFullText","fridayFull","storeHoursFridayFullText","saturdayFull","storeHoursSaturdayFullText","sundayFull","storeHoursSundayFullText","storeCounter","componentDidUpdate","prevProps","selectedStoreLocationId","componentDidMount","locations","_stores","_sortStores","classnames","show","displayList","store","_renderStoreLocation","_store$OrgUnitAvailab","deliveryOptions","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","ArrayExtensions","hasElements","storeHours","StoreHours","toString","DeliveryOptions","productPickUpDeliveryOptions","stores","value","_value$OrgUnitAvailab","__decorate","observable","observer","StoreSelectorSearchForm","searchBoxRef","_handleKeyPressPrev","keyCode","KeyCodes","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","target","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","onToggleListMapViewState","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","id","isMapDisabled","showAllStores","name","autoComplete","onSubmit","type","searchInputAriaLabel","placeholder","color","onKeyUp","StoreSelectorEmptyMessage","_ref","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","_ref2","link","requestContext","onTextChange","editableLink","ariaLabel","linkText","linkUrl","destinationUrl","openInNewTab","Msdyn365","editProps","StoreSelectorFoundLocationsMessage","_ref3","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","secondsToTime","seconds","hours","ampm","divisorForMinutes","getShortTimeString","day","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","get","buildStoreHoursString","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","mode","searchRadiusUnit","style","StoreSelector","redirectUri","getJewelerInfo","context","actionContext","user","isAuthenticated","customerAccountNumber","jewelerInfo","readAsync","callerContext","handleLinkTextChange","config","termsOfServiceLink","handleHeadingChange","heading","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","telemetry","channel","data","storeSelectorStateManager","result","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","_objectSpread","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_searchTermChanged","formattedSuggestion","_performSearch","_setPreferredStore","_preferedStore$OrgUni","_preferedStore$OrgUni2","_preferedStore$OrgUni3","storeId","cookies","storeLocations","availabilitiesWithHours","modeEnum","pickupInStore","findStores","preferedStore","setPreferredStoreLocation","isConsentGiven","Latitude","Longitude","customer","Attributes","stockistAttributeIndex","findIndex","a","stockistAttributeName","Name","_preferedStore$OrgUni4","stockistAttribute","AttributeValue","StringValue","_preferedStore$OrgUni5","DataTypeValue","KeyName","RecordId","stockistAttributeRecordId","ExtensionProperties","NameTranslations","updatePayload","AccountNumber","CreatedDateTime","ChargeGroup","PriceGroup","IsCustomerTaxInclusive","Phone","PhoneRecordId","PhoneExt","Cellphone","Email","EmailRecordId","Url","UrlRecordId","PersonNameId","FirstName","MiddleName","LastName","DirectoryPartyRecordId","PartyNumber","CustomerTypeValue","Language","CustomerGroup","CurrencyCode","CNPJCPFNumber","IdentificationNumber","InvoiceAccount","MandatoryCreditLimit","CreditRating","CreditLimit","Balance","Blocked","BlockedType","UseOrderNumberReference","OrganizationId","UsePurchaseRequest","MultilineDiscountGroup","TotalDiscountGroup","LineDiscountGroup","TaxGroup","SalesTaxGroup","CommissionSalesGroupId","TaxExemptNumber","VatNumber","TaxOffice","NonChargeableAccount","Tag","ReceiptSettings","ReceiptEmail","OptOutPersonalization","OptOutWebActivityTracking","RetailCustomerTableRecordId","OfflineImage","IsAsyncCustomer","NewCustomerPartyNumber","CustomerAffiliations","Addresses","Images","TitleRecordId","IsFloorLimitBlocked","IsB2b","IsB2bAdmin","BusinessPartnerId","AllowOnAccountPayment","updateAsync","window","href","_removePreferredStore","clearPreferredStore","_setSelectedStore","setSelectedStoreLocationId","searchTerm","isSearchInProgress","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","styleEnum","dialog","inline","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","error","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","styleDefault","setOrgUnitStoreInformation","showMapViewLink","isDialog","orgUnitStoreInformation","catch","message","radius","lookupRadius","calRadius","distanceUnitValue","kilometers","modeDefault","preferredStore","lat","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","product","input","GetFullAvailableInventoryNearbyInput","getFullAvailableInventoryNearby","warning","_onOrgUnitLocationSelected","selectedLocation","hasEnableOutOfStockCheck","itemAvailabilities","_isInStock$OrgUnitAva","checkRedirectUriAvailable","params","URLSearchParams","request","url","requestUrl","search","has","homePageUrl","origin","sitePath","getTelemetryObject","telemetryPageName","friendlyName","_this$props$data$stor3","autoSuggestionEnabled","setTimeout","reaction","_this$props$data$stor","_this$props$data$stor2","BingMapsEnabled","_this$props$data$stor4","_this$props$context","loadMapApi","lang","locale","market","then","_this$props$data$stor5","_this$props$data$stor6","_this$props$context2","when","_this$props$data$stor7","_this$props$data$stor8","_this$props$data$stor9","isSameContext","shouldComponentUpdate","nextProps","_storeSelectorStateMa2","_preferredStore","_storeSelectorStateMa3","_storeSelectorStateMa4","_preferredStore2","_storeSelectorStateMa5","setAsPreferredStore","enablePickupFilterToShowStore","app","appConfig","inlineView","hideInventory","listMapViewState","showLocationView","isMapModuleLoaded","StoreSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","preferredLocationId","StoreId","locationsList","sortLocation","stockist","attr","stockistInfo","loc","StoreName","enableOutofStock","enableStockCheck","locationListProps","_getStoreLocationListProps","viewProps","ModuleProps","tag","Modal","moduleProps","classname","autoFocus","fade","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","HeaderContainerProps","ModalHeader","HeaderProps","text","onEdit","FooterContainerProps","ModalFooter","BodyContainerProps","ModalBody","locationsMessage","spinner","outOfStockThreshold","noLocationsMessage","terms","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","renderView","hasEnabledOutOfStockCheck","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","selectedStoreLocation","lineResources","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","_store$OrgUnitAvailab3","locationOpen","openFrom","openTo","RegularStoreHours","Module","Node","AccountGenericTile","links","root","backButton","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","CartIcon","cartLabel","cartQtyLabel","cart","cartItem","hasInvoiceLine","totalItemsInCart","qtyLabel","format","label","visibility","title","CartIconComponent","msdyn365Commerce","createComponentOverride","component","PromoCode","_onInputChangeHandler","promoCodeInputValue","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","promoCode","status","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","Button","disabled","_removePromotion","_event$currentTarget$","code","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_renderAppliedPromoCode","Coupons","removePromotionHandler","coupon","removePromoAriaLabelFormat","removePromoText","ApplyPromoCode","promoCodeHeadingText","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","count","amount","channelReferenceId","OrderHistoryGroupDelivery","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","groupProps","salesLinesProps","salesLines","salesLine","LineId","SalesLineImageComponent","OrderHistoryGroups","_ref4","groupsProps","groups","group","OrderHistoryHeader","_ref5","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","_props$data$product$N","_props$data$product","_props$data$product2","productName","fallbackImageUrl","getFallbackImageUrl","ItemId","apiSettings","getSalesLineImage","gridSettings","imageSettings","salesLineState","moduleName","_product$PrimaryImage","productUrl","PrimaryImageUrl","imageUrl","Key","Value","isHidden","Image","altText","src","fallBackSrc","loadFailureBehavior","_ref8","orderHistoryProps","header","alert","loading","emptyMessage","backToShoppingLink","list","table","moreButton","OrderTemplateListViewComponent","OrderTemplateList","OrderTemplates","OrderTemplate","statusMessage","orderTemplates","createOrderTemplateButton","templateHeaderStatusMessage","headingForEmptyOrderTemplateList","textForEmptyOrderTemplateList","orderTemplate","renderOrderTemplate","orderTemplateNodeProps","addToCartButton","orderTemplateImage","orderTemplateStatusMessage","removeButton","orderTemplateName","orderTemplateImageElement","currentImageListLength","children","_mapEditableLinks","linkdata","editableLinks","forEach","additionalProperties","AccountLoyaltyTile","linkIndex","signUpLinkText","viewLinkText","signUpLinkAriaLabel","viewLinkAriaLabel","accountLoyaltySummary","accountLoyaltyMemberSummary","loyaltyCard","description","CardNumber","decimalPrecision","points","RewardPoints","rewardPoint","ActivePoints","toFixed","LinksComponent","DescriptionComponent","AccountOrderTemplatesTileDescription","AccountOrderTemplatesTileLinks","AccountOrderTemplatesTile","_this$props$data$feat","_this$props$data$cust","RetailB2BEcommerceFeatureState","featureState","isEditor","IsEnabled","customerInformation","accountOrderTemplatesTileDescription","orderTemplatesCount","errorClassName","GetMaxLength","maxLength","parsedMaxLength","Number","parseInt","isNaN","pattern","forId","htmlFor","PasswordReset","moduleClassName","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","clearInterval","isInitialized","obj","ID","toLowerCase","newPasswordRegex","PAT","reenterPasswordRegex","verifying_blurb","loadingMessage","PasswordRegex","defaultRegex","source","nextState","viewState","isShowLoading","passwordReset","modal","modalBody","icon","PasswordResetLoadingIconComponent","PasswordResetLoadingMessageComponent","defaultAADConainer","display","aadConainer","passwordResetLocalAccount","_renderLocalAccount","localAccount","items","_renderInput","newPasswordLabelText","confirmPasswordLabelText","errorMessage","PasswordResetErrorComponent","passwordEntryMismatchError","requiredFieldMissingError","fieldIncorrectError","buttonsWrapper","buttons","PasswordResetButtonComponent","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","labelText","wrapper","PasswordResetLabelComponent","PasswordResetInputComponent","PasswordResetItem","PasswordResetLoading","item","button","LocalAccount","assembleNode","itemIndex","_item$links","renderHeading","additionalContentHeading","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","ctaLink","renderLinks","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","contentBlockAdditionalContent","additionalContent","reactNodes","additionalContentNode","additionalContentItems","ContentCardLinks","btnClass","onTelemetryClick","ContentBlock","handleTextChange","handleParagraphChange","paragraph","_heading$tag","_this$props$context$r","_this$props$config$im","image","imageAriaLabel","contentBlockTitle","imageProps","contentBlockLinks","msdyn365__moduleLayout","contentBlockText","contentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","layout","shouldSkipToMainImage","contentBlockviewProps","moduleClass","contentBlockContainer","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","handleAdditionalParagraphChange","handleAdditionalText","handleAdditionalParagraph","additionalContentObject","actionableRegion","renderAdditionalContent","_additionalContent$ad","histogramItem","buttonProps","starLabel","bar","percentage","histogramItems","histogramProps","buildReviewCard","cardProps","rating","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","edit","report","createReviewModal","modalHeader","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","cancelButton","createReportModal","reported","headerSubmitted","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","reviewModal","sortByDropdown","userReview","isFilterApplied","review","labelGroup","renderErrorLabel","responseErrorMessage","errorMessageClassName","renderRegisteredUserMessage","signInUrl","signInLinkClassName","registeredUserClassName","orderLookupRegisteredUserText","orderLookupViewAccountText","orderLookupSignInLinkText","infoMessage","signInText","renderFieldErrors","orderLookupFieldValidationErrorMessage","RenderOrderLookupAdditionalFieldInput","_getOrderLookupAdditionalFields","additionalFieldLabel","additionalFieldError","additionalFieldInput","additionalFieldLabelClassName","inputType","isValidAdditionalFieldName","additionalFieldValidationMessage","RenderOrderLookupFormFields","_getOrderLookupFields","orderLookupLabelClassName","orderLookupLabel","inputReference","fieldErrorClassName","isInputTypeError","renderAlert","isValidInputField","OrderLookupSearchValues","OrderLookup","isEmailValue","isOrderNumberValue","orderLookupExtensibleEnum","handleSubmit","orderNumber","orderLookupValue","orderStatusLookUpParametersType","orderLookupName","_validateOrderLookupForm","_Msdyn365$getUrlSync","actionContextValue","orderDetailsPath","baseUrl","URL","redirectUrl","searchParameters","searchParams","set","fieldName","StringExtensions","isNullOrWhitespace","toLocaleLowerCase","fieldValue","_this$orderNumberInpu","_this$emailInputRef$c","orderNumberInputRef","emailInputRef","additionalPropertyStates","isAdditionalFieldError","isKeyExistInAdditionalFieldArray","labelName","isValidFieldName","additionalfieldErrorMessage","ordernumber","isOrdNumberError","isReqError","isEmailError","isValidEmailError","isValidLookupField","isValidAdditionalLookupField","isDisabled","_renderAlert","orderLookupEmailValidationErrorMessage","orderLookupRequiredTextErrorMessage","requiredErrorMessage","isNullOrEmpty","emailValidationErrorMessage","isRequireError","isEmailValidError","isValidEmailInput","_renderOrderNumberAlert","orderLookupOrderNumberValidationErrorMessage","_renderOrderLookupInput","orderLookupEmailLabel","orderLookupEmailAriaLabel","_additionalFieldValidation","isFieldValid","RegExp","test","isValid","isDisable","EmailRegex","isEmailValid","orderLookupSearchAdditionalFields","_item$labelName","_item$ariaLabel","_item$validationMessa","validationMessage","_context$request$user","orderLookupDefaultHeadingText","orderLookupButtonLabel","orderLookupFormAriaLabel","orderLookupOrderNumberLabel","orderLookupOrderNumberAriaLabel","orderLookupSubmitAriaLabel","headingText","headingTag","orderLookupContainerClassName","orderLookupFormClassName","orderLookupAdditionalFiledContainerClassName","orderLookupFormFieldsClassName","orderNumberLabelClassName","orderNumberInputErrorClassName","submitButtonClassName","signinLinkClassName","orderLookupHeading","orderLookup","orderLookupContainer","orderLookupAdditionalFieldContainer","_createParagraph","renderOrderLookupInputField","orderLookupForm","orderNumberInput","submitButtonLabelText","fieldErrorMessage","registeredUserMessage","submit","_renderAdditionalFields","_getExtensibleEnumera","_getExtensibleEnumera2","isOrderLookupAdditionalFieldValid","isOrderLookupFieldValid","getExtensibleEnumerations","StoreOperationsDataActions","TypeName","ExtensibleEnumerations","orderLookupAdditionalParameter","validateOrderLookupField","orderStatusLookUpParameter","isValidField","validateOrderLookupAdditionalField","orderStatusLookUpAdditionalParameters","isValidAdditionalField","_item$fieldKey","fieldKey","validateAdditionalFieldWithProxy","some","setLookupFieldState","additionalFieldsInput","OrderLookupViewComponent","_orderLookupForm$clas","_submitButton$classNa","_props$data$operation","b2bRequestsStatus","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","getUrlSync","SummaryForm","formProps","addPaymentButton","appliedLine","bottomBorder","paymentAmountInput","EditForm","inputLabel","inputAmount","customerName","customerSince","accountCredit","accountDetails","checkoutCustomerAccount","checkoutErrorRef","summaryView","editView","moduleState","isReady"],"sourceRoot":""}