{"version":3,"file":"static/js/12.3720033b6d6728f02390.chunk.js","mappings":";iSAiBA,IAAaA,EAAb,cAA0CC,EAAAA,cAA1CC,kCACqB,KAAAC,oBAA0DF,EAAAA,YAMpE,KAAAG,YAAc,IACVC,KAAKC,2BAA2BD,KAAKE,OAGzCC,SACH,MACIC,MACIC,2BAA6BC,OAAQD,IACxC,MACDE,EAAK,UACLC,GACAR,KAAKE,MAGT,GAAIO,EAAAA,gBAAgBC,YAAYH,MAAAA,OAAK,EAALA,EAAOI,eAAgB,CACnD,MAAMC,EACFP,MAAAA,GAAAA,EAA2BQ,gBAAkBR,EAA0BQ,eAAeC,UAChFT,EAA0BQ,eAAeC,UACzCN,EAAUO,yBAEpB,OACInB,EAAAA,cAAA,OAAKoB,UAAU,wCACXpB,EAAAA,cAAA,UACIoB,UAAU,yCACVC,MAAM,YAAW,aACLT,EAAUU,8BACtBC,QAASnB,KAAKD,YACdqB,IAAKpB,KAAKF,qBAEVF,EAAAA,cAAA,QAAMoB,UAAU,mCAAmCJ,IAEtDL,EAAMI,gBAQf,iCAAiCT,GACrC,MACIE,MACIC,2BAA6BC,OAAQD,IACxC,QACDgB,GACAnB,EACJ,IAAKG,EACD,OAEJ,IAAIiB,EAA0B,GAC1BD,GAAWE,OAAOC,KAAKH,GAASI,OAAS,GAAKhB,EAAAA,gBAAgBC,YAAYW,EAAQV,iBAClFW,EAAkBD,EAAQV,cAAc,GAAGe,UAEzCrB,EACDsB,WAAW,CACRD,GAAIJ,EACJM,iBAAiB,EACjBC,iBAAkB7B,KAAKF,oBACvBgC,mBAAoBC,GACTC,QAAQC,YAGtBC,OAAOC,IACAjC,EAAMkC,YACNlC,EAAMkC,UAAUD,MAAMA,EAAME,SAC5BnC,EAAMkC,UAAUE,MAAM,uCAxE7B3C,GAAoB4C,EAAAA,EAAAA,IAAA,CADhCC,EAAAA,IACY7C,GCeP,MAAO8C,UAAa7C,EAAAA,cAGtBC,YAAYK,GACRwC,MAAMxC,GACN,MAAMyC,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1C,EAAM2C,iBAAmBC,EAAAA,kBAAkBL,MACrFzC,KAAK+C,YAAaC,EAAAA,EAAAA,wBAAuB9C,EAAM2C,iBAAmBF,GAG/DxC,SACH,OAAOP,EAAAA,cAAA,OAAKoB,UAAWhB,KAAKE,MAAMc,WAAYhB,KAAKiD,YAAYjD,KAAKE,QAGhE+C,YAAYC,GAChB,OAAIA,EAAOC,MAAQD,EAAOC,KAAKC,QAAQC,eAE/BzD,EAAAA,cAAA,IAAA2B,OAAA+B,OAAA,CACIC,KAAML,EAAOC,KAAKC,QAAQC,eAAc,aAC5BH,EAAOC,KAAKK,UAExBC,OAAQP,EAAOC,KAAKO,aAAe,cAAWC,EAC9CC,IAAI,cACA5D,KAAK+C,YAER/C,KAAK6D,aAAaX,IAIxBlD,KAAK6D,aAAaX,GAGrBW,aAAaX,GASjB,OACItD,EAAAA,cAACkE,EAAAA,GAAcvC,OAAA+B,OAAA,GACPJ,EAAOa,MAAK,CAChBC,eAAgBhE,KAAKE,MAAM8D,eAC3BC,aAAcjE,KAAKE,MAAM+D,aACzBC,cAAgBhB,GAAUA,EAAOa,OAASb,EAAOa,MAAMG,eAbT,CAClDC,UAAW,CACPC,GAAI,CAAEC,EAAG,iBAAkBC,EAAG,EAAGC,EAAG,GACpCC,GAAI,CAAEH,EAAG,iBAAkBC,EAAG,EAAGC,EAAG,IAExCE,UAAU,GASNC,oBAAoB,UACpBC,UAAW,CACPC,IAAK1B,EAAOa,OAAS,GACrBC,eAAgBhE,KAAKE,MAAM8D,eAC3Ba,WAAY7E,KAAKE,MAAM4E,SACvBC,kBAAmB,SAEvBC,uBAAqB,MCnDrC,IAAaC,EAAb,cAA6BrF,EAAAA,cAGzBC,YAAYK,GACRwC,MAAMxC,GACN,MAAMyC,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1C,EAAM2C,iBAAmBC,EAAAA,kBAAkBmC,SACrFjF,KAAK+C,YAAaC,EAAAA,EAAAA,wBAAuB9C,EAAM2C,iBAAmBF,GAG/DxC,SACH,OACIP,EAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACHtC,UAAU,sBACVG,QAASnB,KAAKE,MAAMiF,aACpBC,MAAOpF,KAAKE,MAAMM,UAAU6E,yBAAwB,aACxCrF,KAAKE,MAAMM,UAAU6E,yBAAwB,gBAC1CrF,KAAKE,MAAMoF,WAAU,gBACrBtF,KAAKE,MAAMqF,UACtBvF,KAAK+C,olBAlBZkC,GAAO1C,EAAAA,EAAAA,IAAA,CADnBC,EAAAA,IACYyC,GC8Cb,IAAMO,EAAN,cAAqB5F,EAAAA,cAoCjBC,YAAmBK,GACfwC,MAAMxC,GA8NH,KAAAuF,qBAAwBC,GAAuBC,IAA8C,IAAAC,EAC5D,QAApCA,EAAI5F,KAAKE,MAAMgD,OAAO2C,sBAAc,IAAAD,GAAhCA,EAAmCF,KACnC1F,KAAKE,MAAMgD,OAAO2C,eAAeH,GAAWI,SAAWH,EAAMlC,OAAOsC,QA/NxE/F,KAAKgG,WAAapG,EAAAA,YAClBI,KAAKiG,cAAgBjG,KAAKiG,cAAcC,KAAKlG,MAC7CA,KAAKmG,eAAiBnG,KAAKmG,eAAeD,KAAKlG,MAC/CA,KAAKoG,aAAepG,KAAKoG,aAAaF,KAAKlG,MAC3CA,KAAKqG,cAAgBrG,KAAKqG,cAAcH,KAAKlG,MAC7CA,KAAKsG,SAAWtG,KAAKsG,SAASJ,KAAKlG,MACnCA,KAAKuG,uBAAyBvG,KAAKuG,uBAAuBL,KAAKlG,MAC/DA,KAAKwG,SACDtG,EAAMuG,QAAQC,SAAWxG,EAAMuG,QAAQC,QAAQC,QAAgD,WAAtCzG,EAAMuG,QAAQC,QAAQC,OAAOC,KAAoB,KAAO,KACrH5G,KAAK6G,MAAQ,CACTC,qBAAqB,EACrBC,mBAAmB,EACnBC,gBAAgB,EAChBC,QAAS,MAEbjH,KAAK6C,kBAAmBqE,EAAAA,EAAAA,oBACpBlH,KAAKE,MAAMuG,QAAQC,QAAQS,kBAC3BnH,KAAKE,MAAMkH,aACXpH,KAAKE,MAAMkC,WA9CT,kBAAsB,IAAAiF,EAC5B,MAAMC,EAA6C,QAArCD,EAAGrH,KAAKE,MAAME,KAAKmH,0BAAkB,IAAAF,OAAA,EAAlCA,EAAoC/G,OACrD,OAAOgH,EAAWA,EAASE,WAAaF,EAASG,UAAO9D,EAElD,eACN,MAAyB,OAAlB3D,KAAKwG,UAAuC,OAAlBxG,KAAKwG,SAEhC,qBACN,MACIC,SAAS,cAAEiB,IACX1H,KAAKE,MACT,OAAOyH,EAAAA,GAAoB,UAAWD,IAAkB,GAElD,oBACN,MACIjB,SACIC,SACIkB,KACIC,YAAY,SAAEC,OAI1B9H,KAAKE,MACT,OAAO4H,EAASC,MAAM,KAAK,GAAGC,SAAShI,KAAKiI,gBA2BzCC,oBACCP,EAAAA,GAA0BQ,WAC1BC,OAAOC,iBAAiB,UAAWrI,KAAKsG,WAE5CgC,EAAAA,EAAAA,KACI,IAAMtI,KAAKE,MAAME,KAAKmI,KAAKjI,SAC3B,KACIN,KAAKuI,KAAOvI,KAAKE,MAAME,KAAKmI,KAAKjI,UAIzC,MACImG,SACIC,SAAS,KAAE8B,IAEfhI,WAAW,4BAAEiI,EAA2B,iCAAEC,EAAgC,uBAAEC,IAC5E3I,KAAKE,MAEH0I,EAA0B5I,KAAK6I,uBAAuBL,EAAME,EAAkCD,QACpE9E,IAA5BiF,IAAuE,IAA9B5I,KAAK6G,MAAMG,gBAEpD8B,EAAAA,qBAAqBC,WAAWC,gBAAgB,IAAIC,EAAAA,kBAAkBL,EAAyBD,IAIhGO,uBACCvB,EAAAA,GAA0BQ,WAC1BC,OAAOe,oBAAoB,UAAWnJ,KAAKsG,UAAU,GAItDnG,SACH,MAAM,GACFuB,EAAE,SACFoD,EACA1E,MAAM,mBAAEmH,EAAkB,UAAE6B,GAC5B3C,SACIC,SAAS,KAAE8B,IACd,QACD/B,EACAjG,WAAW,UAAE6I,EAAS,aAAEC,IACxBtJ,KAAKE,OACH,SAAEqJ,EAAQ,UAAEC,EAAS,wBAAEC,GAA4BzJ,KAAKE,MAAMgD,OAG9DwG,EAAiB1J,KAAKE,MAAMuG,QAAQkD,IAAIzG,OAAOwG,iBAAkB,EACjEE,EAAoB5J,KAAK6G,MAAMC,oBAAsB,GAAK,iBAC1D+C,EAAkBC,GAAAA,CAAW,YAAa9J,KAAKE,MAAMgD,OAAOlC,UAAW4I,GACvEG,EAAY,oBACZzC,EAAWC,GAAsBA,EAAmBjH,OACpD0J,EAAehK,KAAKiK,SAAS,YAC7BC,EAAclK,KAAKiK,SAAS,WAC5BE,EAAanK,KAAKiK,SAAS,UACjC,IAAIG,EAAgB,EACpB,MAAMC,EAAkBrK,KAAKiK,SAAS,eAChCK,EAAqBtK,KAAKiK,SAAS,sBACvBtG,IAAdyF,IASIgB,EAPChB,EAAU9I,QACVG,EAAAA,gBAAgBC,YAAY0I,EAAU9I,SACtC8I,EAAU9I,OAAO,GAAGiK,mBACpB9J,EAAAA,gBAAgBC,YAAY0I,EAAU9I,OAAO,GAAGiK,mBAIjCnB,EAAU9I,OAAO,GAAGiK,kBAAkB9I,OAFtC,GAKxB,MAAM+I,EAASC,EAAAA,EAAAA,EAAA,GACPzK,KAAKE,OACNF,KAAK6G,OAAK,IACb6D,KACI9K,EAAAA,cAAC6C,EAAIlB,OAAA+B,OAAA,GACG,CACAH,KAAMoG,EACNxF,MAAOyF,EACPxI,UAAW,kBACXiD,aAAcjE,KAAKE,MAAMuG,QAAQC,QAAQzC,aACzCD,eAAgBhE,KAAKE,MAAMuG,QAAQC,QACnC7D,iBAAkB7C,KAAK6C,iBACvBiC,SAAU9E,KAAKE,MAAM4E,YAIjC6F,oBACI/K,EAAAA,cAACgL,EAAAA,sBAAqB,CAClB5J,UAAU,8BACV6J,mBAAoBnB,EACpBoB,oBAAqB9K,KAAKE,MAAMM,UAAUsK,oBAC1CrE,QAASA,EACT/E,GAAIA,EACJoD,SAAUA,EACVjC,iBAAkB7C,KAAK6C,iBACvBzC,KAAM,GACNgK,cAAeA,EACfW,mBAAoB/K,KAAKE,MAAMM,UAAUuK,mBACzCC,sBAAuBvB,IAG/BwB,mBACIrL,EAAAA,cAACgL,EAAAA,sBAAqB,CAClB5J,UAAU,6BACV6J,mBAAoBnB,EACpBoB,oBAAqB9K,KAAKE,MAAMM,UAAUsK,oBAC1CrE,QAASA,EACT/E,GAAIA,EACJoD,SAAUA,EACVjC,iBAAkB7C,KAAK6C,iBACvBzC,KAAM,KAGd8K,SAAUzK,EAAAA,gBAAgBC,YAAYsJ,GAClCA,EAAa,GAEbpK,EAAAA,cAACuL,EAAAA,kBAAiB,CACd9B,UAAWA,EACXC,aAAcA,EACd7C,QAASA,EACT/E,GAAIA,EACJoD,SAAUA,EACVjC,iBAAkB7C,KAAK6C,iBACvBzC,KAAM,CAAEmI,KAAMvI,KAAKuI,QAG3B6C,QACIxL,EAAAA,cAACqF,EAAO1D,OAAA+B,OAAA,GACA,CACA9C,UAAWR,KAAKE,MAAMM,UACtB8E,YAAatF,KAAK6G,MAAMC,oBACxBvB,SAAUwE,EACV5E,aAAcnF,KAAKiG,cACnBpD,iBAAkB7C,KAAK6C,oBAInCwI,QAAS5K,EAAAA,gBAAgBC,YAAYwJ,GAAeA,EAAc,GAClEoB,OAAQ7K,EAAAA,gBAAgBC,YAAYyJ,GAAcA,EAAa,GAC/DoB,YAAa9K,EAAAA,gBAAgBC,YAAY2J,GAAmBA,EAAkB,GAC9ErJ,UAAW6I,EACX2B,UAAW,CACPC,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAWD,GACtB6B,IAAK,UAETC,gBAAiB,CACb3K,UAAW8I,GAAAA,CAAW,yBAE1B8B,sBAAuB,CACnB5K,UAAW8I,GAAAA,CAAW,sBAE1B+B,QAAS,CACL7K,UAAW8I,GAAAA,CAAW,uBAE1BgC,oBAAqB,CACjBJ,IAAKK,EAAAA,MACLrK,GAAIqI,EACJ/I,UAAW,8BACXgL,QAAShM,KAAK6G,MAAMC,oBACpBmF,cAAe,mBACfC,OAAQlM,KAAKiG,eAEjBkG,iBAAkBvM,EAAAA,cAACwM,EAAAA,YAAW,CAACpL,UAAU,0CAA0CkL,OAAQlM,KAAKiG,gBAChGoG,wBAAyB,CACrBX,IAAKY,EAAAA,UACLtL,UAAW,yCAEfuL,yBAA0B,CACtBvL,UAAW,0CAEfwL,mCAAoC,CAChCxL,UAAW,2BAEfyL,0CACInF,GAAYtH,KAAK0M,YACX,CACIhB,IAAKiB,EAAAA,QACLjL,GAAI,mBACJV,UAAW,kCACX4L,UAAW,SACXZ,OAAQhM,KAAK6G,MAAME,kBACnBtD,OAAQzD,KAAKgG,WACbkG,OAAQlM,KAAKmG,qBAEjBxC,EACVkJ,WAAY7M,KAAK8M,iBAAiBxF,EAAUkB,EAAMxI,KAAKE,MAAMM,WAC7DuM,YAAa/M,KAAKgN,kBAAkB1F,EAAUkB,EAAMxI,KAAKE,MAAMM,WAC/DyM,0BAA2BjN,KAAKkN,8BAA8B5F,GAC9D6F,aAAcnN,KAAKoN,iBAAiB9F,GACpCzG,eAAgBJ,EAAAA,gBAAgBC,YAAY4J,IAAuB1K,EAAAA,cAACD,EAAoB4B,OAAA+B,OAAA,GAAKtD,KAAKE,UAGtG,OAAOF,KAAKE,MAAMmN,WAAW7C,GAmBzBP,SAASqD,GACb,MAAM,MAAE/M,GAAUP,KAAKE,MAEvB,OAAQK,GAASA,EAAM+M,IAAa/M,EAAM+M,GAAU7L,QAAUlB,EAAM+M,IAAc,KAU9ER,iBACJxF,EACAkB,EACAhI,GAEA,MAAMmC,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS5C,KAAK6C,iBAAkBC,EAAAA,kBAAkByK,QAC7ExK,GAAaC,EAAAA,EAAAA,wBAAuBhD,KAAK6C,iBAAkBF,GACjE,OACK2E,GACG1H,EAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACHtC,UAAU,2BACVoE,MAAO5E,EAAUgN,eACjBjK,KAAMiF,MAAAA,OAAI,EAAJA,EAAMiF,UAAS,aACTjN,EAAUkN,mBACtBvM,SAASwM,EAAAA,EAAAA,kBAAiB3N,KAAK6C,iBAAkBF,EAAS,YACtDI,GAEJnD,EAAAA,cAAA,QAAMoB,UAAU,gCAA+B,kBAC1CR,EAAUgN,iBAcvBR,kBACJ1F,EACAkB,EACAhI,GAAiC,IAAAoN,EAEjC,MAAMjL,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS5C,KAAK6C,iBAAkBC,EAAAA,kBAAkB+K,SAC7E9K,GAAaC,EAAAA,EAAAA,wBAAuBhD,KAAK6C,iBAAkBF,GACjE,OACI2E,GACAtH,KAAK0M,aACD9M,EAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACHtC,UAAU,4BACVoE,MAAO5E,EAAUsN,gBACjBvK,KAAsB,QAAlBqK,EAAEpF,MAAAA,OAAI,EAAJA,EAAMuF,kBAAU,IAAAH,EAAAA,EAAI,GAAE,aAChBpN,EAAUwN,oBACtB7M,SAASwM,EAAAA,EAAAA,kBAAiB3N,KAAK6C,iBAAkBF,EAAS,aACtDI,GAEJnD,EAAAA,cAAA,QAAMoB,UAAU,iCAAgC,kBAC3CR,EAAUsN,kBAOvBjF,uBACJL,EACAE,EACAD,GAEA,MAAM,uBAAEwF,EAAsB,4BAAEC,GAAgClO,KAAKE,MAAMgD,OAI3E,MAHsB,0EAGlBsF,MAAAA,OAAI,EAAJA,EAAM2F,4BAC4BxK,IAA3BsK,EAAuCA,EAAyBxF,EAH9C,2FAIlBD,MAAAA,OAAI,EAAJA,EAAM2F,4BAC0BxK,IAAhCuK,EAA4CA,EAA8BxF,OAD9E,EAMHwE,8BAA8B5F,GAClC,MACIpE,QAAQ,gBAAEkL,IACVpO,KAAKE,MACHyC,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS5C,KAAK6C,iBAAkBC,EAAAA,kBAAkBuL,WAC7EtL,GAAaC,EAAAA,EAAAA,wBAAuBhD,KAAK6C,iBAAkBF,GAC3D2L,GAAetO,KAAKuO,UAAYH,EACtC,OAAIE,EAEIhH,GACAtH,KAAK0M,aACD9M,EAAAA,cAAA,IAAA2B,OAAA+B,OAAA,CACIlC,IAAKpB,KAAKgG,WACVzC,KAAM+K,EAActO,KAAKiI,eAAiB,IAC1CjH,UAAU,4BAA2B,mBACpB,mBACjBwN,aAAcF,EAActO,KAAKoG,kBAAezC,EAChDxC,QAAUmN,OAAoC3K,EAAtB3D,KAAKmG,eAC7BlF,MAAM,OAAM,aACAjB,KAAK0M,YAAW,gBACb1M,KAAK6G,MAAME,mBACtBhE,GAEJnD,EAAAA,cAAA,QAAMoB,UAAU,0BAA0BhB,KAAK0M,cAM3DpF,GACAtH,KAAK0M,aACD9M,EAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACHmL,SAAUzO,KAAKgG,WACfhF,UAAU,4BAA2B,mBACpB,mBACjBG,QAASnB,KAAKmG,eACdlF,MAAM,OAAM,aACAjB,KAAK0M,YAAW,gBACb1M,KAAK6G,MAAME,mBACtBhE,GAEJnD,EAAAA,cAAA,QAAMoB,UAAU,0BAA0BhB,KAAK0M,cAUvDnG,yBACJ,MACIrD,QAAQ,gBAAEwL,IACV1O,KAAKE,MAEHyO,EAAmBD,GAAqC,IAAlBA,GAA2B,EAGjEE,EAAgBA,KAClB,MAAMC,EAAWC,SAASC,iBAAiB,UAC3C,IAAIC,EAAOH,EAASA,EAASpN,OAAS,GAClCwN,GAAW,EACf,KAAOD,EAAKE,YAAY,KAAAC,EAEpB,GADAH,EAAOA,EAAKE,WACM,QAAlBC,EAAIH,EAAKI,iBAAS,IAAAD,GAAdA,EAAgBE,SAVP,2BAU+B,CACxCJ,GAAW,EACX,OAIR,GAAKA,GAkBD,GAAIN,EAAkB,EAAG,CACrB,MAAM1H,EAAUjH,KAAK6G,MAAMI,QACvBA,IACAqI,aAAarI,GACbjH,KAAKuP,SAAS,CAAEtI,QAAS,cApBjC,GAAI0H,EAAkB,EAAG,CACrB,IAAI1H,EAAUjH,KAAK6G,MAAMI,QACpBA,IACDA,EAAUuI,YAAW,KACjBxP,KAAKqG,gBACLyI,SAAS3F,oBAAoB,YAAayF,KAC3CD,GACH3O,KAAKuP,SAAS,CAAEtI,QAAAA,UAIpBjH,KAAKqG,gBACLyI,SAAS3F,oBAAoB,YAAayF,IAatDE,SAAS3F,oBAAoB,YAAayF,GAC1CE,SAASzG,iBAAiB,YAAauG,GAGnCxB,iBAAiB9F,GACrB,MAAM,eAAEzB,GAAmB7F,KAAKE,MAAMgD,OAChCP,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS5C,KAAK6C,iBAAkB,IACjE,GAAKyE,GAAatH,KAAK0M,aAAgB7G,GAAmBpF,EAAAA,gBAAgBC,YAAYmF,GAGtF,OAAOA,EAAe4J,KAAI,CAACC,EAA0BC,KACjDhN,EAAQiN,cAAcC,MAAQH,EAAI5J,SAClC,MAAM/C,GAAaC,EAAAA,EAAAA,wBAAuBhD,KAAK6C,iBAAkBF,GAC3DmN,EAAoC,CACtCtM,UAAWkM,EAAIlM,UACfxC,UAAW,sCACX8E,SAAU4J,EAAI5J,SACd1C,QAASsM,EAAItM,QAAQC,eACrBK,aAAcgM,EAAIhM,aAClBqM,KAAM,OACNC,qBAAsBjN,GAG1B,OACInD,EAAAA,cAAC+H,EAAAA,GAAa,CACV/C,IAAK+K,EACLxM,KAAM2M,EACNnL,UAAW,CAAEsL,aAAcjQ,KAAKyF,qBAAqBkK,GAAQ3L,eAAgBhE,KAAKE,MAAMuG,QAAQC,cAMxGT,gBACJjG,KAAKuP,SAAS,CACVzI,qBAAsB9G,KAAK6G,MAAMC,sBAIjCX,iBACJnG,KAAKuP,SAAS,CACVxI,mBAAoB/G,KAAK6G,MAAME,oBAG/BV,gBACJrG,KAAKuP,SAAS,CACVxI,mBAAmB,IAGnBX,eACJpG,KAAKuP,SACD,CACIxI,mBAAmB,IAEvB,IAAM/G,KAAKuG,2BAIXD,SAASX,GACTA,EAAMuK,UAAYC,EAAAA,SAASC,QAC3BpQ,KAAKuP,SAAS,CAAEzI,qBAAqB,OA5f7CvE,EAAAA,EAAAA,IAAA,CADC8N,EAAAA,IAAU,gCAGD9N,EAAAA,EAAAA,IAAA,CAAT+N,EAAAA,IAAQ,iCAIC/N,EAAAA,EAAAA,IAAA,CAAT+N,EAAAA,IAAQ,8BAGC/N,EAAAA,EAAAA,IAAA,CAAT+N,EAAAA,IAAQ,oCAMC/N,EAAAA,EAAAA,IAAA,CAAT+N,EAAAA,IAAQ,kCAvBP9K,GAAMjD,EAAAA,EAAAA,IAAA,CADXC,EAAAA,IACKgD,GAygBN,iICpiBA,MAAM+K,EAAsBhJ,IACxB,MAAMD,EAAWC,GAAsBA,EAAmBjH,OAC1D,OAAOV,EAAAA,cAAAA,EAAAA,SAAA,KAAG0H,EAAWA,EAASE,WAAaF,EAASG,KAAO,KA4E/D,SAAS+I,EAAqBC,GAC1B,OACI7Q,EAAAA,cAAAA,EAAAA,SAAA,KACK6Q,GAASA,EAAMhP,OAAS,EACnBgP,EAAMhB,KAAI,CAACiB,EAAuBf,IACvB/P,EAAAA,cAACA,EAAAA,SAAc,CAACgF,IAAK+K,GAAQe,KAExC,MAKlB,QAlI+CxQ,IAC3C,MAAM,UAAEsL,EAAS,gBAAEG,EAAe,sBAAEC,EAAqB,QAAEC,GAAY3L,EAEvE,OACIN,EAAAA,cAAC+Q,EAAAA,OAAMpP,OAAA+B,OAAA,GAAKkI,GACR5L,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKqI,GACN/L,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKsI,GACL1L,EAAMkL,QACNlL,EAAMwK,KACN8F,EAAqBtQ,EAAMoL,QAC3BpL,EAAMW,eAuE3B,SAA6BX,EAAyB2Q,GAClD,MAAM,mCACFrE,EAAkC,0CAClCC,EAAyC,0BACzCQ,EAAyB,YACzBF,EAAW,WACXF,EAAU,aACVM,GACAjN,EAEJ,GAAIsM,EAAoC,CACpC,MAAMsE,EAAmBhH,GAAAA,CACrB0C,EAAmCxL,UACnC6P,EAAkB,iBAAmB,mBAEzC,GAAIpE,EACA,OACI7M,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkJ,EAAkC,CAAExL,UAAW8P,IACpD7D,EACDrN,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKmJ,KACLU,GAAeA,EAAasC,KAAKtM,GAA0BA,IAC3D4J,IAIV,GAAIF,EACP,OACIjN,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkJ,EAAkC,CAAExL,UAAW8P,IACpDjE,GAMjB,OAAO,KAxGUkE,CAAoB7Q,GAAO,GAC3BA,EAAMyK,oBACP/K,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKuI,IACT3L,EAAMgL,SACNsF,EAAqBtQ,EAAMqL,cAShD,SAA6BrL,GACzB,MAAM,QAAE2L,EAAO,yBAAEU,EAAwB,oBAAEzF,GAAwB5G,EACnE,OACIN,EAAAA,cAACoR,EAAAA,SAAQ,CAAChQ,UAAU,mCAAmCgL,QAASlF,GAC5DlH,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKiJ,GACLiE,EAAqBtQ,EAAMoL,QAgB5C,SAAmCpL,EAAyB2Q,GACxD,MAAM,mCAAErE,EAAkC,YAAEO,EAAW,WAAEF,EAAU,KAAEzM,EAAI,aAAE+M,GAAiBjN,EAE5F,GAAIsM,EAAoC,CACpC,MAAMsE,EAAmBhH,GAAAA,CACrB,oBACA0C,EAAmCxL,UACnC6P,EAAkB,iBAAmB,mBAGzC,GAAI1D,EACA,OACIvN,EAAAA,cAACqR,EAAAA,OAAM,CACHjQ,UAAW8P,EACXI,UAAU,yBACVC,WAAW,0BACXC,eAAe,MACfC,iBAAkBd,EAAmBnQ,EAAKmH,qBAE1C3H,EAAAA,cAAA,aACKuN,GAAeA,EAAasC,KAAKtM,GAA0BA,IAC3D4J,IAIV,GAAIF,EACP,OACIjN,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkJ,EAAkC,CAAExL,UAAW8P,IACpDjE,GAKjB,OAAO,KAhDMyE,CAA0BpR,GAAO,GACjCA,EAAM+K,mBACN/K,EAAMqL,aAEX3L,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKuI,IACT2E,EAAqBtQ,EAAMmL,UAlBvBkG,CAAoBrR,GACrBN,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAU,2BAA2BwP,EAAqBtQ,EAAMmL,i0BCsEtF,MA+xBamG,EAAoEC,EAAAA,GAAiBC,wBAEhG,UAASjH,EAAA,CAAIkH,UA/xBuCC,IAmBjD,IAAAC,EAAAC,EAAAC,EAAAC,EAAA,IAnBkD,KACnD5R,EAAI,QACJqG,EAAO,cACPvC,EAAa,YACb+N,EAAW,cACXC,EAAa,kBACbC,EAAiB,iBACjBC,EAAgB,gBAChBC,EAAe,qBACfC,EAAoB,UACpBC,EAAS,SACTzN,EAAQ,GACRpD,EAAE,iBACFmB,EAAgB,gBAChB2P,EAAe,eACfC,EAAc,qBACdC,EAAoB,eACpBC,EAAc,wBACdC,GACHhB,EACG,MAAMiB,EAAUzS,EAAKyS,QAQrB,SAASC,EAAiBC,EAA+BC,EAA2BC,GAChF,MAAMC,EAAY,IAAIC,IAAIJ,EAAuBC,EAAYtM,QAAQ0M,YAAYC,SAC7EH,EAAU5H,OACV4H,EAAU5H,QAAU,IAAI2H,IAExBC,EAAU5H,QAAU2H,EAIxB,OADmB,IAAIE,IAAID,EAAU3P,MACnBuE,SAAWoL,EAAU5H,OAQ3C,SAASgI,EAA8BC,GAAiC,IAAAC,EACpE,IAAKD,IAAgBA,EAAYE,gBAC7B,OAAO,KAGX,MAAMC,EAAiBH,EAAYE,gBAAgBE,MAC/CC,IAAc,IAAAC,EAAA,OAA0B,QAAtBA,EAAAD,EAAeE,eAAO,IAAAD,OAAA,EAAtBA,EAAwBE,uBAAwBC,EAAAA,eAAe/S,SAErF,IAAKR,EAAAA,gBAAgBC,YAAYgT,MAAAA,OAAc,EAAdA,EAAgBO,UAC7C,OAAO,KAIX,OADoF,QAAjET,EAAGE,EAAgBO,SAASN,MAAKO,IAA2B,IAAnBA,EAAKC,mBAAmB,IAAAX,EAAAA,EAAIE,EAAgBO,SAAS,GAgDrH,IAAIG,EAAavB,GAAUwB,EAAAA,EAAAA,uBAAkC,QAAbxC,EAACgB,EAAQpL,YAAI,IAAAoK,EAAAA,EAAI,GAAIgB,EAAQyB,SAAU7N,EAAQiB,mBAAe/D,GAAa,GACvH4O,GAAa6B,IACbA,EAAatB,EAAiBsB,EAAY3N,EAAS,cAEvD,MAAM8N,EAAsF,QAA7DzC,EA1C/B,SAAkDkB,EAA2BO,GAGzE,GAFoBP,EACkCrJ,IAAIzG,OAAOsR,oCACvBR,EAAAA,eAAeS,KACrD,OAAOlB,MAAAA,OAAW,EAAXA,EAAamB,gBAExB,MAAMC,EAAgBrB,EAA8BC,GACpD,OAAOoB,GAAiBlU,EAAAA,gBAAgBC,YAAYiU,EAAcC,mBAC5DC,EAAAA,EAAAA,kBAAiBF,EAAcC,iBAAiB,GAAI5B,EAAYtM,QAAQ0M,aACxEG,MAAAA,OAAW,EAAXA,EAAamB,gBAiCWI,CAAyCrO,EAASoM,UAAQ,IAAAf,EAAAA,EAAIe,MAAAA,OAAO,EAAPA,EAAS6B,gBACnGK,EAA2F,QAAnEhD,EAxB9B,SACIiB,EACAoB,EACAb,GAIA,GAFoBP,EACkCrJ,IAAIzG,OAAOsR,oCACvBR,EAAAA,eAAeS,KACrD,OAAOL,EAEX,MAAMO,EAAgBrB,EAA8BC,GACpD,OAAKoB,GAAkBA,EAAcK,YAK9BlC,EAAiBsB,EAAYpB,EADhB,SAAS2B,EAAcK,eAHhCZ,EAYkBa,CAAmCxO,EAAS2N,EAAYvB,UAAQ,IAAAd,EAAAA,EAAIqC,GAC9Fc,EAAgBC,IAAqBC,EAAAA,EAAAA,UAAiBL,IACtDM,EAAiBC,IAAsBF,EAAAA,EAAAA,UAA6Bb,IACpEgB,IAAuBH,EAAAA,EAAAA,UAAS,IAAII,EAAAA,aACpCC,EAAcC,IAAmBN,EAAAA,EAAAA,UAAyB,KAC1DO,EAAQC,IAAaR,EAAAA,EAAAA,WAAkB,IACvCS,EAAUC,IAAeV,EAAAA,EAAAA,WAAkB,GAG5CW,EAAmBtP,EAAQkD,IAAIzG,OAAO6S,iBAEtCC,EAAiCC,IACnC,MACMC,EADKD,EAAExS,OACE0S,aAAa,OAExBD,GACAE,EAAuBF,IAI/B,SAASE,EAAuBC,EAAoBC,GAGhD,IAAIC,EAAc,GAClB,KAAMF,GAA2B,KAAdA,IAAqBC,EAAM,CAC1C,IAAIE,EAAUf,EAAa9B,MAAK8C,GAAQA,EAAIC,WAAY,IACxC5H,SAAS6H,cAAc,gDAAiBH,MAAAA,OAAO,EAAPA,EAASvV,SAASuV,MAAAA,OAAO,EAAPA,EAASI,cAG/ER,EAAuBI,MAAAA,OAAO,EAAPA,EAASvV,OAGxC,IAAIoV,EAGA,OAFAE,EAAcF,EAOlB,IAAIQ,EAAcpB,EAAahG,KAAIyE,GAAQA,EAAK4C,OAAMC,QAAO,CAAChR,EAAO4J,EAAOqH,IAASA,EAAKC,QAAQlR,KAAW4J,IACzGuH,EAAQzB,EAAasB,QAAOI,GAAKA,EAAElW,QAAUsV,IAC7Ca,EAA2B,GAI/B,IAAK,IAAIC,EAAI,EAAGA,EAAIR,EAAYpV,OAAQ4V,IAAK,CACzC,IAAIC,GAAQ,EAEZ,IAAK,IAAIC,EAAI,EAAGA,EAAIL,EAAMzV,OAAQ8V,IAC1BL,EAAMK,GAAGT,KAAKU,MAAMX,EAAYQ,MAAKC,GAAQ,GAMrD,IAAKA,EAAO,CACR,IAAIG,EAAChN,EAAA,GAAsByM,EAAM,IACjCO,EAAEC,cAAgB,GAClBD,EAAEf,WAAY,EACde,EAAEX,KAAOD,EAAYQ,GACrBI,EAAExW,MAAQsV,EACVa,EAASO,KAAKF,IAItBP,EAAMS,QAAQP,GAEdF,EAAMzH,KAAImI,IACN,IAAIC,EAAW,+CAAgBD,EAAEd,QAAQc,EAAEE,kBACvCC,EAAKjJ,SAAS6H,cAAckB,EAASG,QAAQ,IAAK,OAAOA,QAAQ,IAAK,QAClE,IAAAC,EAAJF,IAEwB,QAApBH,EAAEF,eACDK,EAAmBG,MAAMC,QAAU,GAEpCJ,EAAG3I,UAAUgJ,IAAI,yCACU,UAApBR,EAAEF,eACRK,EAAmBG,MAAMC,QAAU,GAEpCJ,EAAG3I,UAAUiJ,OAAO,0CAEpBN,EAAG3I,UAAUgJ,IAAI,wCAChBL,EAAmBG,MAAMC,QAAU,KAGnCtC,GAAgD,OAApB,QAAhBoC,EAAAF,EAAGO,qBAAa,IAAAL,OAAA,EAAhBA,EAAkBC,MAAMC,WACrCrC,GAAY,GACZiC,EAAGO,cAAeJ,MAAMC,QAAU,SAWlD,MAAMI,EAAwB3Y,IAAAA,aAC1B,CAACoT,EAA2BwF,KACxB,MAAMC,EAAgBD,EAAWC,cAEjC,GADAlD,EAAoBmD,SAASD,EAAeD,GACxCG,EAAAA,iBAAiBC,mBAAmBJ,EAAWzS,OAC/C,OAEJ,MAAMkN,EAAc,GAAGwF,KAAiBD,EAAWzS,QACnD,IAAI8S,EAA2B,GAC/B,GAAI3D,EAAelN,SAASyQ,GAAgB,CACxC,MAAMK,EAAS,IAAI3F,IAAI+B,EAAgBlC,EAAYtM,QAAQ0M,YAAYC,SACvEyF,EAAOC,aAAaC,OAAOP,GAC3BI,EAA2B/F,EAAiBgG,EAAOG,WAAYxS,EAASwM,QAExE4F,EAA2B/F,EAAiBoC,EAAgBzO,EAASwM,GAGzE,GADAkC,EAAkB0D,GACdJ,IAAkBzE,EAAAA,eAAe/S,MAAO,CACxC,MAAMiY,EAAwBzY,EAAAA,gBAAgBC,YAAY8X,EAAWW,kBAC/DX,EAAWW,iBAAiB,QAC5BxV,EACAyV,GAAcvE,EAAAA,EAAAA,kBAAiBqE,EAAuBlG,EAAYtM,QAAQ0M,aAChFkC,EAAmB8D,QAGfP,IACEzQ,OAAOiR,SAAS9V,KAAgByE,SAAS,SAAYI,OAAOiR,SAAS9V,KAAgByE,SAAS,aAEhGI,OAAOiR,SAAS9V,KAAOsV,KAInC,CAACtD,EAAqB9O,EAASyO,IAGnC,IAAKrC,EACD,OAAO,KAGX,MAAMyG,EAAc7Y,EAAAA,gBAAgB8Y,YACT,QADoBvH,EAC3Ca,EAAQY,uBAAe,IAAAzB,OAAA,EAAvBA,EAAyBvC,KAAIyE,IAAO,IAAAsF,EAAAC,EAAAC,EAAAC,EAChC,MAAMC,EAAsD,QAApCJ,EAAe,QAAfC,EAAGvF,EAAKJ,eAAO,IAAA2F,OAAA,EAAZA,EAAc1F,2BAAmB,IAAAyF,EAAAA,EAAI,GAMhE,KAL8BK,EAAAA,EAAAA,8BAC1BD,EACAnT,EACAqT,EAAAA,4BAA4BC,aAG5B,OAAO,KAEX,MACMvF,EADc/N,EACkCkD,IAAIzG,OAAOsR,kCAC3DiE,EAAgBmB,EAChBI,EAAmC,GACnCC,EAoCA,QApCQP,EACG,QADHC,EACVzF,EAAKD,gBAAQ,IAAA0F,OAAA,EAAbA,EAAelK,KAAiB+I,IAAa,IAAA0B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAUzC,OATAP,EAAcrC,KAAKa,GASZ,CAIHgC,OAAQ,GAAgB,QAAhBN,EAAGhG,EAAKI,gBAAQ,IAAA4F,EAAAA,EAAI,MAAMN,KAA4C,QAA1BO,EAAI3B,EAAWxD,mBAAW,IAAAmF,EAAAA,EAAI,MAC9EP,IAAuB5F,EAAAA,eAAe/S,MAChCwU,MAAAA,GAAsE,QAA1D2E,EAAZ3E,EAAc9B,MAAK8G,IAAUA,MAAAA,OAAM,EAANA,EAAQxZ,SAAUuX,EAAWxD,qBAAY,IAAAoF,OAAA,EAAtEA,EAAwExD,UACxEnB,MAAAA,GAAqE,QAAzD4E,EAAZ5E,EAAc9B,MAAK8G,IAAUA,MAAAA,OAAM,EAANA,EAAQ3D,QAAS0B,EAAWxD,qBAAY,IAAAqF,OAAA,EAArEA,EAAuEvC,kBAIjF/R,MAA6B,QAAxBuU,EAAE9B,EAAWxD,mBAAW,IAAAsF,EAAAA,EAAI,GAEjC7B,cAAAA,EACAiC,aAAclC,EAAWmC,mBACzBC,SAAUpC,EAAWqC,eACrB1B,iBAAkBX,EAAW5D,iBAC7B8B,UAAW8B,EAAWrE,UACtB2G,WACI/E,IACAnD,MAAAA,GAEC,QAFsB2H,EAAvB3H,EAAyBe,MACrBoH,IAAqB,IAAAC,EAAA,OAAID,EAAsBhV,SAAiC,QAA5BiV,EAAMxC,EAAWxD,mBAAW,IAAAgG,EAAAA,EAAI,cACvF,IAAAT,OAAA,EAFDA,EAEGO,YACPlW,IAAK4T,EAAWxD,uBAEtB,IAAA0E,EAAAA,EAAI,GA+CV,OA9CI/R,EAAAA,GAASQ,WACL8R,GACAA,EAASgB,SAAQC,IACb,MAAMC,EAAkB,+BAAgCD,EAAGV,OACtDxC,QAAQ,IAAK,OACbA,QAAQ,IAAK,OACbA,QAAQ,IAAK,KACbA,QAAQ,IAAK,UAEZhJ,EAAOF,SAAS6H,cAAgCwE,GACtD,GAAInM,EAAM,KAAAoM,EAAAC,EACN,MAAMC,EAAkBtB,EAAcrG,MAAK4H,GAAOA,EAAIvG,cAAgBkG,EAAGnV,QACnEyV,EAAyBF,MAAAA,GAAoC,QAArBF,EAAfE,EAAiBG,2BAAmB,IAAAL,GAAqC,QAArCA,EAApCA,EAAsCzH,MAAKsC,GAAe,iBAAVA,EAAEyF,aAAuB,IAAAN,GAAO,QAAPA,EAAzEA,EAA2EO,aAAK,IAAAP,OAAA,EAAhFA,EACzBQ,YAQN,GAPIJ,GACAxM,EAAK6M,aAAa,QAASL,GAKiC,QAA1DH,EAAG5F,EAAa9B,MAAK8G,IAAUA,MAAAA,OAAM,EAANA,EAAQxZ,SAAUia,EAAGnV,eAAM,IAAAsV,OAAA,EAAvDA,EAAyDzE,UAC1D,CACJ,IAAIkF,EAAQ,+BAA+BZ,EAAGV,OACzCxC,QAAQ,IAAK,OACbA,QAAQ,IAAK,OACbA,QAAQ,IAAK,KACbA,QAAQ,IAAK,SAEd+D,EAAOjN,SAAS6H,cAAcmF,GAC9BC,GAEAA,EAAK1T,iBAAiB,QAAS2N,QAQnDxB,IAAsCR,EAAAA,eAAeS,MACrDhU,EAAAA,gBAAgBC,YAAYuZ,KAC3BA,EAAS+B,MAAKC,GAAUA,EAAOvF,aAChC+B,IAAkBzE,EAAAA,eAAe/S,QAEjCgZ,EAAS,GAAGvD,WAAY,GAErB,CAAEwF,SAAUhI,EAAKI,SAAU2F,SAAAA,OAIpCtX,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAmB,GAAIgQ,EAAQyB,SAAS2E,YAE5EkD,IAAYnZ,EAAAA,EAAAA,wBAAuBH,EAAmBF,GAGtDyZ,GAAyB3V,EAAQkD,IAAIzG,QAA0D,oBAAhDuD,EAAQkD,IAAIzG,OAAOmZ,yBAuFxE,SAASC,GAAmBC,EAAiBC,GACzC,GAAID,GAAUC,EAAqB,CAC/B,MAAMC,EAAgBF,EAAOG,QAAQ,GACrC,OAAOC,EAAAA,EAAAA,QAAOH,GAAuB,GAAIC,EAAe,KAE5D,MAAO,GASX,SAASG,GAAmBC,EAAsBC,GAC9C,OAAID,GAAeC,GACRH,EAAAA,EAAAA,QAAOG,GAA4B,GAAID,GAE3C,GAaX,SAASE,GACLC,EACAC,EACAV,EACAC,EACAK,EACAC,GAEA,MAAMI,EAA2BN,GAAmBC,EAAaC,MAAAA,EAAAA,EAA4B,IAC7F,MAAO,GAAGE,MAAAA,EAAAA,EAAQ,MAAMC,MAAAA,EAAAA,EAAS,MAAMX,GAAmBC,EAAQC,KAC9DU,EAA2B,IAAIA,IAA6B,KA0IpE,IAAIC,GAAYjI,EAEhB,MAAMkI,GAAoBC,UAAW,IAAAC,EAEjC,MAAMC,EAA6D,CAC/DC,6BAA8B,CAAC,GAC/BC,6BAAyB9Z,EACzB+Z,sBAAsB,EAGtBC,UAAW,GAETC,EAAmBnT,EAAAA,EAAA,GAAoD8S,GAAc,IAAEC,6BAA8B,CAAC,KAEtHK,EAA8B,GA6DpC,OA3DAC,EAAAA,EAAAA,oDACI,CAAEC,cAAetX,EAAQiB,gBACb,QAAZ4V,EAAAld,EAAKyS,eAAO,IAAAyK,OAAA,EAAZA,EAAchJ,WAAY,EAC1BiJ,GACFS,MAAKX,MAAAA,IAAY,IAAAY,EAGf,IAAIC,QAAgBJ,EAAAA,EAAAA,oDAChB,CAAEC,cAAetX,EAAQiB,gBACb,QAAZuW,EAAA7d,EAAKyS,eAAO,IAAAoL,OAAA,EAAZA,EAAc3J,WAAY,EAC1BsJ,GAGJO,EAAI1O,KAAI2O,IACJ,MAAMC,GAAkBC,EAAAA,EAAAA,2CACpB7X,EAAQiB,cACR0W,EAAIG,WAAa9d,EAAAA,gBAAgB+d,OAAOJ,EAAIG,YAAc,IAC1D,IAGJE,EAAAA,EAAAA,+BAA8B,CAAEV,cAAetX,EAAQiB,eAAiB2W,GACnEL,MAAKU,IAAO,IAAAC,EACoC,QAA7CA,EAAAD,EAAKE,gDAAwC,IAAAD,GAA7CA,EAA+ClP,KAAIoP,IAAM,IAAAC,EAAAC,EAAAC,EAAAC,EACrD,IAAIC,GAAOC,EAAAA,EAAAA,yCACP,CACIC,mBAAoBhB,EAAIgB,mBACxBC,eAAgBjB,EAAIiB,eACpBd,WAAY,CAACM,EAAIS,WACjBC,kCAAmCV,EAAIU,kCACvCC,iCAAkCX,EAAIW,iCACtCC,qCAAsCZ,EAAIY,qCAC1CC,oCAAqCb,EAAIa,qCAE7CjZ,EAAQkD,IAAIzG,OAAOyc,gBAGvB,MAAMC,EAAwB,CAC1B9H,iBAA6B,QAAZgH,EAAA1e,EAAKyS,eAAO,IAAAiM,OAAA,EAAZA,EAAce,kBAAmB,EAClDjJ,UAAWiI,EAAIS,WAAa,EAC5Bre,OAAyB,QAAlB8d,EAAAX,EAAIiB,sBAAc,IAAAN,OAAA,EAAlBA,EAAoBpD,QAAS,GACpC7E,MAA8F,QAAxFkI,EAAAd,EAAQnH,QAAOa,IAAC,IAAAkI,EAAA,OAAgB,QAAhBA,EAAIlI,EAAE2G,kBAAU,IAAAuB,OAAA,EAAZA,EAAcnM,MAAKoM,GAAKA,IAAMlB,EAAIS,WAAa,OAAI,GAAGD,sBAAc,IAAAL,OAAA,EAAxFA,EAA0FrD,QAAS,GACzGjF,WAMS,QALLuI,EAAA3F,EACK3F,MACGsI,GAEwB,aAApBA,EAAOC,kBACd,IAAA+C,GACoE,QADpEA,EALLA,EAMMhF,SAAStG,MAAKsI,IAAM,IAAA+D,EAAA,OAAI/D,EAAOlW,SAA4B,QAAvBia,EAAK5B,EAAIiB,sBAAc,IAAAW,OAAA,EAAlBA,EAAoBrE,iBAAM,IAAAsD,OAAA,EANzEA,EAM2EvI,aAAa,EAC5FgB,cAAewH,GAEnBrB,EAAYlG,KAAKiI,SAGxB5B,MAAK,KACFtI,EAAgBmI,YAIzBA,GA0BX,OAvBAje,IAAAA,WAAgB,KACZwd,OACD,IACHxd,IAAAA,WAAgB,KACZ,IAAK+V,GAAUhO,EAAAA,GAASQ,WAAamR,EAAY7X,QAAU6X,EAAY,GAAGW,SAAS,GAAI,CAEnF,IAAI6B,EAAQ,+BADDxC,EAAY,GAAGW,SAAS,GACWO,OACzCxC,QAAQ,IAAK,OACbA,QAAQ,IAAK,OACbA,QAAQ,IAAK,OAClB,GAAI8D,EAAM9T,SAAS,aACfoV,SACG,CACH,IAAIrB,EAAOjN,SAAS6H,cAA8BmF,GAC9CC,IACAnG,GAAU,GACVpG,YAAW,KACPuM,EAAMkE,UACP,UAIhB,CAAC3G,IAEA1Z,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,OAAKoB,UAAU,sBACVwR,GAjTb,SAAyB0N,EAA4BhM,GACjD,GAAkB,OAAdgM,EACA,OAEJ,MAAMC,EAAyC5K,EAAoB6K,YAAY3Q,KAAsBwK,IAC1F,CACHmF,oBAAoBiB,EAAAA,EAAAA,4CAA2CpG,EAASxB,eACxE4G,eAAgB,CACZ/K,SAAU,EACVqH,MAAO1B,EAASlU,WAI5B,OAAOnG,IAAAA,aAAmBsgB,EAAiC,CAAEI,kBAAmBpM,EAAMiM,mBAAAA,IAoS1DI,CAAgB/N,EAAiBK,EAAQyB,UAC7D1U,IAAAA,cAAA,IAAA2B,OAAA+B,OAAA,CACIC,KAAM4Z,GACNhc,SAASwM,EAAAA,EAAAA,kBAAiB9K,EAAmBF,EAASkQ,EAAQpL,MAAM,sBAC/CoL,EAAQ2N,OAAM,aACvBzD,GACRlK,EAAQpL,KACRhB,EAAQga,iBAAiBC,eAAe7N,EAAQ8N,OAChD9N,EAAQ+N,cACRvO,EACAQ,EAAQgO,aACRvO,GAEJtR,UAAU,eACNmb,IAlPpB,SACI2E,EACA7c,EACA2W,EACAmG,EACAC,EACAhd,GAEA,IAAKC,IAAiB6c,EAClB,OAAO,KAEX,MAAM/c,EAAoB,CACtBkd,IAAKrG,GAAYmG,EACjBC,QAASA,GAAoB,GAC7BE,YAAaH,GAEXI,EAA0B,CAAEld,aAAAA,GAIlC,OAHAkd,EAAWld,aAAeA,EAC1Bkd,EAAWjd,cAAgB4c,EAC3BK,EAAWjd,cAAckd,iBAAkB,EACpCxhB,IAAAA,cAACyhB,EAAAA,GAAK9f,OAAA+B,OAAA,GAAKS,EAAWod,EAAU,CAAEzc,oBAAoB,QAAQV,eAAgBA,KAgOxEsd,CACGpd,EACAuC,EAAQC,QAAQzC,aAChBoR,EACAxC,EAAQ6B,gBACR7B,EAAQpL,KACRhB,EAAQiB,cAAc1D,kBAIlCpE,IAAAA,cAAA,IAAA2B,OAAA+B,OAAA,CACIC,KAAM4Z,GACNhc,SAASwM,EAAAA,EAAAA,kBAAiB9K,EAAmBF,EAASkQ,EAAQpL,MAAM,sBAC/CoL,EAAQ2N,OAAM,aACvBzD,GACRlK,EAAQpL,KACRhB,EAAQga,iBAAiBC,eAAe7N,EAAQ8N,OAChD9N,EAAQ+N,cACRvO,EACAQ,EAAQgO,aACRvO,GAEJtR,UAAU,eACNmb,IAEJvc,IAAAA,cAAA,MAAIoB,UAAU,sBAAsB6R,EAAQpL,OAEhD7H,IAAAA,cAAA,OAAKoB,UAAU,wBACXpB,IAAAA,cAAA,QAAMoB,UAAU,sBACZpB,IAAAA,cAAA,QAAMoB,UAAU,kBAAkB,GAAG6R,EAAQ2N,WA3O7D,SACIxN,EACAuO,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,MAAM/E,EAAsB,CACxBgF,UAAWR,EACXS,cAAeR,EACfS,wBAAyBT,EACzBU,gBAAiBT,GAAoCD,EACrDW,gBAAiBT,GAAoCF,GAGzD,OACI9hB,IAAAA,cAAC0iB,EAAAA,eAAc,CACX7b,QAASuM,EACTtR,GAAI8f,EACJ1c,SAAUyc,EACVnhB,KAAM,CAAE6c,MAAAA,GACRhL,YAAa4P,EACb3P,cAAe4P,EACf3P,kBAAmB4P,EACnB3P,iBAAkB4P,EAClBtP,qBAAsBA,EACtBC,eAAgBA,IA6Mf4P,CACG9b,EACA3B,EACApD,EACAmR,EAAQoP,UACRpP,EAAQ8N,MACR9N,EAAQuP,gBACRvP,EAAQwP,gBACRpQ,EACAC,EACAC,EACAC,GAEHgK,MAvauBoG,GAua8B3P,EAAQ4P,sBAlalE7iB,IAAAA,cAAA,OAAKoB,UAAU,gCACXpB,IAAAA,cAAA,YAAO4iB,KAJJ,OAqNYE,GAiNI7P,EAAQ8P,YAhN5B/iB,IAAAA,cAAA,KAAGoB,UAAU,qBAAqB0hB,MAiN/Bjc,EAAQkD,IAAIzG,OAAO0f,YApMjC,SACI5P,EACAuO,EACAC,EACAqB,EACAC,EACAtf,GAEA,IAAKqf,EACD,OAAO,KAGX,MAAME,GAAgBD,MAAAA,OAAY,EAAZA,EAAc7J,kBAActV,EAC5C6Y,EAAsBF,GAAmBuG,EAAWrf,GACpDsZ,EAA2BF,GAAmBoG,OAAOD,GAAgBzQ,GAE3E,OACI1S,IAAAA,cAACqjB,EAAAA,gBAAe,CACZxc,QAASuM,EACTtR,GAAI8f,EACJ1c,SAAUyc,EACVsB,UAAWA,EACXK,YAAaH,EACbI,UAAQ,EACR3f,UAAWgZ,EACXlK,qBAAsBwK,EACtB1c,KAAM,KA2KFgjB,CAAa3c,EAAS3B,EAAUpD,EAAImR,EAAQ+N,cAAe/N,EAAQgO,aAAcxO,IA1Z9DgR,GA2ZI5Q,IA1Z+B,KAA/B4Q,GAK/BzjB,IAAAA,cAAA,OAAKoB,UAAU,6BACXpB,IAAAA,cAAA,YAAOyjB,KALJ,MAeN5iB,EAAAA,gBAAgBC,YAAY4Y,GAI7B1Z,IAAAA,cAAA,OAAKoB,UAAU,2BACVsY,EAAY7J,KAAIyE,GAETtU,IAAAA,cAAC0jB,EAAAA,gCAA+B,CAC5B1e,IAAKsP,EAAKgI,SACVzV,QAASA,EACT8c,kBAAmBhL,EACnB0B,SAAU/F,EAAK+F,cAVxB,MAlBf,IAAmCoJ,GAuMRX,GAvNSF,KA5WV,KAmyB9B,2GC11BA,MAAMgB,UAAkB5jB,EAAAA,UAIpBC,YAAYK,EAAwB2G,GAChCnE,MAAMxC,GAgCO,KAAAujB,sBAAyBxN,IACtC,MAAM9T,EAA2B,KAAnB8T,EAAExS,OAAOsC,MAAe,GAAK/F,KAAK6G,MAAM1E,MACtDnC,KAAKuP,SAAS,CACVmU,oBAAqBzN,EAAExS,OAAOsC,MAAO5D,MAAAA,EACrCwhB,WAAY1N,EAAExS,OAAOsC,SAIZ,KAAA6d,gBAAmBC,IAChC,IAAKA,IAAcA,EAAUtb,KACzB,OAEJ,MAAMub,EAAe9jB,KAAK6G,MAAM6c,oBAEhCG,EAAUE,aAAa,CAAEC,UAAWF,IAC/B9F,MAAK1d,IACoB,YAAlBA,EAAO2jB,OAEPjkB,KAAKuP,SAAS,CAAEmU,oBAAqB,GAAIvhB,MAAO,GAAIwhB,UAAU,IAClC,iBAArBrjB,EAAO4jB,UACdlkB,KAAKuP,SAAS,CAAEpN,MAAOnC,KAAKE,MAAMikB,8BAElCnkB,KAAKuP,SAAS,CAAEpN,MAAOnC,KAAKE,MAAMkkB,+BAGzCliB,OAAMC,IACHnC,KAAKuP,SAAS,CAAEpN,MAAOnC,KAAKE,MAAMmkB,oCAS7B,KAAAC,iBAAoBT,GAAuCle,IACxEA,EAAM4e,iBACNvkB,KAAKwkB,uBAAuBX,IAQf,KAAAW,uBAA0BX,GAAsC,KAC7E7jB,KAAK4jB,gBAAgBC,IAGR,KAAAY,YAAc,CAACC,EAA8BC,EAAkCd,KAE5F,MAAM9gB,GAAaC,EAAAA,EAAAA,wBAAuBhD,KAAKE,MAAM2C,iBAAmB7C,KAAK2C,SAE7E,OACI/C,EAAAA,cAAA,QAAMglB,SAAU5kB,KAAKskB,iBAAiBT,GAAY7iB,UAAU,kCACxDpB,EAAAA,cAAA,OAAKoB,UAAU,yBACXpB,EAAAA,cAAA,SACIoB,UAAU,4BACV6jB,SAAU7kB,KAAKyjB,sBACf1d,MAAO/F,KAAK6G,MAAM6c,oBAClBoB,YAAaJ,IAEjB9kB,EAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACH8B,MAAOuf,EACP3jB,UAAU,gCACVG,QAASnB,KAAKwkB,uBAAuBX,GACrCkB,UAAW/kB,KAAK6G,MAAM8c,UAClB5gB,GAEH4hB,MAOJ,KAAAK,iBAAmB,CAACnB,EAAmCle,KACpE,IAAKke,EACD,OAEJ,MAAM3E,EAAOvZ,EAAMsf,cAAc9O,aAAa,eAAiB,GAC/D0N,EAAUqB,iBAAiB,CACvBC,WAAY,CAACjG,KAEZlB,MAAK1d,IACoB,YAAlBA,EAAO2jB,QACPjkB,KAAKuP,SAAS,CAAEpN,MAAO,QAG9BD,OAAM,KACHlC,KAAKuP,SAAS,CAAEpN,MAAOnC,KAAKE,MAAMklB,uCAK7B,KAAAC,mBAAqB,CAACnG,EAAc2E,KACjD,KAAKA,GAAcA,EAAUtb,MAASsb,EAAUtb,KAAK+c,WAAiD,IAApCzB,EAAUtb,KAAK+c,UAAU7jB,QAAiByd,GACxG,OAEJ,IAAIqG,EAAiB,EACrB,IAAK,MAAMC,KAAQ3B,EAAUtb,KAAK+c,UAC9B,GAAIE,EAAKC,cACL,IAAK,MAAMC,KAAgBF,EAAKC,cACxBC,EAAaC,eAAiBzG,IAC9BqG,GAAkBG,EAAaE,cAK/C,OAAyB,EAAlBL,GAGM,KAAAM,wBAA2B3lB,IACxC,IAAKA,EAAMqI,OAASrI,EAAMqI,KAAKA,OAASrI,EAAMqI,KAAKA,KAAKud,SAA8C,IAAnC5lB,EAAMqI,KAAKA,KAAKud,QAAQrkB,OACvF,OAGJ,MAAMskB,EAA0BpgB,IAC5B3F,KAAKglB,iBAAiB9kB,EAAMqI,KAAM5C,IAGhCqgB,EAAwB9lB,EAAMqI,KAAKA,KAAKud,QAAQG,QAClD,CAACC,EAAeC,IACLD,GAASlmB,KAAKqlB,mBAAmBc,EAAOC,MAAQ,GAAIlmB,EAAMqI,OAAS,IAE9E,GAEJ,OACI3I,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKoB,UAAU,4BACXpB,EAAAA,cAAA,OAAKoB,UAAU,oCACVhB,KAAKE,MAAMmmB,6BAEhBzmB,EAAAA,cAAC0iB,EAAAA,eAAc,CACXliB,KAAM,CACF6c,MAAO,CACHkF,wBAAyB6D,IAIjCvf,QAASvG,EAAMuG,QACf/E,GAAIxB,EAAMwB,GACVoD,SAAU5E,EAAM4E,SAChB9D,UAAU,oCAIdd,EAAMqI,KAAKA,KAAKud,QAAQrW,KAAK0W,IACzB,MAAM3iB,EAAYtD,EAAMomB,4BAA6B3J,EAAAA,EAAAA,QAAOzc,EAAMomB,2BAA4BpmB,EAAMqmB,gBAAiBJ,EAAOC,MAAQ,GAEpI,OACIxmB,EAAAA,cAAA,OAAKgF,IAAKuhB,EAAOC,KAAMplB,UAAU,kCAC7BpB,EAAAA,cAAA,OAAKoB,UAAU,8BACVmlB,EAAOC,KACP,IAAG,IAEJxmB,EAAAA,cAAC0iB,EAAAA,eAAc,CACXliB,KAAM,CACF6c,MAAO,CACHkF,wBAAyBniB,KAAKqlB,mBAAmBc,EAAOC,MAAQ,GAAIlmB,EAAMqI,QAIlF9B,QAASvG,EAAMuG,QACf/E,GAAIxB,EAAMwB,GACVoD,SAAU5E,EAAM4E,SAChB9D,UAAU,wCACZ,KAGNpB,EAAAA,cAACsF,EAAAA,OAAM,CACHE,MAAOlF,EAAMqmB,gBACbvlB,UAAU,mCACVG,QAAS4kB,EAAsB,aACnBI,EAAOC,KAAI,aACX5iB,GAEXtD,EAAMqmB,uBAhNnCvmB,KAAK2C,SAAUC,EAAAA,EAAAA,kBAAiB,QAAS5C,KAAKE,MAAM2C,iBAAmBC,EAAAA,kBAAkB0jB,gBACzFxmB,KAAK6G,MAAQ,CACT4f,gBAAgB,EAChB/C,oBAAqB,GACrBvhB,MAAO,GACPwhB,UAAU,GAIX+C,sBAAsBC,EAA4BC,GACrD,OAAI5mB,KAAK6G,QAAU+f,GAAa5mB,KAAKE,MAAME,OAASumB,EAAUvmB,KAM3DD,SACH,OACIP,EAAAA,cAAA,WACIA,EAAAA,cAAA,OAAKoB,UAAU,0BACVhB,KAAKE,MAAM2mB,sBAEf7mB,KAAKykB,YAAYzkB,KAAKE,MAAMwkB,qBAAsB1kB,KAAKE,MAAMykB,yBAA0B3kB,KAAKE,MAAMqI,MACnG3I,EAAAA,cAAA,KAAGoB,UAAWhB,KAAK6G,MAAM1E,MAAQ,mBAAqB,GAAE,YAAW,aAC9DnC,KAAK6G,MAAM1E,OAEfnC,KAAK6lB,wBAAwB7lB,KAAKE,SAiMnD,8rBCjPA,MAAM4mB,UAAuBlnB,EAAAA,cAKzBC,YAAYK,EAAsC2G,GAC9CnE,MAAMxC,GAmDO,KAAA6mB,uBAAyB,KAClC/mB,KAAKE,MAAMuG,SAAWzG,KAAKE,MAAMuG,QAAQC,SAAW1G,KAAKE,MAAMuG,QAAQC,QAAQsgB,UAC/EhnB,KAAKE,MAAMuG,QAAQC,QAAQsgB,QAAQC,IAAI,mBAAmBjnB,KAAKE,MAAMwB,KAAM,QAC3E1B,KAAKuP,SAAS,CAAE2X,iBAAiB,MAOxB,KAAAC,MAAQ,KACrB,MAAM,MAAE5mB,GAAUP,KAAKE,MACjBknB,EAAYpnB,KAAK6G,MAAMwgB,eAAiB9mB,GAASA,EAAM+mB,SAAW/mB,EAAM+mB,QAAQ7lB,OAAS,GAAK,EAAIzB,KAAK6G,MAAMwgB,YAAc,EAE7HrnB,KAAKunB,UACLvnB,KAAKuP,SAAS,CAAEiY,UAAU,EAAMH,YAAaD,IAE7CpnB,KAAKuP,SAAS,CAAE8X,YAAaD,KAOpB,KAAAK,UAAY,KACzB,MAAMlnB,EAAQP,KAAKE,MAAMK,OAASP,KAAKE,MAAMK,MAAM+mB,QAC7CF,EAAuC,IAA3BpnB,KAAK6G,MAAMwgB,YAAqB9mB,EAAQA,EAAMkB,OAAS,EAAI,EAAKzB,KAAK6G,MAAMwgB,YAAc,EAEvGrnB,KAAKunB,UACLvnB,KAAKuP,SAAS,CAAEiY,UAAU,EAAMH,YAAaD,IAE7CpnB,KAAKuP,SAAS,CAAE8X,YAAaD,KAIpB,KAAAM,WAAa,KAC1B1nB,KAAKunB,WAAY,GAGJ,KAAAI,UAAY,KACzB3nB,KAAKunB,WAAY,EACjBvnB,KAAKuP,SAAS,CAAEiY,UAAU,KAOb,KAAAI,WAAcC,IACvB7nB,KAAKunB,WAGTvnB,KAAKuP,SAAS,CAAE8X,YAAaQ,KAtG7B7nB,KAAK6G,MAAQ,CAAEwgB,YAAa,EAAGG,UAAU,EAAON,iBAAiB,GACjElnB,KAAKunB,WAAY,EACjBvnB,KAAK6C,kBAAmBqE,EAAAA,EAAAA,oBACpBlH,KAAKE,MAAMuG,QAAQC,QAAQS,kBAC3BnH,KAAKE,MAAMkH,aACXpH,KAAKE,MAAMkC,WAIZ8F,oBACClI,KAAKE,MAAMuG,SAAWzG,KAAKE,MAAMuG,QAAQC,SAAW1G,KAAKE,MAAMuG,QAAQC,QAAQsgB,cACIrjB,IAA/E3D,KAAKE,MAAMuG,QAAQC,QAAQsgB,QAAQc,IAAI,mBAAmB9nB,KAAKE,MAAMwB,QACrE1B,KAAKE,MAAMuG,QAAQC,QAAQsgB,QAAQC,IAAI,mBAAmBjnB,KAAKE,MAAMwB,KAAM,SAC3E1B,KAAKuP,SAAS,CAAE2X,iBAAiB,KAKtC/mB,SACH,GAAIH,KAAK6G,MAAMqgB,gBACX,OAAO,KAGX,MAAM,UAAElmB,GAAchB,KAAKE,MAAMgD,OAE3BsH,EAASC,EAAAA,EAAAA,EAAA,GAGRzK,KAAKE,OACLF,KAAK6G,OAAK,IACbhE,iBAAkB7C,KAAK6C,iBACvBklB,kBAAmB,CACftc,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAW,cAAe9I,IAEzCgnB,eAAgBhoB,KAAK6G,MAAM2gB,SAAW,YAAc,GACpDS,KAAMjoB,KAAKmnB,MACXe,SAAUloB,KAAKynB,UACfU,yBAA0BnoB,KAAK4nB,WAC/BQ,sBAAuBpoB,KAAK+mB,uBAC5BsB,eAAgBroB,KAAK2nB,UACrBW,gBAAiBtoB,KAAK0nB,aAG1B,OAAO1nB,KAAKE,MAAMmN,WAAW7C,IA8DrC,8HC9HA,MAAM+d,EAAiBroB,IACnB,IAAIuQ,EAAQ,GAEZ,OADAA,EAAQvQ,EAAMK,OAASL,EAAMK,MAAM+mB,SAAWpnB,EAAMK,MAAM+mB,QAAQ7lB,OAAS,EAAIvB,EAAMK,MAAM+mB,QAAU,GAC9F7W,GA+BX,EA7BmDvQ,GAC/CN,EAAAA,cAAC+Q,EAAAA,OAAMpP,OAAA+B,OAAA,GAAKpD,EAAM6nB,kBAAuB7nB,EAAMsoB,uBAAuBtoB,IAClEN,EAAAA,cAAC6oB,EAAAA,SAAQ,CACLznB,UAAW8I,GAAAA,CAAW5J,EAAM8nB,gBAC5BX,YAAannB,EAAMmnB,YACnBY,KAAM/nB,EAAM+nB,KACZC,SAAUhoB,EAAMgoB,SAChBQ,QAAOxoB,EAAMgD,OAAOylB,cAAe,QACnCC,KAAM1oB,EAAMgD,OAAO2lB,SAAW,gBAAallB,EAC3CklB,SAAU3oB,EAAMgD,OAAO2lB,SACvBC,SAAU5oB,EAAMgD,OAAO4lB,SACvBC,eAAgB7oB,EAAMgD,OAAO6lB,eAAiB7oB,EAAMgD,OAAO6lB,oBAAiBplB,EAC5E8M,MAAO8X,EAAcroB,GACrB8oB,YAAa9oB,EAAMgD,OAAO8lB,YAC1BC,eAAgB/oB,EAAMgD,OAAO+lB,eAC7Bd,yBAA0BjoB,EAAMioB,yBAChCC,sBAAuBloB,EAAMkoB,sBAC7Bc,wBAAyBhpB,EAAMM,WAAaN,EAAMM,UAAU2oB,0BAC5DC,kBAAmBlpB,EAAMM,WAAaN,EAAMM,UAAU6oB,kBACtDC,kBAAmBppB,EAAMM,WAAaN,EAAMM,UAAU+oB,gBACtDC,kBAAmBtpB,EAAMM,WAAaN,EAAMM,UAAUipB,YACtDpB,eAAgBnoB,EAAMmoB,eACtBC,gBAAiBpoB,EAAMooB,gBACvBzlB,iBAAkB3C,EAAM2C,iBACxB6mB,SAAUxpB,EAAMgD,OAAOwmB,gGClB5BrM,eAAesM,EAClBphB,EACAnG,EACAwnB,GAC2B,IAEvBC,EACAC,EAHJC,IAAAC,UAAAvoB,OAAA,QAAAkC,IAAAqmB,UAAA,KAAAA,UAAA,GAIA,IACIH,QAAmBthB,EACnBuhB,EAAcD,EAAWthB,KAAK0hB,QAChC,MAAO9nB,GAGL,OAFAC,EAAU8nB,QAAQ/nB,GAClBC,EAAUE,MAAM,uCACT6nB,EAAAA,YAAYloB,UAGvB,IAAI6nB,EAmCA,OADA1nB,EAAU8nB,QAAQ,uDACXC,EAAAA,YAAYloB,UAlCnB,IAAK,IAADmoB,EACA,MAAMC,QAAoDC,EAAAA,iBAAAA,yBACtD,CAAEvM,cAAe6L,EAAaliB,cAAe6iB,YAAa,QAC1DV,EAAWthB,KAAKiiB,GAChBV,GAGJ,aAAaK,EAAAA,YAAYloB,QAAkD,QAA3CmoB,EAACC,EAAiBI,iCAAyB,IAAAL,EAAAA,OAAIzmB,GACjF,MAAOxB,GAEL,GAAI4nB,GAA8B,2DAAf5nB,EAAM6a,KAAmE,CACxF,UACU6M,EAAWa,YAAY,IAC/B,MAAOC,GAGL,OAFAvoB,EAAU8nB,QAAQS,GAClBvoB,EAAUE,MAAM,0BACT6nB,EAAAA,YAAYloB,UAEvB,IAEI,aADM0nB,EAAkBphB,EAAMnG,EAAWwnB,GAAc,GAChDO,EAAAA,YAAYloB,UACrB,MAAO2oB,GAGL,OAFAxoB,EAAU8nB,QAAQU,GAClBxoB,EAAUE,MAAM,2BACT6nB,EAAAA,YAAYloB,WAM3B,OAFAG,EAAU8nB,QAAQ/nB,GAClBC,EAAUE,MAAM,2BACT6nB,EAAAA,YAAYloB,WAiExBob,eAAewN,EAClBC,EACAjB,EACAznB,EACA2oB,EACAC,EACAC,GAEA,GAAIpB,EAAY,CACZ,IAAIqB,GAA0C,EAC9C,GAAIzqB,EAAAA,gBAAgBC,YAAYqqB,IAAaD,EAAgC,CAAC,IAADK,EACzE,MAAMC,EAA6CL,EAASpX,MACvDd,GAA2BA,EAAQyB,WAAa0W,EAAiB1L,YAEtE4L,IAAmCE,KAA6C,QAAzBD,EAACC,EAAgBC,gBAAQ,IAAAF,IAAxBA,EAA0BG,sBAElFJ,GAAiC,EAGrC,MAAMK,EAAQ,CACVC,WAAYR,EAAiBS,OAAQxS,WACrCyS,YAAaT,EACbjb,qBAAsB,CAAEkb,+BAAAA,IAG5B,IACI,MAAMS,QAA4C9B,EAAW+B,uBAAuBL,GACpF,aAAapB,EAAAA,YAAYloB,QAAQ0pB,GACnC,MAAOxpB,GACLC,EAAU8nB,QAAS/nB,EAAgBE,SACnCD,EAAUE,MAAM,wCAIxB,OAAO6nB,EAAAA,YAAYloB,4EChKhB,SAAS4pB,EAAsBjV,EAA+BmU,GACjE,QAAkBpnB,IAAdiT,GAA2BnW,EAAAA,gBAAgBC,YAAYqqB,GACvD,OAAOA,EAASpX,MAAKd,GACV+D,IAAc/D,EAAQyB,WAelC,SAASwX,EACZlV,EACAmU,EACAgB,EACAlI,GAEA,MAAMmI,EAAuBD,MAAAA,EAAAA,EAAelI,MAAAA,OAAS,EAATA,EAAWtb,KAAK0jB,YAE5D,QAAkBtoB,IAAdiT,GAA2BnW,EAAAA,gBAAgBC,YAAYqqB,GACvD,OAAOA,EAASpX,MAAKd,IAAU,IAAAqZ,EAC3B,OAAOtV,IAAc/D,EAAQyB,WAA4B,QAAhB4X,EAAArZ,EAAQwY,gBAAQ,IAAAa,OAAA,EAAhBA,EAAkBC,uBAAwBH,iRCoC/F,MA8IMI,EAA0BA,CAACC,EAAuCnsB,KACpE,IAAIosB,EACJ,GAAID,GAAYA,EAASE,mBAAoB,CAAC,IAADC,EACzC,MAAMC,EAAcC,EAAgBL,EAASE,mBAAoBrsB,EAAMysB,kBAEvE,IAAIC,EACA1sB,EAAM2sB,wBAA0B3sB,EAAM2sB,uBAAuBprB,OAAS,IACtEmrB,EAA6B1sB,EAAM2sB,uBAAuBlZ,MAAKmZ,GACpDA,GAAkBA,EAAexN,YAAc+M,EAAS/M,aAGvE,MAAMyN,EAAqC,QAA7BP,EAAGI,SAA0B,IAAAJ,GAAiB,QAAjBA,EAA1BA,EAA4BQ,uBAAe,IAAAR,OAAA,EAA3CA,EAA6C7Y,MAAKsZ,GAAUA,EAAO7G,OAASiG,EAASa,eAChG7T,EAAW0T,MAAAA,OAAQ,EAARA,EAAUpK,YAIvB2J,EADAjT,EACmB,GAAGA,MAAaoT,IAEhB,GAAGA,SAG1BH,EAAmBpsB,EAAMM,UAAU2sB,aAEvC,OAAOb,GAGLc,EAAuBA,CAACf,EAAuCnsB,KACjE,GAAImsB,GAAYA,EAASE,mBAAoB,CACzC,MAAME,EAAcC,EAAgBL,EAASE,mBAAoBrsB,EAAMysB,kBAEvE,GAAIF,EACA,OACI7sB,EAAAA,cAAA,OAAKoB,UAAU,+BACXpB,EAAAA,cAAA,QAAMoB,UAAU,WAAWyrB,IAM3C,OAAO,MAGLC,EAAkBA,CAACW,EAAwCV,KAC7D,IAAKA,IAAqBU,GAAkD,IAA5BV,EAAiBlrB,OAC7D,MAAO,GAGX,MAAM6rB,EAAgBX,EAAiBhZ,MAAK5R,GACjCA,EAAgBwrB,gBAAkBF,IAG7C,OAAIC,EACOA,EAAcE,YAElBH,GAGLI,EAAqBA,CACvBC,EACA3C,EACA7qB,KAEA,MAAMytB,EAA6C,GAEnD,OAAK5C,GAAgC,IAApBA,EAAStpB,QAK1BisB,EAAUje,KAAI,CAACme,EAAUje,KACrB,IAAIkD,EAQAgb,EAMAjB,EAMU,IAADkB,GAhBTjb,EAHA3S,EAAM4qB,gCAGIgB,EAAAA,EAAAA,GAAkC8B,EAAStO,UAAWyL,EAAU6C,EAAS3B,YAAa/rB,EAAM2jB,YAE5FgI,EAAAA,EAAAA,GAAsB+B,EAAStO,UAAWyL,GAGpD7qB,EAAM6tB,sBAAwB7tB,EAAM6tB,qBAAqBtsB,OAAS,IAClEosB,EAA2B3tB,EAAM6tB,qBAAqBpa,MAAKqa,IAAsB,IAAAC,EAC7E,OAAmD,QAA5CA,EAAAD,EAAoBE,gCAAwB,IAAAD,OAAA,EAA5CA,EAA8C3O,aAAesO,EAAStO,cAIjFpf,EAAM2sB,wBAA0B3sB,EAAM2sB,uBAAuBprB,OAAS,IACtEmrB,EAA6B1sB,EAAM2sB,uBAAuBlZ,MAAKmZ,GACpDA,GAAkBA,EAAexN,YAAcsO,EAAStO,aAGnEzM,IACA8a,EAAWhW,KAhLDwW,EAClBP,EACA/a,EACA3S,EACAyP,EACAke,EACAO,KAC8B,IAAAlC,EAC9B,MAAM,cAAEhoB,EAAa,aAAED,EAAY,GAAEvC,EAAE,SAAEoD,EAAQ,QAAE2B,EAAO,UAAEjG,EAAS,iBAAE6tB,EAAgB,uBAAEC,GAA2BpuB,EAE9GquB,GAlENC,EAmEItuB,EAAMsuB,oBAlEVC,EAmEIvuB,EAAMuuB,oBAlEVT,EAmEIH,EAjEAW,GAEKR,IACAA,EAAoBU,mBACrBV,EAAoBU,mBAAqB,GACzCV,EAAoBU,mBAAqBD,EAElC,EAEJT,EAAoBU,kBAAoBD,EAG5C,GAjB2BE,IAClCH,EACAC,EACAT,EAqEA,MAAMY,EACF/b,GArDwBgc,EAC5BC,EACAN,EACAD,EACAzD,EACAiE,KAEA,GAAIjE,EAAgC,CAChC,IAAIkE,EAAmCD,EAQvC,OAJKA,IACDC,EAAmCF,GAAuB,IAGvDN,EACDQ,EAAmCT,EAC/BS,EACAT,EACJS,EAEV,OAAIR,GACOD,EAA2BO,EAAsBP,EAErDO,GA6BHD,CACI3uB,EAAM+uB,oBACN/uB,EAAMsuB,oBACND,EACAruB,EAAM4qB,gCACNjY,MAAAA,GAAiB,QAAVqZ,EAAPrZ,EAASwY,gBAAQ,IAAAa,OAAA,EAAjBA,EAAmBZ,kBAAmB,GAIxC4D,EAAgBrc,EAAQsc,gBAAkBC,EAAAA,oBAAoBC,QAE9DC,EA/BoBC,EAACjB,EAA8DV,IAAuB,KAChHU,EAAuBV,IA8BM2B,CAAsBjB,EAAwBV,GACrEjrB,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1C,EAAM2C,iBAAmBC,EAAAA,kBAAkB0sB,gBAC/EC,GAA0BzsB,EAAAA,EAAAA,wBAAuB9C,EAAM2C,iBAAmBF,GAEhF,IAAIyR,GAAasb,EAAAA,EAAAA,mBAAkB7c,EAAS3S,EAAMuG,QAAQiB,mBAAe/D,GACzE,GAAIgE,EAAAA,GAASQ,YAAawnB,EAAAA,EAAAA,IAAiBzvB,EAAMuG,QAAQiB,cAAc1D,gBAAiB,CAAC,IAAD4rB,EACpF,MAAMC,EAAU,IAAI1c,IAAIiB,EAAYhM,OAAOiR,SAAS9V,MACpDssB,EAAQ9W,aAAakO,IAAI,YAAa,GAAqB,QAArB2I,EAAGhC,EAASjQ,iBAAS,IAAAiS,EAAAA,EAAI,KAC/Dxb,EAAayb,EAAQtsB,KAGzB,MAAO,CACHnD,KAAM,CACFyS,QAAAA,EACA+a,SAAAA,GAEJkC,WAAWZ,IAAiBhvB,EAAMsuB,sBAAsBZ,EAASmC,SAAYnB,EAC7EhB,SACIhuB,EAAAA,cAACowB,EAAAA,sBAAqB,CAClB5vB,KAAM,CACFisB,SAAUuB,EACV/a,QAAAA,EACAod,SAAU/vB,EAAM+vB,UAEpBC,gBAAiBtC,EAASmC,SAC1BnB,YAAaA,EACbuB,eAAejB,IAAiBhvB,EAAMsuB,sBAAsBD,GAA4B,EACxFtqB,aAAcA,EACdC,cAAeA,EACfxC,GAAIA,EACJoD,SAAUA,EACVsP,WAAYA,EACZ3N,QAASA,EACTjG,UAAWA,EACXoE,IAAK,GAAG+K,KAASyE,IACjBgc,oBAAoB,EACpBC,gBAAiBxd,EAAQ6B,gBACzB4b,YAAY,UACZztB,iBAAkB3C,EAAM2C,iBACxB0tB,4BAA6BrwB,EAAMqwB,4BACnCC,iBAAkBpE,EAAwBwB,EAAU1tB,KAG5DmY,OACIzY,EAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACHtC,UAAU,6BACVG,QAASmuB,EACTlqB,MAAOipB,GACHoB,GAEHpB,GAGToC,cAAerD,EAAqBQ,EAAU1tB,KAgGtCiuB,CACIP,EACA/a,EACA3S,EACAyP,EACwB,QADnBme,EACLD,SAAwB,IAAAC,OAAA,EAAxBA,EAA0BI,8BAOnCP,IAvCHztB,EAAMuG,QAAQrE,UAAUD,MAAM,kDACvB,OC3PRkb,eAAeqT,EAAgBC,EAAqB9M,GACvD,MAAM+M,EAA8B,GAE9BroB,EAAOsb,EAAUtb,KAuCvB,OAnCIA,GAAQA,EAAK+c,WAAa/c,EAAK+c,UAAU7jB,OAAS,IAAMoiB,EAAUgN,uBAC5DC,EAAAA,EAAAA,6BAA4B,IAAIC,EAAAA,wBAA2BJ,GAC5D3S,MAAK+M,IACEA,IACA6F,EAAa7F,SAAWA,MAG/B7oB,OAAMC,IAEH,MADAwuB,EAAIvuB,UAAU4uB,UAAU7uB,GAClB,IAAI8uB,MAAM,uFAGlBC,EAAAA,EAAAA,mCAAkC,IAAIC,EAAAA,sCAAsCR,EAAI3sB,eAAeoP,aAAcud,GAC9G3S,MAAKoT,IACEA,IACAR,EAAa7C,qBAAuBqD,MAG3ClvB,OAAMC,IAEH,MADAwuB,EAAIvuB,UAAU4uB,UAAU7uB,GAClB,IAAI8uB,MAAM,uFAGlBI,EAAAA,EAAAA,oCAAmC,IAAIC,EAAAA,uCAAuCX,EAAI3sB,eAAeoP,aAAcud,GAChH3S,MAAKuT,IACEA,IACAX,EAAaW,gBAAkBA,MAGtCrvB,OAAMC,IAEH,MADAwuB,EAAIvuB,UAAU4uB,UAAU7uB,GAClB,IAAI8uB,MAAM,kFAIrBL,ukBCRX,IAAMY,EAAN,cAAuB5xB,IAAAA,UAenBC,YAAYK,GACRwC,MAAMxC,GAPF,KAAAuxB,mCAA8C,EAgPrC,KAAAC,mBAAqB,CAAChE,EAAuBiE,KAC1D,MAAMC,EAAoB,IAAIlE,GAG9B,MAAa,eAATiE,EACOC,EAAMC,MAAK,CAACC,EAAOC,KAAK,IAAAC,EAAAC,EAAA,OAAsB,QAAjBD,EAACD,EAAMG,kBAAU,IAAAF,EAAAA,EAHpC,IAGiE,QAArBC,EAAKH,EAAMI,kBAAU,IAAAD,EAAAA,EAHjE,MAKdL,EAAMC,MAAK,CAACC,EAAOC,KAAK,IAAAI,EAAAC,EAAA,OAAsB,QAAjBD,EAACL,EAAMI,kBAAU,IAAAC,EAAAA,EALhC,IAK6D,QAArBC,EAAKL,EAAMG,kBAAU,IAAAE,EAAAA,EAL7D,OAoER,KAAAC,kBAAqBnuB,GAE9BA,GAAiB,CACbC,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnC+tB,GAAI,CAAEjuB,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCE,UAAU,GAKL,KAAA8tB,2BAA8BC,IAC3C,GAAIxyB,KAAKE,MAAME,KAAKmI,KAAKjI,OAAQ,CAC7B,MAAMirB,EAAQ,CACVkH,YAAa,CAACD,EAAiB/G,OAAQxS,aAE3CjZ,KAAKE,MAAME,KAAKmI,KAAKjI,OAAOoyB,gBAAgBnH,GAAOrpB,OAAMC,IACrDnC,KAAKE,MAAMkC,UAAU8nB,QAAQ/nB,GAC7BnC,KAAKE,MAAMkC,UAAUE,MAAM,mCAlUnCtC,KAAK6G,MAAQ,CACT+pB,aAAc,GACd+B,aAAa,EACb7H,gCAAgC,GAEpC9qB,KAAK6C,kBAAmBqE,EAAAA,EAAAA,oBACpBlH,KAAKE,MAAMuG,QAAQC,QAAQS,kBAC3BnH,KAAKE,MAAMkH,aACXpH,KAAKE,MAAMkC,WAEf,MAAMwwB,GAAUhwB,EAAAA,EAAAA,kBAAiBiwB,EAAAA,GAAeC,SAAU9yB,KAAK6C,iBAAkBC,EAAAA,kBAAkBiwB,UACnG/yB,KAAKgzB,4BAA6BhwB,EAAAA,EAAAA,wBAAuBhD,KAAK6C,iBAAkB+vB,GAEhFA,EAAQhjB,cAAcC,MAAQ/M,EAAAA,kBAAkBmwB,cAChDjzB,KAAKkzB,2BAA4BlwB,EAAAA,EAAAA,wBAAuBhD,KAAK6C,iBAAkB+vB,GAE/EA,EAAQhjB,cAAcC,MAAQ/M,EAAAA,kBAAkBqwB,gBAChDnzB,KAAKozB,2BAA4BpwB,EAAAA,EAAAA,wBAAuBhD,KAAK6C,iBAAkB+vB,GAG5E,0BAAuB,IAAAS,EAC1B,MAAM5sB,EAAUzG,KAAKE,MAAMuG,QAAQiB,eAEnCY,EAAAA,EAAAA,KACI,SAAAgrB,EAAA,OAAiC,QAAjCA,EAAMtzB,KAAKE,MAAME,KAAKmI,KAAKjI,cAAM,IAAAgzB,OAAA,EAA3BA,EAA6B/qB,KAAK+c,aACxCjI,UACIrd,KAAKuP,SAAS,CACVqhB,mBAAoBF,EAAgBjqB,EAASzG,KAAKE,MAAME,KAAKmI,KAAKjI,mBAIxEN,KAAKuzB,gCAEXvzB,KAAKuP,SAAS,CACVod,iBAAkD,QAAlC0G,EAAErzB,KAAKE,MAAME,KAAKusB,wBAAgB,IAAA0G,OAAA,EAAhCA,EAAkC/yB,SAGxDN,KAAKwzB,gBAGFC,mBAAmBC,GACtB1zB,KAAKwzB,gBAGF9M,sBAAsBC,EAA0CC,GACnE,OAAI5mB,KAAK6G,QAAU+f,GAAa5mB,KAAKE,MAAME,OAASumB,EAAUvmB,KAO3DD,SAAM,IAAAwzB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACT,MAAM,GACFtyB,EAAE,SACFoD,EACA5B,QAAQ,gBAAE+wB,EAAe,oBAAEC,GAC3BztB,SACIC,SACI8B,MAAM,gBAAE2rB,EAAe,UAAE1mB,KAEhC,QACDhH,EAAO,UACPjG,GACAR,KAAKE,MAEHqI,EAAQvI,KAAKE,MAAME,KAAKmI,MAAQvI,KAAKE,MAAME,KAAKmI,KAAKjI,aAAWqD,EAChEywB,GAAmBC,EAAAA,EAAAA,IAAW,WAAYr0B,KAAKE,MAAMuG,QAAQiB,gBAAkB,GAC/E4sB,GAAUD,EAAAA,EAAAA,IAAW,OAAQr0B,KAAKE,MAAMuG,QAAQiB,gBAAkB,GAClE6sB,EAAcv0B,KAAKw0B,gBAAgBL,EAAiBC,EAAkB3mB,GAAa,IACnFgnB,EAAclsB,GAAQA,EAAKA,KAAK+c,WAA4C,IAA/B/c,EAAKA,KAAK+c,UAAU7jB,OAEjEizB,GACFnsB,MAAAA,OAAI,EAAJA,EAAMosB,uBAAwB30B,KAAKE,MAAMuG,QAAQkD,IAAIzG,OAAO0xB,oBAAsBC,EAAAA,kBAAkBC,aAClGjE,EAAiBtoB,MAAAA,OAAI,EAAJA,EAAMsoB,eACvBkE,EAA0D,QAArCpB,EAAG3zB,KAAKE,MAAMuG,QAAQC,QAAQsuB,eAAO,IAAArB,OAAA,EAAlCA,EAAoCsB,sBAC5DC,EAAYl1B,KAAKm1B,gBACjBC,GAAgCC,EAAAA,EAAAA,4BACd,QADwCzB,EAC5DrrB,MAAAA,OAAI,EAAJA,EAAMA,KAAK+c,iBAAS,IAAAsO,EAAAA,EAAI,GACoB,QADlBC,EAC1B7zB,KAAK6G,MAAM+pB,aAAa7C,4BAAoB,IAAA8F,EAAAA,EAAI,GAChD7zB,KAAKE,MAAMuG,QAAQiB,cACa,QADAosB,EAChC9zB,KAAK6G,MAAM+pB,aAAa7F,gBAAQ,IAAA+I,EAAAA,EAAI,GACpCiB,GAEEjF,IACDsF,MAAAA,GAAAA,EAA+BE,WAC9BF,IAAkCp1B,KAAK6G,MAAM8rB,eAC9CuC,GAAYA,EAAUlZ,MAAK4R,GAAYA,EAASkC,WAC/CyF,EAAgBv1B,KAAKE,MAAME,KAAKmI,MAAwC,YAAhCvI,KAAKE,MAAME,KAAKmI,KAAK0b,QAAwBgQ,EACrFuB,EAAmBjtB,MAAAA,GAAAA,EAAMitB,iBAAmBjtB,EAAKitB,iBAAmB,EACpEC,EAAqBj1B,EAAUk1B,oBAAoB1d,QAAQ,UAAWwd,EAAiBvc,YACvF0c,EAAcn1B,EAAUm1B,YACxBC,EAAgB,CAClBlqB,IAAKmqB,EAAAA,oBACLnB,mBAAAA,EACA9nB,UAAW,aACXkpB,WAAW,EACX90B,UAAW,iCACX+0B,QAAS,QACTzF,YAAa,SACb7sB,OAAQ/B,EACRs0B,uBAAuB,EACvBC,YAAa3B,EACb4B,gBAAgB,GAIdjZ,EAAS1U,IAASA,EAAKsoB,gBAAkBtoB,EAAKA,KAAK4tB,kBAAgBxyB,EACnEyyB,EAAcnZ,EACdzc,EAAU61B,uBAAuBre,QAAQ,UAAWvR,EAAQga,iBAAiBC,eAAezD,IAC5F,GAENjd,KAAKuwB,4BAAyE,QAA9CwD,EAAG/zB,KAAKE,MAAME,KAAKmwB,mCAA2B,IAAAwD,OAAA,EAA3CA,EAA6CzzB,OAChFN,KAAKyxB,kCAAgE,QAA/BuC,EAAGh0B,KAAKE,MAAME,KAAKk2B,oBAAY,IAAAtC,GAAQ,QAARA,EAA5BA,EAA8B1zB,cAAM,IAAA0zB,GAE5E,QAF4EA,EAApCA,EAAsCrgB,MAC3E4iB,GAHkC,oEAGvBA,EAAQ9uB,cACtB,IAAAusB,OAAA,EAFwCA,EAEtCwC,UAEH,MAAMhsB,EAASC,EAAAA,EAAA,GACRzK,KAAKE,OAAK,IACbgL,SACItL,IAAAA,cAACuL,EAAAA,kBAAiB,CACd9B,UAAW7I,EAAU6I,UACrBC,aAAc9I,EAAU8I,aACxB7C,QAASA,EACT/E,GAAIA,EACJoD,SAAUA,EACV1E,KAAM,CAAEmI,KAAAA,GACR1F,iBAAkB7C,KAAK6C,mBAG/B6qB,UAAWwH,EACXuB,gBAAiBlB,EAAgBK,OAAgBjyB,EACjD+yB,iBAAkB,CACd11B,UAAW,4BAEf21B,gBAAiB,CACb31B,UAAW8I,GAAAA,CAAW,gBACtBpI,GAAI1B,KAAKE,MAAMwB,IAEnBk1B,oBAAqB,CACjB51B,UAAW8I,GAAAA,CAAW,wBAM1B+sB,2BACKpC,GAAgB5D,GAAoBqD,IAAuBC,EAUxD,KATAv0B,IAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACHyhB,SAAU+K,EACV9uB,UAAU,6BACVuC,KAAMgxB,EACNnvB,MAAO5E,EAAUs2B,qBACb92B,KAAKgzB,4BAERxyB,EAAUs2B,qBAGvBC,uBACI7C,GAAwBO,GAAgBN,EAUpC,KATAv0B,IAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACHyhB,SAAU+K,EACV9uB,UAAU,kCACVuC,KAAM6wB,EACNhvB,MAAO5E,EAAUw2B,0BACbh3B,KAAKkzB,2BAER1yB,EAAUw2B,0BAGvBC,eACIr3B,IAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACHtC,UAAU,6BACVuC,KAAM+wB,EACNlvB,MAAOqwB,GACHz1B,KAAKozB,2BAERqC,GAGTyB,qCAAsC,KACtCvB,YAAa/1B,IAAAA,cAAA,QAAMoB,UAAU,8BAA8B20B,GAC3DwB,WAAYv3B,IAAAA,cAAA,OAAKoB,UAAU,0BAA0Bo1B,KAGzD,OAAOp2B,KAAKE,MAAMmN,WAAW7C,GAGzBgpB,gBAAa,IAAA4D,EAAAC,EACjB,MACIj3B,MAAM,KAAEmI,IACRvI,KAAKE,MACH4pB,EAAwC,QAA7BsN,EAAc,QAAdC,EAAG9uB,EAAKjI,cAAM,IAAA+2B,GAAM,QAANA,EAAXA,EAAa9uB,YAAI,IAAA8uB,OAAA,EAAjBA,EAAmBpN,eAAO,IAAAmN,EAAAA,OAAIzzB,EAC9C3D,KAAKs3B,2BAA6BxN,IAItC9pB,KAAKs3B,yBAA2BxN,EAE5B9pB,KAAK6G,MAAMikB,gCACXnB,EAAAA,EAAAA,IAAkBphB,EAAMvI,KAAKE,MAAMkC,UAAWpC,KAAKE,MAAMuG,SACpDuX,MAAM1d,IACHN,KAAKuP,SAAS,CAAEojB,aAAclyB,EAAAA,gBAAgBC,YAAYJ,MAAAA,OAAM,EAANA,EAAQi3B,6BAErEr1B,OAAM,KACHlC,KAAKuP,SAAS,CAAEojB,aAAa,OAGrC3yB,KAAKuP,SAAS,CAAEojB,aAAa,KAI7B6B,gBAAgBL,EAA0BC,EAA0B3mB,GACxE,GAAI0mB,EACA,OAAOC,EAGX,MAAMoD,GAAgBC,EAAAA,EAAAA,UAASrD,GAC/B,IAAIsD,EAAYtD,EAKhB,OAJI3iB,EAAAA,GAAiBtJ,YAAcqvB,IAC/BE,EAAY,GAAGtvB,OAAOiR,SAASse,SAASvD,KAGrC,GAAG3mB,IAAaA,EAAUzF,SAAS,KAAa,IAAN,SAAe0vB,IAmB5DvC,gBAAa,IAAAyC,EACjB,MACInxB,SACIC,SAAWsuB,SAAS,uBAAE6C,GAA2B,CAAEA,4BAAwBl0B,KAC9E,OACDT,EAAM,UACNd,EAAS,UACT5B,GACAR,KAAKE,MAEHgE,EAAgBlE,KAAKqyB,kBAAkBnvB,EAAOgB,eAC9CqE,EAAOvI,KAAKE,MAAME,KAAKmI,MAAQvI,KAAKE,MAAME,KAAKmI,KAAKjI,OAI1D,OAAON,KAAK6G,MAAM+pB,aAAa7F,UAAYxiB,GAAQA,EAAKA,KAAK+c,WAAa/c,EAAKA,KAAK+c,UAAU7jB,OAAS,EFZ3EvB,CAAAA,IAChC,MAAM,SAAE6qB,EAAQ,UAAE2C,GAAcxtB,EAChC,OAAOutB,EAAmBC,EAAW3C,EAAU7qB,IEWrC43B,CAAoB,CAChBpK,UAAW1tB,KAAK0xB,mBAAmBnpB,EAAKA,KAAK+c,UAAWpiB,EAAO60B,oBAC/DhN,SAAU/qB,KAAK6G,MAAM+pB,aAAa7F,SAClCgD,qBAAsB/tB,KAAK6G,MAAM+pB,aAAa7C,qBAC9ClB,uBAAwB7sB,KAAK6G,MAAM+pB,aAAaW,gBAChDrtB,cAAAA,EACAuqB,oBAAqBzuB,KAAKE,MAAMuG,QAAQkD,IAAIzG,OAAOurB,qBAAuB,EAC1ED,oBAAqBxuB,KAAKE,MAAMuG,QAAQkD,IAAIzG,OAAO6S,mBAAoB,EACvEkZ,qBAAqB+I,EAAAA,EAAAA,kCAAiCh4B,KAAKE,MAAMuG,QAAQkD,IAAIzG,OAAO+0B,4BACpFh0B,aAAcjE,KAAKE,MAAMuG,QAAQC,QAAQzC,aACzCwC,QAASzG,KAAKE,MAAMuG,QACpB3B,SAAU9E,KAAKE,MAAM4E,SACrBpD,GAAI1B,KAAKE,MAAMwB,GACflB,UAAW,CACP03B,WAAY13B,EAAU23B,yBACtBC,YAAa53B,EAAU63B,0BACvBC,aAAc93B,EAAU+3B,kCACxBC,YAAah4B,EAAUi4B,0BACvBC,sBAAuBl4B,EAAUm4B,oBACjCC,0BAA2Bp4B,EAAUo4B,0BACrCC,uBAAwB,GACxBC,mBAAoB,GACpB3mB,kBAAmB,GACnBC,iBAAkB,GAClB2mB,oBAAqB,GACrB5L,aAAc3sB,EAAU2sB,cAE5B/qB,UAAAA,EACAisB,iBAAkB7tB,EAAUw4B,qBAC5BC,eAAgB,GAChBC,kBAAmB,GACnBC,qBAAsB,GACtBtV,UAAWtb,EACXokB,iBAAkB3sB,KAAK6G,MAAM8lB,iBAC7B2B,uBAAwBtuB,KAAKuyB,2BAC7B6G,uBAAwBvB,EACxBh1B,iBAAkB7C,KAAK6C,iBACvB0tB,4BAA6BvwB,KAAKyxB,kCAAoCzxB,KAAKuwB,iCAA8B5sB,EACzGmnB,+BAAgC9qB,KAAK6G,MAAMikB,+BAC3CmF,SAAkC,QAA1B2H,EAAE53B,KAAKE,MAAME,KAAK6vB,gBAAQ,IAAA2H,OAAA,EAAxBA,EAA0Bt3B,SAExC,KA4BF,sCAAmC,IAAA+4B,EAAAC,EACvC,MAAMC,QAAwBv5B,KAAKE,MAAME,KAAKk2B,aAM9C,IAHIiD,MAAAA,GAEC,QAFcF,EAAfE,EAAiB5lB,MACb2iB,GAAsC,wEAAtBA,EAAa7uB,cAChC,IAAA4xB,OAAA,EAFDA,EAEG7C,aAAa,EAGhB,YADAx2B,KAAKuP,SAAS,CAAEub,gCAAgC,IAQpD,GAJ+ByO,MAAAA,GAE9B,QAF6CD,EAAfC,EAAiB5lB,MAC5C2iB,GAAsC,mDAAtBA,EAAa7uB,cAChC,IAAA6xB,OAAA,EAF8BA,EAE5B9C,UAEyB,CAAC,IAADgD,EACxB,MAAMC,EAA4D,QAArBD,EAAGx5B,KAAKE,MAAMuG,eAAO,IAAA+yB,GAAS,QAATA,EAAlBA,EAAoB9yB,eAAO,IAAA8yB,GAAK,QAALA,EAA3BA,EAA6B7vB,WAAG,IAAA6vB,GAAU,QAAVA,EAAhCA,EAAkCE,gBAAQ,IAAAF,OAAA,EAA1CA,EAA4CG,iCAC5F,IAAKF,GAAuF,SAA5CA,EAE5C,YADAz5B,KAAKuP,SAAS,CAAEub,gCAAgC,IAIpD,IAAK,IAAD8O,EACA,MAAML,QAAwBv5B,KAAKE,MAAME,KAAKk2B,aAK9C,MAHIiD,MAAAA,GAEC,QAFcK,EAAfL,EAAiB5lB,MACb2iB,GAAsC,oEAAtBA,EAAa7uB,cAChC,IAAAmyB,OAAA,EAFDA,EAEGpD,aAAa,GAGhB,YADAx2B,KAAKuP,SAAS,CAAEub,gCAAgC,IAGtD,MAAO3oB,GAIL,OAHAnC,KAAKE,MAAMkC,UAAU8nB,QAAQ/nB,GAC7BnC,KAAKE,MAAMkC,UAAUE,MAAM,qCAC3BtC,KAAKuP,SAAS,CAAEub,gCAAgC,IAGJ,QAA5C2O,EACAz5B,KAAKuP,SAAS,CAAEub,gCAAgC,IAEhD9qB,KAAKE,MAAME,KAAKy5B,oBACX7b,MAAK8b,IACF,MAAMx5B,IACAw5B,IAC4C,QAA5CL,GAAqDK,EAAaC,OACnB,QAA5CN,IAAsDK,EAAaC,OAC5E/5B,KAAKuP,SAAS,CAAEub,+BAAgCxqB,OAEnD4B,OAAMC,IACHnC,KAAKE,MAAMkC,UAAU8nB,QAAQ/nB,GAC7BnC,KAAKE,MAAMkC,UAAUE,MAAM,sCApC3C,CAuCQ,IAAD03B,EACH,MAAMC,QAA0Bj6B,KAAKE,MAAME,KAAK65B,kBAChDj6B,KAAKuP,SAAS,CAAEub,iCAAwE,QAAxCkP,EAAEC,MAAAA,OAAiB,EAAjBA,EAAmBC,2BAAmB,IAAAF,GAAAA,QAjZ9FxI,GAAQjvB,EAAAA,EAAAA,IAAA,CADbC,EAAAA,IACKgvB,GAuZN,kGCldA,MAmCA,EAnBoDtxB,GAChDN,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKpD,EAAMy2B,gBAAqBz2B,EAAMsoB,uBAAuBtoB,IAC7DA,EAAMgL,WACNhL,EAAMu2B,iBACH72B,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKpD,EAAMu2B,iBACXv2B,EAAMy1B,YACNz1B,EAAMg3B,qCACPt3B,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKpD,EAAMw2B,kBAvBPyD,EAACjF,EAAuDh1B,IACxEg1B,EAIEA,EAAUzlB,KAAI,CAAC4c,EAAU1c,IAExB/P,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKpD,EAAM02B,oBAAmB,CAAEhyB,IAAK+K,IACrC0c,EAASuB,SACTvB,EAASoE,cACTpE,EAAShU,WARlBnY,EAAMuG,QAAQrE,UAAUD,MAAM,kDACvB,MAoBoCg4B,CAAiBj6B,EAAMwtB,UAAWxtB,IACpEA,EAAMi3B,WACNj3B,EAAM22B,2BACN32B,EAAM62B,sBACN72B,EAAM+2B,wJCoMvB,MAAMmD,EAAmDl6B,IACrD,MAAMm6B,EAAYn6B,EAAME,KAAKisB,SAAS1O,UAGtC,IAFA2c,EAAAA,EAAAA,mBAAkBD,IAEbn6B,EAAMuG,QAAQC,QAAQ8B,KAAK+xB,QAAUF,IAAc55B,EAAAA,gBAAgBC,YAAYR,EAAME,KAAK6vB,UAC3F,OAAO,KAGX,MAAMuK,EAAUt6B,EAAME,KAAK6vB,SAAStc,MAAKO,GAAQA,EAAKI,WAAa+lB,IAEnE,OAAKG,GAAYA,EAAQ/yB,KAIlB7H,EAAAA,cAAA,OAAKoB,UAAU,gCAAgCw5B,EAAQ/yB,MAHnD,MAMTgzB,EACuBC,CAACC,EAAwBC,IACzCD,GAAYA,EAAQE,WAIlBF,EAAQE,WAAWprB,KAAIqrB,GACkB,IAAxCA,EAAiB1b,mBAEbxf,EAAAA,cAAA,OAAKgF,IAAK,GAAG+1B,EAAQrmB,6BAA8BtT,UAAU,uCACzDpB,EAAAA,cAAA,QAAMoB,UAAU,wCACX45B,EAAiBxC,YAAW,IAC7Bx4B,EAAAA,cAAA,QAAMoB,UAAU,QAAQ85B,EAAiBzb,gBAAkByb,EAAiBzb,eAAe1D,SAM/D,IAAxCmf,EAAiB1b,mBAEbxf,EAAAA,cAAA,OAAKgF,IAAK,GAAG+1B,EAAQrmB,6BAA8BtT,UAAU,uCACzDpB,EAAAA,cAAA,QAAMoB,UAAU,wCACX45B,EAAiBtC,aAAY,IAC9B14B,EAAAA,cAAA,QAAMoB,UAAU,QAAQ85B,EAAiBzb,gBAAkByb,EAAiBzb,eAAe1D,SAM/D,IAAxCmf,EAAiB1b,mBAEbxf,EAAAA,cAAA,OAAKgF,IAAK,GAAG+1B,EAAQrmB,6BAA8BtT,UAAU,uCACzDpB,EAAAA,cAAA,QAAMoB,UAAU,uCACX45B,EAAiB1C,WAAU,IAC5Bt4B,EAAAA,cAAA,QAAMoB,UAAU,QAAQ85B,EAAiBzb,gBAAkByb,EAAiBzb,eAAe1D,SAM/D,IAAxCmf,EAAiB1b,mBAEbxf,EAAAA,cAAA,OAAKgF,IAAK,GAAG+1B,EAAQrmB,6BAA8BtT,UAAU,uCACzDpB,EAAAA,cAAA,QAAMoB,UAAU,wCACX25B,EAAQI,WAAaH,EAAiBI,aAAeJ,EAAiBpC,YAAW,IAClF54B,EAAAA,cAAA,QAAMoB,UAAU,QAAQ85B,EAAiBzb,gBAAkByb,EAAiBzb,eAAe1D,SAKpG,OA/CA,GAHb8e,EAsDoBv6B,GACbA,EAAME,KAAKisB,SAAS5G,eAA8D,IAA7CvlB,EAAME,KAAKisB,SAAS5G,cAAchkB,OAIrEvB,EAAME,KAAKisB,SAAS5G,cAAchW,KAAI,CAACiW,EAAc/V,IAEpD/P,EAAAA,cAAA,OAAKgF,IAAK8gB,EAAauV,SAAWtrB,EAAO3O,UAAU,uCAC/CpB,EAAAA,cAAA,YACK8lB,EAAawV,UAAYxV,EAAawV,UAAY,GAAE,IAAG,IAAIh7B,EAAMM,UAAUs4B,oBAAsB,eAEtGl5B,EAAAA,cAAA,QAAMoB,UAAU,yCACZpB,EAAAA,cAAC0iB,EAAAA,eAAc,CACXliB,KACIF,EAAMi7B,YACA,CACIle,MAAO,CAEHkF,wBAAyBjiB,EAAME,KAAKisB,SAAS+O,mBAGrD,CACIne,MAAO,CACHkF,wBAAyBuD,EAAa2V,gBACtCpZ,UAAWyD,EAAa2V,kBAI1C50B,QAASvG,EAAMuG,QACf/E,GAAIxB,EAAMwB,GACVoD,SAAU5E,EAAM4E,SAChBw2B,aAAcp7B,EAAMq7B,iBAG5B37B,EAAAA,cAAA,YAAO,UAA0C+D,IAArC+hB,EAAa8V,oBAAoC9V,EAAa8V,oBAAsB,WAhCjG,KAxDbf,EA6FqBv6B,IACnB,IAAKA,EAAMu7B,0BACP,OAAO,KAEX,MAAMC,EAAmBx7B,EAAMy7B,wBACzB,0CAA0Cz7B,EAAMy7B,0BAChD,yCACN,OAAO/7B,EAAAA,cAAA,QAAMoB,UAAW06B,GAAmBx7B,EAAMu7B,4BApGnDhB,EA4GoBv6B,IAClB,GAAIA,EAAME,KAAKisB,SAASuP,cACpB,OAAO,KAIX,IAAK17B,EAAMuG,QAAQkD,IAAIzG,OAAOmZ,0BAAkF,SAAtDnc,EAAMuG,QAAQkD,IAAIzG,OAAOmZ,yBAC/E,OAGJ,MAAMxJ,EAAU3S,EAAME,KAAKyS,QAC3B,OAAKA,GAAYA,EAAQ4P,qBAKrB7iB,EAAAA,cAAA,OAAKoB,UAAU,yCACXpB,EAAAA,cAAA,YAAOiT,EAAQ4P,4BANvB,GAvHFgY,EAiIoBv6B,IAAyB,IAAA27B,EAC3C,MAAMzC,EAAsD,QAAhCyC,EAAG37B,EAAMuG,QAAQC,QAAQsuB,eAAO,IAAA6G,OAAA,EAA7BA,EAA+BhE,uBACxDtH,EAA8BrwB,EAAMqwB,4BACpC3C,EAAW1tB,EAAME,KAAKisB,SAC5B,IAAIyP,GAAoB,EACwB,IAADC,OAAXp4B,IAAhC4sB,EACAuL,KACIlO,EAASV,cAC0C,QAD9B6O,EACrBxL,EAA4ByL,+BAAuB,IAAAD,IAAnDA,EAAqD/f,MAAKigB,GAAgBA,IAAiBrO,EAASV,gBAGxG4O,KAAuBlO,EAASV,cAAgBU,EAASV,eAAiBkM,GAE9E,IAAK0C,EACD,OAGJ,MAAMI,GAAuBtO,EAASuO,aAAe,IAAIplB,QAAOqlB,GAAcA,EAAWC,aAEzF,GAAmC,IAA/BH,EAAoBz6B,OACpB,OAGJ,MAAM66B,EAAaJ,EAAoBjW,QAAO,CAACsW,EAAaH,IACjDG,GAAeH,EAAWI,kBAAoB,IACtD,GAEGC,EACF78B,EAAAA,cAAC0iB,EAAAA,eAAc,CACXliB,KAAM,CACF6c,MAAO,CACHkF,wBAAyBma,IAGjCpqB,cAAc,OACdzL,QAASvG,EAAMuG,QACf/E,GAAIxB,EAAMwB,GACVoD,SAAU5E,EAAM4E,SAChB9D,UAAU,gCACVs6B,aAAcp7B,EAAMq7B,gBAG5B,OACI37B,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,SAAOoB,UAAU,gCAAgC,GAAGd,EAAMM,UAAUu4B,wBACpEn5B,EAAAA,cAAA,QAAMoB,UAAU,kBAAkBy7B,KA9K5ChC,EAkLmBv6B,IAAyB,IAAAw8B,EAC1C,MACMC,EAAmC,QAAvBD,EADDx8B,EAAME,KAAKisB,SACE8P,mBAAW,IAAAO,OAAA,EAApBA,EAAsB3lB,QAAO6lB,IAAeA,EAAWP,aAE5E,OACKM,GACGA,EAAaltB,KAAI,CAACotB,EAAaj4B,IACpBi4B,GAAeA,EAAYL,iBAC9B58B,EAAAA,cAAA,OAAKoB,UAAU,+BAA+B4D,IAAKA,GAC/ChF,EAAAA,cAAA,SAAOoB,UAAU,sCAAsC,GAAG67B,EAAYla,gBACtE/iB,EAAAA,cAAA,QAAMoB,UAAU,sBACZpB,EAAAA,cAAC0iB,EAAAA,eAAc,CACXliB,KAAM,CACF6c,MAAO,CACHkF,wBAAyB0a,EAAYL,mBAG7C/1B,QAASvG,EAAMuG,QACf/E,GAAIxB,EAAMwB,GACVoD,SAAU5E,EAAM4E,SAChB9D,UAAU,sCACVs6B,aAAcp7B,EAAMq7B,kBAKhC,WAGZ53B,GA/MN82B,EAwN2Bv6B,GAC8B,IAAnDA,EAAME,KAAKisB,SAASyQ,2BACb,KAEJl9B,EAAAA,cAAA,OAAKoB,UAAU,yCAAyCd,EAAMM,UAAUo4B,2BA4OvF,EAvO4C14B,IAAyB,IAAA68B,EAAAC,EACjE,MAAM,YAAE7B,EAAW,WAAE/mB,EAAU,UAAE5T,GAAcN,GACzC,QAAE2S,EAAO,SAAEwZ,GAAansB,EAAME,KAE9B68B,EAA2B,CAC7B/E,WAAY13B,EAAU03B,WACtBE,YAAa53B,EAAU43B,YACvBI,YAAah4B,EAAUg4B,YACvBF,aAAc93B,EAAU83B,aACxB0C,aAAcx6B,EAAUw6B,cAGtBja,EACFlO,IACAqqB,EAAAA,EAAAA,qBACIrqB,EAAQ2N,OACRtgB,EAAMuG,QAAQiB,cAAc1D,eAAeoP,YAClB,QAD6B2pB,EACtD78B,EAAMuG,QAAQC,QAAQiD,WAAG,IAAAozB,GAAQ,QAARA,EAAzBA,EAA2B75B,cAAM,IAAA65B,OAAA,EAAjCA,EAAmCI,kBAErCC,EAAoBvqB,GAAW4nB,EAA8C5nB,EAASoqB,GACtF/4B,EAAgBhE,EAAMgE,cACxBA,IACAA,EAAckd,iBAAkB,GAEpC,MAAMic,EAAqB5C,EAA0Cv6B,GAC/Do9B,EAAuB7C,EAA2Cv6B,GAClEq9B,EAAsB9C,EAA0Cv6B,GAChEs9B,EAAsB/C,EAA0Cv6B,GAChEu9B,EAAqBhD,EAAyCv6B,GAC9Dw9B,EAA6BjD,EAAiDv6B,GAC9EyC,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1C,EAAM2C,iBAAmB,GAAIgQ,MAAAA,OAAO,EAAPA,EAASyB,SAAS2E,YACnF0kB,GAAmB36B,EAAAA,EAAAA,wBAAuB9C,EAAM2C,iBAAmBF,GACnEi7B,GAAc/qB,MAAAA,OAAO,EAAPA,EAASpL,OAAQ4kB,EAAS1J,YACxCkb,EAAgB39B,EAAME,KAAKisB,SAASuP,cAAgB,+BAAiC,+BAErF/W,EAAYiZ,IACV59B,EAAM69B,kBACC79B,EAAM69B,iBAAiB79B,EAAME,KAAKisB,SAAUyR,EAAU59B,EAAM89B,WAsH3E,OACIp+B,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKoB,UAAU,iBACXpB,EAAAA,cAAA,OAAKoB,UAAW68B,GACZj+B,EAAAA,cAACyhB,EAAAA,GAAK,CACFrd,eAAgB9D,EAAMuG,QAAQiB,cAAc1D,eAC5Cid,IAA0B,QAAvB+b,EAAE98B,EAAMmwB,uBAAe,IAAA2M,EAAAA,EAAI,QAC9B9b,YAAaH,EACbC,QAAS4c,EACT35B,aAAc/D,EAAM+D,aACpBC,cAAeA,EACfQ,oBAAoB,WAG5B9E,EAAAA,cAAA,OAAKoB,UAAU,0BACXpB,EAAAA,cAAA,OAAKoB,UAAU,0BACXpB,EAAAA,cAACw6B,EAAqB74B,OAAA+B,OAAA,GAAKpD,IAC1ByH,EAAAA,GAASQ,UACNvI,EAAAA,cAAA,IAAA2B,OAAA+B,OAAA,CAAGtC,UAAU,gCAAmC28B,EAAgB,CAAEp6B,KAAM6Q,EAAYxP,IAAKwP,IACpFwpB,GAEL,KACHn9B,EAAAA,gBAAgBC,YAAY08B,GACzBx9B,EAAAA,cAAA,OAAKoB,UAAU,mCAAmCo8B,GAElD,GAEHG,EACD39B,EAAAA,cAAA,OAAKoB,UAAU,gCACXpB,EAAAA,cAAC0iB,EAAAA,eAAc,CACXliB,KACI+6B,EACM,CACIle,MAAO,CACHkF,wBAA0BjiB,EAAME,KAAKisB,SAAuB4R,6BAC5Dhc,UAAY/hB,EAAME,KAAKisB,SAAuB6R,cAGtD,CACIjhB,MAAO,CACHkF,wBAA0BjiB,EAAME,KAAKisB,SAAsB8R,cAC3Dlc,UAAW/hB,EAAME,KAAKisB,SAAS+R,WAIjD33B,QAASvG,EAAMuG,QACf/E,GAAIxB,EAAMwB,GACVoD,SAAU5E,EAAM4E,SAChB9D,UAAU,iBACVq9B,qBAAsBn+B,EAAME,KAAKisB,SAASyQ,2BAC1CxB,aAAcp7B,EAAMq7B,iBAG3B8B,EACAC,EACAp9B,EAAMo+B,iCAAmC1+B,EAAAA,cAAA,OAAKoB,UAAU,0BAA0Bw8B,GAClFC,EACAC,GA7Jaa,MAC9B,MAAMC,EAAQ,GACd,OAAIt+B,EAAMiwB,aACC,MAINjwB,EAAME,KAAKisB,SAASuP,gBACjB17B,EAAME,KAAKyS,SAAW3S,EAAMkwB,mBAC5BoO,EAAM7mB,KACF/X,EAAAA,cAAA,OAAKoB,UAAU,mCACXpB,EAAAA,cAAA,OAAKoB,UAAU,yCAAyCR,EAAUk4B,uBAClE94B,EAAAA,cAAC6+B,EAAAA,oBAAmB,CAChB/8B,GAAI,2BAA2BxB,EAAME,KAAKyS,QAAQyB,YAAYpU,EAAME,KAAKisB,SAASa,gBAAgBhtB,EAAME,KAAKisB,SAASZ,SACtHiT,IAAKx+B,EAAM0uB,aAAe,GAC1B+P,aAAcz+B,EAAMgwB,gBACpBrL,SAAUA,EACVgU,uBAAwBr4B,EAAUq4B,uBAClC+F,yBAA0Bp+B,EAAUo+B,yBACpCC,yBAA0Br+B,EAAUq+B,yBACpCj6B,IAAK1E,EAAME,KAAKisB,SAASZ,OACzB1G,UAAW7kB,EAAM4+B,iBACjBC,WAAY7+B,EAAME,KAAKyS,QAAQkoB,WAC/Bl4B,iBAAkB3C,EAAM2C,qBAKpC27B,EAAM7mB,KACF/X,EAAAA,cAAA,OAAKoB,UAAWg+B,GAAAA,CAAW,0BAA2B,CAAE,kBAAoD,IAAjC9+B,EAAME,KAAKisB,SAAS0D,YAC3FnwB,EAAAA,cAAA,SAAOoB,UAAU,kBAAkBR,EAAUk4B,sBAAqB,KAClE94B,EAAAA,cAAA,QAAMoB,UAAU,kBAAkBd,EAAME,KAAKisB,SAAS0D,aAMtEyO,EAAM7mB,KACF/X,EAAAA,cAAA,OAAKoB,UAAU,kCACXpB,EAAAA,cAAC0iB,EAAAA,eAAc,CACXliB,KACI+6B,EACM,CACIle,MAAO,CACHkF,wBAA0BjiB,EAAME,KAAKisB,SAAuB4R,6BAC5Dhc,UAAY/hB,EAAME,KAAKisB,SAAuB6R,cAGtD,CACIjhB,MAAO,CACHkF,wBAA0BjiB,EAAME,KAAKisB,SAAsB8R,cAC3Dlc,UAAW/hB,EAAME,KAAKisB,SAAS+R,WAIjD33B,QAASvG,EAAMuG,QACf/E,GAAIxB,EAAMwB,GACVoD,SAAU5E,EAAM4E,SAChB9D,UAAU,wCACVmR,kBAAmB3R,EAAU2R,kBAC7BC,iBAAkB5R,EAAU4R,iBAC5BkpB,aAAcp7B,EAAMq7B,gBAEtBr7B,EAAME,KAAKisB,SAAS4S,gBAAkB/+B,EAAME,KAAKisB,SAAS4S,eAAiB,GACzEr/B,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,QAAMoB,UAAU,wCACX,IAAId,EAAMM,UAAUs4B,oBAAsB,eAE/Cl5B,EAAAA,cAAC0iB,EAAAA,eAAc,CACXliB,KACIF,EAAMi7B,YACA,CACIle,MAAO,CAEHkF,wBAAyBjiB,EAAME,KAAKisB,SAAS+O,mBAGrD,CACIne,MAAO,CACHkF,wBAAyBjiB,EAAME,KAAKisB,SAAS4S,eAC7Chd,UAAW/hB,EAAME,KAAKisB,SAAS4S,iBAIjDx4B,QAASvG,EAAMuG,QACf/E,GAAIxB,EAAMwB,GACVoD,SAAU5E,EAAM4E,SAChB9D,UAAU,sCACVq9B,qBAAsBn+B,EAAME,KAAKisB,SAASyQ,2BAC1CxB,aAAcp7B,EAAMq7B,kBAI5B,OAILiD,IA8DMD,GACAr+B,EAAME,KAAKisB,SAASuP,eAAiB17B,EAAME,KAAKyjB,WAAa3jB,EAAMM,UAAU0+B,sBAC1Et/B,EAAAA,cAACu/B,EAAAA,oBAAmB,CAChBn+B,UAAU,wCACVyF,QAASvG,EAAMuG,QACfjG,UAAWN,EAAMM,UAAU0+B,qBAC3Brb,UAAW3jB,EAAME,KAAKyjB,UACtBwI,SAAUnsB,EAAME,KAAKisB,aAlLrCnsB,EAAMk/B,aAEFx/B,EAAAA,cAAA,OAAKoB,UAAU,kDACXpB,EAAAA,cAAA,QAAMoB,UAAU,6BAChBpB,EAAAA,cAAA,YAAOM,EAAMk/B,eAKlB,8GC3df,MAAM5b,UAAkB5jB,EAAAA,UAGpBC,YAAYK,EAAwB2G,GAChCnE,MAAMxC,GA8BO,KAAAujB,sBAAyBxN,IACtC,MAAM9T,EAA2B,KAAnB8T,EAAExS,OAAOsC,MAAe,GAAK/F,KAAK6G,MAAM1E,MACtDnC,KAAKuP,SAAS,CACVmU,oBAAqBzN,EAAExS,OAAOsC,MAAMs5B,OACpCl9B,MAAAA,EACAwhB,WAAY1N,EAAExS,OAAOsC,SAIZ,KAAA6d,gBAAmBC,IAChC,IAAKA,IAAcA,EAAUtb,KACzB,OAEJ,MAAMub,EAAe9jB,KAAK6G,MAAM6c,oBAEhCG,EACKE,aAAa,CAAEC,UAAWF,IAC1B9F,MAAK1d,IACoB,YAAlBA,EAAO2jB,OAEPjkB,KAAKuP,SAAS,CAAEmU,oBAAqB,GAAIvhB,MAAO,GAAIwhB,UAAU,IAClC,iBAArBrjB,EAAO4jB,UACdlkB,KAAKuP,SAAS,CAAEpN,MAAOnC,KAAKE,MAAMikB,8BAElCnkB,KAAKuP,SAAS,CAAEpN,MAAOnC,KAAKE,MAAMkkB,+BAGzCliB,OAAMC,IACHnC,KAAKuP,SAAS,CAAEpN,MAAOnC,KAAKE,MAAMmkB,oCAS7B,KAAAC,iBAAoBT,GAAuCle,IACxEA,EAAM4e,iBACNvkB,KAAKwkB,uBAAuBX,IAQf,KAAAW,uBAA0BX,GAAsC,KAC7E7jB,KAAK4jB,gBAAgBC,IAGR,KAAAY,YAAc,CAACC,EAA8BC,EAAkCd,KAC5F,MAAM9gB,GAAaC,EAAAA,EAAAA,wBAAuBhD,KAAKE,MAAM2C,iBAAmB7C,KAAK2C,SAE7E,OACI/C,EAAAA,cAAA,QAAMglB,SAAU5kB,KAAKskB,iBAAiBT,GAAY7iB,UAAU,kCACxDpB,EAAAA,cAAA,OAAKoB,UAAU,yBACXpB,EAAAA,cAAA,SACIoB,UAAU,4BACV6jB,SAAU7kB,KAAKyjB,sBACf1d,MAAO/F,KAAK6G,MAAM6c,oBAClBoB,YAAaJ,IAEjB9kB,EAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACH8B,MAAOuf,EACP3jB,UAAU,gCACVG,QAASnB,KAAKwkB,uBAAuBX,GACrCkB,UAAW/kB,KAAK6G,MAAM8c,UAClB5gB,GAEH4hB,MAOJ,KAAAK,iBAAmB,CAACnB,EAAmCle,KACpE,IAAKke,EACD,OAEJ,MAAM3E,EAAOvZ,EAAMsf,cAAc9O,aAAa,eAAiB,GAC/D0N,EACKqB,iBAAiB,CACdC,WAAY,CAACjG,KAEhBlB,MAAK1d,IACoB,YAAlBA,EAAO2jB,QACPjkB,KAAKuP,SAAS,CAAEpN,MAAO,QAG9BD,OAAM,KACHlC,KAAKuP,SAAS,CAAEpN,MAAOnC,KAAKE,MAAMklB,uCAI7B,KAAAC,mBAAqB,CAACnG,EAAc2E,KACjD,KAAKA,GAAcA,EAAUtb,MAASsb,EAAUtb,KAAK+c,WAAiD,IAApCzB,EAAUtb,KAAK+c,UAAU7jB,QAAiByd,GACxG,OAEJ,IAAIqG,EAAiB,EACrB,IAAK,MAAMC,KAAQ3B,EAAUtb,KAAK+c,UAC9B,GAAIE,EAAKC,cACL,IAAK,MAAMC,KAAgBF,EAAKC,cACxBC,EAAaC,eAAiBzG,IAC9BqG,GAAkBG,EAAaE,cAK/C,OAAyB,EAAlBL,GAGM,KAAAM,wBAA2B3lB,IACxC,IAAKA,EAAMqI,OAASrI,EAAMqI,KAAKA,OAASrI,EAAMqI,KAAKA,KAAKud,SAA8C,IAAnC5lB,EAAMqI,KAAKA,KAAKud,QAAQrkB,OACvF,OAGJ,MAAMskB,EAA0BpgB,IAC5B3F,KAAKglB,iBAAiB9kB,EAAMqI,KAAM5C,IAGhCqgB,EAAwB9lB,EAAMqI,KAAKA,KAAKud,QAAQG,QAAO,CAACC,EAAeC,IAClED,GAASlmB,KAAKqlB,mBAAmBc,EAAOC,MAAQ,GAAIlmB,EAAMqI,OAAS,IAC3E,GAEH,OACI3I,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKoB,UAAU,4BACXpB,EAAAA,cAAA,OAAKoB,UAAU,oCAAoChB,KAAKE,MAAMmmB,6BAC9DzmB,EAAAA,cAAC0iB,EAAAA,eAAc,CACXliB,KAAM,CACF6c,MAAO,CACHkF,wBAAyB6D,IAGjCvf,QAASvG,EAAMuG,QACf/E,GAAIxB,EAAMwB,GACVoD,SAAU5E,EAAM4E,SAChB9D,UAAU,oCAGjBd,EAAMqI,KAAKA,KAAKud,QAAQrW,KAAK0W,IAC1B,MAAM3iB,EAAYtD,EAAMomB,4BAClB3J,EAAAA,EAAAA,QAAOzc,EAAMomB,2BAA4BpmB,EAAMqmB,gBAAiBJ,EAAOC,MACvE,GAEN,OACIxmB,EAAAA,cAAA,OAAKgF,IAAKuhB,EAAOC,KAAMplB,UAAU,kCAC7BpB,EAAAA,cAAA,OAAKoB,UAAU,8BACVmlB,EAAOC,KAAM,IACdxmB,EAAAA,cAAC0iB,EAAAA,eAAc,CACXliB,KAAM,CACF6c,MAAO,CACHkF,wBAAyBniB,KAAKqlB,mBAAmBc,EAAOC,MAAQ,GAAIlmB,EAAMqI,QAGlF9B,QAASvG,EAAMuG,QACf/E,GAAIxB,EAAMwB,GACVoD,SAAU5E,EAAM4E,SAChB9D,UAAU,yCAGlBpB,EAAAA,cAACsF,EAAAA,OAAM,CACHE,MAAOlF,EAAMqmB,gBACbvlB,UAAU,mCACVG,QAAS4kB,EAAsB,aACnBI,EAAOC,KAAI,aACX5iB,GAEXtD,EAAMqmB,uBAvM/BvmB,KAAK2C,SAAUC,EAAAA,EAAAA,kBAAiB,QAAS5C,KAAKE,MAAM2C,iBAAmBC,EAAAA,kBAAkB0jB,gBACzFxmB,KAAK6G,MAAQ,CACT4f,gBAAgB,EAChB/C,oBAAqB,GACrBvhB,MAAO,GACPwhB,UAAU,GAIX+C,sBAAsBC,EAA4BC,GACrD,OAAI5mB,KAAK6G,QAAU+f,GAAa5mB,KAAKE,MAAME,OAASumB,EAAUvmB,KAM3DD,SACH,OACIP,EAAAA,cAAA,WACIA,EAAAA,cAAA,OAAKoB,UAAU,0BAA0BhB,KAAKE,MAAM2mB,sBACnD7mB,KAAKykB,YAAYzkB,KAAKE,MAAMwkB,qBAAsB1kB,KAAKE,MAAMykB,yBAA0B3kB,KAAKE,MAAMqI,MACnG3I,EAAAA,cAAA,KAAGoB,UAAWhB,KAAK6G,MAAM1E,MAAQ,mBAAqB,GAAE,YAAY,aAC/DnC,KAAK6G,MAAM1E,OAEfnC,KAAK6lB,wBAAwB7lB,KAAKE,SAyLnD,0HC3PA,IAAaP,EAAb,cAA0CC,EAAAA,cAA1CC,cAAA,oBACqB,KAAAC,oBAA0DF,EAAAA,YAMpE,KAAAG,YAAc,IACVC,KAAKC,2BAA2BD,KAAKE,OAGzCC,SACH,MACIC,MACIC,2BAA6BC,OAAQD,IACxC,MACDE,EAAK,UACLC,GACAR,KAAKE,MAGT,GAAIO,EAAAA,gBAAgBC,YAAYH,MAAAA,OAAK,EAALA,EAAOI,eAAgB,CACnD,MAAMC,EACFP,MAAAA,GAAAA,EAA2BQ,gBAAkBR,EAA0BQ,eAAeC,UAChFT,EAA0BQ,eAAeC,UACzCN,EAAUO,yBAEpB,OACInB,EAAAA,cAAA,OAAKoB,UAAU,wCACXpB,EAAAA,cAAA,UACIoB,UAAU,yCACVC,MAAM,YAAW,aACLT,EAAUU,8BACtBC,QAASnB,KAAKD,YACdqB,IAAKpB,KAAKF,qBAEVF,EAAAA,cAAA,QAAMoB,UAAU,mCAAmCJ,IAEtDL,EAAMI,gBAQf,iCAAiCT,GACrC,MACIE,MACIC,2BAA6BC,OAAQD,IACxC,QACDgB,GACAnB,EACJ,IAAKG,EACD,OAEJ,IAAIiB,EAA0B,GAC1BD,GAAWE,OAAOC,KAAKH,GAASI,OAAS,GAAKhB,EAAAA,gBAAgBC,YAAYW,EAAQV,iBAClFW,EAAkBD,EAAQV,cAAc,GAAGe,UAEzCrB,EACDsB,WAAW,CACRD,GAAIJ,EACJM,iBAAiB,EACjBC,iBAAkB7B,KAAKF,oBACvBgC,mBAAoBC,GACTC,QAAQC,YAGtBC,OAAOC,IACAjC,EAAMkC,YACNlC,EAAMkC,UAAUD,MAAMA,EAAME,SAC5BnC,EAAMkC,UAAUE,MAAM,uCAxE7B3C,GAAoB4C,EAAAA,EAAAA,IAAA,CADhCC,EAAAA,IACY7C,+BCeN,MAAM8C,UAAa7C,EAAAA,cAGtBC,YAAYK,GACRwC,MAAMxC,GACN,MAAMyC,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1C,EAAM2C,iBAAmBC,EAAAA,kBAAkBL,MACrFzC,KAAK+C,YAAaC,EAAAA,EAAAA,wBAAuB9C,EAAM2C,iBAAmBF,GAG/DxC,SACH,OAAOP,EAAAA,cAAA,OAAKoB,UAAWhB,KAAKE,MAAMc,WAAYhB,KAAKiD,YAAYjD,KAAKE,QAGhE+C,YAAYC,GAChB,OAAIA,EAAOC,MAAQD,EAAOC,KAAKC,QAAQC,eAE/BzD,EAAAA,cAAA,IAAA2B,OAAA+B,OAAA,CACIC,KAAML,EAAOC,KAAKC,QAAQC,eAAc,aAC5BH,EAAOC,KAAKK,UACxBC,OAAQP,EAAOC,KAAKO,aAAe,cAAWC,EAC9CC,IAAI,uBACA5D,KAAK+C,YAER/C,KAAK6D,aAAaX,IAIxBlD,KAAK6D,aAAaX,GAGrBW,aAAaX,GASjB,OACItD,EAAAA,cAACkE,EAAAA,GAAcvC,OAAA+B,OAAA,GACPJ,EAAOa,MAAK,CAChBC,eAAgBhE,KAAKE,MAAM8D,eAC3BC,aAAcjE,KAAKE,MAAM+D,aACzBC,cAAgBhB,GAAUA,EAAOa,OAASb,EAAOa,MAAMG,eAbT,CAClDC,UAAW,CACPC,GAAI,CAAEC,EAAG,iBAAkBC,EAAG,EAAGC,EAAG,GACpCC,GAAI,CAAEH,EAAG,iBAAkBC,EAAG,EAAGC,EAAG,IAExCE,UAAU,GASNC,oBAAoB,UACpBC,UAAW,CACPC,IAAK1B,EAAOa,OAAS,GACrBC,eAAgBhE,KAAKE,MAAM8D,eAC3Ba,WAAY7E,KAAKE,MAAM4E,SACvBC,kBAAmB,SAEvBC,uBAAqB,MClDrC,IAAaC,EAAb,cAA6BrF,EAAAA,cAGzBC,YAAYK,GACRwC,MAAMxC,GACN,MAAMyC,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS1C,EAAM2C,iBAAmBC,EAAAA,kBAAkBmC,SACrFjF,KAAK+C,YAAaC,EAAAA,EAAAA,wBAAuB9C,EAAM2C,iBAAmBF,GAG/DxC,SACH,OACIP,EAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACHtC,UAAU,sBACVG,QAASnB,KAAKE,MAAMiF,aACpBC,MAAOpF,KAAKE,MAAMM,UAAU6E,yBAAwB,aACxCrF,KAAKE,MAAMM,UAAU6E,yBAAwB,gBAC1CrF,KAAKE,MAAMoF,WAAU,gBACrBtF,KAAKE,MAAMqF,UACtBvF,KAAK+C,eAlBZkC,GAAO1C,EAAAA,EAAAA,IAAA,CADnBC,EAAAA,IACYyC,6xBCiDb,IAAMO,EAAN,cAAqB5F,EAAAA,cAqCjBC,YAAmBK,GACfwC,MAAMxC,GA/BF,KAAAo/B,WAAqB,EA2QtB,KAAA75B,qBAAwBC,GAAuBC,IAA8C,IAAAC,EAC5D,QAApCA,EAAI5F,KAAKE,MAAMgD,OAAO2C,sBAAc,IAAAD,GAAhCA,EAAmCF,KACnC1F,KAAKE,MAAMgD,OAAO2C,eAAeH,GAAWI,SAAWH,EAAMlC,OAAOsC,QA7OxE/F,KAAKgG,WAAapG,EAAAA,YAClBI,KAAKiG,cAAgBjG,KAAKiG,cAAcC,KAAKlG,MAC7CA,KAAKmG,eAAiBnG,KAAKmG,eAAeD,KAAKlG,MAC/CA,KAAKsG,SAAWtG,KAAKsG,SAASJ,KAAKlG,MACnCA,KAAK6G,MAAQ,CACTC,qBAAqB,EACrBC,mBAAmB,EACnBC,gBAAgB,GAEpBhH,KAAK6C,kBAAmBqE,EAAAA,EAAAA,oBACpBlH,KAAKE,MAAMuG,QAAQC,QAAQS,kBAC3BnH,KAAKE,MAAMkH,aACXpH,KAAKE,MAAMkC,WAEfpC,KAAKs/B,WAAY3P,EAAAA,EAAAA,IAAiB3vB,KAAKE,MAAMuG,QAAQC,SAzC/C,kBAAsB,IAAAitB,EAC5B,OACKhsB,EAAAA,GAAsB3H,KAAKE,MAAMuG,QAAQC,SAAW1G,KAAKu/B,WAAav/B,KAAKw/B,gBAClD,QAD8D7L,EACxF3zB,KAAKE,MAAMuG,QAAQC,eAAO,IAAAitB,GAAM,QAANA,EAA1BA,EAA4BnrB,YAAI,IAAAmrB,OAAA,EAAhCA,EAAkC3W,MAOhC,iBAAqB,IAAAyiB,EAC3B,MAAMC,EAAiC,QAA3BD,EAAGz/B,KAAKE,MAAME,KAAKu/B,gBAAQ,IAAAF,OAAA,EAAxBA,EAA0Bn/B,OACzC,OAAOo/B,MAAAA,OAAM,EAANA,EAAQj4B,KAGT,mBAAuB,IAAAJ,EAC7B,MAAMC,EAA6C,QAArCD,EAAGrH,KAAKE,MAAME,KAAKmH,0BAAkB,IAAAF,OAAA,EAAlCA,EAAoC/G,OACrD,OAAIqH,EAAAA,GAAsB3H,KAAKE,MAAMuG,QAAQC,SAElCY,EAAWA,EAASG,UAAO9D,EAE3B2D,EAAWA,EAASE,WAAaF,EAASG,UAAO9D,EAuBzDuE,oBACCP,EAAAA,GAA0BQ,WAC1BC,OAAOC,iBAAiB,UAAWrI,KAAKsG,WAE5CgC,EAAAA,EAAAA,KACI,KACItI,KAAKE,MAAME,KAAKmI,KAAKjI,UAEzB,KACIN,KAAKuI,KAAOvI,KAAKE,MAAME,KAAKmI,KAAKjI,UAIzC,MACImG,SACIC,SAAS,KAAE8B,IAEfhI,WAAW,4BACPiI,EAA2B,iCAC3BC,EAAgC,iCAChCk3B,EAAgC,uBAChCj3B,IAEJ3I,KAAKE,MAEH0I,EAA0B5I,KAAK6I,uBACjCL,EACAE,EACAD,EACAm3B,QAE4Bj8B,IAA5BiF,IAAuE,IAA9B5I,KAAK6G,MAAMG,gBAEpD8B,EAAAA,qBAAqBC,WAAWC,gBAAgB,IAAIC,EAAAA,kBAAkBL,EAAyBD,IAIhGO,uBACCvB,EAAAA,GAA0BQ,WAC1BC,OAAOe,oBAAoB,UAAWnJ,KAAKsG,UAAU,GAItDnG,SACH,MAAM,GACFuB,EAAE,SACFoD,EACA1E,MAAM,mBAAEmH,EAAkB,UAAE6B,GAC5B3C,SACIC,SAAS,KAAE8B,IACd,QACD/B,EACAjG,WAAW,UAAE6I,EAAS,aAAEC,IACxBtJ,KAAKE,OACH,SAAEqJ,EAAQ,UAAEC,EAAS,wBAAEC,GAA4BzJ,KAAKE,MAAMgD,OAG9DwG,EAAiB1J,KAAKE,MAAMuG,QAAQkD,IAAIzG,OAAOwG,iBAAkB,EACjEE,EAAoB5J,KAAK6G,MAAMC,oBAAsB,GAAK,iBAC1D+C,EAAkBC,GAAAA,CAAW,YAAa9J,KAAKE,MAAMgD,OAAOlC,UAAW4I,GACvEG,EAAY,oBACZzC,EAAWC,GAAsBA,EAAmBjH,OACpD0J,EAAehK,KAAKiK,SAAS,YAC7BC,EAAclK,KAAKiK,SAAS,WAC5BE,EAAanK,KAAKiK,SAAS,UACjC,IAAIG,EAAgB,EACpB,MAAMC,EAAkBrK,KAAKiK,SAAS,eAChCK,EAAqBtK,KAAKiK,SAAS,iBACnC41B,EAAyB7/B,KAAKiK,SAAS,4BAC3BtG,IAAdyF,IASIgB,EAPChB,EAAU9I,QACVG,EAAAA,gBAAgBC,YAAY0I,EAAU9I,SACtC8I,EAAU9I,OAAO,GAAGiK,mBACpB9J,EAAAA,gBAAgBC,YAAY0I,EAAU9I,OAAO,GAAGiK,mBAIjCnB,EAAU9I,OAAO,GAAGiK,kBAAkB9I,OAFtC,GAKxB,MAAM+I,EAASC,EAAAA,EAAAA,EAAA,GACPzK,KAAKE,OACNF,KAAK6G,OAAK,IACb6D,KACI9K,EAAAA,cAAC6C,EAAAA,GAAIlB,OAAA+B,OAAA,GACG,CACAH,KAAMoG,EACNxF,MAAOyF,EACPxI,UAAW,kBACXiD,aAAcjE,KAAKE,MAAMuG,QAAQC,QAAQzC,aACzCD,eAAgBhE,KAAKE,MAAMuG,QAAQC,QACnC7D,iBAAkB7C,KAAK6C,iBACvBiC,SAAU9E,KAAKE,MAAM4E,YAIjC6F,oBACI/K,EAAAA,cAACgL,EAAAA,sBAAqB,CAClB5J,UAAU,8BACV6J,mBAAoBnB,EACpBoB,oBAAqB9K,KAAKE,MAAMM,UAAUsK,oBAC1CrE,QAASA,EACT/E,GAAIA,EACJoD,SAAUA,EACVjC,iBAAkB7C,KAAK6C,iBACvBzC,KAAM,GACNgK,cAAeA,EACfW,mBAAoB/K,KAAKE,MAAMM,UAAUuK,mBACzCC,sBAAuBvB,IAG/BwB,mBACIrL,EAAAA,cAACgL,EAAAA,sBAAqB,CAClB5J,UAAU,6BACV6J,mBAAoBnB,EACpBoB,oBAAqB9K,KAAKE,MAAMM,UAAUsK,oBAC1CrE,QAASA,EACT/E,GAAIA,EACJoD,SAAUA,EACVjC,iBAAkB7C,KAAK6C,iBACvBzC,KAAM,GACNgK,cAAeA,EACfW,mBAAoB/K,KAAKE,MAAMM,UAAUuK,mBACzCC,sBAAuBvB,IAG/ByB,SAAUzK,EAAAA,gBAAgBC,YAAYsJ,GAClCA,EAAa,GAEbpK,EAAAA,cAACuL,EAAAA,kBAAiB,CACd9B,UAAWA,EACXC,aAAcA,EACd7C,QAASA,EACT/E,GAAIA,EACJoD,SAAUA,EACVjC,iBAAkB7C,KAAK6C,iBACvBzC,KAAM,CAAEmI,KAAMvI,KAAKuI,QAG3B6C,QACIxL,EAAAA,cAACqF,EAAAA,GAAO1D,OAAA+B,OAAA,GACA,CACA9C,UAAWR,KAAKE,MAAMM,UACtB8E,YAAatF,KAAK6G,MAAMC,oBACxBvB,SAAUwE,EACV5E,aAAcnF,KAAKiG,cACnBpD,iBAAkB7C,KAAK6C,oBAInCwI,QAAS5K,EAAAA,gBAAgBC,YAAYwJ,GAAeA,EAAc,GAClEoB,OAAQ7K,EAAAA,gBAAgBC,YAAYyJ,GAAcA,EAAa,GAC/DoB,YAAa9K,EAAAA,gBAAgBC,YAAY2J,GAAmBA,EAAkB,GAC9ErJ,UAAW6I,EACX2B,UAAW,CACPC,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAWD,GACtB,aAAc7J,KAAKE,MAAMM,UAAUs/B,gBACnCp0B,IAAK,UAETC,gBAAiB,CACb3K,UAAW8I,GAAAA,CAAW,yBAE1B8B,sBAAuB,CACnB5K,UAAW8I,GAAAA,CAAW,sBAE1B+B,QAAS,CACL7K,UAAW8I,GAAAA,CAAW,uBAE1BgC,oBAAqB,CACjBJ,IAAKK,EAAAA,MACLrK,GAAIqI,EACJ/I,UAAW,8BACXgL,QAAShM,KAAK6G,MAAMC,oBACpBmF,cAAe,mBACfC,OAAQlM,KAAKiG,eAEjBkG,iBAAkBvM,EAAAA,cAACwM,EAAAA,YAAW,CAACpL,UAAU,0CAA0CkL,OAAQlM,KAAKiG,gBAChGoG,wBAAyB,CACrBX,IAAKY,EAAAA,UACLtL,UAAW,yCAEfuL,yBAA0B,CACtBvL,UAAW,0CAEfwL,mCAAoC,CAChCxL,UAAW,2BAEfyL,0CAA2CzM,KAAK0M,YAC1C,CACIhB,IAAKiB,EAAAA,QACLjL,GAAI,mBACJV,UAAW,kCACX4L,UAAW,SACXZ,OAAQhM,KAAK6G,MAAME,kBACnBtD,OAAQzD,KAAKgG,WACbkG,OAAQlM,KAAKmG,qBAEjBxC,EACNkJ,WAAY7M,KAAK8M,iBAAiBtE,EAAMxI,KAAKE,MAAMM,WACnDuM,YAAa/M,KAAKgN,kBAAkBxE,EAAMxI,KAAKE,MAAMM,WACrDu/B,aAAcp4B,EAAAA,GAAsB3H,KAAKE,MAAMuG,QAAQC,SACvDs5B,mBAAoBhgC,KAAKigC,yBAAyBz3B,EAAMxI,KAAKE,MAAMM,WACnEyM,0BAA2BjN,KAAKkN,8BAA8B1E,EAAMxI,KAAKE,MAAMM,WAC/E2M,aAAcnN,KAAKoN,iBAAiB9F,GACpCzG,eAAgBJ,EAAAA,gBAAgBC,YAAY4J,IAAuB1K,EAAAA,cAACD,EAAAA,GAAoB4B,OAAA+B,OAAA,GAAKtD,KAAKE,QAClGggC,mBAAoBlgC,KAAKs/B,WAAa7+B,EAAAA,gBAAgBC,YAAYm/B,GAA0BA,OAAyBl8B,IAGzH,OAAO3D,KAAKE,MAAMmN,WAAW7C,GAmBzBP,SAASqD,GACb,MAAM,MAAE/M,GAAUP,KAAKE,MACvB,OAAQK,GAASA,EAAM+M,IAAa/M,EAAM+M,GAAU7L,QAAUlB,EAAM+M,IAAc,KAS9ER,iBAAiBtE,EAAgDhI,GACrE,MAAMmC,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS5C,KAAK6C,iBAAkBC,EAAAA,kBAAkByK,QAC7ExK,GAAaC,EAAAA,EAAAA,wBAAuBhD,KAAK6C,iBAAkBF,GACjE,OACK3C,KAAK0M,aACF9M,EAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACHtC,UAAU,2BACVoE,MAAO5E,EAAUgN,eACjBjK,KAAMiF,MAAAA,OAAI,EAAJA,EAAMiF,UAAS,aACTjN,EAAUkN,mBACtBvM,SAASwM,EAAAA,EAAAA,kBAAiB3N,KAAK6C,iBAAkBF,EAAS,YACtDI,GAEJnD,EAAAA,cAAA,QAAMoB,UAAU,gCAA+B,kBAC1CR,EAAUgN,iBAavBR,kBAAkBxE,EAAgDhI,GAA2B,IAAAoN,EACjG,MAAMjL,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS5C,KAAK6C,iBAAkBC,EAAAA,kBAAkB+K,SAC7E9K,GAAaC,EAAAA,EAAAA,wBAAuBhD,KAAK6C,iBAAkBF,GACjE,OACI3C,KAAK0M,aACD9M,EAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACHtC,UAAU,4BACVoE,MAAO5E,EAAUsN,gBACjBvK,KAAsB,QAAlBqK,EAAEpF,MAAAA,OAAI,EAAJA,EAAMuF,kBAAU,IAAAH,EAAAA,EAAI,GAAE,aAChBpN,EAAUwN,oBACtB7M,SAASwM,EAAAA,EAAAA,kBAAiB3N,KAAK6C,iBAAkBF,EAAS,aACtDI,GAEJnD,EAAAA,cAAA,QAAMoB,UAAU,iCAAgC,kBAC3CR,EAAUsN,kBAavBmyB,yBACJz3B,EACAhI,GAEA,MAAMmC,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS5C,KAAK6C,iBAAkBC,EAAAA,kBAAkBq9B,gBAC7Ep9B,GAAaC,EAAAA,EAAAA,wBAAuBhD,KAAK6C,iBAAkBF,GAC3Dy9B,EACFz4B,EAAAA,GAAsB3H,KAAKE,MAAMuG,QAAQC,UAAY1G,KAAKE,MAAMuG,QAAQC,QAAQsgB,QAAQqZ,4BAC5F,OACIrgC,KAAK0M,aACL0zB,GACIxgC,EAAAA,cAAA,IAAA2B,OAAA+B,OAAA,cACgB9C,EAAU8/B,2BACtBt/B,UAAU,sCACVoE,MAAO5E,EAAU+/B,uBACjBh9B,KAAMvD,KAAKwgC,iCACXzwB,KAAK,OACL5O,QAASA,IAAMnB,KAAKE,MAAMuG,QAAQC,QAAQsgB,QAAQyZ,gCAC9C19B,GAEJnD,EAAAA,cAAA,OAAKoB,UAAU,yCACXpB,EAAAA,cAAA,OAAKoB,UAAU,+BAA8B2b,EAAAA,EAAAA,QAAOnc,EAAUkgC,eAAgB1gC,KAAKw/B,eACnF5/B,EAAAA,cAAA,WAAMY,EAAU+/B,0BAO5BC,iCACJ,MAAMG,EAAQh5B,EAAAA,GAAoB,2BAA4B3H,KAAKE,MAAMuG,QAAQiB,eACjF,IAAKi5B,IAAUh5B,EAAAA,GAA0BQ,UACrC,OAKJ,MACMP,EAAM,IAAIuL,IAAIwtB,EAAOv4B,OAAOiR,SAAS9V,MAE3C,MAH+B,CAAC,aAET0X,SAAQ2lB,GAASh5B,EAAImR,aAAaC,OAAO4nB,KACzDh5B,EAAIrE,KAGPsF,uBACJL,EACAE,EACAD,EACAm3B,GAEA,GAAKp3B,MAAAA,IAAAA,EAAM2F,sBACP,OAGJ,MAAM,uBAAEF,EAAsB,4BAAEC,EAA2B,4BAAE2yB,GAAgC7gC,KAAKE,MAAMgD,OAKxG,MAJsB,0EAIlBsF,MAAAA,OAAI,EAAJA,EAAM2F,4BAC4BxK,IAA3BsK,EAAuCA,EAAyBxF,EAJ9C,2FAKlBD,MAAAA,OAAI,EAAJA,EAAM2F,4BAC0BxK,IAAhCuK,EAA4CA,EAA8BxF,EALnD,6DAMvBF,MAAAA,OAAI,EAAJA,EAAM2F,4BAC0BxK,IAAhCk9B,EAA4CA,EAA8BjB,EAE9Ep3B,MAAAA,OAAI,EAAJA,EAAMs4B,yBAGT5zB,8BACJ1E,EACAhI,GAEA,MAAMmC,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS5C,KAAK6C,iBAAkBC,EAAAA,kBAAkBuL,WAC7EtL,GAAaC,EAAAA,EAAAA,wBAAuBhD,KAAK6C,iBAAkBF,GACjE,OACI3C,KAAK0M,aACD9M,EAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACHmL,SAAUzO,KAAKgG,WACfhF,UAAU,4BAA2B,mBACpB,mBACjBG,QAASnB,KAAKmG,eACdlF,MAAM,OAAM,aACAjB,KAAK0M,YAAW,gBACb1M,KAAK6G,MAAME,mBACtBhE,GAEJnD,EAAAA,cAAA,OAAKoB,UAAU,0BACXpB,EAAAA,cAAA,WAAMI,KAAK0M,aACV/E,EAAAA,GAAsB3H,KAAKE,MAAMuG,QAAQC,UAAY1G,KAAKw/B,cACvD5/B,EAAAA,cAAA,YAAM+c,EAAAA,EAAAA,QAAOnc,EAAUkgC,eAAgB1gC,KAAKw/B,iBAQ5DpyB,iBAAiB9F,GACrB,MAAM,eAAEzB,GAAmB7F,KAAKE,MAAMgD,OAChCP,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS5C,KAAK6C,iBAAkB,IACjE,GAAK7C,KAAK0M,aAAgB7G,GAAmBpF,EAAAA,gBAAgBC,YAAYmF,GAGzE,OAAOA,EAAe4J,KAAI,CAACC,EAA0BC,KACjDhN,EAAQiN,cAAcC,MAAQH,EAAI5J,SAClC,MAAM/C,GAAaC,EAAAA,EAAAA,wBAAuBhD,KAAK6C,iBAAkBF,GAC3DmN,EAAoC,CACtCtM,UAAWkM,EAAIlM,UACfxC,UAAW,sCACX8E,SAAU4J,EAAI5J,SACd1C,QAASsM,EAAItM,QAAQC,eACrBK,aAAcgM,EAAIhM,aAClBqM,KAAM,OACNC,qBAAsBjN,GAG1B,OACInD,EAAAA,cAAC+H,EAAAA,GAAa,CACV/C,IAAK+K,EACLxM,KAAM2M,EACNnL,UAAW,CAAEsL,aAAcjQ,KAAKyF,qBAAqBkK,GAAQ3L,eAAgBhE,KAAKE,MAAMuG,QAAQC,cAMxGT,gBACJjG,KAAKuP,SAAS,CACVzI,qBAAsB9G,KAAK6G,MAAMC,sBAIjCX,iBACJnG,KAAKuP,SAAS,CACVxI,mBAAoB/G,KAAK6G,MAAME,oBAI/BT,SAASX,GACTA,EAAMuK,UAAYC,EAAAA,SAASC,QAC3BpQ,KAAKuP,SAAS,CAAEzI,qBAAqB,OA9dnCvE,EAAAA,EAAAA,IAAA,CAAT+N,EAAAA,IAAQ,iCAUC/N,EAAAA,EAAAA,IAAA,CAAT+N,EAAAA,IAAQ,gCAKC/N,EAAAA,EAAAA,IAAA,CAAT+N,EAAAA,IAAQ,iCA3BP9K,GAAMjD,EAAAA,EAAAA,IAAA,CADXC,EAAAA,IACKgD,GA+eN,+GC9eA,SAASgL,EAAqBC,GAC1B,OACI7Q,EAAAA,cAAAA,EAAAA,SAAA,KACK6Q,GAASA,EAAMhP,OAAS,EACnBgP,EAAMhB,KAAI,CAACiB,EAAuBf,IACvB/P,EAAAA,cAACA,EAAAA,SAAc,CAACgF,IAAK+K,GAAQe,KAExC,MAKlB,QArF+CxQ,IAC3C,MAAM,UACFsL,EAAS,gBACTG,EAAe,sBACfC,EAAqB,oBACrBE,EAAmB,wBACnBO,EAAuB,yBACvBE,EAAwB,QACxBV,GACA3L,EACJ,OACIN,EAAAA,cAAC+Q,EAAAA,OAAMpP,OAAA+B,OAAA,GAAKkI,GACR5L,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKqI,GACN/L,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKsI,GACL1L,EAAMkL,QACNlL,EAAMwK,KACN8F,EAAqBtQ,EAAMoL,QAC3BpL,EAAMW,eACNX,EAAMggC,mBA0B3B,SAAoChgC,GAChC,MAAM,mCACFsM,EAAkC,0CAClCC,EAAyC,0BACzCQ,EAAyB,YACzBF,EAAW,WACXF,EAAU,aACVM,GACAjN,EAEJ,GAAIsM,EAAoC,CACpC,GAAIC,EACA,OACI7M,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkJ,GACLS,EACDrN,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKmJ,KACLU,GAAeA,EAAasC,KAAItM,GAAQA,IACxC4J,IAIV,GAAIF,EACP,OAAOjN,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkJ,GAAqCK,GAI9D,OADA3M,EAAMuG,QAAQrE,UAAUD,MAAM,gDACvB,KAnDU4+B,CAA2B7gC,GAC3BA,EAAMyK,oBACP/K,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKuI,IACT3L,EAAMgL,SACNsF,EAAqBtQ,EAAMqL,cAEhC3L,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKwI,GACNlM,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAK+I,GACLnM,EAAMiM,iBACNqE,EAAqBtQ,EAAMmL,SAC5BzL,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKiJ,KACLrM,EAAMiN,cAAejN,EAAMiN,aAAasC,KAAItM,GAAQA,IACpDjD,EAAMqL,YACNrL,EAAM+K,mBACN/K,EAAM2M,WACN3M,EAAM6M,eAIlByD,EAAqBtQ,EAAMmL,6ICa5C,MAOM21B,EAPoC9gC,IACtC,MAAM,sBAAE+gC,GAA0B/gC,EAAMghC,UAClC,QAAEC,GAAYjhC,EAEpB+gC,GAAyBE,GAAWF,EAAsBE,IAYxDC,EAAoC7V,GAAqC,KAC3EyV,EAAyCzV,IAGhC8V,EAAuB9V,IAChC,MAAM,GACFf,EAAE,cACF8W,EAAa,gCACbC,EAA+B,mBAC/BC,EAAkB,SAClBN,EAAQ,KACRlkB,EAAI,cACJ9Y,EAAa,QACbuC,EAAO,iBACP5D,EAAgB,uBAChB4+B,GACAlW,EAEJ,IAAKf,EACD,OAAO,KAGX,MASM,UAAEkX,GAAcR,EAEtB,MAAO,CACHt8B,IAAK,GAAG4lB,aACRmX,mBAAoBC,EAA2Bn7B,EAAS66B,EAAcO,mBAAoB39B,EAAeu9B,GACzGK,uBAAwBC,EAAiBxW,GACzCyW,kBACIpiC,EAAAA,cAAA,WACIA,EAAAA,cAAA,OAAKoB,UAAU,sCACXpB,EAAAA,cAAA,KAAG2D,KAlBc0+B,MAAa,IAAAC,EAC1C,MAAMt6B,EAAwD,QAArDs6B,GAAG7N,EAAAA,EAAAA,IAAW,gBAAiB5tB,EAAQiB,sBAAc,IAAAw6B,EAAAA,EAAI,GAC5DC,EAAYv6B,EAAII,SAAS,KAAO,IAAM,IAC5C,OAAIwiB,EACO,GAAG5iB,IAAMu6B,OAAe3X,IAE5B,IAYcyX,GAA0B,aAAcjlB,GAC5CA,IAGTpd,EAAAA,cAAA,OAAKoB,UAAU,iCACVsgC,EAAcc,WACd,IAAG,cAGRxiC,EAAAA,cAAA,MAAIqB,MAAM,aAGlBohC,gBACIziC,EAAAA,cAAA,OAAKoB,UAAU,4CACXpB,EAAAA,cAAC0iC,EAAAA,gCAA+B,CAC5B5gC,GAAI8oB,EACJ/jB,QAASA,EACT3B,SAAUymB,EAAMhK,eAChBnhB,KAAM,CACFkhC,cAAe/V,EAAM+V,eAEzBtgC,UAAU,uCACVuhC,cAAehX,EAAMiX,aACrBC,cAAelX,EAAM/qB,UACrBqC,iBAAkBA,EAClB6/B,oCAAqCnX,EAAMmX,uCAIvDC,aACI/iC,EAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAU,iCAAgC,aAC9BugC,EACZpgC,QAASigC,EAAiC7V,KAGlDqX,2BAA4BpB,GAAsBA,EAAmBx1B,QAAUw1B,EAAmBqB,aAC9FjjC,EAAAA,cAAA,OAAKoB,UAAU,4BACXpB,EAAAA,cAACkjC,EAAAA,MAAK,CAAC7hC,MAAOugC,EAAmBuB,gBAAiB/2B,OAAQw1B,EAAmBx1B,OAAQE,OAAQw1B,GACzF9hC,EAAAA,cAAA,YAAO4hC,EAAmBqB,iBAYxCG,EAAkB5uB,GAAuB,KAC3ChM,OAAOiR,SAAS/V,OAAO8Q,IAGrBwtB,EAA6BA,CAC/Bn7B,EACAo7B,EACA39B,EACAu9B,KAEA,MAAMwB,EAAuC,CACzC9+B,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrC2+B,GAAI,CAAE7+B,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCE,UAAU,GAGd,GAAIo9B,EAAoB,CACpB,MAAM3b,EAAQ2b,EAAmBpgC,OAAS,EAAIogC,EAAmBpgC,OAAS,EAE1E,OACI7B,EAAAA,cAAA,OAAKoB,UAAU,sCACV6gC,MAAAA,OAAkB,EAAlBA,EAAoBsB,MAAM,EAAGjd,GAAOzW,KAAI+V,IAAO,IAAA4d,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC5C,MAAMxvB,EAAaoR,EAAKqe,YAClBC,EAAyBte,EAAKqe,YAAYE,eAAgBt9B,EAAS+e,MAAAA,GAAqB,QAAjB4d,EAAJ5d,EAAMwe,uBAAe,IAAAZ,OAAA,EAArBA,EAAuBzlB,WAC1F,GAEN,OACI/d,EAAAA,cAACyhB,EAAAA,GAAK,CACFL,QAA8C,QAAvCqiB,EAAkB,QAAlBC,EAAE9d,EAAKqe,mBAAW,IAAAP,OAAA,EAAhBA,EAAkBS,eAAet8B,YAAI,IAAA47B,EAAAA,EAAI,QAClDr/B,eAAgByC,EAAQiB,cAAc1D,eACtCY,IAAqB,QAAlB2+B,EAAE/d,EAAKqe,mBAAW,IAAAN,OAAA,EAAhBA,EAAkBQ,eAAet8B,KACtCwZ,IAAqD,QAAlDuiB,EAAkB,QAAlBC,EAAEje,EAAKqe,mBAAW,IAAAJ,OAAA,EAAhBA,EAAkBM,eAAervB,uBAAe,IAAA8uB,EAAAA,EAAI,GACzDtiB,YAKK,QALMwiB,GACPxG,EAAAA,EAAAA,qBACoB,QADDyG,EACfne,EAAKqe,mBAAW,IAAAF,OAAA,EAAhBA,EAAkBI,eAAevjB,OACjC/Z,EAAQiB,cAAc1D,eAAeoP,YAClB,QAD6BwwB,EAChDn9B,EAAQC,QAAQiD,WAAG,IAAAi6B,GAAQ,QAARA,EAAnBA,EAAqB1gC,cAAM,IAAA0gC,OAAA,EAA3BA,EAA6BzG,yBAChC,IAAAuG,EAAAA,EAAI,GAETz/B,aAAcwC,EAAQC,QAAQzC,aAC9BC,cAAeA,MAAAA,EAAAA,EAAiB++B,EAChCv+B,oBAAoB,QACpBvD,QAASsgC,GAA0BuB,EAAe5uB,GAClDpT,UAAWygC,EAAyB,eAAiB,SAO7E,OAAO7hC,EAAAA,cAAA,OAAKoB,UAAU,wCAIpB8iC,EAA2BA,CAACG,EAA+Bx9B,EAAuB4zB,KACpF,MAAMjmB,GAAasb,EAAAA,EAAAA,mBAAkBuU,EAAgBx9B,EAAQiB,mBAAe/D,GAC5E,IAAKgV,EAAAA,iBAAiBC,mBAAmBxE,SAA6BzQ,IAAd02B,EAAyB,CAC7E,MAAMxK,EAAU,IAAI1c,IAAIiB,EAAYhM,OAAOiR,SAAS9V,MAEpD,OADAssB,EAAQ9W,aAAakO,IAAI,YAAa,GAAGoT,MAAAA,EAAAA,EAAa,KAC/CxK,EAAQtsB,KAEnB,OAAO6Q,GAGL2tB,EAAoB7hC,IACtB,MAAM,KAAE8c,GAAS9c,EACjB,MAAO,GAAG8c,2BC7NP,MAAMknB,EAAiFtyB,IAAmC,IAAlC,UAAE5Q,EAAS,UAAEmjC,EAAS,KAAEC,GAAMxyB,EACzH,OAAQuyB,GACJ,IAAK,QACD,OAAOvkC,EAAAA,cAAA,KAAGoB,UAAW8I,GAAAA,CAAW,sCAAuC9I,IAAaojC,GACxF,IAAK,SACD,OAAOxkC,EAAAA,cAAA,KAAGoB,UAAW8I,GAAAA,CAAW,uCAAwC9I,IAAaojC,GACzF,IAAK,UACL,QACI,OAAOxkC,EAAAA,cAAA,KAAGoB,UAAU,yCAAyCojC,mMCfzE,MAAMC,EAAgEzkC,IAAAA,YA4DtE,EAtC6EM,IACzE,MAAMokC,EAAkB1kC,IAAAA,aAAkB,QAEvC,KACI2kC,EAAiCC,IAAkCpvB,EAAAA,EAAAA,WAAS,GAC7EqvB,EAAsB7kC,IAAAA,aAAkB,KAC1C4kC,GAA+B,KAChC,IAEH,OACI5kC,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,UACIoB,UAAU,6DACVC,MAAM,UACNE,QAASsjC,EACTrjC,IAAKijC,EAAyB,aAClBnkC,EAAMwkC,yBAEjBxkC,EAAMwkC,yBAEX9kC,IAAAA,cAAC+kC,EAAAA,wBAAuB,CACpB3jC,UAAU,iCACV4jC,UAAWL,EACXM,gBAAgB,EAChBC,aAAcN,EACd/9B,QAASvG,EAAMuG,QACf/E,GAAIxB,EAAMwB,GACVtB,KAAM,GACN0E,SAAU5E,EAAM4E,SAChB29B,cAAeviC,EAAM6kC,mCACrBC,SAAUV,EACVW,UAAW/kC,EAAMglC,uBACjBrjC,iBAAkBwiC,2kBCVlC,IAAMc,EAAN,cAAgCvlC,EAAAA,UAC5BC,YAAYK,GACRwC,MAAMxC,GAmIO,KAAAklC,yCAA2C,KACxD,IAAI1C,GAAsC,EACP,IAAD1O,EAA9Bh0B,KAAKE,MAAME,KAAKk2B,eAChBoM,GACuC,QAAnC1O,EAAAh0B,KAAKE,MAAME,KAAKk2B,aAAah2B,cAAM,IAAA0zB,GAElC,QAFkCA,EAAnCA,EAAqCrgB,MACjC4iB,GAA4B,2DAAjBA,EAAQ9uB,cACtB,IAAAusB,OAAA,EAFDA,EAEGwC,aAAa,GAExB,OAAOkM,GAgDM,KAAA2C,WAAa,KAC1BrlC,KAAKuP,SAAS,CACVvD,QAAQ,KAIC,KAAAs5B,YAAcjoB,UAC3BjV,OAAOiR,SAASksB,UAGH,KAAAC,+BAAkCC,IAC/C,MAAM,QAAEh/B,EAAO,KAAErG,EAAI,UAAEgC,EAAS,UAAE5B,GAAcR,KAAKE,OAC/C,eAAEwlC,GAAmBtlC,EAE3B,GAAIqG,GAAWA,EAAQiB,cAAe,CAElC,GADkBjB,EAAQC,QAAQ8B,KAAK2rB,iBAAmB1tB,EAAQC,QAAQ8B,KAAKm9B,OAC9DD,EAAeplC,QAAUolC,EAAeplC,OAAO,IAAMmlC,EAAe,CACjF,MAAMnE,EAAgBoE,EAAeplC,OAAOqT,MAAKoM,GAAKA,EAAE6lB,YAAYpb,KAAOib,IACvEnE,GACAuE,EAAAA,EAAAA,aAAY,CAAE9nB,cAAetX,EAAQiB,eAAiB45B,EAAcsE,aAC/D5nB,OACA9b,OAAOC,IACJC,EAAU8nB,QAAQ,0DAClB9nB,EAAUD,MAAMA,GAChBnC,KAAKuP,SAAS,CACV4xB,QAASsE,EACTK,oBAAqBtlC,EAAUulC,8BAC/BhD,gBAAiB,SACjBiD,aAAc,8BACdh6B,QAAQ,OAGfgS,KAAKhe,KAAKslC,aACVpjC,OAAOC,IACJC,EAAU8nB,QAAQ,0DAClB9nB,EAAUD,MAAMA,MAGxBC,EAAU8nB,QAAQ,4FAGtB9nB,EAAU8nB,QAAQ,4DAnO1BlqB,KAAK6G,MAAQ,CACTs6B,QAAS,GACT0B,YAAa,GACbiD,oBAAqB,GACrB/C,gBAAiB,UACjBiD,aAAc,eACdh6B,QAAQ,GAIT,0BACHhM,KAAKuP,SAAS,IAGXmX,sBACHC,EACAC,GAEA,OAAI5mB,KAAK6G,QAAU+f,GAAa5mB,KAAKE,MAAME,OAASumB,EAAUvmB,KAM3DD,SAAM,IAAA8lC,EAAAC,EACT,MAAM,UAAEllC,EAAS,QAAEmlC,GAAYnmC,KAAKE,MAAMgD,QACpC,uBAAEkjC,EAAsB,4BAAEC,GAAgCrmC,KAAKE,MAAMM,WACrE,eAAEklC,GAAmB1lC,KAAKE,MAAME,KAChCkmC,EAAqBZ,GAAkBA,EAAeplC,OACtDimC,EAAwC,QAAhBN,EAAGE,MAAAA,OAAO,EAAPA,EAAS/B,YAAI,IAAA6B,EAAAA,EAAIjmC,KAAKE,MAAMM,UAAUgmC,uBAEvE,GAA8B,YAA1Bd,EAAezhB,OAAsB,CAAC,IAADwiB,EACrC,MAAMC,EAAUj8B,EAAAA,EAAA,GACRzK,KAAKE,OAAyD,IAClEilC,kBAAmB,CACf15B,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAW,oBAAqB9I,IAE/CijB,OAAQ,UACR0iB,cAAe/mC,EAAAA,cAACgnC,EAAAA,EAAO,CAAC5lC,UAAU,oBAAoB6lC,IAAK7mC,KAAKE,MAAMM,UAAUsmC,2BAChFX,QACIvmC,EAAAA,cAACmnC,EAAAA,QAAO,CAAC/lC,UAAU,6BAA6B0K,IAAiB,QAAd+6B,EAAEN,MAAAA,OAAO,EAAPA,EAASz6B,WAAG,IAAA+6B,EAAAA,EAAA,KAAmBrC,KAAMmC,MAGlG,OAAOvmC,KAAKE,MAAMmN,WAAWq5B,GAGjC,GAAIJ,GAAoD,IAA9BA,EAAmB7kC,OAAc,CAAC,IAADulC,EAEvD,MAAMC,EAAcx8B,EAAAA,EAAA,GACZzK,KAAKE,OAAyD,IAClEilC,kBAAmB,CACf15B,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAW,oBAAqB9I,IAE/CijB,OAAQ,QACR0iB,cAAe/mC,EAAAA,cAACskC,EAAAA,EAA8B,CAACC,UAAU,QAAQC,KAAMgC,IACvEc,0BACItnC,EAAAA,cAACunC,EAAgC,CAC7B1gC,QAASzG,KAAKE,MAAMuG,QACpB/E,GAAI1B,KAAKE,MAAMwB,GACfoD,SAAU9E,KAAKE,MAAM4E,SACrB1E,KAAM,GACNskC,wBAAyB2B,EACzBnB,uBAAwBllC,KAAKslC,YAC7BP,mCAAoC/kC,KAAKonC,0CAA0CpnC,KAAKE,MAAMM,aAGtG2lC,QACIvmC,EAAAA,cAACmnC,EAAAA,QAAO,CAAC/lC,UAAU,6BAA6B0K,IAAiB,QAAds7B,EAAEb,MAAAA,OAAO,EAAPA,EAASz6B,WAAG,IAAAs7B,EAAAA,EAAA,KAAmB5C,KAAMmC,MAIlG,OAAOvmC,KAAKE,MAAMmN,WAAW45B,GAGjC,MAAMz8B,EAASC,EAAAA,EAAA,GACPzK,KAAKE,OAAyD,IAClEilC,kBAAmB,CACf15B,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAW,oBAAqB9I,IAE/CijB,OAAQ,UACRkiB,QAASvmC,EAAAA,cAACmnC,EAAAA,QAAO,CAAC/lC,UAAU,6BAA6B0K,IAAiB,QAAdw6B,EAAEC,MAAAA,OAAO,EAAPA,EAASz6B,WAAG,IAAAw6B,EAAAA,EAAA,KAAmB9B,KAAMmC,IACnGW,0BACItnC,EAAAA,cAACunC,EAAgC,CAC7B1gC,QAASzG,KAAKE,MAAMuG,QACpB/E,GAAI1B,KAAKE,MAAMwB,GACfoD,SAAU9E,KAAKE,MAAM4E,SACrB1E,KAAM,GACNskC,wBAAyB2B,EACzBnB,uBAAwBllC,KAAKslC,YAC7BP,mCAAoC/kC,KAAKonC,0CAA0CpnC,KAAKE,MAAMM,aAGtG6mC,4BAA6BrnC,KAAK6G,MAAMmF,QAAUhM,KAAK6G,MAAMi/B,qBACzDlmC,EAAAA,cAAA,OAAKoB,UAAU,sCACXpB,EAAAA,cAACkjC,EAAAA,MAAK,CAAC7hC,MAAOjB,KAAK6G,MAAMk8B,gBAAiB/2B,OAAQhM,KAAK6G,MAAMmF,OAAQE,OAAQlM,KAAKqlC,YAC9EzlC,EAAAA,cAAA,YAAOI,KAAK6G,MAAMi/B,uBAI9BwB,eAAgB,CACZtmC,UAAW,+BACX0K,IAAK,MAET67B,cAAe,CACXvmC,UAAW,0BACX0K,IAAK,MAETg6B,eAAgBY,GAAsBtmC,KAAKwnC,yBAAyBlB,KAGxE,OAAOtmC,KAAKE,MAAMmN,WAAW7C,GAGzB48B,0CAA0C5mC,GAC9C,MAAO,CACHinC,yBAA0BjnC,EAAUknC,0BACpCC,wBAAyBnnC,EAAUonC,mBACnCC,2BAA4BrnC,EAAUqnC,2BACtCC,yBAA0BtnC,EAAUunC,+BAEpCC,yBAA0BxnC,EAAUwnC,yBAEpCC,yBAA0BznC,EAAU0nC,8BACpCC,+BAAgC3nC,EAAU4nC,0CAe1CZ,yBAAyB9B,GAC7B,MAAM,QAAEj/B,EAAO,UAAErE,GAAcpC,KAAKE,OAC9B,cAAEgE,EAAa,uBAAEu9B,GAA2BzhC,KAAKE,MAAMgD,OAC7D,OAAOwiC,EAAej2B,KAAI,CAAC6xB,EAA8B3xB,KACrD,MAAM04B,EAAkD,CACpD7G,mBAAoBxhC,KAAK6G,MACzB2jB,GAAI8W,EAAcsE,YAAYpb,GAC9BxN,KAAMskB,EAAcsE,YAAYn+B,KAChC65B,cAAAA,EACA76B,QAAAA,EACAvC,cAAAA,EACAu9B,uBAAAA,EACAF,gCAAiC,SACjCiB,aAAcxiC,KAAKE,MAAMM,UAAU8nC,mBACnC34B,MAAAA,EACAwxB,QAASG,EAAcsE,YAAYpb,GACnCpoB,UAAAA,EACAof,SAAUxhB,KAAKE,MAAMwB,GACrB6f,eAAgBvhB,KAAKE,MAAM4E,SAC3Bo8B,SAAU,CACND,sBAAuBjhC,KAAKwlC,+BAC5B9D,UAAW1hC,KAAKqlC,YAEpB7kC,UAAW,CACP+nC,sBAAuBvoC,KAAKE,MAAMM,UAAU+nC,sBAC5CC,wBAAyBxoC,KAAKE,MAAMM,UAAUgoC,wBAC9CC,wBAAyBzoC,KAAKE,MAAMM,UAAUioC,wBAC9CC,wBAAyB1oC,KAAKE,MAAMM,UAAUkoC,wBAC9CC,0BAA2B3oC,KAAKE,MAAMM,UAAUmoC,0BAChDC,gCAAiC,CAC7BC,mBAAoB7oC,KAAKE,MAAMM,UAAUqoC,mBACzCC,6BAA8B9oC,KAAKE,MAAMM,UAAUsoC,6BACnDC,mCAAoC/oC,KAAKE,MAAMM,UAAUuoC,mCACzDC,mCAAoChpC,KAAKE,MAAMM,UAAUwoC,mCACzDC,sCAAuCjpC,KAAKE,MAAMM,UAAUyoC,sCAC5DC,kCAAmClpC,KAAKE,MAAMM,UAAU0oC,oCAGhExG,oCAAqC1iC,KAAKolC,4CAG9C,OAAO/D,EAAAA,EAAAA,GAAoBgH,QAzLjClD,GAAiB5iC,EAAAA,EAAAA,IAAA,CADtBC,EAAAA,IACK2iC,GA4ON,8HCtRO,MAAMgE,EAA+DjpC,IACxE,MAAM,kBACFilC,EAAiB,OACjBlhB,EAAM,cACN0iB,EAAa,QACbR,EAAO,eACPmB,EAAc,eACd5B,EAAc,cACd6B,EAAa,0BACbL,EAAyB,4BACzBG,GACAnnC,EAEJ,OACIN,EAAAA,cAAC+Q,EAAAA,OAAMpP,OAAA+B,OAAA,GAAK6hC,GACPgB,EACW,YAAXliB,GAAwB0iB,EACzB/mC,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAU,IACXkmC,EACAG,GAEJC,GAAkB5B,GAAkBA,EAAejkC,OAAS,GACzD7B,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKgkC,GACL5B,GACGA,EAAej2B,KAAI6xB,GACR8H,EAAqB9H,EAAeiG,QAQjE6B,EAAuBA,CAAC9H,EAA8CiG,KACxE,MAAM,IAAE3iC,EAAG,gBAAEy9B,EAAe,mBAAEV,EAAkB,2BAAEiB,EAA0B,aAAED,EAAY,kBAAEX,GAAsBV,EAClH,OACI1hC,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,CAACsB,IAAKA,EAAK5D,UAAWumC,EAAevmC,WAAeumC,GACpDvF,EACAL,EACAU,EACAM,EACAC,IAKb,8DClDA,QAAgB1iC,GACZN,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKoB,UAAW,GAAGd,EAAMc,8BACxBd,MAAAA,OAAK,EAALA,EAAO2mC,MAAOjnC,EAAAA,cAAA,OAAKoB,UAAW,GAAGd,EAAMc,2BAA4Bd,MAAAA,OAAK,EAALA,EAAO2mC,sEC4D9EwC,k1BAAL,SAAKA,GACDA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,+CACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,qBANJ,CAAKA,IAAAA,EAAO,KAyBL,MAAMC,UAA0B1pC,IAAAA,UAwBnCC,YAAYK,GACRwC,MAAMxC,GAxBH,KAAA2G,MAAiC,CACpCmF,QAAQ,EACRu9B,MAAO,GACPxe,SAAU,GACVye,gBAAiB,GACjBliB,QAAS+hB,EAAQI,OACjBC,gBAAiB,KACjBC,kBAAmB,GAGhB,KAAA1G,qBAAuC,CAC1C9+B,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnC2+B,GAAI,CAAE7+B,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCE,UAAU,GAGP,KAAAmlC,gBAAqDhqC,IAAAA,YAE3C,KAAAiqC,iBAAuDjqC,IAAAA,YAwEvD,KAAAkqC,kBAAoB,KACjC,MACItpC,WAAW,sBAAEupC,EAAqB,2BAAEC,EAA0B,uBAAEC,IAChEjqC,KAAKE,MAET,OACIN,IAAAA,cAAA,QACIoB,UAAU,wCAAuC,aACrC+oC,EACZ/sB,KAAK,mCACLjN,KAAK,OACLm6B,aAAa,MACbtlB,SAAU5kB,KAAKmqC,iBAEdnqC,KAAK6G,MAAM2iC,iBAAmB/oC,EAAAA,gBAAgBC,YAAYV,KAAK6G,MAAM2iC,kBAClE5pC,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,SAAOoB,UAAW,2CAA4CopC,QAAS,6CAClEH,GAELrqC,IAAAA,cAAA,UACI8B,GAAG,6CACHV,UAAU,kFACV6jB,SAAU7kB,KAAKqqC,2BAEdrqC,KAAKsqC,qBAIlB1qC,IAAAA,cAAA,OAAKoB,UAAU,qEACXpB,IAAAA,cAAA,SACI2qC,KAAK,OACLC,WAAS,eACGR,EACZhpC,UAAU,0DACV8jB,YAAaklB,EACbjkC,MAAO/F,KAAK6G,MAAM0iC,MAClB1kB,SAAU7kB,KAAKyqC,eACfrpC,IAAKpB,KAAK4pC,gBACVc,UAAW,MAEf9qC,IAAAA,cAAA,UAAQoB,UAAU,0CAAyC,aAAa+oC,EAAuB9oC,MAAM,eAMpG,KAAAkpC,gBAAmBxkC,IAChCA,EAAM4e,iBAEN,MAAMglB,EAAQoB,GAAAA,CAAI3qC,KAAM,gCAAiC,MAEpDupC,IAILvpC,KAAKuP,SAAS,CACV+X,QAAS+hB,EAAQuB,UAGrB5qC,KAAK6qC,kBAAkBtB,GAClBvrB,MAAK1d,IACoB,IAAlBA,EAAOmB,OACPzB,KAAKuP,SAAS,CACVwb,SAAUzqB,EACVgnB,QAAS+hB,EAAQyB,WAGrB9qC,KAAKuP,SAAS,CACVwb,SAAUzqB,EACVgnB,QAAS+hB,EAAQ0B,iBAI5B7oC,OAAMC,IACHnC,KAAKuP,SAAS,CACV+X,QAAS+hB,EAAQpY,aAKhB,KAAA+Z,yBAA4BrlC,IACzC3F,KAAKuP,SAAS,CACV07B,kBAAmBtlC,EAAMlC,OAAOsC,SAIvB,KAAAmlC,cAAgB7tB,MAAAA,IAC7B,MAAM,cACF3V,EACAhB,SACI0M,aAAa,UAAE+3B,KAEnBnrC,KAAKE,MAAMuG,QACT2kC,EAAgB,IAAIC,EAAAA,qBAAqBx4B,EAAQyB,SAAU62B,EAAW,QAAIxnC,EAAW3D,KAAKE,MAAMuG,QAAQC,SACxG4kC,QAAuBC,EAAAA,EAAAA,oBAAmBH,EAAe1jC,GAE/D,IAAK4jC,EAED,OADAtrC,KAAKE,MAAMuG,QAAQrE,UAAUD,MAAM,oCAC5BH,QAAQC,QAAQ,IAG3B,MAAMupC,QAAmBxrC,KAAKyrC,sBAAsB54B,GAQpD,OANA7S,KAAKuP,SAAS,CACVm8B,0BAA2BF,EAC3BlkB,QAAS+hB,EAAQsC,qBACjBjC,gBAAiB4B,IAGdE,GAGM,KAAAf,eAAkB9kC,IAC/B3F,KAAKuP,SAAS,CACVg6B,MAAO5jC,EAAMlC,OAAOsC,SAIX,KAAA6lC,0BAA4B,KACzC5rC,KAAKuP,SAAS,CACV+X,QAAS+hB,EAAQ0B,eAIR,KAAAc,qBAAwB7uB,IACrC,MAAM8uB,EAAa9uB,GAAQ+uB,SAAS/uB,EAAKhF,QAAQ,IAAIg0B,OAAOhsC,KAAK6G,MAAM0iC,MAAO,KAAM,oBAEpF,OACI3pC,IAAAA,cAAA,OACIoB,UAAU,0CAEVirC,wBAAyB,CAAEC,OAAQJ,GAAc,OAK5C,KAAAK,iBAAmB,IACzBnsC,KAAKE,MAAMM,UAAU4rC,0BACvBp0B,QAAQ,UAAWhY,KAAK6G,MAAMkkB,SAAStpB,OAAOwX,YAC9CjB,QAAQ,YAAa,GAAGhY,KAAKE,MAAMM,UAAU6rC,4BAA4BrsC,KAAK6G,MAAMkkB,SAAStpB,OAAS,EAAI,IAAM,MAuExG,KAAA6qC,0BAA4BjvB,MAAAA,IACzC,MAAM,gBACFkvB,EACA9lC,SAAS,cAAEiB,GAAe,oCAC1Bg7B,GACA1iC,KAAKE,MACHm6B,EAAYr6B,KAAK6G,MAAM8iC,kBACvBpe,EAAQmX,EACR,IAAI8J,EAAAA,4BACAD,EACArpC,EAAO2P,QAAQyB,SACfpR,EAAO+nB,SACP/nB,EAAO2P,QAAQ4P,sBAAwB,KACvCigB,EACArI,GAEJ,IAAImS,EAAAA,4BACAD,EACArpC,EAAO2P,QAAQyB,SACfpR,EAAO+nB,SACP/nB,EAAO2P,QAAQ4P,sBAAwB,MAE3CniB,QAAemsC,EAAAA,EAAAA,wBAAuBlhB,EAAO7jB,GAOnD,OANA1H,KAAKuP,SAAS,CACVvD,QAAQ,EACR0gC,YAAY,IAGhBtkC,OAAOiR,SAASksB,SACTjlC,GAuCM,KAAA+pC,0BAA6B1kC,IAC1C3F,KAAKuP,SAAS,CACVo6B,kBAAmB3mB,OAAO2pB,SAAShnC,EAAMlC,OAAOsC,MAAO,OAgD9C,KAAA6mC,oBAAsB,KACnC,GAAI5sC,KAAK6G,MAAMmF,OAAQ,CACnB,MAAMrJ,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS5C,KAAKE,MAAM2C,iBAAmB,uBAAwB,KAChG8K,EAAAA,EAAAA,kBAAiB3N,KAAKE,MAAM2C,iBAAmBF,EAAS,wBACxD3C,KAAK6sC,eACL7sC,KAAK6pC,iBAAiBiD,QAASC,QAGnC/sC,KAAKuP,SAAS,CACVvD,QAAShM,KAAK6G,MAAMmF,OACpBsb,QAAS+hB,EAAQI,SAGjBzpC,KAAK6G,MAAM6lC,aACXtkC,OAAOiR,SAASksB,SAChBvlC,KAAKuP,SAAS,CACVm9B,YAAY,MA1ZjBM,sBAAmB,IAAAC,EACM,QAA5BA,EAAAjtC,KAAK4pC,gBAAgBkD,eAAO,IAAAG,GAA5BA,EAA8BF,QAG3B7kC,oBACHlI,KAAK6sC,eAGFK,uBAAoB,IAAAC,EACK,QAA5BA,EAAAntC,KAAK4pC,gBAAgBkD,eAAO,IAAAK,GAA5BA,EAA8BJ,QAGxB,oBACN,OAAO/sC,KAAK6G,MAAMygB,UAAY+hB,EAAQsC,qBAGnCjlB,sBAAsBC,EAAoCC,GAC7D,OAAI5mB,KAAK6G,QAAU+f,GAAa5mB,KAAKE,QAAUymB,EAM5CxmB,SACH,MACIK,WAAW,qBAAE4sC,EAAoB,kBAAEC,IACnCrtC,KAAKE,MAEHotC,EAAU7iC,EAAAA,EAAA,GACTzK,KAAKE,OAAK,IACbc,UAAW,2BACXkL,OAAQlM,KAAK4sC,oBACb5gC,OAAQhM,KAAK6G,MAAMmF,OACnBxI,UAAW4pC,IAGf,OACIxtC,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAACmM,EAAAA,MAAKxK,OAAA+B,OAAA,GAAKgqC,GACP1tC,IAAAA,cAACwM,EAAAA,YAAW,CAACF,OAAQlM,KAAK4sC,qBACrB5sC,KAAKutC,eACF3tC,IAAAA,cAAA,UACI2qC,KAAK,SACLvpC,UAAU,yBAAwB,aACtBqsC,EACZlsC,QAASnB,KAAK4rC,4BAGrBwB,GAEJptC,KAAKwtC,kBAEV5tC,IAAAA,cAAA,UACI2qC,KAAK,SACLvpC,UAAU,2CAA0C,aACxCosC,EACZjsC,QAASnB,KAAK4sC,oBACdxrC,IAAKpB,KAAK6pC,kBAEVjqC,IAAAA,cAAA,aACCwtC,IAoJTI,iBACJ,OAAQxtC,KAAK6G,MAAMygB,SACf,KAAK+hB,EAAQsC,qBACT,MAAM,gBAAEjC,EAAe,0BAAEgC,GAA8B1rC,KAAK6G,MACtD2D,EAASC,EAAAA,EAAA,GACRzK,KAAKE,OAAK,IACbgE,cAAelE,KAAKE,MAAMgE,eAAiBlE,KAAKijC,qBAChDpwB,QAAS62B,EACT8B,WAAYE,EACZ+B,qBAAsBztC,KAAKssC,0BAC3BoB,wBAAyB1tC,KAAKgrC,yBAC9B2C,oBAAqB3tC,KAAK6rC,qBAC1B+B,WAAY5tC,KAAK8pC,sBAGrB,OAAOlqC,IAAAA,cAAC+rC,EAAoBpqC,OAAA+B,OAAA,GAAKkH,IAErC,KAAK6+B,EAAQ0B,YACT,MAAM8C,EAAYpjC,EAAAA,EAAA,GACXzK,KAAKE,OAAK,IACbgE,cAAelE,KAAKE,MAAMgE,eAAiBlE,KAAKijC,qBAChD6K,aAAc9tC,KAAKkrC,cACnBngB,SAAU/qB,KAAK6G,MAAMkkB,SACrB4iB,oBAAqB3tC,KAAK6rC,qBAC1B+B,WAAY5tC,KAAK8pC,oBACjBiE,sBAAuB/tC,KAAKmsC,mBAGhC,OACIvsC,IAAAA,cAAC0M,EAAAA,UAAS,KACN1M,IAAAA,cAACmrC,EAAWxpC,OAAA+B,OAAA,GAAKuqC,KAI7B,KAAKxE,EAAQuB,QACT,OACIhrC,IAAAA,cAAC0M,EAAAA,UAAS,KACLtM,KAAK8pC,oBACNlqC,IAAAA,cAACgnC,EAAAA,EAAO,CAAC5lC,UAAU,2BAA2B6lC,IAAK7mC,KAAKE,MAAMM,UAAUsmC,4BAIpF,KAAKuC,EAAQyB,SACT,MAAM,0BAAEkD,EAAyB,+BAAEC,GAAmCjuC,KAAKE,MAAMM,UAEjF,OACIZ,IAAAA,cAAC0M,EAAAA,UAAS,KACN1M,IAAAA,cAAA,KAAGoB,UAAU,iDAAiDhB,KAAKmsC,oBAClEnsC,KAAK8pC,oBACNlqC,IAAAA,cAACsuC,EAAiB,CAAC/rC,MAAO6rC,EAA2BnH,IAAKoH,KAItE,KAAK5E,EAAQpY,MACT,OACIrxB,IAAAA,cAAC0M,EAAAA,UAAS,KACLtM,KAAK8pC,oBACNlqC,IAAAA,cAAA,OAAKoB,UAAU,mBAAkB,YAAW,aACvChB,KAAKE,MAAMM,UAAU2tC,qBAKtC,QACI,OAAOvuC,IAAAA,cAAC0M,EAAAA,UAAS,KAAEtM,KAAK8pC,sBAwC5B+C,eACJ,MAAM,oCAAEnK,EAAmC,SAAEzS,GAAajwB,KAAKE,MAGzDspC,EAAkB9G,GAAuCzS,EAAWA,EAAW,GAG/EoK,GAAY+T,EAAAA,EAAAA,IAAapuC,KAAKE,MAAMuG,QAAQC,UAClD4zB,EAAAA,EAAAA,mBAAkBD,GAElBr6B,KAAKuP,SAAS,CACVi6B,gBAAiBA,EACjBG,kBAAmBtP,IAInBiQ,mBACJ,MAAM,gBAAEd,EAAe,kBAAEG,GAAsB3pC,KAAK6G,MACpD,OAAI2iC,GAAmB/oC,EAAAA,gBAAgBC,YAAY8oC,GACxCA,EAAgB/5B,KAAK4+B,IAExB,MAAMC,EAAaD,EAAe/5B,WAAaq1B,EAC/C,OACI/pC,IAAAA,cAAA,UAAQmG,MAAOsoC,EAAe/5B,SAAU1P,IAAKypC,EAAe/5B,SAAUi6B,SAAUD,EAAU,gBAAiBA,GACtGD,EAAe5mC,SAKzB,GASHojC,kBAAkB2D,GACtB,MACI/nC,SAAS,cACLiB,EACAhB,SACI0M,aAAa,UAAE+3B,MAGvBnrC,KAAKE,OACH,kBAAEypC,GAAsB3pC,KAAK6G,MAC7B4nC,EAA6C,GAcnD,OAZAA,EAAoBC,QAAU,CAC1BC,UAAWxD,EACXxtB,UAAWgsB,GAMX8E,EAAoBG,mBAAoB,EAE5CH,EAAoBI,gBAAkBL,GAE/BM,EAAAA,EAAAA,uBAAsB,CAAE/wB,cAAerW,GAAiB+mC,GAG3D,4BAA4B57B,GAChC,MACIpM,SAAS,cACLiB,EACAhB,SACI0M,aAAa,UAAE+3B,MAGvBnrC,KAAKE,MACHwB,EAAKmR,EAAQgN,gBAAkBhN,EAAQgN,gBAAkBhN,EAAQyB,SAEvE,OAAOy6B,EAAAA,EAAAA,iCACH,IAAIC,EAAAA,qCAAqCttC,EAAIypC,EAAW,GAAInrC,KAAKE,MAAMuG,QAAQC,SAC/EgB,KA1XEnF,EAAAA,EAAAA,IAAA,CAAT+N,EAAAA,IAAQ,kCC/FN,MAAM2+B,UAAiBrvC,EAAAA,cAG1BC,YAAYK,EAAuB2G,GAC/BnE,MAAMxC,GAHO,KAAAgvC,WAAiDtvC,EAAAA,YA2CjD,KAAAuvC,WAAcxpC,IAC3B3F,KAAKuP,SAAS,CAAE6/B,cAAezpC,EAAMlC,OAAOsC,QAExC/F,KAAKE,MAAM2kB,UACX7kB,KAAKE,MAAM2kB,SAAS,CAChBwqB,WAAYrvC,KAAKE,MAAMmvC,WACvBC,SAAU3pC,EAAMlC,OAAOsC,MACvBwpC,cAAe5pC,EAAMlC,OAAO+rC,aA9CpCxvC,KAAK6G,MAAQ,CACTuoC,cAAe,IAIhBlnC,oBACClI,KAAKkvC,WAAWpC,UAChB9sC,KAAKkvC,WAAWpC,QAAQsC,cAAgB,GAIzCjvC,SACH,MAAM,WAAEkvC,EAAU,aAAEI,EAAY,aAAEC,GAAiB1vC,KAAKE,MAExD,OACIN,EAAAA,cAAA,UACI8B,GAAI,uBAAuB2tC,IAC3BjuC,IAAKpB,KAAKkvC,WAAU,aACRQ,EACZ1uC,UAAU,uBACV6jB,SAAU7kB,KAAKmvC,YAEdM,EAAahgC,KACTyE,GACGA,GACItU,EAAAA,cAAA,UACImG,MAAOmO,EAAKxS,GACZkD,IAAKsP,EAAKxS,GACV6sC,UAAWvuC,KAAK6G,MAAMuoC,gBAAmBl7B,EAAKxS,GAAE,iBAChC1B,KAAK6G,MAAMuoC,gBAAmBl7B,EAAKxS,IAElDwS,EAAKnO,WCrE/B,MAAMmoC,EAAqBhuC,GAC9BN,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,OAAKoB,UAAU,8CACfpB,EAAAA,cAAA,OAAKoB,UAAU,4CAA4Cd,EAAMiC,OACjEvC,EAAAA,cAAA,OAAKoB,UAAU,iEAAiEd,EAAM2mC,oBCqB9F,IAAqB8I,EAArB,cAAmD/vC,EAAAA,cAS/CC,YAAYK,GACRwC,MAAMxC,GAHO,KAAA0vC,SAA8ChwC,EAAAA,YA2G9C,KAAAiwC,aAAe,KAC5B,MAAMC,OAA8BnsC,IAAnB3D,KAAKE,MAAM6vC,IAAoB,EAAI/vC,KAAKE,MAAM6vC,IAE3DC,MAAMhwC,KAAK6G,MAAMopC,eAAiBjwC,KAAK6G,MAAMopC,aAAeH,EAC5D9vC,KAAKE,MAAM2kB,UAAY7kB,KAAKE,MAAM2kB,SAASirB,GAE3C9vC,KAAKE,MAAM2kB,UAAY7kB,KAAKE,MAAM2kB,SAAS7kB,KAAK6G,MAAMopC,eA7G1DjwC,KAAK6G,MAAQ,CAAEopC,aAAc/vC,EAAMy+B,cAAgB,GACnD3+B,KAAKkwC,cAAgBlwC,KAAKkwC,cAAchqC,KAAKlG,OAE7CsI,EAAAA,EAAAA,KACI,IAAMtI,KAAKE,MAAMy+B,eACjB,KACI3+B,KAAKuP,SAAS,CAAE0gC,aAAcjwC,KAAKE,MAAMy+B,cAAgB,OAK9Dx+B,SACH,MAAMgwC,EAA8B,GAAGnwC,KAAKE,MAAMkwC,+CAC5CC,EAA6B,GAAGrwC,KAAKE,MAAMowC,+CAC3CvrB,EAAW/kB,KAAKE,MAAMy+B,eAAiB3+B,KAAKE,MAAM6vC,IAClDQ,EAAcvwC,KAAKE,MAAMy+B,eAAiB3+B,KAAKE,MAAMw+B,IACrD8R,EAAexwC,KAAK6G,MAAMopC,aAChC,IAAIQ,EAAa,GACb1rB,EAEA0rB,EAAa,WACNzwC,KAAKE,MAAM6kB,WAElB0rB,EAAa,cAEjB,MAAMC,EAAoBC,GAAmB,KACzC3wC,KAAK4wC,qBAAqBD,IAG9B,OACI/wC,EAAAA,cAAA,OAAKoB,UAAU,YACXpB,EAAAA,cAAA,UACImlB,SAAU/kB,KAAKE,MAAM6kB,UAAYA,EACjC3f,MAAO2f,EAAW,GAAK/kB,KAAKE,MAAM0+B,yBAClC59B,UAAW,gCAAgCyvC,IAC3CtvC,QAASuvC,GAAkB,GAAE,8BAEjB,GAAG1wC,KAAKE,MAAM0+B,2BAC1BiS,UAAW,EACX5vC,MAAM,aAENrB,EAAAA,cAAA,QAAMoB,UAAWmvC,KAErBvwC,EAAAA,cAAA,SACI2qC,KAAK,SACLvpC,UAAU,iBACV8vC,QAAQ,SACR/qC,MAAOyqC,EACP3rB,SAAU7kB,KAAKkwC,cACfa,OAAQ/wC,KAAK6vC,aAAY,YACf,SAAQ,aACN,GAAG7vC,KAAKE,MAAM24B,yBAC1B9oB,KAAK,aAAY,gBACF,EAAC,gBACD/P,KAAKE,MAAMw+B,IAAG,gBACd8R,EACfpvC,IAAKpB,KAAK4vC,SACV7qB,SAAU/kB,KAAKE,MAAM6kB,WAEzBnlB,EAAAA,cAAA,UACImlB,SAAU/kB,KAAKE,MAAM6kB,UAAYwrB,EACjCnrC,MAAOmrC,EAAc,GAAKvwC,KAAKE,MAAM2+B,yBACrC79B,UAAW,iCAAgCuvC,EAAc,WAAa,IACtEpvC,QAASuvC,EAAiB,GAAE,8BAEhB,GAAG1wC,KAAKE,MAAM2+B,2BAC1BgS,UAAW,EACX5vC,MAAM,aAENrB,EAAAA,cAAA,QAAMoB,UAAWqvC,MAMzBO,qBAAqBD,GACzB,MAAMK,EAAkBhxC,KAAK6G,MAAMopC,aAAeU,EAE9CK,GAAmB,GAAKA,GAAmBhxC,KAAKE,MAAMw+B,KACtD1+B,KAAKE,MAAM2kB,UAAY7kB,KAAKE,MAAM2kB,SAASmsB,GAI3Cd,cAAcj6B,GAClB,MAAMu6B,EAAextB,OAAO2pB,SAAS12B,EAAExS,OAAOsC,MAAO,IAC/C+pC,OAA8BnsC,IAAnB3D,KAAKE,MAAM6vC,IAAoB,EAAI/vC,KAAKE,MAAM6vC,IACzDkB,EACFjxC,KAAK4vC,UAAY5vC,KAAK4vC,SAAS9C,SAAW9sC,KAAK4vC,SAAS9C,mBAAmBoE,kBAAoBlxC,KAAK4vC,SAAS9C,QAE7G0D,EAAexwC,KAAKE,MAAMw+B,IAC1B1+B,KAAKuP,SAAS,CAAE0gC,aAAcjwC,KAAKE,MAAMw+B,MAEzC1+B,KAAKuP,SAAS,CAAE0gC,aAAcO,IAAgB,KAC1CW,GAAAA,EAAS,KACAnB,MAAMhwC,KAAK6G,MAAMopC,eAAmBjwC,KAAK6G,MAAMopC,aAAeH,IAAamB,IAC5EA,EAAap1B,aAAa,gBAAiB20B,EAAav3B,YACxDg4B,EAAap1B,aAAa,QAAS20B,EAAav3B,eAErD,IALHk4B,QAvGExB,EAAAyB,aAAwC,CAClDrB,IAAK,EACLK,oBAAqB,eACrBE,oBAAqB,eAJRX,GAAqBptC,EAAAA,EAAAA,IAAA,CADzCC,EAAAA,IACoBmtC,GA2HpB,+kBCnGM,MAAMhE,UAA6B/rC,IAAAA,UAGtCC,YAAYK,GACRwC,MAAMxC,GAHF,KAAAigB,mBAAyB,GA6LhB,KAAAkxB,oBAAuBC,GACpCtxC,KAAKE,MAAMM,UAAU+wC,sBAAsBv5B,QAAQ,mBAAoBs5B,GAE1D,KAAAE,sBAAwBn0B,MAAAA,IAErCrd,KAAKuP,SAAS,CACVkiC,QAAQ,EACRC,qBAAqB,EACrBC,OAAMlnC,EAAAA,EAAA,GAAOzK,KAAK6G,MAAM8qC,QAAM,IAAEv5B,SAAKzU,MAGzC,MAAMiuC,EAAoB5xC,KAAK6G,MAAM2kC,WAChC/7B,KAAIoiC,GAAaA,EAAUzyB,mBAAmBnG,aAC9ClC,QAAOwzB,IAASvqC,KAAKmgB,mBAAmBoqB,KAE7CvqC,KAAKuP,SAAS,CACVoiC,OAAQ,CAAEE,UAAWD,KAErBA,EAAkBnwC,OAAS,EAC3BzB,KAAKuP,SAAS,CACVkiC,QAAQ,IAKhBzxC,KAAKE,MACAutC,qBAAoBhjC,EAAC,GAAKzK,KAAK6G,QAC/BmX,MAAKiG,IAEEA,EAAO6tB,eACP9xC,KAAKuP,SAAS,CACVkiC,QAAQ,EACRC,qBAAqB,OAIhCxvC,OAAMC,IACH,MAAM,4BAAE4vC,EAA2B,0BAAEC,GAA8BhyC,KAAKE,MAAMM,UAC9E,IAAI4+B,EAGAA,EADqB,wDAArBj9B,EAAMA,MAAM6a,KACG+0B,EAEAC,EAGnBhyC,KAAKuP,SAAS,CACVkiC,QAAQ,EACRE,OAAMlnC,EAAAA,EAAA,GAAOzK,KAAK6G,MAAM8qC,QAAM,IAAEv5B,IAAKgnB,MAEzCp/B,KAAKE,MAAMuG,QAAQrE,UAAUD,MAAM,2CAI9B,KAAA8vC,kBAAqBnU,IAClC99B,KAAKuP,SAAS,CACV0b,SAAU6S,EACV3G,WAAY2G,EAAW99B,KAAKE,MAAM2S,QAAQ8N,SAIjC,KAAAuxB,sBAAwB,CACrCC,EACAC,KAEA,GAAIA,GAAcD,EAAqBE,gBACnC,OAAOF,EAAqBE,gBAAgB1+B,MAAKk+B,GAAaA,EAAUv9B,YAAc89B,KAO7E,KAAAE,oBAAsBj1B,MAAAA,IAAyD,IAAAk1B,EAC5F,MAAM,QAAE1/B,EAAO,WAAE24B,EAAU,QAAE/kC,GAAYzG,KAAKE,OACxC,cACFwH,EACAhB,SACI0M,aAAa,UAAE+3B,KAEnB1kC,EAGE+rC,EAA6C,QAApBD,EAAGvyC,KAAK6G,MAAM8qC,cAAM,IAAAY,GAAW,QAAXA,EAAjBA,EAAmBV,iBAAS,IAAAU,OAAA,EAA5BA,EAA8Bx7B,QAAOrV,GAAMA,IAAO+wC,EAAUpD,WAAWp2B,aAEzGjZ,KAAKuP,SAAS,CACVkiC,QAAQ,EACRC,qBAAqB,EACrBgB,gBAAgB,EAChBf,OAAQ,CAAEv5B,SAAKzU,EAAWkuC,UAAWW,KAIzCxyC,KAAKmgB,mBAAmBsyB,EAAUpD,aAAeoD,EAAUnD,SAE3D,MAAMqD,EAAmBnH,MAAAA,OAAU,EAAVA,EACnB/7B,KAAIoiC,IACK,CACHzyB,mBAAoByyB,EAAUzyB,mBAC9BC,eACIrf,KAAKkyC,sBAAsBL,EAAW7xC,KAAKmgB,mBAAmB0xB,EAAUzyB,sBACxEyyB,EAAUxyB,eACd5D,oBAAqBo2B,EAAUp2B,wBAGtC1E,QAAO86B,GACGA,GAAaA,EAAUxyB,iBAGhCuzB,QAAuBrH,EAAAA,EAAAA,oBACzB,IAAIF,EAAAA,qBACAx4B,EAAQgN,gBAAkBhN,EAAQgN,gBAAkBhN,EAAQyB,SAC5D62B,EACAwH,OACAhvC,EACA3D,KAAKE,MAAMuG,QAAQC,SAEvBgB,GAGJ,IAAKkrC,EAID,YAHA5yC,KAAKE,MAAMuG,QAAQrE,UAAUD,MACzB,gDAAgD0Q,EAAQgN,gBAAkBhN,EAAQgN,gBAAkBhN,EAAQyB,YAKpH,MAAMu+B,EAAiB,IAAI7D,EAAAA,qCACvB4D,EAAet+B,SACf62B,EACAwH,EACA3yC,KAAKE,MAAMuG,QAAQC,SAEjBosC,QAA0B/D,EAAAA,EAAAA,iCAAgC8D,EAAgBnrC,GAEhF,IAAKorC,EAKD,OAJA9yC,KAAKE,MAAMuG,QAAQrE,UAAUD,MAAM,qEACnCnC,KAAKuP,SAAS,CACVmjC,gBAAgB,IAKxB,MAAMK,EAAoB,IAAIC,EAAAA,6CAC1BngC,EAAQgN,gBAAkBhN,EAAQgN,gBAAkBhN,EAAQyB,SAC5D62B,GAIE8H,QAA6BC,EAAAA,EAAAA,4CAA2CH,EAAmBrrC,GAC3FyrC,EAAa,IAAIC,EAAAA,6BAA6BvgC,EAAQyB,SAAU62B,GAChEkI,QAAqBC,EAAAA,EAAAA,4BAA2BH,EAAYzrC,GAElE,IAAK2rC,EAKD,OAJArzC,KAAKE,MAAMuG,QAAQrE,UAAUD,MAAM,gEACnCnC,KAAKuP,SAAS,CACVmjC,gBAAgB,IAKxB1yC,KAAKuP,SAAS,CACVmjC,gBAAgB,EAChBa,yBAA2BN,GAAwBA,EAAqB,SAAOtvC,EAC/E6vC,YAAaH,EAAapxB,WAAapP,EAAQ8N,OAC/C6qB,WAAYsH,EAAkBjhB,MAAK,CAAC4hB,EAAGC,IAAMD,EAAEr0B,mBAAqBs0B,EAAEt0B,qBACtEvM,QAAS+/B,KAIA,KAAAe,iBAAmB,CAACl7B,EAAuBjY,KACxD,OAAQiY,GACJ,KAAK,EACD,OAAOjY,EAAU63B,0BACrB,KAAK,EACD,OAAO73B,EAAU+3B,kCACrB,KAAK,EACD,OAAO/3B,EAAU23B,yBACrB,KAAK,EACD,OAAO33B,EAAUi4B,0BACrB,QACI,MAAO,KA7Wfz4B,KAAK6G,MAAQ,CACTokB,SAAU,EACVuoB,UAAWtzC,EAAM2S,QAAQ8N,MACzBwW,WAAYj3B,EAAM2S,QAAQ8N,MAC1B9N,QAAS3S,EAAM2S,QACf24B,WAAYtrC,EAAMsrC,WAAW3Z,MAAK,CAAC4hB,EAAGC,IAAMD,EAAEr0B,mBAAqBs0B,EAAEt0B,qBACrEe,mBAAoB,GACpBuyB,gBAAgB,EAChBhB,qBAAqB,GAItBhrB,sBAAsBC,EAAuCC,GAChE,OAAI5mB,KAAK6G,QAAU+f,GAAa5mB,KAAKE,QAAUymB,EAM5CxmB,SAAM,IAAA0R,EAAA+hC,EAAAlQ,EAAA/P,EAAAkgB,EACT,MACIptC,SACIiB,eACI1D,gBAAgB,YAAEoP,IAEtB1M,SAAS,aAAEzC,IAEfzD,WAAW,sBACPszC,EAAqB,8BACrBC,EAA6B,yBAC7BnV,EAAwB,yBACxBC,EAAwB,oBACxBmV,EAAmB,kCACnBC,EAAiC,gBACjCC,GACH,cACDhwC,EAAa,oBACbypC,GACA3tC,KAAKE,OACH,eAAEwyC,EAAc,QAAE7/B,EAAO,SAAEoY,EAAQ,UAAEuoB,EAAS,WAAErc,EAAU,oBAAEua,EAAmB,OAAEC,GAAW3xC,KAAK6G,MACjGstC,EAA0Bn0C,KAAKE,MAAMwiC,oCAAsC,0BAA4B,GAC7G,OACI9iC,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAC0M,EAAAA,UAAS,KACLtM,KAAKE,MAAM0tC,WACZhuC,IAAAA,cAAA,OAAKoB,UAAU,4CACXpB,IAAAA,cAAA,OAAKoB,UAAU,8DACXpB,IAAAA,cAAA,OAAKoB,UAAU,8DACXpB,IAAAA,cAACyhB,EAAAA,GAAK,CACFL,QAAqB,QAAdnP,EAAEgB,EAAQpL,YAAI,IAAAoK,EAAAA,EAAI,QACzB7N,eAAgBhE,KAAKE,MAAMuG,QAAQiB,cAAc1D,eACjDid,IAA6B,QAA1B2yB,EAAE/gC,MAAAA,OAAO,EAAPA,EAAS6B,uBAAe,IAAAk/B,EAAAA,EAAI,GACjC1yB,YAKK,QALMwiB,GACPxG,EAAAA,EAAAA,qBACIrqB,MAAAA,OAAO,EAAPA,EAAS2N,OACTpN,EAC8B,QADnBugB,EACX3zB,KAAKE,MAAMuG,QAAQC,QAAQiD,WAAG,IAAAgqB,GAAQ,QAARA,EAA9BA,EAAgCzwB,cAAM,IAAAywB,OAAA,EAAtCA,EAAwCwJ,yBAC3C,IAAAuG,EAAAA,EAAI,GAET1iC,UAAU,YACVkD,cAAeA,EACfD,aAAcA,EACdS,oBAAoB,UAExB9E,IAAAA,cAAA,OAAKoB,UAAU,iDACXpB,IAAAA,cAAA,OAAKoB,UAAU,yCAAyC6R,MAAAA,OAAO,EAAPA,EAAS2N,QAChEmtB,EAAiC,QAAdkG,EAAChhC,MAAAA,OAAO,EAAPA,EAASpL,YAAI,IAAAosC,EAAAA,EAAI,IACtCj0C,IAAAA,cAAA,OAAKoB,UAAU,iDACV+yC,EACA,IACA/zC,KAAKo0C,aAAaZ,IAEvB5zC,IAAAA,cAAA,OAAKoB,UAAU,0CACVizC,EACA,IACAphC,MAAAA,OAAO,EAAPA,EAAS4P,wBAItB7iB,IAAAA,cAAA,OAAKoB,UAAU,wDAAwDhB,KAAKq0C,wBAEhFz0C,IAAAA,cAAA,OAAKoB,UAAU,sBACXpB,IAAAA,cAAA,WAAMo0C,GACNp0C,IAAAA,cAAC+vC,EAAqB,CAClBjuC,GAAG,qDACHi9B,aAAc1T,EACdpG,SAAU7kB,KAAKiyC,kBACfpZ,uBAAuB,mCACvB6F,IAAK,IACLE,yBAA0BA,EAC1BC,yBAA0BA,MAItCj/B,IAAAA,cAAA,OAAKoB,UAAW,kDAAkDmzC,KAC7DD,EACA,IACAl0C,KAAKo0C,aAAajd,KAG3Bv3B,IAAAA,cAAC00C,EAAAA,YAAW,KACP5C,GACG9xC,IAAAA,cAAA,OACIoB,UAAU,oEAAmE,YACnE,YACV+O,KAAK,SAELnQ,IAAAA,cAAA,sBAAkB,SACjBI,KAAKu0C,4BAGb5C,MAAAA,OAAM,EAANA,EAAQv5B,MACLxY,IAAAA,cAAA,OAAKoB,UAAU,kEACXpB,IAAAA,cAAA,QAAMoB,UAAU,2BAA0B,cAAa,SACtD2wC,EAAOv5B,KAGhBxY,IAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAW8I,GAAAA,CAAW,0DAA2D,CAAE,UAAW9J,KAAK6G,MAAM4qC,SAAS,aACtGqC,EACZ3yC,QAASnB,KAAKwxC,sBACdzsB,SAAU2tB,GAEToB,KAObS,0BACJ,MAAMC,EAAyBx0C,KAAK6G,MAAM2kC,WACrC/7B,KAAIoiC,IAAY,IAAA4C,EACb,IAAI70B,EAAmC,QAA5B60B,EAAG5C,EAAUQ,uBAAe,IAAAoC,GAEtC,QAFsCA,EAAzBA,EAA2B9gC,MACrC5N,GAASA,EAAMuO,WAAatU,KAAKmgB,mBAAmB0xB,EAAUzyB,6BACjE,IAAAq1B,OAAA,EAFaA,EAEX94B,MAIH,OAHqC,IAAjCk2B,EAAUzyB,qBACVQ,EAAU,QAAQA,KAEfA,KAEV7I,QAAOhR,GAASA,IAErB,OAAO/F,KAAKE,MAAMM,UAAUk0C,0BACvB18B,QAAQ,UAAWhY,KAAK6G,MAAMokB,SAAShS,YACvCjB,QAAQ,yBAA0B,GAAGhY,KAAK6G,MAAMgM,QAAQpL,SAASlG,OAAOozC,OAAOH,GAAwBI,KAAK,SAG7GP,sBACJ,MAAM,WAAE7I,GAAexrC,KAAK6G,OACtB,UAAErG,GAAcR,KAAKE,MAE3B,OAAOsrC,MAAAA,OAAU,EAAVA,EAAY/7B,KAAKoiC,IAAmC,IAAAgD,EACvD,MAAM,gBAAExC,EAAe,mBAAEjzB,GAAuByyB,EAK1CP,EAAgBtxC,KAAK2zC,iBAAiBv0B,EAAoB5e,GAC1DivC,EAAqC4C,EAAkBA,EAAgB5iC,KALtD1J,IAA4B,CAC/CrE,GAAIqE,EAAMuO,SACVvO,MAAOA,EAAM4V,OAAS,OAG4F,GAGtH,OAFA8zB,EAAaqF,QAAQ,CAAEpzC,GAAI,EAAGqE,MAAO,YAAYurC,MAG7C1xC,IAAAA,cAAA,OAAKgF,IAAKwa,GACNxf,IAAAA,cAAA,WAAM0xC,IACY,QAAjBuD,EAAA70C,KAAK6G,MAAM8qC,cAAM,IAAAkD,GAAW,QAAXA,EAAjBA,EAAmBhD,iBAAS,IAAAgD,OAAA,EAA5BA,EAA8B7sC,SAASoX,EAAmBnG,cACvDrZ,IAAAA,cAACkjC,EAAAA,MAAK,CAAC7hC,MAAM,SAAS8zC,WAAS,eAAa/0C,KAAKqxC,oBAAoBC,IACjE1xC,IAAAA,cAAA,OAAKoB,UAAU,oBAAmB,cAAa,QAC3CpB,IAAAA,cAAA,QAAMoB,UAAU,6BAChBpB,IAAAA,cAAA,YAAOI,KAAKqxC,oBAAoBC,MAI5C1xC,IAAAA,cAACqvC,EAAQ,CACLI,WAAYjwB,EACZswB,aAAc1vC,KAAK2zC,iBAAiBv0B,EAAoB5e,GACxDivC,aAAcA,EACd5qB,SAAU7kB,KAAKsyC,0BAgM3B8B,aAAan3B,GACjB,MACIxW,SACIga,kBAAkB,eACdC,EAAc,aAGd4a,KAGRt7B,KAAKE,MAET,OAAOwgB,EAAezD,EAAMP,QAAQ,GAAI4e,ICnazC,MAAMyP,EAAe7qC,IACxB,MAAM,SACF6qB,EACAtkB,SACIiB,eACI1D,gBAAgB,YAAEoP,IAEtB1M,SAAS,aAAEzC,GACXwc,kBAAkB,eACdC,EAAc,aAGd4a,IAEP,aACDwS,EAAY,oBACZH,EAAmB,sBACnBI,EACAvtC,WAAW,wBAAEw0C,GAAyB,cACtC9wC,GACAhE,EAEJ,OACIN,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,KAAGoB,UAAU,gDAA+C,YAAW,aAClE+sC,KAEJ7tC,EAAM0tC,WACPhuC,IAAAA,cAAA,OAAKoB,UAAU,0CACV+pB,EAAStb,KAAI,CAACoD,EAA8BlD,KAAiB,IAAAslC,EAAAvR,EAAA7H,EAC1D,MAAM,MAAElb,EAAK,OAAEH,EAAM,KAAE/Y,EAAI,gBAAEiN,GAAoB7B,EAC3CoK,EAAQyD,EAAeC,EAAMjE,QAAQ,GAAI4e,GACzC4Z,EAAyE,QAAvDD,GAAGpgC,EAAAA,EAAAA,kBAAiBH,MAAAA,EAAAA,EAAmB,GAAItB,UAAY,IAAA6hC,EAAAA,EAAI,GAC7EE,EAA2G,QAAhGzR,GAAGxG,EAAAA,EAAAA,qBAAoB1c,EAAQpN,EAAsC,QAA3ByoB,EAAE37B,EAAMuG,QAAQC,QAAQiD,WAAG,IAAAkyB,GAAQ,QAARA,EAAzBA,EAA2B34B,cAAM,IAAA24B,OAAA,EAAjCA,EAAmCsB,yBAAiB,IAAAuG,EAAAA,EAAI,GAErH,OACI9jC,IAAAA,cAAA,OAAKgF,IAAK,WAAW+K,IAAS3O,UAAU,qCACpCpB,IAAAA,cAAA,OAAKoB,UAAU,8DACXpB,IAAAA,cAACyhB,EAAAA,GAAK,CACFL,QAASvZ,MAAAA,EAAAA,EAAQ,QACjBzD,eAAgB9D,EAAMuG,QAAQiB,cAAc1D,eAC5Cid,IAAKi0B,EACLh0B,YAAai0B,EACbn0C,UAAU,YACViD,aAAcA,EACdC,cAAeA,EACfQ,oBAAoB,UAExB9E,IAAAA,cAAA,OAAKoB,UAAU,gDAA+C,YAAW,UACrEpB,IAAAA,cAAA,OAAKoB,UAAU,yCAAyCwf,GACvDmtB,EAAoBlmC,MAAAA,EAAAA,EAAQ,MAGrC7H,IAAAA,cAAA,OAAKoB,UAAU,sDACXpB,IAAAA,cAAA,YAAOqd,GACPrd,IAAAA,cAACw1C,EAAmB,CAACviC,QAASA,EAASwiC,WAAYL,EAAyBlH,aAAcA,YAgBpHsH,EAAuBl1C,IACzB,MAAOuxC,EAAQ6D,IAAWlgC,EAAAA,EAAAA,WAAS,IAC7B,QAAEvC,EAAO,WAAEwiC,EAAU,aAAEvH,GAAiB5tC,EACxCq1C,EAAkB31C,IAAAA,aAAkByd,UACtCi4B,GAAS7D,SACH3D,EAAaj7B,GACnByiC,GAAS7D,KACV,CAAC3D,EAAc2D,EAAQ5+B,IAE1B,OACIjT,IAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAW8I,GAAAA,CAAW,mDAAoD,CAAE,UAAW2nC,IAAS,aACpF,GAAG5+B,EAAQpL,QAAS4tC,IAChCl0C,QAASo0C,GAERF,kOC/EN,MAAMG,UAAiC51C,EAAAA,cAA9CC,cAAA,oBACW,KAAAgH,MAAwC,CAC3C4uC,eAAe,EACfC,kBAAkB,GAkHL,KAAAC,WAAchwC,IAC3B3F,KAAKuP,SAAS,CACVkmC,eAAe,IAGnBz1C,KAAKE,MAAM01C,sBAEX51C,KAAKuP,SAAS,CACVkmC,eAAe,KAIN,KAAAI,cAAiBlwC,IAC9B3F,KAAKuP,SAAS,CACVmmC,kBAAkB,IAGtB11C,KAAKE,MAAM41C,qBAhIR,gCACH51C,EACA2G,GAEA,MAAMkvC,EAAgB71C,EAAM61C,cAAct0C,OAC1C,IAAImlB,uWAASnc,CAAA,GAAQ5D,GAKrB,OAJA+f,EAAY,CACR6uB,cAAiC,IAAlBM,EACfL,iBAAoC,IAAlBK,GAEfnvB,EAGJzmB,SAAM,IAAAy3B,EACT,MAAM,qBACFwV,EAAoB,sBACpBrD,EAAqB,qBACrBiM,EAAoB,2BACpBhM,EAA0B,uBAC1BC,EAAsB,wBACtB+K,EAAuB,sBACvBlB,EAAqB,8BACrBC,EAA6B,eAC7BkC,EAAc,yBACdrX,EAAwB,yBACxBC,EAAwB,oBACxBmV,EAAmB,kCACnBC,EAAiC,0BACjCjG,EAAyB,+BACzBC,EAA8B,mBAC9BE,EAAkB,0BAClB9V,EAAyB,kCACzBE,EAAiC,yBACjCJ,EAAwB,0BACxBM,EAAyB,2BACzByd,EAA0B,8BAC1BC,EAA6B,0BAC7B/J,EAAyB,0BACzBC,EAAyB,0BACzBqI,EAAyB,gBACzBR,EAAe,yBACfpN,EAAwB,4BACxBiL,EAA2B,0BAC3BC,EAAyB,sBACzBT,GACAvxC,KAAKE,MAAMM,UAET41C,EAAe,CACjB3vC,QAASzG,KAAKE,MAAMuG,QACpB5D,iBAAkB7C,KAAKE,MAAM2C,iBAC7BrC,UAAW,CACP4sC,qBAAAA,EACArD,sBAAAA,EACAiM,qBAAAA,EACAhM,2BAAAA,EACAC,uBAAAA,EACA+K,wBAAAA,EACAlB,sBAAAA,EACAC,8BAAAA,EACAkC,eAAAA,EACArX,yBAAAA,EACAC,yBAAAA,EACAmV,oBAAAA,EACAC,kCAAAA,EACAjG,0BAAAA,EACAC,+BAAAA,EACAE,mBAAAA,EACA9V,0BAAAA,EACAE,kCAAAA,EACAJ,yBAAAA,EACAM,0BAAAA,EACA2T,0BAAAA,EACAC,0BAAAA,EACAqI,0BAAAA,EACAR,gBAAAA,EACApN,yBAAAA,EACAiL,4BAAAA,EACAC,0BAAAA,EACAT,sBAAAA,GAEJrtC,cAAelE,KAAKE,MAAMgD,OAAOgB,cACjCqoC,gBAAiBvsC,KAAKE,MAAMqsC,gBAC5B7J,oCAAqC1iC,KAAKE,MAAMwiC,oCAChDzS,SAAkC,QAA1B2H,EAAE53B,KAAKE,MAAME,KAAK6vB,gBAAQ,IAAA2H,OAAA,EAAxBA,EAA0Bt3B,QAGxC,OACIV,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAC0pC,EAAiB/nC,OAAA+B,OAAA,GAAK8yC,IACvBx2C,EAAAA,cAACsF,EAAAA,OAAM,CACH/D,QAASnB,KAAK21C,WACd5wB,SAAU/kB,KAAK6G,MAAM4uC,cACrBz0C,UAAU,sBAAqB,aACnBk1C,GAEZt2C,EAAAA,cAAA,cACEI,KAAKE,MAAMm2C,gBAAkBH,GAEnCt2C,EAAAA,cAACsF,EAAAA,OAAM,CACH/D,QAASnB,KAAK61C,cACd9wB,SAAU/kB,KAAK6G,MAAM6uC,iBACrB10C,UAAU,kBAAiB,aACfm1C,GAEZv2C,EAAAA,cAAA,cACEI,KAAKE,MAAMm2C,gBAAkBF,KCpFnD,MAAMG,EAA4Bp2C,GAAsC,KACpEq2C,EAAqBr2C,IAmBnBq2C,EAAwBr2C,IAC1B,MACIE,MAAM,cAAEkhC,GAAe,SACvBJ,GACAhhC,GACE,iBAAEs2C,GAAqBtV,EAEzBsV,GACAA,EAAiBlV,EAAcsE,YAAYpb,KAI7CisB,EAAoCv2C,IACtC,MACIE,MAAM,cAAEkhC,GAAe,SACvBx8B,EAAQ,GACRpD,EAAE,QACF+E,EAAO,iBACP5D,EAAgB,UAChBrC,EAAS,oCACTkiC,GACAxiC,GACE,2BACFw2C,EAA0B,sBAC1BnO,EAAqB,wBACrBC,EAAuB,wBACvBC,EAAuB,wBACvBC,EAAuB,0BACvBC,EAAyB,gCACzBC,GACApoC,EAEEiiC,EAAgB,CAClB8F,sBAAAA,EACAC,wBAAAA,EACAC,wBAAAA,EACAC,wBAAAA,EACAC,0BAAAA,EACAC,gCAAAA,GAGJ,OACIhpC,EAAAA,cAAC0iC,EAAAA,gCAA+B,CAC5B77B,QAASA,EACT/E,GAAIA,EACJoD,SAAUA,EACV1E,KAAM,CAAEkhC,cAAAA,GACRtgC,UAAU,GACVuhC,cAAemU,EACfjU,cAAeA,EACf5/B,iBAAkBA,EAClB6/B,oCAAqCA,KAK3CiU,EAAkCz2C,IACpC,MAAM,iCAAE02C,EAAgC,UAAEp2C,EAAS,QAAEiG,EAAO,SAAEy6B,GAAahhC,EAC3E,OACIN,EAAAA,cAACi3C,EAAAA,6BAA4B,CACzBC,iBAAkB5V,EAAS4V,iBAC3B91C,UAAU,iCACVyF,QAASA,EACT/E,GAAIxB,EAAMwB,GACVtB,KAAM,CAAEkhC,cAAephC,EAAME,KAAKkhC,cAAcsE,aAChD9gC,SAAU5E,EAAM4E,SAChB8xC,iCAAkCA,EAClCG,8BAA+Bv2C,EAAUw2C,yBACzCtU,qCAAmC,KAK/C,IAAIuU,EACG,MAAMC,EAA4Dh3C,IACrE,MAAOi3C,EAAqCC,IAA0ChiC,EAAAA,EAAAA,WAAS,IACxFiiC,EAA+B7S,GAAkC5kC,EAAAA,UAAe,GAYjF03C,EAAoBA,KACtBF,GAAwCD,KAGxC/2C,MAAM,cAAEkhC,GAAe,UACvB9gC,EAAS,iCACTo2C,EAAgC,QAChCnwC,GACAvG,EAEEc,EAAY,+BAEZu2C,EAAmB33C,EAAAA,YACnB43C,EACF53C,EAAAA,cAAC+kC,EAAAA,wBAAuB,CACpB8S,sBAAuBnW,EAAcsE,YACrCf,gBAAc,EACd7jC,UAAU,iCACV4jC,UAAWyS,EACXvS,aAAcN,EACd/9B,QAASA,EACT/E,GAAIxB,EAAMwB,GACVtB,KAAMF,EAAME,KACZ4hC,kBAAmB9hC,EAAME,KAAKkhC,cAAcsE,YAAYn+B,KACxD3C,SAAU5E,EAAM4E,SAChB29B,cAAemU,EACf5R,SApC0B0S,KAAK,IAAAC,EACnClxC,EAAQrE,UAAUE,MAAM,oCACJ,QAApBq1C,EAAAV,SAAoB,IAAAU,GAApBA,EAAsB5K,SAmClB9H,UAAW/kC,EAAMghC,SAAS4V,mBAG5Bc,EAAiC,iCAAiCC,EAAAA,OAAOC,KAAKC,iBAEpF,OACIn4C,EAAAA,cAAA,OAAKoB,UAAW,GAAGA,eACdw2C,EACD53C,EAAAA,cAACsF,EAAAA,OAAM,CACHlE,UACIm2C,EACM,GAAGn2C,wCACH,GAAGA,0CAEbG,QAASm2C,EACT7oC,SAAU8oC,EAAgB,gBACZ,OAAM,gBACLJ,EACfz1C,GAAIk2C,GAEJh4C,EAAAA,cAAA,QAAMoB,UAAW,GAAGA,4CAAqD,YAE7EpB,EAAAA,cAAC+M,EAAAA,QAAO,mBACairC,EACjB52C,UAAW,GAAGA,+CACdgL,OAAQmrC,EACRvqC,UAAU,SACVnJ,OAAQ8zC,EACRrrC,OAAQorC,EACRvnC,KAAK,UAAS,eACAonC,GAEdv3C,EAAAA,cAACsF,EAAAA,OAAM,CAAClE,UAAW,GAAGA,qDAA8DG,QAhEnEwE,IACzBsxC,EAAuBtxC,EAAMlC,OAC7B+gC,GAA+B,GAC/B7+B,EAAM4e,mBA8DO/jB,EAAUw2C,0BAGfp3C,EAAAA,cAACsF,EAAAA,OAAM,CACH/D,QAASm1C,EAAyBp2C,GAClCc,UAAW,GAAGA,qDACd+O,KAAK,UAEJ,aC5IfioC,EAA4B93C,IAC9B,MAAM,kBAAE+3C,EAAiB,gBAAEjU,EAAe,SAAE/Y,EAAQ,SAAEiW,GAAahhC,GAC7D,OAAEurB,EAAM,UAAE9N,GAAcqmB,GACxB,WAAEkU,EAAU,aAAEC,GAAiBjX,EAErC,MAAO,CACHkX,YAAaA,IAAOzyC,IAChB8lB,GACIwsB,EAAkBpU,aAClBqU,EAAWD,EAAkBpU,YAAYE,eAAgB9Y,EAAUQ,EAAQ9N,IAEnF06B,cAAeA,IAAO1yC,GAAyC8lB,GAAU0sB,EAAaj4C,EAAM+3C,qBAS9FK,EAASp4C,IACX,MAAM,mBAAEooC,EAAkB,iCAAEiQ,EAAgC,eAAEC,EAAc,uBAAEC,GAA2Bv4C,EAAMM,WACxGk4C,EAAYC,IAAiBvjC,EAAAA,EAAAA,WAAS,GAOvClJ,EAAStM,IAAAA,aAAkB,KAC7B+4C,GAAeD,KAChB,CAACA,IAEJ,OACI94C,IAAAA,cAAA,OAAKoB,UAAW,gCACZpB,IAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAW,6BAAyC,aACxCw3C,EAAc,YACft4C,EAAMyP,MACjBxO,QAAS+K,IAEZwsC,GACG94C,IAAAA,cAAA,OAAKoB,UAAW,uBACZpB,IAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAU,2BACVG,QApBUwE,IAC1BzF,EAAM04C,uBAAuB14C,IAoBbkF,MAAOqzC,EAAsB,aACjBA,GAAsB,QAIrCI,EACG34C,EAAMqO,SACNrO,EAAM44C,sBACNP,EACAP,EAAyB93C,GAAOm4C,iBAEnCQ,EACG34C,EAAMqO,SACNrO,EAAM64C,mBACNzQ,EACA0P,EAAyB93C,GAAOk4C,kBAQlDS,EAAkBA,CACpBtqC,EACAvN,EACAq0C,EACAvH,IAEAluC,IAAAA,cAACsF,EAAAA,OAAM,cAAamwC,EAAYr0C,UAAWA,EAAWG,QAAS2sC,EAAc1oC,MAAOiwC,GAC/E9mC,EAAW8mC,EAAa,IAI3B2D,EAAyBA,CAC3Bh4C,EACAq0C,EACAvH,IAEAluC,IAAAA,cAACsF,EAAAA,OAAM,cAAamwC,EAAYr0C,UAAWA,EAAWG,QAAS2sC,EAAc1oC,MAAOiwC,GAC/EA,GASH4D,EAAsBA,CAAChB,EAAgD1sB,IACzE5lB,IAEAsyC,EAAkBiB,WAAajB,EAAkBiB,UAEjD3tB,EAAM2V,SAASiY,SAASlB,EAAmBtyC,EAAMlC,OAAO21C,UAmGtDC,EAAqBn5C,IACvB,MAAOo5C,EAAaC,IAAkBnkC,EAAAA,EAAAA,WAAS,GACzClJ,EAAStM,IAAAA,aAAkB,KAC7B25C,GAAgBD,KACjB,CAACA,IAEEt4C,EAAY,mDACZw4C,EAA4B,GAAGx4C,uBACrC,OACIpB,IAAAA,cAAA,OAAKoB,UAAWA,GACZpB,IAAAA,cAACsF,EAAAA,OAAM,CAAClE,UAAW,GAAGA,YAAmB,aAAc,GAAIG,QAAS+K,IACnEotC,GACG15C,IAAAA,cAAA,OAAKoB,UAAWw4C,GACXR,EACG,qDACA,aACAhB,EAAyB93C,GAAOk4C,eAEnCY,EACG,wDACA,cACAhB,EAAyB93C,GAAOm4C,oBAQ3CoB,EAA+BluB,IAA2E,IAAAmuB,EACnH,MAAM,kBAAEzB,EAAiB,gBAAEjU,EAAe,MAAE/mB,EAAK,QAAExW,EAAO,cAAEvC,EAAa,oCAAEw+B,GAAwCnX,EAC7G1Y,EAAUolC,EAAkBpU,aAC5B,OAAEpY,EAAM,cAAEkuB,GAAkB3V,EAClC,IAAKnxB,EACD,OAEJ,MAAM,OAAE2N,EAAM,gBAAE9L,GAAoB7B,EAAQkxB,eACtC6V,GAAgB1c,EAAAA,EAAAA,qBAClB1c,EACA/Z,EAAQiB,cAAc1D,eAAeoP,YAClB,QAD6BsmC,EAChDjzC,EAAQC,QAAQiD,WAAG,IAAA+vC,GAAQ,QAARA,EAAnBA,EAAqBx2C,cAAM,IAAAw2C,OAAA,EAA3BA,EAA6Bvc,kBAGjC,MAAO,CACH0c,mBAAoBnX,GAAuCoX,GAAqBvuB,GAChFwuB,aAAcC,EACV,YACAvzC,EACAoM,EAAQkxB,eAAet8B,KACvBiN,EACAklC,EACA11C,GAEJ+1C,YAAaC,GAAkB3uB,GAC/B8nB,aAAcp2B,GAASk9B,GAAa5uB,GACpC6uB,cAAe55B,EACf65B,qBAAsBV,IAAiB18B,MAAAA,OAAK,EAALA,EAAO08B,eAC9CW,oBAAqBC,EAAkBhvB,EAAOE,KAgBhD+uB,EAAkBA,CACpBC,EACAtZ,EACAjhC,IACE49B,IACE2c,GACAA,EAAiBtZ,EAASrD,EAAU59B,IAItCq6C,EAAoBA,CAACr6C,EAAgCihC,KACvD,MAAM,SAAED,EAAQ,UAAE1gC,EAAS,SAAEyqB,GAAa/qB,GACpC,iBAAEu6C,GAAqBvZ,EAC7B,OACIthC,IAAAA,cAAC+vC,EAAqB,CAClBhR,aAAc1T,EACdpG,SAAU21B,EAAgBC,EAAkBtZ,EAASjhC,GACrDw+B,IAAK,UACL7F,uBAAwBr4B,EAAUq4B,uBAClCgG,yBAA0Br+B,EAAUq+B,yBACpCD,yBAA0Bp+B,EAAUo+B,yBACpC7Z,SAAU7kB,EAAMw6C,+BAKfV,EAAsBA,CAC/Bh5C,EACAyF,EACA0/B,EACApiC,EACA61C,EACA11C,KACoB,IAAAy2C,EAAAC,EAUpB,OACIh7C,IAAAA,cAACyhB,EAAAA,GAAK,CACFrd,eAAgByC,MAAAA,GAAsB,QAAfk0C,EAAPl0C,EAASiB,qBAAa,IAAAizC,OAAA,EAAtBA,EAAwB32C,eACxChD,UAAWA,EACXggB,QAASmlB,EACT/gC,MAAO+gC,EACPllB,IAAKld,EACLmd,YAAa04B,EACb31C,aAAcwC,MAAAA,GAAgB,QAATm0C,EAAPn0C,EAASC,eAAO,IAAAk0C,OAAA,EAAhBA,EAAkB32C,aAChCC,cAAeA,GAlBsB,CACzCC,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnC2+B,GAAI,CAAE7+B,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,IAEvCE,UAAU,GAaNC,oBAAoB,QACpBmsC,SAAU,KAKTiJ,GAAwB55C,IACjC,MAAMm6B,EAAYn6B,EAAM8jC,gBAAgBrmB,UAGxC,IAFA2c,EAAAA,EAAAA,mBAAkBD,IAEbn6B,EAAMuG,QAAQC,QAAQ8B,KAAK+xB,QAAUF,IAAc55B,EAAAA,gBAAgBC,YAAYR,EAAM+vB,UACtF,OAAO,KAGX,MAAMuK,EAAUt6B,EAAM+vB,SAAStc,MAAKO,GAAQA,EAAKI,WAAa+lB,IAE9D,OAAKG,GAAYA,EAAQ/yB,KAIlB7H,IAAAA,cAAA,OAAKoB,UAAU,gCAAgCw5B,EAAQ/yB,MAHnD,MAMT0yC,GAAgBj6C,IAClB,MAAM,MAAE+c,EAAK,QAAExW,EAAO,SAAE+a,EAAQ,eAAED,EAAc,UAAE/gB,GAAcN,EAEhE,OAAI+c,EAEIrd,IAAAA,cAAC0iB,EAAAA,eAAc,CACX5gB,GAAI8f,EACJ1c,SAAUyc,EACVnhB,KAAM,CAAE6c,MAAAA,GACRjc,UAAU,8CACVkR,cAAe1R,EAAU0R,cACzBC,kBAAmB3R,EAAU2R,kBAC7BC,iBAAkB5R,EAAU4R,iBAC5B3L,QAASA,IAId,MAmBLo0C,GAAuB36C,IACzB,MAAM,MAAEiC,EAAK,UAAE3B,GAAcN,EAE7B,IAAKiC,EACD,MAAO,GASX,MANsB,CAClB24C,IAAKt6C,EAAUu6C,8BACfC,WAAYx6C,EAAUy6C,+BACtBC,KAAM,IAGW/4C,IAGZ+3C,GAAqBh6C,IAA+D,IAAAi7C,EAC7F,MAAM,kBAAElD,EAAiB,WAAE7jC,GAAelU,EACpC8c,EAAoC,QAAhCm+B,EAAGlD,EAAkBpU,mBAAW,IAAAsX,OAAA,EAA7BA,EAA+BpX,eAAet8B,KAErD+jC,EApCwBtrC,CAAAA,IAC9B,MAAM,kBAAE+3C,GAAsB/3C,EAE9B,OAAK+3C,EAAkBpU,aAAgBoU,EAAkBpU,YAAYE,eAAelJ,WAI7Eod,EAAkBpU,YAAYE,eAAelJ,WAAWprB,KAAIoiC,IAC/D,GAAKA,EAAUxyB,gBAAmBwyB,EAAUxyB,eAAe1D,MAI3D,OAAOk2B,EAAUxyB,eAAe1D,SARzB,IAgCQy/B,CAAyBl7C,GAC5C,IAAK+3C,EAAkBpU,YACnB,MAAO,GAGX,MAAMjG,EAAcxpB,EAChBxU,IAAAA,cAAA,KAAGoB,UAAU,kDAAkDuC,KAAM6Q,GAChE4I,GAGLpd,IAAAA,cAAA,OAAKoB,UAAU,mDAAmDgc,GAGhEq+B,EAAyB7P,EAAWoJ,KAAK,MAE/C,OACIh1C,IAAAA,cAAA,OAAKoB,UAAU,8CACXpB,IAAAA,cAAA,OAAKoB,UAAU,mDAAmD48B,GAClEh+B,IAAAA,cAAA,OAAKoB,UAAU,wDAAwDq6C,KCpftEC,GAAmF1pC,IAAmC,IAAlC,UAAE5Q,EAAS,UAAEmjC,EAAS,KAAEC,GAAMxyB,EAC3H,OAAQuyB,GACJ,IAAK,QACD,OAAOvkC,EAAAA,cAAA,KAAGoB,UAAW8I,GAAAA,CAAW,yCAA0C9I,IAAaojC,GAC3F,IAAK,SACD,OAAOxkC,EAAAA,cAAA,KAAGoB,UAAW8I,GAAAA,CAAW,0CAA2C9I,IAAaojC,GAC5F,IAAK,UACL,QACI,OAAOxkC,EAAAA,cAAA,KAAGoB,UAAU,4CAA4CojC,oOCgBrE,MAAMmX,WAAkC37C,EAAAA,cAA/CC,cAAA,oBACW,KAAAgH,MAAyC,CAC5CqyC,WAAW,GAGE,KAAAsC,mBAA6B,WAYvC,KAAAC,YAAc,IAAO91C,IACxB3F,KAAKuP,SACD,CACI2pC,UAAWl5C,KAAK6G,MAAMqyC,YAE1B,KACIl5C,KAAKE,MAAM4tC,cAAc9tC,KAAK6G,MAAMqyC,eAhBzC,gCACHh5C,EACA2G,GAEA,MAAM60C,EAAex7C,EAAM0xB,MAAM7a,QAAOyO,IAASA,EAAK0zB,YAAWz3C,OACjE,IAAImlB,yWAASnc,CAAA,GAAQ5D,GAErB,OADA+f,EAAY,CAAEsyB,UAA4B,IAAjBwC,GAClB90B,EAcJzmB,SACH,OACIP,EAAAA,cAAA,aACIA,EAAAA,cAAA,MAAIoB,UAAW,GAAGhB,KAAKw7C,mCACnB57C,EAAAA,cAAA,MAAI+7C,MAAM,MAAK,aAAa37C,KAAKE,MAAM07C,mBACnCh8C,EAAAA,cAAA,SAAOoB,UAAU,sBACbpB,EAAAA,cAAA,sBACgBI,KAAKE,MAAM07C,kBACvB56C,UAAU,iBACVupC,KAAK,WAAU,eACDvqC,KAAK6G,MAAMqyC,UACzBE,QAASp5C,KAAK6G,MAAMqyC,UACpBr0B,SAAU7kB,KAAKy7C,gBAEnB77C,EAAAA,cAAA,QAAMoB,UAAU,iBAGtBhB,KAAKE,MAAMqO,UAAYvO,KAAKE,MAAMwiC,oCAChC9iC,EAAAA,cAAA,MAAI+7C,MAAM,OAAO37C,KAAKE,MAAM27C,wBAC5B,KACF77C,KAAKE,MAAMqO,SAA4D,KAAjD3O,EAAAA,cAAA,MAAI+7C,MAAM,OAAO37C,KAAKE,MAAM65C,cACpDn6C,EAAAA,cAAA,MAAI+7C,MAAM,OAAO37C,KAAKE,MAAMk6C,eAC1Bp6C,KAAKE,MAAMqO,SAA2D,KAAhD3O,EAAAA,cAAA,MAAI+7C,MAAM,OAAO37C,KAAKE,MAAM09B,aAClD59B,KAAKE,MAAMqO,SAAgE,KAArD3O,EAAAA,cAAA,MAAI+7C,MAAM,OAAO37C,KAAKE,MAAM47C,kBAClD97C,KAAKE,MAAMqO,SAA0D,KAA/C3O,EAAAA,cAAA,MAAI+7C,MAAM,OAAO37C,KAAKE,MAAM67C,YAClD/7C,KAAKE,MAAMqO,SAA+D,KAApD3O,EAAAA,cAAA,MAAI+7C,MAAM,OAAO37C,KAAKE,MAAM87C,iBAClDh8C,KAAKE,MAAMqO,SAA8D3O,EAAAA,cAAA,WAAnDA,EAAAA,cAAA,MAAI+7C,MAAM,OAAO37C,KAAKE,MAAM+7C,4pBCiCxE,IAAMC,GAAN,cAAiCt8C,EAAAA,UAY7BC,YAAYK,EAAgD2G,GACxDnE,MAAMxC,GAqRO,KAAAklC,yCAA2C,KACxD,IAAI1C,GAAsC,EACP,IAAD1O,EAA9Bh0B,KAAKE,MAAME,KAAKk2B,eAChBoM,GACuC,QAAnC1O,EAAAh0B,KAAKE,MAAME,KAAKk2B,aAAah2B,cAAM,IAAA0zB,GAElC,QAFkCA,EAAnCA,EAAqCrgB,MACjC4iB,GAA4B,2DAAjBA,EAAQ9uB,cACtB,IAAAusB,OAAA,EAFDA,EAEGwC,aAAa,GAExB,OAAOkM,GAGM,KAAAyZ,mBAAqB,KAClC,MAAM,QAAE11C,EAAO,UAAEjG,GAAcR,KAAKE,OAC9B,UAAEkC,GAAcqE,GAChB,6BAAE21C,EAA4B,6BAAEC,GAAiC77C,EACjEoxB,EAAQ5xB,KAAK6G,MAAMy1C,iBACnBC,EAAmB3qB,GAASA,EAAMnwB,QAAUmwB,EAAM7a,QAAOyO,GAAQA,EAAK0zB,YAAWzpC,KAAI+V,GAAQA,EAAKwe,kBAExG,GAAIuY,GAAoBA,EAAiB96C,OAAS,EAAG,CACjD,MAAMgkC,EAAgB8W,EAAiB,GAAGzK,cAEpC0K,EAAoC,KAC1CC,EAAAA,EAAAA,6BAA4B,CAAE1+B,cAAetX,EAAQiB,eAAiB+9B,EAAgB8W,GACjFv+B,MAAKX,UACFrd,KAAKuP,SAAS,CACVszB,YAAawZ,EACbtZ,gBAAiB,UACjBiD,aAAc,eACdh6B,QAAQ,UAGN,IAAIhK,SAAQC,GAAWuN,WAAWvN,EAASu6C,KACjDp0C,OAAOiR,SAASksB,YAEnBrjC,OAAMC,IACHC,EAAU8nB,QAAQ,4EAClB9nB,EAAUD,MAAMA,GAChBnC,KAAKuP,SAAS,CACVszB,YAAauZ,EACbrZ,gBAAiB,UACjBiD,aAAc,eACdh6B,QAAQ,SAMX,KAAAi2B,yBAA2B,KAAa,IAAAya,EACrD,IAAI90C,GAAMysB,EAAAA,EAAAA,IAAW,gBAAiBr0B,KAAKE,MAAMuG,QAAQiB,gBAAkB,GAE3E,OADAE,EAAMA,EAAII,SAAS,KAAOJ,EAAI+0C,OAAO,EAAG/0C,EAAIqP,QAAQ,MAAQrP,EAC3B,QAAjC80C,EAAI18C,KAAKE,MAAME,KAAKkhC,qBAAa,IAAAob,GAAQ,QAARA,EAA7BA,EAA+Bp8C,cAAM,IAAAo8C,GAArCA,EAAuC9W,YAAYpb,GAC5C,GAAG5iB,QAAU5H,KAAKE,MAAME,KAAKkhC,cAAchhC,OAAOslC,YAAYpb,KAElE,IAGM,KAAAoyB,qBAAuBv/B,UACpC,MACM04B,EADQ/1C,KAAK6G,MAAMy1C,iBACGvlC,QAAOyO,GAAQA,EAAK0zB,YAChD,GAAInD,EAAct0C,OAAS,EACvB,IAAK,MAAMo7C,KAAe9G,EAAe,CAAC,IAAD+G,EAAAC,EAAAC,EAAAC,EAAAC,EACrC,MAAM/b,EAAwD,QAAjD2b,EAA0B,QAA1BC,EAAGF,EAAYhZ,mBAAW,IAAAkZ,OAAA,EAAvBA,EAAyBhZ,eAAevjB,cAAM,IAAAs8B,EAAAA,EAAI,GAC5DjqC,EAAiD,QAA1CmqC,EAA0B,QAA1BC,EAAGJ,EAAYhZ,mBAAW,IAAAoZ,OAAA,EAAvBA,EAAyBlZ,sBAAc,IAAAiZ,EAAAA,EAAI,CACvD1oC,SAAU,EACV6oC,iBAAkB,EAClBl7B,UAAW,EACXtB,MAAO,EACPuB,cAAe,GAEb+I,EAA+C,QAAvCiyB,EAAGL,EAAY7Y,gBAAgBjU,gBAAQ,IAAAmtB,EAAAA,EAAI,EACzD,GAAIl9C,KAAKolC,2CAA4C,CACjD,MAAM/K,EAAYwiB,EAAY7Y,gBAAgBrmB,gBACxC3d,KAAKo9C,cAAcvqC,EAASoY,EAAUkW,EAAS9G,cAE/Cr6B,KAAKo9C,cAAcvqC,EAASoY,EAAUkW,GAIxD,OAAOn/B,QAAQC,aAAQ,IA2DV,KAAAo7C,eAAkBC,GAC3B31C,EAAAA,GAASQ,UACF,IAAIgL,IAAI/K,OAAOiR,SAAS9V,MAE5B,IAAI4P,IAAImqC,EAAW11C,IAAIC,WAAWtE,MAM5B,KAAAg6C,eAAiB,KAC9Bv9C,KAAKuP,SAAS,CACV4xB,QAASnhC,KAAK6G,MAAMs6B,QACpB0B,YAAa7iC,KAAK6G,MAAMg8B,YACxBE,gBAAiB/iC,KAAK6G,MAAMk8B,gBAC5BiD,aAAchmC,KAAK6G,MAAMm/B,aACzBh6B,OAAQhM,KAAK6G,MAAMmF,OACnBwxC,gCAAgC,KAIvB,KAAAC,6BAA+B,KAA6B,IAAAC,EACzE,IAAK19C,KAAK6G,MAAM82C,0BACZ,OAAO,KAEX,MAAMjb,GAC0B,QAA5Bgb,EAAA19C,KAAKE,MAAME,KAAKk2B,oBAAY,IAAAonB,GAAQ,QAARA,EAA5BA,EAA8Bp9C,cAAM,IAAAo9C,GAA4F,QAA5FA,EAApCA,EAAsC/pC,MAAK4iB,GAA4B,2DAAjBA,EAAQ9uB,cAAkE,IAAAi2C,OAAA,EAAhIA,EACMlnB,aAAa,EAEvB,OACI52B,EAAAA,cAACg+C,EAAAA,sBAAqB,CAClB58C,UAAU,gCACVU,GAAI1B,KAAKE,MAAMwB,GACfoD,SAAU9E,KAAKE,MAAM4E,SACrB2B,QAASzG,KAAKE,MAAMuG,QACpBg8B,cAAeziC,KAAK69C,0CACpBz9C,KAAMJ,KAAK6G,MAAM82C,0BACjB/Y,UAAW5kC,KAAK6G,MAAM22C,+BACtBM,QAAS99C,KAAKu9C,eACd7a,oCAAqCA,KAchC,KAAAqb,kBAAoB,KACjC,MAAM,OAAE76C,EAAM,QAAEuD,EAAO,KAAErG,EAAI,UAAEI,GAAcR,KAAKE,MAC5CohC,EAAgBlhC,GAAQA,EAAKkhC,eAAiBlhC,EAAKkhC,cAAchhC,OACvE,IAAKghC,EACD,OAAO,KAGX,MAAMzR,EAAU7vB,KAAKq9C,eAAe52C,EAAQC,SACtCs3C,EAAe96C,EAAO86C,cAAgB,GAEtCC,EADoBj+C,KAAKk+C,wBACOF,EAChCG,EAAa7c,GAAiBA,EAAcc,WAC5Cgc,EAAe59C,EAAU+oB,gBACzB80B,EAAW79C,EAAUipB,YAE3B,OAAI00B,GAAcH,EACP,KAIPp+C,EAAAA,cAAC0+C,EAAAA,uBAAsB,CACnBt9C,UAAW,GAAGhB,KAAKgB,wBACnB+O,KAAK,aAAY,aACLvP,EAAU+9C,oBACtB32C,IAAKioB,EAAQtsB,KACbi7C,IAAI,OACJ/tC,MAAO0tC,EACPH,aAAcA,EACdS,aAAcR,EACdG,aAAcp+C,KAAK0+C,YAAYN,GAC/BC,SAAUr+C,KAAK2+C,YAAYN,GAC3BO,kBAAmBR,EACnBS,cAAeR,KAmFV,KAAAS,wBAA2B5+C,IACxC,IAAI2G,EAAQ,CACRk4C,oBAAqB/+C,KAAK6G,MAAMk4C,oBAEhC7+C,IACA2G,EAAK4D,GAAAA,GAAA,GACE5D,GACA,CACCm4C,oBAAqBvF,EAA4Bv5C,MAI7DF,KAAKuP,SAAS1I,IAID,KAAAi9B,yBAA2B,CACxCG,EACAx9B,EACA4zB,KAEA,MAAMjmB,GAAasb,EAAAA,EAAAA,mBAAkBuU,EAAgBx9B,EAAQiB,mBAAe/D,GAC5E,IAAKgV,EAAAA,iBAAiBC,mBAAmBxE,SAA6BzQ,IAAd02B,EAAyB,CAC7E,MAAM4kB,EAAc,IAAI9rC,IAAIiB,EAAYhM,OAAOiR,SAAS9V,MAExD,OADA07C,EAAYlmC,aAAakO,IAAI,YAAa,GAAGoT,MAAAA,EAAAA,EAAa,KACnD4kB,EAAY17C,KAGvB,OAAO6Q,GAIM,KAAAixB,WAAa,KAC1BrlC,KAAKuP,SAAS,CACVvD,QAAQ,KAIC,KAAAkzC,gBAAkB7hC,MAAO8jB,EAAiBlW,EAAkB/qB,KACzE,MAAM,QAAEuG,EAAO,KAAErG,EAAI,UAAEgC,EAAS,OAAEc,EAAM,UAAE1C,GAAcR,KAAKE,OACvD,cAAEohC,GAAkBlhC,EAE1B,GAAIqG,GACI66B,MAAAA,GAAAA,EAAehhC,OAAQ,CACvB,MAAM6+C,EAAyB7d,EAAchhC,OAAOuhC,mBACpD,GAAIsd,EAAwB,CACxB,MAAMC,EAAiBD,EAAuBE,WACzCztB,GAA6BA,EAAMoS,gBAAgBvY,SAAW0V,IAE7Dme,EAAkB70C,GAAA,GAAQ00C,EAAuBC,IACvD,GAAID,EAAuBC,GAAgBpb,gBAAgBjU,WAAa9E,EACpE,OAEJ,MAAMs0B,EAAeD,EAAmBtb,gBAAgBjU,SACxDuvB,EAAmBtb,gBAAgBjU,SAAW9E,EAC9C,MAAM,YAAE4Y,GAAyByb,EAAT95B,GAAIg6B,EAAAA,EAAAA,GAAKF,EAAkBG,IAG/Cv/C,IACAA,EAAM+qB,SAAWA,EACjBjrB,KAAKuP,SAAS,CACVyvC,oBAAqBvF,EAA4Bv5C,MAIzDF,KAAKuP,SAAS,CACVmrC,6BAA6B,KAGjCgF,EAAAA,EAAAA,6BAA4B,CAAE3hC,cAAetX,EAAQiB,eAAiB45B,EAAchhC,OAAOslC,YAAYpb,GAAI,CACvGhF,EAAKwe,kBAEJhmB,MAAK2hC,IASF,GARA3/C,KAAKuP,SAAS,CACV4xB,QAAAA,EACA0B,YAAa,GACbE,gBAAiB,UACjBiD,aAAc,eACd0U,6BAA6B,EAC7B1uC,QAAQ,IAER2zC,EAAM,CACN,MAAMC,EAAUD,EAAKhsC,MAAKie,GAASA,EAAMnG,SAAW0V,IACpDge,EAAuBC,GAAgBpb,gBAAkB4b,EACzD,MAAMC,EAAe,IAAIV,GACzBU,EAAaT,GAAkB,CAAEvb,YAAAA,EAAaG,gBAAiB4b,GAC/D,MAAME,EAAoBr1C,GAAAA,GAAA,GAAQ62B,EAAchhC,QAAM,IAAEy/C,iBAAkBF,IAC1Ep5C,EAAQiB,cAAcs4C,OAClB,IAAIC,GAAAA,8BAA8Bx5C,EAAQiB,cAAc1D,eAAgBd,GACxE48C,OAIX59C,OAAMC,IACHC,EAAU8nB,QAAQ,6DAClB9nB,EAAUD,MAAMA,GAChB,MAAM0gC,EAAcriC,EAAU0/C,mCAC1BhgD,GACAA,IAAUA,EAAM8jC,gBAAgBjU,SAAWwvB,GAC3Cv/C,KAAKuP,SAAS,CACV4xB,QAAAA,EACA0B,YAAAA,EACAE,gBAAiB,SACjBiD,aAAc,8BACd0U,6BAA6B,EAC7B1uC,QAAQ,EACRgzC,oBAAqBvF,EAA4Bv5C,OAGrDo/C,EAAmBtb,gBAAgBjU,SAAWwvB,EAC9Cv/C,KAAKuP,SAAS,CACV4xB,QAAAA,EACA0B,YAAAA,EACAE,gBAAiB,SACjBiD,aAAc,8BACd0U,6BAA6B,EAC7B1uC,QAAQ,WASvB,KAAAoxC,cAAgB//B,MAC7BxK,EACAoY,EACAkW,EACA9G,KAEA,MAAM,QAAE5zB,EAAO,KAAErG,EAAI,UAAEI,EAAS,UAAE4B,GAAcpC,KAAKE,OAC/C,KAAEqI,GAASnI,GACX,qBAAE+/C,EAAoB,0BAAEC,GAA8B5/C,EAE5D,GAAIiG,GACI8B,EAAKjI,OAAQ,CACb,MAAM+/C,EAAwB,CAC1BxtC,QAAAA,EACAqT,MAAO+E,EACPoP,UAAAA,SAGE9xB,EAAKjI,OACNggD,iBAAiBD,GACjBriC,MAAM1d,IACH,GAAsB,YAAlBA,EAAO2jB,OACP,OAAOqvB,EAAAA,EAAAA,4BACH,IAAIF,EAAAA,6BACAvgC,EAAQyB,SACRtU,KAAKE,MAAMuG,QAAQiB,cAAc1D,eAAeoP,YAAY+3B,UAC5Dt4B,GAEJ7S,KAAKE,MAAMuG,QAAQiB,eACrBsW,MAAKuiC,IACH,IAAKA,EACD,OAAOp2B,EAAAA,GAAYq2B,OAAO,oCAG9B,MAAMC,EAAsD,iBAAzCh6C,EAAQkD,IAAIzG,OAAO0xB,kBAetC,OAdA50B,KAAKuP,SAAS,CACV4xB,QAAAA,EACA0B,YAAa,GACbE,gBAAiB,UACjBiD,aAAc,eACdh6B,QAAQ,EACRwxC,gCAAiCiD,EACjC9C,0BAA2B,CACvB9qC,QAAAA,EACAwgC,aAAckN,EACdt1B,SAAAA,GAEJ8zB,oBAAoB,IAEjB50B,EAAAA,GAAYloB,aAGvB,OAAQ3B,EAAO4jB,WACX,IAAK,cACD,GAAIzd,EAAQkD,IAAIzG,OAAO+0B,2BAA4B,CAAC,IAADZ,EAAAqpB,EAC/C,MAAMC,GACS,QAAXtpB,EAAA9uB,EAAKjI,cAAM,IAAA+2B,OAAA,EAAXA,EAAa9uB,KAAK+c,aACP,QADgBo7B,EAC3Bn4C,EAAKjI,cAAM,IAAAogD,GAAsE,QAAtEA,EAAXA,EAAan4C,KAAK+c,UAAU3R,MAAKrT,GAAUA,EAAOgf,YAAczM,EAAQyB,kBAAS,IAAAosC,OAAA,EAAjFA,EAAmF3wB,UACjF6wB,EAAiB,oBAAoBn6C,EAAQkD,IAAIzG,OAAO+0B,+DAgB9D,OAfAj4B,KAAKuP,SAAS,CACV4xB,QAAAA,EACA0B,iBACyBl/B,IAArBg9C,GACMR,EACKnoC,QAAQ,gBAAiB2oC,EAAiB1nC,YAC1CjB,QACG,gBACAvR,EAAQkD,IAAIzG,OAAO+0B,2BAA2Bhf,aAEtD2nC,EACV7d,gBAAiB,SACjBiD,aAAc,8BACdh6B,QAAQ,IAELme,EAAAA,GAAYloB,UAChB,CACH,MAAM2+C,EAAiB,yFAQvB,OAPA5gD,KAAKuP,SAAS,CACV4xB,QAAAA,EACA0B,YAAa+d,EACb7d,gBAAiB,SACjBiD,aAAc,8BACdh6B,QAAQ,IAELme,EAAAA,GAAYloB,UAE3B,IAAK,gBAAkB,IAAD4+C,EAQlB,OAPA7gD,KAAKuP,SAAS,CACV4xB,QAAAA,EACA0B,aAAgC,QAAnBge,EAAAvgD,EAAOwgD,oBAAY,IAAAD,OAAA,EAAnBA,EAAqBE,mBAAoBX,EACtDrd,gBAAiB,SACjBiD,aAAc,8BACdh6B,QAAQ,IAELme,EAAAA,GAAYloB,UAEvB,QASI,OARAG,EAAUE,MAAM,mFAChBtC,KAAKuP,SAAS,CACV4xB,QAAAA,EACA0B,YAAaud,EACbrd,gBAAiB,SACjBiD,aAAc,8BACdh6B,QAAQ,IAELme,EAAAA,GAAYloB,cAIlCC,OAAOC,IACJC,EAAU8nB,QAAQ/nB,EAAME,SACxBD,EAAUE,MAAM,yFACZqW,EAAAA,iBAAiBC,mBAAmBzW,EAAME,SAC1CrC,KAAKuP,SAAS,CACV4xB,QAAAA,EACA0B,YAAa1gC,EAAME,QACnB0gC,gBAAiB,SACjBiD,aAAc,8BACdh6B,QAAQ,IAGZhM,KAAKuP,SAAS,CACV4xB,QAAAA,EACA0B,YAAaud,EACbrd,gBAAiB,SACjBiD,aAAc,8BACdh6B,QAAQ,SAQnB,KAAAg1C,kCAAoC3jC,MAAAA,IACjD,MAAM,QAAE5W,EAAO,KAAErG,EAAI,UAAEgC,GAAcpC,KAAKE,OACpC,cAAEohC,GAAkBlhC,EAE1B,GAAIqG,GAAWA,EAAQiB,cAAe,CAClC,MAAM80C,EAAoC,IAE1C,GADkB/1C,EAAQC,QAAQ8B,KAAK2rB,iBAAmB1tB,EAAQC,QAAQ8B,KAAKm9B,OAC3Esb,MAAa3f,GAAAA,EAAehhC,QAAUklB,EAAM,CAC5C,MAAM07B,QAAsBC,EAAAA,EAAAA,kBAAgBC,EAAAA,EAAAA,4BAA2B36C,EAAQiB,eAAgBjB,EAAQiB,eACvG,IAAIg7B,GAAsC,EACO,IAAD2e,EAAhD,GAAI5gD,EAAAA,gBAAgBC,YAAYwgD,GAC5Bxe,GAGK,QAFD2e,EAAAH,EAAcvtC,MACT2iB,GAAqD,2DAAtBA,EAAa7uB,cAChD,IAAA45C,OAAA,EAFDA,EAEG7qB,aAAa,EAExB,MAAM6D,GAAY+T,EAAAA,EAAAA,IAAa3nC,EAAQiB,cAAc1D,gBACjD0+B,IACAld,EAAKwe,gBAAgBrmB,UAAY0c,IAErCoiB,EAAAA,EAAAA,6BAA4B,CAAE1+B,cAAetX,EAAQiB,eAAiB8d,EAAKwe,gBAAgB8N,cAAgB,CACvGtsB,EAAKwe,kBAEJhmB,MAAKX,gBAEI,IAAIrb,SAAQC,GAAWuN,WAAWvN,EAASu6C,KACjDp0C,OAAOiR,SAASksB,YAEnBrjC,OAAMC,IACHC,EAAU8nB,QAAQ,4EAClB9nB,EAAUD,MAAMA,WAGxBC,EAAU8nB,QACN,qHAMC,KAAAo3B,gBAAkBjkC,MAAAA,IAC/BjV,OAAOiR,SAASksB,SACTvjC,QAAQC,WAGF,KAAAs/C,gBAAkB,KAC/B,MAAM,QAAE96C,EAAO,KAAErG,EAAI,UAAEgC,EAAS,UAAE5B,GAAcR,KAAKE,OAC/C,cAAEohC,GAAkBlhC,EAE1B,GAAIqG,GAAWA,EAAQiB,cAAe,CAElC,GADkBjB,EAAQC,QAAQ8B,KAAK2rB,iBAAmB1tB,EAAQC,QAAQ8B,KAAKm9B,OAC9DrE,GAAiBA,EAAchhC,OAAQ,EACpDulC,EAAAA,EAAAA,aAAY,CAAE9nB,cAAetX,EAAQiB,eAAiB45B,EAAchhC,OAAOslC,aACtE5nB,OACA9b,OAAOC,IAAiB,IAAAq/C,EACrBp/C,EAAU8nB,QAAQ,qDAClB9nB,EAAUD,MAAMA,GAChBnC,KAAKuP,SAAS,CACV4xB,SAA6B,QAApBqgB,EAAAlgB,EAAchhC,cAAM,IAAAkhD,OAAA,EAApBA,EAAsB5b,YAAYpb,KAAM,GACjDqY,YAAariC,EAAUulC,8BACvBhD,gBAAiB,SACjBiD,aAAc,8BACdh6B,QAAQ,OAGpB,MAAMy1C,GAAUptB,EAAAA,EAAAA,IAAW,oBAAqBr0B,KAAKE,MAAMuG,QAAQiB,eAC/D+5C,GACAr5C,OAAOiR,SAAS/V,OAAOm+C,QAG3Br/C,EAAU8nB,QAAQ,uFAGtB9nB,EAAU8nB,QAAQ,sDAQT,KAAAw3B,aAAe,KAC5B,MAAM,QAAEj7C,GAAYzG,KAAKE,MAGzB,GAAIuG,EAAQC,SAAWD,EAAQC,QAAQC,QAA0C,WAAhCF,EAAQC,QAAQC,OAAOC,KACpE,MAAO,KAGX,GAAIe,EAAAA,GAASQ,WAAaC,OAAOu5C,WAAY,CACzC,MAAM19C,EAAewC,EAAQC,QAAQzC,aACrC,GAAIA,EACA,OAAIA,EAAaG,IAAMgE,OAAOu5C,YAAc19C,EAAaG,GAAGE,EACjD,KACAL,EAAaquB,IAAMlqB,OAAOu5C,YAAc19C,EAAaquB,GAAGhuB,EACxD,KACAL,EAAa29C,IAAMx5C,OAAOu5C,YAAc19C,EAAa29C,GAAGt9C,EACxD,KACAL,EAAaO,IAAM4D,OAAOu5C,YAAc19C,EAAaO,GAAGF,EACxD,KAEJ,KAIf,MAAO,MAQM,KAAAo6C,YAAemD,GAExBjiD,EAAAA,cAAA,OAAKoB,UAAU,wBACXpB,EAAAA,cAAA,QAAMoB,UAAW,GAAGhB,KAAKE,MAAMgD,OAAOlC,6BAA4B,cAAc,SAChFpB,EAAAA,cAAA,QAAMoB,UAAU,aAAa6gD,IAUxB,KAAAlD,YAAemD,GAExBliD,EAAAA,cAAA,OAAKoB,UAAU,wBACXpB,EAAAA,cAAA,QAAMoB,UAAU,aAAa8gD,GAC7BliD,EAAAA,cAAA,QAAMoB,UAAW,GAAGhB,KAAKE,MAAMgD,OAAOlC,8BAA6B,cAAc,UA38BzFhB,KAAKgB,UAAY,oBACjBhB,KAAK+hD,UACD7hD,EAAMuG,QAAQC,SAAWxG,EAAMuG,QAAQC,QAAQC,QAAgD,WAAtCzG,EAAMuG,QAAQC,QAAQC,OAAOC,KAAoB,KAAO,KACrH5G,KAAKgiD,gBAAkBhiD,KAAKgiD,gBAAgB97C,KAAKlG,MAEjDA,KAAK6G,MAAQ,CACTs6B,QAAS,GACT0B,YAAa,GACbE,gBAAiB,UACjBiD,aAAc,eACdh6B,QAAQ,EACRwxC,gCAAgC,EAChCyE,qCAAqC,EACrC3F,iBAAkB,GAClByC,oBAAoB,EACpBrE,6BAA6B,GAEjC16C,KAAK6C,kBAAmBqE,EAAAA,EAAAA,oBACpBlH,KAAKE,MAAMuG,QAAQC,QAAQS,kBAC3BnH,KAAKE,MAAMkH,aACXpH,KAAKE,MAAMkC,WAEfpC,KAAKgiD,mBAEDr6C,EAAAA,GAASQ,WAAcnI,KAAKE,MAAMuG,QAAQC,QAAQ8B,KAAK2rB,iBAAoBn0B,KAAKE,MAAMuG,QAAQC,QAAQw7C,OAAOC,UAC7G/5C,OAAOiR,SAAS/V,OAAOtD,KAAKE,MAAMuG,QAAQC,QAAQ8B,KAAKiF,WAAa,KA/BlE,eACN,MAA0B,OAAnBzN,KAAK+hD,WAAyC,OAAnB/hD,KAAK+hD,UAmCpC,0BACH/hD,KAAKuP,SAAS,IACd,MAAM+xB,QAAsBthC,KAAKE,MAAME,KAAKkhC,cAC5CthC,KAAKE,MAAMgD,OAAOijC,QAAS/B,MAAO9C,MAAAA,OAAa,EAAbA,EAAesE,YAAYn+B,OAAQ,GACrEzH,KAAKuP,SAAS,CACV+sC,iBAAkBhb,MAAAA,OAAa,EAAbA,EAAeO,qBAGjCl6B,EAAAA,GAASQ,YACTC,OAAOC,iBAAiB,SAAUrI,KAAKgiD,iBACvChiD,KAAKgiD,mBAIN94C,uBACCvB,EAAAA,GAASQ,WACTC,OAAOe,oBAAoB,SAAUnJ,KAAKgiD,iBAI3Ct7B,sBACHC,EACAC,GAEA,OAAI5mB,KAAK6G,QAAU+f,GAAa5mB,KAAKE,QAAUymB,EAM5CxmB,SACH,MAAM,QAAEgmC,EAAO,UAAEnlC,GAAchB,KAAKE,MAAMgD,QACpC,4BAAEk/C,EAA2B,+BAAEC,GAAmCriD,KAAKE,MAAMM,WAC7E,cAAE8gC,EAAa,KAAE/4B,GAASvI,KAAKE,MAAME,KAE3C,GAAoB,YAAhBmI,EAAK0b,QAAwBq+B,EAAAA,iBAAiBC,kBAAkBjhB,IAA2C,YAAzBA,EAAcrd,OAAsB,CACtH,MAAMyiB,EAAUj8B,GAAAA,GAAA,GACRzK,KAAKE,OAAiD,IAC1Dg8C,mBAAoB,CAChBzwC,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAW9J,KAAKgB,UAAWA,IAE1CijB,OAAQ,UACR0iB,cAAe/mC,EAAAA,cAACgnC,EAAAA,EAAO,CAAC5lC,UAAWhB,KAAKgB,UAAW6lC,IAAK7mC,KAAKE,MAAMM,UAAUsmC,2BAC7EX,QAASA,GAAWvmC,EAAAA,cAACmnC,EAAAA,QAAOxlC,OAAA+B,OAAA,CAACtC,UAAW,GAAGhB,KAAKgB,sBAA0BmlC,IAC1E3lC,UAAWR,KAAKE,MAAMM,YAE1B,OAAOR,KAAKE,MAAMmN,WAAWq5B,GAGjC,GAAoB,WAAhBn+B,EAAK0b,QAAgD,WAAzBqd,EAAcrd,OAAqB,CAC/D,MAAMyiB,EAAUj8B,GAAAA,GAAA,GACRzK,KAAKE,OAAiD,IAC1Dg8C,mBAAoB,CAChBzwC,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAW,GAAG9J,KAAKgB,YAAaA,IAE/CijB,OAAQ,SACR0iB,cAAe/mC,EAAAA,cAAC07C,GAA+B,CAACnX,UAAU,SAASC,KAAMie,IACzElc,QAASA,GAAWvmC,EAAAA,cAACmnC,EAAAA,QAAOxlC,OAAA+B,OAAA,CAACtC,UAAW,GAAGhB,KAAKgB,sBAA0BmlC,IAC1E3lC,UAAWR,KAAKE,MAAMM,YAG1B,OAAOR,KAAKE,MAAMmN,WAAWq5B,GAGjC,MAAM8b,EAAsBlhB,GAAiBA,EAAchhC,OACrDuhC,EAAqB2gB,GAAuBA,EAAoB3gB,mBAEtE,IAAK2gB,IAAwB3gB,GAAoD,IAA9BA,EAAmBpgC,OAAc,CAChF,GAAI+gD,IAAwBxiD,KAAKyiD,gBAAkB96C,EAAAA,GAASQ,UAExD,OADAC,OAAOiR,SAAS9V,KAAOvD,KAAKiiC,2BACrB,KAGX,MAAMgF,EAAcx8B,GAAAA,GAAA,GACZzK,KAAKE,OAAiD,IAC1Dg8C,mBAAoB,CAChBzwC,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAW,GAAG9J,KAAKgB,YAAaA,IAE/CijB,OAAQ,QACR0iB,cAAe/mC,EAAAA,cAAC07C,GAA+B,CAACnX,UAAU,QAAQC,KAAMge,IACxEjc,QAASA,GAAWvmC,EAAAA,cAACmnC,EAAAA,QAAOxlC,OAAA+B,OAAA,CAACtC,UAAW,GAAGhB,KAAKgB,sBAA0BmlC,IAC1E3lC,UAAWR,KAAKE,MAAMM,UACtBkiD,aACIF,GACAxiD,KAAK2iD,4BAA4BH,EAAqBxiD,KAAKolC,4CAC/Dwd,qBAAsBJ,GAAuBxiD,KAAK6iD,6BAA6BL,EAAoB5c,YAAYpb,IAC/GwW,qBAAsB,CAClBhgC,UAAW,GAAGhB,KAAKgB,uBACnB0K,IAAK,SAIb,OAAO1L,KAAKE,MAAMmN,WAAW45B,GAGjC,MAAMz8B,EAASC,GAAAA,GAAA,GACPzK,KAAKE,OAAiD,IAC1Dg8C,mBAAoB,CAChBzwC,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAW,GAAG9J,KAAKgB,YAAaA,IAE/CijB,OAAQ,UACR6+B,sBAAuB9iD,KAAK6G,MAAMmF,QAC9BpM,EAAAA,cAAA,OAAKoB,UAAW,GAAGhB,KAAKgB,6BACpBpB,EAAAA,cAACkjC,EAAAA,MAAK,CAAC7hC,MAAOjB,KAAK6G,MAAMk8B,gBAAiB/2B,OAAQhM,KAAK6G,MAAMmF,OAAQE,OAAQlM,KAAKqlC,YAC9EzlC,EAAAA,cAAA,oBAAgB,aAAaI,KAAK6G,MAAMg8B,eAIpDsD,QAASA,GAAWvmC,EAAAA,cAACmnC,EAAAA,QAAOxlC,OAAA+B,OAAA,CAACtC,UAAW,GAAGhB,KAAKgB,sBAA0BmlC,IAC1EnF,qBAAsB,CAClBhgC,UAAW,GAAGhB,KAAKgB,uBACnB0K,IAAK,OAETq3C,cAAe,CACX/hD,UAAW,GAAGhB,KAAKgB,mBACnB0K,IAAK,QACLqE,KAAM,QAEVizC,iBAAkB,CACdhiD,UAAW,GAAGhB,KAAKgB,uBACnB0K,IAAK,MAETu3C,qBAAsBjjD,KAAKkjD,yBAAyBljD,KAAKE,MAAMM,WAC/DujC,eAAgB,CACZ/iC,UAAW,GAAGhB,KAAKgB,6BACnB0K,IAAK,KAETy3C,WAAYnjD,KAAKojD,qBACjBC,UAAW,CAAEC,eAAgBC,GAAAA,CAASvjD,KAAKk/C,gBAAiB,MAC5DwD,aAAc1iD,KAAK2iD,4BAA4BH,EAAqBxiD,KAAKolC,4CACzEoe,WAAYxjD,KAAK+9C,oBACjB0F,sBAAuBzjD,KAAKy9C,+BAC5BmF,qBAAsB5iD,KAAK6iD,6BAA6BL,EAAoB5c,YAAYpb,IACxFu0B,mBAAoB/+C,KAAK6G,MAAMk4C,mBAC/BnG,uBAAwB54C,KAAK8+C,wBAC7BE,oBAAqBh/C,KAAK6G,MAAMm4C,oBAChCzwC,SAAUvO,KAAKuO,WAGnB,OAAOvO,KAAKE,MAAMmN,WAAW7C,GAG1B2uC,SAAS3zB,EAAmC0zB,GAC/C1zB,EAAK0zB,UAAYA,EAEjB,MAAMwK,EACF1jD,KAAK6G,MAAMy1C,iBAAiB7sC,KAAIoD,IAAU,IAAA8wC,EAAArgB,EAItC,OAHuB,QAAnBqgB,EAAA9wC,EAAQgxB,mBAAW,IAAA8f,OAAA,EAAnBA,EAAqB5f,eAAevjB,WAA2B,QAArB8iB,EAAK9d,EAAKqe,mBAAW,IAAAP,OAAA,EAAhBA,EAAkBS,eAAevjB,UAChFgF,EAAK0zB,UAAYA,GAEdrmC,MACL,GAEV7S,KAAKuP,SAAS,CACV+sC,iBAAkBoH,IAInBE,YAAY1K,GACf,MAAMwK,EACF1jD,KAAK6G,MAAMy1C,iBAAiB7sC,KAAI+V,IAC5BA,EAAK0zB,UAAYA,EACV1zB,MACL,GAEVxlB,KAAKuP,SAAS,CACV+sC,iBAAkBoH,IAIlBR,yBAAyB1iD,GAC7B,MAAM,aACFu5C,EAAY,kBACZ8J,EAAiB,YACjBC,EAAW,qBACXC,EAAoB,eACpBC,EAAc,oBACdC,EAAmB,mBACnBC,EAAkB,kBAClBtI,EAAiB,uBACjBC,GACAr7C,EACE2jD,EAA2C,CAC7CpK,aAAcA,EACdK,cAAeyJ,EACfjmB,YAAakmB,EACbhI,iBAAkBiI,EAClBhI,WAAYiI,EACZhI,gBAAiBiI,EACjBhI,eAAgBiI,EAChBtI,kBAAAA,EACAhqB,MAAO5xB,KAAK6G,MAAMy1C,iBAClB/tC,SAAUvO,KAAKuO,SACfu/B,aAAeoL,IACXl5C,KAAK4jD,YAAY1K,IAErBxW,oCAAqC1iC,KAAKolC,2CAC1CyW,uBAAwBA,GAG5B,OAAOj8C,EAAAA,cAAC27C,GAAyBh6C,OAAA+B,OAAA,GAAK6gD,IAGlCtB,6BAA6BtW,GACjC,OACI3sC,EAAAA,cAAC41C,EAAwBj0C,OAAA+B,OAAA,GACjBtD,KAAKE,MAAK,CACdqsC,gBAAiBA,EACjBwJ,cAAe/1C,KAAK6G,MAAMy1C,kBAAoBt8C,KAAK6G,MAAMy1C,iBAAiBvlC,QAAOyO,GAAQA,EAAK0zB,YAC9FtD,oBAAqB51C,KAAK48C,qBAC1B9G,kBAAmB91C,KAAKm8C,mBACxB9F,eAAgBr2C,KAAKuO,SACrBm0B,oCAAqC1iC,KAAKolC,2CAC1CviC,iBAAkB7C,KAAK6C,oBAK3BuhD,2CACJ,MAAO,CACHvb,mBAAoB7oC,KAAKE,MAAMM,UAAUqoC,mBACzCC,6BAA8B9oC,KAAKE,MAAMM,UAAUsoC,6BACnDC,mCAAoC/oC,KAAKE,MAAMM,UAAUuoC,mCACzDC,mCAAoChpC,KAAKE,MAAMM,UAAUwoC,mCACzDC,sCAAuCjpC,KAAKE,MAAMM,UAAUyoC,sCAC5DC,kCAAmClpC,KAAKE,MAAMM,UAAU0oC,mCAIxD2U,0CACJ,MAAO,CACHhV,mBAAoB7oC,KAAKE,MAAMM,UAAUqoC,mBACzCC,6BAA8B9oC,KAAKE,MAAMM,UAAUsoC,6BACnDub,iCAAkCrkD,KAAKE,MAAMM,UAAU6jD,iCACvDC,oCAAqCtkD,KAAKE,MAAMM,UAAU8jD,oCAC1DC,iCAAkCvkD,KAAKE,MAAMM,UAAU+jD,iCACvDryC,cAAelS,KAAKE,MAAMM,UAAU0R,cACpCC,kBAAmBnS,KAAKE,MAAMM,UAAU2R,kBACxCC,iBAAkBpS,KAAKE,MAAMM,UAAU4R,kBAqFvCuwC,4BACJrhB,EACAoB,GAEA,MAAM,GAAEhhC,EAAE,SAAEoD,EAAQ,QAAE2B,EAAO,UAAEjG,GAAcR,KAAKE,OAC5C,2BACFw2C,EAA0B,yBAC1BM,EAAwB,yBACxBwN,EAAwB,sBACxBjc,EAAqB,wBACrBC,EAAuB,wBACvBC,EAAuB,wBACvBC,EAAuB,0BACvBC,GACAnoC,EA2BJ,MJ7diCN,CAAAA,IACrC,MAAM,UAAEM,EAAS,oCAAEkiC,GAAwCxiC,GACrD,yBAAEskD,GAA6BhkD,EAErC,MAAO,CACHikD,iBAAkBhO,EAAiCv2C,GACnDwkD,gBAAiBhiB,GAAuCiU,EAA+Bz2C,GACvFykD,gBAAiBjiB,GACb9iC,EAAAA,cAACsF,EAAAA,OAAM,CAAClE,UAAU,uDAAuDG,QAASm1C,EAAyBp2C,IACtGskD,GAGTI,mBAAoBliB,GAAuC9iC,EAAAA,cAACs3C,EAAkB31C,OAAA+B,OAAA,GAAKpD,MIid5E2kD,CAzBkD,CACrDzkD,KAAM,CAAEkhC,cAAAA,GACR5/B,GAAAA,EACAoD,SAAAA,EACA2B,QAAAA,EACA5D,iBAAkB7C,KAAK6C,iBACvBq+B,SAAU,CACN4V,iBAAkB92C,KAAKshD,gBACvB9K,iBAAkBx2C,KAAKuhD,iBAE3B7e,oCAAAA,EACAkU,iCAAkC52C,KAAKonC,0CAA0C5mC,GACjFA,UAAW,CACPk2C,2BAAAA,EACAM,yBAAAA,EACAwN,yBAAAA,EACAhc,wBAAAA,EACAC,wBAAAA,EACAC,wBAAAA,EACAH,sBAAAA,EACAI,0BAAAA,EACAC,gCAAiC5oC,KAAKokD,8CAO1Chd,0CAA0C5mC,GAC9C,MAAO,CACHinC,yBAA0BjnC,EAAUskD,6BACpCnd,wBAAyBnnC,EAAUonC,mBACnCC,2BAA4BrnC,EAAUonC,mBACtCE,yBAA0B,GAC1BE,yBAA0BxnC,EAAUwnC,yBACpCC,yBAA0BznC,EAAUu2C,8BACpC5O,+BAAgC3nC,EAAUukD,gBAgD1CtC,eACJ,OAAwC,IAAjCziD,KAAKk+C,wBAGRA,wBACJ,MAAMF,EAAeh+C,KAAKE,MAAMgD,OAAO86C,cAAgB,GACvD,OAAQh+C,KAAKE,MAAMuG,QAAQC,QAAQ6iC,QAAUvpC,KAAKE,MAAMuG,QAAQC,QAAQ6iC,MAAMyb,KAAOhH,GAAiB,EAwClGoF,qBACJ,MAAM,iBACF6B,EAAgB,eAChBzM,EAAc,uBACdC,EAAsB,UACtByM,EAAS,kBACT/yC,EAAiB,iBACjBC,EAAgB,oCAChB+yC,EAAmC,sCACnCC,EAAqC,0BACrC/sB,EAAyB,yBACzBF,EAAwB,0BACxBM,EAAyB,uBACzBI,EAAsB,iBACtBwsB,EAAgB,yBAChBxmB,EAAwB,yBACxBD,EAAwB,+BACxBqc,EAA8B,8BAC9BF,GACA/6C,KAAKE,MAAMM,WAET,QAAEiG,EAAO,UAAErE,EAAS,KAAEhC,GAASJ,KAAKE,OACpC,SAAE+vB,GAAa7vB,GACf,cAAE8D,GAAkBlE,KAAKE,MAAMgD,OAErC,OAAOlD,KAAK6G,MAAMy1C,iBAAiB7sC,KAAI,CAAC+V,EAAM7V,KAAS,IAAA4zB,EAiDnD,MHzgB0BhY,CAAAA,IAAsE,IAAAqY,EACxG,MAAM,kBACFqU,EAAiB,gBACjBjU,EAAe,MACf/mB,EAAK,QACLxW,EAAO,cACPvC,EAAa,SACb+mB,EAAQ,UACRzqB,EAAS,SACT+N,EAAQ,oCACRm0B,GACAnX,EACE1Y,EAAUolC,EAAkBpU,aAC5B,OAAEpY,EAAM,cAAEkuB,GAAkB3V,GAC5B,iCAAEuU,EAAgC,mBAAEjQ,EAAkB,iBAAE2c,GAAqBzkD,EACnF,IAAKqS,EACD,OAAO,KAGX,MAAM,OAAE2N,EAAM,gBAAE9L,GAAoB7B,EAAQkxB,eACtC6V,GAAgB1c,EAAAA,EAAAA,qBAClB1c,EACA/Z,EAAQiB,cAAc1D,eAAeoP,YAClB,QAD6BwwB,EAChDn9B,EAAQC,QAAQiD,WAAG,IAAAi6B,GAAQ,QAARA,EAAnBA,EAAqB1gC,cAAM,IAAA0gC,OAAA,EAA3BA,EAA6BzG,kBAE3B4b,EAAqBxtB,EAAMhd,SAAW,0BAA4B,mDAClEuqC,EAAwBvtB,EAAMhd,SAAW,6BAA+B,sDAE9E,MAAO,CACHA,SAAAA,EACAm0B,oCAAqCA,EACrC4iB,WACI1lD,IAAAA,cAAA,SAAOoB,UAAU,sBACbpB,IAAAA,cAAA,sBACgBqlD,EACZjkD,UAAU,iBACVupC,KAAK,WACL6O,QAASnB,EAAkBiB,UAAS,eACtBjB,EAAkBiB,UAChCr0B,SAAUo0B,EAAoBhB,EAAmB1sB,KAErD3rB,IAAAA,cAAA,QAAMoB,UAAU,eAGxB4D,IAAK6mB,EACLouB,mBAAoBnX,GAAuCoX,GAAqBvuB,GAChFwuB,aAAcC,EACV,8CACAvzC,EACAoM,EAAQkxB,eAAet8B,KACvBiN,EACAklC,EACA11C,GAEJ+1C,YAAaC,GAAkB3uB,GAC/B8nB,aAAcp2B,GAASk9B,GAAa5uB,GACpC6uB,cAAevnC,GACXjT,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,OAAKoB,UAAU,gDAAgDwf,GAC9C,SAAhB+K,EAAMppB,MACHvC,IAAAA,cAAA,OAAKoB,UAAU,sDAAsD65C,GAAoBtvB,SAEzF5nB,GAIZ02C,qBAAsBp9B,EAClBrd,IAAAA,cAAA,OAAKoB,UAAU,yDAAyD24C,GAAiB18B,EAAM08B,oBAE/Fh2C,EAEJ8hC,cAAeha,EACfkX,cACKD,GACDmW,EACIttB,EAAMhd,SACNuqC,EACAP,EACAP,EAAyBzsB,GAAO8sB,iBAExCiC,oBAAqB16C,IAAAA,cAAA,WAAM26C,EAAkBhvB,EAAOE,IACpDuwB,gBAAiB/wB,EACjBs6B,gBACK7iB,GACDmW,EAAgBttB,EAAMhd,SAAUwqC,EAAoBzQ,EAAoB0P,EAAyBzsB,GAAO6sB,eAC5GoN,mBACKj3C,GAAYm0B,EACT9iC,IAAAA,cAACy5C,EAAiB93C,OAAA+B,OAAA,GAAKioB,EAAK,CAAEwtB,mBAAoBA,EAAoBD,sBAAuBA,UAE7Fn1C,EAER8hD,MAAO7lD,IAAAA,cAAC04C,EAAK/2C,OAAA+B,OAAA,GAAKioB,EAAK,CAAEwtB,mBAAoBA,EAAoBD,sBAAuBA,KACxF/zB,SAAUwG,EAAMm6B,gBG6aLC,CAhD8C,CACjD1N,kBAAmBzyB,EACnBwe,gBAAiBxe,EAAKwe,gBACtB/mB,MAAuB,QAAlBsmB,EAAE/d,EAAKqe,mBAAW,IAAAN,OAAA,EAAhBA,EAAkBqiB,aACzBzjD,MAAOqjB,EAAKrjB,MACZujD,cAAelgC,EAAKkgC,cACpBj/C,QAAAA,EACAi0C,4BAA6B16C,KAAK6G,MAAM6zC,4BACxCtmC,WAAYoR,EAAKqe,YACX7jC,KAAK8jC,yBAAyBte,EAAKqe,YAAYE,eAAgBt9B,EAAS+e,EAAKwe,gBAAgBrmB,WAC7F,GACNzZ,cAAAA,EACA9B,UAAAA,EACAof,SAAUxhB,KAAKE,MAAMwB,GACrB6f,eAAgBvhB,KAAKE,MAAM4E,SAC3BmmB,SAAUzF,EAAKwe,gBAAgBjU,SAC/BmR,SAAU,CACNgX,WAAYl4C,KAAKo9C,cACjBjF,aAAcn4C,KAAKghD,kCACnBvG,iBAAkBz6C,KAAKk/C,gBACvB/F,SAAUn5C,KAAKm5C,SAASjzC,KAAKlG,OAEjCQ,UAAW,CACPykD,iBAAAA,EACAzM,eAAAA,EACAC,uBAAAA,EACApgB,0BAAAA,EACAF,yBAAAA,EACAM,0BAAAA,EACAvmB,cAAegzC,EACf/yC,kBAAAA,EACAC,iBAAAA,EACAymB,uBAAAA,EACA0f,iCAAkC6M,EAClC9c,mBAAoB6c,EACpBE,iBAAAA,EACAxmB,yBAAAA,EACAD,yBAAAA,EACAqc,+BAAAA,EACAF,8BAAAA,GAEJprC,MAAAA,EACApB,SAAUvO,KAAKuO,SACfqqC,uBAAwB54C,KAAK8+C,wBAC7Bpc,oCAAqC1iC,KAAKolC,2CAC1CnV,SAAUA,GAAYA,EAAS3vB,YAuVnC0hD,kBACJhiD,KAAK+hD,UAAY/hD,KAAK0hD,kBA95B1Bn/C,EAAAA,EAAAA,IAAA,CADC8N,EAAAA,IAAU,kCAGD9N,EAAAA,EAAAA,IAAA,CAAT+N,EAAAA,IAAQ,+BAoCT/N,EAAAA,EAAAA,IAAA,CADCsjD,EAAAA,IAAM,uCA3CL3J,IAAkB35C,EAAAA,EAAAA,IAAA,CADvBC,EAAAA,IACK05C,IA+9BN,oGCnlCA,MAgHM4J,EAAcA,CAACjzC,EAAsCkzC,EAAuB/C,KAC9E,IAAKnwC,EACD,OAAO,KAGX,MAAM,IACFjO,EAAG,WACH0gD,EAAU,mBACVzL,EAAkB,aAClBE,EAAY,aACZ1G,EAAY,cACZ+G,EAAa,eACbmL,EAAc,aACd5iB,EAAY,YACZsX,EAAW,qBACXI,EAAoB,oBACpBC,EAAmB,gBACnB0B,EAAe,MACfyJ,EAAK,SACLl3C,EAAQ,kBACRi3C,EAAiB,oCACjB9iB,EAAmC,SACnC3d,GACAlS,EAYEmzC,EAViBjhC,EACjB,CACIkhC,cAAe,OACf9tC,QAAS,IAEb,CACI8tC,cAAe,OACf9tC,QAAS,GAKnB,OACIvY,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,CAACsB,IAAKA,EAAK5D,UAAW,GAAGgiD,EAAkBhiD,aAAiBgiD,GAC7DpjD,EAAAA,cAAA,UAAK0lD,IACH/2C,GAAYm0B,GAAuC9iC,EAAAA,cAAA,MAAIsY,MAAO8tC,GAAiBnM,GACjFj6C,EAAAA,cAAA,MAAIsY,MAAO8tC,GAAiBjM,GAC3BxrC,EACG3O,EAAAA,cAAA,UACIA,EAAAA,cAAA,WAAMw6C,GACNx6C,EAAAA,cAAA,OAAKsY,MAAO8tC,GACPD,EAAa,IAAG,IAChB/J,IAITp8C,EAAAA,cAAA,UAAKw6C,IAEP7rC,GAAY3O,EAAAA,cAAA,MAAIsY,MAAO8tC,GAAiB/L,IACxC1rC,GAAY3O,EAAAA,cAAA,MAAIsY,MAAO8tC,GAAiB3S,IACxC9kC,GAAY3O,EAAAA,cAAA,MAAIsY,MAAO8tC,GAAiB3L,IACxC9rC,GAAY3O,EAAAA,cAAA,MAAIsY,MAAO8tC,GAAiB1L,GACzC/rC,GAAY3O,EAAAA,cAAA,MAAIsY,MAAO8tC,GAAiBP,IACvCl3C,IAAam0B,GACX9iC,EAAAA,cAAA,MAAIsY,MAAO8tC,GACNT,EACA5iB,GAGT/iC,EAAAA,cAAA,MAAIsY,MAAO8tC,GAAiBR,KAKxC,EArLmEtlD,IAC/D,MAAM,mBACFg8C,EAAkB,OAClBj4B,EAAM,cACN0iB,EAAa,QACbR,EAAO,cACP4c,EAAa,qBACbE,EAAoB,WACpBE,EAAU,iBACVH,EAAgB,sBAChBF,EAAqB,qBACrB9hB,EAAoB,aACpB0hB,EAAY,WACZc,EAAU,sBACVC,EAAqB,qBACrBb,EAAoB,mBACpB7D,EAAkB,oBAClBC,EAAmB,uBACnBpG,EACAp4C,WAAW,eACPukD,EAAc,kBACdlB,EAAiB,YACjBC,EAAW,qBACXC,EAAoB,eACpBC,EAAc,oBACdC,EAAmB,uBACnBpI,IAEJ37C,EAEEgmD,EAAgBtmD,EAAAA,aAAkB,KACpCg5C,GAA0BA,OAAuBj1C,KAClD,CAACi1C,IAEJ,OACIh5C,EAAAA,cAAC+Q,EAAAA,OAAMpP,OAAA+B,OAAA,GAAK44C,GACP/V,EACAnF,GACGphC,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAK09B,GACL0hB,MAAAA,OAAY,EAAZA,EAAc+B,iBACd/B,MAAAA,OAAY,EAAZA,EAAcgC,eACdhC,MAAAA,OAAY,EAAZA,EAAciC,eACdjC,MAAAA,OAAY,EAAZA,EAAckC,oBACb7F,GAAsB+D,GAG/BF,EACW,YAAX3+B,GAAwB0iB,EACxBoc,GAAiBI,GAAcA,EAAW1hD,OAAS,GAChD7B,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAU,8BACZpB,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKy/C,GACLE,EACDrjD,EAAAA,cAAA,aACKujD,GACGA,EAAW1zC,KAAIoD,GACJizC,EAAYjzC,EAASoxC,EAAqBjB,OAIhEQ,GAGRC,EACD7jD,EAAAA,cAACmM,EAAAA,MAAK,CACFE,cAAc,sCACdu+B,WAAS,EACT2b,MAAM,EACNC,gBAAgB,aAChBp6C,OAAQ+yC,EACR7yC,OAAQg6C,GAERtmD,EAAAA,cAACwM,EAAAA,YAAW,CAACF,OAAQg6C,GAAa,mBAClCtmD,EAAAA,cAAC0M,EAAAA,UAAS,KACN1M,EAAAA,cAAA,UACIA,EAAAA,cAAA,UAAKo/C,MAAAA,OAAmB,EAAnBA,EAAqBjF,cAC1Bn6C,EAAAA,cAAA,MAAIoB,UAAU,gBACVpB,EAAAA,cAAA,YAAOkkD,EAAW,KACjB9E,MAAAA,OAAmB,EAAnBA,EAAqB/E,aAE1Br6C,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOi8C,EAAsB,KAC5BmD,MAAAA,OAAmB,EAAnBA,EAAqBnF,oBAE1Bj6C,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOikD,EAAiB,KACvB7E,MAAAA,OAAmB,EAAnBA,EAAqB5E,eAE1Bx6C,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOmkD,EAAoB,KAC1B,IACA/E,MAAAA,OAAmB,EAAnBA,EAAqB3L,cAE1BzzC,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOokD,EAAc,KACpB,IACAhF,MAAAA,OAAmB,EAAnBA,EAAqB3E,sBAE1Bz6C,EAAAA,cAAA,UACIA,EAAAA,cAAA,YAAOqkD,EAAmB,KACzBjF,MAAAA,OAAmB,EAAnBA,EAAqB1E,qBAEzBwI,GAAyBljD,EAAAA,cAAA,UAAKkjD,KAGvCljD,EAAAA,cAAC00C,EAAAA,YAAW,KACR10C,EAAAA,cAACsF,EAAAA,OAAM,CAAC/D,QAAS+kD,GAAgBnB,y1BCjC9C,MAAMsB,UAAiCzmD,IAAAA,cAyB1CC,YAAmBK,GACfwC,MAAMxC,GAwKF,KAAAomD,wBAA2B/yC,IAC/B,MAAMgzC,EAASvmD,KAAK6G,MAAM2/C,sBAC1B,GAAIxmD,KAAKE,MAAMuG,QAAQkD,IAAIzG,OAAOujD,yBAA2BF,EAAU,EAAG,CACtE,MAAMG,EAAW,GACjB,IAAK,IAAI/2C,EAAQ,EAAGA,EAAQ42C,EAAS52C,IACjC+2C,EAAS/uC,KACL/X,IAAAA,cAAA,MAAIoB,UAAU,GAAG4D,IAAK+K,GAClB/P,IAAAA,cAAA,OAAKoB,UAAU,0BAI3B,OAAO0lD,IASE,KAAAC,uBAA0BnsC,IAAwB,IAAAnT,EAC/Du/C,EAAAA,GAAuB79C,SAAS/I,KAAKE,MAAMuG,QAAQC,QAA2C,QAApCW,EAAErH,KAAKE,MAAME,KAAKmH,0BAAkB,IAAAF,OAAA,EAAlCA,EAAoC/G,QAAQumD,eAAersC,GACvHxa,KAAKuP,UAASu3C,IAAgB,IAAAC,EAC1B,MAAO,CACHC,aAAwC,QAA5BD,EAAED,EAAcE,oBAAY,IAAAD,OAAA,EAA1BA,EAA4BhwC,QAAO7C,GAAQA,EAAKsG,SAAWA,SAQpE,KAAAysC,qBAAmC,KAChDjnD,KAAKuP,UAASu3C,IAAgB,IAAAI,EAC1B,MAAO,CACH5hD,aAAsC,QAA1B4hD,EAAEJ,EAAcxhD,kBAAU,IAAA4hD,EAAAA,EAAIlnD,KAAKmnD,uCAQ1C,KAAAC,mCAAqC,KAAK,IAAAC,EACvDT,EAAAA,GAAuB79C,SAAS/I,KAAKE,MAAMuG,QAAQC,QAA2C,QAApC2gD,EAAErnD,KAAKE,MAAME,KAAKmH,0BAAkB,IAAA8/C,OAAA,EAAlCA,EAAoC/mD,QAAQgnD,WACxGtnD,KAAKuP,SAAS,CAAEy3C,aAAc,MAnN9BhnD,KAAK6G,MAAQ,GAEb7G,KAAKunD,YAAc,GAAGlB,EAAyBrlD,aAAahB,KAAKE,MAAMwB,MAAMm2C,EAAAA,OAAOC,KAAKC,iBACzFsO,EAAyBmB,qBAAuBxnD,KAAKunD,YAErDvnD,KAAKmnD,kCAAmC,EAGrCj/C,oBAAiB,IAAAu/C,EAChBznD,KAAKunD,cAAgBlB,EAAyBmB,uBAIlDxnD,KAAK0nD,gBACLd,EAAAA,GAAuB79C,SAAS/I,KAAKE,MAAMuG,QAAQC,QAA2C,QAApC+gD,EAAEznD,KAAKE,MAAME,KAAKmH,0BAAkB,IAAAkgD,OAAA,EAAlCA,EAAoCnnD,QAAQqnD,kBAAkBC,UACtH,CACIC,WAAY7nD,KAAKunD,YAKjBO,QAASA,KACL9nD,KAAKmnD,kCAAmC,EAExCnnD,KAAK0nD,oBAMdx+C,uBAAoB,IAAA6+C,EACvBnB,EAAAA,GAAuB79C,SACnB/I,KAAKE,MAAMuG,QAAQC,QACe,QADRqhD,EAC1B/nD,KAAKE,MAAME,KAAKmH,0BAAkB,IAAAwgD,OAAA,EAAlCA,EAAoCznD,QACtCqnD,kBAAkBK,YAAYhoD,KAAKunD,aAGlCpnD,SAAM,IAAA8nD,EAAAC,EACT,GAAIloD,KAAKunD,cAAgBlB,EAAyBmB,qBAC9C,OAAO,KAGX,MAAMh9C,EAASC,EAAAA,EAAA,GACRzK,KAAKE,OAAK,IACbuL,YAAa,CACTA,YAAazL,KAAKE,MAClBc,UAAWqlD,EAAyBrlD,UACpCU,GAAI1B,KAAKunD,aAEbY,eAAgBnoD,KAAKooD,wBACrBC,oBAAoB,EACpBC,gCAAiCtoD,KAAKmnD,mCAGpC5zC,EAAcvT,KAAKuoD,oCAA2D,QAAxBN,EAACjoD,KAAK6G,MAAMmgD,oBAAY,IAAAiB,EAAAA,EAAgC,QAAhCC,EAAIloD,KAAKE,MAAME,KAAK4mD,oBAAY,IAAAkB,OAAA,EAA5BA,EAA8B5nD,QAEtH,IAAKG,EAAAA,gBAAgBC,YAAY6S,GAC7B,OAAOvT,KAAKE,MAAMmN,WAAW7C,GAGjCA,EAAU69C,oBAAqB,EAE/B,MAAMG,EAAgBxoD,KAAKyoD,oBAiB3B,OAhBKnG,EAAAA,iBAAiBC,kBAAkBiG,KACpCh+C,EAAUk+C,cAAgB1oD,KAAKE,MAAMM,UAAUmoD,4CAC1C3wC,QAAQ,MAAOzE,EAAY9R,OAAOwX,YAClCjB,QAAQ,MAAOwwC,EAAcvvC,aAGtCzO,EAAUlF,WAAatF,KAAK6G,MAAMvB,WAClCkF,EAAUo+C,oBAAsB5oD,KAAKinD,qBACrCz8C,EAAUq+C,iBAAmB7oD,KAAK8oD,qBAAqBv1C,GACvD/I,EAAUu+C,wBAA0B/oD,KAAKsmD,wBAAwB/yC,GACjE/I,EAAUw+C,uBAAwB30B,EAAAA,EAAAA,IAAW,qBAAsBr0B,KAAKE,MAAMuG,QAAQiB,eACtF8C,EAAUy+C,kCAAoCjpD,KAAKonD,mCACnD58C,EAAU0+C,sBAAwBlpD,KAAK2mD,uBACvCn8C,EAAU2+C,qBAAuBnpD,KAAKopD,4BAA4B5+C,EAAUw+C,uBAC5Ex+C,EAAU6+C,eAAiBrpD,KAAKspD,wBAEzBtpD,KAAKE,MAAMmN,WAAW7C,GAEzB+9C,oCAAoCh1C,GAAwD,IAAAg2C,EAChG,MAAMlvB,GAAY+T,EAAAA,EAAAA,IAAapuC,KAAKE,MAAMuG,QAAQC,UAClD4zB,EAAAA,EAAAA,mBAAkBD,GAElB,OAD0F,QAAlEkvB,EAAGh2C,MAAAA,OAAW,EAAXA,EAAawD,QAAOlE,GAAWA,EAAQwnB,YAAcA,WAAU,IAAAkvB,EAAAA,EAAI,GAG1F,sBAAmB,IAAAC,EACvB,MAAM/4C,EAAQm2C,EAAAA,GAAuB79C,SAAS/I,KAAKE,MAAMuG,QAAQC,QAA2C,QAApC8iD,EAAExpD,KAAKE,MAAME,KAAKmH,0BAAkB,IAAAiiD,OAAA,EAAlCA,EAAoClpD,QAAQmQ,MAChH8a,EAAQ,IAAIk+B,EAAAA,2CAA2Ch5C,GACvD8C,QAAoBm2C,EAAAA,EAAAA,6CAA4Cn+B,EAAOvrB,KAAKE,MAAMuG,QAAQiB,eAC1FiiD,EAAyB3pD,KAAKuoD,oCAAoCh1C,GACxEvT,KAAKuP,SAAS,CAAEy3C,aAAc2C,IAC9B3pD,KAAK4pD,0BAA0BD,GAG3BC,0BAA0Br2C,GAC9B,GAAIA,GAAe9S,EAAAA,gBAAgBC,YAAY6S,GAAc,CACzD,MAAMs2C,EAAQ7pD,KAAKyoD,oBACnB,GAAIoB,GAAS7pD,KAAKE,MAAMuG,QAAQkD,IAAIzG,OAAOujD,wBAAyB,CAChE,MAAMqD,EAAcD,EAAQt2C,EAAY9R,OAExC,OADAzB,KAAKuP,SAAS,CAAEi3C,sBAAuBsD,IAChCA,IAMXhB,qBAAqB/9B,GACzB,MAAMg/B,EAAiC,GAAG1D,EAAyB2D,6CAC7DC,EAAwB,GAAGF,mBAC3BG,EAAuB,GAAG7D,EAAyB2D,kCAEzD,OAAOj/B,EAAStb,KAAI8D,IAChB,MAAMV,EAAUU,EAAYV,QAE5B,IAAIs3C,EACJ,GAAI14C,EAAAA,GAAiBtJ,UAAW,CAAC,IAADiiD,EAC5B,MAAMh2C,GAAasb,EAAAA,EAAAA,mBAAkB7c,EAAS7S,KAAKE,MAAMuG,QAAQiB,eAC3DmoB,EAAU,IAAI1c,IAAIiB,EAAYhM,OAAOiR,SAAS9V,OAChDosB,EAAAA,EAAAA,IAAiB3vB,KAAKE,MAAMuG,QAAQiB,cAAc1D,iBAClD6rB,EAAQ9W,aAAakO,IAAI,YAAa,GAAG1T,EAAY8mB,aAEvC,QAAlB+vB,EAAAv3C,EAAQgoB,kBAAU,IAAAuvB,GAAlBA,EAAoB36C,KAAIoiC,IAAY,IAAA4C,EAChC,MAAM4V,EAAyC,QAA3B5V,EAAG5C,EAAUxyB,sBAAc,IAAAo1B,OAAA,EAAxBA,EAA0B94B,MACjD,IAAKhD,EAAAA,iBAAiBC,mBAAmByxC,GAAiB,CACtD,MAAM/Y,GAAgBgZ,EAAAA,EAAAA,6CAA4CzY,EAAUzyB,oBAC5EyQ,EAAQ9W,aAAakO,IAAIqqB,EAAe+Y,OAGhDF,EAAkBt6B,EAAQtsB,KAG9B,MAAO,CACH4mD,gBAAAA,EACA52C,YAAAA,EACAg3C,2BACI3qD,IAAAA,cAAC4qD,EAAAA,GAAmC,CAChCxpD,UAAW,GAAGqlD,EAAyB2D,4BACvCxpD,UAAWR,KAAKE,MAAMM,UACtBga,OAAQjH,EAAYiH,OACpBwoB,eAAgBhjC,KAAK2mD,uBACrBlgD,QAASzG,KAAKE,MAAMuG,QACpB/E,GAAI1B,KAAKE,MAAMwB,GACfoD,SAAU9E,KAAKE,MAAM4E,SACrB1E,KAAM,KAGd25C,aACIn6C,IAAAA,cAAA,KAAGoB,UAAW+oD,EAAgCxmD,KAAM4mD,GAC/CnqD,KAAKg6C,oBAAoBiQ,EAAuB12C,EAAYV,UAGrE43C,YACI7qD,IAAAA,cAAA,KAAGoB,UAAWkpD,EAAsB3mD,KAAM4mD,GACrC52C,EAAYV,QAAQpL,UA2DjCghD,oBACJ,MAAMjiD,GAAW+H,EAAAA,EAAAA,UAAS,CAAEqR,QAAS8qC,EAAAA,YAAYC,QAASlkD,QAASzG,KAAKE,MAAMuG,QAAQC,UACtF,MAAiB,OAAbF,GAAkC,OAAbA,EACdxG,KAAKE,MAAMuG,QAAQkD,IAAIzG,OAAO0nD,qCAElC5qD,KAAKE,MAAMuG,QAAQkD,IAAIzG,OAAO2nD,sCASjC7Q,oBAAoBh5C,EAAmB6R,GAAuB,IAAA+gC,EAAAlQ,EAAA/P,EAClE,GAAI2uB,EAAAA,iBAAiBC,kBAAkB1vC,GACnC,OAGJ,MAAMi4C,EAAuB,kBACvB7nB,EAAuC,CACzC9+B,UAAW,CACPC,GAAI,CAAEC,EAAGymD,EAAsBxmD,EAAG,EAAGC,EAAG,GACxCC,GAAI,CAAEH,EAAGymD,EAAsBxmD,EAAG,EAAGC,EAAG,GACxC2+B,GAAI,CAAE7+B,EAAGymD,EAAsBxmD,EAAG,EAAGC,EAAG,IAE5CE,UAAU,GAGd,OACI7E,IAAAA,cAACyhB,EAAAA,GAAK,CACFzc,IAAKiO,EAAQpL,KACbwZ,IAA4B,QAAzB2yB,EAAE/gC,EAAQ6B,uBAAe,IAAAk/B,EAAAA,EAAI,GAChC1yB,YAKK,QALMwiB,GACPxG,EAAAA,EAAAA,qBACIrqB,EAAQ2N,OACRxgB,KAAKE,MAAMuG,QAAQiB,cAAc1D,eAAeoP,YAClB,QAD6BugB,EAC3D3zB,KAAKE,MAAMuG,QAAQC,QAAQiD,WAAG,IAAAgqB,GAAQ,QAARA,EAA9BA,EAAgCzwB,cAAM,IAAAywB,OAAA,EAAtCA,EAAwCwJ,yBAC3C,IAAAuG,EAAAA,EAAI,GAETz/B,aAAcjE,KAAKE,MAAMuG,QAAQC,QAAQzC,aACzCC,cAAe++B,EACfv+B,oBAAoB,QACpB1D,UAAWA,EACXgD,eAAgBhE,KAAKE,MAAMuG,QAAQiB,cAAc1D,iBAKrDokD,wBAAqB,IAAA2C,EACzB,MAAMC,EAAwC,QAAxBD,EAAG/qD,KAAK6G,MAAMvB,kBAAU,IAAAylD,EAAAA,EAAI/qD,KAAKmnD,iCACjD8D,EAA2B,GAAG5E,EAAyB6E,wCAC7D,IAAIC,EAAoB,GAAG9E,EAAyB+E,oCAKpD,OAJKJ,IACDG,EAAoB,GAAG9E,EAAyB+E,sCAG7C,CACHpqD,UAAW8I,GAAAA,CAAWmhD,EAA0B5E,EAAyB+E,wBAAyBD,GAClGhqD,QAASnB,KAAKinD,qBACdl3C,KAAM,SACN8gC,SAAU,GAIVuY,4BAA4BJ,GAChC,OACIppD,IAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAW,GAAGqlD,EAAyBgF,oCACvC9nD,KAAMylD,EACN5jD,MAAOpF,KAAKE,MAAMM,UAAU8qD,4CAE3BtrD,KAAKE,MAAMM,UAAU8qD,4CAK1BhC,wBACJ,OACI1pD,IAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAW,GAAGqlD,EAAyBgF,6BACvCjmD,MAAOpF,KAAKE,MAAMM,UAAU+qD,4CAC5BpqD,QAASnB,KAAKonD,oCAEbpnD,KAAKE,MAAMM,UAAU+qD,8CArUXlF,EAAArlD,UAAY,gCAEZqlD,EAAAmF,mBAAqB,GAAGnF,EAAyBrlD,uBAEjDqlD,EAAA6E,uBAAyB,GAAG7E,EAAyBmF,qCAErDnF,EAAAx8C,gBAAkB,GAAGw8C,EAAyB6E,iCAE9C7E,EAAAoF,qBAAuB,GAAGpF,EAAyBx8C,yBAEnDw8C,EAAAqF,eAAiB,GAAGrF,EAAyB6E,gCAE7C7E,EAAA2D,kBAAoB,GAAG3D,EAAyBqF,8BAEhDrF,EAAAgF,gBAAkB,GAAGhF,EAAyB6E,iCAE9C7E,EAAA+E,wBAA0B,GAAG/E,EAAyBx8C,4BA2TjF,2LC9YO,MAAM8hD,EAAgGzrD,IAAQ,IAAA0rD,EAAAC,EAAAC,EACjH,IAAK5rD,EAAMmoD,mBACP,OAAO,KAGX,MAAM2C,EAAmC,QAAnBY,EAAG1rD,EAAMoF,kBAAU,IAAAsmD,EAAAA,EAAI1rD,EAAMooD,gCAE7CkD,EAAqB1hD,GAAAA,CACvBu8C,EAAAA,yBAAyB6E,uBACzBF,EAAmB,GAAK,GAAG3E,EAAAA,yBAAyB6E,qCAGxD,OACItrD,EAAAA,cAAC+Q,EAAAA,OAAMpP,OAAA+B,OAAA,GAAKpD,EAAMuL,aACd7L,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAWqlD,EAAAA,yBAAyBmF,oBACtC5rD,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAWwqD,GACb5rD,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAW,GAAGqlD,EAAAA,yBAAyB6E,2CACzCtrD,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKpD,EAAMioD,gBACZvoD,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAWqlD,EAAAA,yBAAyBx8C,iBACtCjK,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAWqlD,EAAAA,yBAAyBoF,sBACtC7rD,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAW,GAAGqlD,EAAAA,yBAAyBoF,+BAC7C7rD,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAW,GAAGqlD,EAAAA,yBAAyBoF,mCACxCvrD,EAAMM,UAAUurD,oCAErBnsD,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAW,GAAGqlD,EAAAA,yBAAyBoF,kCACxCvrD,EAAMwoD,kBAKvB9oD,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAWqlD,EAAAA,yBAAyBqF,eAAgBhgD,IAAI,SAC1D9L,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAU,GAAG0K,IAAI,SACnB9L,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAWqlD,EAAAA,yBAAyB2D,kBAAmBt+C,IAAI,MACtC,QAD0CmgD,EAChE3rD,EAAM2oD,wBAAgB,IAAAgD,OAAA,EAAtBA,EAAwBp8C,KAAIu8C,GAErBpsD,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAU,GAAG0K,IAAI,KAAK9G,IAAKonD,EAAKz4C,YAAYiH,QAC7CwxC,EAAKzB,2BACLyB,EAAKjS,gBAIjB75C,EAAM6oD,yBAEXnpD,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAWqlD,EAAAA,yBAAyB2D,kBAAmBt+C,IAAI,MACtC,QAD0CogD,EAChE5rD,EAAM2oD,wBAAgB,IAAAiD,OAAA,EAAtBA,EAAwBr8C,KAAIu8C,GAErBpsD,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAU,GAAG0K,IAAI,KAAK9G,IAAKonD,EAAKz4C,YAAYiH,QAC7C/I,EAAAA,GAAiBtJ,UAAY6jD,EAAKvB,iBAAc9mD,SAQ7E/D,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAWqlD,EAAAA,yBAAyBgF,iBACrCnrD,EAAMmpD,eACNnpD,EAAMipD,0BAQ/B,+MClDY8C,kCAAZ,SAAYA,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,kBACAA,EAAAA,EAAA,kBATJ,CAAYA,IAAAA,EAA2B,KAehC,MAAMC,UAA6BtsD,IAAAA,cAC9B,2BAA2BiT,GAC/B,OAAIyvC,EAAAA,iBAAiBC,kBAAkB1vC,EAAQs5C,eACpC,KAIPvsD,IAAAA,cAAA,YACKiT,EAAQu5C,aACRv5C,EAAQs5C,eAKb,2BAA2Bt5C,GAAuB,IAAAw5C,EACtD,OAAI/J,EAAAA,iBAAiBgK,WAAsC,QAA5BD,EAACx5C,EAAQ05C,2BAAmB,IAAAF,OAAA,EAA3BA,EAA6BG,aAClD,KAGJ5sD,IAAAA,cAAA,YAAOiT,EAAQ05C,oBAAqBC,eAGvC,0BAA0B35C,GAC9B,OAAIyvC,EAAAA,iBAAiBC,kBAAkB1vC,EAAQ45C,cACpC,KAGJ7sD,IAAAA,cAAA,YAAOiT,EAAQ45C,cAGlB,0BAA0B55C,GAC9B,OAAIyvC,EAAAA,iBAAiBC,kBAAkB1vC,EAAQ65C,YACpC,KAGJ9sD,IAAAA,cAAA,YAAOiT,EAAQ65C,YAGlB,uBAAuB75C,GAC3B,OAAIyvC,EAAAA,iBAAiBC,kBAAkB1vC,EAAQ85C,WACpC,KAIJ/sD,IAAAA,cAAA,QAAMqsC,yBAAyB2gB,EAAAA,EAAAA,IAAgB/5C,EAAQ85C,aAGlE9sD,YAAmBK,GACfwC,MAAMxC,GAGHC,SAAM,IAAA0sD,EACT,MAAMC,EAAgB9sD,KAAKE,MAAM4sD,cACjC,GAAIxK,EAAAA,iBAAiBC,kBAAkBuK,GACnC,OAAO,KAGX,OAAQA,EAAcC,eAClB,KAAKd,EAA4Bx3C,KAE7B,OAAO7U,IAAAA,cAAA,aACX,KAAKqsD,EAA4Be,SAC7B,OAAOd,EAAqBe,oBAAoBH,GACpD,KAAKb,EAA4BiB,SAC7B,OAAOhB,EAAqBiB,oBAAoBL,GACpD,KAAKb,EAA4BmB,QAC7B,OAAOlB,EAAqBmB,mBAAmBP,GACnD,KAAKb,EAA4BqB,QAC7B,OAAOpB,EAAqBqB,mBAAmBT,GACnD,KAAKb,EAA4B7nB,KAC7B,OAAO8nB,EAAqBsB,gBAAgBV,GAChD,KAAKb,EAA4BwB,QAC7B,OAAOztD,KAAK0tD,qBAAqBZ,GACrC,KAAKb,EAA4B0B,MAE7B,OADA3tD,KAAKE,MAAMkC,UAAU8nB,QAAQ,oEACtB,KACX,KAAK+hC,EAA4BloD,MAE7B,OADA/D,KAAKE,MAAMkC,UAAU8nB,QAAQ,oEACtB,KACX,QAEI,OADAlqB,KAAKE,MAAMkC,UAAU8nB,QAAQ,kCAA6D,QAA7D2iC,EAAkCC,EAAcC,qBAAa,IAAAF,EAAAA,EAAI,2BACvF,MAIXa,qBAAqB76C,GACzB,OAAIA,EAAQ+6C,aACDhuD,IAAAA,cAAA,YAAOI,KAAKE,MAAMM,UAAUqtD,+CAEhCjuD,IAAAA,cAAA,YAAOI,KAAKE,MAAMM,UAAUstD,+DCvG3C,MAAMC,EACF7tD,IAEA,MAAMiB,GAAU6sD,EAAAA,EAAAA,cAAY,KACxB9tD,EAAM8iC,eAAe9iC,EAAMsa,UAC5B,CAACta,KAEE,UAAEc,GAAcd,EAEtB,OAAON,IAAAA,cAACsF,EAAAA,OAAM,CAAClE,UAAWA,EAAWoE,MAAOlF,EAAMM,UAAUytD,gDAAiD9sD,QAASA,KAQ7GqpD,EACTtqD,GACCN,IAAAA,cAAoBmuD,EAA+C7tD,kJCU5DguD,EA2FAC,uwBA3FZ,SAAYD,GACRA,EAAA,YACAA,EAAA,gBAFJ,CAAYA,IAAAA,EAAa,KA2FzB,SAAYC,GACRA,EAAAA,EAAA,eACAA,EAAAA,EAAA,iBAFJ,CAAYA,IAAAA,EAAwB,KAQ7B,MAAMC,UAA0BxuD,IAAAA,UA8FnCC,YAAmBK,GACfwC,MAAMxC,GAmJO,KAAAmuD,gCAAkC,KAAW,IAAAhnD,EAC1Du/C,EAAAA,GAAuB79C,SAAS/I,KAAKE,MAAMuG,QAAQC,QAA2C,QAApCW,EAAErH,KAAKE,MAAME,KAAKmH,0BAAkB,IAAAF,OAAA,EAAlCA,EAAoC/G,QAAQgnD,WACxGtnD,KAAKuP,SAAS,CAAEy3C,aAAc,MAMjB,KAAAsH,4BAA8B,KAAW,IAAAC,EAEtD,GAAwB,QAAxBA,EAAIvuD,KAAKwuD,uBAAe,IAAAD,GAApBA,EAAsBzhB,QAAS,CAC/B,MAAM2hB,EAAyDzuD,KAAKwuD,gBAAgB1hB,QAAQ4hB,uBACxFN,EAAkBO,sBAElBluD,EAAAA,gBAAgBC,YAAYkuD,MAAMC,KAAKJ,MACnC9mD,EAAAA,GAASQ,WAAa2G,SAASggD,gBAAgBC,UANtC,EAOTN,EAA4B,GAAGr/C,UAAUgJ,IAAIg2C,EAAkBY,4BAE/DP,EAA4B,GAAGr/C,UAAUiJ,OAAO+1C,EAAkBY,+BA+BjE,KAAAC,cAAiBtpD,IAAwC,IAAAupD,EAC5C,QAA1BA,EAAAlvD,KAAKmvD,6BAAqB,IAAAD,GAAS,QAATA,EAA1BA,EAA4BpiB,eAAO,IAAAoiB,GAAnCA,EAAqCE,SAAS,CAAEC,IAAK1pD,EAAMsf,cAAc8pC,UAAWO,KAAM3pD,EAAMsf,cAAcsqC,aAC9GvvD,KAAKwvD,uBAQQ,KAAAC,mBAAsBC,IAAuC,IAAAC,EAAAC,EAAAC,EAC1E,MAAMC,EAAoC,QAA3BH,EAAG3vD,KAAK+vD,2BAAmB,IAAAJ,OAAA,EAAxBA,EAA0B7iB,QAC5C,IAAKgjB,EACD,OAGJ,IAKIE,EALAC,EAAoC,QAA3BL,EAAG5vD,KAAKkwD,2BAAmB,IAAAN,GAAS,QAATA,EAAxBA,EAA0B9iB,eAAO,IAAA8iB,OAAA,EAAjCA,EAAmCO,iBACjCxsD,IAAdssD,IACAA,EAAYjwD,KAAKowD,iBAIrB,MAAMC,EAAiBC,KAAKC,KAAKT,EAAUP,YAC3C,GAAIG,IAAcvB,EAAyBmB,KAAM,CAC7CU,EAAkBK,EAAiBJ,EACnC,MAAMO,EAAkB,EACxBR,EAAkBM,KAAK5xB,IAAIsxB,EAAiBQ,OACzC,CACH,MAAMC,EAAYX,EAAUY,YAAcZ,EAAUK,YACpDH,EAAkBK,EAAiBJ,EACnCD,EAAkBM,KAAKvgB,IAAIigB,EAAiBS,GAG5C9oD,EAAAA,GAASQ,WAAkE,SAA1B,QAA3B0nD,EAAA/gD,SAAS6hD,KAAKr4C,qBAAa,IAAAu3C,OAAA,EAA3BA,EAA6B15C,aAAa,UAChE65C,GAAmBA,GAGvBF,EAAUV,SAAS,CACfC,IAAKS,EAAUf,UACfO,KAAMU,IAGVhwD,KAAKuP,UAASu3C,IACV,QAA6CnjD,IAAzCmjD,EAAc8J,uBACd,MAAO,GAEX,IAAIC,EAAS,EAIb,OAHInB,IAAcvB,EAAyBmB,OACvCuB,GAAU,GAEP,CACHD,uBAAwB9J,EAAc8J,uBAAyBC,EAC/DC,qBAAsBC,KAAKC,MAC3BC,wBAAoBttD,MAI5B3D,KAAKwvD,uBAOQ,KAAA0B,qBAAuB,KAAK,IAAAC,EACrCxpD,EAAAA,GAASQ,WAAkE,SAA1B,QAA3BgpD,EAAAriD,SAAS6hD,KAAKr4C,qBAAa,IAAA64C,OAAA,EAA3BA,EAA6Bh7C,aAAa,QAChEnW,KAAKyvD,mBAAmBtB,EAAyBiD,OAEjDpxD,KAAKyvD,mBAAmBtB,EAAyBmB,OAQxC,KAAA+B,iBAAmB,KAAK,IAAAC,EACjC3pD,EAAAA,GAASQ,WAAkE,SAA1B,QAA3BmpD,EAAAxiD,SAAS6hD,KAAKr4C,qBAAa,IAAAg5C,OAAA,EAA3BA,EAA6Bn7C,aAAa,QAChEnW,KAAKyvD,mBAAmBtB,EAAyBmB,MAEjDtvD,KAAKyvD,mBAAmBtB,EAAyBiD,QAOxC,KAAAhB,cAAgB,KAAa,IAAAmB,EAC1C,MAAMzB,EAAoC,QAA3ByB,EAAGvxD,KAAK+vD,2BAAmB,IAAAwB,OAAA,EAAxBA,EAA0BzkB,QACtCtmC,GAAW+H,EAAAA,EAAAA,UAAS,CAAEqR,QAAS8qC,EAAAA,YAAYC,QAASlkD,QAASzG,KAAKE,MAAMuG,QAAQC,UACtF,IAAIupD,EAAoB,IAcxB,MAZiB,OAAbzpD,GAAqBspD,EACrBG,EAAYH,GAAaA,EAAUK,YAAc,EAC5B,OAAb3pD,GAAkC,OAAbA,IAAsBspD,EAG/CA,IACAG,EAAYH,GAAaA,EAAUK,YAAc,GAHrDF,EAAYH,GAAaA,EAAUK,YAAc,EAOrDF,EAAYK,KAAKkB,MAAMvB,GAEhBA,GAMM,KAAAT,oBAAsB,KAAK,IAAAiC,EAAAC,EACxC,MAAM5B,EAAoC,QAA3B2B,EAAGzxD,KAAK+vD,2BAAmB,IAAA0B,OAAA,EAAxBA,EAA0B3kB,QAC5C,IAAKgjB,EACD,OAGJ,MACMW,EAAYX,EAAUY,YAAcZ,EAAUK,YAC9CE,EAAiBC,KAAKC,KAAKT,EAAUP,YAEvC5nD,EAAAA,GAASQ,WAAkE,SAA1B,QAA3BupD,EAAA5iD,SAAS6hD,KAAKr4C,qBAAa,IAAAo5C,OAAA,EAA3BA,EAA6Bv7C,aAAa,SAC5Dk6C,GALuB,EAMnBrwD,KAAK2xD,yBACL3xD,KAAK2xD,wBAAyB,EAC9B3xD,KAAK4xD,eAED5xD,KAAK2xD,yBACb3xD,KAAK2xD,wBAAyB,EAC9B3xD,KAAK4xD,eAGLvB,GAAkBI,EACdzwD,KAAK6xD,6BACL7xD,KAAK6xD,4BAA6B,EAClC7xD,KAAK4xD,eAED5xD,KAAK6xD,6BACb7xD,KAAK6xD,4BAA6B,EAClC7xD,KAAK4xD,iBAGLvB,GAzBuB,EA0BnBrwD,KAAK6xD,6BACL7xD,KAAK6xD,4BAA6B,EAClC7xD,KAAK4xD,eAED5xD,KAAK6xD,6BACb7xD,KAAK6xD,4BAA6B,EAClC7xD,KAAK4xD,eAGLvB,GAAkBI,EACdzwD,KAAK2xD,yBACL3xD,KAAK2xD,wBAAyB,EAC9B3xD,KAAK4xD,eAED5xD,KAAK2xD,yBACb3xD,KAAK2xD,wBAAyB,EAC9B3xD,KAAK4xD,iBASA,KAAAjL,uBAA0BnsC,IAAwB,IAAA6sC,EAC/DT,EAAAA,GAAuB79C,SAAS/I,KAAKE,MAAMuG,QAAQC,QAA2C,QAApC2gD,EAAErnD,KAAKE,MAAME,KAAKmH,0BAAkB,IAAA8/C,OAAA,EAAlCA,EAAoC/mD,QAAQumD,eAAersC,GACvHxa,KAAKuP,UAASu3C,IAAgB,IAAAC,EAC1B,IAAI+K,EAAqBhL,EAAc8J,uBAIvC,OAHIkB,IAAuB9xD,KAAK2xD,wBAA0B3xD,KAAK6xD,6BAC3DC,GAAsB,GAEnB,CACH9K,aAAwC,QAA5BD,EAAED,EAAcE,oBAAY,IAAAD,OAAA,EAA1BA,EAA4BhwC,QAAO7C,GAAQA,EAAKsG,SAAWA,IACzEs2C,qBAAsBC,KAAKC,MAC3BC,wBAAoBttD,EACpBitD,uBAAwBkB,OA6BnB,KAAAC,eAAkBv3C,GAAmB,KAClDxa,KAAKgyD,oBAAsBx3C,EAE3Bxa,KAAKuP,SAAS,CACVuhD,qBAAsBC,KAAKC,MAC3BC,mBAAoBz2C,KASX,KAAAy3C,gBAAmBz3C,GAAmB,KAC/Cxa,KAAKgyD,sBAAwBx3C,IAIjCxa,KAAKgyD,yBAAsBruD,EAC3BwtC,GAAAA,EAAS,KACLnxC,KAAKuP,SAAS,CACVuhD,qBAAsBC,KAAKC,MAC3BC,wBAAoBttD,MAEzB,MAuHU,KAAAuuD,QAAU,KACvB,MAAMC,GAAoB99B,EAAAA,EAAAA,IAAW,OAAQr0B,KAAKE,MAAMuG,QAAQiB,gBAAkB,GACxD,KAAtBoH,SAASsjD,SACThqD,OAAOiR,SAAS9V,KAAO4uD,EAEvB/pD,OAAOiqD,QAAQC,QAtiBnBtyD,KAAKunD,YAAc,GAAG6G,EAAkBptD,aAAahB,KAAKE,MAAMwB,MAAMm2C,EAAAA,OAAOC,KAAKC,iBAElF/3C,KAAK6G,MAAQ,CACTmgD,kBAAcrjD,EACdmtD,qBAAsBC,KAAKC,MAC3BC,wBAAoBttD,EACpBitD,uBAAwB,GAG5B5wD,KAAKwuD,gBAAkB5uD,IAAAA,YACvBI,KAAKmvD,sBAAwBvvD,IAAAA,YAC7BI,KAAK+vD,oBAAsBnwD,IAAAA,YAC3BI,KAAKkwD,oBAAsBtwD,IAAAA,YA1DvB,kCAAkCmrB,GACtC,MAAMwnC,EAAiBxnC,EAAStb,KAAIoD,IAAO,IAAA2/C,EAAA,OAA0B,QAA1BA,EAAI3/C,EAAQ0/C,sBAAc,IAAAC,OAAA,EAAtBA,EAAwBC,sBACjEC,EAAsCjyD,EAAAA,gBAAgBkyD,QAAQJ,GAG9DK,EAAqBnyD,EAAAA,gBAAgB8Y,YACvCm5C,EACK37C,QAAO+1C,GAHY,IAGKA,EAAc+F,mBACtCpjD,KAAIq9C,GAAiBA,EAAcrlD,QAEtCqrD,EAA2BryD,EAAAA,gBAAgB+d,OAAOo0C,GAKxD,OAJ6BnyD,EAAAA,gBAAgB8Y,YACzCu5C,EAAyBrjD,KAAIuN,GAAQ01C,EAAkB/+C,MAAKm5C,GAAiBA,EAAcrlD,OAASuV,OAMpG,8BAA8B+N,GAClC,MAAMygB,EAAazgB,EAAStb,KAAIoD,GAAWA,EAAQonC,YAAYpf,aACzDk4B,EAAoCtyD,EAAAA,gBAAgBkyD,QAAQnnB,GAAYz0B,QAC1E86B,IAAcyQ,EAAAA,iBAAiBC,kBAAkB1Q,EAAUxyB,kBAGzD2zC,EAAevyD,EAAAA,gBAAgB8Y,YAAYw5C,EAActjD,KAAIoiC,GAAaA,EAAUzyB,sBAG1F,OAF2B3e,EAAAA,gBAAgB+d,OAAOw0C,GAK9C,iCAAiCngD,GACrC,OAAI8F,EAAAA,iBAAiBC,mBAAmB/F,MAAAA,OAAO,EAAPA,EAAS8P,aACtC,KAEJ/iB,IAAAA,cAAA,KAAGoB,UAAW,GAAGotD,EAAkBptD,0BAA2B6R,EAAS8P,aAG1E,qCACJ,MAAO,CACH3hB,UAAWotD,EAAkB6E,oBAsB9B/qD,oBAAiB,IAAAu/C,EACpBznD,KAAK0nD,gBACLd,EAAAA,GAAuB79C,SAAS/I,KAAKE,MAAMuG,QAAQC,QAA2C,QAApC+gD,EAAEznD,KAAKE,MAAME,KAAKmH,0BAAkB,IAAAkgD,OAAA,EAAlCA,EAAoCnnD,QAAQqnD,kBAAkBC,UACtH,CACIC,WAAY7nD,KAAKunD,YAKjBO,QAASA,KAEL9nD,KAAK0nD,mBAIb//C,EAAAA,GAASQ,WACTC,OAAOC,iBAAiB,UAAU,KAC9BrI,KAAKsuD,iCAGbtuD,KAAKsuD,8BAGFplD,uBAAoB,IAAA6+C,EACvBnB,EAAAA,GAAuB79C,SACnB/I,KAAKE,MAAMuG,QAAQC,QACe,QADRqhD,EAC1B/nD,KAAKE,MAAME,KAAKmH,0BAAkB,IAAAwgD,OAAA,EAAlCA,EAAoCznD,QACtCqnD,kBAAkBK,YAAYhoD,KAAKunD,aAGlC7gC,sBACHC,EACAC,GAEA,OAAI5mB,KAAK6G,MAAMmgD,eAAiBpgC,EAAUogC,cAAgBhnD,KAAKE,QAAUymB,IAKrE3mB,KAAK6G,MAAMoqD,qBAAuBrqC,EAAUqqC,oBAC5CjxD,KAAK6G,MAAM+pD,yBAA2BhqC,EAAUgqC,wBAIjDzwD,SAAM,IAAA8nD,EAAAC,EACT,MAAM19C,EAASC,EAAAA,EAAA,GACRzK,KAAKE,OAAK,IACbuL,YAAa,CACTA,YAAazL,KAAKE,MAClBc,UAAWotD,EAAkBptD,WAEjCkyD,+BAAgClzD,KAAKquD,gCACrChG,oBAAoB,EACpB8K,gBAAgB,EAChBhtB,QAASnmC,KAAKozD,iBACdC,QAASrzD,KAAKszD,iBACdjK,eAAgBrpD,KAAKspD,wBACrBiK,wBAAyBnF,EAAkBoF,8BAC3CC,gBAAiBzzD,KAAK0zD,yBACtBC,YAAa3zD,KAAK4zD,qBAClBC,eAAgB7zD,KAAK8zD,8BACrBC,gBACIn0D,IAAAA,cAAA,OAAKoB,UAAW,GAAGotD,EAAkBptD,8BAA+BhB,KAAKE,MAAMK,MAAMyzD,+BAIvFhN,EAAsC,QAA1BiB,EAAGjoD,KAAK6G,MAAMmgD,oBAAY,IAAAiB,EAAAA,EAAIjoD,KAAKi0D,qCAAiE,QAA7B/L,EAACloD,KAAKE,MAAME,KAAK4mD,oBAAY,IAAAkB,OAAA,EAA5BA,EAA8B5nD,QACxH,QAAqBqD,IAAjBqjD,EACA,OAAOhnD,KAAKE,MAAMmN,WAAW7C,GAIjC,IADuBxK,KAAKE,MAAMuG,QAAQC,QAAQsgB,QAAQktC,mBAClCzzD,EAAAA,gBAAgBC,YAAYsmD,GAEhD,OADAx8C,EAAU2oD,gBAAiB,EACpBnzD,KAAKE,MAAMmN,WAAW7C,GAG7B/J,EAAAA,gBAAgBC,YAAYsmD,KAC5Bx8C,EAAU2pD,iBAAmBn0D,KAAKE,MAAMM,UAAU4zD,2BAA2Bp8C,QAAQ,MAAOgvC,EAAavlD,OAAOwX,aAGpHjZ,KAAKwvD,sBACL,MAAM6E,EAAuBr0D,KAAK8oD,qBAAqB9B,GACjDsN,EAAwBt0D,KAAKu0D,yBAAyBvN,GACtDwN,EAYA,GA4BN,OA3BAF,MAAAA,GAAAA,EAAuB7kD,KAAIoiC,IACvB,MAAMwY,EAAiBrqD,KAAKy0D,0BAA0B5iB,EAAWwiB,GAEjE,OADAG,EAAsB78C,KAAK0yC,GACpBmK,KAEXhqD,EAAU69C,oBAAqB,EAC/B79C,EAAUkqD,eAAiB10D,KAAKwuD,gBAChChkD,EAAUmqD,qBAAuB30D,KAAKmvD,sBACtC3kD,EAAUoqD,mBAAqB50D,KAAK+vD,oBACpCvlD,EAAUqqD,mBAAqB70D,KAAKkwD,oBACpC1lD,EAAUsmD,qBAAuB9wD,KAAK6G,MAAMiqD,qBAC5CtmD,EAAUymD,mBAAqBjxD,KAAK6G,MAAMoqD,mBAC1CzmD,EAAUsqD,0BAA4B90D,KAAK6xD,2BAC3CrnD,EAAUuqD,sBAAwB/0D,KAAK2xD,uBACvCnnD,EAAUomD,uBAAyB5wD,KAAK6G,MAAM+pD,uBAC9CpmD,EAAUwqD,oBAAsBh1D,KAAKkxD,qBACrC1mD,EAAUyqD,gBAAkBj1D,KAAKqxD,iBACjC7mD,EAAU0qD,aAAel1D,KAAKivD,cAC9BzkD,EAAU2qD,cAAgBn1D,KAAK+xD,eAC/BvnD,EAAU4qD,eAAiBp1D,KAAKiyD,gBAChCznD,EAAU0+C,sBAAwBlpD,KAAK2mD,uBACvCn8C,EAAUq+C,iBAAmBwL,EAC7B7pD,EAAU6qD,mBAAqBjH,EAAkBkH,uBAAuBtO,GACxEx8C,EAAU+qD,gBAAkBf,EAC5BhqD,EAAUgrD,qBAAuBpH,EAAkBqH,2BAA2BzO,GAC9Ex8C,EAAUkrD,oBAAsB11D,KAAK21D,uBAAuBnrD,EAAUgrD,qBAAsBhrD,EAAUq+C,kBAE/F7oD,KAAKE,MAAMmN,WAAW7C,GA8BzBypD,qCACJ1gD,GAAqD,IAAAg2C,EAErD,MAAMlvB,GAAY+T,EAAAA,EAAAA,IAAapuC,KAAKE,MAAMuG,QAAQC,UAClD4zB,EAAAA,EAAAA,mBAAkBD,GAElB,OAD0F,QAAlEkvB,EAAGh2C,MAAAA,OAAW,EAAXA,EAAawD,QAAOlE,GAAWA,EAAQwnB,YAAcA,WAAU,IAAAkvB,EAAAA,OAAI5lD,EAI1F,sBAAmB,IAAA6lD,EACvB,MAAM/4C,EAAQm2C,EAAAA,GAAuB79C,SAAS/I,KAAKE,MAAMuG,QAAQC,QAA2C,QAApC8iD,EAAExpD,KAAKE,MAAME,KAAKmH,0BAAkB,IAAAiiD,OAAA,EAAlCA,EAAoClpD,QAAQmQ,MAChH8a,EAAQ,IAAIqqC,EAAAA,GAAoCnlD,GACtD,IAAI8C,QACEsiD,EAAAA,EAAAA,IAAqCtqC,EAAOvrB,KAAKE,MAAMuG,QAAQiB,eAAesW,MAAK9J,IACrFX,EAAcW,KAElB,MAAMy1C,EAAyB3pD,KAAKi0D,qCAAqC1gD,GACzEvT,KAAKuP,SAAS,CAAEy3C,aAAc2C,IAoM1BmM,iBAAiBjjD,GAAmC,IAAAkjD,EACxD,MAAMC,EAAgBv1D,EAAAA,gBAAgBC,YAAYV,KAAKE,MAAMK,MAAM01D,YAAcj2D,KAAKE,MAAMK,MAAM01D,WAAW,GAAK,KAClH,GAAI3T,EAAAA,iBAAiBC,kBAAkByT,GACnC,OAAO,KAGX,MAAM71C,EAAmD,QAAjC41C,EAAGljD,EAAQonC,YAAYpf,kBAAU,IAAAk7B,OAAA,EAA9BA,EAAgCh/C,QAAO86B,IAAS,IAAA4C,EAAA,OAA4B,QAA5BA,EAAI5C,EAAUxyB,sBAAc,IAAAo1B,OAAA,EAAxBA,EAA0B94B,SAEzG,OAAO/b,IAAAA,aAAmBo2D,EAAqC,CAC3D11C,kBAAmBzN,EAAQonC,YAAY3lC,SACvC6L,mBAAAA,IA2CA65B,oBAAoBh5C,EAAmB6R,GAAuB,IAAA+gC,EAAAlQ,EAClE,MACIj9B,SACIiB,eACI1D,gBAAgB,YAAEoP,IAEtB1M,SACIiD,KAAK,iBAAEwzB,MAGfn9B,KAAKE,MAET,GAAIoiD,EAAAA,iBAAiBC,kBAAkB1vC,GACnC,OAGJ,MAAMqjD,EAAwB,kBACxBjzB,EAAuC,CACzC9+B,UAAW,CACPC,GAAI,CAAEC,EAAG6xD,EAAuB5xD,EAAG,EAAGC,EAAG,GACzCC,GAAI,CAAEH,EAAG6xD,EAAuB5xD,EAAG,EAAGC,EAAG,GACzC2+B,GAAI,CAAE7+B,EAAG6xD,EAAuB5xD,EAAG,EAAGC,EAAG,IAE7CE,UAAU,GAGd,OACI7E,IAAAA,cAACyhB,EAAAA,GAAK,CACFL,QAASnO,MAAAA,OAAO,EAAPA,EAASpL,KAClB7C,IAAKiO,EAAQpL,KACbwZ,IAA4B,QAAzB2yB,EAAE/gC,EAAQ6B,uBAAe,IAAAk/B,EAAAA,EAAI,GAChC1yB,YAA+E,QAApEwiB,GAAExG,EAAAA,EAAAA,qBAAoBrqB,EAAQ2N,OAAQpN,EAAa+pB,UAAiB,IAAAuG,EAAAA,EAAI,GACnFz/B,aAAcjE,KAAKE,MAAMuG,QAAQC,QAAQzC,aACzCC,cAAe++B,EACfv+B,oBAAoB,QACpB1D,UAAWA,EACXgD,eAAgBhE,KAAKE,MAAMuG,QAAQiB,cAAc1D,iBAKrDmyD,qBAAqB37C,GACzB,MAAM47C,EAAqBp2D,KAAK6G,MAAMoqD,qBAAuBz2C,EAC7D,IAAI3Q,EAAkBukD,EAAkBiI,yBAIxC,OAHID,IACAvsD,EAAkBC,GAAAA,CAAWD,EAAiB,uCAE3C,CACH7I,UAAW6I,EACXjF,IAAK,GAAGiF,cAA4B2Q,KAAUxa,KAAK6G,MAAMoqD,sBAAsBjxD,KAAK6G,MAAM+pD,yBAC1FpiD,aAAcxO,KAAK+xD,eAAev3C,GAClC87C,aAAct2D,KAAKiyD,gBAAgBz3C,IAInC+7C,mBAAmB/7C,GACvB,MAAM47C,EAAqBp2D,KAAK6G,MAAMoqD,qBAAuBz2C,EAC7D,IAAIg8C,EAAgBpI,EAAkBqI,mBAItC,OAHIL,IACAI,EAAgB1sD,GAAAA,CAAW0sD,EAAe,uCAEvC,CACHx1D,UAAWw1D,EACX5xD,IAAK,GAAG4xD,cAA0Bh8C,KAAUxa,KAAK6G,MAAMoqD,qBACvDziD,aAAcxO,KAAK+xD,eAAev3C,GAClC87C,aAAct2D,KAAKiyD,gBAAgBz3C,GACnCzK,KAAM,WACN8gC,SAAU,GAIV6lB,qBAAqBn6C,GAAuB,IAAAo6C,EAChD,GAAIrU,EAAAA,iBAAiBC,kBAAkBhmC,MAAAA,OAAM,EAANA,EAAQq6C,eAC3C,OAAO,KAGX,MAAMC,EAAct6C,EAIpB,OACI3c,IAAAA,cAACqjB,EAAAA,gBAAe,CACZJ,UAAWg0C,EAAYD,cACvBzzC,UAAQ,EACR3f,WAAWmZ,EAAAA,EAAAA,QAAO3c,KAAKE,MAAMM,UAAUs2D,4CAA6CD,EAAYD,cAAe,KAC/G1zC,YAAa,GAA2B,QAA3ByzC,EAAGE,EAAYE,oBAAY,IAAAJ,EAAAA,EAPpB,IAQpBK,iCAA+B,EAC/B52D,KAAM,GACNqG,QAASzG,KAAKE,MAAMuG,QACpB/E,GAAI1B,KAAKE,MAAMwB,GACfoD,SAAU9E,KAAKE,MAAM4E,WAKzBgvD,8BACJ,OACIl0D,IAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,CACHtC,UAAU,uCACNhB,KAAKE,MAAMkC,UAAS,CACxB2N,KAAK,SACLxM,KAAK,IACLpC,QAASnB,KAAKkyD,QACd9sD,MAAOpF,KAAKE,MAAMM,UAAUy2D,sBAE3Bj3D,KAAKE,MAAMM,UAAUy2D,qBAmB1BC,kBAAkBC,GACtB,OAAIA,IAAgBC,EAAAA,qBAAqBC,MAC9Br3D,KAAKE,MAAMM,UAAU82D,2CAE5BH,IAAgBC,EAAAA,qBAAqBG,KAC9Bv3D,KAAKE,MAAMM,UAAUg3D,0CAG5BL,IAAgBC,EAAAA,qBAAqBK,MAC9Bz3D,KAAKE,MAAMM,UAAUk3D,gDADhC,EAMIjD,0BAA0B0C,EAAqBpsC,GACnD,MAAM4sC,EAAqB,GAAGvJ,EAAkBwJ,qCAAqCT,IAC/EU,EAAuB73D,KAAKk3D,kBAAkBC,GAC9C7lB,GAAgBgZ,EAAAA,EAAAA,6CAA4C6M,GAClE,IAAIW,EAAyB5J,EAAc9pB,KAE3C,MAAM2zB,EAAgE/3D,KAAKE,MAAMuG,QAAQkD,IAAIzG,OAAO80D,wBAEhGv3D,EAAAA,gBAAgBC,YAAYq3D,IAC3BA,MAAAA,GAAAA,EAAiC/vD,SAASgM,EAAAA,eAAeS,OAD1DhU,MAEAs3D,IAAAA,EAAiC/vD,SAASspC,KAE1CwmB,EAAyB5J,EAAcjyC,QAG3C,MAAMg8C,EAAyBltC,EAAStb,KAAIyoD,IAAkB,IAAAC,EAC1D,IAEIC,EAFAvmB,EAAgC,GAChCwmB,EAAoB,GAEI,QAA5BF,EAAAn4D,KAAKE,MAAME,KAAK4mD,oBAAY,IAAAmR,GAAQ,QAARA,EAA5BA,EAA8B73D,cAAM,IAAA63D,GAApCA,EAAsC1oD,KAAI6oD,IACwD,IAADC,EAAAC,EAAzFF,EAAkBre,YAAY3lC,WAAa4jD,EAAgBrlD,QAAQonC,YAAY3lC,WAC/Eu9B,EAAoD,QAA3C0mB,EAA+B,QAA/BC,EAAGF,EAAkB9sB,kBAAU,IAAAgtB,OAAA,EAA5BA,EAA8BhtB,kBAAU,IAAA+sB,EAAAA,EAAI,IAE5D,OAAO1mB,KAGPimB,IAA2B5J,EAAcjyC,SACzCm8C,EACIx4D,IAAAA,cAAA,OAAKoB,UAAU,2BACV6wC,EAAUpiC,KAAIgpD,GAEP74D,IAAAA,cAAA,OACIoB,UAAU,+BACV4D,IAAK,gCAAgCszD,EAAgBrlD,QAAQ2H,UAE5Di+C,EAAen4D,OAAOmP,KAAIipD,IAAgB,IAAAC,EACvC,IAAIC,EACJ,MAAM3+C,EA8BA,QA9BQ0+C,EACVD,EAAcjpD,KAAiB+I,IAAa,IAAAqgD,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACxC,IAAIC,GAA8B,EAClC,MAAMn5C,EAAmE,QAAjD04C,EAAGX,EAAgBrlD,QAAQonC,YAAYpf,kBAAU,IAAAg+B,OAAA,EAA9CA,EAAgD9hD,QACvE7C,GAAQA,EAAKkL,qBAAuB5G,EAAW4G,qBAEnDe,MAAAA,GAAAA,EAAoB1Q,KAAI8pD,IAAoB,IAAAC,EAQxC,YANyC71D,IAArC41D,EAAkBl6C,gBAClBk6C,EAAkBl6C,eAAeo6C,eACJ,QADeD,EACxChhD,EAAW6G,sBAAc,IAAAm6C,OAAA,EAAzBA,EAA2BC,eAE/BH,GAAqB,GAElBA,KAGP9gD,EAAW4G,qBAAuB+3C,IAClCyB,EAAqBpgD,EAAW4G,oBAEpC,MAAM3G,EAAgB64B,EACtB,MAAO,CACH92B,OAAQ,GAAsC,QAAtCs+C,EAA4B,QAA5BC,EAAGvgD,EAAW6G,sBAAc,IAAA05C,OAAA,EAAzBA,EAA2BzkD,gBAAQ,IAAAwkD,EAAAA,EAAI,MACvC,QADyCE,EAA6B,QAA7BC,EAAIzgD,EAAW6G,sBAAc,IAAA45C,OAAA,EAAzBA,EAClDt9C,aAAK,IAAAq9C,EAAAA,EAAI,KACfjzD,MAAuC,QAAlCmzD,EAA2B,QAA3BC,EAAE3gD,EAAW6G,sBAAc,IAAA85C,OAAA,EAAzBA,EAA2Bx9C,aAAK,IAAAu9C,EAAAA,EAAI,GAC3CzgD,cAAAA,EACAiC,aAAuC,QAA3B0+C,EAAE5gD,EAAW6G,sBAAc,IAAA+5C,OAAA,EAAzBA,EAA2BM,aACzC9+C,SAAmC,QAA3By+C,EAAE7gD,EAAW6G,sBAAc,IAAAg6C,OAAA,EAAzBA,EAA2BM,SACrCjjD,UAAW4iD,aAEjB,IAAAX,EAAAA,EAAI,GACV,OAAIC,GAAsBA,IAAuBzB,EAEzCv3D,IAAAA,cAACg6D,EAAAA,gBAAe,CACZh1D,IAAKuyD,EACL/jD,YAAapT,KAAKE,MAAMuG,QAAQC,QAAQ0M,YACxCusC,KAAM1lC,EACN4/C,oBAAoB,IAIzB,aAS/B/B,IAA2B5J,EAAc9pB,MACzCyN,EAAUpiC,KAAIyE,GACHA,EAAK5T,OAAOmP,KAAIgB,GACZA,EAAMhB,KAAIipD,IACb,GAAIA,EAAct5C,qBAAuB+3C,EAAa,CAAC,IAAD2C,EAAAC,EAClD,MAAMC,EACY,KAAd3B,EACMr4D,KAAKE,MAAMM,UAAUy5D,0BACrBj6D,KAAKE,MAAMM,UAAUy5D,0BAA0BjiD,QAAQ,IAAK,IACtEqgD,IAAwB17C,EAAAA,EAAAA,QAAOq9C,EAAmE,QAArCF,EAA8B,QAA9BC,EAAErB,EAAcr5C,sBAAc,IAAA06C,OAAA,EAA5BA,EAA8Bp+C,aAAK,IAAAm+C,EAAAA,EAAI,IAE1G,OAAOzB,SAMvB,MAAM6B,EAAiB,CACnB5lD,SAAU4jD,EAAgBrlD,QAAQonC,YAAY3lC,SAC9CqH,MAAO08C,EACPoB,YAAatC,EACbwC,SAAUzB,EAAgBrlD,QAAQonC,YAAYvlC,iBAGlD,MAAO,CACHwlD,eAAAA,EACAhC,gBAAAA,EACAlpD,KACIpP,IAAAA,cAAA,OAAKgF,IAAK,GAAGszD,EAAgBrlD,QAAQ2H,UAAUm9C,KAC1CG,IAA2B5J,EAAcjyC,OAASm8C,EAAe8B,EAAev+C,WAKjG,MAAO,CACHw7C,YAAAA,EACA7lB,cAAeumB,EACfF,mBAAAA,EACAM,uBAAAA,GAGAtC,uBAAuBpD,EAAkCxnC,GAC7D,OAAOwnC,EAAe9iD,KAAIq9C,IACtB,MAAMqN,EAAyB,GAAG/L,EAAkBgM,6CAA6CtN,EAAcrlD,OAEzG4yD,EAAsBtvC,EAAStb,KAAIyoD,IAAkB,IAAAoC,EACvD,MAAMC,EAA6D,QAAzCD,EAAGpC,EAAgBrlD,QAAQ0/C,sBAAc,IAAA+H,OAAA,EAAtCA,EAAwC7H,mBAAmB9+C,MACpF6mD,GAAyBA,EAAsB/yD,OAASqlD,EAAcrlD,OAG1E,MAAO,CACH8yD,qBAAAA,EACArC,gBAAAA,EACAlpD,KACIpP,IAAAA,cAAA,OAAKgF,IAAK,GAAGszD,EAAgBrlD,QAAQ2H,UAAU2/C,KAC3Cv6D,IAAAA,cAACssD,EAAAA,GAAoB,CACjBY,cAAeyN,EACfn4D,UAAWpC,KAAKE,MAAMkC,UACtBqE,QAASzG,KAAKE,MAAMuG,QACpBjG,UAAWR,KAAKE,MAAMM,iBAO1C,MAAO,CACHssD,cAAAA,EACAqN,uBAAAA,EACAE,oBAAAA,MAKJjH,iBACJ,OAAOxzD,IAAAA,cAACmnC,EAAAA,QAAO,CAAC/lC,UAAW,GAAGotD,EAAkBptD,oBAAqBojC,KAAMpkC,KAAKE,MAAMM,UAAUi6D,yBAG5FnH,iBACJ,OAAO1zD,IAAAA,cAAA,OAAKoB,UAAW,GAAGotD,EAAkBptD,sBAAuBhB,KAAKE,MAAMM,UAAUk6D,8BAGpFpR,wBACJ,OACI1pD,IAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAW,GAAGotD,EAAkB6E,uCAAsC,aAC1DjzD,KAAKE,MAAMM,UAAUm6D,yCACjCx5D,QAASnB,KAAKquD,iCAEbruD,KAAKE,MAAMM,UAAUo6D,qCAU1BrG,yBAAyBxpC,GAC7B,MAAMygB,EAAazgB,EAAStb,KAAIoD,GAAWA,EAAQonC,YAAYpf,aACzDk4B,EAAoCtyD,EAAAA,gBAAgBkyD,QAAQnnB,GAE5DwnB,EAAevyD,EAAAA,gBAAgB8Y,YAAYw5C,EAActjD,KAAIoiC,GAAaA,EAAUzyB,sBAG1F,OAF2B3e,EAAAA,gBAAgB+d,OAAOw0C,GAK9CU,yBACJ,OACI9zD,IAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAW8I,GAAAA,CAAWskD,EAAkByM,sBAAuB,GAAGzM,EAAkByM,mCACpF9qD,KAAK,SACL5O,QAASnB,KAAKkxD,qBACd4J,QAAS96D,KAAKkxD,sBAEdtxD,IAAAA,cAAA,QAAMoB,UAAW,GAAGotD,EAAkByM,wCAAuC,cAAc,SAC3Fj7D,IAAAA,cAAA,QAAMoB,UAAU,sBAAsBhB,KAAKE,MAAMM,UAAUu6D,mCAK/DnH,qBACJ,OACIh0D,IAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAW8I,GAAAA,CAAWskD,EAAkByM,sBAAuB,GAAGzM,EAAkByM,+BACpF9qD,KAAK,SACL5O,QAASnB,KAAKqxD,iBACdyJ,QAAS96D,KAAKqxD,kBAEdzxD,IAAAA,cAAA,QAAMoB,UAAW,GAAGotD,EAAkByM,oCAAmC,cAAc,SACvFj7D,IAAAA,cAAA,QAAMoB,UAAU,sBAAsBhB,KAAKE,MAAMM,UAAUw6D,+BAK/DC,kCAAkCzgD,GACtC,OACI5a,IAAAA,cAAC4qD,EAAAA,GAAmC,CAChCxpD,UAAW,GAAGotD,EAAkB8M,8BAChCt2D,IAAK4V,EACLha,UAAWR,KAAKE,MAAMM,UACtBga,OAAQA,EACRwoB,eAAgBhjC,KAAK2mD,uBACrBlgD,QAASzG,KAAKE,MAAMuG,QACpB/E,GAAI1B,KAAKE,MAAMwB,GACfoD,SAAU9E,KAAKE,MAAM4E,SACrB1E,KAAM,KAKV0oD,qBAAqB/9B,GACzB,MAAMowC,GAAmB/sB,EAAAA,EAAAA,IAAapuC,KAAKE,MAAMuG,QAAQC,SAEzD,OADA4zB,EAAAA,EAAAA,mBAAkB6gC,GACXpwC,EAAStb,KAAIoD,IAChB,IAAIuoD,EACJ,GAAI3pD,EAAAA,GAAiBtJ,UAAW,CAAC,IAADkzD,EAC5B,MAAMjnD,GAAasb,EAAAA,EAAAA,mBAAkB7c,EAAQonC,YAAaj6C,KAAKE,MAAMuG,QAAQiB,eACvEmoB,EAAU,IAAI1c,IAAIiB,EAAYhM,OAAOiR,SAAS9V,OAChDosB,EAAAA,EAAAA,IAAiB3vB,KAAKE,MAAMuG,QAAQiB,cAAc1D,iBAClD6rB,EAAQ9W,aAAakO,IAAI,YAAa,GAAGpU,EAAQwnB,aAEvB,QAA9BghC,EAAAxoD,EAAQonC,YAAYpf,kBAAU,IAAAwgC,GAA9BA,EAAgC5rD,KAAIoiC,IAAY,IAAAypB,EAC5C,MAAMjR,EAAyC,QAA3BiR,EAAGzpB,EAAUxyB,sBAAc,IAAAi8C,OAAA,EAAxBA,EAA0B3/C,MACjD,IAAKhD,EAAAA,iBAAiBC,mBAAmByxC,GAAiB,CACtD,MAAM/Y,GAAgBgZ,EAAAA,EAAAA,6CAA4CzY,EAAUzyB,oBAC5EyQ,EAAQ9W,aAAakO,IAAIqqB,EAAe+Y,OAGhD+Q,EAAiBvrC,EAAQtsB,KAE7B,MAAM6yD,EAAqBp2D,KAAK6G,MAAMoqD,qBAAuBp+C,EAAQ2H,OACrE,IAAIg8C,EAAgBpI,EAAkBiI,yBAClCD,IACAI,EAAgB1sD,GAAAA,CAAW0sD,EAAe,uCAE9C,MAAM+E,EAAuB1oD,EAAQwnB,YAAc8gC,EAE7CpR,EAAiC,GAAGqE,EAAkB8M,+CACtDjR,EAAwB,GAAGF,mBAC3BG,EAAuB,GAAGkE,EAAkB8M,oCAC5CM,EAAwB,GAAGpN,EAAkB8M,qCAC7CO,EAAez7D,KAAKowD,gBACpBl4C,EAAQ,CACVwjD,MAAO,GAAGD,MACVE,SAAU,GAAGF,MACbG,SAAU,GAAGH,OAEjB,MAAO,CACHI,mBAAoB,CAChB76D,UAAWw1D,EACX5xD,IAAKiO,EAAQ2H,OACbpZ,IAAKpB,KAAKkwD,oBACV1hD,aAAcxO,KAAK+xD,eAAel/C,EAAQ2H,QAC1C87C,aAAct2D,KAAKiyD,gBAAgBp/C,EAAQ2H,QAC3CzK,KAAM,WACN8gC,SAAU,EACV34B,MAAOA,GAEXrF,QAAAA,EACAuB,WAAYgnD,EACZ7Q,2BAA4BvqD,KAAKi7D,kCAAkCpoD,EAAQ2H,QAC3Eu/B,aACIn6C,IAAAA,cAAA,OAAKoB,UAAW+oD,EAAgCnlD,IAAKiO,EAAQ2H,QACxDxa,KAAKg6C,oBAAoBiQ,EAAuBp3C,EAAQonC,cAGjEwQ,YACI7qD,IAAAA,cAAA,KAAGoB,UAAWkpD,EAAsB3mD,KAAM63D,EAAgBx2D,IAAKiO,EAAQ2H,QAClE3H,EAAQonC,YAAYxyC,MAG7B4rC,aACIzzC,IAAAA,cAAA,OAAKoB,UAAWw6D,EAAuB52D,IAAKiO,EAAQ2H,QAC/C3H,EAAQoK,OACLrd,IAAAA,cAAC0iB,EAAAA,eAAc,CACX7b,QAASzG,KAAKE,MAAMuG,QACpB/E,GAAI1B,KAAKE,MAAMwB,GACfoD,SAAU9E,KAAKE,MAAM4E,SACrB1E,KAAM,CAAE6c,MAAOpK,EAAQoK,OACvB/K,cAAelS,KAAKE,MAAMM,UAAUs7D,sCACpC3pD,kBAAmBnS,KAAKE,MAAMM,UAAUu7D,0CACxC3pD,iBAAkBpS,KAAKE,MAAMM,UAAUw7D,4CAKvDC,UAAWj8D,KAAK81D,iBAAiBjjD,GACjC0oD,qBAAAA,EACAW,yBACIt8D,IAAAA,cAACsF,EAAAA,OAAM,CAAC3B,KAAM63D,EAAgBh2D,MAAOpF,KAAKE,MAAMM,UAAU27D,+CACrDn8D,KAAKE,MAAMM,UAAU27D,+CAG9BC,eAAgBp8D,KAAKu2D,mBAAmB1jD,EAAQ2H,QAChD6hD,iBAAkBr8D,KAAKm2D,qBAAqBtjD,EAAQ2H,QACpD8hD,mBACuB34D,IAAnBkP,EAAQ0J,OAAuB3c,IAAAA,cAAA,OAAKgF,IAAKiO,EAAQ2H,QAASxa,KAAK02D,qBAAqB7jD,EAAQ0J,cAAiB5Y,EACjH44D,wBAC4B54D,IAAxBkP,EAAQonC,YACJr6C,IAAAA,cAAA,OAAKgF,IAAKiO,EAAQ2H,QAAS4zC,EAAkBoO,0BAA0B3pD,EAAQonC,mBAE/Et2C,OAx+BGyqD,EAAAptD,UAAoB,yBAEpBotD,EAAAlD,uBAAyB,GAAGkD,EAAkBptD,4BAE9CotD,EAAA5C,mBAAqB,GAAG4C,EAAkBlD,oCAE1CkD,EAAA1C,eAAiB,GAAG0C,EAAkB5C,4BAEtC4C,EAAAO,qBAAuB,GAAGP,EAAkB1C,yBAE5C0C,EAAA8M,oBAAsB,GAAG9M,EAAkBO,oCAE3CP,EAAAyM,sBAAwB,GAAGzM,EAAkB1C,0BAE7C0C,EAAAqO,mBAAqB,GAAGrO,EAAkB1C,uBAE1C0C,EAAApE,kBAAoB,GAAGoE,EAAkB1C,sBAEzC0C,EAAAwJ,uBAAyB,GAAGxJ,EAAkBqO,qCAE9CrO,EAAAgM,2BAA6B,GAAGhM,EAAkBqO,yCAElDrO,EAAAsO,yBAA2B,GAAGtO,EAAkB1C,8BAEhD0C,EAAAiI,yBAA2B,GAAGjI,EAAkBpE,iCAEhDoE,EAAAqI,mBAAqB,GAAGrI,EAAkBpE,0BAE1CoE,EAAA6E,mBAAqB,GAAG7E,EAAkBptD,wBAE1CotD,EAAAY,2BAA6B,GAAGZ,EAAkBO,+BAElDP,EAAAuO,oCAAsC,GAAGvO,EAAkBsO,wCA+8BtF,2LC9nCA,MAAME,EAA2BA,CAC7BjoB,EAIAkoB,EACAjM,IAEOjc,EAAOllC,KAAI,CAAC1J,EAAO4J,IAClBA,IAAUihD,EAENhxD,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,CACDsB,IAAKmB,EAAMmyD,gBAAgBmE,iBAAiBz3D,KACxCmB,EAAMmyD,gBAAgBmE,iBAAgB,CAC1CtsD,KAAK,WACL+sD,SAAS,IACT5kD,MAAOnS,EAAMmyD,gBAAgB2D,mBAAmB3jD,QAE/C2kD,GAINj9D,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,CAACsB,IAAK+K,GAAW5J,EAAMmyD,gBAAgBmE,iBAAgB,CAAEnkD,MAAOnS,EAAMmyD,gBAAgB2D,mBAAmB3jD,WAUvH6kD,EAAqBA,CACvBpoB,EAIAsc,IAEOtc,EAAOllC,KAAI1J,GAEVnG,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GACGyC,EAAMmyD,gBAAgBkE,eAAc,CACxCx3D,IAAK,GAAGmB,EAAMmyD,gBAAgBrlD,QAAQ2H,UAAUy2C,IAChD/4C,MAAOnS,EAAMmyD,gBAAgB2D,mBAAmB3jD,QAE/CnS,EAAMiJ,QAUVguD,EAAkF98D,IAAQ,IAAA2rD,EAAAC,EAAAmR,EAAAC,EAAAC,EAAAC,EAAAC,EACnG,OACIz9D,EAAAA,cAAC+Q,EAAAA,OAAMpP,OAAA+B,OAAA,GAAKpD,EAAMuL,aACbvL,EAAM2zD,eACN3zD,EAAMimC,QACPvmC,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAW,GAAGotD,EAAAA,kBAAkBptD,iCAAkCd,EAAMi0D,kBAC7Ej0D,EAAMizD,gBAAkBjzD,EAAMmoD,wBAAqB1kD,EAAYzD,EAAMmzD,QACrEnzD,EAAMizD,eAAiBjzD,EAAM6zD,qBAAkBpwD,EAChD/D,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKpD,EAAMqzD,0BACVrzD,EAAMizD,gBAAkBjzD,EAAMmoD,mBAAqBnoD,EAAMmpD,oBAAiB1lD,GAE/EzD,EAAMmoD,mBACHzoD,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAWotD,EAAAA,kBAAkBlD,wBAC/BtrD,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAWotD,EAAAA,kBAAkB5C,oBAC/B5rD,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAWotD,EAAAA,kBAAkB1C,eAAgBtqD,IAAKlB,EAAMw0D,gBAC1D90D,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAW,GAAGotD,EAAAA,kBAAkBO,wBAClC/uD,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAW,GAAGotD,EAAAA,kBAAkBO,0CAChCvtD,IAAKlB,EAAMy0D,sBAEVz0D,EAAM40D,2BAA6B50D,EAAMuzD,gBAC1C7zD,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAW8I,GAAAA,CACPskD,EAAAA,kBAAkBpE,kBAClB,GAAGoE,EAAAA,kBAAkBO,qCAEzB5+C,KAAK,QAEkB,QAFZ87C,EAEV3rD,EAAM2oD,wBAAgB,IAAAgD,OAAA,EAAtBA,EAAwBp8C,KAAIyoD,IACzB,MAAMqD,EAAuBrD,EAAgBqD,qBACvC+B,EAAmB,GAAGlP,EAAAA,kBAAkB8M,+BAC9C,OACIt7D,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GACG40D,EAAgB2D,mBAAkB,CACtCj3D,IAAKszD,EAAgB2D,mBAAmBj3D,IACxCsT,MAAOggD,EAAgB2D,mBAAmB3jD,QAEzCggD,EAAgB3N,2BAChB2N,EAAgBne,aAChBtoC,EAAAA,GAAiBtJ,UAAY+vD,EAAgBzN,iBAAc9mD,EAC3Du0D,EAAgB7kB,aACjBzzC,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAWs8D,EAAkB14D,IAAKszD,EAAgBrlD,QAAQ2H,QAC3D+gD,EACKrD,EAAgB+D,UAChB/D,EAAgBgE,+BAMzCh8D,EAAM60D,uBAAyB70D,EAAMyzD,cAG9C/zD,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAWotD,EAAAA,kBAAkBqO,mBAC7Bc,SAAUr9D,EAAMg1D,aAChB9zD,IAAKlB,EAAM00D,oBAEY,QAFM9I,EAE5B5rD,EAAM2oD,wBAAgB,IAAAiD,OAAA,EAAtBA,EAAwBr8C,KAAI,CAAC8M,EAAQ3X,KAAO,IAAA44D,EAAAC,EACzC,YAAgC95D,IAAzB4Y,EAAO+/C,eAAuC,IAAR13D,EACzChF,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAW8I,GAAAA,CACP,GAAGskD,EAAAA,kBAAkBqO,iCACrBrO,EAAAA,kBAAkBpE,oBAGtBpqD,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAWotD,EAAAA,kBAAkBsO,yBAC7B93D,IAAK,UAAU1E,EAAM0wD,yBACrB7gD,KAAK,QAEkB,QAFZytD,EAEVt9D,EAAM2oD,wBAAgB,IAAA2U,OAAA,EAAtBA,EAAwB/tD,KAAI,CAACyoD,EAAiBvoD,IACvCA,IAAUzP,EAAM0wD,uBAEZhxD,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,CACDsB,IAAKszD,EAAgBmE,iBAAiBz3D,KAClCszD,EAAgBmE,iBAAgB,CACpCtsD,KAAK,WACL+sD,SAAS,IACT5kD,MAAOggD,EAAgB2D,mBAAmB3jD,QAEzChY,EAAMM,UAAUk9D,oCAKzB99D,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,CACDsB,IAAKszD,EAAgBmE,iBAAiBz3D,KAClCszD,EAAgBmE,iBAAgB,CACpCtsD,KAAK,OACL+sD,SAAS,KACT5kD,MAAOggD,EAAgB2D,mBAAmB3jD,YAK1DtY,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAW,GAAGotD,EAAAA,kBAAkBsO,4BAA4BtO,EAAAA,kBAAkBuO,sCAC9E5sD,KAAK,QAEkB,QAFZ0tD,EAEVv9D,EAAM2oD,wBAAgB,IAAA4U,OAAA,EAAtBA,EAAwBhuD,KAAIyoD,GAErBt4D,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GACG40D,EAAgBkE,eAAc,CAClCx3D,IAAK,GAAGszD,EAAgBrlD,QAAQ2H,UAAUta,EAAM+wD,qBAChD/4C,MAAOggD,EAAgB2D,mBAAmB3jD,QAEzCggD,EAAgBoE,wBAOrC34D,KAGe,QADrBs5D,EACD/8D,EAAM2oD,wBAAgB,IAAAoU,OAAA,EAAtBA,EAAwBxtD,KAAI,CAACiT,EAAa9d,KAAO,IAAA+4D,EAAAC,EAC9C,YAA0Cj6D,IAAnC+e,EAAY65C,oBAA4C,IAAR33D,EACnDhF,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAW8I,GAAAA,CACP,GAAGskD,EAAAA,kBAAkBqO,sCACrBrO,EAAAA,kBAAkBpE,oBAGtBpqD,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAWotD,EAAAA,kBAAkBsO,yBAC7B93D,IAAK,eAAe1E,EAAM0wD,yBAC1B7gD,KAAK,QAEkB,QAFZ4tD,EAEVz9D,EAAM2oD,wBAAgB,IAAA8U,OAAA,EAAtBA,EAAwBluD,KAAI,CAACyoD,EAAiBvoD,IACvCA,IAAUzP,EAAM0wD,uBAEZhxD,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,CACDsB,IAAKszD,EAAgBmE,iBAAiBz3D,KAClCszD,EAAgBmE,iBAAgB,CACpCtsD,KAAK,WACL+sD,SAAS,IACT5kD,MAAOggD,EAAgB2D,mBAAmB3jD,QAEzChY,EAAMM,UAAUq9D,yCAKzBj+D,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,CACDsB,IAAKszD,EAAgBmE,iBAAiBz3D,KAClCszD,EAAgBmE,iBAAgB,CACpCtsD,KAAK,OACL+sD,SAAS,KACT5kD,MAAOggD,EAAgB2D,mBAAmB3jD,YAK1DtY,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAW,GAAGotD,EAAAA,kBAAkBsO,4BAA4BtO,EAAAA,kBAAkBuO,sCAC9E5sD,KAAK,QAEkB,QAFZ6tD,EAEV19D,EAAM2oD,wBAAgB,IAAA+U,OAAA,EAAtBA,EAAwBnuD,KAAIyoD,GAErBt4D,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GACG40D,EAAgBkE,eAAc,CAClCx3D,IAAK,GAAGszD,EAAgBrlD,QAAQ2H,UAAUta,EAAM+wD,qBAChD/4C,MAAOggD,EAAgB2D,mBAAmB3jD,QAEzCggD,EAAgBqE,6BAOrC54D,KAGc,QADpBu5D,EACDh9D,EAAMq1D,uBAAe,IAAA2H,OAAA,EAArBA,EAAuBztD,KAAIyqD,IAEpBA,MAAAA,OAAc,EAAdA,EAAgB5oB,gBACZ1xC,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAW8I,GAAAA,CACPskD,EAAAA,kBAAkBwJ,uBAClBxJ,EAAAA,kBAAkBpE,kBAClBkQ,EAAevC,oBAEnB/yD,IAAKs1D,EAAevC,oBAEpB/3D,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAWotD,EAAAA,kBAAkBsO,yBAC7B93D,IAAK,GAAGs1D,EAAe5oB,iBAAiBpxC,EAAM0wD,yBAC9C7gD,KAAK,QAEJ6sD,EACG1C,EAAejC,uBACfiC,EAAe5oB,cACfpxC,EAAM0wD,yBAIdhxD,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAW,GAAGotD,EAAAA,kBAAkBsO,4BAA4BtO,EAAAA,kBAAkBuO,sCAC9E5sD,KAAK,QAEJgtD,EAAmB7C,EAAejC,uBAAwB/3D,EAAM+wD,wBAM3D,QADxBkM,EACDj9D,EAAMw1D,2BAAmB,IAAAyH,OAAA,EAAzBA,EAA2B1tD,KAAIquD,IAC0D,IAA/EnlD,EAAAA,iBAAiBolD,cAAcD,EAAmBhR,cAAcH,WACnE/sD,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAW8I,GAAAA,CACPskD,EAAAA,kBAAkBgM,2BAClBhM,EAAAA,kBAAkBpE,kBAClB8T,EAAmB3D,wBAEvBv1D,IAAKk5D,EAAmB3D,wBAExBv6D,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAWotD,EAAAA,kBAAkBsO,yBAC7B93D,IAAK,GAAGk5D,EAAmBhR,cAAcrlD,QAAQvH,EAAM0wD,yBACvD7gD,KAAK,QAEJ6sD,EACGkB,EAAmBzD,oBACnByD,EAAmBhR,cAAcrlD,KACjCvH,EAAM0wD,yBAGdhxD,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAW,GAAGotD,EAAAA,kBAAkBsO,4BAA4BtO,EAAAA,kBAAkBuO,sCAC9E5sD,KAAK,QAEJgtD,EAAmBe,EAAmBzD,oBAAqBn6D,EAAM+wD,2BAI1EttD,IAGR/D,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAW8I,GAAAA,CACP,GAAGskD,EAAAA,kBAAkBqO,8BACrBrO,EAAAA,kBAAkBpE,oBAGtBpqD,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAWotD,EAAAA,kBAAkBsO,yBAC7B93D,IAAK,OAAO1E,EAAM0wD,yBAClB7gD,KAAK,QAEkB,QAFZqtD,EAEVl9D,EAAM2oD,wBAAgB,IAAAuU,OAAA,EAAtBA,EAAwB3tD,KAAI,CAACyoD,EAAiBvoD,IACvCA,IAAUzP,EAAM0wD,uBAEZhxD,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,CACDsB,IAAKszD,EAAgBmE,iBAAiBz3D,KAClCszD,EAAgBmE,iBAAgB,CACpCtsD,KAAK,WACL+sD,SAAS,IACT5kD,MAAOggD,EAAgB2D,mBAAmB3jD,QAEzChY,EAAMM,UAAUw9D,iCAKzBp+D,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,CACDsB,IAAKszD,EAAgBmE,iBAAiBz3D,KAClCszD,EAAgBmE,iBAAgB,CACpCnkD,MAAOggD,EAAgB2D,mBAAmB3jD,YAK1DtY,EAAAA,cAACgR,EAAAA,KAAI,CACD5P,UAAW,GAAGotD,EAAAA,kBAAkBsO,4BAA4BtO,EAAAA,kBAAkBuO,sCAC9E5sD,KAAK,QAEkB,QAFZstD,EAEVn9D,EAAM2oD,wBAAgB,IAAAwU,OAAA,EAAtBA,EAAwB5tD,KAAIyoD,GAErBt4D,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GACG40D,EAAgBkE,eAAc,CAClCx3D,IAAK,GAAGszD,EAAgBrlD,QAAQ2H,UAAUta,EAAM+wD,qBAChD/4C,MAAOggD,EAAgB2D,mBAAmB3jD,QAEzCggD,EAAgBrlD,QAAQonC,YAAYz5B,qBAWzE7c,IAMhB,2IC3WO,MAAMs6D,EAA4DrsD,IAA+D,IAA9D,qBAAEssD,EAAoB,MAAEC,EAAK,iBAAEt7D,EAAgB,QAAEi7C,GAASlsC,EAChI,MAAMjP,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAmBC,EAAAA,kBAAkBs7D,kBACzEr7D,GAAaC,EAAAA,EAAAA,wBAAuBH,EAAmBF,GAC7D,OACI/C,EAAAA,cAAA,SAAA2B,OAAA+B,OAAA,CAAQtC,UAAU,gCAA+B,aAAak9D,EAAsB/8D,QAAS28C,GAAa/6C,GACtGnD,EAAAA,cAAA,QAAMoB,UAAU,uCAAsC,kBACjDm9D,gBCHV,MAAME,EAAgDzsD,IAA8D,IAA7D,MAAE0sD,EAAK,eAAEt6D,EAAc,aAAEiM,EAAY,iBAAEpN,GAAkB+O,EACnH,MAAM2sD,EAAgBC,EAAkBF,EAAOz7D,GAC/C,OACIjD,EAAAA,cAAA,QAAMoB,UAAU,0BACXu9D,GAAiBA,EAAc98D,OAAS,EACrC7B,EAAAA,cAACkE,EAAAA,GAAc,CAACw6D,MAAOC,EAAe55D,UAAW,CAAEsL,aAAAA,EAAcjM,eAAAA,KACjE,OAKVw6D,EAAoBA,CAACC,EAAwB57D,KAC/C,IAAK47D,GAAgC,IAApBA,EAASh9D,OACtB,OAAO,KAEX,MAAM88D,EAAuC,GAoB7C,OAnBAE,EAASxjD,SAAQ,CAAC9X,EAAMwM,KAEpB,MAAMhN,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAkB,GAAI,IAC1DiD,EAAW3C,EAAK2C,SAAW3C,EAAK2C,SAAW,GACjDnD,EAAQiN,cAAcC,MAAQ/J,EAC9B,MAAM/C,GAAaC,EAAAA,EAAAA,wBAAuBH,EAAkBF,GACtDmN,EAAoC,CACtCtM,UAAWL,EAAKK,UAChBxC,UAAW,wBACX8E,SAAU3C,EAAK2C,SACf1C,QAASD,EAAKC,QAAQC,eACtBK,aAAcP,EAAKO,aACnBqM,KAAM,OACNC,qBAAsBjN,EACtB5B,SAASwM,EAAAA,EAAAA,kBAAiB9K,EAAkBF,EAASmD,IAEzDy4D,EAAc5mD,KAAK7H,MAGhByuD,GCvCEG,EAA8C9sD,IAA2C,IAA1C,KAAEwyB,EAAI,aAAEn0B,EAAY,eAAEjM,GAAgB4N,EAC9F,OAAOhS,EAAAA,cAACkE,EAAAA,GAAa,CAAC9C,UAAU,wBAAwB0K,IAAI,OAAO04B,KAAMA,EAAMz/B,UAAW,CAAEg6D,OAAQ1uD,EAAcjM,eAAAA,2kBC0BtH,MAAM46D,UAAoBh/D,EAAAA,cAA1BC,cAAA,oBACW,KAAAgH,MAA2B,CAC9B0gB,WAAW,EACXs3C,WAAW,EACXx3C,YAAa,GAGA,KAAAxkB,kBAAsCqE,EAAAA,EAAAA,oBACnDlH,KAAKE,MAAMuG,QAAQC,QAAQS,kBAC3BnH,KAAKE,MAAMkH,aACXpH,KAAKE,MAAMkC,WAmER,KAAA08D,iBAAoBn5D,IACnB3F,KAAKE,MAAMgD,OAAO67D,gBAAkB/+D,KAAKE,MAAMgD,OAAO67D,eAAe,KACrE/+D,KAAKE,MAAMgD,OAAO67D,eAAe,GAAG36B,KAAOz+B,EAAMlC,OAAOsC,QAIzD,KAAAN,qBAAwBC,GAAuBC,IAClD,GAAI3F,KAAKE,MAAMgD,OAAO67D,gBAAkB/+D,KAAKE,MAAMgD,OAAO67D,eAAe,GAAI,CACzE,MAAMT,EAAQt+D,KAAKE,MAAMgD,OAAO67D,eAAe,GAAGT,MAC9CA,IACAA,EAAM54D,GAAWI,SAAWH,EAAMlC,OAAOsC,SAKpC,KAAAohB,MAAQ,KACrB,MAAMC,EAAYpnB,KAAKg/D,cAAgB,EAAIh/D,KAAK6G,MAAMwgB,YAAc,EACpErnB,KAAK4nB,WAAWR,IAGH,KAAAK,UAAY,KACzB,MAAML,EAAYpnB,KAAKi/D,eACjBj/D,KAAKE,MAAMgD,OAAO67D,eACd/+D,KAAKE,MAAMgD,OAAO67D,eAAet9D,OAAS,EAC1C,EACJzB,KAAK6G,MAAMwgB,YAAc,EAC/BrnB,KAAK4nB,WAAWR,IAGH,KAAAQ,WAAcjY,IACvB3P,KAAK6G,MAAM0gB,WAGfvnB,KAAKuP,SAAS,CAAE8X,YAAa1X,KAGhB,KAAAsvD,aAAe,IAAiC,IAA3Bj/D,KAAK6G,MAAMwgB,YAEhC,KAAA23C,YAAc,IAC3Bh/D,KAAKE,MAAMgD,OAAO67D,gBAAkB/+D,KAAK6G,MAAMwgB,cAAgBrnB,KAAKE,MAAMgD,OAAO67D,eAAet9D,OAAS,EAE5F,KAAA4jC,WAAa,KAC1BrlC,KAAKuP,SAAS,CAAEsvD,WAAW,KA1GxB1+D,SACH,MAAM,eAAE4+D,EAAc,eAAE91C,EAAc,SAAEH,EAAQ,YAAEE,EAAW,SAAEH,EAAQ,UAAE7nB,EAAY,IAAOhB,KAAKE,MAAMgD,QACjG,qBAAEg7D,EAAoB,iBAAEgB,EAAgB,WAAEC,EAAU,gBAAEC,GAAoBp/D,KAAKE,MAAMM,WACrF,UAAEq+D,EAAS,YAAEx3C,GAAgBrnB,KAAK6G,MAExC,IAAKg4D,EAED,OADA7+D,KAAKE,MAAMuG,QAAQrE,UAAUD,MAAM,sDAC5B,KAGX,MAAMqI,EAASC,EAAAA,EAAA,GAGRzK,KAAKE,OAAK,IACbc,UAAW8I,GAAAA,CAAW,kBAAmB9I,GACzC69D,UAAAA,EACAn9B,UAAW1hC,KAAKqlC,WAChBg6B,YAAar/D,KAAKyF,qBAClB65D,WAAYt/D,KAAK8+D,iBAEjBS,iBAAkB,CACdv+D,UAAW8I,GAAAA,CAAW,kBAAmB9I,GACzCyK,YAAazL,KAAKE,MAClB6P,KAAM,SACN,aAAcqvD,GAElBI,qBAAsB,CAClB9zD,IAAKgzD,GAETe,sBAAuB,CACnB/zD,IAAK2yD,EACLx7D,iBAAkB7C,KAAK6C,kBAE3B68D,aAAc,CAAE1+D,UAAW,4BAC3B2+D,gBAAiBR,EACjBJ,eAAAA,EACA13C,YAAAA,EACAu4C,cAAe,CACXl0D,IAAK+c,EAAAA,SACLznB,UAAW,4BACXqmB,YAAAA,EACAY,KAAMjoB,KAAKmnB,MACXe,SAAUloB,KAAKynB,UACfU,yBAA0BnoB,KAAK4nB,WAC/Bi4C,cAAe72C,EACfF,SAAAA,EACAE,YAAAA,EACAH,SAAAA,GAEJi3C,YAAa72C,GACTrpB,EAAAA,cAACq+D,EAAsB18D,OAAA+B,OAAA,GACf,CACAw6C,QAAS99C,KAAKqlC,WACd84B,MAAOe,EACPhB,qBAAAA,EACAr7D,iBAAkB7C,KAAK6C,sBAMvC,OAAO7C,KAAKE,MAAMmN,WAAW7C,IAiDrC,kGC1JA,MAmCA,EAnCyDtK,IACrD,MAAM,iBACFq/D,EAAgB,aAChBG,EAAY,YACZI,EAAW,eACXf,EAAc,qBACdS,EAAoB,sBACpBC,EAAqB,cACrBG,EAAa,gBACbD,EAAe,YACfN,EAAW,WACXC,GACAp/D,EAEE6/D,EACFhB,GACAA,EAAetvD,KAAI,CAACpN,EAASsN,IAErB/P,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKo8D,EAAY,CAAE96D,IAAK+K,EAAK,YAAY,MAAMI,KAAK,YACrDnQ,EAAAA,cAAA,QAAMoB,UAAU,WAAW2+D,GAC1Bt9D,EAAQ+hC,MAAQxkC,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKk8D,EAAoB,CAAEp7B,KAAM/hC,EAAQ+hC,KAAMjjC,QAASm+D,KAC7Ej9D,EAAQi8D,OAASj8D,EAAQi8D,MAAM78D,OAAS,GACrC7B,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKm8D,EAAqB,CAAEnB,MAAOj8D,EAAQi8D,MAAOn9D,QAASk+D,QAMpF,OACIz/D,EAAAA,cAAC+Q,EAAAA,OAAMpP,OAAA+B,OAAA,GAAKi8D,GACR3/D,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKs8D,EAAa,CAAEnvD,MAAOsvD,KAC/BD,yOCeN,MAyCME,EAAoE9/D,IAAsD,IAAA+/D,EAAAC,EACnI,MACI9/D,MAAM,mBAAE+/D,IACRjgE,EAEJ,QAAmFyD,KAA/Ew8D,MAAAA,GAA0D,QAAxCF,EAAlBE,EAAoBC,wBAAwB,GAAGv8B,mBAAW,IAAAo8B,OAAA,EAA1DA,EAA4Dl8B,gBAC5D,OAAO,KAEX,MAAM9Y,EAAWk1C,EAAmBC,wBAAwB,GAAGp8B,gBAAgBjU,SACzEswC,EAAcngE,EAAMM,UAAU8/D,oCAC9BC,EAAkBrgE,EAAMM,UAAUggE,yCAClC/9B,EApDuBviC,CAAAA,IAAuD,IAAAugE,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACpF,MAAO,CACHC,aAAwD,QAA5Cb,EAAEvgE,EAAMM,UAAU+gE,kCAA0B,IAAAd,EAAAA,EAAI,GAC5De,qBAAmE,QAA/Cd,EAAExgE,EAAMM,UAAUihE,qCAA6B,IAAAf,EAAAA,EAAI,GACvE/3D,uBAA4G,QAAtFg4D,EAAEzgE,EAAMM,UAAUkhE,4EAAoE,IAAAf,EAAAA,EAAI,GAChHgB,kBAA+D,QAA9Cf,EAAE1gE,EAAMM,UAAUohE,oCAA4B,IAAAhB,EAAAA,EAAI,GACnEiB,qBAA2E,QAAvDhB,EAAE3gE,EAAMM,UAAUshE,6CAAqC,IAAAjB,EAAAA,EAAI,GAC/EkB,sBAAyE,QAApDjB,EAAE5gE,EAAMM,UAAUwhE,0CAAkC,IAAAlB,EAAAA,EAAI,GAC7EmB,kBAAkE,QAAjDlB,EAAE7gE,EAAMM,UAAU0hE,uCAA+B,IAAAnB,EAAAA,EAAI,GACtE7uD,cAA4C,QAA/B8uD,EAAE9gE,EAAMM,UAAU0R,qBAAa,IAAA8uD,EAAAA,EAAI,GAChD7uD,kBAAoD,QAAnC8uD,EAAE/gE,EAAMM,UAAU2R,yBAAiB,IAAA8uD,EAAAA,EAAI,GACxD7uD,iBAAkD,QAAlC8uD,EAAEhhE,EAAMM,UAAU4R,wBAAgB,IAAA8uD,EAAAA,EAAI,GACtDiB,kBAAoD,QAAnChB,EAAEjhE,EAAMM,UAAU2hE,yBAAiB,IAAAhB,EAAAA,EAAI,GACxDiB,0BAAsG,QAA7EhB,EAAElhE,EAAMM,UAAU6hE,mEAA2D,IAAAjB,EAAAA,EAAI,GAC1GkB,mCAAwH,QAAtFjB,EAAEnhE,EAAMM,UAAUkhE,4EAAoE,IAAAL,EAAAA,EAAI,KAsCrFkB,CAAiBriE,GAEtDsiE,EA/BsBC,CAAAA,IAC5B,MAAMC,EAAsC,GAC5C,IAAK,MAAMC,KAAaF,EAAWrC,wBAAyB,CAAC,IAADwC,EACxD,MACMC,EAAuB,CACzB9yC,SAFa4yC,EAAU3+B,gBAAgBjU,UAIrChF,EAAW,IAAI+3C,EAAAA,oBAAoBD,EAAgC,QAAvBD,EAAED,EAAU9+B,mBAAW,IAAA++B,OAAA,EAArBA,EAAuB7+B,gBAC3E2+B,EAAa/qD,KAAKoT,GAEtB,OAAO23C,GAqBqBK,CAAgB5C,GAC5C,OACIvgE,IAAAA,cAACojE,EAAAA,mBAAkB,CACfzgC,cAAe89B,MAAAA,EAAAA,EAAe,GAC9BpnC,eAAe,GACfgqC,oBAAqB1C,EACrBt1C,SAAUA,EACVvpB,GAAIxB,EAAMwB,GACVoD,SAAU5E,EAAM4E,SAChB9D,UAAWd,EAAMc,UACjBkiE,eAAe7uC,EAAAA,EAAAA,IAAW,OAAQn0B,EAAMuG,QAAQiB,eAChDtH,KAAM,CAAEyS,QAAkE,QAA3DqtD,EAAEC,EAAmBC,wBAAwB,GAAGv8B,mBAAW,IAAAq8B,OAAA,EAAzDA,EAA2Dn8B,gBAC5Et9B,QAASvG,EAAMuG,QACfg8B,cAAeA,EACf0gC,wBAfgC,EAgBhCC,qBAAsBZ,EACtBa,QAASnjE,EAAMmjE,WCrDrBC,EAAoCpjE,IACtC,MACIE,MAAM,mBAAE+/D,GAAoB,QAC5B15D,EAAO,gBACP88D,EAAe,UACf/iE,EAAS,SACTsE,GACA5E,EAEJ,OACIN,EAAAA,cAACogE,EAA6B,CAC1Bh/D,UAAW,GAAGuiE,qCACd7hE,GAJS,mBAKToD,SAAUA,EACV1E,KAAM,CAAE+/D,mBAAAA,GACR15D,QAASA,EACTjG,UAAWA,EACX6iE,QAAU/iE,IAAgB,IAAAkjE,EACK,QAA3BA,EAAIljE,EAAOmjE,wBAAgB,IAAAD,GAAc,QAAdA,EAAvBA,EAAyB1iB,oBAAY,IAAA0iB,GAArCA,EAAuCziB,kBACvC7gD,EAAMghC,SAASwiC,eAAepjE,EAAOmjE,iBAAiB3iB,aAAaC,sBAYjF4iB,EAAuBzjE,GAAuC,KAhDtCA,CAAAA,IAC1B,MACIE,MAAM,mBAAE+/D,GAAoB,SAC5Bj/B,GACAhhC,GACE,kBAAE0jE,GAAsB1iC,EAE1Bi/B,GAAsBA,EAAmBv6B,YAAYpb,IACrDo5C,EAAkBzD,EAAmBv6B,YAAYpb,KAyCrDq5C,CAAqB3jE,yOC9ElB,MAAM4jE,UAA6BlkE,EAAAA,UAStCC,YAAmBK,GAAiC,IAAA6jE,EAAAC,EAChDthE,MAAMxC,GAkBH,KAAAgM,OAAUvG,IACbA,EAAM4e,iBACNvkB,KAAKikE,oBAAqB,EACtBjkE,KAAKE,MAAMgkE,UACXlkE,KAAKuP,UAASu3C,IAAa,CAAO96C,QAAS86C,EAAc96C,WACzDhM,KAAKE,MAAMgkE,SAASlkE,KAAK6G,QAEzB7G,KAAKuP,UAASu3C,IAAa,CAAO96C,QAAS86C,EAAc96C,YAxB7DhM,KAAKikE,oBAAqB,EAC1BjkE,KAAK6G,MAAQ,CAAEmF,OAAmC,QAA7B+3D,EAAqB,QAArBC,EAAE9jE,EAAMikE,qBAAa,IAAAH,OAAA,EAAnBA,EAAqBh4D,cAAM,IAAA+3D,GAAAA,GAClD/jE,KAAKokE,kBAAoBt6D,GAAAA,CAAW,gBAAiB9J,KAAKE,MAAMmkE,qBAAuBrkE,KAAKE,MAAMmkE,qBAAuB,IACzH,MAAMlzD,EAAanR,KAAKE,MAAMiR,WAAanR,KAAKE,MAAMiR,WAAa,GAC/DnR,KAAKE,MAAMokE,gBACXtkE,KAAKukE,iBAAmBz6D,GAAAA,CAAW9J,KAAKokE,kBAAmBpkE,KAAKE,MAAMgR,UAAYlR,KAAKE,MAAMgR,UAAYC,GACzGnR,KAAKwkE,kBAAoBxkE,KAAKukE,mBAE9BvkE,KAAKukE,iBAAmBz6D,GAAAA,CAAW9J,KAAKokE,kBAAmBpkE,KAAKE,MAAMgR,UAAYlR,KAAKE,MAAMgR,UAAY,IACzGlR,KAAKwkE,kBAAoB16D,GAAAA,CAAW9J,KAAKokE,kBAAmBjzD,IAmB7DuV,sBAAsBC,EAAuCC,GAChE,OAAI5mB,KAAK6G,QAAU+f,GAAa5mB,KAAKE,QAAUymB,EAM5CxmB,SACH,MAAMgkE,uWAAa15D,CAAA,GAAwBzK,KAAKE,MAAMikE,qBAGzBxgE,IAAzBwgE,EAAcn4D,QAAwBhM,KAAKikE,sBAC3CE,EAAcn4D,OAAShM,KAAK6G,MAAMmF,QAEtCm4D,EAAcM,SAAWzkE,KAAKE,MAAMukE,SACpC,MAAMC,EAAc56D,GAAAA,CAAW,SAAU9J,KAAKE,MAAMc,WAC9C2jE,EAAwB,GAAG3kE,KAAKE,MAAMc,UAAYhB,KAAKE,MAAMc,UAAY,aAE/E,OADAhB,KAAKikE,oBAAqB,EAEtBrkE,EAAAA,cAAA,OAAKoB,UAAW0jE,GACZ9kE,EAAAA,cAACsF,EAAAA,OAAM3D,OAAA+B,OAAA,GACCtD,KAAKE,MAAM0kE,kBAAiB,CAChCzjE,QAASnB,KAAKkM,OAAM,gBACLi4D,EAAcn4D,OAC7B64D,OAAK,EACL9/C,SAAU/kB,KAAKE,MAAM4a,WACrB9Z,UAAW2jE,EACX1jE,MAAM,cAELjB,KAAK8kE,iCAAiCX,EAAcn4D,OAAQ04D,IAEjE9kE,EAAAA,cAACoR,EAAAA,SAAQzP,OAAA+B,OAAA,GAAK6gE,KAKlBW,iCAAiCC,EAA0BL,GAC/D,MAAMM,EAAwBl7D,GAAAA,CAC1B,qBACA9J,KAAKE,MAAM+kE,sBAAwBjlE,KAAKE,MAAM+kE,sBAAwB,IAEpEC,EAAqB,GAAGR,YACxBS,EAAyB,GAAGT,gBAClC,OACI9kE,EAAAA,cAAAA,EAAAA,SAAA,KACIA,EAAAA,cAAA,MAAIoB,UAAW8I,GAAAA,CAAWk7D,EAAuBE,IAAsBllE,KAAKE,MAAMklE,mBAClFxlE,EAAAA,cAAA,QAAMoB,UAAW8I,GAAAA,CAAWk7D,EAAuBG,IAA0BnlE,KAAKE,MAAMmlE,uBACvFrlE,KAAKslE,qBAAqB,qBAAsBP,IAKrDO,qBAAqBjsD,EAAkB0rD,GAC3C,IAAIQ,EAAaR,EAAkB/kE,KAAKukE,iBAAmBvkE,KAAKwkE,kBAEhE,OADAe,EAAa,GAAGA,KAAclsD,IACvBzZ,EAAAA,cAAA,QAAMoB,UAAWukE,KC5EhC,MAkBaC,EAA+BtlE,IACxC,MAAM,gBACFqjE,EAAe,iBACfkC,EAAgB,kBAChBC,EAAiB,oBACjBC,EAAmB,SACnBC,EAAQ,YACRC,EAAW,YACXj3C,EAAW,oBACXk3C,EAAmB,kBACnBC,EAAiB,iBACjBC,EAAgB,mBAChBC,EAAkB,qBAClBC,EAAoB,kBACpBC,EAAiB,0BACjBC,GACAlmE,EAEEmmE,EApCqBF,CAAAA,GAAgDxgE,IAC3EwgE,EAAkBxgE,EAAMlC,OAAOsC,OAAS,KAmClBugE,CAAsBH,GAEtCI,EA7BwBL,CAAAA,GAAmDvgE,IACjFugE,EAAqBvgE,EAAMlC,OAAOsC,OAAS,KA4BbygE,CAAyBN,GAEjDO,EACF7mE,EAAAA,cAAA,OAAKoB,UAAW,GAAGuiE,gCACf3jE,EAAAA,cAAA,MAAIoB,UAAW,GAAGuiE,qCAAkD,aAAcyC,GAC7EA,GAELpmE,EAAAA,cAAA,SACIoB,UAAW,GAAGuiE,qCACdh5B,KAAK,OAAM,aACCy7B,EACZ5kE,IAAKqkE,EACL5gD,SAAUwhD,KAKhBK,EACF9mE,EAAAA,cAAA,OAAKoB,UAAW,GAAGuiE,iCACf3jE,EAAAA,cAAA,MAAIoB,UAAW,GAAGuiE,sCAAmD,aAAcwC,GAC9EA,GAELnmE,EAAAA,cAAA,SACIoB,UAAW,GAAGuiE,sCACdzyB,QAAQ,SACR1vC,IAAKskE,EACL7gD,SAAU0hD,EACV77B,UAAWk7B,EACXr7B,KAAK,SAAQ,YACH,SAAQ,aACNw7B,EAAiB,gBACdF,EAAW,gBACXj3C,EAAW,gBACX+2C,EAAoB16C,YA2B/C,MAAO,CACHpY,QAAS4zD,EACTE,aAvBA/mE,EAAAA,cAAA,OAAKoB,UAAW,GAAGuiE,4CACf3jE,EAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAW,GAAGuiE,kDACdx+C,SAAU+gD,EAAmB,aACjBG,EACZ9kE,QAASilE,GAERH,IAiBTh7C,SAAUy7C,EACV7jC,YAboB8iC,EAAoBiB,aACxChnE,EAAAA,cAACkjC,EAAAA,MAAK,CAAC7hC,MAAO0kE,EAAoBiB,aAAa7jC,gBAAiB/2B,OAAQ25D,EAAoBiB,aAAa56D,QACrGpM,EAAAA,cAAA,QAAMoB,UAAW2kE,EAAoBiB,aAAa5gC,eAClDpmC,EAAAA,cAAA,YAAO+lE,EAAoBiB,aAAaC,mBAG5CljE,ICjID,MAAMmjE,EAMTjnE,YAAmBg9C,GACf78C,KAAK68C,YAAcA,EACnB78C,KAAKsuC,YAAa,IANtB/rC,EAAAA,EAAAA,IAAA,CADC8N,EAAAA,IAAU,iCC8Bf,MAAM02D,EAAwF7mE,IAC1F,MAAM,UAAEM,GAAcN,EAChB8mE,EAA4B,GAAG9mE,EAAMc,qCAC3C,OACIpB,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,UACIA,IAAAA,cAAA,QAAMoB,UAAW8I,GAAAA,CAAW,GAAG5J,EAAMc,6BAEzCpB,IAAAA,cAAA,UAAKY,EAAUymE,iCACfrnE,IAAAA,cAAA,UAAKY,EAAU0mE,2BACftnE,IAAAA,cAAA,MAAIoB,UAAWgmE,GAA4BxmE,EAAU2mE,6BACrDvnE,IAAAA,cAAA,UAAKY,EAAU4mE,iCACfxnE,IAAAA,cAAA,MAAIoB,UAAWgmE,GAA4BxmE,EAAU6mE,4BACrDznE,IAAAA,cAAA,UAAKY,EAAU8mE,6BAUrBC,EAAuFrnE,IACzF,MAAM,UAAEM,GAAcN,EACtB,OACIN,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,MAAIoB,UAAW8I,GAAAA,CAAW,GAAG5J,EAAMc,4BACnCpB,IAAAA,cAAA,UAAKY,EAAUymE,iCACfrnE,IAAAA,cAAA,aAUC4nE,EAAiFtnE,IAC1F,MAAMunE,EAAe,GAAGvnE,EAAMc,iBAE9B,IAAI0mE,EAOJ,OALIA,EADAxnE,EAAMqO,SACQ3O,IAAAA,cAAC2nE,EAAwChmE,OAAA+B,OAAA,GAAKpD,IAE9CN,IAAAA,cAACmnE,EAAyCxlE,OAAA+B,OAAA,GAAKpD,IAI7DN,IAAAA,cAAA,SAAOoB,UAAWd,EAAMc,WACpBpB,IAAAA,cAAA,MAAIoB,UAAWymE,GAAeC,KC/BpCzkC,EAAuC,CACzC9+B,UAAW,CACPC,GAAI,CAAEC,EAAG,gBAAiBC,EAAG,EAAGC,EAAG,GACnCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCE,UAAU,EACV2c,iBAAiB,GAQfumD,EAAuFznE,IAAuC,IAAA0nE,EAAA/rC,EAAA+X,EAAAi0B,EAChI,MAAMh1D,EAAoD,QAA7C+0D,EAAG1nE,EAAME,KAAKyS,QAAQgqC,YAAYhZ,mBAAW,IAAA+jC,OAAA,EAA1CA,EAA4C7jC,eACtDhjB,GAAmBmc,EAAAA,EAAAA,qBACrBrqB,MAAAA,OAAO,EAAPA,EAAS2N,OACTtgB,EAAMuG,QAAQiB,cAAc1D,eAAeoP,YAClB,QAD6ByoB,EACtD37B,EAAMuG,QAAQC,QAAQiD,WAAG,IAAAkyB,GAAQ,QAARA,EAAzBA,EAA2B34B,cAAM,IAAA24B,OAAA,EAAjCA,EAAmCsB,kBAGjCquB,EAAqB,GAAGtrD,EAAMc,qCAEpC,OACIpB,IAAAA,cAAA,OAAKoB,UAAWwqD,GACZ5rD,IAAAA,cAACyhB,EAAAA,GAAK,CACFrd,eAAgB9D,EAAMuG,QAAQiB,cAAc1D,eAC5ChD,UAAW,GAAGwqD,mBACdxqC,QAASnO,MAAAA,OAAO,EAAPA,EAASpL,KAClBwZ,IAA6B,QAA1B2yB,EAAE/gC,MAAAA,OAAO,EAAPA,EAAS6B,uBAAe,IAAAk/B,EAAAA,EAAI,GACjC1yB,YAAaH,EACb9c,aAAc/D,EAAMuG,QAAQC,QAAQzC,aACpCC,cAAkC,QAArB2jE,EAAE3nE,EAAMgE,qBAAa,IAAA2jE,EAAAA,EAAI5kC,EACtCv+B,oBAAoB,YAMpC,IAAIojE,EAOJ,MA8CMttB,EAAkBA,CACpBC,EAKAtZ,EACAjhC,IACE49B,IACF2c,EAAiBtZ,EAASrD,EAAU59B,IAC7B,GAUL6nE,EAAkBA,CACpB5vB,EACA6vB,EACA9nE,IACC,KACDi4C,EAAa6vB,EAA0B9nE,IAQrC+nE,EACF/nE,IACoB,IAAAgoE,EACpB,MACI1nE,WAAW,yCAAE2nE,EAAwC,oCAAEC,IACvDloE,EACE2S,EAAoD,QAA7Cq1D,EAAGhoE,EAAME,KAAKyS,QAAQgqC,YAAYhZ,mBAAW,IAAAqkC,OAAA,EAA1CA,EAA4CnkC,gBACrDskC,EAAmB9uB,IAAkBnkC,EAAAA,EAAAA,WAAS,GACrD,IAAIhB,EAAa,GACjB,QAAgBzQ,IAAZkP,EACA,OAAO,KAEN8F,EAAAA,iBAAiBC,mBAAmB/F,EAAQpL,OAAU66C,EAAAA,iBAAiBC,kBAAkB1vC,EAAQyB,YAClGF,GAAaC,EAAAA,EAAAA,uBAAsBxB,EAAQpL,KAAOoL,EAAQyB,SAAUpU,EAAMuG,QAAQiB,gBAGtF,MAAM4gE,EAAqB1oE,IAAAA,aAAkB,KACrC+H,EAAAA,GAASQ,YACTC,OAAOiR,SAAS9V,KAAO6Q,KAE5B,CAACA,IAEElI,EAAStM,IAAAA,aAAkB,KAC7B,MAAM2oE,GAA6BF,EAC/BE,GACIT,GACAA,GAAuB,GAE3BvuB,EAAegvB,GACfT,EAAyBvuB,IAEzBuuB,OAAyBnkE,EACzB41C,EAAegvB,MAEpB,CAACF,EAAmB9uB,IAEvB,GAAI5gC,EAAAA,iBAAiBC,mBAAmBxE,GACpC,OAAO,KAGX,MAAMpT,EAAY,GAAGd,EAAMc,gCACrBw4C,EAA4B,GAAGx4C,uBAErC,OACIpB,IAAAA,cAAA,OAAKoB,UAAWA,GACZpB,IAAAA,cAACsF,EAAAA,OAAM,CAAClE,UAAW,GAAGA,YAAqBG,QAAS+K,IACnDm8D,GACGzoE,IAAAA,cAAA,OAAKoB,UAAWw4C,GACZ55C,IAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAW,GAAGw4C,kBACdr4C,QAASmnE,EAAkB,aACfH,GAEXC,GAELxoE,IAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAW,GAAGd,EAAMc,4BAA2B,aACnCd,EAAMM,UAAUgoE,yCAE3BtoE,EAAMM,UAAUgoE,4CAa5BC,EAAsFvoE,IAAuC,IAAAwoE,EACtI,MAAM71D,EAAoD,QAA7C61D,EAAGxoE,EAAME,KAAKyS,QAAQgqC,YAAYhZ,mBAAW,IAAA6kC,OAAA,EAA1CA,EAA4C3kC,eACtDC,EAAkB9jC,EAAME,KAAKyS,QAAQgqC,YAAY7Y,iBACjD,IAAE+L,EAAG,IAAErR,EAAG,SAAEzT,GAAa/qB,EACzB8mE,EAA4B,GAAG9mE,EAAMc,gCAC3C,QAAgB2C,IAAZkP,EAAuB,CAAC,IAADu3C,EAAAue,EACvB,IAAIv0D,EAAa,GAKjB,OAJKuE,EAAAA,iBAAiBC,mBAAmB/F,EAAQpL,OAAU66C,EAAAA,iBAAiBC,kBAAkB1vC,EAAQyB,YAClGF,GAAaC,EAAAA,EAAAA,uBAAsBxB,EAAQpL,KAAOoL,EAAQyB,SAAUpU,EAAMuG,QAAQiB,gBAIlF9H,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,UACIA,IAAAA,cAAC+nE,EAA2CpmE,OAAA+B,OAAA,GAAKpD,KAErDN,IAAAA,cAAA,UAAKiT,EAAQ2N,QACb5gB,IAAAA,cAAA,UACIA,IAAAA,cAAA,OAAKoB,UAAW,GAAGd,EAAMc,2BACrBpB,IAAAA,cAAA,KAAGoB,UAAW,GAAGd,EAAMc,0BAA2BuC,KAAM6Q,GACnDvB,EAAQpL,MAEb7H,IAAAA,cAAA,QAAMoB,UAAW,GAAGd,EAAMc,iCACH,QADkCopD,EACpDv3C,EAAQgoB,kBAAU,IAAAuvB,OAAA,EAAlBA,EAAoB36C,KAAIoiC,IAAS,IAAA4C,EAAA,OAA4B,QAA5BA,EAAI5C,EAAUxyB,sBAAc,IAAAo1B,OAAA,EAAxBA,EAA0B94B,SAC3D5E,QAAOszC,IAAmB1xC,EAAAA,iBAAiBC,mBAAmByxC,KAC9DzV,KAAK10C,EAAMM,UAAUooE,6CAItChpE,IAAAA,cAAA,MAAIoB,UAAWgmE,GApLH9mE,CAAAA,IACxB,MAAM,QAAEuG,EAAO,SAAE+a,EAAQ,eAAED,EAAc,UAAE/gB,GAAcN,EACnD+c,EAAQ/c,EAAM+c,MAEpB,OAAIA,EAEIrd,IAAAA,cAAC0iB,EAAAA,eAAc,CACX5gB,GAAI8f,EACJ1c,SAAUyc,EACVnhB,KAAM,CAAE6c,MAAAA,GACRjc,UAAU,yCACVkR,cAAe1R,EAAU0R,cACzBC,kBAAmB3R,EAAU2R,kBAC7BC,iBAAkB5R,EAAU4R,iBAC5B3L,QAASA,IAId,MAkKgDoiE,CAAmB3oE,IAC9DN,IAAAA,cAAA,UA3JaM,CAAAA,IACzB,MAAM+c,EAAQ/c,EAAM+c,MAEpB,OAAIA,EAEIrd,IAAAA,cAAA,OAAKoB,UAAU,oDACV2X,EAAAA,iBAAiBolD,cAAc79D,EAAM8jC,gBAAgB2V,gBAAkB18B,EAAM08B,eAInF,MAiJUpc,CAAoBr9B,IACzBN,IAAAA,cAAA,MAAIoB,UAAW,GAAGd,EAAMc,+BACpBpB,IAAAA,cAAC6+B,EAAAA,oBAAmB,CAChB/8B,GAAI,sCAAsCmR,EAAQyB,YAAkC,QAA1Bq0D,EAAI3kC,EAAgBvY,cAAM,IAAAk9C,EAAAA,EAAI,KACxF54B,IAAKA,EACLrR,IAAKA,EACLC,aAAc1T,EACd4N,uBAAwB34B,EAAMM,UAAUsoE,qCACxClqC,yBAA0B1+B,EAAMM,UAAUuoE,uCAC1ClqC,yBAA0B3+B,EAAMM,UAAUwoE,uCAC1CpkE,IAAKo/B,EAAgBvY,OACrBsT,WAAYlsB,EAAQkoB,WACpBlW,SAAU21B,EAAgBt6C,EAAMmjD,UAAU5I,iBAAkBzW,EAAgBvY,OAAQvrB,MAG5FN,IAAAA,cAAA,UACIA,IAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAW,GAAGd,EAAMc,4BAA2B,aACnCd,EAAMM,UAAUgoE,wCAC5BrnE,QAAS4mE,EAAgB7nE,EAAMmjD,UAAUlL,aAAcj4C,EAAME,KAAKyS,QAAS3S,OAO/F,OAAO,MAQE+oE,EAAqF/oE,IAAuC,IAAAgpE,EACrI,MAAMr2D,EAAoD,QAA7Cq2D,EAAGhpE,EAAME,KAAKyS,QAAQgqC,YAAYhZ,mBAAW,IAAAqlC,OAAA,EAA1CA,EAA4CnlC,eACtDC,EAAkB9jC,EAAME,KAAKyS,QAAQgqC,YAAY7Y,iBACjD,IAAE+L,EAAG,IAAErR,EAAG,SAAEzT,GAAa/qB,EACH,IAADipE,EAA3B,YAAgBxlE,IAAZkP,EAEIjT,IAAAA,cAAAA,IAAAA,SAAA,KACIA,IAAAA,cAAA,UACIA,IAAAA,cAAC+nE,EAA2CpmE,OAAA+B,OAAA,GAAKpD,KAErDN,IAAAA,cAAA,UACIA,IAAAA,cAAA,OAAKoB,UAAW,GAAGd,EAAMc,2BACrBpB,IAAAA,cAAA,QAAMoB,UAAW,GAAGd,EAAMc,2BAA4B6R,EAAQyB,UAC9D1U,IAAAA,cAAA,QAAMoB,UAAW,GAAGd,EAAMc,+BACtBpB,IAAAA,cAAC6+B,EAAAA,oBAAmB,CAChB/8B,GAAI,sCAAsCmR,EAAQyB,YAAkC,QAA1B60D,EAAInlC,EAAgBvY,cAAM,IAAA09C,EAAAA,EAAI,KACxFp5B,IAAKA,EACLrR,IAAKA,EACLC,aAAc1T,EACd4N,uBAAwB34B,EAAMM,UAAUsoE,qCACxClqC,yBAA0B1+B,EAAMM,UAAUuoE,uCAC1ClqC,yBAA0B3+B,EAAMM,UAAUwoE,uCAC1CpkE,IAAKo/B,EAAgBvY,OACrBsT,WAAYlsB,EAAQkoB,WACpBlW,SAAU21B,EAAgBt6C,EAAMmjD,UAAU5I,iBAAkBzW,EAAgBvY,OAAQvrB,QAKpGN,IAAAA,cAAA,UACIA,IAAAA,cAACqoE,EAAwC1mE,OAAA+B,OAAA,GAAKpD,MAKvD,MAQEkpE,EAA2ElpE,IACpF,MAAMunE,EAAe,GAAGvnE,EAAMc,iBAE9B,IAAI0mE,EAOJ,OALIA,EAHiG,QAAhFn5D,EAAAA,EAAAA,UAAS,CAAEqR,QAAS8qC,EAAAA,YAAY2e,SAAU5iE,QAASvG,EAAMuG,QAAQC,UAGpE9G,IAAAA,cAACqpE,EAAyC1nE,OAAA+B,OAAA,GAAKpD,IAE/CN,IAAAA,cAAC6oE,EAA0ClnE,OAAA+B,OAAA,GAAKpD,IAI9DN,IAAAA,cAAA,SAAOoB,UAAWd,EAAMc,WACpBpB,IAAAA,cAAA,MAAIoB,UAAWymE,GAAeC,KCnU7B4B,EAAqEppE,IAC9E,MAAOqO,EAAUg7D,GAAe3pE,IAAAA,SAAeM,EAAMspE,cAC/CC,EAAyBvpE,EAAME,KAAKqpE,uBACpCC,EAAsCxpE,EAAME,KAAKspE,oCAKjDC,EAAiBA,KACnBJ,EAAYrpE,EAAMspE,eAGlB7hE,EAAAA,GAASQ,WACTC,OAAOC,iBAAiB,SAAUshE,GAGtC,MAAM9/D,EAAkB,GAAG3J,EAAMc,oBAC3BymE,EAAe,GAAGvnE,EAAMc,iBAE9B,OACIpB,IAAAA,cAAA,SAAOoB,UAAWd,EAAMc,WACpBpB,IAAAA,cAAC4nE,EAAkC,CAC/B/gE,QAASvG,EAAMuG,QACf3B,SAAU5E,EAAM4E,SAChBpD,GAAImI,EACJ7I,UAAW6I,EACX0E,SAAUA,EACV/N,UAAWN,EAAMM,UACjBJ,KAAM,KAETqpE,EAAuBh6D,KAAI,CAACm6D,EAAmBj6D,KAAS,IAAAk6D,EAAAC,EAAAC,EACrD,IAAI9+C,EAAW2+C,EAAkB/sB,YAAY7Y,gBAAgBjU,SAC7D,MAAMld,EAAU+2D,EAAkB/sB,YAAYhZ,YAC9C,IAAIkM,EAAc,EACdrR,EAAc,GAClB,MAAMsrC,EAAWn3D,MAAAA,GAAuB,QAAhBg3D,EAAPh3D,EAASkxB,sBAAc,IAAA8lC,OAAA,EAAvBA,EAAyBx+C,SACtCq+C,IAAwCpnB,EAAAA,iBAAiBC,kBAAkBynB,KACvEA,EAASC,iBAAmBD,EAASC,gBAAkB,IACvDl6B,EAAMi6B,EAASC,iBAEfD,EAAS1+C,iBAAmB0+C,EAAS1+C,gBAAkB,IACvDoT,EAAMsrC,EAAS1+C,iBAEnBL,EAAWqlC,KAAK5xB,IAAIzT,EAAU8kB,IAElC,MAAM9yB,EAAiD,QAA5C6sD,EAAGF,EAAkB/sB,YAAYhZ,mBAAW,IAAAimC,OAAA,EAAzCA,EAA2ClkB,aACzD,OACIhmD,IAAAA,cAACwpE,EAA+B,CAC5B3iE,QAASvG,EAAMuG,QACf3B,SAAU5E,EAAM4E,SAChBpD,GAAI,GAAG+lE,KAAgB93D,IACvB/K,IAA8C,QAA3CmlE,EAAEH,EAAkB/sB,YAAYhZ,mBAAW,IAAAkmC,OAAA,EAAzCA,EAA2ChmC,eAAezvB,SAC/DtT,UAAWymE,EACXjnE,UAAWN,EAAMM,UACjB+N,SAAUA,EACV0O,MAAOA,EACPuE,SAAUthB,EAAMshB,SAChBD,eAAgBrhB,EAAMqhB,eACtBwuB,IAAKA,EACLrR,IAAKA,EACLzT,SAAUA,EACVtb,MAAOA,EACPzL,cAAehE,EAAMgE,cACrB8/B,gBAAiB4lC,EAAkB/sB,YAAY7Y,gBAC/Cqf,UAAWnjD,EAAMgqE,UACjB9pE,KAAM,CACFyS,QAAS+2D,imBClBrC,MAAMO,UAAuBvqE,EAAAA,cA4GzBC,YAAmBK,GAAgD,IAAAw9C,EAAA0sB,EAAAC,EAAAC,EAAAC,EAAAC,EAC/D9nE,MAAMxC,GAxGO,KAAAuqE,UAAoB,IAEpB,KAAAC,+BAAyC,EAEzC,KAAAC,eAAyB,SAEzB,KAAAC,oBAA8B,8BAU9B,KAAAC,sBAA6C,IAAIC,EAAAA,mBAAyB9qE,KAAK0qE,gCAExF,KAAAK,YAAwC,GAExC,KAAAC,uBAAsC,IAAIC,IAEjC,KAAAC,uBAAiC,yCAEjC,KAAAC,WAAqB,sBAK9B,KAAAC,sCAAgD,EAEhD,KAAAC,gCAA0C,EAE1C,KAAAC,uCAAiD,EAExC,KAAAC,yBAAuD,CACpEC,oBAAsBC,IACdA,GACAzrE,KAAKgrE,uBAAuB5yD,IAAIqzD,IASxCC,uBAAwBruD,MAAOsuD,EAA6BC,KAAmD,IAAAC,EAG3G,GAFA7rE,KAAK+qE,YAAYY,GAAuBC,EAEpC5rE,KAAKgrE,uBAAuBl0D,QAAqC,QAAjC+0D,EAAK7rE,KAAK6G,MAAMu2B,yBAAiB,IAAAyuC,OAAA,EAA5BA,EAA8BpqE,QACnE,OAAOzB,KAAK6qE,sBACPiB,SAAQzuD,SACErd,KAAK+rE,sBAEf7pE,OAAOC,IAEJ,GAAIA,IAAU6pE,EAAAA,wBAAwBC,gCAClC,MAAM,IAAIh7C,MAAM9uB,OAYpC+pE,gBAAiBA,CAACzzD,EAAuBjY,IAC9BR,KAAK2zC,iBAAiBl7B,EAAejY,GAOhD2rE,wBAA0BC,IACtBpsE,KAAKuP,SAAS,CAAE68D,oBAAAA,MAIP,KAAAC,4BAA2D,CAKxEl0B,aAAe3yB,IACXxlB,KAAKssE,wBAAwB9mD,EAAKq3B,cAStCpC,iBAAkBA,CAAC8xB,EAAuCthD,IAC/CjrB,KAAKwsE,mBAAmBD,EAAmBthD,IA2RzC,KAAAwhD,mBAAqB,KAClC,MAAM,QAAEhmE,EAAO,KAAErG,EAAI,UAAEgC,EAAS,UAAE5B,GAAcR,KAAKE,OAC/C,mBAAEigE,GAAuB//D,EACbqG,EAAQC,QAAQ8B,KAAK2rB,iBAAmB1tB,EAAQC,QAAQ8B,KAAKm9B,OAC9Dw6B,GAAsBA,EAAmB7/D,OACtDosE,EAAAA,wBAAAA,YAAoC,CAAE3uD,cAAetX,EAAQiB,eAAiBy4D,EAAmB7/D,OAAOslC,aACnG5nB,MAAK,KACF5V,OAAOiR,SAASksB,YAEnBrjC,OAAOC,IACJC,EAAU8nB,QAAQ,qDAClB9nB,EAAUD,MAAMA,GAChBnC,KAAK2sE,mBACDnsE,EAAUosE,0CACV5sE,KAAK2qE,eACL3qE,KAAK4qE,qBACL,MAIZxoE,EAAU8nB,QAAQ,iFA0FT,KAAA2iD,mBAAsBtjC,MAE9BA,GAASA,EAAM9nC,OADG,KAEnBzB,KAAKuP,SAAS,CAAE0b,SAAU,EAAGmS,kBAAmB,GAAI0vC,qBAAiBnpE,IACrE3D,KAAK2sE,mBAAmB,GAAI,GAAI,IAAI,IAEpC3sE,KAAK+sE,sBAEL/sE,KAAK+sE,qBAAqBC,SAG9B,MAAM,UAAE5qE,EAAS,QAAEqE,GAAYzG,KAAKE,MAE/ByY,EAAAA,iBAAiBolD,cAAcx0B,GAgChCvpC,KAAKuP,SAAS,CAAEu9D,qBAAiBnpE,EAAWspE,8BAA8B,KA/B1EjtE,KAAK+sE,qBAAuB57B,GAAAA,EAAS,MACjC+7B,EAAAA,EAAAA,eACI,IAAIC,EAAAA,mBACA1mE,EAAQiB,cAAc1D,eAAeoP,YACrCm2B,EACA9iC,EAAQiB,cAAc1D,eAAeoP,YAAY+3B,WAErDnrC,KAAKE,MAAMuG,QAAQiB,eAElBsW,MAAKovD,IACFptE,KAAKuP,SAAS,CACVu9D,gBAAiBM,MAAAA,OAAO,EAAPA,EAASzyC,QAC1ByC,kBAAmBgwC,MAAAA,OAAO,EAAPA,EAASC,qBAC5BJ,8BAA8B,IAE9BG,MAAAA,GAAAA,EAASzyC,SACT36B,KAAKstE,yBAAyBF,EAAQzyC,YAG7Cz4B,OAAOC,IACJC,EAAU4uB,UAAU7uB,GACpBC,EAAUE,MAAM,mCAEzBtC,KAAKyqE,WAERj7D,YAAW,KAEPxP,KAAK+sE,yBA7BM,GA+Bf/sE,KAAKuP,SAAS,CAAE09D,8BAA8B,MAUrC,KAAAM,sBAAyBxnE,IAAuB,IAAAynE,EAC7D,IAAIh9B,EAAextB,OAAO2pB,SAAS5mC,EAAO,IAC1C,MAAMkrC,EAAejxC,KAAKytE,eAAe3gC,mBAAmBoE,kBAAoBlxC,KAAKytE,eAAe3gC,QAEpG,IAAI4gC,EAAkB,EAClBC,GAA+B,EACnC,GAAI3tE,KAAKorE,uCAAyC9oB,EAAAA,iBAAiBC,kBAA4C,QAA3BirB,EAACxtE,KAAK6G,MAAMimE,uBAAe,IAAAU,OAAA,EAA1BA,EAA4BniD,UAAW,CAAC,IAADuiD,EACxH,MAAM5D,EAAWhqE,KAAK6G,MAAMimE,gBAAiBzhD,SAC7CqiD,EAA2C,QAA5BE,EAAG5D,MAAAA,OAAQ,EAARA,EAAUC,uBAAe,IAAA2D,EAAAA,EAAI,EAC/C,MAAMC,EAAkBvd,KAAK5xB,IAAI8R,EAAck9B,GAC3CG,IAAoBr9B,IACpBm9B,GAAsB,GAE1Bn9B,EAAeq9B,EAGnB7tE,KAAKuP,SAAS,CAAE0b,SAAUulB,IAAgB,KACtCW,GAAAA,EAAS,KACDw8B,IAAwB3qD,OAAOgtB,MAAMhwC,KAAK6G,MAAMokB,WAAagmB,IAC7DA,EAAap1B,aAAa,gBAAiB20B,EAAav3B,YACxDg4B,EAAalrC,MAAQyqC,EAAav3B,cAjBR,IAclCk4B,OAeS,KAAAwC,iBAAmB,CAACl7B,EAAuBjY,KAA0D,IAAAstE,EAClH,MAAM/uC,EAAuC,QAA7B+uC,EAAG9tE,KAAK6G,MAAMimE,uBAAe,IAAAgB,OAAA,EAA1BA,EAA4B/yC,WAE/C,OAAQtiB,GACJ,KAAK2+C,EAAAA,qBAAqBC,MACtB,OAAO72D,EAAU63B,0BACrB,KAAK++B,EAAAA,qBAAqB2W,cACtB,OAAOvtE,EAAU+3B,kCACrB,KAAK6+B,EAAAA,qBAAqBG,KACtB,OAAO/2D,EAAU23B,yBACrB,KAAKi/B,EAAAA,qBAAqBK,MACtB,OAAO14B,EAAav+B,EAAUwtE,2BAA6BxtE,EAAUi4B,0BACzE,QACI,MAAO,KAOF,KAAAszC,kBAAoB1uD,UACjC,MACI5W,SAAS,cACLiB,EACAhB,SACI0M,aAAa,UAAE+3B,MAGvBnrC,KAAKE,OACH,kBAAEk9B,EAAiB,gBAAE0vC,GAAoB9sE,KAAK6G,MAC9ConE,EAAuBxtE,EAAAA,gBAAgBC,YAAY08B,GACzD,IAAK0vC,IAAoBmB,EACrB,OAGJ,MAAMC,EAAkBzjE,EAAA,GAAkCzK,KAAK+qE,aAI/D,GAHA/qE,KAAKuP,SAAS,CAAE68D,qBAAqB,IAGjCpsE,KAAK6G,MAAMsnE,2BAA2BC,WAAY,CAElD,MAAMC,EAAoB5jE,EAAA,GAAQzK,KAAK6G,MAAMsnE,4BAC7CE,EAAqBD,gBAAazqE,EAClC3D,KAAKuP,SAAS,CAAE4+D,2BAA4BE,IAIhD,IAAK,MAAMC,KAAgB/sE,OAAOC,KAAK0sE,GACnC,GAAIluE,KAAK6G,MAAMsnE,2BAA2BI,gBAAgBD,GAAe,CAErE,MAAME,EAAU/jE,EAAA,GAAQzK,KAAK6G,MAAMsnE,4BACnCK,EAAWD,gBAAgBD,QAAgB3qE,EAE3C3D,KAAKuP,SAAS,CAAE4+D,2BAA4BK,IAMpD,MAAM77B,EAAmBvV,MAAAA,OAAiB,EAAjBA,EACnB3tB,KAAIoiC,IAAY,IAAA48B,EACd,MAAO,CACHrvD,mBAAoByyB,EAAUzyB,mBAC9BC,eAC2F,QAD7EovD,EACVzuE,KAAKkyC,sBAAsBL,EAAWq8B,EAAmBr8B,EAAUzyB,4BAAoB,IAAAqvD,EAAAA,EAAI58B,EAAUxyB,eACzG5D,oBAAqBo2B,EAAUp2B,wBAGtC1E,QAAO86B,GACGA,EAAUxyB,iBAMnBqqB,EAAkB,IAAI1nC,SAA8Bqb,MAAAA,IACtD,MAAMqxD,QAAmBnjC,EAAAA,EAAAA,oBACrB,IAAIF,EAAAA,qBACAyhC,EAAgBjtD,gBAAkBitD,EAAgBjtD,gBAAkBitD,EAAgBx4D,SACpF62B,EACAwH,OACAhvC,EACA3D,KAAKE,MAAMuG,QAAQC,SAEvBgB,GAEAgnE,SACM3/B,EAAAA,EAAAA,iCACF,IAAIC,EAAAA,qCACA0/B,EAAW7uD,gBAAkB6uD,EAAW7uD,gBAAkB6uD,EAAWp6D,SACrE62B,EACAwH,EACA3yC,KAAKE,MAAMuG,QAAQC,SAEvBgB,GAIRzF,EAAQysE,MAGN97B,QAAuBlJ,EAC7B1pC,KAAKuP,SAAS,CAAEu9D,gBAAoC,OAAnBl6B,EAA0BA,OAAiBjvC,KAS/D,KAAAuuC,sBAAwB,CACrCC,EACAC,KAEA,GAAIA,GAAcD,EAAqBE,gBACnC,OAAOF,EAAqBE,gBAAgB1+B,MAAKk+B,GAAaA,EAAUv9B,YAAc89B,KAa7E,KAAAu8B,yBAA2B,CACxC/0D,EACApZ,EACAu+B,KAEA,MAAM6vC,EAAqBpuE,EAAUquE,qDAErC,OAAQj1D,GACJ,KAAKw9C,EAAAA,qBAAqBC,MACtB,OAAO72D,EAAUsuE,oDACrB,KAAK1X,EAAAA,qBAAqB2W,cACtB,OAAOvtE,EAAUuuE,4DACrB,KAAK3X,EAAAA,qBAAqBG,KACtB,OAAO/2D,EAAUwuE,mDACrB,KAAK5X,EAAAA,qBAAqBK,MACtB,OAAO14B,EAAa6vC,EAAqBpuE,EAAUyuE,oDACvD,QACI,MAAO,KAUF,KAAAz7C,cAAgB,CAACs5C,EAAgC7hD,KAA6B,IAAAikD,EAE3F,MAAMt9B,EAA8C,QAA7Bs9B,EAAGpC,EAAgBjyC,kBAAU,IAAAq0C,OAAA,EAA1BA,EAA4Bn4D,QAClD86B,KAAeA,EAAUxyB,gBAAkBwyB,EAAUxyB,eAAe1D,SAGxE,GAAIlb,EAAAA,gBAAgBC,YAAYkxC,GAAoB,CAChD,MAAM/O,EAAc7iC,KAAKmvE,oBAAoBv9B,GAAmB,GAEhE,GAAI5xC,KAAK6G,MAAMsnE,2BAA2BI,gBAAiB,CAEvD,MAAMC,EAAU/jE,EAAA,GAAQzK,KAAK6G,MAAMsnE,4BAInC,OAHAK,EAAWD,gBAAkB1rC,EAE7B7iC,KAAKuP,SAAS,CAAE4+D,2BAA4BK,KACrC,GAIf,GAAIvjD,GAdoB,EAcS,CAC7B,MAAMzqB,EAAYR,KAAKE,MAAMM,UAE7B,OADAR,KAAK2sE,mBAAmBnsE,EAAU4uE,oCAAqCpvE,KAAK2qE,eAAgB3qE,KAAK4qE,qBAAqB,IAC/G,EAEX,OAAO,GA8BM,KAAA4B,mBAAqB,CAACrrC,EAA6BlW,KAChE,MAAM,QAAExkB,EAAO,KAAErG,EAAI,UAAEgC,GAAcpC,KAAKE,OACpC,mBAAEigE,GAAuB//D,EAC/B,GAAI+/D,MAAAA,GAAAA,EAAoB7/D,OAAQ,CAC5B,MAAM+uE,EAA8BlP,EAAmB7/D,OAAO8/D,wBAC9D,GAAI3/D,EAAAA,gBAAgBC,YAAY2uE,GAA8B,CAC1D,MAAMjwB,EAAiBiwB,EAA4BhwB,WAC9CztB,GAAkCA,EAAMoS,gBAAgBvY,SAAW0V,IAElEme,EAAkB70C,EAAA,GAAQ4kE,EAA4BjwB,IAC5D,GAAIiwB,EAA4BjwB,GAAgBpb,gBAAgBjU,WAAa9E,EACzE,OAAO,EAEX,MAAMqkD,EAAmBhwB,EAAmBtb,gBAAgBjU,SAC5DuvB,EAAmBtb,gBAAgBjU,SAAW9E,EAC9C,MAAM,YAAE4Y,GAAyByb,EAAT95B,GAAIg6B,EAAAA,EAAAA,GAAKF,EAAkBG,GAEnDitB,EAAAA,wBAAAA,4BACI,CAAE3uD,cAAetX,EAAQiB,eACzBy4D,EAAmB7/D,OAAOslC,YAAYpb,GACtC,CAAChF,EAAKwe,kBAELhmB,MAAK2hC,IACF,GAAIl/C,EAAAA,gBAAgBC,YAAYi/C,GAAO,CACnC,MAAMC,EAAUD,EAAKhsC,MAAKie,GAASA,EAAMnG,SAAW0V,IACpDkuC,EAA4BjwB,GAAgBpb,gBAAkB4b,EAC9D,MAAMC,EAAe,IAAIwvB,GACzBxvB,EAAaT,GAAkB,CAAEvb,YAAAA,EAAaG,gBAAiB4b,GAC/D,MAAM2vB,EAAkB9kE,EAAAA,EAAA,GAAQ01D,EAAmB7/D,QAAM,IAAEy/C,iBAAkBF,IAK7E,OAJAp5C,EAAQiB,cAAcs4C,OAClB,IAAIwvB,EAAAA,uBAAuB/oE,EAAQiB,cAAc1D,gBACjDurE,IAEG,EAGX,OAAO,KAEVrtE,OAAOC,IACJC,EAAU8nB,QAAQ,yDAClB9nB,EAAUD,MAAMA,EAAME,SAItB,OAFAi9C,EAAmBtb,gBAAgBjU,SAAWu/C,EAC9CtvE,KAAK2sE,mBAFe,mCAEiB3sE,KAAK2qE,eAAgB3qE,KAAK4qE,qBAAqB,IAC7E,KAGnB,OAAO,EAGX,OAAO,GAOM,KAAA0B,wBAA2B9mD,IACxC,MAAM,QAAE/e,EAAO,KAAErG,EAAI,UAAEgC,GAAcpC,KAAKE,OACpC,mBAAEigE,GAAuB//D,EAE/B,GAAI+/D,MAAAA,GAAAA,EAAoB7/D,OAAQ,CACVmG,EAAQC,QAAQ8B,KAAK2rB,iBAAmB1tB,EAAQC,QAAQ8B,KAAKm9B,MAE3E+mC,EAAAA,wBAAAA,4BACI,CAAE3uD,cAAetX,EAAQiB,eACzB8d,EAAKwe,gBAAgB8N,cACrB,CAACtsB,EAAKwe,kBAELhmB,MAAK,KACF5V,OAAOiR,SAASksB,QAAO,MAE1BrjC,OAAOC,IACJC,EAAU8nB,QAAQ,gEAClB9nB,EAAUD,MAAMA,EAAME,YAG9BD,EAAU8nB,QAAQ,4FAKb,KAAAkb,yCAA2C,KACxD,IAAI1C,GAAsC,EACP,IAAD1O,EAA9Bh0B,KAAKE,MAAME,KAAKk2B,eAChBoM,GACuC,QAAnC1O,EAAAh0B,KAAKE,MAAME,KAAKk2B,aAAah2B,cAAM,IAAA0zB,GAElC,QAFkCA,EAAnCA,EAAqCrgB,MACjC4iB,GAA4B,2DAAjBA,EAAQ9uB,cACtB,IAAAusB,OAAA,EAFDA,EAEGwC,aAAa,GAExB,OAAOkM,GAMM,KAAA+sC,0BAA4BpyD,UACzC,MACI5W,SAAS,cAAEiB,GAAe,UAC1BlH,EAAS,UACT4B,GACApC,KAAKE,OACH,wCACFwvE,EAAuC,wCACvCC,EAAuC,wCACvCC,GACApvE,GACE,gBAAEssE,EAAe,SAAE7hD,EAAQ,cAAEwa,GAAkBzlC,KAAK6G,MAEpDwzB,GAAY+T,EAAAA,EAAAA,IAAapuC,KAAKE,MAAMuG,QAAQC,SAIlD,GAFA1G,KAAK2sE,mBAAmB,GAAI,GAAI,IAAI,QAEZhpE,IAApBmpE,GAAiC9sE,KAAKwzB,cAAcs5C,EAAiB7hD,GAAW,CAAC,IAAD4kD,EAKhF,GAJIl3D,EAAAA,iBAAiBC,mBAAmB6sB,UAC9BzlC,KAAK8vE,qBAGXn3D,EAAAA,iBAAiBC,mBAAmB5Y,KAAK6G,MAAM4+B,eAE/C,YADAzlC,KAAK2sE,mBAAmBgD,EAAyC3vE,KAAK2qE,eAAgB3qE,KAAK4qE,qBAAqB,GAGpH,MAAMr/C,EAAQ,IAAIwkD,EAAAA,0BACd/vE,KAAK6G,MAAM4+B,cACXqnC,EAAgBx4D,SAChB2W,EACoC,QAD5B4kD,EACR/C,EAAgBrqD,4BAAoB,IAAAotD,EAAAA,EAAI,KACxC7vE,KAAKolC,2CACL/K,SAGE21C,EAAAA,EAAAA,4BAA2BzkD,EAAO7jB,GACnCsW,MAAK1d,IACEA,EAAOwxC,gBACP9xC,KAAK2sE,mBAAmB+C,EAAyC,UAAW,gBAAgB,GAC5FtnE,OAAOiR,SAASksB,SAChBvlC,KAAKuP,SAAS,QAGrBrN,OAAOC,IACJC,EAAUE,MAAM,iFACG,wDAAfH,EAAM6a,KACNhd,KAAK2sE,mBACDiD,EACA5vE,KAAK2qE,eACL3qE,KAAK4qE,qBACL,GAGJ5qE,KAAK2sE,mBACDgD,EACA3vE,KAAK2qE,eACL3qE,KAAK4qE,qBACL,QAWhB,KAAAkF,mBAAqBzyD,UACzB,MACI5W,SAAS,cAAEiB,GAAe,UAC1BtF,EAAS,UACT5B,GACAR,KAAKE,OACH,cAAEulC,GAAkBzlC,KAAK6G,OACzB,wCAAE8oE,GAA4CnvE,EAEpD,GAAImY,EAAAA,iBAAiBC,mBAAmB6sB,GAAgB,CACpD,MAAMla,EAAQ,IAAI0kD,EAAAA,uBAAuB,GAAIC,EAAAA,gBAAgBC,YAgB7D,aAdMC,EAAAA,EAAAA,mBAAkB7kD,EAAO7jB,GAC1BsW,MAAK1d,GACGqY,EAAAA,iBAAiBC,mBAAmBtY,EAAOkqB,IAIzC,IAHHxqB,KAAKuP,SAAS,CAAEk2B,cAAenlC,EAAOkqB,KAC/BlqB,EAAOkqB,MAIrBtoB,OAAOC,IACJC,EAAUE,MAAM,0EAChBF,EAAUD,MAAMA,EAAME,SACtBrC,KAAK2sE,mBAAmBgD,EAAyC3vE,KAAK2qE,eAAgB3qE,KAAK4qE,qBAAqB,GACzG,MAER,GAGX,OAAOnlC,GAUM,KAAAknC,mBAAqB,CAAC9F,EAAqB9jC,EAAyBiD,EAAsBh6B,KACvGhM,KAAKuP,SAAS,CAEVq3D,aAAc,CACVC,YAAAA,EACA9jC,gBAAAA,EACAiD,aAAAA,EACAh6B,OAAAA,MA53BRhM,KAAKqwE,kBAAoBzwE,EAAAA,YACzBI,KAAKytE,eAAiB7tE,EAAAA,YAEtBI,KAAKswE,mBAAoBppE,EAAAA,EAAAA,oBACrBlH,KAAKE,MAAMuG,QAAQC,QAAQS,kBAC3BnH,KAAKE,MAAMkH,aACXpH,KAAKE,MAAMkC,WAEfpC,KAAK6G,MAAQ,CACTomE,8BAA8B,EAC9Bl9B,IAAK,EACLrR,IAAK,GACLzT,SAAU,EACV6hD,qBAAiBnpE,EACjBy5B,uBAAmBz5B,EACnBwqE,2BAA4B,CACxBI,gBAAiB,IAErBhgE,SAAUvO,KAAKuO,SACfwc,SAAU,GACVqhD,qBAAqB,EACrB3mC,cAAe,IAGnBzlC,KAAKuwE,yBAA2B,oCAChCvwE,KAAKwwE,kCAAoC,yCACzCxwE,KAAKywE,8BAAgC,wCAErCzwE,KAAKorE,qCAEc,QAFsB1tB,EACF,QADE0sB,EACrCpqE,KAAKE,MAAME,KAAKk2B,aAAah2B,cAAM,IAAA8pE,GAAyF,QAAzFA,EAAnCA,EAAqCz2D,MAAK2iB,GCnLa,oEDmLGA,EAAa7uB,cAAqD,IAAA2iE,OAAA,EAA5HA,EACM5zC,iBAAS,IAAAknB,GAAAA,EAEnB19C,KAAKqrE,+BAEc,QAFgBhB,EACI,QADJC,EAC/BtqE,KAAKE,MAAME,KAAKk2B,aAAah2B,cAAM,IAAAgqE,GAA6F,QAA7FA,EAAnCA,EAAqC32D,MAAK2iB,GCpLlD,wEDoLkEA,EAAa7uB,cAAyD,IAAA6iE,OAAA,EAAhIA,EACM9zC,iBAAS,IAAA6zC,GAAAA,EAEnB,MAAMpwC,EAAoBj6B,KAAKE,MAAME,KAAK65B,kBAC1Cj6B,KAAKsrE,sCAAsG,QAAjEf,EAAGtwC,MAAAA,GAAyB,QAARuwC,EAAjBvwC,EAAmB35B,cAAM,IAAAkqE,OAAA,EAAzBA,EAA2BkG,2CAAmC,IAAAnG,GAAAA,EAGrG,eAEN,MAAgB,QADHh8D,EAAAA,EAAAA,UAAS,CAAEqR,QAAS8qC,EAAAA,YAAY2e,SAAU5iE,QAASzG,KAAKE,MAAMuG,QAAQC,UAIhFvG,SAAM,IAAAwwE,EAAAC,EACT,MAAM,KAAExwE,GAASJ,KAAKE,MACtB,IAAKE,EAAKy5B,oBAAoBv5B,OAC1B,OAAO,KAEX,MAAM6/D,EAAqB//D,EAAK+/D,wBAEGx8D,KAA/Bw8D,MAAAA,OAAkB,EAAlBA,EAAoB7/D,SACpBN,KAAKuP,SAAS,CACVwb,SAAUo1C,EAAmB7/D,OAAO8/D,wBACpC36B,cAAe06B,EAAmB7/D,OAAOslC,YAAYpb,KAG7D,MAAM,UAAExpB,EAAY,GAAE,YAAE4tB,GAAgB5uB,KAAKE,MAAMgD,OAC7C42B,EAAe95B,KAAKE,MAAME,KAAKy5B,oBAAoBv5B,QACnD,4BACFuwE,EAA2B,gCAC3BC,EAA+B,wBAC/BC,EAAuB,wCACvBC,EAAuC,gCACvCC,EAA+B,wCAC/BC,EAAuC,gDACvCC,EAA+C,0CAC/CC,EAAyC,uCACzCC,EAAsC,wCACtCC,EAAuC,yCACvCC,EAAwC,gCACxCC,GACAxxE,KAAKE,MAAMM,UAETixE,EAAiE,CACnEC,4BAA6BN,EAC7B/4C,0BAA2B64C,EAC3B34C,kCAAmC44C,EACnCh5C,yBAA0Bk5C,EAC1B54C,0BAA2B64C,EAC3BtD,2BAA4BuD,IAG1B,6BAAEtE,EAA4B,2BAAEkB,EAA0B,gBAAErB,EAAe,kBAAE1vC,GAAsBp9B,KAAK6G,MAExGgD,EAAkB,GAAG7J,KAAKmrE,qBAE1BwG,EACF/xE,EAAAA,cAAA,OAAKoB,UAAW6I,GACZjK,EAAAA,cAACmnC,EAAAA,QAAO,CAAC/lC,UAAW,GAAG6I,YAA2Bu6B,KAAMotC,KAI1DhnE,EAASC,EAAAA,EAAA,GACPzK,KAAKE,OAAmD,IAE5D0xE,oBAAqB,CAAE5wE,UAAW8I,GAAAA,CAAW,sBAAuB9I,GAAYyK,YAAazL,KAAKE,OAClGw/D,aAAc,CAAE1+D,UAAW,gCAC3B6wE,cAAe/3C,MAAAA,OAAY,EAAZA,EAAcC,MAC7B43C,OAAAA,EACAG,QAAS,CACL9wE,UAAW,GAAGhB,KAAKmrE,wBACnBz/D,IAAK,OAETqmE,OAAQ,CACJrmE,IAAKo4D,EACL9iE,UAAW,GAAGhB,KAAKmrE,qBACnBhH,cAAe,CAAEn4D,OAAQhM,KAAK6G,MAAMomE,8BACpC7H,kBAAmByL,EACnBxL,sBAAuByL,EACvB9sE,eAAgBhE,KAAKE,MAAMuG,QAAQC,QACnC7D,iBAAkB7C,KAAKswE,mBAE3B0B,aAAchyE,KAAKiyE,sBACnBC,mBAAoB,CAChBlxE,UAAW,GAAGhB,KAAKuwE,4BAA4BtD,EAA+B,UAAY,aAE9FkF,iCAAkC,CAC9BnxE,UAAWhB,KAAKwwE,mCAEpB4B,6BAA8B,CAC1BpxE,UAAWhB,KAAKywE,+BAEpB4B,KAAM7M,EAA4B,CAC9BC,iBAAkBzlE,KAAKqwE,kBACvB3K,kBAAmB1lE,KAAKytE,eACxB3H,qBAAsBgH,EACtB7G,mBAAoB8K,EACpB/K,iBAAkBiL,EAClBlL,kBAAmBiL,EACnBpL,SAAU,GACVC,YAA2B,QAAhB8K,EAAE3wE,KAAK6G,MAAMkpC,WAAG,IAAA4gC,EAAAA,EAAI,EAC/B/hD,YAA2B,QAAhBgiD,EAAE5wE,KAAK6G,MAAM63B,WAAG,IAAAkyC,EAAAA,EAAIhiD,EAC/B20C,gBAAiBvjE,KAAKmrE,WACtBxF,oBAAqB3lE,KAAK6G,MAC1Bs/D,kBAAmBnmE,KAAK6sE,mBACxB3G,qBAAsBlmE,KAAKutE,sBAC3BnH,0BAA2BpmE,KAAKyvE,4BAEpC6C,UACIxF,GAAmB1vC,GACbm1C,EAAAA,EAAAA,qBACIvyE,KAAKkrE,uBACLlrE,KAAKE,MAAMuG,QACXzG,KAAKE,MAAMkH,aACXpH,KAAKE,MAAMkC,UACXgvE,EACAK,EACAzxE,KAAKurE,yBACLuB,EACA1vC,EACA+wC,QAEJxqE,EACVspE,6BAA8BjtE,KAAK6G,MAAMomE,6BACzCzD,aAAcxpE,KAAK6G,MAAM0H,SACzBikE,UAAW/xE,EAAAA,gBAAgBC,YAAYV,KAAK6G,MAAMkkB,UAAY/qB,KAAKyyE,4BAAyB9uE,EAC5F++C,aAAc1iD,KAAK0yE,6BAA6BvS,MAAAA,OAAkB,EAAlBA,EAAoB7/D,UAGxE,OAAON,KAAKE,MAAMmN,WAAW7C,GAGzBkoE,6BAA6BvS,GACjC,MAAM,SAAEr7D,EAAQ,QAAE2B,EAAO,UAAEjG,GAAcR,KAAKE,OACxC,+BACFyyE,EAA8B,oCAC9BrS,EAAmC,yCACnCE,EAAwC,4DACxC6B,EAA2D,qEAC3DX,EAAoE,2BACpEH,EAA0B,8BAC1BE,EAA6B,6BAC7BG,EAA4B,sCAC5BE,EAAqC,mCACrCE,EAAkC,gCAClCE,EAA+B,kBAC/BC,EAAiB,kBACjBhwD,EAAiB,iBACjBC,EAAgB,cAChBF,GACA1R,EACJ,GAAIC,EAAAA,gBAAgBC,YAAYy/D,MAAAA,OAAkB,EAAlBA,EAAoBC,yBAA0B,CAuC1E,MPlU8BlgE,CAAAA,IACtC,MAAM,gBAAEqjE,EAAe,oBAAEoC,EAAmB,UAAEnlE,GAAcN,GACtD,+BAAEyyE,GAAmCnyE,EAErCoyE,EAAkBjN,EAAoBkN,gBACxCjzE,EAAAA,cAACkjC,EAAAA,MAAK,CAAC7hC,MAAO0kE,EAAoBkN,gBAAgB9vC,gBAAiB/2B,OAAQ25D,EAAoBkN,gBAAgB7mE,QAC3GpM,EAAAA,cAAA,QAAMoB,UAAW2kE,EAAoBkN,gBAAgB7sC,eACrDpmC,EAAAA,cAAA,YAAO+lE,EAAoBkN,gBAAgBhM,mBAG/CljE,EAGJ,MAAO,CACHmvE,oBAAqBxP,EAAiCpjE,GACtD0jE,kBACIhkE,EAAAA,cAACsF,EAAAA,OAAM,CAAClE,UAAW,GAAGuiE,mCAAkDpiE,QAASwiE,EAAoBzjE,IAChGyyE,GAGT9vC,YAAa+vC,IO8SFG,CAtCoD,CACvD3yE,KAAM,CAAE+/D,mBAAAA,GACRoD,gBAAiBvjE,KAAKmrE,WACtBzpE,GAAI,mBACJoD,SAAAA,EACA2B,QAAAA,EACAy6B,SAAU,CACN0iC,kBAAmB5jE,KAAKysE,mBACxB/I,eAAiBrhE,GACbrC,KAAKuP,SAAS,CACVsjE,gBAAiB,CACbhM,YAAaxkE,EACb0gC,gBAAiB/iC,KAAK2qE,eACtB3kC,aAAchmC,KAAK4qE,oBACnB5+D,QAAQ,MAIxB25D,oBAAqB3lE,KAAK6G,MAC1BrG,UAAW,CACPmyE,+BAAAA,EACArS,oCAAAA,EACAE,yCAAAA,EACA6B,4DAAAA,EACAX,qEAAAA,EACAH,2BAAAA,EACAE,8BAAAA,EACAG,6BAAAA,EACAE,sCAAAA,EACAE,mCAAAA,EACAE,gCAAAA,EACAC,kBAAAA,EACAhwD,kBAAAA,EACAC,iBAAAA,EACAF,cAAAA,KAMZ,OAAO,KAOH+/D,sBAEJ,IAAKjyE,KAAKE,MAAMuG,QAAQkD,IAAIzG,OAAO8vE,sBAC/B,OAAO,KAGX,IAAKvyE,EAAAA,gBAAgBC,YAAYV,KAAKE,MAAMK,MAAM0yE,mBAC9C,OAAO,KAGX,MAAMC,EAAiB,GAAGlzE,KAAKmrE,4BAC/B,OACIvrE,EAAAA,cAAA,OAAKoB,UAAWkyE,GACXtzE,EAAAA,aAAmBI,KAAKE,MAAMK,MAAM0yE,kBAAkB,GAA0B,CAC7E71C,kBAAmBp9B,KAAK6G,MAAMu2B,qBAUtCq1C,uBACJ,MAAMS,EAAiB,GAAGlzE,KAAKmrE,4BAC/B,OAAOvrE,EAAAA,cAAA,OAAKoB,UAAWkyE,GAAiBlzE,KAAKmzE,uBAAuBnzE,KAAKmrE,aAOrEiI,8BACJ,MAEMC,EAFqCrzE,KAAK6G,MAAMkkB,SAEUtb,KAAKoD,GAC1D,IAAIi0D,EAAsBj0D,KAGrC,OAAOpS,EAAAA,gBAAgB8Y,YAAY85D,GAmC/BF,uBAAuBnyE,GAC3B,MAAM0qD,EAAiB,GAAG1qD,gBAE1B,OACIpB,EAAAA,cAAC0pE,EAA4B,CACzB5nE,GAAIgqD,EACJlqC,SAAUxhB,KAAKE,MAAMwB,GACrB6f,eAAgBvhB,KAAKE,MAAM4E,SAC3BA,SAAU9E,KAAKE,MAAM4E,SACrBF,IAAK8mD,EACL1qD,UAAW0qD,EACXtrD,KAAM,CACFqpE,uBAAwBzpE,KAAKozE,8BAC7B1J,oCAAqC1pE,KAAKorE,sCAE9C3kE,QAASzG,KAAKE,MAAMuG,QACpBjG,UAAWR,KAAKE,MAAMM,UACtBgpE,aAAcxpE,KAAK6G,MAAM0H,SACzB27D,UAAWlqE,KAAKqsE,8BAKpBiB,yBAAyBz6D,GAC7B,MAAMk9B,EAAc/vC,KAAKszE,+BAA+BtzE,KAAKorE,qCAAsCv4D,GAC7F6rB,EAAc1+B,KAAKuzE,+BACrBvzE,KAAKqrE,gCAAkCrrE,KAAKorE,qCAC5Cv4D,GAEJ,IAAIoY,EAAmBjrB,KAAKwzE,aACxBxzE,KAAKorE,qCACLprE,KAAKsrE,sCACLz4D,GAEJoY,EAAWqlC,KAAK5xB,IAAIzT,EAAU8kB,GAE9B/vC,KAAKuP,SAAS,CACVwgC,IAAAA,EACArR,IAAAA,EACAzT,SAAAA,IAIAqoD,+BAA+B5J,EAA8C72D,GAAsB,IAAAqZ,EACvG,OAAIw9C,GAAAA,MAAuC72D,GAAiB,QAAVqZ,EAAPrZ,EAASwY,gBAAQ,IAAAa,GAAjBA,EAAmB+9C,iBAAmBp3D,EAAQwY,SAAS4+C,gBAAkB,EACzGp3D,EAAQwY,SAAS4+C,gBAGrB,EAGHsJ,+BAA+BzoD,EAAyCjY,GAAsB,IAAA4gE,EAClG,OAAI3oD,GAAAA,MAAkCjY,GAAiB,QAAV4gE,EAAP5gE,EAASwY,gBAAQ,IAAAooD,GAAjBA,EAAmBnoD,iBAAmBzY,EAAQwY,SAASC,gBAAkB,EACpGzY,EAAQwY,SAASC,gBAGrBtrB,KAAKE,MAAMuG,QAAQkD,IAAIzG,OAAO+0B,2BAGjCu7C,aACJ9J,EACAgK,EACA7gE,GAAsB,IAAA8gE,EAEtB,IAAIC,EAAkB,EAEtB,OAAKlK,GAAwCgK,GAIzC7gE,MAAAA,GAAiB,QAAV8gE,EAAP9gE,EAASwY,gBAAQ,IAAAsoD,GAAjBA,EAAmBE,iBAAmBhhE,EAAQwY,SAASwoD,gBAAkB,IACzED,EAAkB/gE,EAAQwY,SAASwoD,iBAGhCD,GAPIA,EAgSPzE,oBACJ7uE,EACAy+B,GAEA,IAAKz+B,EACD,MAAO,GAEX,MAAMkrC,EAA4D,GAC5DhrC,EAAYR,KAAKE,MAAMM,UAC7B,IAAK,MAAMqxC,KAAavxC,EACpBkrC,EAAWqG,EAAUzyB,oBAAsBpf,KAAK2uE,yBAAyB98B,EAAUzyB,mBAAoB5e,EAAWu+B,GAEtH,OAAOyM,IAznBDjpC,EAAAA,EAAAA,IAAA,CAAT+N,EAAAA,IAAQ,6BAy1Bb,kGEvkCA,MAAMwjE,EAA2BC,IAC7B,MAAM,eAAEC,EAAc,oBAAEC,EAAmB,QAAE9tC,EAAO,OAAEwL,EAAM,OAAEuiC,GAAWH,EAEzE,OACIn0E,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAK0wE,GACNp0E,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAK2wE,GAAsB9tC,GAC/BwL,EACAuiC,IAUPC,EAAmB7B,IACrB,QAAkB3uE,IAAd2uE,EAAyB,CACzB,MAAM,eAAE0B,EAAc,UAAEI,GAAc9B,EAEtC,OAAO1yE,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAK0wE,GAAiBI,EAAU3kE,IAAIqkE,IAEpD,OAAO,MA8FX,EA7C+D5zE,IAC3D,MAAM,oBACF0xE,EAAmB,aACnBlS,EAAY,KACZ2S,EAAI,mBACJH,EAAkB,OAClBH,EAAM,UACNO,EAAS,iCACTH,EAAgC,6BAChCC,EAA4B,aAC5B5I,EAAY,OACZmI,EAAM,UACNa,EAAS,QACTV,EAAO,aACPpvB,GACAxiD,EAEJ,OACIN,EAAAA,cAAC+Q,EAAAA,OAAMpP,OAAA+B,OAAA,GAAKsuE,GACPD,EACAG,GACGlyE,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKwuE,GACLpvB,MAAAA,OAAY,EAAZA,EAAc7f,YACd6f,MAAAA,OAAY,EAAZA,EAAcowB,oBACdpwB,MAAAA,OAAY,EAAZA,EAAckhB,mBAGvBhkE,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKyuE,GACNnyE,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKo8D,GAhEP2U,EACfhC,EACA7I,EACA8K,EACAC,EACAC,EACAlC,IAEO9I,EACH5pE,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKgxE,GACN10E,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKixE,GACLlC,EAAKx/D,QACLshE,EAAgB7B,GAChBD,EAAKpnD,SACNrrB,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkxE,GAA2BnC,EAAKxvC,aACzCwvC,EAAK1L,eAId/mE,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKgxE,GACN10E,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkxE,GAA2BnC,EAAKxvC,aAC1CjjC,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKixE,GACLlC,EAAKx/D,QACLshE,EAAgB7B,GAChBD,EAAKpnD,SACLonD,EAAK1L,eAwCD0N,CACGhC,EACA7I,EACA0I,EACAC,EACAC,EACAE,GAEHpyE,EAAM8xE,eAGdQ,kHC9Eb,MAyFMiC,EAA4BA,CAC9BvgE,EACAhU,KAC4C,IAAAw0E,EAO5C,MAAO,CACHvuC,QAPgBjyB,EAAKiyB,SA7FPwuC,EAACC,EAAkC10E,KACrD,MAAM8D,EAAiB9D,EAAM8D,eAC7B,OACIpE,EAAAA,cAACkE,EAAAA,GAAa,CACVsgC,KAAMwwC,EACNlpE,IAAI,IACJ1K,UAAU,qDACV2D,UAAW,CAKPg6D,OAAQh5D,IACJzF,EAAM20E,2BAA2BlvE,IAErC3B,eAAAA,MA8EwB2wE,CAAczgE,EAAKiyB,QAASjmC,GAQ5DkkC,KAPkBlwB,EAAK4gE,SAnEPC,EAACC,EAAwC90E,KAC7D,MAAM8D,EAAiB9D,EAAM8D,eAC7B,OACIpE,EAAAA,cAACkE,EAAAA,GAAa,CACVsgC,KAAM4wC,EACNtpE,IAAI,IACJ1K,UAAU,0DACV2D,UAAW,CAKPg6D,OAAQh5D,IACJzF,EAAM+0E,gCAAgCtvE,IAE1C3B,eAAAA,MAoD0B+wE,CAAgB7gE,EAAK4gE,QAAS50E,GAQhEo+D,MAPwB,QAAboW,EAAGxgE,EAAKoqD,aAAK,IAAAoW,OAAA,EAAVA,EAAYjlE,KAAI,CAACylE,EAAqBvlE,IAxCxCwlE,EAACD,EAAqBh1E,EAA2CwF,KACjF,MAAMoK,EAAoC,CACtCtM,UAAW0xE,EAAQ1xE,UACnBxC,UAAW,2DACX8E,SAAUovE,EAAQpvE,SAClB1C,QAAS8xE,EAAQ9xE,QAAQC,eACzBK,aAAcwxE,EAAQxxE,aACtBqM,KAAM,QAEJ/L,EAAiB9D,EAAM8D,eAC7B,OACIpE,EAAAA,cAACkE,EAAAA,GAAa,CACVc,IAAKc,EACLvC,KAAM2M,EACNnL,UAAW,CAKPsL,aAActK,IACVzF,EAAMk1E,+BAA+B1vE,EAAWC,IAEpD3B,eAAAA,MAmBDmxE,CAAYD,EAASh1E,EAAOyP,KAOnC0lE,+BAAgC,CAAEr0E,UAAW,2DAC7Cs0E,2BAA4B,CAAEt0E,UAAW,uDASpCu0E,EACTr1E,IAEA,MAAM,kBAAEs1E,GAAsBt1E,EAC9B,IAAKs1E,EACD,OAIJ,MAAO,CACHC,sBAAuB,CAAEz0E,UAAW,gDACpC00E,uBAH2DjB,EAA0Be,EAAmBt1E,0kBCjIhH,MAAMy1E,UAAoB/1E,EAAAA,cAKtBC,YAAmBK,GACfwC,MAAMxC,GAgGH,KAAA4+D,iBAAoBn5D,IACvB3F,KAAKE,MAAMgD,OAAOijC,QAAS/B,KAAOz+B,EAAMlC,OAAOsC,OAO5C,KAAA6vE,sBAAyBjwE,IAC5B3F,KAAKE,MAAMgD,OAAO2yE,UAAYlwE,EAAMlC,OAAOsC,OAxG3C/F,KAAK81E,eAAsG,QAArFvnE,EAAAA,EAAAA,UAAS,CAAEqR,QAAS8qC,EAAAA,YAAY2e,SAAU5iE,QAASzG,KAAKE,MAAMuG,QAAQC,UAC5F1G,KAAK6C,kBAAmBqE,EAAAA,EAAAA,oBACpBlH,KAAKE,MAAMuG,QAAQC,QAAQS,kBAC3BnH,KAAKE,MAAMkH,aACXpH,KAAKE,MAAMkC,WAIZjC,SACH,MAAM41E,EAAOtrE,EAAAA,EAAA,GACNzK,KAAKE,MAAMgD,QAAM,IACpB4yE,eAAgB91E,KAAK81E,iBAEnBnoB,EAA6B3tD,KAAKE,MAAMgD,OAAOyqD,MAC/CqoB,EAAoC,CACtCC,cAAej2E,KAAKE,MAAMM,UAAU01E,UACpCC,eAAgBn2E,KAAKE,MAAMM,UAAU41E,WACrCC,iBAAkBr2E,KAAKE,MAAMM,UAAU81E,aACvCC,gBAAiBv2E,KAAKE,MAAMM,UAAUg2E,YACtCC,cAAez2E,KAAKE,MAAMM,UAAUk2E,UACpCC,gBAAiB32E,KAAKE,MAAMM,UAAUo2E,YACtCC,oBAAqB72E,KAAKE,MAAMM,UAAUs2E,gBAC1CC,wBAAyB/2E,KAAKE,MAAMM,UAAUw2E,oBAC9CC,aAAcj3E,KAAKE,MAAMM,UAAUy2E,aACnCC,uBAAwBl3E,KAAKE,MAAMM,UAAU02E,uBAC7CC,mBAAoBn3E,KAAKE,MAAMM,UAAU22E,oBAEvCC,EAAgC,GAE1B,IAADC,EAAP1pB,IACAypB,EAAcE,QAAU3pB,EAAMjsD,GAC9B01E,EAAchyE,MAAQuoD,EAAMvoD,MAC5BgyE,EAAcG,SAAW5pB,EAAM6pB,SAE3B7pB,EAAM8pB,YACNL,EAAcM,eAAiB/pB,EAAM8pB,UAAUx2D,KAGnC,QAAhBo2D,EAAI1pB,EAAMgqB,cAAM,IAAAN,GAAZA,EAAcO,mBACdR,EAAcS,sBAAwBlqB,EAAMgqB,OAAOC,mBAG3D,MAAME,EAA+B,CAAE/B,QAASA,EAA2BgC,SAAUX,GAC/E5sE,EAASC,EAAAA,EAAA,GAGRzK,KAAKE,OAAK,IAEb83E,OACIp4E,EAAAA,cAAC+H,EAAAA,GAAc,CAAC3G,UAAU,GAAG2D,UAAW,CAAEC,IAAK5E,KAAKE,MAAMgD,OAAOyqD,MAAO3pD,eAAgBhE,KAAKE,MAAMuG,QAAQC,UACvG9G,EAAAA,cAACq4E,EAAAA,OAAM,CACHC,WAAYJ,EACZ9B,gBAAiBA,EACjBnzE,iBAAkB7C,KAAK6C,iBACvBs/C,SAAUniD,KAAKE,MAAMuG,QAAQC,QAAQw7C,OAAOC,YAIxD/8C,MAAOpF,KAAKm4E,0BACZ/zC,KAAMpkC,KAAKo4E,4BACX9Z,MAAOt+D,KAAKq4E,wBACZC,iBAAkB,CAAEt3E,UAAW,4BAC/Bu3E,oBAAqB,CAAEv3E,UAAW,iCAClCw0E,kBAAmBD,EAA6B,CAC5CvxE,eAAgBhE,KAAKE,MAAMuG,QAAQC,QACnC8uE,kBAAmBx1E,KAAKE,MAAMgD,OAAOsyE,kBACrCX,2BAA4B70E,KAAK60E,2BACjCI,gCAAiCj1E,KAAKi1E,gCACtCG,+BAAgCp1E,KAAKo1E,iCAEzC9V,WAAYt/D,KAAK8+D,iBACjB0Z,gBAAiBx4E,KAAK41E,sBACtB6C,qBAAsBz4E,KAAK60E,2BAC3B6D,0BAA2B14E,KAAKi1E,gCAChC0D,WAAY34E,KAAKyF,qBACjBmzE,qBAAsB54E,KAAK60E,6BAE/B,OAAO70E,KAAKE,MAAMmN,WAAW7C,GAQ1B/E,qBAAqBC,EAAmBC,GACvC3F,KAAKE,MAAMgD,OAAOo7D,OAASt+D,KAAKE,MAAMgD,OAAOo7D,MAAMt7C,OAAOtd,MAC1D1F,KAAKE,MAAMgD,OAAOo7D,MAAMt7C,OAAOtd,IAAYI,SAAWH,EAAMlC,OAAOsC,OAwBpE8uE,2BAA2BlvE,GAC1B3F,KAAKE,MAAMgD,OAAOsyE,oBAClBx1E,KAAKE,MAAMgD,OAAOsyE,kBAAkBrvC,QAAUxgC,EAAMlC,OAAOsC,OAS5DqvE,+BAA+B1vE,EAAmBC,GAAoC,IAAAkzE,EACzF,MAAMrD,EAAuD,QAAtCqD,EAAG74E,KAAKE,MAAMgD,OAAOsyE,yBAAiB,IAAAqD,EAAAA,EAAI,GAC7DrD,EAAkBlX,QAClBkX,EAAkBlX,MAAMt7C,OAAOtd,IAAYI,SAAWH,EAAMlC,OAAOsC,OAQpEkvE,gCAAgCtvE,GAC/B3F,KAAKE,MAAMgD,OAAOsyE,oBAClBx1E,KAAKE,MAAMgD,OAAOsyE,kBAAkBV,QAAUnvE,EAAMlC,OAAOsC,OAQ3DsyE,wBACJ,MAAM,MAAE/Z,GAAUt+D,KAAKE,MAAMgD,OACvBP,GAAUC,EAAAA,EAAAA,kBAAiB,QAAS5C,KAAK6C,iBAAkB,IAEjE,OAAOy7D,MAAAA,OAAK,EAALA,EAAO7uD,KAAI,CAACqpE,EAAsBnpE,KACrChN,EAAQiN,cAAcC,MAAQipE,EAAShzE,SACvC,MAAM/C,GAAaC,EAAAA,EAAAA,wBAAuBhD,KAAK6C,iBAAkBF,GAC3Do2E,EAASppE,EACTG,EAAoC,CACtCtM,UAAWs1E,EAASt1E,UACpBxC,UAAW,sCACX8E,SAAUgzE,EAAShzE,SACnB1C,QAAS01E,EAAS11E,QAAQC,eAC1BK,aAAco1E,EAASp1E,aACvBqM,KAAM,SACNC,qBAAsBjN,GAG1B,OACInD,EAAAA,cAAC+H,EAAAA,GAAa,CACV/C,IAAKm0E,EACL51E,KAAM2M,EACNnL,UAAW,CAKPsL,aAActK,IACV3F,KAAKyF,qBAAqBkK,EAAOhK,IAErC3B,eAAgBhE,KAAKE,MAAMuG,QAAQC,cAO/CyxE,0BAAuB,IAAA1xC,EAC3B,MAAM,QAAEN,GAAYnmC,KAAKE,MAAMgD,OAE/B,OACIijC,GACIvmC,EAAAA,cAAC+H,EAAAA,GAAa,CACV3G,UAAU,kCACV0K,IAAgB,QAAb+6B,EAAEN,EAAQz6B,WAAG,IAAA+6B,EAAAA,EAAI,KACpBrC,KAAM+B,EAAQ/B,KACdz/B,UAAW,CAAEg6D,OAAQ3+D,KAAK8+D,iBAAkB96D,eAAgBhE,KAAKE,MAAMuG,QAAQC,WAMvF0xE,4BACJ,MAAM,UAAEvC,GAAc71E,KAAKE,MAAMgD,OAEjC,OACI2yE,GACIj2E,EAAAA,cAAC+H,EAAAA,GAA0B,CACvBy8B,KAAMyxC,EACN70E,UAAU,iCACV2D,UAAW,CAAEg6D,OAAQ3+D,KAAK41E,sBAAuB5xE,eAAgBhE,KAAKE,MAAMuG,QAAQC,YAOxG,kGCpPA,MAoCA,EAhByDxG,IACrD,OACIN,EAAAA,cAAA,MAAA2B,OAAA+B,OAAA,CAAK5B,GAAIxB,EAAMwB,GAAIV,UAAU,mBAAsBd,EAAMsoB,uBAAuBtoB,IAC3EA,EAAM83E,OACPp4E,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKpD,EAAMo4E,iBAAgB,CAAEt3E,UAAWd,EAAMo4E,iBAAmBp4E,EAAMo4E,iBAAiBt3E,UAAY,KACpGd,EAAMkF,MACNlF,EAAMkkC,KACNlkC,EAAMs1E,qBA3BUA,EA2BmCt1E,EAAMs1E,mBA1BhDE,uBAEd91E,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkyE,EAAkBC,uBACxB71E,EAAAA,cAAAA,EAAAA,SAAA,KACK41E,EAAkBE,uBAAuBvvC,QAC1CvmC,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkyE,EAAkBE,uBAAuBL,gCAC9CG,EAAkBE,uBAAuBtxC,KAC1CxkC,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkyE,EAAkBE,uBAAuBJ,4BAC9CE,EAAkBE,uBAAuBpX,UAQ3D,MAWK1+D,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKpD,EAAM84E,oBAAmB,CAAEh4E,UAAWd,EAAM84E,oBAAsB94E,EAAM84E,oBAAoBh4E,UAAY,KAC7Gd,EAAMo+D,SA7BMkX,IAAAA,uPCD1B,MAAMyD,EAA0DrnE,IAAA,IAAC,IAAEhN,EAAG,UAAE5D,EAAS,cAAEyX,EAAa,eAAE4xC,GAAgBz4C,EAAA,OACrHhS,EAAAA,cAAA,OAAKgF,IAAKA,EAAK5D,UAAWA,GACtBpB,EAAAA,cAAA,QAAMoB,UAAU,iCAAiCyX,EAAa,KAC9D7Y,EAAAA,cAAA,QAAMoB,UAAU,iCAAiCqpD,KCwEnD6uB,EAdkBh5E,IACpB,MAAM,QAAE2S,EAAO,QAAEsuB,EAAO,SAAED,GAAahhC,GACjC,YAAEi5E,GAAgBj4C,EAExBi4C,GAAetmE,GAAWsuB,GAAWg4C,EAAYtmE,EAASsuB,IAUxD+3C,EAP2Bh5E,IAC7B,MAAM,aAAEi4C,GAAiBj4C,EAAMghC,UACzB,SAAE5sB,GAAapU,EAAM2S,QAE3BslC,GAAgB7jC,GAAY6jC,EAAa7jC,IAyBvCytB,EAAoB7hC,IACtB,MAAM,QAAE2S,EAAO,MAAEoK,EAAK,QAAExW,EAAO,UAAEjG,GAAcN,GAEzC,KAAEuH,EAAI,WAAEozB,GAAehoB,GACvB,0BAAEwlB,EAAyB,yBAAEF,EAAwB,0BAAEM,GAA8Bj4B,EAE3F,IAAI44E,EAAiB,OACjB5tC,EAAa,KAsBjB,OApBIvuB,IACAm8D,EACwB,IAApBn8D,EAAMgF,UAAkBzhB,EAAU0R,cAAgBzL,EAAQga,iBAAiBC,eAAezD,EAAMgF,UAAYhF,EAAMmvC,eAGtHvxB,IACA2Q,EAAa3Q,EAAWprB,KAAIqrB,IACxB,OAAQA,EAAiB1b,oBACrB,KAAK,EACD,MAAO,GAAGiZ,IAA4ByC,EAAiBzb,gBAAkByb,EAAiBzb,eAAe1D,QAC7G,KAAK,EACD,MAAO,GAAGwc,IAA2B2C,EAAiBzb,gBAAkByb,EAAiBzb,eAAe1D,QAC5G,KAAK,EACD,MAAO,GAAG8c,IAA4BqC,EAAiBzb,gBAAkByb,EAAiBzb,eAAe1D,QAC7G,QACI,MAAO,QAKhB,GAAGlU,KAAQ2xE,KAAmB5tC,GAAcA,EAAWoJ,KAAK,KAAQ,MASzEykC,EAAoBA,CAAC9tD,EAA2BnX,KAClD,MAAM,iBAAEvR,GAAqB0oB,GACrBjX,SAAU4H,EAAUzU,KAAMm2B,GAAgBrS,EAAM1Y,QAClDlQ,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAmB,GAAIqZ,EAASjD,YACpEqgE,GAAoBt2E,EAAAA,EAAAA,wBAAuBH,EAAmBF,GAC9DkW,EAA2BzE,EACjC,OACKuE,EAAAA,iBAAiBC,mBAAmBC,IACjCjZ,EAAAA,cAAA,IAAA2B,OAAA+B,OAAA,CACIC,KAAMsV,EACN7X,UAAU,mCACNs4E,EAAiB,cACTv3C,EAAiBxW,KAE5BqS,IAqBX27C,EAAkCA,CAAC99C,EAA+CE,KACpF,MAAMD,EAAmBC,EACnB,sCAAsCA,IACtC,qCACN,OACKhjB,EAAAA,iBAAiBC,mBAAmB6iB,IACjC77B,EAAAA,cAAA,QAAMoB,UAAW06B,GAAmBD,IAU1C+9C,EAAwCjuD,IAC1C,MAAM,UAAEkuD,EAAS,cAAEl3C,EAAa,eAAEtJ,GAAmB1N,EAG/C2D,EAAgB3D,EAAM1Y,QAAQsc,gBAAkBC,EAAAA,oBAAoBC,QAEpEqqD,EAAgB95E,EAAAA,aAAkB,KACpCs5E,EAA8B3tD,KAC/B,CAACA,IAEJ,OACI3rB,EAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAU,wCACVoE,OAAS8pB,GAAiBuqD,IAAcl3C,GAAkBtJ,EAC1D93B,QAASu4E,EACT30D,WAAYmK,GAAiBuqD,KAE1BvqD,GAAiBuqD,IAAcl3C,GAAkBtJ,IAU1D0gD,EAAiDpuD,IACnD,MAAM,uBAAEquD,GAA2BruD,EAE7BsuD,EAAmBj6E,EAAAA,aAAkB,KACvCs5E,EAA+B3tD,KAChC,CAACA,IAEJ,OAAO3rB,EAAAA,cAAA,UAAQoB,UAAU,2CAA0C,aAAa44E,EAAwBz4E,QAAS04E,KAS/Gt8C,EAAsBA,CAAC92B,EAAuC+b,KAEhE,KAAI/b,EAAQkD,IAAIzG,QAAYuD,EAAQkD,IAAIzG,OAAOmZ,0BAA4E,SAAhD5V,EAAQkD,IAAIzG,OAAOmZ,2BAIzFmG,EAIL,OACI5iB,EAAAA,cAAA,OAAKoB,UAAU,8CACXpB,EAAAA,cAAA,YAAO4iB,KAKNs3D,EAAgBvuD,IACzB,MAAM,QACF1Y,EAAO,MACPoK,EAAK,QACLxW,EAAO,cACPvC,EAAa,cACb61E,EAAa,QACb54C,EAAO,SACPD,EAAQ,0BACRzF,EAAyB,uBACzBgG,EAAsB,wBACtB9F,GACApQ,EAEJ,IAAK1Y,EACD,OAAO,KAGX,MAAM,SAAEyB,EAAQ,KAAE7M,EAAI,gBAAEiN,EAAe,WAAEmmB,GAAehoB,EACxD,GAAIA,EAAQyB,SAAU,CAAC,IAADsvB,EAClB,MAAMgW,GAAgB1c,EAAAA,EAAAA,qBAClBrqB,EAAQ2N,OACR/Z,EAAQiB,cAAc1D,eAAeoP,YAClB,QAD6BwwB,EAChDn9B,EAAQC,QAAQiD,WAAG,IAAAi6B,GAAQ,QAARA,EAAnBA,EAAqB1gC,cAAM,IAAA0gC,OAAA,EAA3BA,EAA6BzG,kBAE3B/oB,EA/LelU,CAAAA,IACzB,IAAKuR,EAAAA,GAAiBtJ,UAClB,MAAO,GAGX,MAAM0nB,EAAU,IAAI1c,IAAIjT,EAAMkU,WAAYhM,OAAOiR,SAAS9V,MAC1D,IAAK,MAAMsuC,KAAqC,QAA5BmoC,EAAI95E,EAAM2S,QAAQgoB,kBAAU,IAAAm/C,EAAAA,EAAI,GAAI,CAAC,IAADA,EAAAvlC,EACpD,MAAM4V,EAAyC,QAA3B5V,EAAG5C,EAAUxyB,sBAAc,IAAAo1B,OAAA,EAAxBA,EAA0B94B,MACjD,IAAKhD,EAAAA,iBAAiBC,mBAAmByxC,GAAiB,CACtD,MAAM/Y,GAAgBgZ,EAAAA,EAAAA,6CAA4CzY,EAAUzyB,oBAC5EyQ,EAAQ9W,aAAakO,IAAIqqB,EAAe+Y,IAGhD,OAAOx6B,EAAQtsB,MAkLQ02E,CAAoB1uD,GAUvC,MAAO,CACH3mB,IAAK,GAAG0P,SACRylC,aAVAtyC,GACAuyC,EACIvzC,EACAoM,EAAQpL,UACY9D,IAApB+Q,EAAgCklC,EAAgBllC,EAChDklC,EACA11C,GAKJumD,YAAa4uB,EAAkB9tD,EAAOnX,GACtCgpB,kBAAmBvC,GAAcugB,EAAyB7vB,GAC1D8nB,aAAcp2B,GAASk9B,EAAa5uB,GACpC8uB,qBAAsBxnC,EAAQ4P,sBAAwB8a,EAAoB92B,EAASoM,EAAQ4P,sBAC3Fy3D,kBAAmBz4C,EAAyBrtB,OAAazQ,EACzDw2E,iBAAkB14C,EAAyBM,EAAiBxW,QAAS5nB,EACrEi6B,YAAa6D,GAA0Bh6B,IAlIxBm2B,EAkIkDn2B,EAjIlE7H,EAAAA,cAAA,OAAKoB,UAAU,oCAAoC48B,IAmIlDyE,gBAAiBziC,EAAAA,cAAC45E,EAAoCj4E,OAAA+B,OAAA,GAAKioB,IAC3D6uD,qBAAsBb,EAAgC99C,EAA2BE,GACjFgH,aAAc/iC,EAAAA,cAAC+5E,EAA6Cp4E,OAAA+B,OAAA,GAAKioB,IACjE8uD,qBAAsBN,GAClBA,EAAc/tE,QACd+tE,EAAcnjE,YAActC,GAC5BylE,EAAc54C,UAAYA,GACtBvhC,EAAAA,cAAA,OAAKoB,UAAU,qCACXpB,EAAAA,cAACkjC,EAAAA,MAAK,CAAC7hC,MAAO84E,EAAch3C,gBAAiB/2B,OAAQ+tE,EAAc/tE,OAAQE,OAAQg1B,EAASQ,WACxF9hC,EAAAA,cAAA,YAAOm6E,EAAcl3C,gBA7ItBjF,IAAAA,EAmJvB,OAAO,MAGLoc,EAAsBA,CACxBvzC,EACA0/B,EACApiC,EACA61C,EACA11C,KAEA,MAAM++B,EAAuC,CACzC9+B,UAAW,CACPC,GAAI,CAAEC,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrCC,GAAI,CAAEH,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,GACrC2+B,GAAI,CAAE7+B,EAAG,kBAAmBC,EAAG,EAAGC,EAAG,IAEzCE,UAAU,EACV2c,iBAAiB,GAOrB,OAJIld,IACAA,EAAckd,iBAAkB,GAGhCrd,EAEInE,EAAAA,cAACyhB,EAAAA,GAAK,CACFrd,eAAgByC,EAAQiB,cAAc1D,eACtChD,UAAU,mCACVggB,QAASmlB,EACT/gC,MAAO+gC,EACPllB,IAAKld,EACLmd,YAAa04B,EACb31C,aAAcwC,EAAQC,QAAQzC,aAC9BC,cAAeA,GAAiB++B,EAChCv+B,oBAAoB,UAIzB,MAGLy1C,EAAgBj6C,IAClB,MAAM,MAAE+c,EAAK,QAAExW,EAAO,SAAE+a,EAAQ,eAAED,EAAc,UAAE/gB,GAAcN,EAEhE,OAAI+c,EAEIrd,EAAAA,cAAC0iB,EAAAA,eAAc,CACX5gB,GAAI8f,EACJ1c,SAAUyc,EACVnhB,KAAM,CAAE6c,MAAAA,GACRjc,UAAU,mCACVkR,cAAe1R,EAAU0R,cACzBC,kBAAmB3R,EAAU2R,kBAC7BC,iBAAkB5R,EAAU4R,iBAC5B3L,QAASA,IAId,MAGL20C,EAA4Bl7C,IAC9B,MAAM,QAAE2S,EAAO,UAAErS,GAAcN,EAE/B,OAAK2S,GAAYA,EAAQgoB,WAIlBhoB,EAAQgoB,WAAWprB,KAAI,CAACoiC,EAAWliC,KACtC,IAAKkiC,EAAUxyB,iBAAmBwyB,EAAUxyB,eAAe1D,MACvD,OAGJ,IAAI4uB,EAAO,GAEX,OAAQsH,EAAUzyB,oBACd,KAAK,EACDmrB,EAAO/pC,EAAU63B,0BACjB,MAEJ,KAAK,EACDkS,EAAO/pC,EAAU23B,yBACjB,MAEJ,KAAK,EACDoS,EAAO/pC,EAAUi4B,0BACjB,MAEJ,QACI,OAGR,OACI74B,EAAAA,cAACq5E,EAAqB,CAClBr0E,IAAK,GAAGiO,EAAQyB,uBAAuB3E,IACvC3O,UAAU,iDACVyX,cAAe8xB,EACf8f,eAAgBxY,EAAUxyB,eAAe1D,WAhC1C,ICnXF2+D,EAAyE1oE,IAAmC,IAAlC,UAAE5Q,EAAS,UAAEmjC,EAAS,KAAEC,GAAMxyB,EACjH,OAAQuyB,GACJ,IAAK,QACD,OAAOvkC,EAAAA,cAAA,KAAGoB,UAAW8I,GAAAA,CAAW,mCAAoC9I,IAAaojC,GACrF,IAAK,SACD,OAAOxkC,EAAAA,cAAA,KAAGoB,UAAW8I,GAAAA,CAAW,oCAAqC9I,IAAaojC,GACtF,IAAK,UACL,QACI,OAAOxkC,EAAAA,cAAA,KAAGoB,UAAWA,EAAY,4CAA8C,sCAAuCojC,0kBCwClI,IAAMm2C,EAAN,cAA4B36E,EAAAA,UAExBC,YAAYK,GACRwC,MAAMxC,GAuGH,KAAAs6E,oBAAuB70E,GAA0C3F,KAAKE,MAAMgD,OAAOijC,QAAS/B,KAAOz+B,EAAMlC,OAAOsC,MAyEtG,KAAAs/B,WAAa,KAC1BrlC,KAAKuP,SAAS,CACVvD,QAAQ,KAIC,KAAAonD,eAAkBjtB,IAC/B,GAAKA,EAGL,OACIvmC,EAAAA,cAAC+H,EAAAA,GAAa,CACV3G,UAAU,6BACV0K,IAAKy6B,EAAQz6B,KAAO,KACpB04B,KAAM+B,EAAQ/B,KACdz/B,UAAW,CAAEg6D,OAAQ3+D,KAAKw6E,oBAAqBx2E,eAAgBhE,KAAKE,MAAMuG,QAAQC,YAK7E,KAAA+zE,eAAiBp9D,MAAOxK,EAAwBsuB,KAC7D,MAAM,QAAE16B,EAAO,KAAErG,EAAI,UAAEI,EAAS,UAAE4B,GAAcpC,KAAKE,OAC/C,KAAEqI,EAAI,oBAAEylB,GAAwB5tB,GAChC,0BAAEs6E,EAAyB,0BAAEt6B,EAAyB,0BAAEu6B,GAA8Bn6E,EAEtFo6E,EAA8B56E,KAAK66E,qBAAqB,CAAE92C,eAAgBlxB,GAAWmb,EAAoB1tB,QAE/G,GAAImG,GACI8B,EAAKjI,OAAQ,CAAC,IAADw6E,EAAAC,EAAA7uD,EAEb,MAAM6I,EAA+E,QAA1D+lD,EAAG96E,KAAKE,MAAMuG,QAAQiB,cAAc1D,eAAegxB,eAAO,IAAA8lD,OAAA,EAAvDA,EAAyD7lD,sBAEjF1D,QAAwBypD,EAAAA,EAAAA,yBAC1B,CACIj9D,cAAe/d,KAAKE,MAAMuG,QAAQiB,cAClCuzE,oBAAqBC,EAAAA,yBAAyBC,qCAAqCn7E,KAAKE,MAAMuG,QAAQiB,gBAE1G,CAACmL,EAAQyB,WAEP8mE,EAAmBp7E,KAAKq7E,+BACxBpwD,EAAWjrB,KAAKs7E,yBAA4D,QAArCP,EAAGloE,MAAAA,GAAiB,QAAVqZ,EAAPrZ,EAASwY,gBAAQ,IAAAa,OAAA,EAAjBA,EAAmB+9C,uBAAe,IAAA8Q,EAAAA,EAAQ,EAEpF16B,EAAwB,CAC1BxtC,QAAAA,EACAqT,MAAO+E,EACPlV,iBAAkBtP,EAAQkD,IAAIzG,OAAO6S,iBACrCqb,kBAAmBwpD,EACbA,EAA4B1sD,yBAAyBQ,kBACrD,EACN1e,qBAAsB,CAAEorE,iBAAkBA,GAC1CG,6BACI96E,EAAAA,gBAAgBC,YAAY6wB,IAC5B9wB,EAAAA,gBAAgBC,YAAY6wB,EAAgB,GAAGvE,kBAC/CuE,EAAgB,GAAGvE,gBAAgB,GAAG5G,OAAS2O,GAGvDxsB,EAAKjI,OACAggD,iBAAiBD,GACjBriC,MAAKX,MAAAA,IACF,GAAsB,YAAlB/c,EAAO2jB,OACPjkB,KAAKuP,SAAS,CACVqH,UAAW/D,EAAQyB,SACnB6sB,QAAAA,EACA0B,YAAa63C,EACb33C,gBAAiB,UACjBiD,aAAc,eACdh6B,QAAQ,SAET,GAAyB,gBAArB1L,EAAO4jB,UAA6B,CAAC,IAADs3D,EAC3C,MAAMC,GACe,QAAjBD,SAAOjzE,GAAMA,YAAI,IAAAizE,GAAW,QAAXA,EAAjBA,EAAmBl2D,iBAAS,IAAAk2D,GAAmD,QAAnDA,EAA5BA,EAA8B7nE,MAAKO,GAAQA,EAAKoL,YAAczM,EAAQyB,kBAAS,IAAAknE,OAAA,EAA/EA,EAAiFzrD,WAAY,EAC3F2rD,EAA4B17E,KAAK27E,0BAA0Bf,EAA6Ba,GAE9Fz7E,KAAKuP,SAAS,CACVqH,UAAW/D,EAAQyB,SACnB6sB,QAAAA,EACA0B,YAAa64C,EACb34C,gBAAiB,SACjBiD,aAAc,8BACdh6B,QAAQ,SAET,GAAyB,mBAArB1L,EAAO4jB,WAAkCk3D,EAAkB,CAAC,IAADv6B,EAClE,MAAM66B,EAA+C,QAAtB76B,EAAGvgD,EAAOwgD,oBAAY,IAAAD,OAAA,EAAnBA,EAAqBE,iBAEvD/gD,KAAKuP,SAAS,CACVqH,UAAW/D,EAAQyB,SACnB6sB,QAAAA,EACA0B,YAAa64C,GAA6Bt7B,EAC1Crd,gBAAiB,SACjBiD,aAAc,8BACdh6B,QAAQ,SAET,GAAyB,kBAArB1L,EAAO4jB,UAA+B,CAAC,IAAD03D,EAC7C57E,KAAKuP,SAAS,CACVqH,UAAW/D,EAAQyB,SACnB6sB,QAAAA,EACA0B,aAAgC,QAAnB+4C,EAAAt7E,EAAOwgD,oBAAY,IAAA86B,OAAA,EAAnBA,EAAqB76B,mBAAoB45B,EACtD53C,gBAAiB,SACjBiD,aAAc,8BACdh6B,QAAQ,SAGZhM,KAAKE,MAAMkC,UAAUE,MAAM,iEAC3BtC,KAAKuP,SAAS,CACVqH,UAAW/D,EAAQyB,SACnB6sB,QAAAA,EACA0B,YAAaud,EACbrd,gBAAiB,SACjBiD,aAAc,8BACdh6B,QAAQ,OAInB9J,OAAMC,IACHC,EAAU8nB,QAAQ/nB,GAClBC,EAAUE,MAAM,uEAChBtC,KAAKuP,SAAS,CACVqH,UAAW/D,EAAQyB,SACnB6sB,QAAAA,EACA0B,YAAaud,EACbrd,gBAAiB,SACjBiD,aAAc,8BACdh6B,QAAQ,SAOxB,KAAAqvE,6BAA+B,KAAc,IAAArnD,EACjD,MAAM6nD,GACiC,QAAnC7nD,EAAAh0B,KAAKE,MAAME,KAAKk2B,aAAah2B,cAAM,IAAA0zB,GAElC,QAFkCA,EAAnCA,EAAqCrgB,MACjC2iB,GAAsC,wEAAtBA,EAAa7uB,cAChC,IAAAusB,OAAA,EAFDA,EAEGwC,aAAa,EAGpB,OAD4Cx2B,KAAK0pE,uCACHmS,GAG1C,KAAAP,sBAAwB,KAAc,IAAAhoD,EAAAwoD,EAC1C,MAAMpS,EAAsC1pE,KAAK0pE,sCAC3CqS,EAAsG,QAAjFzoD,EAAoC,QAApCwoD,EAAG97E,KAAKE,MAAME,KAAK65B,yBAAiB,IAAA6hD,GAAQ,QAARA,EAAjCA,EAAmCx7E,cAAM,IAAAw7E,OAAA,EAAzCA,EAA2CpL,2CAAmC,IAAAp9C,GAAAA,EAC5G,OAAOo2C,GAAuCqS,GAG1C,KAAArS,oCAAsC,KAAc,IAAAhsB,EAAA0sB,EAMxD,MAJuC,QAAnC1sB,EAAA19C,KAAKE,MAAME,KAAKk2B,aAAah2B,cAAM,IAAAo9C,GAElC,QAFkCA,EAAnCA,EAAqC/pC,MACjC2iB,GAAsC,oEAAtBA,EAAa7uB,cAChC,IAAAi2C,OAAA,EAFDA,EAEGlnB,aAAa,GAGhB,OAAO,EAOX,GAJkE,QAAtC4zC,EAAGpqE,KAAKE,MAAME,KAAKk2B,aAAah2B,cAAM,IAAA8pE,GAEjE,QAFiEA,EAAnCA,EAAqCz2D,MAChE2iB,GAAsC,mDAAtBA,EAAa7uB,cAChC,IAAA2iE,OAAA,EAF8BA,EAE5B5zC,UAEyB,CAAC,IAADgD,EAAA5nB,EACxB,MAAM6nB,EAA4D,QAArBD,EAAGx5B,KAAKE,MAAMuG,eAAO,IAAA+yB,GAAS,QAATA,EAAlBA,EAAoB9yB,eAAO,IAAA8yB,GAAK,QAALA,EAA3BA,EAA6B7vB,WAAG,IAAA6vB,GAAU,QAAVA,EAAhCA,EAAkCE,gBAAQ,IAAAF,OAAA,EAA1CA,EAA4CG,iCAEtFG,EAAe95B,KAAKE,MAAME,KAAKy5B,oBAAoBv5B,OASzD,MANgD,QAA5Cm5B,GAGmF,QAHlC7nB,EAC/CkoB,IACgD,QAA5CL,GAAqDK,EAAaC,OACnB,QAA5CN,IAAsDK,EAAaC,cAAO,IAAAnoB,GAAAA,EAIpF,CAAC,IAADoqE,EAAAhiD,EACH,MAAMC,EAAqD,QAApC+hD,EAAGh8E,KAAKE,MAAME,KAAK65B,yBAAiB,IAAA+hD,OAAA,EAAjCA,EAAmC17E,OAC7D,QAA+C,QAAxC05B,EAAEC,MAAAA,OAAiB,EAAjBA,EAAmBC,2BAAmB,IAAAF,GAAAA,KAItC,KAAAiiD,wBAA2BrlE,IACxC,MAAM,QAAEnQ,EAAO,KAAErG,EAAI,UAAEgC,GAAcpC,KAAKE,OACpC,UAAEkJ,GAAchJ,EACtB,IAAI87E,EAAoD,GACxD,GAAIz1E,GAAWA,EAAQiB,cAAe,CAClC,MAAMu5C,EAAYx6C,EAAQC,QAAQ8B,KAAK2rB,iBAAmB1tB,EAAQC,QAAQ8B,KAAKm9B,MACzEw2C,EAAiBn8E,KAAKo8E,gCAAgCxlE,GACxDqqC,GAAa73C,EAAU9I,QAAU8I,EAAU9I,OAAO,IAAM67E,GACxDE,EAAAA,EAAAA,IAAiB,CAAEt+D,cAAetX,EAAQiB,eAAiB0B,EAAU9I,OAAO,GAAGkqB,GAAI,CAAC,CAAEiB,OAAQ0wD,KACzFn+D,MAAKs+D,IACF,MAAMC,EAAwCD,EAE1CC,GAAoBA,EAAiB/xD,IAAM/jB,EAAQC,QAAQ8B,KAAK2rB,kBAChE+nD,EAAoBl8E,KAAKw8E,2BAA2BD,GAChDL,GAAqBA,EAAkBz6E,OAAS,EAChDzB,KAAKy8E,2BAA2BP,IAEhCz1E,EAAQiB,cAAcs4C,QAAO08B,EAAAA,EAAAA,IAAyB,GAAI,MAAO,CAACH,KAClEI,EAAAA,EAAAA,SAAoB,IAAIC,EAAAA,oBAAuBn2E,EAAQiB,eAClDsW,MAAK+M,IACF,MAAM8xD,EAA2C9xD,EAC7C8xD,GAAsBA,EAAmBp7E,OAAS,IAClDzB,KAAKuP,SAAS,CAAEutE,SAAS,IACzBr2E,EAAQiB,cAAcs4C,OAAO,IAAI48B,EAAAA,oBAAuBC,OAG/D36E,OAAMC,IACHC,EAAU8nB,QAAQ,6EAClB9nB,EAAUD,MAAMA,WAKnCD,OAAMC,IACHC,EAAU8nB,QAAQ,0DAClB9nB,EAAUD,MAAMA,MAGxBC,EAAU8nB,QAAQ,kGAoCb,KAAA6yD,gBAAmBlqE,IAChC,MAAM,oBAAEmb,GAAwBhuB,KAAKE,MAAME,KAC3C,GAAI4tB,GAAuBA,EAAoB1tB,OAAQ,CACnD,MAAMs6E,EAA8B56E,KAAK66E,qBAAqBhoE,EAASmb,EAAoB1tB,QAC3F,GAAIs6E,EACA,OAAOA,EAA4BoC,kBAO9B,KAAAC,oBAAuBpqE,IACpC,MAAM,oBAAEmb,GAAwBhuB,KAAKE,MAAME,KAC3C,GAAI4tB,GAAuBA,EAAoB1tB,OAAQ,CACnD,MAAMs6E,EAA8B56E,KAAK66E,qBAAqBhoE,EAASmb,EAAoB1tB,QAC3F,GAAIs6E,GAA+BA,EAA4BsC,eAC3D,MAAO,sBAAsBtC,EAA4BsC,eAAeC,kBAOnE,KAAAC,kBAAqBvqE,IAClC,MAAM,KAAEzS,EAAI,QAAEqG,GAAYzG,KAAKE,OACzB,oBAAE8tB,GAAwB5tB,EAEhC,IAAKqG,EAAQkD,IAAIzG,OAAO6S,iBACpB,OAAO,EAGX,IAAKiY,EAAoB1tB,SAAWuS,EAAQkxB,eACxC,OAAO,EAGX,IAAK,MAAMs5C,KAAiBrvD,EAAoB1tB,OAC5C,GACI+8E,EAAcnvD,0BACdmvD,EAAcnvD,yBAAyB5O,WACvC+9D,EAAcnvD,yBAAyB5O,YAAczM,EAAQkxB,eAAezvB,SAE5E,OAAO+oE,EAAcC,mBAI7B,OAAO,GAGM,KAAAlB,gCAAmCxlE,IAChD,MAAM,UAAExN,GAAcpJ,KAAKE,MAAME,KAEjC,IACKgJ,EAAU9I,QACiB,IAA5B8I,EAAU9I,OAAOmB,SAChB2H,EAAU9I,OAAO,GAAGiK,mBAC4B,IAAjDnB,EAAU9I,OAAO,GAAGiK,kBAAkB9I,OAGtC,OADAzB,KAAKE,MAAMkC,UAAUD,MAAM,kDACpB,KAGX,MAAMo7E,EAAoBn0E,EAAU9I,OAAO,GAAGiK,kBAAkBwM,QAAOymE,GAC5DA,EAAiBl+D,YAAc1I,IAG1C,OAAI2mE,GAAqBA,EAAkB,GAAG9xD,OACnC8xD,EAAkB,GAAG9xD,OAEzB,MAGM,KAAA+wD,2BAA8BD,IAAkE,IAAAkB,EAC7G,MAAMC,EAAgD,GAUtD,OATkC,QAAlCD,EAAAlB,EAAiBhyE,yBAAiB,IAAAkzE,GAAlCA,EAAoChuE,KAAI+V,IACpC,MAAM,SAAEuF,GAAa/qB,KAAKE,MAAME,KAIN,KAHL2qB,GAAaA,EAAwCzqB,QAE1CyW,QAAOlE,GAAWA,EAAQkxB,eAAezvB,WAAakR,EAAKlG,YAC5E7d,SACXi8E,MAAAA,GAAAA,EAAe/lE,KAAK,CAAE8T,OAAQjG,EAAKiG,aAGpCiyD,GAGM,KAAAjB,2BAA8BP,IAC3C,MAAM,QAAEz1E,EAAO,KAAErG,EAAI,UAAEgC,GAAcpC,KAAKE,OACpC,UAAEkJ,GAAchJ,EACtB,GAAIqG,GAAWA,EAAQiB,cAAe,CAChBjB,EAAQC,QAAQ8B,KAAK2rB,iBAAmB1tB,EAAQC,QAAQ8B,KAAKm9B,OAC9Dv8B,EAAU9I,QAAU8I,EAAU9I,OAAO,IAClD+7E,EAAAA,EAAAA,IAAiB,CAAEt+D,cAAetX,EAAQiB,eAAiB0B,EAAU9I,OAAO,GAAGkqB,GAAI0xD,GAC9El+D,MAAKs+D,IACF,MAAMC,EAAwCD,EAC1CC,GAAoBA,EAAiB/xD,IAAM/jB,EAAQC,QAAQ8B,KAAK2rB,kBAChE1tB,EAAQiB,cAAcs4C,QAAO08B,EAAAA,EAAAA,IAAyB,GAAI,MAAO,CAACH,KAClEI,EAAAA,EAAAA,SAAoB,IAAIC,EAAAA,oBAAuBn2E,EAAQiB,eAClDsW,MAAK+M,IACF,MAAM8xD,EAA2C9xD,EAC7C8xD,GAAsBA,EAAmBp7E,OAAS,IAClDzB,KAAKuP,SAAS,CAAEutE,SAAS,IACzBr2E,EAAQiB,cAAcs4C,OAAO,IAAI48B,EAAAA,oBAAuBC,OAG/D36E,OAAMC,IACHC,EAAU8nB,QAAQ,6EAClB9nB,EAAUD,MAAMA,UAI/BD,OAAMC,IACHC,EAAU8nB,QAAQ,0DAClB9nB,EAAUD,MAAMA,MAGxBC,EAAU8nB,QAAQ,kGA/hB1BlqB,KAAK6C,kBAAmBqE,EAAAA,EAAAA,oBACpBlH,KAAKE,MAAMuG,QAAQC,QAAQS,kBAC3BnH,KAAKE,MAAMkH,aACXpH,KAAKE,MAAMkC,WAIZ,0BACHpC,KAAKuP,SAAS,CAAEutE,SAAS,IAGtBp2D,sBAAsBC,EAAoDC,GAC7E,OAAI5mB,KAAK6G,QAAU+f,GAAa5mB,KAAKE,MAAME,OAASumB,EAAUvmB,KAM3DD,SACH,MAAM,QAAEgmC,EAAO,UAAEnlC,GAAchB,KAAKE,MAAMgD,QACpC,kBAAEy6E,EAAiB,6BAAEC,EAA4B,8BAAEC,GAAkC79E,KAAKE,MAAMM,WAChG,KAAE+H,EAAI,oBAAEylB,EAAmB,UAAE5kB,EAAS,SAAE2hB,GAAa/qB,KAAKE,MAAME,KAEtE,GAAoB,YAAhBmI,EAAK0b,QAAuD,YAA/B+J,EAAoB/J,QAA6C,YAArB7a,EAAU6a,OAAsB,CACzG,MAAMyiB,EAAUj8B,EAAAA,EAAA,GACRzK,KAAKE,OAAiD,IAC1Dq6E,cAAe,CACX9uE,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAW,oBAAqB9I,IAE/CijB,OAAQ,UAER0iB,cAAe/mC,EAAAA,cAAC06E,EAA0B,CAACn2C,UAAU,UAAUC,KAAK,eACpE+B,QAASnmC,KAAKozD,eAAejtB,KAEjC,OAAOnmC,KAAKE,MAAMmN,WAAWq5B,GAGjC,GAAoB,WAAhBn+B,EAAK0b,QAAsD,WAA/B+J,EAAoB/J,QAA4C,WAArB7a,EAAU6a,OAAqB,CACtG,MAAMyiB,EAAUj8B,EAAAA,EAAA,GACRzK,KAAKE,OAAiD,IAC1Dq6E,cAAe,CACX9uE,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAW,oBAAqB9I,IAE/CijB,OAAQ,SACR0iB,cAAe/mC,EAAAA,cAAC06E,EAA0B,CAACn2C,UAAU,SAASC,KAAMw5C,IACpEz3C,QAASnmC,KAAKozD,eAAejtB,KAGjC,OAAOnmC,KAAKE,MAAMmN,WAAWq5B,GAGjC,MAAMo3C,EAAe/yD,GAAaA,EAAwCzqB,OAE1E,GAAIw9E,GAAwC,IAAxBA,EAAar8E,OAAc,CAC3C,MAAMwlC,EAAcx8B,EAAAA,EAAA,GACZzK,KAAKE,OAAiD,IAC1Dq6E,cAAe,CACX9uE,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAW,oBAAqB9I,IAE/CijB,OAAQ,QACR0iB,cAAe/mC,EAAAA,cAAC06E,EAA0B,CAACn2C,UAAU,QAAQC,KAAMu5C,IACnEx3C,QAASnmC,KAAKozD,eAAejtB,KAGjC,OAAOnmC,KAAKE,MAAMmN,WAAW45B,GAGjC,MAAMz8B,EAASC,EAAAA,EAAA,GACPzK,KAAKE,OAAiD,IAC1Dq6E,cAAe,CACX9uE,YAAazL,KAAKE,MAClBc,UAAW8I,GAAAA,CAAW,oBAAqB9I,IAE/CijB,OAAQ,UACRkiB,QAASnmC,KAAKozD,eAAejtB,GAC7B43C,SAAU,CACN/8E,UAAW,8BACX0K,IAAK,MAETivB,QAAS,CACL35B,UAAW,6BACX0K,IAAK,MAETq4B,eAAgB,CACZ/iC,UAAW,kCACX0K,IAAK,KAET7I,iBAAkB7C,KAAK6C,iBACvBm7E,kBAAmB,CACfh9E,UAAW,yCAEf+pB,SAAU+yD,GAAgB99E,KAAKojD,mBAAmB06B,GAClDG,uBACIH,GAAgB99E,KAAKk+E,qBAAqBJ,EAAcH,EAAmBE,KAGnF,OAAO79E,KAAKE,MAAMmN,WAAW7C,GAKzB0zE,qBAAqBnzD,EAAyBozD,EAAmBC,GACrE,OAAIp+E,KAAK6G,OAAS7G,KAAK6G,MAAMi2E,QACD,IAApB/xD,EAAStpB,OACF7B,EAAAA,cAAC06E,EAA0B,CAACn2C,UAAU,UAAUC,KAAM+5C,IAG7Dv+E,EAAAA,cAAC06E,EAA0B,CACvBt5E,UAAW,4CACXmjC,UAAU,UACVC,KAAMg6C,IAIX,KAEHh7B,mBAAmBr4B,GACvB,MAAM,UACFm6B,EAAS,kBACT/yC,EAAiB,iBACjBC,EAAgB,oBAChBisE,EAAmB,eACnBplD,EAAc,iBACd5K,EAAgB,0BAChBgK,EAAyB,yBACzBF,EAAwB,0BACxBM,EAAyB,2BACzBu1C,GACAhuE,KAAKE,MAAMM,WACT,QAAEiG,EAAO,UAAErE,GAAcpC,KAAKE,OAC9B,cAAEgE,EAAa,uBAAEu9B,GAA2BzhC,KAAKE,MAAMgD,OAE7D,OAAO6nB,EAAStb,KAAI,CAACoD,EAAsBlD,KACvC,MAAM2uE,EAAsB,CACxBzrE,QAASA,EAAQkxB,eACjB9mB,MAAOpK,EAAQ+yC,aACfn/C,QAAAA,EACAszE,cAAe/5E,KAAK6G,MACpBuN,YAAYsb,EAAAA,EAAAA,mBAAkB7c,EAAQkxB,eAAgBt9B,EAAQiB,mBAAe/D,GAC7EO,cAAAA,EACA01E,uBAAwBvrD,EACxBorD,UAAWz5E,KAAKo9E,kBAAkBvqE,GAClC0vB,cAAe87C,EACfplD,eAAAA,EACAtpB,MAAAA,EACAwxB,QAAS,GAAGtuB,EAAQkxB,eAAezvB,YAAYzB,EAAQkxB,eAAevjB,UAAU7Q,IAChFvN,UAAAA,EACAof,SAAUxhB,KAAKE,MAAMwB,GACrB6f,eAAgBvhB,KAAKE,MAAM4E,SAC3B28B,uBAAAA,EACAhG,0BAA2Bz7B,KAAK+8E,gBAAgBlqE,GAChD8oB,wBAAyB37B,KAAKi9E,oBAAoBpqE,GAClDhQ,iBAAkB7C,KAAK6C,iBACvBq+B,SAAU,CACNi4C,YAAan5E,KAAKy6E,eAClBtiC,aAAcn4C,KAAKi8E,wBACnBv6C,UAAW1hC,KAAKqlC,YAEpB7kC,UAAW,CACP63B,0BAAAA,EACAF,yBAAAA,EACAM,0BAA2B5lB,EAAQkxB,eAAehJ,WAAaizC,EAA6Bv1C,EAC5FvmB,cAAegzC,EACf/yC,kBAAAA,EACAC,iBAAAA,IAGR,OAAO0nE,EAAawE,MAkOpB3C,0BAA0B9oE,EAAmD4oE,GACjF,MAAM,QAAEh1E,EAAO,UAAEjG,GAAcR,KAAKE,OAC9B,qBAAEigD,GAAyB3/C,EAE3B+9E,GAAyBvmD,EAAAA,EAAAA,kCAAiCvxB,EAAQkD,IAAIzG,OAAO+0B,4BAEnF,IAAKplB,IAAYA,EAAQqb,yBAAyBQ,oBAAsBjoB,EAAQkD,IAAIzG,OAAO6S,iBACvF,OAAOoqC,EACFnoC,QAAQ,gBAAiBumE,EAAuBtlE,YAChDjB,QAAQ,gBAAiByjE,EAAYxiE,YAG9C,MAAMulE,EAAeluB,KAAKvgB,IAAIwuC,EAAwB1rE,EAAQqb,yBAAyBQ,mBAEvF,OAAOyxB,EAAqBnoC,QAAQ,gBAAiBwmE,EAAavlE,YAAYjB,QAAQ,gBAAiByjE,EAAYxiE,YAG/G4hE,qBACJhoE,EACA4rE,GAEA,GAAIA,GAA8BA,EAA2Bh9E,OAAS,EAClE,IAAK,MAAM47E,KAAiBoB,EACxB,GAAI5rE,EAAQkxB,eAAezvB,WAAa+oE,EAAcnvD,yBAAyB5O,UAC3E,OAAO+9D,IAxarB9C,GAAah4E,EAAAA,EAAAA,IAAA,CADlBC,EAAAA,IACK+3E,GAyiBN,oHCtlBA,MAgCMz0B,EAAcA,CAChBjzC,EACA8nB,EACAqjD,EACAj6C,EACAlhC,KAEA,MAAM,IACF+B,EAAG,aACHm1C,EAAY,YACZ0Q,EAAW,aACXpX,EAAY,kBACZjW,EAAiB,gBACjBiF,EAAe,aACfM,EAAY,qBACZ03C,EAAoB,kBACpBH,EAAiB,YACjBt8C,EAAW,iBACXu8C,EAAgB,qBAChBC,EAAoB,qBACpB//B,GACAxnC,EACElQ,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAmB,GAAI+B,GAC3D00E,GAAoBt2E,EAAAA,EAAAA,wBAAuBH,EAAmBF,GACpE,OAAIu3E,EAEIt6E,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,CAACsB,IAAKA,EAAK5D,UAAW25B,EAAS35B,WAAe25B,GAC/C/6B,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,CACDC,KAAM22E,EACNl5E,UAAW8I,GAAAA,CAAW,uBAAwBi6B,EAAgB/iC,YAC1Ds4E,EAAiB,cACTa,EACZzuE,IAAKq4B,EAAgBr4B,MAEpBquC,EACAnc,EACAR,GAAqB4gD,GAClBp+E,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAK06E,GACL5gD,EAAkB3tB,KAAIoiC,GACZA,KAIlBwB,EACAgH,GAEJ+/B,EACA/3C,EACAM,EACA03C,GAKTz6E,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,CAACsB,IAAKA,EAAK5D,UAAW25B,EAAS35B,WAAe25B,GAC9Cof,EACA0Q,EACArtB,GAAqB4gD,GAClBp+E,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAK06E,GACL5gD,EAAkB3tB,KAAIoiC,GACZA,KAIlBwB,EACAhR,EACAM,EACA03C,IAKb,EAxG6Dn6E,IACzD,MAAM,cACFq6E,EAAa,OACbt2D,EAAM,cACN0iB,EAAa,QACbR,EAAO,SACP43C,EAAQ,SACRhzD,EAAQ,QACR4P,EAAO,eACPoJ,EAAc,kBACdi6C,EAAiB,iBACjBn7E,EAAgB,uBAChBo7E,GACA/9E,EAEJ,OACIN,EAAAA,cAAC+Q,EAAAA,OAAMpP,OAAA+B,OAAA,GAAKi3E,GACPp0C,EACA83C,EACW,YAAXh6D,GAAwB0iB,EACxBo3C,GAAYhzD,GAAYA,EAAStpB,OAAS,GACvC7B,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKy6E,GACLhzD,GACGA,EAAStb,KAAIoD,GACFA,GAAWizC,EAAYjzC,EAAS8nB,EAASqjD,EAAmBj6C,EAAgBlhC,icC0C/G,SAAS67E,EAAyB1rE,EAA2BO,GAAiC,IAAAorE,EAAAC,EAC1F,IAAKrrE,IAAgBA,EAAYE,gBAC7B,OAAO,KAGX,MACMe,EADcxB,EACkCrJ,IAAIzG,OAAOsR,kCAE3DqqE,EAEL,QAFsBF,EAAGprE,EAAYE,gBAAgBE,MAClDC,IAAc,IAAAC,EAAA,OAA0B,QAAtBA,EAAAD,EAAeE,eAAO,IAAAD,OAAA,EAAtBA,EAAwBE,uBAAwBS,YACrE,IAAAmqE,OAAA,EAFyBA,EAEvB1qE,SAEH,IAAKxT,EAAAA,gBAAgBC,YAAYm+E,GAC7B,OAAO,KAIX,OAD6E,QAA1DD,EAAGC,EAAkBlrE,MAAKO,IAA2B,IAAnBA,EAAKC,mBAAmB,IAAAyqE,EAAAA,EAAIC,EAAkB,GA2BvG,SAAS/rE,EAAiBC,EAA+BC,EAA2BC,GAChF,MAAMC,EAAY,IAAIC,IAAIJ,EAAuBC,EAAYtM,QAAQ0M,YAAYC,SAC7EH,EAAU5H,OACV4H,EAAU5H,QAAU,IAAI2H,IAExBC,EAAU5H,QAAU2H,EAIxB,OADmB,IAAIE,IAAID,EAAU3P,MACnBuE,SAAWoL,EAAU5H,OAQ3C,SAASwzE,EAA2Bt8D,GAChC,OAAKA,EAID5iB,IAAAA,cAAA,OAAKoB,UAAU,gCACXpB,IAAAA,cAAA,YAAO4iB,IAJJ,KA2Vf,SAASzF,EACLC,EACAC,EACAV,EACAC,EACAK,EACAC,GAEA,MAAMI,EAA2BN,EAAmBC,EAAaC,MAAAA,EAAAA,EAA4B,IAC7F,MAAO,GAAGE,MAAAA,EAAAA,EAAQ,MAAMC,MAAAA,EAAAA,EAAS,MAAMX,EAAmBC,EAAQC,KAC9DU,EAA2B,IAAIA,IAA6B,KAQpE,SAASZ,EAAmBC,EAAiBlK,GACzC,GAAIkK,GAAUlK,EAAiB,CAC3B,MAAMoK,EAAgBF,EAAOG,QAAQ,GACrC,OAAOC,EAAAA,EAAAA,QAAOtK,GAAmB,GAAIoK,EAAe,KAExD,MAAO,GAGX,SAASG,EAAmBC,EAAsBC,GAC9C,OAAID,GAAeC,GACRH,EAAAA,EAAAA,QAAOG,GAA4B,GAAID,GAE3C,GAmCX,SAAS0F,EACL9b,EACA3B,EACApD,EACAq9E,EACA9sE,EACAC,EACAC,EACAC,EACAM,EACAC,EACA0gC,GAEA,MAAMxgC,EAAyB,CAE3BsqC,iBAAkB4hC,EAAoBC,gBAAkBC,EAAAA,YAAYC,OAASD,EAAAA,YAAYE,YAGvFliE,EAAsBo2B,MAAAA,EAAAA,EAAgB,CACxCpxB,UAAW88D,EAAoB98D,UAC/BC,cAAe68D,EAAoBp+D,MACnCwB,wBAAyB48D,EAAoBp+D,MAC7CyB,gBAAiB28D,EAAoB38D,gBAAkB28D,EAAoB38D,gBAAkB28D,EAAoBp+D,MACjH0B,gBAAiB08D,EAAoB18D,gBAAkB08D,EAAoB18D,gBAAkB08D,EAAoBp+D,OAGrH,OACI/gB,IAAAA,cAAC0iB,EAAAA,eAAc,CACX7b,QAASA,EACT/E,GAAIA,EACJoD,SAAUA,EACV+N,QAASA,EACTzS,KAAM,CAAE6c,MAAAA,GACRhL,YAAaA,EACbC,cAAeA,EACfC,kBAAmBA,EACnBO,qBAAsBA,EACtBC,eAAgBA,IAK5B,SAAS2O,EACLpd,EACAD,EACA2W,EACAmG,EACAC,EACAva,GAAsC,IAAA24E,EAEtC,IAAKxkE,IAAa3W,IAAiBC,EAC/B,OAAO,KAGX,MAAMm7E,EAAgB54E,MAAAA,GAAmB,QAAZ24E,EAAP34E,EAASkD,IAAIzG,cAAM,IAAAk8E,OAAA,EAAnBA,EAAqBE,qBAE3C,IAAIC,EAAsBx+D,EADIs+D,GAEDt+D,IACzBw+D,EAAsB,GAAGx+D,KAHCs+D,KAK9B,MAAMG,EAAkB,CACpBv+D,IAAKrG,EACLoG,QAASA,GAAoB,GAC7BE,YAAaq+D,GAEXp+D,EAAa,CACfld,aAAAA,EACAC,cAAAA,GAGJ,OADAid,EAAWjd,cAAckd,iBAAkB,EAEvCxhB,IAAAA,cAACyhB,EAAAA,GAAK9f,OAAA+B,OAAA,CACFU,eAAgByC,MAAAA,OAAO,EAAPA,EAASiB,cAAc1D,gBACnCw7E,EACAr+D,EAAU,CACdzc,oBAAoB,QACpB+6E,qBAAmB,KAKxB,MAAMjuE,EAAoEC,EAAAA,GAAiBC,wBAEhG,+WAASjH,CAAA,CAAIkH,UA5auCC,IAsBjD,IAAAC,EAAA6tE,EAAA5tE,EAAAC,EAAA,IAtBkD,KACnD3R,EAAI,QACJqG,EAAO,cACPvC,EAAa,YACb+N,EAAW,cACXC,EAAa,kBACbC,EAAiB,iBACjBC,EAAgB,gBAChBC,EAAe,qBACfC,EAAoB,UACpBC,EAAS,SACTzN,EAAQ,GACRpD,EAAE,iBACFmB,EAAgB,gBAChB2P,EAAe,wBACfmtE,EAAuB,4BACvBC,EAA2B,qBAC3BltE,EAAoB,eACpBC,EAAc,eACdF,EAAc,wBACdG,EAAuB,oBACvBitE,GACHjuE,EACG,MAAMiB,EAAUzS,EAAKyS,QACfwgC,EAAejzC,EAAKizC,aAE1B,IAAIj/B,GAAaC,EAAAA,EAAAA,uBAAmC,QAAdxC,EAACgB,MAAAA,OAAO,EAAPA,EAASpL,YAAI,IAAAoK,EAAAA,EAAI,GAAqB,QAAnB6tE,EAAE7sE,MAAAA,OAAO,EAAPA,EAASyB,gBAAQ,IAAAorE,EAAAA,EAAI18D,OAAO88D,UAAWr5E,EAAQiB,mBAAe/D,GACtH4O,IACA6B,EAAatB,EAAiBsB,EAAY3N,EAAS,cAEvD,MAAM8N,EAAiF,QAAxDzC,EArInC,SAA6CkB,EAA2BO,GACpE,MAAMoB,EAAgB+pE,EAAyB1rE,EAAaO,GACtDwsE,EAAyBprE,MAAAA,OAAa,EAAbA,EAAeC,iBAC9C,OAAKnU,EAAAA,gBAAgBC,YAAYq/E,IAI1BlrE,EAAAA,EAAAA,kBAAiBkrE,EAAuB,GAAI/sE,EAAYtM,QAAQ0M,aAH5DG,MAAAA,OAAW,EAAXA,EAAamB,gBAiIUsrE,CAAoCv5E,EAASoM,UAAQ,IAAAf,EAAAA,EAAIe,MAAAA,OAAO,EAAPA,EAAS6B,gBAC9FK,EAA2F,QAAnEhD,EAjDlC,SACIiB,EACAoB,EACAb,GAEA,MAAMoB,EAAgB+pE,EAAyB1rE,EAAaO,GAC5D,OAAKoB,MAAAA,GAAAA,EAAeK,YASblC,EAAiBsB,EAAYpB,EADhB,GAJAA,EACkCrJ,IAAIzG,OAAOsR,qCAEtCyrE,mBAAmBtrE,EAAcK,gBANjDZ,EA0CsBa,CAAmCxO,EAAS2N,EAAYvB,UAAQ,IAAAd,EAAAA,EAAIqC,GAC9Fc,EAAgBC,IAAqBC,EAAAA,EAAAA,UAAiBL,IACtDM,EAAiBC,IAAsBF,EAAAA,EAAAA,UAA6Bb,GAC3E3U,IAAAA,WAAgB,KACZuV,EAAkBJ,GAClBO,EAAmBf,KACpB,CAACH,EAAYW,EAA0BR,IAC1C,MAAOgB,IAAuBH,EAAAA,EAAAA,UAAS,IAAII,EAAAA,YAErCO,EAAmBtP,EAAQkD,IAAIzG,OAAO6S,iBAGtCvB,EADc/N,EACkCkD,IAAIzG,OAAOsR,kCAO3D+D,EAAwB3Y,IAAAA,aAC1B,CAACoT,EAA2BwF,KACxB,MAAMC,EAAgBD,EAAWC,cAEjC,GADAlD,EAAoBmD,SAASD,EAAeD,GACxCG,EAAAA,iBAAiBC,mBAAmBJ,EAAWzS,OAC/C,OAEJ,MAAMkN,EAAc,GAAGwF,KAAiBD,EAAWzS,QACnD,IAAI8S,EAA2B,GAC/B,GAAI3D,EAAelN,SAASyQ,GAAgB,CACxC,MAAMK,EAAS,IAAI3F,IAAI+B,EAAgBlC,EAAYtM,QAAQ0M,YAAYC,SACvEyF,EAAOC,aAAaC,OAAOP,GAC3BI,EAA2B/F,EAAiBgG,EAAOG,WAAYxS,EAASwM,QAExE4F,EAA2B/F,EAAiBoC,EAAgBzO,EAASwM,GAGzE,GADAkC,EAAkB0D,GACdJ,IAAkBjE,EAAmC,CACrD,MAAM0E,EAAwBzY,EAAAA,gBAAgBC,YAAY8X,EAAWW,kBAC/DX,EAAWW,iBAAiB,QAC5BxV,EACAyV,GAAcvE,EAAAA,EAAAA,kBAAiBqE,EAAuBlG,EAAYtM,QAAQ0M,aAChFkC,EAAmB8D,MAG3B,CAAC7D,EAAqB9O,EAASyO,IAGnC,IAAKrC,EACD,OAAO,KA8FX,MAAMlQ,GAAUC,EAAAA,EAAAA,kBAAiB,QAASC,EAAmB,GAAIgQ,EAAQyB,SAAS2E,YAE5EkD,IAAYnZ,EAAAA,EAAAA,wBAAuBH,EAAmBF,GAGtDyZ,GAAyB3V,EAAQkD,IAAIzG,QAA0D,oBAAhDuD,EAAQkD,IAAIzG,OAAOmZ,yBAExE,OACIzc,IAAAA,cAAAA,IAAAA,SAAA,KACKggF,EACGhgF,IAAAA,cAAA,IAAA2B,OAAA+B,OAAA,CACIC,KAAM2R,EACN/T,SAASwM,EAAAA,EAAAA,kBAAiB9K,EAAmBF,EAASkQ,EAAQpL,MAAM,aACxDsV,EACRlK,EAAQpL,KACRhB,EAAQga,iBAAiBC,eAAe7N,EAAQ8N,OAChD9N,EAAQ+N,cACRvO,EACAQ,EAAQgO,aACRvO,GAEJtR,UAAU,eACNmb,IAEJvc,IAAAA,cAAA,OAAKoB,UAAU,mCACXpB,IAAAA,cAAA,OAAKoB,UAAU,sBACVsgB,EACGpd,EACAuC,EAAQC,QAAQzC,aAChBoR,EACAxC,EAAQ6B,gBACR7B,EAAQpL,KACRhB,IAGR7G,IAAAA,cAAA,OAAKoB,UAAU,kCACXpB,IAAAA,cAAA,MAAIoB,UAAU,4BAA4B6R,EAAQpL,MACjD8a,EACG9b,EACA3B,EACApD,EACAmR,EACAZ,EACAC,EACAC,EACAC,EACAM,EACAC,EACA0gC,GAEHj3B,IAA0B0iE,EAA2BjsE,EAAQ4P,uBAuE/DC,GAtEoB7P,EAAQ8P,YAuE5C/iB,IAAAA,cAAA,KAAGoB,UAAU,qBAAqB0hB,QAlE7B9iB,IAAAA,cAAA,IAAA2B,OAAA+B,OAAA,CACIC,KAAM2R,EACN/T,SAASwM,EAAAA,EAAAA,kBAAiB9K,EAAmBF,EAASkQ,EAAQpL,MAAM,aACxDsV,EACRlK,EAAQpL,KACRhB,EAAQga,iBAAiBC,eAAe7N,EAAQ8N,OAChD9N,EAAQ+N,cACRvO,GAEJrR,UAAU,eACNmb,IAEJvc,IAAAA,cAAA,OAAKoB,UAAU,sBACVsgB,EACGpd,EACAuC,EAAQC,QAAQzC,aAChBoR,EACAxC,EAAQ6B,gBACR7B,EAAQpL,KACRhB,IAGR7G,IAAAA,cAAA,OAAKoB,UAAU,wBACXpB,IAAAA,cAAA,MAAIoB,UAAU,sBAAsB6R,EAAQpL,MAC3C8a,EACG9b,EACA3B,EACApD,EACAmR,EACAZ,EACAC,EACAC,EACAC,EACAM,EACAC,EACA0gC,GAEHj3B,IAA0B0iE,EAA2BjsE,EAAQ4P,yBApKjDy9D,GAwKArtE,EAAQY,iBAlKjC7T,IAAAA,cAAA,OAAKoB,UAAU,2BACVk/E,GAAgBzwE,KAAKyE,IAAwB,IAAAsF,EAAAC,EAAAC,EAAAC,EAC1C,MAAMC,EAAsD,QAApCJ,EAAe,QAAfC,EAAGvF,EAAKJ,eAAO,IAAA2F,OAAA,EAAZA,EAAc1F,2BAAmB,IAAAyF,EAAAA,EAAI,GAChE,IAxBhB,SAAgCf,GAC5B,MACM0nE,EADoB15E,EACiCkD,IAAIzG,OAAOk9E,wBACtE,OACI3/E,EAAAA,gBAAgBC,YAAYy/E,KAC3BA,EAAiCn4E,SAASgM,EAAAA,eAAeS,OAC1D0rE,EAAiCn4E,SAASyQ,EAAc1E,qBAkB3CssE,CAAuBzmE,GACxB,OAAO,KAGX,MACMpF,EADc/N,EACkCkD,IAAIzG,OAAOsR,kCAC3DiE,EAAgBmB,EAChBK,EAiBA,QAjBQP,EACG,QADHC,EACVzF,EAAKD,gBAAQ,IAAA0F,OAAA,EAAbA,EAAelK,KAAiB+I,IAAa,IAAA0B,EAAAC,EAAAG,EAAAC,EACzC,MAAO,CACHC,OAAQ,GAAgB,QAAhBN,EAAGhG,EAAKI,gBAAQ,IAAA4F,EAAAA,EAAI,MAAMN,KAA4C,QAA1BO,EAAI3B,EAAWxD,mBAAW,IAAAmF,EAAAA,EAAI,KAClFpU,MAA6B,QAAxBuU,EAAE9B,EAAWxD,mBAAW,IAAAsF,EAAAA,EAAI,GACjC7B,cAAAA,EACAiC,aAAclC,EAAWmC,mBACzBC,SAAUpC,EAAWqC,eACrB1B,iBAAkBX,EAAW5D,iBAC7B8B,UAAW8B,EAAWrE,UACtB0rE,oBAAqBA,GAAsBljE,EAAAA,EAAAA,QAAOkjE,EAAqBpnE,GAAiB,GACxFqC,WACI/E,IACAnD,MAAAA,GAEC,QAFsB2H,EAAvB3H,EAAyBe,MACrBoH,IAAqB,IAAAC,EAAA,OAAID,EAAsBhV,SAAiC,QAA5BiV,EAAMxC,EAAWxD,mBAAW,IAAAgG,EAAAA,EAAI,cACvF,IAAAT,OAAA,EAFDA,EAEGO,uBAEb,IAAApB,EAAAA,EAAI,GAQV,OANIjB,IAAkBjE,GAClB/T,EAAAA,gBAAgBC,YAAYuZ,KAC3BA,EAAS+B,MAAKC,GAAUA,EAAOvF,cAEhCuD,EAAS,GAAGvD,WAAY,GAGxB9W,IAAAA,cAAC0jB,EAAAA,gCAA+B,CAC5B7c,QAASA,EACTwT,SAAUA,EACVsJ,kBAAmBhL,EACnB3T,IAAKsP,EAAKI,eA5CnB,MAuKL7N,EAAQkD,IAAIzG,OAAO0f,YA0CjC,SACI5P,EACAuO,EACAC,EACAqB,EACAC,EACAtf,EACA8O,GAEA,IAAKuQ,EACD,OAAO,KAGX,MAAME,GAAgBD,MAAAA,OAAY,EAAZA,EAAc7J,kBAActV,EAC5C6Y,EAAsBF,EAAmBuG,EAAWrf,GACpDsZ,EAA2BF,EAAmBoG,OAAOD,GAAgBzQ,GAE3E,OACI1S,IAAAA,cAACqjB,EAAAA,gBAAe,CACZxc,QAASuM,EACTtR,GAAI8f,EACJ1c,SAAUyc,EACVsB,UAAWA,EACXK,YAAaH,EACbI,UAAQ,EACR3f,UAAWgZ,EACXlK,qBAAsBwK,EACtB1c,KAAM,KApEFgjB,CAAa3c,EAAS3B,EAAUpD,EAAImR,EAAQ+N,cAAe/N,EAAQgO,aAAcxO,EAAiBC,IArU/E+Q,GAsUI5Q,IArU+B,KAA/B4Q,GAK/BzjB,IAAAA,cAAA,OAAKoB,UAAU,6BACXpB,IAAAA,cAAA,YAAOyjB,KALJ,KAqUF7Q,GAtHT,SAAyB0N,EAA4BhM,GACjD,GAAkB,OAAdgM,EACA,OAEJ,MAAMC,EAAyC5K,EAAoB6K,YAAY3Q,KAAsBwK,IAC1F,CACHmF,oBAAoBiB,EAAAA,EAAAA,4CAA2CpG,EAASxB,eACxE4G,eAAgB,CACZ/K,SAAU,EACVqH,MAAO1B,EAASlU,WAI5B,OAAOnG,IAAAA,aAAmBsgB,EAAiC,CAAEI,kBAAmBpM,EAAMiM,mBAAAA,IAyG9DI,CAAgB/N,EAAiBK,EAAQyB,UAC5DqrE,GArTb,SACIA,EACA9sE,EACAwnB,GAGA,OADAC,EAAAA,EAAAA,mBAAkBD,GACXz6B,IAAAA,aAAmB+/E,EAA+C,CAAE9sE,QAAAA,EAASwnB,UAAAA,IA+ShDimD,CAA8BX,EAAyB9sE,GAASu7B,EAAAA,EAAAA,IAAa3nC,EAAQC,WAxU7H,IAAmC2c,GA2JE68D,GAgMVx9D,KA9aG,KAsjB9B,kKCvnBA,MAAM69D,GAA+BC,EAAAA,EAAAA,MAC/BC,EAAiB,CACnB54E,WAAY,IAAIsL,IAAI,4BACpButE,aAAc,4BAElBH,EAAYt8E,aAAe,CACvBG,GAAI,CAAEE,EAAG,IAAKC,EAAG,GACjB+tB,GAAI,CAAEhuB,EAAG,IAAKC,EAAG,GACjBq9C,GAAI,CAAEt9C,EAAG,KAAMC,EAAG,GAClBC,GAAI,CAAEF,EAAG,KAAMC,EAAG,GAClB2+B,GAAI,CAAE5+B,EAAG,KAAMC,EAAG,IAEtBg8E,EAAY/3E,KAAK2rB,iBAAkB,EACnCosD,EAAY/3E,KAAKiF,UAAY,UAC7B8yE,EAAY/3E,KAAKuF,WAAa,WAC9BwyE,EAAY/3E,KAAKm4E,UAAY,UAE7B,MAAMC,GAAkBJ,EAAAA,EAAAA,MACxBI,EAAgBp4E,KAAK2rB,iBAAkB,EACvCysD,EAAgBp4E,KAAKiF,UAAY,UACjCmzE,EAAgBp4E,KAAKuF,WAAa,WAClC6yE,EAAgBp4E,KAAKm4E,UAAY,UACjCC,EAAgBh5E,IAAM64E,EAEtB,MAAMI,GAAyBL,EAAAA,EAAAA,MAC/BK,EAAuBr4E,KAAK2rB,iBAAkB,EAC9C0sD,EAAuBr4E,KAAK2F,sBAAwB,uEACpD0yE,EAAuBr4E,KAAKiF,UAAY,UACxCozE,EAAuBr4E,KAAKuF,WAAa,WACzC8yE,EAAuBr4E,KAAKm4E,UAAY,UACxCE,EAAuBj5E,IAAM64E,EAE7B,MAAMK,GAAoBC,EAAAA,EAAAA,MAC1BD,EAAkB98E,eAAe4D,IAAM64E,iDCtBhC,MAAMO,UAAmBphF,EAAAA,cAG5BC,YAAmBK,GACfwC,MAAMxC,GAmEO,KAAA+gF,uBAAyB,KAEtC,MACMC,EAA4CpyE,SAAS6H,cAAc,oBACnEwqE,EAAgBD,EAAwBA,EAAsBE,aAF/C,EAKfC,EAAgBvyE,SAAS6H,cAAc,6BACzC0qE,IACI15E,EAAAA,GAASQ,WAAa2G,SAASggD,gBAAgBC,UAPlC,GAQbsyB,EAAcjyE,UAAUgJ,IAAI,eAC5BipE,EAAcjyE,UAAUgJ,IAAI,WAE5BipE,EAAcjyE,UAAUiJ,OAAO,eAC/BgpE,EAAcjyE,UAAUiJ,OAAO,WAKvC,MAAMipE,EAAmCxyE,SAAS6H,cAAc,8BAC1D4qE,EAAiCzyE,SAAS6H,cAAc,oBAE9D,GAAI2qE,GAAgBC,EAAY,CAE5B,MAAMC,EAAeD,EAAWH,aAAeD,EAC3Cx5E,EAAAA,GAASQ,WAAa2G,SAASggD,gBAAgBC,UAAYyyB,EAC3DF,EAAalyE,UAAUgJ,IAAI,SAE3BkpE,EAAalyE,UAAUiJ,OAAO,WA0BzB,KAAAtH,oBAAuB7Q,IAEpC,MAAM,mCACFsM,EAAkC,0CAClCC,EAAyC,0BACzCQ,EAAyB,WACzBJ,GACA3M,EACJ,GAAIsM,EAAoC,CACpC,MAAMsE,EAAmBhH,GAAAA,CAAW0C,EAAmCxL,UAAW,mBAClF,GAAIyL,EACA,OACI7M,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkJ,EAAkC,CAAExL,UAAW8P,IACpD7D,EACDrN,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKmJ,GAA4CzM,KAAKyhF,4BAA4BvhF,KAG5F,GAAI2M,EACP,OACIjN,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkJ,EAAkC,CAAExL,UAAW8P,IACpDjE,GAKjB,OAAO,MAGM,KAAA40E,4BAA+BvhF,IAC5C,MAAM,aAAE6/B,EAAY,mBAAEC,EAAkB,aAAE7yB,EAAY,YAAEJ,GAAgB7M,EACxE,OAAI6/B,EAEIngC,EAAAA,cAAAA,EAAAA,SAAA,KACKogC,EACAjzB,IACAI,GAAevN,EAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAU,iCAC/BmM,GAAeA,EAAasC,KAAKtM,GAA0BA,KAKhEvD,EAAAA,cAAAA,EAAAA,SAAA,OACKuN,GAAeA,EAAasC,KAAKtM,GAA0BA,IAC3D4J,IAWA,KAAAyD,qBAAwBC,GAEjC7Q,EAAAA,cAAAA,EAAAA,SAAA,KACKa,EAAAA,gBAAgBC,YAAY+P,GACvBA,EAAMhB,KAAKiB,GACA9Q,EAAAA,cAAAA,EAAAA,SAAA,KAAG8Q,KAEd,MArLd1Q,KAAK0hF,SAAW9hF,EAAAA,YAGbsI,oBACClI,KAAKE,MAAMgD,OAAOy+E,kBAEdh6E,EAAAA,GAASQ,WACTC,OAAOC,iBAAiB,UAAU,KAC9BrI,KAAKihF,4BAGbjhF,KAAKihF,0BAIN9gF,SAEH,MAAM,UACFqL,EAAS,gBACTG,EAAe,sBACfC,EAAqB,QACrBC,EAAO,oBACPC,EAAmB,wBACnBO,EAAuB,yBACvBE,GACAvM,KAAKE,MAET,OACIN,EAAAA,cAAC+Q,EAAAA,OAAMpP,OAAA+B,OAAA,GAAKkI,GACR5L,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKqI,GACN/L,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKsI,GACNhM,EAAAA,cAAA,OAAKoB,UAAU,4BAA4BI,IAAKpB,KAAK0hF,UAChD1hF,KAAKwQ,qBAAqBxQ,KAAKE,MAAMmL,UAE1CzL,EAAAA,cAAA,OAAKoB,UAAU,4BAA4BhB,KAAKE,MAAMkL,SACrDpL,KAAKE,MAAMwK,KACX1K,KAAK4hF,oBACL5hF,KAAKwQ,qBAAqBxQ,KAAKE,MAAMoL,QACrCtL,KAAKE,MAAMW,eACXb,KAAKE,MAAMggC,mBACXlgC,KAAK+Q,oBAAoB/Q,KAAKE,OAC/BN,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKuI,IACT7L,KAAKE,MAAMgL,SACXlL,KAAKwQ,qBAAqBxQ,KAAKE,MAAMqL,cAE1C3L,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKwI,GACNlM,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAK+I,GACLrM,KAAKE,MAAMiM,iBACXnM,KAAKwQ,qBAAqBxQ,KAAKE,MAAMmL,SACtCzL,EAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKiJ,KACLvM,KAAKE,MAAMiN,cAAenN,KAAKE,MAAMiN,aAAasC,KAAItM,GAAQA,IAC9DnD,KAAKE,MAAMqL,YACXvL,KAAKE,MAAM+K,mBACXjL,KAAKE,MAAM2M,WACX7M,KAAKE,MAAM6M,iBA6ChC60E,oBAAiB,IAAAC,EACrB,MAAM,OAAE3+E,EAAM,QAAEuD,EAAO,SAAE3B,GAAa9E,KAAKE,MAC3C,OACIN,EAAAA,cAAC6C,EAAAA,GAAIlB,OAAA+B,OAAA,GACG,CACAH,KAAMD,EAAOqG,SACbxF,MAA6B,QAAxB89E,EAAE3+E,EAAO4+E,uBAAe,IAAAD,EAAAA,EAAI,GACjC7gF,UAAW,yBACXiD,aAAcwC,EAAQC,QAAQzC,aAC9BD,eAAgByC,EAAQC,QACxB5B,SAAAA,MA8EpB,iHC1LKi9E,sDAAL,SAAKA,GACDA,EAAAA,EAAA,4DACAA,EAAAA,EAAA,+EACAA,EAAAA,EAAA,+EAHJ,CAAKA,IAAAA,EAAmB,KAWxB,MAAMC,EAAsB9hF,GACjBN,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKpD,EAAM+hF,mBAAoB/hF,EAAM6qB,UASrD,SAASm3D,EAAkBC,EAAqDtvE,GAC5E,IAAKsvE,IAAoC1hF,EAAAA,gBAAgBC,YAAYmS,EAAQY,iBACzE,OAEJ,MAAM2uE,EAAqBvvE,EAAQY,gBAAgBE,MAAKwI,GAAaA,EAAU7H,WAAa6tE,IAC5F,OAAIC,EACOA,EAAmBz1B,eAD9B,EAcJ,MAAM01B,EAAgCA,CAClCniF,EACA2S,EACAlD,EACAiwE,KACoB,IAAA0C,EAAAC,EACpB,MAAM,OAAEr/E,EAAM,QAAEuD,EAAO,UAAEjG,EAAS,gCAAEgiF,GAAoCtiF,EAClE2C,GAAmBqE,EAAAA,EAAAA,oBAAmBhH,EAAMuG,QAAQC,QAAQS,kBAAoBjH,EAAMkH,aAAclH,EAAMkC,WAC1GqgF,EAAiBviF,EAAMuG,QAAQkD,IAAIzG,OAAOw/E,eAC1CC,EAAcziF,EAAMgD,OAAO0/E,sBAA2C,SAAnBH,GAAgD,oBAAnBA,GAChFI,EAAYjD,EACZ,sDACA,iCACAkD,EAAgBriF,EAAAA,gBAAgBC,YAAYR,EAAMK,MAAM2f,WAAahgB,EAAMK,MAAM2f,UAAU,QAAKvc,EAChGw+E,EAA4D,QAA7BG,EAAGpiF,EAAME,KAAK2qB,SAASzqB,cAAM,IAAAgiF,OAAA,EAA1BA,EAA4BH,gCAC9DY,EAA0D,QAAjCR,EAAGriF,EAAME,KAAKk2B,aAAah2B,cAAM,IAAAiiF,OAAA,EAA9BA,EAAgC5uE,MAC9D2iB,GAAsC,0DAAtBA,EAAa7uB,OAE3BkL,EAA2C,CAC7CqwE,oBAAqBxiF,EAAUwiF,qBAG7BrD,EAA0Bl/E,EAAAA,gBAAgBC,YAAYR,EAAMK,MAAMo/E,yBAClEz/E,EAAMK,MAAMo/E,wBAAwB,GACpC,KAEN,OACI//E,IAAAA,cAAA,MAAIoB,UAAW6hF,EAAWj+E,IAAK+K,GAC3B/P,IAAAA,cAAC4R,EAAAA,iBAAgB,CACb/K,QAASA,EACT5D,iBAAkBA,EAClBqB,cAAehB,EAAOgB,cACtBgO,cAAe1R,EAAU0kD,UACzB/yC,kBAAmB3R,EAAU2R,kBAC7BC,iBAAkB5R,EAAU4R,iBAC5BC,gBAAiB7R,EAAU6R,gBAC3BE,UAAWowE,EACXjhF,GAAIxB,EAAMwB,GACVkD,IAAKiO,EAAQyB,SACbxP,SAAU5E,EAAM4E,SAChB1E,KAAM,CAAEyS,QAAAA,GACRL,gBAAiBswE,EACjBnD,wBAAyBA,EACzBC,4BAA6BA,EAC7BntE,eAAgByvE,EAAkBC,EAAiCtvE,GACnEH,qBAAsBqwE,MAAAA,OAAyB,EAAzBA,EAA2BvsD,UACjD7jB,eAAgBA,EAChBktE,oBAAqBr/E,EAAUq/E,oBAC/BjtE,wBAAyB4vE,MAAAA,OAA+B,EAA/BA,EAAiC7uE,MACrDoH,GACGta,EAAAA,gBAAgBC,YAAYqa,IAC5BA,EAAsB,GAAGjD,kBAAoBjF,EAAQgN,sBAYvEojE,EAAkB/iF,IAAgG,IAAAgjF,EACpH,MAAMn4D,EAA0C,QAAlCm4D,EAAGhjF,EAAME,KAAK+iF,cAAc7iF,cAAM,IAAA4iF,OAAA,EAA/BA,EAAiCE,eAClD,IAAKr4D,IAAatqB,EAAAA,gBAAgBC,YAAYqqB,GAC1C,OAAO,KAEX,MAAMs4D,EAAqCtB,EAAoBsB,2BACzDC,EAA+CvB,EAAoBuB,qCACnEC,EAA+CxB,EAAoBwB,qCACzE,OACI3jF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKpD,EAAM+hF,mBACX/hF,EAAMk/B,aACPx/B,IAAAA,cAAA,MAAIoB,UAAU,iBACT+pB,EAAStb,KAAI,CAACoD,EAA8BlD,IAGnC0yE,EAA8BniF,EAAO2S,EAASlD,EAFpDA,EAAQ0zE,IAA+BC,GACvC3zE,EAAQ0zE,IAA+BE,QAcrDC,EAAoBtjF,IACtB,MAAM,MAAEkF,EAAK,eAAEq+E,GAAmBvjF,EAClC,OAAIkF,EACOxF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKmgF,GAAiBr+E,EAAMs+E,YAErC,MAQLC,EAA2BzjF,IAC7B,MAAM,2BAAE0jF,EAA0B,sBAAEC,EAAqB,2BAAEC,GAA+B5jF,EAC1F,OAAI2jF,EAEIjkF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKsgF,GACLC,EAAsBp0E,KAAI,CAACs0E,EAAUp0E,IAClC/P,IAAAA,cAACA,IAAAA,SAAc,CAACgF,IAAK+K,GAChBo0E,EACAF,EAAsBl0E,EAAQ,IAAMm0E,MAOlD,MAQEE,EAAwBA,CAACz1E,EAAmB01E,KAErD,MAEMC,EAAsCp1E,SAAS6H,cAAc,cAE7DwtE,EAAmCD,MAAAA,OAAe,EAAfA,EAAiB9C,aAEpDD,EAAgB8C,EAND,EAKWE,MAAAA,EAAAA,EAJV,GAMhB9C,EAAgBvyE,SAAS6H,cAAc,uBACvCytE,EAAmBt1E,SAAS6H,cAAc,6BAC1C0tE,EAAiB91E,EAAWO,SAAS6H,cAAc,4BAA8B7H,SAAS6H,cAAc,uBAC1G0tE,GAAkBhD,GAAiB+C,EAC/Bz8E,EAAAA,GAASQ,WAAa2G,SAASggD,gBAAgBC,UAAYoyB,GAC3DkD,EAAej1E,UAAUgJ,IAAI,eAC7BisE,EAAexoE,aAAa,QAAS,QAAQuoE,EAAiBE,mBAE9DD,EAAej1E,UAAUiJ,OAAO,eAE7BgsE,IACH18E,EAAAA,GAASQ,WAAa2G,SAASggD,gBAAgBC,UAAYoyB,EAC3DkD,EAAej1E,UAAUgJ,IAAI,aAE7BisE,EAAej1E,UAAUiJ,OAAO,YAChCgsE,EAAej1E,UAAUiJ,OAAO,eAChCgsE,EAAeE,gBAAgB,YAkD3C,MAwGMC,EAA0BA,CAC5Bl3C,EACAm3C,EACAC,EACAC,IAEO/kF,IAAAA,aACH0tC,EAAWs3C,MACX,GACAt3C,EAAWu3C,YACXC,EAAgBx3C,EAAYm3C,EAAYC,EAAgBC,GACxDr3C,EAAWy3C,aAiCbD,EAAkBA,CACpB5kF,EACAukF,EACAC,EACAC,IAEID,EACO9kF,IAAAA,aAAmBM,EAAM8kF,UAAW,GAAIC,EAAWP,EAAgBC,GA/BrDzkF,CAAAA,IACzB,MAAM,SAAEglF,EAAQ,oBAAEC,EAAmB,wBAAEC,GAA4BllF,EACnE,OAAIglF,EAEItlF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAK8hF,GACNxlF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAK6hF,GACLD,EAASz1E,KAAI,CAAC41E,EAAS11E,IACpB/P,IAAAA,cAACA,IAAAA,SAAc,CAACgF,IAAK+K,GAAQ01E,OAM1C,MAkB0FC,CAAoBb,IAE9G,KAQLc,EAAiBrlF,IACnB,MAAM,SAAEglF,EAAQ,oBAAEC,EAAmB,wBAAEC,GAA4BllF,EACnE,OAAIglF,EAEItlF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAK8hF,GACNxlF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAK6hF,GACLD,EAASz1E,KAAI,CAAC41E,EAAS11E,IACpB/P,IAAAA,cAACA,IAAAA,SAAc,CAACgF,IAAK+K,GAAQ01E,OAM1C,MAULG,EAAsBA,CACxBtlF,EACA4nD,EACAtnD,KAEA,MAAM,SAAE0kF,GAAahlF,EACrB,OAAIglF,EAEItlF,IAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAU,2BACZpB,IAAAA,cAACgR,EAAAA,KAAI,CAAClF,IAAI,SAAS1K,UAAU,wBAAuB,aAAaR,EAAUilF,cAAe50C,SAAU,EAAG1vC,QAAS2mD,GAC3GtnD,EAAUklF,WAKpB,MASLT,EAAaA,CAAC/kF,EAAyBykF,KACzC,MAAM,iBAAEgB,EAAgB,eAAEjB,GAAmBxkF,EAC7C,OAAIwkF,IAAmBC,EACZ/kF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKqiF,GAAmBjB,GAEjC,MAQLkB,EAAe1lF,IACjB,MAAM,MAAEkF,EAAK,eAAEq+E,GAAmBvjF,EAClC,OAAIkF,EAEIxF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKmgF,GACN7jF,IAAAA,cAACgR,EAAAA,KAAI,CAAClF,IAAI,KAAK1K,UAAU,IACpBoE,EAAMygF,YACNzgF,EAAM0gF,YAKhB,MAGX,EAhP+G5lF,IAAQ,IAAA6lF,EACnH,MAAM,sBACFC,EAAqB,WACrBxiC,EAAU,wBACVyiC,EAAuB,cACvBC,EAAa,SACb33E,EAAQ,YACR43E,EAAW,kBACXC,EAAiB,eACjBC,EAAc,WACd5B,EAAU,kBACV6B,EAAiB,cACjBC,EAAa,qBACbC,EAAoB,iCACpBC,EAAgC,uBAChCC,EAAsB,mBACtBC,EAAkB,aAClBvnD,EAAY,UACZ5+B,GACAN,GACJ0mF,EAAAA,EAAAA,YAAU,KACF1mF,EAAMgD,OAAO2jF,iBAAmBl/E,EAAAA,GAASQ,WA7DrD,SAA2BoG,EAAmB01E,GAC1C77E,OAAOC,iBAAiB,UAAU,KAC9B27E,EAAsBz1E,EAAU01E,MAEpCD,EAAsBz1E,EAAU01E,GA2DxB6C,CAAkB5mF,EAAMqO,SAAUrO,EAAMuG,QAAQkD,IAAIzG,OAAO6jF,sBAEhE,CAAC7mF,IACJ,MAAOoF,EAAY0hF,IAAiB5xE,EAAAA,EAAAA,WAAkB,GAChDlJ,EAASA,KACX86E,GAAe1hF,IAEb2hF,EAAiBrnF,IAAAA,OAAa,OA1DxC,SAAyBsnF,EAA+Ch7E,GACpEtM,IAAAA,WAAgB,KAKZ,SAASunF,EAAmBxhF,GACxB,MAAMyhF,EAAUt4E,SAAS6H,cAAc,wCACnCuwE,EAAgBp6C,SAAYo6C,EAAgBp6C,QAAQz9B,SAAS1J,EAAMlC,SAAoB2jF,GACvFl7E,EAAOvG,GAMf,OAHIgC,EAAAA,GAASQ,WACT2G,SAASzG,iBAAiB,QAAS8+E,GAEhC,KACCx/E,EAAAA,GAASQ,WACT2G,SAAS3F,oBAAoB,QAASg+E,MAG/C,CAACD,EAAiBh7E,IAuCrBm7E,CAAgBJ,EAAgB/6E,GAChC,MAAMy4E,EAAmE,QAAnDoB,EAAG7lF,EAAMuG,QAAQiB,cAAc1D,eAAeulC,aAAK,IAAAw8C,OAAA,EAAhDA,EAAkDuB,eAC3E,OAAI/4E,EAEI3O,IAAAA,cAAC+Q,EAAAA,OAAMpP,OAAA+B,OAAA,GAAK0iF,GACPW,EAAqB,KAClB/mF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkjF,GACL7C,EAAwB2C,GACxBV,EAAYS,GACZ7C,EAAiB6C,IAGzBH,EACDtmF,IAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAU,2BAA2BmlF,GAC1C3B,EAAwB4B,EAAmB3B,EAAY8B,EAAe5B,GACvE/kF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKojF,GAAyBC,GAClCvnD,EACAl/B,EAAMgD,OAAOqkF,wBAA0BtE,EAAe/iF,GAAS8hF,EAAmB9hF,GAClFsjD,GAKT5jD,IAAAA,cAAC+Q,EAAAA,OAAMpP,OAAA+B,OAAA,GAAK0iF,GACPW,EAAqB,KAClB/mF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKkjF,GACLF,GAAqB3C,EAAwB2C,GAC7CD,GAAkBT,EAAYS,GAC9BA,GAAkB7C,EAAiB6C,IAG5CzmF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKojF,GAAyBC,GACnC/mF,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAKmjF,GACN7mF,IAAAA,cAACgR,EAAAA,KAAI,CAACxP,IAAK6lF,EAAgBjmF,UAAU,sBACjCpB,IAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAU,4BACZpB,IAAAA,cAACsF,EAAAA,OAAM,CACHlE,UAAWsE,EAAa,oCAAsC,qCAAoC,aACvF,SACXnE,QAAS+K,EAAM,gBACA5G,EACfurC,SAAU,GAETrwC,EAAUgnF,YAEf5nF,IAAAA,cAAA,OAAKoB,UAAU,iDAAiDklF,GAChEtmF,IAAAA,cAAA,OAAKoB,UAAU,6CACVulF,IAAkB5B,GAAoBM,EAAWsB,KAGzD9B,GAAcn/E,GAAcigF,EAAcd,GAC3C7kF,IAAAA,cAACgR,EAAAA,KAAI,CAAC5P,UAAU,qBACXyjF,GAAcn/E,GAAckgF,EAAoBf,EAAYv4E,EAAQ1L,KAI7EZ,IAAAA,cAACgR,EAAAA,KAAIrP,OAAA+B,OAAA,GAAK2iF,GACL7mD,EACAl/B,EAAMgD,OAAOqkF,wBAA0BtE,EAAe/iF,GAAS8hF,EAAmB9hF,GAClFsjD,sBCzWrB,IAAIikC,EAAY,EAAQ,MACpBC,EAAa,EAAQ,MACrBC,EAAU,EAAQ,MAClBC,EAAU,EAAQ,MAClBC,EAAU,EAAQ,MAStB,SAASC,EAAKC,GACZ,IAAIp4E,GAAS,EACTlO,EAAoB,MAAXsmF,EAAkB,EAAIA,EAAQtmF,OAG3C,IADAzB,KAAKgoF,UACIr4E,EAAQlO,GAAQ,CACvB,IAAIwmF,EAAQF,EAAQp4E,GACpB3P,KAAKinB,IAAIghE,EAAM,GAAIA,EAAM,KAK7BH,EAAKI,UAAUF,MAAQP,EACvBK,EAAKI,UAAkB,OAAIR,EAC3BI,EAAKI,UAAUpgE,IAAM6/D,EACrBG,EAAKI,UAAUC,IAAMP,EACrBE,EAAKI,UAAUjhE,IAAM4gE,EAErBO,EAAOC,QAAUP,kBC/BjB,IAAIQ,EAAiB,EAAQ,MACzBC,EAAkB,EAAQ,MAC1BC,EAAe,EAAQ,MACvBC,EAAe,EAAQ,MACvBC,EAAe,EAAQ,MAS3B,SAASC,EAAUZ,GACjB,IAAIp4E,GAAS,EACTlO,EAAoB,MAAXsmF,EAAkB,EAAIA,EAAQtmF,OAG3C,IADAzB,KAAKgoF,UACIr4E,EAAQlO,GAAQ,CACvB,IAAIwmF,EAAQF,EAAQp4E,GACpB3P,KAAKinB,IAAIghE,EAAM,GAAIA,EAAM,KAK7BU,EAAUT,UAAUF,MAAQM,EAC5BK,EAAUT,UAAkB,OAAIK,EAChCI,EAAUT,UAAUpgE,IAAM0gE,EAC1BG,EAAUT,UAAUC,IAAMM,EAC1BE,EAAUT,UAAUjhE,IAAMyhE,EAE1BN,EAAOC,QAAUM,kBC/BjB,IAIIC,EAJY,EAAQ,KAIdC,CAHC,EAAQ,MAGO,OAE1BT,EAAOC,QAAUO,kBCNjB,IAAIE,EAAgB,EAAQ,MACxBC,EAAiB,EAAQ,MACzBC,EAAc,EAAQ,MACtBC,EAAc,EAAQ,MACtBC,EAAc,EAAQ,MAS1B,SAASC,EAASpB,GAChB,IAAIp4E,GAAS,EACTlO,EAAoB,MAAXsmF,EAAkB,EAAIA,EAAQtmF,OAG3C,IADAzB,KAAKgoF,UACIr4E,EAAQlO,GAAQ,CACvB,IAAIwmF,EAAQF,EAAQp4E,GACpB3P,KAAKinB,IAAIghE,EAAM,GAAIA,EAAM,KAK7BkB,EAASjB,UAAUF,MAAQc,EAC3BK,EAASjB,UAAkB,OAAIa,EAC/BI,EAASjB,UAAUpgE,IAAMkhE,EACzBG,EAASjB,UAAUC,IAAMc,EACzBE,EAASjB,UAAUjhE,IAAMiiE,EAEzBd,EAAOC,QAAUc,kBC/BjB,IAGIC,EAHO,EAAQ,MAGDA,OAElBhB,EAAOC,QAAUe,YCejBhB,EAAOC,QAXP,SAAkBgB,EAAOC,GAKvB,IAJA,IAAI35E,GAAS,EACTlO,EAAkB,MAAT4nF,EAAgB,EAAIA,EAAM5nF,OACnCnB,EAASsuD,MAAMntD,KAEVkO,EAAQlO,GACfnB,EAAOqP,GAAS25E,EAASD,EAAM15E,GAAQA,EAAO05E,GAEhD,OAAO/oF,mBCjBT,IAAIipF,EAAK,EAAQ,MAoBjBnB,EAAOC,QAVP,SAAsBgB,EAAOzkF,GAE3B,IADA,IAAInD,EAAS4nF,EAAM5nF,OACZA,KACL,GAAI8nF,EAAGF,EAAM5nF,GAAQ,GAAImD,GACvB,OAAOnD,EAGX,OAAQ,mBCjBV,IAAI+nF,EAAW,EAAQ,MACnBC,EAAQ,EAAQ,MAsBpBrB,EAAOC,QAZP,SAAiBqB,EAAQC,GAMvB,IAHA,IAAIh6E,EAAQ,EACRlO,GAHJkoF,EAAOH,EAASG,EAAMD,IAGJjoF,OAED,MAAVioF,GAAkB/5E,EAAQlO,GAC/BioF,EAASA,EAAOD,EAAME,EAAKh6E,OAE7B,OAAQA,GAASA,GAASlO,EAAUioF,OAAS/lF,mBCpB/C,IAAIylF,EAAS,EAAQ,MACjBQ,EAAY,EAAQ,MACpBC,EAAiB,EAAQ,MAOzBC,EAAiBV,EAASA,EAAOW,iBAAcpmF,EAkBnDykF,EAAOC,QATP,SAAoBtiF,GAClB,OAAa,MAATA,OACepC,IAAVoC,EAdQ,qBADL,gBAiBJ+jF,GAAkBA,KAAkBvoF,OAAOwE,GAC/C6jF,EAAU7jF,GACV8jF,EAAe9jF,oBCxBrB,IAAIumD,EAAa,EAAQ,MACrB09B,EAAW,EAAQ,MACnBC,EAAW,EAAQ,MACnBC,EAAW,EAAQ,MASnBC,EAAe,8BAGfC,EAAYC,SAASnC,UACrBoC,EAAc/oF,OAAO2mF,UAGrBqC,EAAeH,EAAUnxE,SAGzBuxE,EAAiBF,EAAYE,eAG7BC,EAAaz+C,OAAO,IACtBu+C,EAAaG,KAAKF,GAAgBxyE,QAjBjB,sBAiBuC,QACvDA,QAAQ,yDAA0D,SAAW,KAmBhFowE,EAAOC,QARP,SAAsBtiF,GACpB,SAAKkkF,EAASlkF,IAAUikF,EAASjkF,MAGnBumD,EAAWvmD,GAAS0kF,EAAaN,GAChCQ,KAAKT,EAASnkF,qBC3C/B,IAAIqjF,EAAS,EAAQ,MACjBwB,EAAW,EAAQ,MACnBC,EAAU,EAAQ,MAClBC,EAAW,EAAQ,MAMnBC,EAAc3B,EAASA,EAAOlB,eAAYvkF,EAC1CqnF,EAAiBD,EAAcA,EAAY9xE,cAAWtV,EA0B1DykF,EAAOC,QAhBP,SAAS4C,EAAallF,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI8kF,EAAQ9kF,GAEV,OAAO6kF,EAAS7kF,EAAOklF,GAAgB,GAEzC,GAAIH,EAAS/kF,GACX,OAAOilF,EAAiBA,EAAeN,KAAK3kF,GAAS,GAEvD,IAAIzF,EAAUyF,EAAQ,GACtB,MAAkB,KAAVzF,GAAkB,EAAIyF,IA3BjB,SA2BwC,KAAOzF,mBCjC9D,IAAI4qF,EAAkB,EAAQ,MAG1BC,EAAc,OAelB/C,EAAOC,QANP,SAAkB+C,GAChB,OAAOA,EACHA,EAAOjoD,MAAM,EAAG+nD,EAAgBE,GAAU,GAAGpzE,QAAQmzE,EAAa,IAClEC,mBCfN,IAAIP,EAAU,EAAQ,MAClBQ,EAAQ,EAAQ,MAChBC,EAAe,EAAQ,MACvBryE,EAAW,EAAQ,MAiBvBmvE,EAAOC,QAPP,SAAkBtiF,EAAO2jF,GACvB,OAAImB,EAAQ9kF,GACHA,EAEFslF,EAAMtlF,EAAO2jF,GAAU,CAAC3jF,GAASulF,EAAaryE,EAASlT,qBCjBhE,IAGIwlF,EAHO,EAAQ,MAGG,sBAEtBnD,EAAOC,QAAUkD,kBCJjB,IAAIC,EAA8B,iBAAV,EAAAC,GAAsB,EAAAA,GAAU,EAAAA,EAAOlqF,SAAWA,QAAU,EAAAkqF,EAEpFrD,EAAOC,QAAUmD,kBCHjB,IAAIE,EAAY,EAAQ,MAiBxBtD,EAAOC,QAPP,SAAoB54E,EAAK7K,GACvB,IAAIxE,EAAOqP,EAAIk8E,SACf,OAAOD,EAAU9mF,GACbxE,EAAmB,iBAAPwE,EAAkB,SAAW,QACzCxE,EAAKqP,qBCdX,IAAIm8E,EAAe,EAAQ,MACvBC,EAAW,EAAQ,MAevBzD,EAAOC,QALP,SAAmBqB,EAAQ9kF,GACzB,IAAImB,EAAQ8lF,EAASnC,EAAQ9kF,GAC7B,OAAOgnF,EAAa7lF,GAASA,OAAQpC,mBCbvC,IAAIylF,EAAS,EAAQ,MAGjBkB,EAAc/oF,OAAO2mF,UAGrBsC,EAAiBF,EAAYE,eAO7BsB,EAAuBxB,EAAYrxE,SAGnC6wE,EAAiBV,EAASA,EAAOW,iBAAcpmF,EA6BnDykF,EAAOC,QApBP,SAAmBtiF,GACjB,IAAIgmF,EAAQvB,EAAeE,KAAK3kF,EAAO+jF,GACnCp+E,EAAM3F,EAAM+jF,GAEhB,IACE/jF,EAAM+jF,QAAkBnmF,EACxB,IAAIqoF,GAAW,EACf,MAAO/1E,IAET,IAAI3V,EAASwrF,EAAqBpB,KAAK3kF,GAQvC,OAPIimF,IACED,EACFhmF,EAAM+jF,GAAkBp+E,SAEjB3F,EAAM+jF,IAGVxpF,aC9BT8nF,EAAOC,QAJP,SAAkBqB,EAAQ9kF,GACxB,OAAiB,MAAV8kF,OAAiB/lF,EAAY+lF,EAAO9kF,oBCT7C,IAAIqnF,EAAe,EAAQ,MAc3B7D,EAAOC,QALP,WACEroF,KAAK2rF,SAAWM,EAAeA,EAAa,MAAQ,GACpDjsF,KAAK8W,KAAO,aCKdsxE,EAAOC,QANP,SAAoBzjF,GAClB,IAAItE,EAASN,KAAKmoF,IAAIvjF,WAAe5E,KAAK2rF,SAAS/mF,GAEnD,OADA5E,KAAK8W,MAAQxW,EAAS,EAAI,EACnBA,mBCbT,IAAI2rF,EAAe,EAAQ,MASvBzB,EAHcjpF,OAAO2mF,UAGQsC,eAoBjCpC,EAAOC,QATP,SAAiBzjF,GACf,IAAIxE,EAAOJ,KAAK2rF,SAChB,GAAIM,EAAc,CAChB,IAAI3rF,EAASF,EAAKwE,GAClB,MArBiB,8BAqBVtE,OAA4BqD,EAAYrD,EAEjD,OAAOkqF,EAAeE,KAAKtqF,EAAMwE,GAAOxE,EAAKwE,QAAOjB,mBC1BtD,IAAIsoF,EAAe,EAAQ,MAMvBzB,EAHcjpF,OAAO2mF,UAGQsC,eAgBjCpC,EAAOC,QALP,SAAiBzjF,GACf,IAAIxE,EAAOJ,KAAK2rF,SAChB,OAAOM,OAA8BtoF,IAAdvD,EAAKwE,GAAsB4lF,EAAeE,KAAKtqF,EAAMwE,oBCnB9E,IAAIqnF,EAAe,EAAQ,MAsB3B7D,EAAOC,QAPP,SAAiBzjF,EAAKmB,GACpB,IAAI3F,EAAOJ,KAAK2rF,SAGhB,OAFA3rF,KAAK8W,MAAQ9W,KAAKmoF,IAAIvjF,GAAO,EAAI,EACjCxE,EAAKwE,GAAQqnF,QAA0BtoF,IAAVoC,EAfV,4BAekDA,EAC9D/F,sBCnBT,IAAI6qF,EAAU,EAAQ,MAClBC,EAAW,EAAQ,MAGnBoB,EAAe,mDACfC,EAAgB,QAuBpB/D,EAAOC,QAbP,SAAetiF,EAAO2jF,GACpB,GAAImB,EAAQ9kF,GACV,OAAO,EAET,IAAIwkC,SAAcxkC,EAClB,QAAY,UAARwkC,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATxkC,IAAiB+kF,EAAS/kF,MAGvBomF,EAAcxB,KAAK5kF,KAAWmmF,EAAavB,KAAK5kF,IAC1C,MAAV2jF,GAAkB3jF,KAASxE,OAAOmoF,eCXvCtB,EAAOC,QAPP,SAAmBtiF,GACjB,IAAIwkC,SAAcxkC,EAClB,MAAgB,UAARwkC,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVxkC,EACU,OAAVA,mBCXP,IAIMqmF,EAJFb,EAAa,EAAQ,MAGrBc,GACED,EAAM,SAASE,KAAKf,GAAcA,EAAW/pF,MAAQ+pF,EAAW/pF,KAAK+qF,UAAY,KACvE,iBAAmBH,EAAO,GAc1ChE,EAAOC,QAJP,SAAkBmE,GAChB,QAASH,GAAeA,KAAcG,aCJxCpE,EAAOC,QALP,WACEroF,KAAK2rF,SAAW,GAChB3rF,KAAK8W,KAAO,mBCTd,IAAI21E,EAAe,EAAQ,MAMvBC,EAHa99B,MAAMs5B,UAGCwE,OA4BxBtE,EAAOC,QAjBP,SAAyBzjF,GACvB,IAAIxE,EAAOJ,KAAK2rF,SACZh8E,EAAQ88E,EAAarsF,EAAMwE,GAE/B,QAAI+K,EAAQ,KAIRA,GADYvP,EAAKqB,OAAS,EAE5BrB,EAAKusF,MAELD,EAAOhC,KAAKtqF,EAAMuP,EAAO,KAEzB3P,KAAK8W,MACA,oBC/BT,IAAI21E,EAAe,EAAQ,MAkB3BrE,EAAOC,QAPP,SAAsBzjF,GACpB,IAAIxE,EAAOJ,KAAK2rF,SACZh8E,EAAQ88E,EAAarsF,EAAMwE,GAE/B,OAAO+K,EAAQ,OAAIhM,EAAYvD,EAAKuP,GAAO,oBCf7C,IAAI88E,EAAe,EAAQ,MAe3BrE,EAAOC,QAJP,SAAsBzjF,GACpB,OAAO6nF,EAAazsF,KAAK2rF,SAAU/mF,IAAQ,mBCZ7C,IAAI6nF,EAAe,EAAQ,MAyB3BrE,EAAOC,QAbP,SAAsBzjF,EAAKmB,GACzB,IAAI3F,EAAOJ,KAAK2rF,SACZh8E,EAAQ88E,EAAarsF,EAAMwE,GAQ/B,OANI+K,EAAQ,KACR3P,KAAK8W,KACP1W,EAAKuX,KAAK,CAAC/S,EAAKmB,KAEhB3F,EAAKuP,GAAO,GAAK5J,EAEZ/F,sBCtBT,IAAI8nF,EAAO,EAAQ,MACfa,EAAY,EAAQ,MACpBC,EAAM,EAAQ,MAkBlBR,EAAOC,QATP,WACEroF,KAAK8W,KAAO,EACZ9W,KAAK2rF,SAAW,CACd,KAAQ,IAAI7D,EACZ,IAAO,IAAKc,GAAOD,GACnB,OAAU,IAAIb,oBChBlB,IAAI8E,EAAa,EAAQ,MAiBzBxE,EAAOC,QANP,SAAwBzjF,GACtB,IAAItE,EAASssF,EAAW5sF,KAAM4E,GAAa,OAAEA,GAE7C,OADA5E,KAAK8W,MAAQxW,EAAS,EAAI,EACnBA,mBCdT,IAAIssF,EAAa,EAAQ,MAezBxE,EAAOC,QAJP,SAAqBzjF,GACnB,OAAOgoF,EAAW5sF,KAAM4E,GAAKkjB,IAAIljB,oBCZnC,IAAIgoF,EAAa,EAAQ,MAezBxE,EAAOC,QAJP,SAAqBzjF,GACnB,OAAOgoF,EAAW5sF,KAAM4E,GAAKujF,IAAIvjF,oBCZnC,IAAIgoF,EAAa,EAAQ,MAqBzBxE,EAAOC,QATP,SAAqBzjF,EAAKmB,GACxB,IAAI3F,EAAOwsF,EAAW5sF,KAAM4E,GACxBkS,EAAO1W,EAAK0W,KAIhB,OAFA1W,EAAK6mB,IAAIriB,EAAKmB,GACd/F,KAAK8W,MAAQ1W,EAAK0W,MAAQA,EAAO,EAAI,EAC9B9W,sBClBT,IAAI6sF,EAAU,EAAQ,MAyBtBzE,EAAOC,QAZP,SAAuBmE,GACrB,IAAIlsF,EAASusF,EAAQL,GAAM,SAAS5nF,GAIlC,OAfmB,MAYfkoF,EAAMh2E,MACRg2E,EAAM9E,QAEDpjF,KAGLkoF,EAAQxsF,EAAOwsF,MACnB,OAAOxsF,mBCtBT,IAGI2rF,EAHY,EAAQ,KAGLpD,CAAUtnF,OAAQ,UAErC6mF,EAAOC,QAAU4D,YCJjB,IAOIH,EAPcvqF,OAAO2mF,UAOcjvE,SAavCmvE,EAAOC,QAJP,SAAwBtiF,GACtB,OAAO+lF,EAAqBpB,KAAK3kF,oBClBnC,IAAIylF,EAAa,EAAQ,MAGrBuB,EAA0B,iBAAR/1E,MAAoBA,MAAQA,KAAKzV,SAAWA,QAAUyV,KAGxEg2E,EAAOxB,GAAcuB,GAAY1C,SAAS,cAATA,GAErCjC,EAAOC,QAAU2E,kBCRjB,IAAIC,EAAgB,EAAQ,MAGxBC,EAAa,mGAGbC,EAAe,WASf7B,EAAe2B,GAAc,SAAS7B,GACxC,IAAI9qF,EAAS,GAOb,OAN6B,KAAzB8qF,EAAOgC,WAAW,IACpB9sF,EAAOqX,KAAK,IAEdyzE,EAAOpzE,QAAQk1E,GAAY,SAAS11E,EAAO61E,EAAQC,EAAOC,GACxDjtF,EAAOqX,KAAK21E,EAAQC,EAAUv1E,QAAQm1E,EAAc,MAASE,GAAU71E,MAElElX,KAGT8nF,EAAOC,QAAUiD,kBC1BjB,IAAIR,EAAW,EAAQ,MAoBvB1C,EAAOC,QARP,SAAetiF,GACb,GAAoB,iBAATA,GAAqB+kF,EAAS/kF,GACvC,OAAOA,EAET,IAAIzF,EAAUyF,EAAQ,GACtB,MAAkB,KAAVzF,GAAkB,EAAIyF,IAdjB,SAcwC,KAAOzF,aChB9D,IAGIiqF,EAHYF,SAASnC,UAGIjvE,SAqB7BmvE,EAAOC,QAZP,SAAkBmE,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAOjC,EAAaG,KAAK8B,GACzB,MAAOv2E,IACT,IACE,OAAQu2E,EAAO,GACf,MAAOv2E,KAEX,MAAO,cCrBT,IAAIu3E,EAAe,KAiBnBpF,EAAOC,QAPP,SAAyB+C,GAGvB,IAFA,IAAIz7E,EAAQy7E,EAAO3pF,OAEZkO,KAAW69E,EAAa7C,KAAKS,EAAOqC,OAAO99E,MAClD,OAAOA,mBCfT,IAAIs6E,EAAW,EAAQ,MACnBj5B,EAAM,EAAQ,MACd08B,EAAW,EAAQ,MAMnBC,EAAYr9B,KAAK5xB,IACjBkvD,EAAYt9B,KAAKvgB,IAqLrBq4C,EAAOC,QA7HP,SAAkBmE,EAAMqB,EAAM9X,GAC5B,IAAI+X,EACAC,EACAC,EACA1tF,EACA2tF,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAAR9B,EACT,MAAM,IAAI+B,UAzEQ,uBAmFpB,SAASC,EAAWC,GAClB,IAAIC,EAAOZ,EACPa,EAAUZ,EAKd,OAHAD,EAAWC,OAAWpqF,EACtBwqF,EAAiBM,EACjBnuF,EAASksF,EAAKoC,MAAMD,EAASD,GAI/B,SAASG,EAAYJ,GAMnB,OAJAN,EAAiBM,EAEjBR,EAAUz+E,WAAWs/E,EAAcjB,GAE5BO,EAAUI,EAAWC,GAAQnuF,EAatC,SAASyuF,EAAaN,GACpB,IAAIO,EAAoBP,EAAOP,EAM/B,YAAyBvqF,IAAjBuqF,GAA+Bc,GAAqBnB,GACzDmB,EAAoB,GAAOX,GANJI,EAAON,GAM8BH,EAGjE,SAASc,IACP,IAAIL,EAAOz9B,IACX,GAAI+9B,EAAaN,GACf,OAAOQ,EAAaR,GAGtBR,EAAUz+E,WAAWs/E,EA3BvB,SAAuBL,GACrB,IAEIS,EAAcrB,GAFMY,EAAOP,GAI/B,OAAOG,EACHT,EAAUsB,EAAalB,GAJDS,EAAON,IAK7Be,EAoB+BC,CAAcV,IAGnD,SAASQ,EAAaR,GAKpB,OAJAR,OAAUtqF,EAIN2qF,GAAYR,EACPU,EAAWC,IAEpBX,EAAWC,OAAWpqF,EACfrD,GAeT,SAAS8uF,IACP,IAAIX,EAAOz9B,IACPq+B,EAAaN,EAAaN,GAM9B,GAJAX,EAAW9jE,UACX+jE,EAAW/tF,KACXkuF,EAAeO,EAEXY,EAAY,CACd,QAAgB1rF,IAAZsqF,EACF,OAAOY,EAAYX,GAErB,GAAIG,EAIF,OAFA/+E,aAAa2+E,GACbA,EAAUz+E,WAAWs/E,EAAcjB,GAC5BW,EAAWN,GAMtB,YAHgBvqF,IAAZsqF,IACFA,EAAUz+E,WAAWs/E,EAAcjB,IAE9BvtF,EAIT,OA3GAutF,EAAOH,EAASG,IAAS,EACrB5D,EAASlU,KACXqY,IAAYrY,EAAQqY,QAEpBJ,GADAK,EAAS,YAAatY,GACH4X,EAAUD,EAAS3X,EAAQiY,UAAY,EAAGH,GAAQG,EACrEM,EAAW,aAAcvY,IAAYA,EAAQuY,SAAWA,GAoG1Dc,EAAUpiB,OApCV,gBACkBrpE,IAAZsqF,GACF3+E,aAAa2+E,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAUtqF,GAgCjDyrF,EAAUE,MA7BV,WACE,YAAmB3rF,IAAZsqF,EAAwB3tF,EAAS2uF,EAAaj+B,MA6BhDo+B,aCvJThH,EAAOC,QAJP,SAAYtiF,EAAOwpF,GACjB,OAAOxpF,IAAUwpF,GAAUxpF,GAAUA,GAASwpF,GAAUA,mBCjC1D,IAAIC,EAAU,EAAQ,MAgCtBpH,EAAOC,QALP,SAAaqB,EAAQC,EAAM8F,GACzB,IAAInvF,EAAmB,MAAVopF,OAAiB/lF,EAAY6rF,EAAQ9F,EAAQC,GAC1D,YAAkBhmF,IAAXrD,EAAuBmvF,EAAenvF,aCN/C,IAAIuqF,EAAUj8B,MAAMi8B,QAEpBzC,EAAOC,QAAUwC,kBCzBjB,IAAI6E,EAAa,EAAQ,MACrBzF,EAAW,EAAQ,MAmCvB7B,EAAOC,QAVP,SAAoBtiF,GAClB,IAAKkkF,EAASlkF,GACZ,OAAO,EAIT,IAAI2F,EAAMgkF,EAAW3pF,GACrB,MA5BY,qBA4BL2F,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,aCH/D08E,EAAOC,QALP,SAAkBtiF,GAChB,IAAIwkC,SAAcxkC,EAClB,OAAgB,MAATA,IAA0B,UAARwkC,GAA4B,YAARA,cCC/C69C,EAAOC,QAJP,SAAsBtiF,GACpB,OAAgB,MAATA,GAAiC,iBAATA,mBCzBjC,IAAI2pF,EAAa,EAAQ,MACrBC,EAAe,EAAQ,MA2B3BvH,EAAOC,QALP,SAAkBtiF,GAChB,MAAuB,iBAATA,GACX4pF,EAAa5pF,IArBF,mBAqBY2pF,EAAW3pF,oBCzBvC,IAAIojF,EAAW,EAAQ,MAiDvB,SAAS0D,EAAQL,EAAMoD,GACrB,GAAmB,mBAARpD,GAAmC,MAAZoD,GAAuC,mBAAZA,EAC3D,MAAM,IAAIrB,UAhDQ,uBAkDpB,IAAIsB,EAAW,WACb,IAAInB,EAAO1kE,UACPplB,EAAMgrF,EAAWA,EAAShB,MAAM5uF,KAAM0uF,GAAQA,EAAK,GACnD5B,EAAQ+C,EAAS/C,MAErB,GAAIA,EAAM3E,IAAIvjF,GACZ,OAAOkoF,EAAMhlE,IAAIljB,GAEnB,IAAItE,EAASksF,EAAKoC,MAAM5uF,KAAM0uF,GAE9B,OADAmB,EAAS/C,MAAQA,EAAM7lE,IAAIriB,EAAKtE,IAAWwsF,EACpCxsF,GAGT,OADAuvF,EAAS/C,MAAQ,IAAKD,EAAQiD,OAAS3G,GAChC0G,EAIThD,EAAQiD,MAAQ3G,EAEhBf,EAAOC,QAAUwE,kBCxEjB,IAAIG,EAAO,EAAQ,MAsBnB5E,EAAOC,QAJG,WACR,OAAO2E,EAAKj8B,KAAKC,uBCnBnB,IAAI++B,EAAW,EAAQ,MACnB9F,EAAW,EAAQ,MACnBa,EAAW,EAAQ,MAMnBkF,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAexjD,SA8CnBy7C,EAAOC,QArBP,SAAkBtiF,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI+kF,EAAS/kF,GACX,OA1CM,IA4CR,GAAIkkF,EAASlkF,GAAQ,CACnB,IAAIwpF,EAAgC,mBAAjBxpF,EAAMqqF,QAAwBrqF,EAAMqqF,UAAYrqF,EACnEA,EAAQkkF,EAASsF,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAATxpF,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQgqF,EAAShqF,GACjB,IAAIsqF,EAAWJ,EAAWtF,KAAK5kF,GAC/B,OAAQsqF,GAAYH,EAAUvF,KAAK5kF,GAC/BoqF,EAAapqF,EAAMo9B,MAAM,GAAIktD,EAAW,EAAI,GAC3CL,EAAWrF,KAAK5kF,GAvDb,KAuD6BA,mBC5DvC,IAAIklF,EAAe,EAAQ,MA2B3B7C,EAAOC,QAJP,SAAkBtiF,GAChB,OAAgB,MAATA,EAAgB,GAAKklF,EAAallF,oBCxB3C,IAGIqjF,EAHO,EAAQ,MAGDA,OAElBhB,EAAOC,QAAUe,kBCLjB,IAAIA,EAAS,EAAQ,MACjBQ,EAAY,EAAQ,MACpBC,EAAiB,EAAQ,MAOzBC,EAAiBV,EAASA,EAAOW,iBAAcpmF,EAkBnDykF,EAAOC,QATP,SAAoBtiF,GAClB,OAAa,MAATA,OACepC,IAAVoC,EAdQ,qBADL,gBAiBJ+jF,GAAkBA,KAAkBvoF,OAAOwE,GAC/C6jF,EAAU7jF,GACV8jF,EAAe9jF,oBCxBrB,IAAImlF,EAAkB,EAAQ,MAG1BC,EAAc,OAelB/C,EAAOC,QANP,SAAkB+C,GAChB,OAAOA,EACHA,EAAOjoD,MAAM,EAAG+nD,EAAgBE,GAAU,GAAGpzE,QAAQmzE,EAAa,IAClEC,mBCdN,IAAII,EAA8B,iBAAV,EAAAC,GAAsB,EAAAA,GAAU,EAAAA,EAAOlqF,SAAWA,QAAU,EAAAkqF,EAEpFrD,EAAOC,QAAUmD,kBCHjB,IAAIpC,EAAS,EAAQ,MAGjBkB,EAAc/oF,OAAO2mF,UAGrBsC,EAAiBF,EAAYE,eAO7BsB,EAAuBxB,EAAYrxE,SAGnC6wE,EAAiBV,EAASA,EAAOW,iBAAcpmF,EA6BnDykF,EAAOC,QApBP,SAAmBtiF,GACjB,IAAIgmF,EAAQvB,EAAeE,KAAK3kF,EAAO+jF,GACnCp+E,EAAM3F,EAAM+jF,GAEhB,IACE/jF,EAAM+jF,QAAkBnmF,EACxB,IAAIqoF,GAAW,EACf,MAAO/1E,IAET,IAAI3V,EAASwrF,EAAqBpB,KAAK3kF,GAQvC,OAPIimF,IACED,EACFhmF,EAAM+jF,GAAkBp+E,SAEjB3F,EAAM+jF,IAGVxpF,aCzCT,IAOIwrF,EAPcvqF,OAAO2mF,UAOcjvE,SAavCmvE,EAAOC,QAJP,SAAwBtiF,GACtB,OAAO+lF,EAAqBpB,KAAK3kF,oBClBnC,IAAIylF,EAAa,EAAQ,MAGrBuB,EAA0B,iBAAR/1E,MAAoBA,MAAQA,KAAKzV,SAAWA,QAAUyV,KAGxEg2E,EAAOxB,GAAcuB,GAAY1C,SAAS,cAATA,GAErCjC,EAAOC,QAAU2E,YCPjB,IAAIQ,EAAe,KAiBnBpF,EAAOC,QAPP,SAAyB+C,GAGvB,IAFA,IAAIz7E,EAAQy7E,EAAO3pF,OAEZkO,KAAW69E,EAAa7C,KAAKS,EAAOqC,OAAO99E,MAClD,OAAOA,mBCfT,IAAIs6E,EAAW,EAAQ,MACnBj5B,EAAM,EAAQ,MACd08B,EAAW,EAAQ,MAMnBC,EAAYr9B,KAAK5xB,IACjBkvD,EAAYt9B,KAAKvgB,IAqLrBq4C,EAAOC,QA7HP,SAAkBmE,EAAMqB,EAAM9X,GAC5B,IAAI+X,EACAC,EACAC,EACA1tF,EACA2tF,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAAR9B,EACT,MAAM,IAAI+B,UAzEQ,uBAmFpB,SAASC,EAAWC,GAClB,IAAIC,EAAOZ,EACPa,EAAUZ,EAKd,OAHAD,EAAWC,OAAWpqF,EACtBwqF,EAAiBM,EACjBnuF,EAASksF,EAAKoC,MAAMD,EAASD,GAI/B,SAASG,EAAYJ,GAMnB,OAJAN,EAAiBM,EAEjBR,EAAUz+E,WAAWs/E,EAAcjB,GAE5BO,EAAUI,EAAWC,GAAQnuF,EAatC,SAASyuF,EAAaN,GACpB,IAAIO,EAAoBP,EAAOP,EAM/B,YAAyBvqF,IAAjBuqF,GAA+Bc,GAAqBnB,GACzDmB,EAAoB,GAAOX,GANJI,EAAON,GAM8BH,EAGjE,SAASc,IACP,IAAIL,EAAOz9B,IACX,GAAI+9B,EAAaN,GACf,OAAOQ,EAAaR,GAGtBR,EAAUz+E,WAAWs/E,EA3BvB,SAAuBL,GACrB,IAEIS,EAAcrB,GAFMY,EAAOP,GAI/B,OAAOG,EACHT,EAAUsB,EAAalB,GAJDS,EAAON,IAK7Be,EAoB+BC,CAAcV,IAGnD,SAASQ,EAAaR,GAKpB,OAJAR,OAAUtqF,EAIN2qF,GAAYR,EACPU,EAAWC,IAEpBX,EAAWC,OAAWpqF,EACfrD,GAeT,SAAS8uF,IACP,IAAIX,EAAOz9B,IACPq+B,EAAaN,EAAaN,GAM9B,GAJAX,EAAW9jE,UACX+jE,EAAW/tF,KACXkuF,EAAeO,EAEXY,EAAY,CACd,QAAgB1rF,IAAZsqF,EACF,OAAOY,EAAYX,GAErB,GAAIG,EAIF,OAFA/+E,aAAa2+E,GACbA,EAAUz+E,WAAWs/E,EAAcjB,GAC5BW,EAAWN,GAMtB,YAHgBvqF,IAAZsqF,IACFA,EAAUz+E,WAAWs/E,EAAcjB,IAE9BvtF,EAIT,OA3GAutF,EAAOH,EAASG,IAAS,EACrB5D,EAASlU,KACXqY,IAAYrY,EAAQqY,QAEpBJ,GADAK,EAAS,YAAatY,GACH4X,EAAUD,EAAS3X,EAAQiY,UAAY,EAAGH,GAAQG,EACrEM,EAAW,aAAcvY,IAAYA,EAAQuY,SAAWA,GAoG1Dc,EAAUpiB,OApCV,gBACkBrpE,IAAZsqF,GACF3+E,aAAa2+E,GAEfE,EAAiB,EACjBL,EAAWI,EAAeH,EAAWE,OAAUtqF,GAgCjDyrF,EAAUE,MA7BV,WACE,YAAmB3rF,IAAZsqF,EAAwB3tF,EAAS2uF,EAAaj+B,MA6BhDo+B,aC7JThH,EAAOC,QALP,SAAkBtiF,GAChB,IAAIwkC,SAAcxkC,EAClB,OAAgB,MAATA,IAA0B,UAARwkC,GAA4B,YAARA,cCC/C69C,EAAOC,QAJP,SAAsBtiF,GACpB,OAAgB,MAATA,GAAiC,iBAATA,mBCzBjC,IAAI2pF,EAAa,EAAQ,MACrBC,EAAe,EAAQ,MA2B3BvH,EAAOC,QALP,SAAkBtiF,GAChB,MAAuB,iBAATA,GACX4pF,EAAa5pF,IArBF,mBAqBY2pF,EAAW3pF,oBCzBvC,IAAIinF,EAAO,EAAQ,MAsBnB5E,EAAOC,QAJG,WACR,OAAO2E,EAAKj8B,KAAKC,uBCnBnB,IAAI++B,EAAW,EAAQ,MACnB9F,EAAW,EAAQ,MACnBa,EAAW,EAAQ,MAMnBkF,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAexjD,SA8CnBy7C,EAAOC,QArBP,SAAkBtiF,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI+kF,EAAS/kF,GACX,OA1CM,IA4CR,GAAIkkF,EAASlkF,GAAQ,CACnB,IAAIwpF,EAAgC,mBAAjBxpF,EAAMqqF,QAAwBrqF,EAAMqqF,UAAYrqF,EACnEA,EAAQkkF,EAASsF,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAATxpF,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQgqF,EAAShqF,GACjB,IAAIsqF,EAAWJ,EAAWtF,KAAK5kF,GAC/B,OAAQsqF,GAAYH,EAAUvF,KAAK5kF,GAC/BoqF,EAAapqF,EAAMo9B,MAAM,GAAIktD,EAAW,EAAI,GAC3CL,EAAWrF,KAAK5kF,GAvDb,KAuD6BA","sources":["webpack://nile.commerce.online/./src/modules/custom-header/components/custom-header-preferred-store.tsx?bd75","webpack://nile.commerce.online/./src/modules/custom-header/components/logo.tsx?9b7d","webpack://nile.commerce.online/./src/modules/custom-header/components/nav-icon.tsx?1c24","webpack://nile.commerce.online/./src/modules/custom-header/custom-header.tsx?6e47","webpack://nile.commerce.online/./src/modules/custom-header/custom-header.view.tsx?4353","webpack://nile.commerce.online/./src/themes/nile-theme/views/components/product.component.tsx?e4c0","webpack://nile.commerce.online/./src/themes/nile-theme/views/components/promocode.component.tsx?490f","webpack://nile.commerce.online/./src/modules/carousel/carousel.tsx?80d4","webpack://nile.commerce.online/./src/modules/carousel/carousel.view.tsx?d82f","webpack://nile.commerce.online/./src/validate-cart.ts?cd50","webpack://nile.commerce.online/./src/Common/get-product.ts?0a21","webpack://nile.commerce.online/./src/modules/cart-icon/components/flyout-cart-line-items.tsx?f2c4","webpack://nile.commerce.online/./src/modules/cart-icon/utils/get-products-in-mini-cart.ts?3c15","webpack://nile.commerce.online/./src/modules/cart-icon/cart-icon.tsx?4ae8","webpack://nile.commerce.online/./src/modules/cart-icon/cart-icon.view.tsx?f9dd","webpack://nile.commerce.online/./src/modules/fabrikam/views/components/cartlineitem.component.tsx?eb8c","webpack://nile.commerce.online/./src/modules/fabrikam/views/components/promocode.component.tsx?d9d6","webpack://nile.commerce.online/./src/modules/header/components/header-preferred-store.tsx?ee9c","webpack://nile.commerce.online/./src/modules/header/components/logo.tsx?f27e","webpack://nile.commerce.online/./src/modules/header/components/nav-icon.tsx?2475","webpack://nile.commerce.online/./src/modules/header/header.tsx?e91a","webpack://nile.commerce.online/./src/modules/header/header.view.tsx?cf0f","webpack://nile.commerce.online/./src/modules/order-template-list/components/order-template-list.tsx?86c4","webpack://nile.commerce.online/./src/modules/order-template-list/components/orderTemplateList-status-message.tsx?183c","webpack://nile.commerce.online/./src/modules/order-template-list/components/create-order-template.tsx?ea38","webpack://nile.commerce.online/./src/modules/order-template-list/order-template-list.tsx?18d0","webpack://nile.commerce.online/./src/modules/order-template-list/order-template-list.view.tsx?103b","webpack://nile.commerce.online/./src/modules/order-template/components/add-line/spinner.tsx?b423","webpack://nile.commerce.online/./src/modules/order-template/components/add-line/add-line.tsx?5f8a","webpack://nile.commerce.online/./src/modules/order-template/components/add-line/dropdown.tsx?1cba","webpack://nile.commerce.online/./src/modules/order-template/components/add-line/not-found.tsx?392d","webpack://nile.commerce.online/./src/modules/order-template/components/common/order-template-quantity.tsx?99a1","webpack://nile.commerce.online/./src/modules/order-template/components/add-line/product-configuration.tsx?b256","webpack://nile.commerce.online/./src/modules/order-template/components/add-line/product-list.tsx?4284","webpack://nile.commerce.online/./src/modules/order-template/components/bulk-actions.tsx?dbe8","webpack://nile.commerce.online/./src/modules/order-template/components/order-template-actions.tsx?8136","webpack://nile.commerce.online/./src/modules/order-template/components/order-template-lines.tsx?3703","webpack://nile.commerce.online/./src/modules/order-template/components/order-template-lines-status-message.tsx?2986","webpack://nile.commerce.online/./src/modules/order-template/components/order-template-table-heading.tsx?665c","webpack://nile.commerce.online/./src/modules/order-template/order-template.tsx?4ecb","webpack://nile.commerce.online/./src/modules/order-template/order-template.view.tsx?a45e","webpack://nile.commerce.online/./src/modules/product-comparison-preview/product-comparison-preview.tsx?39f6","webpack://nile.commerce.online/./src/modules/product-comparison-preview/product-comparison-preview.view.tsx?28cb","webpack://nile.commerce.online/./src/modules/product-comparison/base/product-specification.tsx?75ed","webpack://nile.commerce.online/./src/modules/product-comparison/base/remove-from-comparison-button.tsx?1d8c","webpack://nile.commerce.online/./src/modules/product-comparison/product-comparison.tsx?4f74","webpack://nile.commerce.online/./src/modules/product-comparison/product-comparison.view.tsx?a0a9","webpack://nile.commerce.online/./src/modules/promo-banner/components/close-button.tsx?063b","webpack://nile.commerce.online/./src/modules/promo-banner/components/links.tsx?2587","webpack://nile.commerce.online/./src/modules/promo-banner/components/text.tsx?782b","webpack://nile.commerce.online/./src/modules/promo-banner/promo-banner.tsx?9ee9","webpack://nile.commerce.online/./src/modules/promo-banner/promo-banner.view.tsx?7f77","webpack://nile.commerce.online/./src/modules/quick-order-grid/components/add-to-list/add-to-cart-selected-items.tsx?de21","webpack://nile.commerce.online/./src/modules/quick-order-grid/components/quick-order-grid-actions.tsx?ca97","webpack://nile.commerce.online/./src/modules/quick-order-grid/components/quick-order-grid-drawer.tsx?8701","webpack://nile.commerce.online/./src/modules/quick-order-grid/components/quick-order-grid-form.tsx?5cbb","webpack://nile.commerce.online/./src/modules/quick-order-grid/components/quick-order-grid-product.ts?187e","webpack://nile.commerce.online/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-header-component.tsx?69b3","webpack://nile.commerce.online/./src/modules/quick-order-grid/components/quick-order-grid-table/components/quick-order-grid-table-row-component.tsx?cd92","webpack://nile.commerce.online/./src/modules/quick-order-grid/components/quick-order-grid-table/quick-order-grid-table-component.tsx?7cbc","webpack://nile.commerce.online/./src/modules/quick-order-grid/quick-order-grid.tsx?fddf","webpack://nile.commerce.online/./src/modules/quick-order-grid/components/utilities.ts?1806","webpack://nile.commerce.online/./src/modules/quick-order-grid/quick-order-grid.view.tsx?f941","webpack://nile.commerce.online/./src/modules/video-player/components/additional-content.tsx?b368","webpack://nile.commerce.online/./src/modules/video-player/video-player.tsx?53e5","webpack://nile.commerce.online/./src/modules/video-player/video-player.view.tsx?fedb","webpack://nile.commerce.online/./src/modules/wishlist-items/components/wishlist-items-dimensions.tsx?15c5","webpack://nile.commerce.online/./src/modules/wishlist-items/components/wishlist-item.tsx?d2da","webpack://nile.commerce.online/./src/modules/wishlist-items/components/wishlist-items-status-message.tsx?cdb3","webpack://nile.commerce.online/./src/modules/wishlist-items/wishlist-items.tsx?df8b","webpack://nile.commerce.online/./src/modules/wishlist-items/wishlist-items.view.tsx?4d80","webpack://nile.commerce.online/./src/modules/adventureworks/views/components/product.component.tsx?fd23","webpack://nile.commerce.online/./src/modules/header/utilities/mock-utilities.ts?d017","webpack://nile.commerce.online/./src/modules/adventureworks/views/header.view.tsx?9bd3","webpack://nile.commerce.online/./src/modules/adventureworks/views/search-result-container.view.tsx?6e86","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_Hash.js?c2a2","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_ListCache.js?4a31","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_Map.js?8f51","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_MapCache.js?1d32","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_Symbol.js?5057","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_arrayMap.js?dd5e","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_assocIndexOf.js?df47","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_baseGet.js?0b50","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_baseGetTag.js?9d90","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_baseIsNative.js?bcb3","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_baseToString.js?47e4","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_baseTrim.js?be0f","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_castPath.js?de97","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_coreJsData.js?71d7","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_freeGlobal.js?eec5","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_getMapData.js?20f5","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_getNative.js?8b5c","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_getRawTag.js?fe56","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_getValue.js?7d44","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_hashClear.js?f883","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_hashDelete.js?5cd5","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_hashGet.js?9693","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_hashHas.js?1e89","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_hashSet.js?7e93","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_isKey.js?bdb7","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_isKeyable.js?77a2","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_isMasked.js?c2fa","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_listCacheClear.js?aace","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_listCacheDelete.js?503a","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_listCacheGet.js?d5ae","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_listCacheHas.js?8490","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_listCacheSet.js?0dde","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_mapCacheClear.js?3e3e","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_mapCacheDelete.js?751a","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_mapCacheGet.js?aaba","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_mapCacheHas.js?d930","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_mapCacheSet.js?f665","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_memoizeCapped.js?78ed","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_nativeCreate.js?49d6","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_objectToString.js?3afc","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_root.js?f8d4","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_stringToPath.js?96f7","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_toKey.js?6736","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_toSource.js?9e71","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/_trimmedEndIndex.js?42ad","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/debounce.js?9026","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/eq.js?d44b","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/get.js?9af1","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/isArray.js?3358","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/isFunction.js?8815","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/isObject.js?232e","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/isObjectLike.js?baf2","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/isSymbol.js?a53e","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/memoize.js?39ba","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/now.js?eab7","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/toNumber.js?5542","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/order-template/node_modules/lodash/toString.js?c6d5","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/_Symbol.js?4a64","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/_baseGetTag.js?055d","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/_baseTrim.js?5cfa","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/_freeGlobal.js?8270","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/_getRawTag.js?3038","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/_objectToString.js?0c06","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/_root.js?1004","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/_trimmedEndIndex.js?702e","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/debounce.js?8ee2","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/isObject.js?11b1","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/isObjectLike.js?e8d6","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/isSymbol.js?77a7","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/now.js?8aa8","webpack://nile.commerce.online/./node_modules/@msdyn365-commerce-modules/quick-order-grid/node_modules/lodash/toNumber.js?11b8"],"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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ICustomHeaderData } from '../custom-header.data';\r\nimport { ICustomHeaderProps } from '../custom-header.props.autogenerated';\r\n\r\n/**\r\n * The header preferred store component.\r\n */\r\n@observer\r\nexport class HeaderPreferredStore extends React.PureComponent> {\r\n private readonly modalCloseButtonRef: React.RefObject = React.createRef();\r\n\r\n /**\r\n * Handle click on the store selector.\r\n * @returns : Promise void.\r\n */\r\n public handleClick = () => {\r\n return this._findPreferredStoreOnClick(this.props);\r\n };\r\n\r\n public render(): JSX.Element | undefined {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n },\r\n slots,\r\n resources\r\n } = this.props;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- slots can be undefined.\r\n if (ArrayExtensions.hasElements(slots?.storeSelector)) {\r\n const storeName =\r\n storeSelectorStateManager?.preferredStore && storeSelectorStateManager.preferredStore.StoreName\r\n ? storeSelectorStateManager.preferredStore.StoreName\r\n : resources.headerPreferredStoreText;\r\n\r\n return (\r\n
\r\n \r\n {storeName}\r\n \r\n {slots.storeSelector}\r\n
\r\n );\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private async _findPreferredStoreOnClick(props: ICustomHeaderProps): Promise {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n },\r\n modules\r\n } = props;\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n let storeSelectorId: string = '';\r\n if (modules && Object.keys(modules).length > 0 && ArrayExtensions.hasElements(modules.storeSelector)) {\r\n storeSelectorId = modules.storeSelector[0].id;\r\n }\r\n await storeSelectorStateManager\r\n .openDialog({\r\n id: storeSelectorId,\r\n showMapViewLink: true,\r\n parentElementRef: this.modalCloseButtonRef,\r\n onLocationSelected: orgUnitLocation => {\r\n return Promise.resolve();\r\n }\r\n })\r\n .catch((error: Error) => {\r\n if (props.telemetry) {\r\n props.telemetry.error(error.message);\r\n props.telemetry.debug('Unable to set preferred store');\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default HeaderPreferredStore;\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ILogoProps {\r\n image: Msdyn365.IImageData;\r\n gridSettings?: Msdyn365.IGridSettings;\r\n link?: ILinkData;\r\n className?: string;\r\n telemetryContent?: ITelemetryContent;\r\n requestContext: Msdyn365.IRequestContext;\r\n typeName?: string;\r\n}\r\n\r\nexport interface ILinkData {\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n linkText?: string;\r\n}\r\n\r\n/**\r\n *\r\n * Logo component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class Logo extends React.PureComponent {\r\n private readonly attributes?: Msdyn365.IDictionary;\r\n\r\n constructor(props: ILogoProps) {\r\n super(props);\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\r\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return
{this._renderLogo(this.props)}
;\r\n }\r\n\r\n private _renderLogo(config: ILogoProps): JSX.Element {\r\n if (config.link && config.link.linkUrl.destinationUrl) {\r\n return (\r\n \r\n {this._renderImage(config)}\r\n \r\n );\r\n }\r\n return this._renderImage(config);\r\n }\r\n\r\n private _renderImage(config: ILogoProps): JSX.Element {\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=132&h=28&m=6', w: 0, h: 0 },\r\n lg: { q: 'w=160&h=48&m=6', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Logo;\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 {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n ITelemetryContent,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { ICustomHeaderResources } from '../custom-header.props.autogenerated';\r\n\r\nexport interface INavIconProps {\r\n resources: ICustomHeaderResources;\r\n isExpanded: boolean;\r\n targetId: string;\r\n telemetryContent?: ITelemetryContent;\r\n toggleNavBar(): void;\r\n}\r\n\r\n/**\r\n *\r\n * NavIcon component.\r\n * @extends {React.PureComponent}\r\n */\r\n\r\n@observer\r\nexport class NavIcon extends React.PureComponent {\r\n private readonly attributes?: Msdyn365.IDictionary;\r\n\r\n constructor(props: INavIconProps) {\r\n super(props);\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.NavIcon);\r\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n\r\n public render(): JSX.Element {\r\n return (\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 { CartIconComponent, WishListIconComponent } from '@msdyn365-commerce/components';\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport { ErrorNotification, NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\r\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IModuleProps,\r\n INodeProps,\r\n ITelemetryContent,\r\n KeyCodes,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n onTelemetryClick,\r\n Popover,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed, observable, reaction } from 'mobx';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nimport { HeaderPreferredStore, Logo, NavIcon } from './components';\r\nimport { ICustomHeaderData } from './custom-header.data';\r\nimport { ICustomHeaderProps, ICustomHeaderResources, IMyAccountLinksData } from './custom-header.props.autogenerated';\r\nimport { GridSize } from '@msdyn365-commerce-modules/navigation-menu/src/modules/navigation-menu/navigation-menu';\r\n\r\nexport interface IHeaderState {\r\n mobileMenuCollapsed: boolean;\r\n signinPopoverOpen: boolean;\r\n hasSigninerror?: boolean;\r\n timeout: ReturnType | null;\r\n}\r\n\r\nexport interface IHeaderViewProps extends ICustomHeaderProps, IHeaderState {\r\n logo: React.ReactNode;\r\n wishListIconDesktop: React.ReactNode;\r\n wishListIconMobile: React.ReactNode;\r\n cartIcon: React.ReactNode;\r\n navIcon: React.ReactNode;\r\n className: string;\r\n menuBar: React.ReactNode[];\r\n search: React.ReactNode[];\r\n siteOptions: React.ReactNode[];\r\n HeaderTag: IModuleProps;\r\n HeaderContainer: INodeProps;\r\n MobileMenuContainer: INodeProps;\r\n MobileMenuHeader: React.ReactNode;\r\n MobileMenuBodyContainer: INodeProps;\r\n MobileMenuLinksContainer: INodeProps;\r\n HeaderTopBarContainer: INodeProps;\r\n Divider: INodeProps;\r\n\r\n AccountInfoDropdownParentContainer?: INodeProps;\r\n AccountInfoDropdownPopoverConentContainer?: INodeProps;\r\n accountInfoDropdownButton?: React.ReactNode;\r\n\r\n signOutLink?: React.ReactNode;\r\n signInLink?: React.ReactNode;\r\n accountLinks?: React.ReactNode[];\r\n preferredStore?: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * Header component.\r\n * @extends {React.PureComponent>}\r\n */\r\n@observer\r\nclass Header extends React.PureComponent, IHeaderState> {\r\n private readonly popOverRef: React.RefObject;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private cart: ICartState | undefined;\r\n\r\n @observable\r\n private viewport: GridSize;\r\n\r\n @computed public get displayName(): Readonly {\r\n const customer = this.props.data.accountInformation?.result;\r\n return customer ? customer.FirstName || customer.Name : undefined;\r\n }\r\n @computed get isMobile(): boolean {\r\n return this.viewport === 'xs' || this.viewport === 'sm';\r\n }\r\n @computed get accountPageUrl(): string {\r\n const {\r\n context: { actionContext }\r\n } = this.props;\r\n return MsDyn365.getUrlSync('account', actionContext) || '';\r\n }\r\n @computed get isAccountPage(): boolean {\r\n const {\r\n context: {\r\n request: {\r\n url: {\r\n requestUrl: { pathname }\r\n }\r\n }\r\n }\r\n } = this.props;\r\n return pathname.split('?')[0].includes(this.accountPageUrl);\r\n }\r\n\r\n public constructor(props: ICustomHeaderProps) {\r\n super(props);\r\n this.popOverRef = React.createRef();\r\n this._toggleNavbar = this._toggleNavbar.bind(this);\r\n this._togglePopover = this._togglePopover.bind(this);\r\n this._openPopover = this._openPopover.bind(this);\r\n this._closePopover = this._closePopover.bind(this);\r\n this._keydown = this._keydown.bind(this);\r\n this._handleMouseLeaveEvent = this._handleMouseLeaveEvent.bind(this);\r\n this.viewport =\r\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this.state = {\r\n mobileMenuCollapsed: true,\r\n signinPopoverOpen: false,\r\n hasSigninerror: false,\r\n timeout: null\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 }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.msdyn365Commerce.isBrowser) {\r\n window.addEventListener('keydown', this._keydown);\r\n }\r\n reaction(\r\n () => this.props.data.cart.result,\r\n () => {\r\n this.cart = this.props.data.cart.result;\r\n }\r\n );\r\n\r\n const {\r\n context: {\r\n request: { user }\r\n },\r\n resources: { signUpCustomerNotFoundTitle, signUpMultipleCustomerFoundTitle, closeNotificationLabel }\r\n } = this.props;\r\n\r\n const signinNotificationError = this._getSigninNotification(user, signUpMultipleCustomerFoundTitle, signUpCustomerNotFoundTitle);\r\n if (signinNotificationError !== undefined && this.state.hasSigninerror === false) {\r\n // For signup show simple error notification.\r\n NotificationsManager.instance().addNotification(new ErrorNotification(signinNotificationError, closeNotificationLabel));\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.msdyn365Commerce.isBrowser) {\r\n window.removeEventListener('keydown', this._keydown, false);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n id,\r\n typeName,\r\n data: { accountInformation, wishlists },\r\n context: {\r\n request: { user }\r\n },\r\n context,\r\n resources: { cartLabel, cartQtyLabel }\r\n } = this.props;\r\n const { logoLink, logoImage, shouldShowWishlistCount } = this.props.config;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- app config is generic\r\n const disableTooltip = this.props.context.app.config.disableTooltip || false;\r\n const headerToggleClass = this.state.mobileMenuCollapsed ? '' : 'ms-header-open';\r\n const headerClassName = classnames('ms-header', this.props.config.className, headerToggleClass);\r\n const navbarKey = 'header-nav-mobile';\r\n const customer = accountInformation && accountInformation.result;\r\n const cartIconSlot = this._getSlot('cartIcon');\r\n const menuBarSlot = this._getSlot('menuBar');\r\n const searchSlot = this._getSlot('search');\r\n let wishlistCount = 0;\r\n const siteOptionsSlot = this._getSlot('siteOptions');\r\n const preferredStoreSlot = this._getSlot('storeSelector');\r\n if (wishlists !== undefined) {\r\n if (\r\n !wishlists.result ||\r\n !ArrayExtensions.hasElements(wishlists.result) ||\r\n !wishlists.result[0].CommerceListLines ||\r\n !ArrayExtensions.hasElements(wishlists.result[0].CommerceListLines)\r\n ) {\r\n wishlistCount = 0;\r\n } else {\r\n wishlistCount = wishlists.result[0].CommerceListLines.length;\r\n }\r\n }\r\n const viewProps: IHeaderViewProps = {\r\n ...(this.props as ICustomHeaderProps),\r\n ...this.state,\r\n logo: (\r\n \r\n ),\r\n wishListIconDesktop: (\r\n \r\n ),\r\n wishListIconMobile: (\r\n \r\n ),\r\n cartIcon: ArrayExtensions.hasElements(cartIconSlot) ? (\r\n cartIconSlot[0]\r\n ) : (\r\n \r\n ),\r\n navIcon: (\r\n \r\n ),\r\n menuBar: ArrayExtensions.hasElements(menuBarSlot) ? menuBarSlot : [],\r\n search: ArrayExtensions.hasElements(searchSlot) ? searchSlot : [],\r\n siteOptions: ArrayExtensions.hasElements(siteOptionsSlot) ? siteOptionsSlot : [],\r\n className: headerClassName,\r\n HeaderTag: {\r\n moduleProps: this.props,\r\n className: classnames(headerClassName),\r\n tag: 'header'\r\n },\r\n HeaderContainer: {\r\n className: classnames('ms-header__container')\r\n },\r\n HeaderTopBarContainer: {\r\n className: classnames('ms-header__topbar')\r\n },\r\n Divider: {\r\n className: classnames('ms-header__divider')\r\n },\r\n MobileMenuContainer: {\r\n tag: Modal,\r\n id: navbarKey,\r\n className: 'ms-header__mobile-hamburger',\r\n isOpen: !this.state.mobileMenuCollapsed,\r\n wrapClassName: 'ms-header__modal',\r\n toggle: this._toggleNavbar\r\n },\r\n MobileMenuHeader: ,\r\n MobileMenuBodyContainer: {\r\n tag: ModalBody,\r\n className: 'ms-header__mobile-hamburger-menu-body'\r\n },\r\n MobileMenuLinksContainer: {\r\n className: 'ms-header__mobile-hamburger-menu-links'\r\n },\r\n AccountInfoDropdownParentContainer: {\r\n className: 'ms-header__account-info'\r\n },\r\n AccountInfoDropdownPopoverConentContainer:\r\n customer && this.displayName\r\n ? {\r\n tag: Popover,\r\n id: 'myprofilePopover',\r\n className: 'ms-header__account-info-content',\r\n placement: 'bottom',\r\n isOpen: this.state.signinPopoverOpen,\r\n target: this.popOverRef,\r\n toggle: this._togglePopover\r\n }\r\n : undefined,\r\n signInLink: this._getSigninButton(customer, user, this.props.resources),\r\n signOutLink: this._getSignOutButton(customer, user, this.props.resources),\r\n accountInfoDropdownButton: this._getAccountInfoDropdownButton(customer),\r\n accountLinks: this._getAccountLinks(customer),\r\n preferredStore: ArrayExtensions.hasElements(preferredStoreSlot) && \r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n /**\r\n * Handle link text change.\r\n * @param linkIndex - Link Index.\r\n * @returns : Void.\r\n */\r\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\r\n if (this.props.config.myAccountLinks?.[linkIndex]) {\r\n this.props.config.myAccountLinks[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n\r\n /**\r\n * Get the slot.\r\n * @param slotName - Name of the slot.\r\n * @returns The slot.\r\n */\r\n private _getSlot(slotName: string): React.ReactNode[] | null {\r\n const { slots } = this.props;\r\n // @ts-ignore\r\n return (slots && slots[slotName] && slots[slotName].length && slots[slotName]) || null;\r\n }\r\n\r\n /**\r\n * Renders the sign in button.\r\n * @param customer - Customer object.\r\n * @param user - Request context user.\r\n * @param resources - Resources.\r\n * @returns React Node.\r\n */\r\n private _getSigninButton(\r\n customer: Customer | undefined,\r\n user: MsDyn365.IRequestContextUser | undefined,\r\n resources: ICustomHeaderResources\r\n ): React.ReactNode | undefined {\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n return (\r\n !customer && (\r\n \r\n \r\n {resources.signInLinkText}\r\n \r\n \r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Renders the sign out button.\r\n * @param customer - Customer object.\r\n * @param user - Request context user.\r\n * @param resources - Resources.\r\n * @returns React Node.\r\n */\r\n private _getSignOutButton(\r\n customer: Customer | undefined,\r\n user: MsDyn365.IRequestContextUser | undefined,\r\n resources: ICustomHeaderResources\r\n ): React.ReactNode | undefined {\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignOut);\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n return (\r\n customer &&\r\n this.displayName && (\r\n \r\n \r\n {resources.signOutLinkText}\r\n \r\n \r\n )\r\n );\r\n }\r\n\r\n private _getSigninNotification(\r\n user: MsDyn365.IRequestContextUser | undefined,\r\n signUpMultipleCustomerFoundTitle: string,\r\n signUpCustomerNotFoundTitle: string\r\n ): string | undefined {\r\n const { signUpCustomerNotFound, signUpMultipleCustomerFound } = this.props.config;\r\n const notFoundError = 'Microsoft_Dynamics_Commerce_Runtime_CustomerNotFound_WhenAutoLinking';\r\n const multipleAccountError = 'Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountsFoundWithSameEmailAddress';\r\n\r\n if (user?.retailServerErrorCode === notFoundError) {\r\n return signUpCustomerNotFound !== undefined ? signUpCustomerNotFound : signUpCustomerNotFoundTitle;\r\n } else if (user?.retailServerErrorCode === multipleAccountError) {\r\n return signUpMultipleCustomerFound !== undefined ? signUpMultipleCustomerFound : signUpMultipleCustomerFoundTitle;\r\n }\r\n return undefined;\r\n }\r\n\r\n private _getAccountInfoDropdownButton(customer: Customer | undefined): React.ReactNode | undefined {\r\n const {\r\n config: { showMenuOnHover }\r\n } = this.props;\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.MyProfile);\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n const showOnHover = !this.isMobile && showMenuOnHover; //&& !this.isAccountPage\r\n if (showOnHover) {\r\n return (\r\n customer &&\r\n this.displayName && (\r\n }\r\n href={showOnHover ? this.accountPageUrl : '#'}\r\n className='ms-header__profile-button'\r\n aria-describedby='myprofilePopover'\r\n onMouseEnter={showOnHover ? this._openPopover : undefined}\r\n onClick={!showOnHover ? this._togglePopover : undefined}\r\n color='link'\r\n aria-label={this.displayName}\r\n aria-expanded={this.state.signinPopoverOpen}\r\n {...attributes}\r\n >\r\n {this.displayName}\r\n \r\n )\r\n );\r\n }\r\n return (\r\n customer &&\r\n this.displayName && (\r\n }\r\n className='ms-header__profile-button'\r\n aria-describedby='myprofilePopover'\r\n onClick={this._togglePopover}\r\n color='link'\r\n aria-label={this.displayName}\r\n aria-expanded={this.state.signinPopoverOpen}\r\n {...attributes}\r\n >\r\n {this.displayName}\r\n \r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Handles the mouseover and mouseleave functions of the menu hover functionality\r\n * @private\r\n */\r\n private _handleMouseLeaveEvent() {\r\n const {\r\n config: { menuHideTimeout }\r\n } = this.props;\r\n const classToWatch = 'ms-header__account-info'; // Main nav class\r\n const timeToCloseMenu = (menuHideTimeout && menuHideTimeout * 1000) || 0; // From props\r\n\r\n // traverse the nodes that are currently being hovered and find out if they are part of the nav system\r\n const traverseNodes = () => {\r\n const nodeList = document.querySelectorAll(':hover');\r\n let node = nodeList[nodeList.length - 1];\r\n let isInMenu = false;\r\n while (node.parentNode) {\r\n node = node.parentNode as Element;\r\n if (node.classList?.contains(classToWatch)) {\r\n isInMenu = true;\r\n break;\r\n }\r\n }\r\n // If they are not part of the nav system - Close the menu\r\n if (!isInMenu) {\r\n // If a timeout time is set, then close the menu after a delay\r\n if (timeToCloseMenu > 0) {\r\n let timeout = this.state.timeout;\r\n if (!timeout) {\r\n timeout = setTimeout(() => {\r\n this._closePopover();\r\n document.removeEventListener('mousemove', traverseNodes);\r\n }, timeToCloseMenu);\r\n this.setState({ timeout });\r\n }\r\n } else {\r\n // Otherwise - close the menu instantly\r\n this._closePopover();\r\n document.removeEventListener('mousemove', traverseNodes);\r\n }\r\n } else {\r\n // Logic to cancel closing the menu if it is still open and the mouse moves back in\r\n if (timeToCloseMenu > 0) {\r\n const timeout = this.state.timeout;\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n this.setState({ timeout: null });\r\n }\r\n }\r\n }\r\n };\r\n document.removeEventListener('mousemove', traverseNodes);\r\n document.addEventListener('mousemove', traverseNodes);\r\n }\r\n\r\n private _getAccountLinks(customer: Customer | undefined): React.ReactNode[] | undefined {\r\n const { myAccountLinks } = this.props.config;\r\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\r\n if (!customer || !this.displayName || !myAccountLinks || !ArrayExtensions.hasElements(myAccountLinks)) {\r\n return undefined;\r\n }\r\n return myAccountLinks.map((cta: IMyAccountLinksData, index: number) => {\r\n payLoad.contentAction.etext = cta.linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n const editableLink: MsDyn365.ILinksData = {\r\n ariaLabel: cta.ariaLabel,\r\n className: 'ms-signin-info__account-link-button',\r\n linkText: cta.linkText,\r\n linkUrl: cta.linkUrl.destinationUrl,\r\n openInNewTab: cta.openInNewTab,\r\n role: 'link',\r\n additionalProperties: attributes\r\n };\r\n\r\n return (\r\n \r\n );\r\n });\r\n }\r\n\r\n private _toggleNavbar(): void {\r\n this.setState({\r\n mobileMenuCollapsed: !this.state.mobileMenuCollapsed\r\n });\r\n }\r\n\r\n private _togglePopover(): void {\r\n this.setState({\r\n signinPopoverOpen: !this.state.signinPopoverOpen\r\n });\r\n }\r\n private _closePopover(): void {\r\n this.setState({\r\n signinPopoverOpen: false\r\n });\r\n }\r\n private _openPopover(): void {\r\n this.setState(\r\n {\r\n signinPopoverOpen: true\r\n },\r\n () => this._handleMouseLeaveEvent()\r\n );\r\n }\r\n\r\n private _keydown(event: KeyboardEvent): void {\r\n if (event.keyCode === KeyCodes.Escape) {\r\n this.setState({ mobileMenuCollapsed: true });\r\n }\r\n }\r\n}\r\n\r\nexport default Header;\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 { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IHeaderViewProps } from './custom-header';\r\nimport { AsyncResult } from '@msdyn365-commerce/core';\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nconst headerView: React.FC = props => {\r\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n {props.navIcon}\r\n {props.logo}\r\n {_renderReactFragment(props.search)}\r\n {props.preferredStore}\r\n {_renderAccountBlock(props, false)}\r\n {props.wishListIconDesktop}\r\n \r\n {props.cartIcon}\r\n {_renderReactFragment(props.siteOptions)}\r\n \r\n {_renderCollapseMenu(props)}\r\n {_renderReactFragment(props.menuBar)}\r\n \r\n \r\n );\r\n};\r\n\r\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\r\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\r\n return (\r\n \r\n \r\n {_renderReactFragment(props.search)}\r\n {_renderMobileAccountBlock(props, true)}\r\n {props.wishListIconMobile}\r\n {props.siteOptions}\r\n \r\n \r\n {_renderReactFragment(props.menuBar)}\r\n \r\n );\r\n}\r\n\r\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\r\n const customer = accountInformation && accountInformation.result;\r\n return <>{customer ? customer.FirstName || customer.Name : ''};\r\n};\r\n\r\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n 'ms-header__drawer',\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n\r\n if (accountLinks) {\r\n return (\r\n \r\n
\r\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\r\n {signOutLink}\r\n
\r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\r\n const {\r\n AccountInfoDropdownParentContainer,\r\n AccountInfoDropdownPopoverConentContainer,\r\n accountInfoDropdownButton,\r\n signOutLink,\r\n signInLink,\r\n accountLinks\r\n } = props;\r\n\r\n if (AccountInfoDropdownParentContainer) {\r\n const accountClassName = classnames(\r\n AccountInfoDropdownParentContainer.className,\r\n renderForMobile ? 'account-mobile' : 'account-desktop'\r\n );\r\n if (AccountInfoDropdownPopoverConentContainer) {\r\n return (\r\n \r\n {accountInfoDropdownButton}\r\n \r\n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\r\n {signOutLink}\r\n \r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n \r\n );\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n <>\r\n {items && items.length > 0\r\n ? items.map((slot: React.ReactNode, index: number) => {\r\n return {slot};\r\n })\r\n : null}\r\n \r\n );\r\n}\r\n\r\nexport default headerView;\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 { IProductsDimensionsAvailabilities } from '@msdyn365-commerce/commerce-entities';\r\nimport MsDyn365, {\r\n IComponent,\r\n IComponentProps,\r\n ICoreContext,\r\n IGridSettings,\r\n IImageData,\r\n IImageProps,\r\n IImageSettings,\r\n Image,\r\n IRequestContext,\r\n msdyn365Commerce\r\n} from '@msdyn365-commerce/core';\r\nimport {\r\n AttributeSwatch,\r\n ProductDimension,\r\n ProductPrice,\r\n ProductSearchResult,\r\n ProductDimensionAvailabilitySearchCriteria\r\n} from '@msdyn365-commerce/retail-proxy';\r\nimport {\r\n ArrayExtensions,\r\n checkIfShouldDisplayAsSwatch,\r\n convertDimensionTypeToProductDimensionType,\r\n Dictionary,\r\n DimensionSwatchDisplayTypes,\r\n DimensionTypes,\r\n generateImageUrl,\r\n getProductPageUrlSync,\r\n IDimensionsApp,\r\n StringExtensions\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n format,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n ITelemetryContent,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n RatingComponent,\r\n ProductComponentSwatchComponent,\r\n ISwatchItem,\r\n IPriceComponentResources,\r\n PriceComponent\r\n} from '@msdyn365-commerce/components';\r\nimport {\r\n getDimensionValuesWithEstimatedAvailabilitiesAsync,\r\n getEstimatedAvailabilityAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport {\r\n createInventoryAvailabilitySearchCriteria,\r\n getInventoryLevelCodeFromDimensionValue\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\n\r\nexport interface IProductComponentProps extends IComponentProps<{ product?: ProductSearchResult }> {\r\n className?: string;\r\n imageSettings?: IImageSettings;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n ratingAriaLabel?: string;\r\n ratingCountAriaLabel?: string;\r\n allowBack?: boolean;\r\n telemetryContent?: ITelemetryContent;\r\n quickViewButton?: React.ReactNode;\r\n inventoryLabel?: string;\r\n isPriceMinMaxEnabled?: boolean;\r\n priceResources?: IPriceComponentResources;\r\n dimensionAvailabilities?: IProductsDimensionsAvailabilities[];\r\n}\r\n\r\nexport interface IProductComponent extends IComponent {}\r\n\r\n// const _strikeSVG =\r\n// \"url('data:image/svg+xml;utf8,\" +\r\n// \"\" +\r\n// \"')\";\r\n\r\ninterface IVariantList {\r\n masterProductId: number;\r\n productId: number;\r\n color: string;\r\n isDefault: boolean;\r\n size: string;\r\n inventoryCode: string;\r\n}\r\n\r\n// const _strikeSVG =\r\n// \"url('data:image/svg+xml;utf8,\" +\r\n// \"\" +\r\n// \"')\";\r\n\r\nconst PriceComponentActions = {};\r\nconst _swatchContainerClassName = 'msc-swatch-container__item-';\r\nconst ProductCard: React.FC = ({\r\n data,\r\n context,\r\n imageSettings,\r\n savingsText,\r\n freePriceText,\r\n originalPriceText,\r\n currentPriceText,\r\n ratingAriaLabel,\r\n ratingCountAriaLabel,\r\n allowBack,\r\n typeName,\r\n id,\r\n telemetryContent,\r\n quickViewButton,\r\n inventoryLabel,\r\n isPriceMinMaxEnabled,\r\n priceResources,\r\n dimensionAvailabilities\r\n}) => {\r\n const product = data.product;\r\n /**\r\n * Updates the product url link to product details page.\r\n * @param productDetailsPageUrl - Product page url.\r\n * @param coreContext - Context of the module using the component.\r\n * @param queryString - Querystring to be added to the URL.\r\n * @returns The update product page url.\r\n */\r\n function updateProductUrl(productDetailsPageUrl: string, coreContext: ICoreContext, queryString: string): string {\r\n const sourceUrl = new URL(productDetailsPageUrl, coreContext.request.apiSettings.baseUrl);\r\n if (sourceUrl.search) {\r\n sourceUrl.search += `&${queryString}`;\r\n } else {\r\n sourceUrl.search += queryString;\r\n }\r\n\r\n const updatedUrl = new URL(sourceUrl.href);\r\n return updatedUrl.pathname + sourceUrl.search;\r\n }\r\n\r\n /**\r\n * Gets the product page url from the default swatch selected.\r\n * @param productData - Product card to be rendered.\r\n * @returns The default color swatch selected if any.\r\n */\r\n function getDefaultColorSwatchSelected(productData?: ProductSearchResult): AttributeSwatch | null {\r\n if (!productData || !productData.AttributeValues) {\r\n return null;\r\n }\r\n\r\n const colorAttribute = productData.AttributeValues.find(\r\n attributeValue => attributeValue.KeyName?.toLocaleLowerCase() === DimensionTypes.color\r\n );\r\n if (!ArrayExtensions.hasElements(colorAttribute?.Swatches)) {\r\n return null;\r\n }\r\n\r\n const defaultSwatch = colorAttribute!.Swatches.find(item => item.IsDefault === true) ?? colorAttribute!.Swatches[0];\r\n return defaultSwatch;\r\n }\r\n\r\n /**\r\n * Gets the product image from the default swatch selected.\r\n * @param coreContext - Context of the module using the component.\r\n * @param productData - Product card to be rendered.\r\n * @returns The product card image url.\r\n */\r\n function getProductImageUrlFromDefaultColorSwatch(coreContext: ICoreContext, productData?: ProductSearchResult): string | undefined {\r\n const siteContext = coreContext as ICoreContext;\r\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\r\n if (dimensionToPreSelectInProductCard === DimensionTypes.none) {\r\n return productData?.PrimaryImageUrl;\r\n }\r\n const defaultSwatch = getDefaultColorSwatchSelected(productData);\r\n return defaultSwatch && ArrayExtensions.hasElements(defaultSwatch.ProductImageUrls)\r\n ? generateImageUrl(defaultSwatch.ProductImageUrls[0], coreContext.request.apiSettings)\r\n : productData?.PrimaryImageUrl;\r\n }\r\n\r\n /**\r\n * Gets the product page url from the default swatch selected.\r\n * @param coreContext - Context of the module using the component.\r\n * @param productUrl - Product page url for the product card.\r\n * @param productData - Product card to be rendered.\r\n * @returns The product card image url.\r\n */\r\n function getProductPageUrlFromDefaultSwatch(\r\n coreContext: ICoreContext,\r\n productUrl: string,\r\n productData?: ProductSearchResult\r\n ): string | undefined {\r\n const siteContext = coreContext as ICoreContext;\r\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\r\n if (dimensionToPreSelectInProductCard === DimensionTypes.none) {\r\n return productUrl;\r\n }\r\n const defaultSwatch = getDefaultColorSwatchSelected(productData);\r\n if (!defaultSwatch || !defaultSwatch.SwatchValue) {\r\n return productUrl;\r\n }\r\n\r\n const queryString = `color=${defaultSwatch.SwatchValue}`;\r\n return updateProductUrl(productUrl, coreContext, queryString);\r\n }\r\n\r\n let productUrl = product ? getProductPageUrlSync(product.Name ?? '', product.RecordId, context.actionContext, undefined) : '';\r\n if (allowBack && productUrl) {\r\n productUrl = updateProductUrl(productUrl, context, 'back=true');\r\n }\r\n const productImageUrlFromSwatch = getProductImageUrlFromDefaultColorSwatch(context, product) ?? product?.PrimaryImageUrl;\r\n const productPageUrlFromSwatch = getProductPageUrlFromDefaultSwatch(context, productUrl, product) ?? productUrl;\r\n const [productPageUrl, setProductPageUrl] = useState(productPageUrlFromSwatch);\r\n const [productImageUrl, setProductImageUrl] = useState(productImageUrlFromSwatch);\r\n const [selectedSwatchItems] = useState(new Dictionary());\r\n const [dimensAvails, setDimensAvails] = useState([]);\r\n const [isInit, setIsInit] = useState(false);\r\n const [isUnhide, setIsUnhide] = useState(false);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment,@typescript-eslint/no-unsafe-member-access -- app context is generic\r\n const enableStockCheck = context.app.config.enableStockCheck;\r\n\r\n const updateSizeAvailabilityHandler = (e: Event) => {\r\n const el = e.target as HTMLElement;\r\n const alt = el.getAttribute('alt');\r\n // console.log('alt found:', alt)\r\n if (alt) {\r\n updateSizeAvailability(alt);\r\n }\r\n };\r\n\r\n function updateSizeAvailability(colorName?: string, init?: boolean) {\r\n const sizeClass = `.msc-swatch-container__item-5637144596-size`;\r\n const colorClass = `.msc-swatch-container__item-5637144595-color`;\r\n let activeColor = '';\r\n if ((!colorName || colorName === '') && init) {\r\n let colName = dimensAvails.find(col => (col.isDefault = true));\r\n let colSwatch = document.querySelector(`${colorClass}-${colName?.color}-${colName?.productId}`);\r\n if (colSwatch) {\r\n // (colSwatch as HTMLAnchorElement).click();\r\n updateSizeAvailability(colName?.color);\r\n }\r\n }\r\n if (colorName) {\r\n activeColor = colorName;\r\n } else {\r\n return;\r\n }\r\n\r\n //get all unique sizes\r\n\r\n let uniqueSizes = dimensAvails.map(item => item.size).filter((value, index, self) => self.indexOf(value) === index);\r\n let sizes = dimensAvails.filter(d => d.color === activeColor);\r\n let newsizes: IVariantList[] = [];\r\n\r\n // console.log('us' , uniqueSizes)\r\n\r\n for (let i = 0; i < uniqueSizes.length; i++) {\r\n let found = false;\r\n\r\n for (let j = 0; j < sizes.length; j++) {\r\n if (sizes[j].size.match(uniqueSizes[i])) found = true;\r\n\r\n // console.log('checking ', uniqueSizes[i] , ' against ', sizes[j].size, ' and result is ', found)\r\n }\r\n\r\n // console.log('end result is ' , uniqueSizes[i] , ' was found? :', found )\r\n if (!found) {\r\n let n: IVariantList = { ...sizes[0] };\r\n n.inventoryCode = '';\r\n n.isDefault = false;\r\n n.size = uniqueSizes[i];\r\n n.color = activeColor;\r\n newsizes.push(n);\r\n }\r\n }\r\n\r\n sizes.push(...newsizes);\r\n\r\n sizes.map(s => {\r\n let selector = `${sizeClass}-${s.size}-${s.masterProductId}`;\r\n let el = document.querySelector(selector.replace('+', '\\\\+').replace('/', '\\\\/'));\r\n if (el) {\r\n //update size\r\n if (s.inventoryCode === 'OOS') {\r\n (el as HTMLElement).style.opacity = '';\r\n // console.log(`adding selector: ${activeColor} ${s.size} (${s.masterProductId} )to ${s.inventoryCode}`)\r\n el.classList.add('msc-swatch-container__item__disabled');\r\n } else if (s.inventoryCode === 'AVAIL') {\r\n (el as HTMLElement).style.opacity = '';\r\n // console.log(`removing selector: ${activeColor} ${s.size} (${s.masterProductId} )to ${s.inventoryCode}`)\r\n el.classList.remove('msc-swatch-container__item__disabled');\r\n } else {\r\n el.classList.add('msc-swatch-container__item__disabled');\r\n (el as HTMLElement).style.opacity = '0';\r\n }\r\n\r\n if (!isUnhide && el.parentElement?.style.opacity !== '1') {\r\n setIsUnhide(true);\r\n el.parentElement!.style.opacity = '1';\r\n }\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Updates the product page and Image url based on swatch selected.\r\n * @param coreContext - Context of the caller.\r\n * @param swatchItem - Dimension swatch selected.\r\n */\r\n const updatePageAndImageUrl = React.useCallback(\r\n (coreContext: ICoreContext, swatchItem: ISwatchItem) => {\r\n const dimensionType = swatchItem.dimensionType;\r\n selectedSwatchItems.setValue(dimensionType, swatchItem);\r\n if (StringExtensions.isNullOrWhitespace(swatchItem.value)) {\r\n return;\r\n }\r\n const queryString = `${dimensionType}=${swatchItem.value}`;\r\n let productPageUrlWithSwatch = '';\r\n if (productPageUrl.includes(dimensionType)) {\r\n const newUrl = new URL(productPageUrl, coreContext.request.apiSettings.baseUrl);\r\n newUrl.searchParams.delete(dimensionType);\r\n productPageUrlWithSwatch = updateProductUrl(newUrl.toString(), context, queryString);\r\n } else {\r\n productPageUrlWithSwatch = updateProductUrl(productPageUrl, context, queryString);\r\n }\r\n setProductPageUrl(productPageUrlWithSwatch);\r\n if (dimensionType === DimensionTypes.color) {\r\n const swatchProductImageUrl = ArrayExtensions.hasElements(swatchItem.productImageUrls)\r\n ? swatchItem.productImageUrls[0]\r\n : undefined;\r\n const newImageUrl = generateImageUrl(swatchProductImageUrl, coreContext.request.apiSettings);\r\n setProductImageUrl(newImageUrl);\r\n } else {\r\n if (\r\n productPageUrlWithSwatch &&\r\n ((window.location.href as string).includes('shop') || (window.location.href as string).includes('search'))\r\n ) {\r\n window.location.href = productPageUrlWithSwatch;\r\n }\r\n }\r\n },\r\n [selectedSwatchItems, context, productPageUrl]\r\n );\r\n\r\n if (!product) {\r\n return null;\r\n }\r\n\r\n const swatchItems = ArrayExtensions.validValues(\r\n product.AttributeValues?.map(item => {\r\n const dimensionTypeValue = item.KeyName?.toLocaleLowerCase() ?? '';\r\n const shouldDisplayAsSwatch = checkIfShouldDisplayAsSwatch(\r\n dimensionTypeValue as DimensionTypes,\r\n context as ICoreContext,\r\n DimensionSwatchDisplayTypes.productCard\r\n );\r\n if (!shouldDisplayAsSwatch) {\r\n return null;\r\n }\r\n const siteContext = context as ICoreContext;\r\n const dimensionToPreSelectInProductCard = siteContext.app.config.dimensionToPreSelectInProductCard;\r\n const dimensionType = dimensionTypeValue as DimensionTypes;\r\n const swatchFlatMap: AttributeSwatch[] = [];\r\n const swatches =\r\n item.Swatches?.map(swatchItem => {\r\n swatchFlatMap.push(swatchItem);\r\n // let isEnabled = (enableStockCheck &&\r\n // dimensionTypeValue === DimensionTypes.color && dimensionAvailabilities?.find(\r\n // dimensionAvailability => dimensionAvailability.value === (swatchItem.SwatchValue ?? '')\r\n // ))\r\n // console.log('item', item)\r\n // ||\r\n // ( enableStockCheck &&\r\n // dimensionTypeValue === DimensionTypes.size && dimensAvails?.filter(prod => prod.productId === item.).find(avail => avail.size === swatchItem.SwatchValue))\r\n return {\r\n // attribute record id - dimension type value(size or color) - swatch value(M or nut)\r\n // change this to use the product\r\n\r\n itemId: `${item.RecordId ?? ''}-${dimensionTypeValue}-${swatchItem.SwatchValue ?? ''}-${\r\n dimensionTypeValue === DimensionTypes.color\r\n ? dimensAvails?.find(avails => avails?.color === swatchItem.SwatchValue)?.productId\r\n : dimensAvails?.find(avails => avails?.size === swatchItem.SwatchValue)?.masterProductId\r\n }`,\r\n // itemId: `${item.RecordId ?? ''}-${dimensionTypeValue}-${swatchItem.SwatchValue ?? ''}`,\r\n\r\n value: swatchItem.SwatchValue ?? '',\r\n // onClick: (dimensionTypeValue === DimensionTypes.color ? updateSizeAvailability(swatchItem.SwatchValue): null) ,\r\n dimensionType,\r\n colorHexCode: swatchItem.SwatchColorHexCode,\r\n imageUrl: swatchItem.SwatchImageUrl,\r\n productImageUrls: swatchItem.ProductImageUrls,\r\n isDefault: swatchItem.IsDefault,\r\n isDisabled:\r\n enableStockCheck &&\r\n dimensionAvailabilities?.find(\r\n dimensionAvailability => dimensionAvailability.value === (swatchItem.SwatchValue ?? '')\r\n )?.isDisabled,\r\n key: swatchItem.SwatchValue\r\n };\r\n }) ?? [];\r\n if (MsDyn365.isBrowser) {\r\n if (swatches) {\r\n swatches.forEach(sw => {\r\n const productSelector = `.${_swatchContainerClassName}${sw.itemId\r\n .replace('+', '\\\\+')\r\n .replace('.', '\\\\.')\r\n .replace(' ', '.')\r\n .replace('/', '\\\\/')} `;\r\n // console.log('prodsel: ', productSelector)\r\n const node = document.querySelector(productSelector);\r\n if (node) {\r\n const attributeSwatch = swatchFlatMap.find(sfm => sfm.SwatchValue === sw.value);\r\n const swatchTitleReplacement = attributeSwatch?.ExtensionProperties?.find(e => e.Key === 'swatch-title')?.Value\r\n ?.StringValue;\r\n if (swatchTitleReplacement) {\r\n node.setAttribute('title', swatchTitleReplacement);\r\n }\r\n\r\n // todo attach click event handler instad of doing this\r\n\r\n let ex = dimensAvails.find(avails => avails?.color === sw.value)?.productId;\r\n if (ex) {\r\n let swsel = `.msc-swatch-container__item-${sw.itemId\r\n .replace('+', '\\\\+')\r\n .replace('.', '\\\\.')\r\n .replace(' ', '.')\r\n .replace('/', '\\\\/')}`;\r\n // console.log('swsel: ', swsel)\r\n let swel = document.querySelector(swsel);\r\n if (swel) {\r\n // console.log('found' + swel);\r\n swel.addEventListener('click', updateSizeAvailabilityHandler);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n if (\r\n dimensionToPreSelectInProductCard !== DimensionTypes.none &&\r\n ArrayExtensions.hasElements(swatches) &&\r\n !swatches.some(swatch => swatch.isDefault) &&\r\n dimensionType === DimensionTypes.color\r\n ) {\r\n swatches[0].isDefault = true;\r\n }\r\n return { recordId: item.RecordId, swatches };\r\n })\r\n );\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', telemetryContent!, '', product.RecordId.toString());\r\n\r\n const attribute = getTelemetryAttributes(telemetryContent!, payLoad);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- -- Do not need type check for appsettings\r\n const isUnitOfMeasureEnabled = context.app.config && context.app.config.unitOfMeasureDisplayType === 'buyboxAndBrowse';\r\n\r\n /**\r\n * Gets the react node for product unit of measure display.\r\n * @param unitOfMeasure - DefaultUnitOfMeasure property from product.\r\n * @returns The node representing markup for unit of measure component.\r\n */\r\n function renderProductUnitOfMeasure(unitOfMeasure?: string): JSX.Element | null {\r\n if (!unitOfMeasure) {\r\n return null;\r\n }\r\n return (\r\n
\r\n {unitOfMeasure}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Gets the react node for product availability.\r\n * @param inventoryAvailabilityLabel - The product information.\r\n * @returns The node representing markup for product availability.\r\n */\r\n function renderProductAvailability(inventoryAvailabilityLabel: string | undefined): JSX.Element | null {\r\n if (!inventoryAvailabilityLabel || inventoryAvailabilityLabel === '') {\r\n return null;\r\n }\r\n\r\n return (\r\n
\r\n {inventoryAvailabilityLabel}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Gets the react node for product dimension as swatch.\r\n * @returns The node representing markup for unit of measure component.\r\n */\r\n function renderProductDimensions(): JSX.Element | null {\r\n if (!ArrayExtensions.hasElements(swatchItems)) {\r\n return null;\r\n }\r\n return (\r\n
\r\n {swatchItems.map(item => {\r\n return (\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Gets the react node for product description.\r\n * @param quickview - Quick view node.\r\n * @param item - Product id to de displayed in quickview.\r\n * @returns The product quickview component.\r\n */\r\n function renderQuickView(quickview: React.ReactNode, item?: number): JSX.Element | undefined {\r\n if (quickview === null) {\r\n return undefined;\r\n }\r\n const selectedDimensions: ProductDimension[] = selectedSwatchItems.getValues().map(swatches => {\r\n return {\r\n DimensionTypeValue: convertDimensionTypeToProductDimensionType(swatches.dimensionType),\r\n DimensionValue: {\r\n RecordId: 0,\r\n Value: swatches.value\r\n }\r\n };\r\n });\r\n return React.cloneElement(quickview as React.ReactElement, { selectedProductId: item, selectedDimensions });\r\n }\r\n\r\n /**\r\n * Gets the aria label for rating.\r\n * @param rating - Product rating.\r\n * @param ratingAriaLabelText - Aria label format for rating.\r\n * @returns The product rating aria label string.\r\n */\r\n function getRatingAriaLabel(rating?: number, ratingAriaLabelText?: string): string {\r\n if (rating && ratingAriaLabelText) {\r\n const roundedRating = rating.toFixed(2);\r\n return format(ratingAriaLabelText || '', roundedRating, '5');\r\n }\r\n return '';\r\n }\r\n\r\n /**\r\n * Gets the aria label for review count.\r\n * @param reviewCount - Product review count.\r\n * @param ratingCountAriaLabelText - Aria label format for review.\r\n * @returns The product review count aria label string.\r\n */\r\n function getReviewAriaLabel(reviewCount?: number, ratingCountAriaLabelText?: string): string {\r\n if (reviewCount && ratingCountAriaLabelText) {\r\n return format(ratingCountAriaLabelText || '', reviewCount);\r\n }\r\n return '';\r\n }\r\n\r\n /**\r\n * Gets the aria label string for product that includes product name with its price and rating.\r\n * @param name - Product name.\r\n * @param price - Product price.\r\n * @param rating - Product rating.\r\n * @param ratingAriaLabelText - Rating aria label text.\r\n * @param reviewCount - Product review count.\r\n * @param ratingCountAriaLabelText - Number of ratings.\r\n * @returns The aria label string for the product card.\r\n */\r\n function renderLabel(\r\n name?: string,\r\n price?: string,\r\n rating?: number,\r\n ratingAriaLabelText?: string,\r\n reviewCount?: number,\r\n ratingCountAriaLabelText?: string\r\n ): string {\r\n const reviewCountArialableText = getReviewAriaLabel(reviewCount, ratingCountAriaLabelText ?? '');\r\n return `${name ?? ''} ${price ?? ''} ${getRatingAriaLabel(rating, ratingAriaLabelText)}${\r\n reviewCountArialableText ? ` ${reviewCountArialableText}` : ''\r\n }`;\r\n }\r\n\r\n /**\r\n * Gets the react component for product rating.\r\n * @param productCardimageSettings - Module image settings for product card.\r\n * @param gridSettings - Grid settings defined in theme.\r\n * @param imageUrl - Image url.\r\n * @param fallbackImageUrl - Fallback url for imge.\r\n * @param altText - Image Alt text.\r\n * @param requestContext - Request context using the component.\r\n * @returns React component for product image.\r\n */\r\n function renderProductPlacementImage(\r\n productCardimageSettings?: IImageSettings,\r\n gridSettings?: IGridSettings,\r\n imageUrl?: string,\r\n fallbackImageUrl?: string,\r\n altText?: string,\r\n requestContext?: IRequestContext\r\n ): JSX.Element | null {\r\n if (!gridSettings || !productCardimageSettings) {\r\n return null;\r\n }\r\n const image: IImageData = {\r\n src: imageUrl || fallbackImageUrl,\r\n altText: altText ? altText : '',\r\n fallBackSrc: fallbackImageUrl\r\n };\r\n const imageProps: IImageProps = { gridSettings };\r\n imageProps.gridSettings = gridSettings;\r\n imageProps.imageSettings = productCardimageSettings;\r\n imageProps.imageSettings.cropFocalRegion = true;\r\n return ;\r\n }\r\n\r\n /**\r\n * Gets the react component for product rating.\r\n * @param coreContext - Context of the module using the component.\r\n * @param moduleTypeName - Module type name.\r\n * @param moduleId - Module id using the component.\r\n * @param basePrice - Product base price.\r\n * @param adjustedPrice - Product adjusted price.\r\n * @param maxVariantPrice - Product variant max price.\r\n * @param minVariantPrice - Product variant min price.\r\n * @param savingsPriceResourceText - Product price saving text.\r\n * @param freePriceResourceText - Product price free text.\r\n * @param originalPriceResourceText - Product price original text.\r\n * @param currentPriceResourceText - Product price current text.\r\n * @returns React component for Product price.\r\n */\r\n function renderPrice(\r\n coreContext: ICoreContext,\r\n moduleTypeName: string,\r\n moduleId: string,\r\n basePrice?: number,\r\n adjustedPrice?: number,\r\n maxVariantPrice?: number,\r\n minVariantPrice?: number,\r\n savingsPriceResourceText?: string,\r\n freePriceResourceText?: string,\r\n originalPriceResourceText?: string,\r\n currentPriceResourceText?: string\r\n ): JSX.Element | null {\r\n const price: ProductPrice = {\r\n BasePrice: basePrice,\r\n AdjustedPrice: adjustedPrice,\r\n CustomerContextualPrice: adjustedPrice,\r\n MaxVariantPrice: maxVariantPrice ? maxVariantPrice : adjustedPrice,\r\n MinVariantPrice: minVariantPrice ? minVariantPrice : adjustedPrice\r\n };\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Gets the react node for product description.\r\n * @param description - Product description.\r\n * @returns The product description component.\r\n */\r\n function renderDescription(description?: string): JSX.Element | null {\r\n return

{description}

;\r\n }\r\n\r\n /**\r\n * Gets the react component for product rating.\r\n * @param coreContext - Context of the module using the component.\r\n * @param moduleTypeName - Module type name.\r\n * @param moduleId - Module id using the component.\r\n * @param avgRating - Average rating.\r\n * @param totalRatings - Total rating.\r\n * @param ariaLabel - Aria label for rating.\r\n * @returns React component for Product rating.\r\n */\r\n function renderRating(\r\n coreContext: ICoreContext,\r\n moduleTypeName: string,\r\n moduleId: string,\r\n avgRating?: number,\r\n totalRatings?: number,\r\n ariaLabel?: string\r\n ): JSX.Element | null {\r\n if (!avgRating) {\r\n return null;\r\n }\r\n\r\n const numberRatings = totalRatings?.toString() || undefined;\r\n const ratingAriaLabelText = getRatingAriaLabel(avgRating, ariaLabel);\r\n const ratingCountAriaLabelText = getReviewAriaLabel(Number(numberRatings), ratingCountAriaLabel);\r\n\r\n return (\r\n \r\n );\r\n }\r\n let prodNeUrl = productPageUrl;\r\n\r\n const getDimensionAvail = async () => {\r\n // const shippingInventoryConfiguration = createInventoryAvailabilitySearchCriteria(context, [], true, undefined, undefined);\r\n const searchCriteria: ProductDimensionAvailabilitySearchCriteria = {\r\n RequestedDimensionTypeValues: [1],\r\n MatchingDimensionValues: undefined,\r\n DefaultWarehouseOnly: true,\r\n // FilterByChannelFulfillmentGroup: shippingInventoryConfiguration.FilterByChannelFulfillmentGroup,\r\n // DeliveryModeTypeFilterValue: shippingInventoryConfiguration.DeliveryModeTypeFilterValue,\r\n CatalogId: 0\r\n };\r\n const colorSearchCriteria: ProductDimensionAvailabilitySearchCriteria = { ...searchCriteria, RequestedDimensionTypeValues: [3] };\r\n\r\n const variantList: IVariantList[] = [];\r\n '';\r\n getDimensionValuesWithEstimatedAvailabilitiesAsync(\r\n { callerContext: context.actionContext },\r\n data.product?.RecordId || 0,\r\n searchCriteria\r\n ).then(async res => {\r\n // console.log(res);\r\n\r\n let sizeRes = await getDimensionValuesWithEstimatedAvailabilitiesAsync(\r\n { callerContext: context.actionContext },\r\n data.product?.RecordId || 0,\r\n colorSearchCriteria\r\n );\r\n\r\n res.map(dim => {\r\n const searchCriteria2 = createInventoryAvailabilitySearchCriteria(\r\n context.actionContext,\r\n dim.ProductIds ? ArrayExtensions.unique(dim.ProductIds) : [],\r\n true\r\n );\r\n\r\n getEstimatedAvailabilityAsync({ callerContext: context.actionContext }, searchCriteria2)\r\n .then(res2 => {\r\n res2.AggregatedProductInventoryAvailabilities?.map(inv => {\r\n let code = getInventoryLevelCodeFromDimensionValue(\r\n {\r\n DimensionTypeValue: dim.DimensionTypeValue,\r\n DimensionValue: dim.DimensionValue,\r\n ProductIds: [inv.ProductId!],\r\n TotalAvailableInventoryLevelLabel: inv.TotalAvailableInventoryLevelLabel,\r\n TotalAvailableInventoryLevelCode: inv.TotalAvailableInventoryLevelCode,\r\n PhysicalAvailableInventoryLevelLabel: inv.PhysicalAvailableInventoryLevelLabel,\r\n PhysicalAvailableInventoryLevelCode: inv.PhysicalAvailableInventoryLevelCode\r\n },\r\n context.app.config.inventoryLevel\r\n );\r\n // console.log('code: ', code)\r\n const variant: IVariantList = {\r\n masterProductId: data.product?.MasterProductId || 0,\r\n productId: inv.ProductId || 0,\r\n color: dim.DimensionValue?.Value || '',\r\n size: sizeRes.filter(s => s.ProductIds?.find(p => p === inv.ProductId || 0))[0].DimensionValue?.Value || '',\r\n isDefault:\r\n swatchItems\r\n .find(\r\n swatch =>\r\n // todo get color attribute rec id\r\n swatch.recordId === 5637144595\r\n )\r\n ?.swatches.find(swatch => swatch.value === dim.DimensionValue?.Value)?.isDefault || false,\r\n inventoryCode: code as string\r\n };\r\n variantList.push(variant);\r\n });\r\n })\r\n .then(() => {\r\n setDimensAvails(variantList);\r\n });\r\n });\r\n });\r\n return variantList;\r\n };\r\n\r\n React.useEffect(() => {\r\n getDimensionAvail();\r\n }, []);\r\n React.useEffect(() => {\r\n if (!isInit && MsDyn365.isBrowser && swatchItems.length && swatchItems[0].swatches[0]) {\r\n const sw = swatchItems[0].swatches[0];\r\n let swsel = `.msc-swatch-container__item-${sw.itemId\r\n .replace('+', '\\\\+')\r\n .replace('.', '\\\\.')\r\n .replace(' ', '.')}`;\r\n if (swsel.includes('undefined')) {\r\n getDimensionAvail();\r\n } else {\r\n let swel = document.querySelector(swsel);\r\n if (swel) {\r\n setIsInit(true);\r\n setTimeout(() => {\r\n swel!.click();\r\n }, 2000);\r\n }\r\n }\r\n }\r\n }, [swatchItems]);\r\n return (\r\n <>\r\n
\r\n {quickViewButton && renderQuickView(quickViewButton, product.RecordId)}\r\n \r\n {renderProductPlacementImage(\r\n imageSettings,\r\n context.request.gridSettings,\r\n productImageUrl,\r\n product.PrimaryImageUrl,\r\n product.Name,\r\n context.actionContext.requestContext\r\n )}\r\n \r\n
\r\n \r\n

{product.Name}

\r\n \r\n
\r\n \r\n {`${product.ItemId}`}\r\n \r\n {renderPrice(\r\n context,\r\n typeName,\r\n id,\r\n product.BasePrice,\r\n product.Price,\r\n product.MaxVariantPrice,\r\n product.MinVariantPrice,\r\n savingsText,\r\n freePriceText,\r\n originalPriceText,\r\n currentPriceText\r\n )}\r\n {isUnitOfMeasureEnabled && renderProductUnitOfMeasure(product.DefaultUnitOfMeasure)}\r\n {renderDescription(product.Description)}\r\n {!context.app.config.hideRating &&\r\n renderRating(context, typeName, id, product.AverageRating, product.TotalRatings, ratingAriaLabel)}\r\n {renderProductAvailability(inventoryLabel)}\r\n
\r\n\r\n {renderProductDimensions()}\r\n \r\n );\r\n};\r\n\r\nexport const ProductComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride<\r\n IProductComponent\r\n>('Product', { component: ProductCard, ...PriceComponentActions });\r\n\r\nexport default ProductComponent;\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 { PriceComponent } from '@msdyn365-commerce/components';\r\nimport { 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 { Button, format, getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\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 /**\r\n * The telemetry content\r\n */\r\n telemetryContent?: ITelemetryContent;\r\n promoCodeApplyCallback?(): void;\r\n}\r\n\r\ninterface IPromoCodeState {\r\n isCollapseOpen: boolean;\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.Component {\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: IPromoCodeProps, state: IPromoCodeState) {\r\n super(props);\r\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\r\n this.state = {\r\n isCollapseOpen: false,\r\n promoCodeInputValue: '',\r\n error: '',\r\n canApply: false\r\n };\r\n }\r\n\r\n public shouldComponentUpdate(nextProps: IPromoCodeProps, nextState: IPromoCodeState): boolean {\r\n if (this.state === nextState && this.props.data === nextProps.data) {\r\n return false;\r\n }\r\n return true;\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 private readonly _onInputChangeHandler = (e: React.ChangeEvent) => {\r\n const error = e.target.value === '' ? '' : this.state.error;\r\n this.setState({\r\n promoCodeInputValue: e.target.value, error,\r\n canApply: !!e.target.value\r\n });\r\n };\r\n\r\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\r\n if (!cartState || !cartState.cart) {\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(error => {\r\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\r\n });\r\n };\r\n\r\n /**\r\n * On Submit function.\r\n * @param cartState -Cartstate.\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._applyPromotionHandler(cartState);\r\n };\r\n\r\n /**\r\n * On apply promotion function.\r\n * @param cartState -Cartstate.\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 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 {promoCodeApplyButtonText}\r\n \r\n
\r\n
\r\n );\r\n };\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 private readonly _calculateDiscount = (code: string, cartState: ICartState | undefined) => {\r\n if (!cartState || !cartState.cart || !cartState.cart.CartLines || cartState.cart.CartLines.length === 0 || !code) {\r\n return;\r\n }\r\n let discountAmount = 0;\r\n for (const line of cartState.cart.CartLines) {\r\n if (line.DiscountLines) {\r\n for (const discountLine of line.DiscountLines) {\r\n if (discountLine.DiscountCode === code) {\r\n discountAmount += discountLine.DiscountCost!;\r\n }\r\n }\r\n }\r\n }\r\n return discountAmount * -1;\r\n };\r\n\r\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\r\n if (!props.cart || !props.cart.cart || !props.cart.cart.Coupons || props.cart.cart.Coupons.length === 0) {\r\n return;\r\n }\r\n\r\n const removePromotionHandler = (event: React.MouseEvent) => {\r\n this._removePromotion(props.cart, event);\r\n };\r\n\r\n const promoCodTotalDiscount = props.cart.cart.Coupons.reduce(\r\n (count: number, coupon: Coupon) => {\r\n return count + (this._calculateDiscount(coupon.Code || '', props.cart) || 0);\r\n },\r\n 0);\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {this.props.appliedPromoCodeHeadingText}\r\n
\r\n \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 {coupon.Code}\r\n {' '}\r\n (\r\n \r\n )\r\n
\r\n \r\n {props.removePromoText}\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getTelemetryObject, IModuleProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselData } from './carousel.data';\nimport { ICarouselProps } from './carousel.props.autogenerated';\nimport { ICarouselState } from './carousel.state';\n\nexport interface ICarouselViewProps extends ICarouselProps<{}>, ICarouselState {\n closeAnimation: string;\n carouselContainer: IModuleProps;\n telemetryContent: ITelemetryContent;\n next(): void;\n previous(): void;\n onIndicatorsClickHandler(): void;\n handleDismissCarousel(): void;\n handleOnExited(): void;\n handleOnExiting(): void;\n}\n\n/**\n *\n * CarouselModule component.\n * @extends {React.PureComponent>}\n */\nclass CarouselModule extends React.PureComponent, ICarouselState> {\n private animating: boolean;\n\n private readonly telemetryContent: ITelemetryContent;\n\n constructor(props: ICarouselProps, state: ICarouselState) {\n super(props);\n this.state = { activeIndex: 0, closeNow: false, dismissCarousel: false };\n this.animating = 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 if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n if (this.props.context.request.cookies.get(`CarouselDismiss_${this.props.id}`) === undefined) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'false');\n this.setState({ dismissCarousel: false });\n }\n }\n }\n\n public render(): JSX.Element | null {\n if (this.state.dismissCarousel) {\n return null;\n }\n\n const { className } = this.props.config;\n\n const viewProps = {\n // Context for telemetry and raw data for C1 to do customization\n // Including computed data, state data and methods\n ...this.props,\n ...this.state,\n telemetryContent: this.telemetryContent,\n carouselContainer: {\n moduleProps: this.props,\n className: classnames('ms-carousel', className)\n },\n closeAnimation: this.state.closeNow ? 'close-now' : '',\n next: this._next,\n previous: this._previous,\n onIndicatorsClickHandler: this._goToIndex,\n handleDismissCarousel: this._handleDismissCarousel,\n handleOnExited: this._onExited,\n handleOnExiting: this._onExiting\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Function implementation to dismiss the Carousel.\n */\n private readonly _handleDismissCarousel = (): void => {\n if (this.props.context && this.props.context.request && this.props.context.request.cookies) {\n this.props.context.request.cookies.set(`CarouselDismiss_${this.props.id}`, 'true');\n this.setState({ dismissCarousel: true });\n }\n };\n\n /**\n * Function implementation to move to next slide.\n */\n private readonly _next = (): void => {\n const { slots } = this.props;\n const nextIndex = this.state.activeIndex === (slots && slots.content && slots.content.length - 1) ? 0 : this.state.activeIndex + 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n /**\n * Function implementation to move to previous slide.\n */\n private readonly _previous = (): void => {\n const slots = this.props.slots && this.props.slots.content;\n const nextIndex = this.state.activeIndex === 0 ? (slots ? slots.length - 1 : 0) : this.state.activeIndex - 1;\n\n if (this.animating) {\n this.setState({ closeNow: true, activeIndex: nextIndex });\n } else {\n this.setState({ activeIndex: nextIndex });\n }\n };\n\n private readonly _onExiting = (): void => {\n this.animating = true;\n };\n\n private readonly _onExited = (): void => {\n this.animating = false;\n this.setState({ closeNow: false });\n };\n\n /**\n * Function implementation to move to a given slide.\n * @param newIndex\n */\n private readonly _goToIndex = (newIndex: number): void => {\n if (this.animating) {\n return;\n }\n this.setState({ activeIndex: newIndex });\n };\n}\n\nexport default CarouselModule;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Carousel } from '@msdyn365-commerce/components';\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ICarouselViewProps } from './carousel';\n\n/**\n * Returns item slots.\n * @returns Array of item slots.\n * @param props -Props.\n */\nconst retrieveItems = (props: ICarouselViewProps): React.ReactNode[] => {\n let items = [];\n items = props.slots && props.slots.content && props.slots.content.length > 0 ? props.slots.content : [];\n return items;\n};\nconst CarouselView: React.FC = props => (\n \n \n \n);\n\nexport default CarouselView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICoreContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult, ICartState } from '@msdyn365-commerce/global-state';\nimport {\n AsyncResult,\n CartLine,\n CartLineValidationResults,\n CartLineValidationResultsByLineId,\n CartsDataActions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\n\nimport { ITelemetry } from '@msdyn365-commerce/telemetry-internal';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Validate the cart.\n * @param isQuantityLimitsFeatureEnabled -- Is the quantity limits feature enabled.\n * @param cart -- The cart state to validate.\n * @param telemetry -- The telemetry.\n * @param propsContext -- The props context.\n * @param shouldRetry -- Should retry.\n * @returns A list of line data validation failures.\n */\nexport async function validateCartAsync(\n cart: AsyncResult,\n telemetry: ITelemetry,\n propsContext: ICoreContext,\n shouldRetry: boolean = true\n): Promise {\n let cartResult: ICartState;\n let cartVersion: number | undefined;\n try {\n cartResult = await cart;\n cartVersion = cartResult.cart.Version;\n } catch (error) {\n telemetry.warning(error);\n telemetry.debug('Unable to get cart or cart version.');\n return AsyncResult.resolve();\n }\n\n if (cartVersion) {\n try {\n const validationResult: CartLineValidationResults = await CartsDataActions.validateForCheckoutAsync(\n { callerContext: propsContext.actionContext, bypassCache: 'none' },\n cartResult.cart.Id,\n cartVersion\n );\n\n return await AsyncResult.resolve(validationResult.ValidationResultsByLineId ?? undefined);\n } catch (error) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- error type is not defined.\n if (shouldRetry && error.name === 'Microsoft_Dynamics_Commerce_Runtime_InvalidCartVersion') {\n try {\n await cartResult.refreshCart({});\n } catch (refreshError) {\n telemetry.warning(refreshError);\n telemetry.debug('Unable to refresh Cart');\n return AsyncResult.resolve();\n }\n try {\n await validateCartAsync(cart, telemetry, propsContext, false);\n return AsyncResult.resolve();\n } catch (validateError) {\n telemetry.warning(validateError);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n }\n\n telemetry.warning(error);\n telemetry.debug('Unable to validate Cart');\n return AsyncResult.resolve();\n }\n } else {\n telemetry.warning('Cart version not found for Cart validation request.');\n return AsyncResult.resolve();\n }\n}\n\n/**\n * Check if cart line quantity update is success.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function isCartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult.status === 'SUCCESS');\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve(false);\n}\n\n/**\n * Update cart line with cart action result.\n * @param isQuantityLimitsFeatureEnabled -- Is quantity limits feature enabled.\n * @param cartResult -- The cart result.\n * @param telemetry -- The telemetry.\n * @param products -- The products.\n * @param cartLineToUpdate -- The cart line to update.\n * @param quantity -- The quantity.\n * @returns Boolean to indicate if the cart line quantity is updated.\n */\nexport async function cartLineQuantityUpdatedAsync(\n isQuantityLimitsFeatureEnabled: boolean | undefined,\n cartResult: ICartState | undefined,\n telemetry: ITelemetry,\n products: SimpleProduct[] | undefined,\n cartLineToUpdate: CartLine,\n quantity: number\n): Promise {\n if (cartResult) {\n let isUsingDefaultOrderSettingsMax: boolean = false;\n if (ArrayExtensions.hasElements(products) && isQuantityLimitsFeatureEnabled) {\n const modifiedProduct: SimpleProduct | undefined = products.find(\n (product: SimpleProduct) => product.RecordId === cartLineToUpdate.ProductId\n );\n isUsingDefaultOrderSettingsMax = !!modifiedProduct && !!modifiedProduct.Behavior?.MaximumQuantity;\n } else {\n isUsingDefaultOrderSettingsMax = false;\n }\n\n const input = {\n cartLineId: cartLineToUpdate.LineId!.toString(),\n newQuantity: quantity,\n additionalProperties: { isUsingDefaultOrderSettingsMax }\n };\n\n try {\n const updateLineResult: ICartActionResult = await cartResult.updateCartLineQuantity(input);\n return await AsyncResult.resolve(updateLineResult);\n } catch (error) {\n telemetry.warning((error as Error).message);\n telemetry.debug('Unable to update Cart Line quantity');\n }\n }\n\n return AsyncResult.resolve();\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * Find the product in array of products considering product id.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @returns - The found product.\n */\nexport function getProductByProductId(productId: number | undefined, products?: SimpleProduct[]): SimpleProduct | undefined {\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId;\n });\n }\n\n return undefined;\n}\n\n/**\n * Find the product in array of products considering product id and product behavior's warehouse.\n * @param productId - The searched product id.\n * @param products - The array of products in which search is executed.\n * @param warehouseId - Warehouse id of cartLine.\n * @param cartState - The cart start in case cart line has no warehouse.\n * @returns - The found product.\n */\nexport function getProductByProductIdAndWarehouse(\n productId: number | undefined,\n products?: SimpleProduct[],\n warehouseId?: string,\n cartState?: ICartState\n): SimpleProduct | undefined {\n const targetWarehouseValue = warehouseId ?? cartState?.cart.WarehouseId;\n\n if (productId !== undefined && ArrayExtensions.hasElements(products)) {\n return products.find(product => {\n return productId === product.RecordId && product.Behavior?.InventoryLocationId === targetWarehouseValue;\n });\n }\n\n return undefined;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLineItemComponent, ICartlineResourceString } from '@msdyn365-commerce/components';\nimport MsDyn365, { ICoreContext, IGridSettings, IImageSettings, ITelemetry, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n OrgUnitLocation,\n ProductAvailableQuantity,\n ProductDeliveryOptions,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getProductUrlSync, IProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { getProductByProductId, getProductByProductIdAndWarehouse } from '../../../Common/get-product';\n\nexport interface IFlyoutCartLineItemsProps {\n cartlines: CartLine[];\n cartState: ICartState | undefined;\n orgUnitLocations: OrgUnitLocation[] | undefined;\n resources: ICartlineResourceString;\n productAvailabilites: IProductInventoryInformation[] | undefined;\n products: SimpleProduct[] | undefined;\n productDeliveryOptions: ProductDeliveryOptions[] | undefined;\n pickupDeliveryModeCode?: string;\n catalogs?: ProductCatalog[];\n\n /**\n * GridSettings for the product image in cartline\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartline\n */\n imageSettings: IImageSettings;\n id: string;\n typeName: string;\n context: ICoreContext;\n telemetry: ITelemetry;\n removeButtonText: string;\n outOfStockText: string;\n outOfRangeOneText: string;\n outOfRangeFormatText: string;\n maxCartlineQuantity: number;\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n isQuantityLimitsFeatureEnabled: boolean;\n\n outOfStockThreshold: number;\n isStockCheckEnabled: boolean;\n telemetryContent?: ITelemetryContent;\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\nexport interface IFlyoutCartLineItemViewProps {\n cartline: React.ReactNode;\n remove: React.ReactNode;\n storeLocation: React.ReactNode;\n hasError: boolean;\n\n data: {\n product: SimpleProduct;\n cartline: CartLine;\n };\n}\n\nconst _getCartItemAvailableQuantity = (\n isStockCheckEnabled: boolean,\n outOfStockThreshold: number,\n productAvailability?: ProductAvailableQuantity\n): number => {\n if (isStockCheckEnabled) {\n if (\n !productAvailability ||\n !productAvailability.AvailableQuantity ||\n productAvailability.AvailableQuantity <= 0 ||\n productAvailability.AvailableQuantity <= outOfStockThreshold\n ) {\n return 0;\n }\n return productAvailability.AvailableQuantity - outOfStockThreshold;\n }\n\n return 0;\n};\n\nconst _getCartItemMaxQuantity = (\n maxQuantityByConfig: number,\n isStockCheckEnabled: boolean,\n availableQuantityInStock: number,\n isQuantityLimitsFeatureEnabled: boolean,\n maxByQuantityLimitsFeature: number\n) => {\n if (isQuantityLimitsFeatureEnabled) {\n let maxByQuantityLimitsFeatureResult = maxByQuantityLimitsFeature;\n\n // If max by feature in not defined when feature is on then we suggest that there is no max by feature\n // and consider available qty if stock check enabled and max from config in site settings.\n if (!maxByQuantityLimitsFeature) {\n maxByQuantityLimitsFeatureResult = maxQuantityByConfig || 10;\n }\n\n return isStockCheckEnabled\n ? maxByQuantityLimitsFeatureResult < availableQuantityInStock\n ? maxByQuantityLimitsFeatureResult\n : availableQuantityInStock\n : maxByQuantityLimitsFeatureResult;\n }\n if (isStockCheckEnabled) {\n return availableQuantityInStock < maxQuantityByConfig ? availableQuantityInStock : maxQuantityByConfig;\n }\n return maxQuantityByConfig;\n};\n\n/**\n * On Remove Click functionality.\n * @param removeItemClickHandler -Remove item click function.\n * @param cartline -CartLine.\n * @returns Remove change value.\n */\nconst onRemoveClickFunction = (removeItemClickHandler: (cartlineToRemove: CartLine) => void, cartline: CartLine) => () => {\n removeItemClickHandler(cartline);\n};\nconst _assembleNode = (\n cartline: CartLine,\n product: SimpleProduct,\n props: IFlyoutCartLineItemsProps,\n index: number,\n foundProductAvailability?: ProductAvailableQuantity,\n foundProductDeliveryOptions?: ProductDeliveryOptions\n): IFlyoutCartLineItemViewProps => {\n const { imageSettings, gridSettings, id, typeName, context, resources, removeButtonText, removeItemClickHandler } = props;\n\n const availableQuantityInStock = _getCartItemAvailableQuantity(\n props.isStockCheckEnabled,\n props.outOfStockThreshold,\n foundProductAvailability\n );\n const maxQuantity =\n product &&\n _getCartItemMaxQuantity(\n props.maxCartlineQuantity,\n props.isStockCheckEnabled,\n availableQuantityInStock,\n props.isQuantityLimitsFeatureEnabled,\n product?.Behavior?.MaximumQuantity || 0\n );\n\n // Check if the product is service or not by product type\n const isServiceItem = product.ItemTypeValue === ReleasedProductType.Service;\n\n const onRemoveClickHandler = onRemoveClickFunction(removeItemClickHandler, cartline);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.RemoveCartItem);\n const removeCartItemAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n\n let productUrl = getProductUrlSync(product, props.context.actionContext, undefined);\n if (MsDyn365.isBrowser && isChannelTypeB2B(props.context.actionContext.requestContext)) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${cartline.CatalogId ?? 0}`);\n productUrl = fullUrl.href;\n }\n\n return {\n data: {\n product,\n cartline\n },\n hasError: !isServiceItem && props.isStockCheckEnabled ? cartline.Quantity! > maxQuantity : false,\n cartline: (\n \n ),\n remove: (\n \n {removeButtonText}\n \n ),\n storeLocation: _renderStoreLocation(cartline, props)\n };\n};\n\nconst _renderDeliveryLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): string | undefined => {\n let deliverylocation;\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartLine.ProductId;\n });\n }\n const delivery = foundProductDeliveryOption?.DeliveryOptions?.find(option => option.Code === cartLine.DeliveryMode);\n const location = delivery?.Description;\n\n // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n if (location) {\n deliverylocation = `${location}, ${orgUnitName}`;\n } else {\n deliverylocation = `${orgUnitName}`;\n }\n } else {\n deliverylocation = props.resources.shippingText;\n }\n return deliverylocation;\n};\n\nconst _renderStoreLocation = (cartLine: CartLine | null | undefined, props: IFlyoutCartLineItemsProps): JSX.Element | null => {\n if (cartLine && cartLine.FulfillmentStoreId) {\n const orgUnitName = _getOrgUnitName(cartLine.FulfillmentStoreId, props.orgUnitLocations);\n\n if (orgUnitName) {\n return (\n
\n {orgUnitName}\n
\n );\n }\n }\n\n return null;\n};\n\nconst _getOrgUnitName = (fulfillmentStoreId: string | undefined, orgUnitLocations: OrgUnitLocation[] | undefined) => {\n if (!orgUnitLocations || !fulfillmentStoreId || orgUnitLocations.length === 0) {\n return '';\n }\n\n const foundLocation = orgUnitLocations.find(orgUnitLocation => {\n return orgUnitLocation.OrgUnitNumber === fulfillmentStoreId;\n });\n\n if (foundLocation) {\n return foundLocation.OrgUnitName;\n }\n return fulfillmentStoreId;\n};\n\nconst _assembleCartlines = (\n cartlines: CartLine[],\n products: SimpleProduct[] | undefined,\n props: IFlyoutCartLineItemsProps\n): IFlyoutCartLineItemViewProps[] | null => {\n const reactNodes: IFlyoutCartLineItemViewProps[] = [];\n\n if (!products || products.length === 0) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n\n cartlines.map((cartline, index) => {\n let product;\n if (props.isQuantityLimitsFeatureEnabled) {\n // When feature is enabled the same products could have different quantity limits in Behavior so we need\n // to check productId and WarehouseId for identification.\n product = getProductByProductIdAndWarehouse(cartline.ProductId, products, cartline.WarehouseId, props.cartState);\n } else {\n product = getProductByProductId(cartline.ProductId, products);\n }\n let foundProductAvailability;\n if (props.productAvailabilites && props.productAvailabilites.length > 0) {\n foundProductAvailability = props.productAvailabilites.find(productAvailability => {\n return productAvailability.ProductAvailableQuantity?.ProductId! === cartline.ProductId;\n });\n }\n let foundProductDeliveryOption;\n if (props.productDeliveryOptions && props.productDeliveryOptions.length > 0) {\n foundProductDeliveryOption = props.productDeliveryOptions.find(deliveryOption => {\n return deliveryOption && deliveryOption.ProductId === cartline.ProductId;\n });\n }\n if (product) {\n reactNodes.push(\n _assembleNode(\n cartline,\n product,\n props,\n index,\n foundProductAvailability?.ProductAvailableQuantity,\n foundProductDeliveryOption\n )\n );\n }\n });\n\n return reactNodes;\n};\n\n/**\n * CartLineItems component.\n */\n\nexport const FlyoutCartLineItems = (props: IFlyoutCartLineItemsProps) => {\n const { products, cartlines } = props;\n return _assembleCartlines(cartlines, products, props);\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ActiveCartProductsInput,\n getActiveCartProductsAction,\n getAvailabilitiesForCartLineItems,\n getDeliveryOptionsForCartLineItems,\n IProductInventoryInformation,\n ProductAvailabilitiesForCartLineItems,\n ProductDeliveryOptionsForCartLineItems\n} from '@msdyn365-commerce-modules/retail-actions';\n\n/**\n * IMiniCartData entity interface.\n */\nexport interface IMiniCartData {\n products?: SimpleProduct[];\n productAvailabilites?: IProductInventoryInformation[];\n deliveryOptions?: ProductDeliveryOptions[];\n}\n\nexport const createInput = () => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a mini cart data.\n * @param ctx\n * @param cartState\n */\nexport async function getMiniCartData(ctx: IActionContext, cartState: ICartState): Promise {\n const miniCartData: IMiniCartData = {};\n\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n // If there are invocie linese, then there is no products, so don't make call to get products\n if (cart && cart.CartLines && cart.CartLines.length > 0 && !cartState.hasInvoiceLine) {\n await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx)\n .then(products => {\n if (products) {\n miniCartData.products = products;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getAvailabilitiesForCartLineItems(new ProductAvailabilitiesForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(availableQuantity => {\n if (availableQuantity) {\n miniCartData.productAvailabilites = availableQuantity;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n\n await getDeliveryOptionsForCartLineItems(new ProductDeliveryOptionsForCartLineItems(ctx.requestContext.apiSettings), ctx)\n .then(deliveryOptions => {\n if (deliveryOptions) {\n miniCartData.deliveryOptions = deliveryOptions;\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return miniCartData;\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddToCartBehavior, CartIconComponent } from '@msdyn365-commerce/components';\nimport { getUrlSync, IDictionary, IImageSettings, msdyn365Commerce, TelemetryEvent } from '@msdyn365-commerce/core';\nimport {\n CartLine,\n ChannelDeliveryOptionConfiguration,\n CartLineValidationResultsByLineId,\n OrgUnitLocation\n} from '@msdyn365-commerce/retail-proxy';\nimport { validateCartAsync } from '@msdyn365-commerce-modules/cart-utilities';\nimport { ArrayExtensions, validateCartLinesInventory } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n ITelemetryContent,\n TelemetryConstant,\n UncontrolledTooltip,\n updateMaxQuantityForCartLineItem,\n urlCheck\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport React from 'react';\n\nimport { ICartIconData } from './cart-icon.data';\nimport { cartLinesSortOrder, ICartIconProps } from './cart-icon.props.autogenerated';\nimport { FlyoutCartLineItems, IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\nimport { getMiniCartData, IMiniCartData } from './utils/get-products-in-mini-cart';\n\nexport interface IMiniCartState {\n miniCartData: IMiniCartData;\n orgUnitLocations?: OrgUnitLocation[];\n isQuantityLimitsFeatureEnabled: boolean;\n isCartValid: boolean;\n}\n\nexport interface ICartIconViewProps extends ICartIconProps {\n className: string;\n cartIcon: React.ReactNode;\n FlyoutContainer?: INodeProps;\n CartlinesWrapper: INodeProps;\n miniCartWrapper: INodeProps;\n miniCartItemWrapper: INodeProps;\n cartlines?: IFlyoutCartLineItemViewProps[];\n flyoutTitle: React.ReactNode;\n totalPrice: React.ReactNode;\n checkoutAsGuestButton?: React.ReactNode;\n checkoutAsSignInUserButton?: React.ReactNode;\n goToCartButton?: React.ReactNode;\n waitingComponent?: React.ReactNode;\n isCartLoading: boolean;\n checkoutBlockedDueToUnavailableFunds?: React.ReactNode;\n\n removeItemClickHandler(cartlineToRemove: CartLine): void;\n}\n\n/**\n *\n * Cart component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass CartIcon extends React.Component, IMiniCartState> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly checkoutBySignInAttributes: IDictionary | undefined;\n\n private readonly checkoutByGuestAttributes: IDictionary | undefined;\n\n private readonly viewShoppingBagAttributes: IDictionary | undefined;\n\n private retailMultiplePickUpOptionEnabled?: boolean = false;\n\n private channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n private lastValidatedCartVersion: number | undefined;\n\n constructor(props: ICartIconProps) {\n super(props);\n this.state = {\n miniCartData: {},\n isCartValid: true,\n isQuantityLimitsFeatureEnabled: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n const payload = getPayloadObject(TelemetryEvent.CheckOut, this.telemetryContent, TelemetryConstant.Checkout);\n this.checkoutBySignInAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.GuestCheckout;\n this.checkoutByGuestAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n\n payload.contentAction.etext = TelemetryConstant.ViewShoppingBag;\n this.viewShoppingBagAttributes = getTelemetryAttributes(this.telemetryContent, payload);\n }\n\n public async componentDidMount(): Promise {\n const context = this.props.context.actionContext;\n\n reaction(\n () => this.props.data.cart.result?.cart.CartLines,\n async () => {\n this.setState({\n miniCartData: await getMiniCartData(context, this.props.data.cart.result!)\n });\n }\n );\n await this._setQuantityLimitsFeatureFlag();\n\n this.setState({\n orgUnitLocations: this.props.data.orgUnitLocations?.result\n });\n\n this._validateCart();\n }\n\n public componentDidUpdate(prevProps: ICartIconProps): void {\n this._validateCart();\n }\n\n public shouldComponentUpdate(nextProps: ICartIconProps, nextState: IMiniCartState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n config: { enableHoverCart, isAnonymousCheckout },\n context: {\n request: {\n user: { isAuthenticated, signInUrl }\n }\n },\n context,\n resources\n } = this.props;\n\n const cart = (this.props.data.cart && this.props.data.cart.result) || undefined;\n const guestCheckoutUrl = getUrlSync('checkout', this.props.context.actionContext) || '';\n const cartUrl = getUrlSync('cart', this.props.context.actionContext) || '';\n const checkoutURL = this._getCheckoutURL(isAuthenticated, guestCheckoutUrl, signInUrl || '');\n const isCartEmpty = cart && cart.cart.CartLines && cart.cart.CartLines.length === 0;\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- check config.\n const shouldShowMiniCart =\n cart?.isProductAddedToCart && this.props.context.app.config.addToCartBehavior === AddToCartBehavior.showMiniCart;\n const hasInvoiceLine = cart?.hasInvoiceLine;\n const emailDeliveryModeCode = this.props.context.request.channel?.EmailDeliveryModeCode;\n const cartLines = this._getCartLines();\n const validInventoryAcrossCartLines = validateCartLinesInventory(\n cart?.cart.CartLines ?? [],\n this.state.miniCartData.productAvailabilites ?? [],\n this.props.context.actionContext,\n this.state.miniCartData.products ?? [],\n emailDeliveryModeCode\n );\n const hasError =\n !validInventoryAcrossCartLines?.isValid ||\n (!validInventoryAcrossCartLines && !this.state.isCartValid) ||\n (cartLines ? cartLines.some(cartline => cartline.hasError) : false);\n const includeFlyout = this.props.data.cart && this.props.data.cart.status === 'SUCCESS' && enableHoverCart;\n const totalItemsInCart = cart?.totalItemsInCart ? cart.totalItemsInCart : 0;\n const goToCartButtonText = resources.goToCartButtonTitle.replace('{count}', totalItemsInCart.toString());\n const flyoutTitle = resources.flyoutTitle;\n const flyoutTooltip = {\n tag: UncontrolledTooltip,\n shouldShowMiniCart,\n placement: 'bottom-end',\n hideArrow: true,\n className: 'ms-cart-icon__flyout-container',\n trigger: 'hover',\n displayMode: 'FLYOUT',\n target: id,\n shouldShowCloseButton: true,\n cartPageUrl: cartUrl,\n hideAriaHidden: true\n };\n\n // If there are invoice lines, don't update mini cart price\n const price = (cart && !cart.hasInvoiceLine && cart.cart.TotalAmount) || undefined;\n const priceString = price\n ? resources.totalPriceFormatString.replace('{price}', context.cultureFormatter.formatCurrency(price))\n : '';\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n this.channelDeliveryOptionConfig = this.props.data.channelDeliveryOptionConfig?.result;\n this.retailMultiplePickUpOptionEnabled = this.props.data.featureState?.result?.find(\n feature => feature.Name === multiplePickupStoreSwitchName\n )?.IsEnabled;\n\n const viewProps = {\n ...this.props,\n cartIcon: (\n \n ),\n cartlines: cartLines,\n FlyoutContainer: includeFlyout ? flyoutTooltip : undefined,\n CartlinesWrapper: {\n className: 'ms-cart-icon__cart-lines'\n },\n miniCartWrapper: {\n className: classnames('ms-cart-icon'),\n id: this.props.id\n },\n miniCartItemWrapper: {\n className: classnames('msc-cart-lines-item')\n },\n\n // If there are invoice lines, don't update mini cart checkout button\n // Checkout button will display by default to maintain backward compatibility. When Anonymous user checkout is enabled &&\n // user is authenticated then we will show the checkout button otherwise we will show the guest checkout button.\n checkoutAsSignInUserButton:\n !isCartEmpty && !hasInvoiceLine && (!isAnonymousCheckout || isAuthenticated) ? (\n \n {resources.checkoutButtonTitle}\n \n ) : null,\n checkoutAsGuestButton:\n isAnonymousCheckout && !isCartEmpty && !isAuthenticated ? (\n \n {resources.guestCheckoutButtonTitle}\n \n ) : null,\n goToCartButton: (\n \n {goToCartButtonText}\n \n ),\n checkoutBlockedDueToUnavailableFunds: null,\n flyoutTitle: {flyoutTitle},\n totalPrice:
{priceString}
\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _validateCart(): void {\n const {\n data: { cart }\n } = this.props;\n const cartVersion = cart.result?.cart?.Version ?? undefined;\n if (this.lastValidatedCartVersion === cartVersion) {\n return;\n }\n\n this.lastValidatedCartVersion = cartVersion; // This field is populated to block concurrent requests\n\n if (this.state.isQuantityLimitsFeatureEnabled) {\n validateCartAsync(cart, this.props.telemetry, this.props.context)\n .then((result: CartLineValidationResultsByLineId | undefined) => {\n this.setState({ isCartValid: !ArrayExtensions.hasElements(result?.ValidationResultsPairs) });\n })\n .catch(() => {\n this.setState({ isCartValid: false });\n });\n } else {\n this.setState({ isCartValid: true });\n }\n }\n\n private _getCheckoutURL(isAuthenticated: boolean, guestCheckoutUrl: string, signInUrl: string): string {\n if (isAuthenticated) {\n return guestCheckoutUrl;\n }\n\n const isAbsoluteUrl = urlCheck(guestCheckoutUrl);\n let returnURL = guestCheckoutUrl;\n if (msdyn365Commerce.isBrowser && !isAbsoluteUrl) {\n returnURL = `${window.location.origin}${guestCheckoutUrl}`;\n }\n\n return `${signInUrl}${!signInUrl.includes('?') ? '?' : '&'}ru=${returnURL}`;\n }\n\n /**\n * Sort cartline items.\n * @param cartlines - Cartlines to be sorted.\n * @param sortOrder - Ascending or descending.\n * @returns - Sorted cartlines.\n */\n private readonly getSortedCartLines = (cartlines: CartLine[], sortOrder?: cartLinesSortOrder): CartLine[] => {\n const lines: CartLine[] = [...cartlines];\n const zero: number = 0;\n\n if (sortOrder === cartLinesSortOrder.descending) {\n return lines.sort((item1, item2) => (item2.LineNumber ?? zero) - (item1.LineNumber ?? zero));\n }\n return lines.sort((item1, item2) => (item1.LineNumber ?? zero) - (item2.LineNumber ?? zero));\n };\n\n private _getCartLines(): IFlyoutCartLineItemViewProps[] | null {\n const {\n context: {\n request: { channel: { PickupDeliveryModeCode } = { PickupDeliveryModeCode: undefined } }\n },\n config,\n telemetry,\n resources\n } = this.props;\n\n const imageSettings = this._getImageSettings(config.imageSettings);\n const cart = this.props.data.cart && this.props.data.cart.result;\n\n // Cart-icon could be placed in each page\n // so we check cart content to reduce number of RS calls\n return this.state.miniCartData.products && cart && cart.cart.CartLines && cart.cart.CartLines.length > 0\n ? FlyoutCartLineItems({\n cartlines: this.getSortedCartLines(cart.cart.CartLines, config.cartLinesSortOrder),\n products: this.state.miniCartData.products,\n productAvailabilites: this.state.miniCartData.productAvailabilites,\n productDeliveryOptions: this.state.miniCartData.deliveryOptions,\n imageSettings,\n outOfStockThreshold: this.props.context.app.config.outOfStockThreshold || 0,\n isStockCheckEnabled: this.props.context.app.config.enableStockCheck || false,\n maxCartlineQuantity: updateMaxQuantityForCartLineItem(this.props.context.app.config.maxQuantityForCartLineItem),\n gridSettings: this.props.context.request.gridSettings!,\n context: this.props.context,\n typeName: this.props.typeName,\n id: this.props.id,\n resources: {\n sizeString: resources.productDimensionTypeSize,\n colorString: resources.productDimensionTypeColor,\n configString: resources.productDimensionTypeConfiguration,\n styleString: resources.productDimensionTypeStyle,\n quantityDisplayString: resources.quantityDisplayText,\n salesAgreementPricePrompt: resources.salesAgreementPricePrompt,\n inputQuantityAriaLabel: '', // Not used\n discountStringText: '', // Not used\n originalPriceText: '',\n currentPriceText: '',\n shippingChargesText: '',\n shippingText: resources.shippingText\n },\n telemetry,\n removeButtonText: resources.removeCartButtonText,\n outOfStockText: '', // Not used\n outOfRangeOneText: '', // Not used\n outOfRangeFormatText: '', // Not used\n cartState: cart,\n orgUnitLocations: this.state.orgUnitLocations,\n removeItemClickHandler: this._removeItemFromCartHandler,\n pickupDeliveryModeCode: PickupDeliveryModeCode,\n telemetryContent: this.telemetryContent,\n channelDeliveryOptionConfig: this.retailMultiplePickUpOptionEnabled ? this.channelDeliveryOptionConfig : undefined,\n isQuantityLimitsFeatureEnabled: this.state.isQuantityLimitsFeatureEnabled,\n catalogs: this.props.data.catalogs?.result\n })\n : null;\n }\n\n private readonly _getImageSettings = (imageSettings: IImageSettings | undefined): IImageSettings => {\n return (\n imageSettings || {\n viewports: {\n xs: { q: 'w=80&h=94&m=6', w: 0, h: 0 },\n sm: { q: 'w=148&h=174&m=6', w: 0, h: 0 },\n lg: { q: 'w=148&h=174&m=6', w: 0, h: 0 }\n },\n lazyload: true\n }\n );\n };\n\n private readonly _removeItemFromCartHandler = (cartlineToRemove: CartLine) => {\n if (this.props.data.cart.result) {\n const input = {\n cartLineIds: [cartlineToRemove.LineId!.toString()]\n };\n this.props.data.cart.result.removeCartLines(input).catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to Remove Cart Line');\n });\n }\n };\n\n private async _setQuantityLimitsFeatureFlag(): Promise {\n const featureStatuses = await this.props.data.featureState;\n\n const isChannelQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature'\n )?.IsEnabled || false;\n if (isChannelQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n return;\n }\n\n const useSiteBuilderSettings = featureStatuses?.find(\n featureState => featureState.Name === 'RevertToSiteBuilderOrderQuantityLimitsSettings'\n )?.IsEnabled;\n\n if (useSiteBuilderSettings) {\n const defaultOrderQuantityLimitsFeatureConfig = this.props.context?.request?.app?.platform?.enableDefaultOrderQuantityLimits;\n if (!defaultOrderQuantityLimitsFeatureConfig || defaultOrderQuantityLimitsFeatureConfig === 'none') {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n\n try {\n const featureStatuses = await this.props.data.featureState;\n const isQuantityLimitsFeatureEnabledInHq =\n featureStatuses?.find(\n featureState => featureState.Name === 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature'\n )?.IsEnabled || false;\n if (!isQuantityLimitsFeatureEnabledInHq) {\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n } catch (error) {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get feature states');\n this.setState({ isQuantityLimitsFeatureEnabled: false });\n return;\n }\n if (defaultOrderQuantityLimitsFeatureConfig === 'all') {\n this.setState({ isQuantityLimitsFeatureEnabled: true });\n } else {\n this.props.data.customerInformation\n .then(customerInfo => {\n const result =\n !!customerInfo &&\n ((defaultOrderQuantityLimitsFeatureConfig === 'b2b' && customerInfo.IsB2b) ||\n (defaultOrderQuantityLimitsFeatureConfig === 'b2c' && !customerInfo.IsB2b));\n this.setState({ isQuantityLimitsFeatureEnabled: result });\n })\n .catch(error => {\n this.props.telemetry.warning(error);\n this.props.telemetry.debug('Unable to get customer info');\n });\n }\n } else {\n const cartConfiguration = await this.props.data.cartConfiguration;\n this.setState({ isQuantityLimitsFeatureEnabled: !(cartConfiguration?.IgnoreOrderSettings ?? false) });\n return;\n }\n }\n}\n\nexport default CartIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartIconViewProps } from './cart-icon';\nimport { IFlyoutCartLineItemViewProps } from './components/flyout-cart-line-items';\n\nconst _renderCartlines = (cartLines: IFlyoutCartLineItemViewProps[] | undefined, props: ICartIconViewProps): JSX.Element[] | null => {\n if (!cartLines) {\n props.context.telemetry.error('Cartlines content is empty, module wont render');\n return null;\n }\n return cartLines.map((cartLine, index) => {\n return (\n \n {cartLine.cartline}\n {cartLine.storeLocation}\n {cartLine.remove}\n \n );\n });\n};\n\nconst CartIconView: React.FC = (props: ICartIconViewProps) => (\n \n {props.cartIcon}\n {props.FlyoutContainer ? (\n \n {props.flyoutTitle}\n {props.checkoutBlockedDueToUnavailableFunds}\n {_renderCartlines(props.cartlines, props)}\n {props.totalPrice}\n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.goToCartButton}\n \n ) : (\n false\n )}\n \n);\n\nexport default CartIconView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CartLinePriceEditor, ICartLinePriceEditorResources, PriceComponent } from '@msdyn365-commerce/components';\nimport MsDyn365, { IComponentProps, IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { ChannelDeliveryOptionConfiguration, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { CartLine, ProductCatalog, SalesLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions, getFallbackImageUrl, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { getPayloadObject, getTelemetryAttributes, IncrementalQuantity, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\n/**\n * ICartlineResourceString: Interface for specifying the\n * resource strings that the component needs.\n */\nexport interface ICartlineResourceString {\n /**\n * Display string for discount label\n */\n discountStringText: string;\n\n /**\n * String for size key\n */\n sizeString: string;\n\n /**\n * String for color key\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension\n */\n configString: string;\n\n /**\n * String for style key\n */\n styleString: string;\n\n /**\n * String for amount key\n */\n amountString?: string;\n\n /**\n * Display string for quantity label\n */\n quantityDisplayString: string;\n\n /**\n * Display string for quantity label\n */\n inputQuantityAriaLabel: string;\n\n /**\n * Aria label for the decrement button in quantity component\n */\n decrementButtonAriaLabel: string;\n\n /**\n * Aria label for the increment button in quantity component\n */\n incrementButtonAriaLabel: string;\n\n /**\n * Original text screenreader\n */\n originalPriceText: string;\n\n /**\n * Current text screenreader\n */\n currentPriceText: string;\n\n /**\n * Shipping Charges Text\n */\n shippingChargesText: string;\n\n priceEditorResources?: ICartLinePriceEditorResources;\n salesAgreementPricePrompt?: string;\n}\n\ninterface ICartLineData {\n cartLine: CartLine | SalesLine;\n cartState?: ICartState;\n product?: SimpleProduct;\n catalogs?: ProductCatalog[];\n}\n\n/**\n * ICartLineProps: The props required to render cartLineitem.\n */\nexport interface ICartLineProps extends IComponentProps {\n /**\n * The flag to change the quantity component from intractable to static.\n */\n disableQuantityInteractivity?: boolean;\n\n /**\n * The primary image url.\n */\n primaryImageUrl?: string;\n\n /**\n * The product url.\n */\n productUrl?: string;\n\n /**\n * GridSettings for the product image in cartLine.\n */\n gridSettings: IGridSettings;\n\n /**\n * ImageSettings for the product image in cartLine.\n */\n imageSettings: IImageSettings;\n\n /**\n * Boolean flag to indicate if the item is out of stock.\n */\n isOutOfStock?: boolean;\n\n /**\n * Flag to make quantity section editable.\n */\n isQuantityEditable?: boolean;\n\n /**\n * Max quantity for line item.\n */\n maxQuantity?: number;\n\n /**\n * Current quantity for line item.\n */\n currentQuantity?: number;\n\n /**\n * Resource string for the component.\n */\n resources: ICartlineResourceString;\n\n /**\n * SalesLine flag.\n */\n isSalesLine?: boolean;\n\n /**\n * Error message to show in place of quantity.\n */\n errorMessage?: string;\n\n /**\n * Inventory information label.\n */\n inventoryInformationLabel?: string;\n\n /**\n * Inventory information class name.\n */\n inventoryLabelClassName?: string;\n\n /**\n * Flag to show/hide shipping charges for line items.\n */\n showShippingChargesForLineItems?: boolean;\n\n /**\n * Boolean flag to indicate if cart state status is ready.\n */\n isCartStateReady?: boolean;\n\n /**\n * Chanel Delivery Option configuration is from api.\n */\n channelDeliveryOptionConfig?: ChannelDeliveryOptionConfiguration;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n\n /**\n * The cart line index.\n */\n lineIndex?: number;\n\n /**\n * Quantity onChange callback.\n */\n quantityOnChange?(cartLine: CartLine, newQuantity: number, lineIndex?: number): boolean;\n priceCurrency?: string;\n}\n\ninterface IDimensionStrings {\n /**\n * String for size key.\n */\n sizeString: string;\n\n /**\n * String for color key.\n */\n colorString: string;\n\n /**\n * String associated with the configuration product dimension.\n */\n configString: string;\n\n /**\n * String for style key.\n */\n styleString: string;\n\n /**\n * String for amount key.\n */\n amountString?: string;\n}\n\n/**\n * Renders catalog label for the cart line.\n * @param props - Cart line props.\n * @returns Catalog label.\n */\nconst CatalogLabelComponent: React.FC = (props: ICartLineProps) => {\n const catalogId = props.data.cartLine.CatalogId;\n validateCatalogId(catalogId);\n\n if (!props.context.request.user.isB2b || !catalogId || !ArrayExtensions.hasElements(props.data.catalogs)) {\n return null;\n }\n\n const catalog = props.data.catalogs.find(item => item.RecordId === catalogId);\n\n if (!catalog || !catalog.Name) {\n return null;\n }\n\n return
{catalog.Name}
;\n};\n\nconst CartLineItemFunctions = {\n renderProductDimensions: (Product: SimpleProduct, DimensionStrings: IDimensionStrings) => {\n if (!Product || !Product.Dimensions) {\n return [];\n }\n\n return Product.Dimensions.map(productDimension => {\n if (productDimension.DimensionTypeValue === 1) {\n return (\n
\n \n {DimensionStrings.colorString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
\n );\n }\n\n if (productDimension.DimensionTypeValue === 2) {\n return (\n
\n \n {DimensionStrings.configString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
\n );\n }\n\n if (productDimension.DimensionTypeValue === 3) {\n return (\n
\n \n {DimensionStrings.sizeString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
\n );\n }\n\n if (productDimension.DimensionTypeValue === 4) {\n return (\n
\n \n {Product.IsGiftCard ? DimensionStrings.amountString : DimensionStrings.styleString}:\n {productDimension.DimensionValue && productDimension.DimensionValue.Value}\n \n
\n );\n }\n return null;\n });\n },\n\n renderDiscountLines: (props: ICartLineProps) => {\n if (!props.data.cartLine.DiscountLines || props.data.cartLine.DiscountLines.length === 0) {\n return null;\n }\n\n return props.data.cartLine.DiscountLines.map((discountLine, index) => {\n return (\n
\n \n {discountLine.OfferName ? discountLine.OfferName : ''}:{` ${props.resources.discountStringText || 'Discount'} `}\n \n \n \n \n {` (${discountLine.EffectivePercentage !== undefined ? discountLine.EffectivePercentage : ''}%)`}\n
\n );\n });\n },\n renderInventoryLabel: (props: ICartLineProps) => {\n if (!props.inventoryInformationLabel) {\n return null;\n }\n const inventoryCssName = props.inventoryLabelClassName\n ? `msc-cart-line__product-inventory-label ${props.inventoryLabelClassName}`\n : 'msc-cart-line__product-inventory-label';\n return {props.inventoryInformationLabel};\n },\n\n /**\n * Gets the react node for product unit of measure display.\n * @param props - Icartline props.\n * @returns The node representing markup for unit of measure component.\n */\n renderUnitOfMeasure: (props: ICartLineProps) => {\n if (props.data.cartLine.IsInvoiceLine) {\n return null;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Do not need type check for appsettings\n if (!props.context.app.config.unitOfMeasureDisplayType || props.context.app.config.unitOfMeasureDisplayType === 'none') {\n return undefined;\n }\n\n const product = props.data.product;\n if (!product || !product.DefaultUnitOfMeasure) {\n return undefined;\n }\n\n return (\n
\n {product.DefaultUnitOfMeasure}\n
\n );\n },\n renderShippingLabel: (props: ICartLineProps) => {\n const pickupDeliveryModeCode = props.context.request.channel?.PickupDeliveryModeCode;\n const channelDeliveryOptionConfig = props.channelDeliveryOptionConfig;\n const cartline = props.data.cartLine;\n let hasShippingMethod = false;\n if (channelDeliveryOptionConfig !== undefined) {\n hasShippingMethod = !!(\n cartline.DeliveryMode &&\n channelDeliveryOptionConfig.PickupDeliveryModeCodes?.some(deliveryMode => deliveryMode !== cartline.DeliveryMode)\n );\n } else {\n hasShippingMethod = !!(cartline.DeliveryMode && cartline.DeliveryMode !== pickupDeliveryModeCode);\n }\n if (!hasShippingMethod) {\n return undefined;\n }\n\n const shippingChargeLines = (cartline.ChargeLines || []).filter(chargeLine => chargeLine.IsShipping);\n\n if (shippingChargeLines.length === 0) {\n return undefined;\n }\n\n const freightFee = shippingChargeLines.reduce((chargeTotal, chargeLine) => {\n return chargeTotal + (chargeLine.CalculatedAmount || 0);\n }, 0);\n\n const priceComponent = (\n \n );\n return (\n <>\n \n {priceComponent}\n \n );\n },\n renderOtherCharges: (props: ICartLineProps) => {\n const cartline = props.data.cartLine;\n const otherCharges = cartline.ChargeLines?.filter(chargeline => !chargeline.IsShipping);\n\n return (\n (otherCharges &&\n otherCharges.map((otherCharge, key) => {\n return otherCharge && otherCharge.CalculatedAmount ? (\n
\n \n \n \n \n
\n ) : (\n ''\n );\n })) ||\n undefined\n );\n },\n\n /**\n * Render the sales agreement prompt.\n * @param props - The ICartLineProps.\n * @returns The JSX.Element.\n */\n renderSalesAgreementPrompt: (props: ICartLineProps): JSX.Element | null => {\n if (props.data.cartLine.SalesAgreementLineRecordId === 0) {\n return null;\n }\n return
{props.resources.salesAgreementPricePrompt}
;\n }\n};\n\n// eslint-disable-next-line no-redeclare\nconst CartLine: React.FC = (props: ICartLineProps) => {\n const { isSalesLine, productUrl, resources } = props;\n const { product, cartLine } = props.data;\n\n const destructDimensionStrings = {\n sizeString: resources.sizeString,\n colorString: resources.colorString,\n styleString: resources.styleString,\n configString: resources.configString,\n amountString: resources.amountString\n };\n\n const fallbackImageUrl =\n product &&\n getFallbackImageUrl(\n product.ItemId,\n props.context.actionContext.requestContext.apiSettings,\n props.context.request.app?.config?.OmniChannelMedia\n );\n const productDimensions = product && CartLineItemFunctions.renderProductDimensions(product, destructDimensionStrings);\n const imageSettings = props.imageSettings;\n if (imageSettings) {\n imageSettings.cropFocalRegion = true;\n }\n const renderDisountLines = CartLineItemFunctions.renderDiscountLines(props);\n const renderInventoryLabel = CartLineItemFunctions.renderInventoryLabel(props);\n const renderUnitOfMeasure = CartLineItemFunctions.renderUnitOfMeasure(props);\n const renderShippingLabel = CartLineItemFunctions.renderShippingLabel(props);\n const renderOtherCharges = CartLineItemFunctions.renderOtherCharges(props);\n const renderSalesAgreementPrompt = CartLineItemFunctions.renderSalesAgreementPrompt(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, '', product?.RecordId.toString());\n const productAttribute = getTelemetryAttributes(props.telemetryContent!, payLoad);\n const productName = product?.Name || cartLine.Description;\n const imgeClassName = props.data.cartLine.IsInvoiceLine ? 'msc-cart-line__invoice-image' : 'msc-cart-line__product-image';\n\n const onChange = (newValue: number): boolean => {\n if (props.quantityOnChange) {\n return props.quantityOnChange(props.data.cartLine, newValue, props.lineIndex);\n }\n return true;\n };\n\n const _generateErrorMessage = (): JSX.Element | null => {\n if (props.errorMessage) {\n return (\n
\n \n {props.errorMessage}\n
\n );\n }\n\n return null;\n };\n\n const _generateQuantityandPrice = (): JSX.Element[] | null => {\n const nodes = [];\n if (props.isOutOfStock) {\n return null;\n }\n\n // No quantity selector for invoice line\n if (!props.data.cartLine.IsInvoiceLine) {\n if (props.data.product && props.isQuantityEditable) {\n nodes.push(\n
\n
{resources.quantityDisplayString}
\n \n
\n );\n } else {\n nodes.push(\n
\n \n {props.data.cartLine.Quantity}\n
\n );\n }\n }\n\n nodes.push(\n
\n \n {(props.data.cartLine.DiscountAmount && props.data.cartLine.DiscountAmount > 0 && (\n <>\n \n {` ${props.resources.discountStringText || 'Discount'} `}\n \n \n \n )) ||\n null}\n
\n );\n\n return nodes;\n };\n\n return (\n <>\n
\n
\n \n
\n
\n
\n \n {MsDyn365.isBrowser ? (\n \n {productName}\n \n ) : null}\n {ArrayExtensions.hasElements(productDimensions) ? (\n
{productDimensions}
\n ) : (\n ''\n )}\n {renderUnitOfMeasure}\n
\n \n
\n {renderDisountLines}\n {renderInventoryLabel}\n {props.showShippingChargesForLineItems &&
{renderShippingLabel}
}\n {renderOtherCharges}\n {renderSalesAgreementPrompt}\n
\n {_generateQuantityandPrice()}\n {props.data.cartLine.IsInvoiceLine && props.data.cartState && props.resources.priceEditorResources && (\n \n )}\n
\n
\n {_generateErrorMessage()}\n \n );\n};\n\nexport default CartLine;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Coupon } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPromoCodeProps extends IComponentProps<{}> {\n cart: ICartState | undefined;\n promoCodeHeadingText: string;\n appliedPromoCodeHeadingText: string;\n removePromoAriaLabelFormat: string;\n promoPlaceholderText: string;\n promoCodeApplyButtonText: string;\n collapseTimeOut: number;\n removePromoText: string;\n invalidPromoCodeErrorText: string;\n failedToAddPromoCodeErrorText: string;\n duplicatePromoCodeErrorText: string;\n failedToRemovePromoCodeErrorText: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n promoCodeApplyCallback?(): void;\n}\n\ninterface IPromoCodeState {\n isCollapseOpen: boolean;\n promoCodeInputValue: string;\n error: string;\n canApply: boolean;\n}\n\n/**\n *\n * The PromoCode component renders the promocode section.\n * @extends {React.PureComponent}\n */\nclass PromoCode extends React.Component {\n private readonly payLoad: IPayLoad;\n\n constructor(props: IPromoCodeProps, state: IPromoCodeState) {\n super(props);\n this.payLoad = getPayloadObject('click', this.props.telemetryContent!, TelemetryConstant.ApplyPromoCode);\n this.state = {\n isCollapseOpen: false,\n promoCodeInputValue: '',\n error: '',\n canApply: false\n };\n }\n\n public shouldComponentUpdate(nextProps: IPromoCodeProps, nextState: IPromoCodeState): 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 return (\n
\n
{this.props.promoCodeHeadingText}
\n {this._renderForm(this.props.promoPlaceholderText, this.props.promoCodeApplyButtonText, this.props.cart)}\n

\n {this.state.error}\n

\n {this._renderAppliedPromoCode(this.props)}\n
\n );\n }\n\n private readonly _onInputChangeHandler = (e: React.ChangeEvent) => {\n const error = e.target.value === '' ? '' : this.state.error;\n this.setState({\n promoCodeInputValue: e.target.value.trim(),\n error,\n canApply: !!e.target.value\n });\n };\n\n private readonly _applyPromotion = (cartState: ICartState | undefined) => {\n if (!cartState || !cartState.cart) {\n return;\n }\n const appliedPromo = this.state.promoCodeInputValue;\n\n cartState\n .addPromoCode({ promoCode: appliedPromo })\n .then(result => {\n if (result.status === 'SUCCESS') {\n // Show success text\n this.setState({ promoCodeInputValue: '', error: '', canApply: false });\n } else if (result.substatus === 'ALREADYADDED') {\n this.setState({ error: this.props.duplicatePromoCodeErrorText });\n } else {\n this.setState({ error: this.props.invalidPromoCodeErrorText });\n }\n })\n .catch(error => {\n this.setState({ error: this.props.failedToAddPromoCodeErrorText });\n });\n };\n\n /**\n * On Submit function.\n * @param cartState -Cartstate.\n * @returns Apply promotion.\n */\n private readonly _onSubmitHandler = (cartState: ICartState | undefined) => (event: React.FormEvent) => {\n event.preventDefault();\n this._applyPromotionHandler(cartState);\n };\n\n /**\n * On apply promotion function.\n * @param cartState -Cartstate.\n * @returns Apply promotion.\n */\n private readonly _applyPromotionHandler = (cartState: ICartState | undefined) => () => {\n this._applyPromotion(cartState);\n };\n\n private readonly _renderForm = (promoPlaceholderText: string, promoCodeApplyButtonText: string, cartState: ICartState | undefined) => {\n const attributes = getTelemetryAttributes(this.props.telemetryContent!, this.payLoad);\n\n return (\n
\n
\n \n \n {promoCodeApplyButtonText}\n \n
\n
\n );\n };\n\n private readonly _removePromotion = (cartState: ICartState | undefined, event: React.MouseEvent) => {\n if (!cartState) {\n return;\n }\n const code = event.currentTarget.getAttribute('data-value') || '';\n cartState\n .removePromoCodes({\n promoCodes: [code]\n })\n .then(result => {\n if (result.status === 'SUCCESS') {\n this.setState({ error: '' });\n }\n })\n .catch(() => {\n this.setState({ error: this.props.failedToRemovePromoCodeErrorText });\n });\n };\n\n private readonly _calculateDiscount = (code: string, cartState: ICartState | undefined) => {\n if (!cartState || !cartState.cart || !cartState.cart.CartLines || cartState.cart.CartLines.length === 0 || !code) {\n return;\n }\n let discountAmount = 0;\n for (const line of cartState.cart.CartLines) {\n if (line.DiscountLines) {\n for (const discountLine of line.DiscountLines) {\n if (discountLine.DiscountCode === code) {\n discountAmount += discountLine.DiscountCost!;\n }\n }\n }\n }\n return discountAmount * -1;\n };\n\n private readonly _renderAppliedPromoCode = (props: IPromoCodeProps) => {\n if (!props.cart || !props.cart.cart || !props.cart.cart.Coupons || props.cart.cart.Coupons.length === 0) {\n return;\n }\n\n const removePromotionHandler = (event: React.MouseEvent) => {\n this._removePromotion(props.cart, event);\n };\n\n const promoCodTotalDiscount = props.cart.cart.Coupons.reduce((count: number, coupon: Coupon) => {\n return count + (this._calculateDiscount(coupon.Code || '', props.cart) || 0);\n }, 0);\n\n return (\n <>\n
\n
{this.props.appliedPromoCodeHeadingText}
\n \n
\n {props.cart.cart.Coupons.map((coupon: Coupon) => {\n const ariaLabel = props.removePromoAriaLabelFormat\n ? format(props.removePromoAriaLabelFormat, props.removePromoText, coupon.Code)\n : '';\n\n return (\n
\n
\n {coupon.Code}{' '}\n \n
\n \n {props.removePromoText}\n \n
\n );\n })}\n \n );\n };\n}\n\nexport default PromoCode;\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 { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderData } from '../header.data';\nimport { IHeaderProps } from '../header.props.autogenerated';\n\n/**\n * The header preferred store component.\n */\n@observer\nexport class HeaderPreferredStore extends React.PureComponent> {\n private readonly modalCloseButtonRef: React.RefObject = React.createRef();\n\n /**\n * Handle click on the store selector.\n * @returns : Promise void.\n */\n public handleClick = () => {\n return this._findPreferredStoreOnClick(this.props);\n };\n\n public render(): JSX.Element | undefined {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n slots,\n resources\n } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- slots can be undefined.\n if (ArrayExtensions.hasElements(slots?.storeSelector)) {\n const storeName =\n storeSelectorStateManager?.preferredStore && storeSelectorStateManager.preferredStore.StoreName\n ? storeSelectorStateManager.preferredStore.StoreName\n : resources.headerPreferredStoreText;\n\n return (\n
\n \n {storeName}\n \n {slots.storeSelector}\n
\n );\n }\n\n return undefined;\n }\n\n private async _findPreferredStoreOnClick(props: IHeaderProps): Promise {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n modules\n } = props;\n if (!storeSelectorStateManager) {\n return;\n }\n let storeSelectorId: string = '';\n if (modules && Object.keys(modules).length > 0 && ArrayExtensions.hasElements(modules.storeSelector)) {\n storeSelectorId = modules.storeSelector[0].id;\n }\n await storeSelectorStateManager\n .openDialog({\n id: storeSelectorId,\n showMapViewLink: true,\n parentElementRef: this.modalCloseButtonRef,\n onLocationSelected: orgUnitLocation => {\n return Promise.resolve();\n }\n })\n .catch((error: Error) => {\n if (props.telemetry) {\n props.telemetry.error(error.message);\n props.telemetry.debug('Unable to set preferred store');\n }\n });\n }\n}\n\nexport default HeaderPreferredStore;\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, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILogoProps {\n image: Msdyn365.IImageData;\n gridSettings?: Msdyn365.IGridSettings;\n link?: ILinkData;\n className?: string;\n telemetryContent?: ITelemetryContent;\n requestContext: Msdyn365.IRequestContext;\n typeName?: string;\n}\n\nexport interface ILinkData {\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n linkText?: string;\n}\n\n/**\n *\n * Logo component.\n * @extends {React.PureComponent}\n */\nexport class Logo extends React.PureComponent {\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: ILogoProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n return
{this._renderLogo(this.props)}
;\n }\n\n private _renderLogo(config: ILogoProps): JSX.Element {\n if (config.link && config.link.linkUrl.destinationUrl) {\n return (\n \n {this._renderImage(config)}\n \n );\n }\n return this._renderImage(config);\n }\n\n private _renderImage(config: ILogoProps): JSX.Element {\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=132&h=28&m=6', w: 0, h: 0 },\n lg: { q: 'w=160&h=48&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n}\n\nexport default Logo;\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 {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderResources } from '../header.props.autogenerated';\n\nexport interface INavIconProps {\n resources: IHeaderResources;\n isExpanded: boolean;\n targetId: string;\n telemetryContent?: ITelemetryContent;\n toggleNavBar(): void;\n}\n\n/**\n *\n * NavIcon component.\n * @extends {React.PureComponent}\n */\n\n@observer\nexport class NavIcon extends React.PureComponent {\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: INavIconProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.NavIcon);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n return (\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 { CartIconComponent, WishListIconComponent } from '@msdyn365-commerce/components';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ErrorNotification, NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n format,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n KeyCodes,\n Modal,\n ModalBody,\n ModalHeader,\n onTelemetryClick,\n Popover,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { HeaderPreferredStore, Logo, NavIcon } from './components';\nimport { IHeaderData } from './header.data';\nimport { IHeaderProps, IHeaderResources, IMyAccountLinksData } from './header.props.autogenerated';\n\nexport interface IHeaderState {\n mobileMenuCollapsed: boolean;\n signinPopoverOpen: boolean;\n hasSigninerror?: boolean;\n}\n\nexport interface IHeaderViewProps extends IHeaderProps, IHeaderState {\n logo: React.ReactNode;\n wishListIconDesktop: React.ReactNode;\n wishListIconMobile: React.ReactNode;\n cartIcon: React.ReactNode;\n navIcon: React.ReactNode;\n className: string;\n menuBar: React.ReactNode[];\n search: React.ReactNode[];\n siteOptions: React.ReactNode[];\n HeaderTag: IModuleProps;\n HeaderContainer: INodeProps;\n MobileMenuContainer: INodeProps;\n MobileMenuHeader: React.ReactNode;\n MobileMenuBodyContainer: INodeProps;\n MobileMenuLinksContainer: INodeProps;\n HeaderTopBarContainer: INodeProps;\n Divider: INodeProps;\n\n AccountInfoDropdownParentContainer?: INodeProps;\n AccountInfoDropdownPopoverConentContainer?: INodeProps;\n accountInfoDropdownButton?: React.ReactNode;\n\n signOutLink?: React.ReactNode;\n signInLink?: React.ReactNode;\n switchCustomerLink?: React.ReactNode;\n isOBORequest?: boolean;\n accountLinks?: React.ReactNode[];\n preferredStore?: React.ReactNode;\n currentDistributor?: React.ReactNode;\n}\n\n/**\n *\n * Header component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass Header extends React.PureComponent, IHeaderState> {\n private readonly popOverRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private cart: ICartState | undefined;\n\n private isB2BSite: boolean = false;\n\n /**\n * The signed-in user name displayed in the header bar\n */\n @computed public get displayName(): Readonly {\n return (\n (MsDyn365.isOboRequest(this.props.context.request) ? this.workerName : this.customerName) ||\n this.props.context.request?.user?.name\n );\n }\n\n /**\n * OBO scenario. The name of worker who shops on behalf of customer.\n */\n @computed public get workerName(): Readonly {\n const worker = this.props.data.employee?.result;\n return worker?.Name;\n }\n\n @computed public get customerName(): Readonly {\n const customer = this.props.data.accountInformation?.result;\n if (MsDyn365.isOboRequest(this.props.context.request)) {\n // For OBO scenario, display full customer name because multiple customers may have the same first name.\n return customer ? customer.Name : undefined;\n } else {\n return customer ? customer.FirstName || customer.Name : undefined;\n }\n }\n\n public constructor(props: IHeaderProps) {\n super(props);\n this.popOverRef = React.createRef();\n this._toggleNavbar = this._toggleNavbar.bind(this);\n this._togglePopover = this._togglePopover.bind(this);\n this._keydown = this._keydown.bind(this);\n this.state = {\n mobileMenuCollapsed: true,\n signinPopoverOpen: false,\n hasSigninerror: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.isB2BSite = isChannelTypeB2B(this.props.context.request);\n }\n\n public componentDidMount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.addEventListener('keydown', this._keydown);\n }\n reaction(\n () => {\n this.props.data.cart.result;\n },\n () => {\n this.cart = this.props.data.cart.result;\n }\n );\n\n const {\n context: {\n request: { user }\n },\n resources: {\n signUpCustomerNotFoundTitle,\n signUpMultipleCustomerFoundTitle,\n signInCustomerNotAuthorizedTitle,\n closeNotificationLabel\n }\n } = this.props;\n\n const signinNotificationError = this._getSigninNotification(\n user,\n signUpMultipleCustomerFoundTitle,\n signUpCustomerNotFoundTitle,\n signInCustomerNotAuthorizedTitle\n );\n if (signinNotificationError !== undefined && this.state.hasSigninerror === false) {\n // For signup show simple error notification.\n NotificationsManager.instance().addNotification(new ErrorNotification(signinNotificationError, closeNotificationLabel));\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.removeEventListener('keydown', this._keydown, false);\n }\n }\n\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n data: { accountInformation, wishlists },\n context: {\n request: { user }\n },\n context,\n resources: { cartLabel, cartQtyLabel }\n } = this.props;\n const { logoLink, logoImage, shouldShowWishlistCount } = this.props.config;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- app config is generic\n const disableTooltip = this.props.context.app.config.disableTooltip || false;\n const headerToggleClass = this.state.mobileMenuCollapsed ? '' : 'ms-header-open';\n const headerClassName = classnames('ms-header', this.props.config.className, headerToggleClass);\n const navbarKey = 'header-nav-mobile';\n const customer = accountInformation && accountInformation.result;\n const cartIconSlot = this._getSlot('cartIcon');\n const menuBarSlot = this._getSlot('menuBar');\n const searchSlot = this._getSlot('search');\n let wishlistCount = 0;\n const siteOptionsSlot = this._getSlot('siteOptions');\n const preferredStoreSlot = this._getSlot('storeSelector');\n const currentDistributorSlot = this._getSlot('distributorSelector');\n if (wishlists !== undefined) {\n if (\n !wishlists.result ||\n !ArrayExtensions.hasElements(wishlists.result) ||\n !wishlists.result[0].CommerceListLines ||\n !ArrayExtensions.hasElements(wishlists.result[0].CommerceListLines)\n ) {\n wishlistCount = 0;\n } else {\n wishlistCount = wishlists.result[0].CommerceListLines.length;\n }\n }\n const viewProps: IHeaderViewProps = {\n ...(this.props as IHeaderProps),\n ...this.state,\n logo: (\n \n ),\n wishListIconDesktop: (\n \n ),\n wishListIconMobile: (\n \n ),\n cartIcon: ArrayExtensions.hasElements(cartIconSlot) ? (\n cartIconSlot[0]\n ) : (\n \n ),\n navIcon: (\n \n ),\n menuBar: ArrayExtensions.hasElements(menuBarSlot) ? menuBarSlot : [],\n search: ArrayExtensions.hasElements(searchSlot) ? searchSlot : [],\n siteOptions: ArrayExtensions.hasElements(siteOptionsSlot) ? siteOptionsSlot : [],\n className: headerClassName,\n HeaderTag: {\n moduleProps: this.props,\n className: classnames(headerClassName),\n 'aria-label': this.props.resources.headerAriaLabel,\n tag: 'header'\n },\n HeaderContainer: {\n className: classnames('ms-header__container')\n },\n HeaderTopBarContainer: {\n className: classnames('ms-header__topbar')\n },\n Divider: {\n className: classnames('ms-header__divider')\n },\n MobileMenuContainer: {\n tag: Modal,\n id: navbarKey,\n className: 'ms-header__mobile-hamburger',\n isOpen: !this.state.mobileMenuCollapsed,\n wrapClassName: 'ms-header__modal',\n toggle: this._toggleNavbar\n },\n MobileMenuHeader: ,\n MobileMenuBodyContainer: {\n tag: ModalBody,\n className: 'ms-header__mobile-hamburger-menu-body'\n },\n MobileMenuLinksContainer: {\n className: 'ms-header__mobile-hamburger-menu-links'\n },\n AccountInfoDropdownParentContainer: {\n className: 'ms-header__account-info'\n },\n AccountInfoDropdownPopoverConentContainer: this.displayName\n ? {\n tag: Popover,\n id: 'myprofilePopover',\n className: 'ms-header__account-info-content',\n placement: 'bottom',\n isOpen: this.state.signinPopoverOpen,\n target: this.popOverRef,\n toggle: this._togglePopover\n }\n : undefined,\n signInLink: this._getSigninButton(user, this.props.resources),\n signOutLink: this._getSignOutButton(user, this.props.resources),\n isOBORequest: MsDyn365.isOboRequest(this.props.context.request),\n switchCustomerLink: this._getSwitchCustomerButton(user, this.props.resources),\n accountInfoDropdownButton: this._getAccountInfoDropdownButton(user, this.props.resources),\n accountLinks: this._getAccountLinks(customer),\n preferredStore: ArrayExtensions.hasElements(preferredStoreSlot) && ,\n currentDistributor: this.isB2BSite && ArrayExtensions.hasElements(currentDistributorSlot) ? currentDistributorSlot : undefined\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle link text change.\n * @param linkIndex - Link Index.\n * @returns : Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.myAccountLinks?.[linkIndex]) {\n this.props.config.myAccountLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Get the slot.\n * @param slotName - Name of the slot.\n * @returns The slot.\n */\n private _getSlot(slotName: string): React.ReactNode[] | null {\n const { slots } = this.props;\n return (slots && slots[slotName] && slots[slotName].length && slots[slotName]) || null;\n }\n\n /**\n * Renders the sign in button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSigninButton(user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n !this.displayName && (\n \n \n {resources.signInLinkText}\n \n \n )\n );\n }\n\n /**\n * Renders the sign out button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSignOutButton(user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignOut);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n this.displayName && (\n \n \n {resources.signOutLinkText}\n \n \n )\n );\n }\n\n /**\n * Renders the sign out button.\n * @param user - Request context user.\n * @param resources - Resources.\n * @returns React Node.\n */\n private _getSwitchCustomerButton(\n user: MsDyn365.IRequestContextUser | undefined,\n resources: IHeaderResources\n ): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SwitchCustomer);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const isOBOAccountSelected =\n MsDyn365.isOboRequest(this.props.context.request) && this.props.context.request.cookies.getAccountSelectionCookie();\n return (\n this.displayName &&\n isOBOAccountSelected && (\n this.props.context.request.cookies.removeAccountSelectionCookie()}\n {...attributes}\n >\n
\n
{format(resources.shoppingAsText, this.customerName)}
\n
{resources.switchCustomerLinkText}
\n
\n \n )\n );\n }\n\n private getBusinessPartnerSelectionUrl(): string | undefined {\n const route = MsDyn365.getUrlSync('businessPartnerSelection', this.props.context.actionContext);\n if (!route || !MsDyn365.msdyn365Commerce.isBrowser) {\n return undefined;\n }\n\n // MsDyn365.getUrlSync persists some params in the route and remove other params.\n // Among the persisted params, we need to remove catalogid.\n const persistedParamToRemove = ['catalogid'];\n const url = new URL(route, window.location.href);\n persistedParamToRemove.forEach(param => url.searchParams.delete(param));\n return url.href;\n }\n\n private _getSigninNotification(\n user: MsDyn365.IRequestContextUser | undefined,\n signUpMultipleCustomerFoundTitle: string,\n signUpCustomerNotFoundTitle: string,\n signInCustomerNotAuthorizedTitle: string\n ): string | undefined {\n if (!user?.retailServerErrorCode) {\n return undefined;\n }\n\n const { signUpCustomerNotFound, signUpMultipleCustomerFound, signInCustomerNotAuthorized } = this.props.config;\n const notFoundError = 'Microsoft_Dynamics_Commerce_Runtime_CustomerNotFound_WhenAutoLinking';\n const multipleAccountError = 'Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountsFoundWithSameEmailAddress';\n const accountAuthorizationError = 'Microsoft_Dynamics_Commerce_Runtime_AuthorizationFailed';\n\n if (user?.retailServerErrorCode === notFoundError) {\n return signUpCustomerNotFound !== undefined ? signUpCustomerNotFound : signUpCustomerNotFoundTitle;\n } else if (user?.retailServerErrorCode === multipleAccountError) {\n return signUpMultipleCustomerFound !== undefined ? signUpMultipleCustomerFound : signUpMultipleCustomerFoundTitle;\n } else if (user?.retailServerErrorCode === accountAuthorizationError) {\n return signInCustomerNotAuthorized !== undefined ? signInCustomerNotAuthorized : signInCustomerNotAuthorizedTitle;\n }\n return user?.retailServerErrorMessage;\n }\n\n private _getAccountInfoDropdownButton(\n user: MsDyn365.IRequestContextUser | undefined,\n resources: IHeaderResources\n ): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.MyProfile);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return (\n this.displayName && (\n \n
\n
{this.displayName}
\n {MsDyn365.isOboRequest(this.props.context.request) && this.customerName && (\n
{format(resources.shoppingAsText, this.customerName)}
\n )}\n
\n \n )\n );\n }\n\n private _getAccountLinks(customer: Customer | undefined): React.ReactNode[] | undefined {\n const { myAccountLinks } = this.props.config;\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\n if (!this.displayName || !myAccountLinks || !ArrayExtensions.hasElements(myAccountLinks)) {\n return undefined;\n }\n return myAccountLinks.map((cta: IMyAccountLinksData, index: number) => {\n payLoad.contentAction.etext = cta.linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: cta.ariaLabel,\n className: 'ms-signin-info__account-link-button',\n linkText: cta.linkText,\n linkUrl: cta.linkUrl.destinationUrl,\n openInNewTab: cta.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n\n return (\n \n );\n });\n }\n\n private _toggleNavbar(): void {\n this.setState({\n mobileMenuCollapsed: !this.state.mobileMenuCollapsed\n });\n }\n\n private _togglePopover(): void {\n this.setState({\n signinPopoverOpen: !this.state.signinPopoverOpen\n });\n }\n\n private _keydown(event: KeyboardEvent): void {\n if (event.keyCode === KeyCodes.Escape) {\n this.setState({ mobileMenuCollapsed: true });\n }\n }\n}\n\nexport default Header;\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 { IHeaderViewProps } from './header';\n\nconst headerView: React.FC = props => {\n const {\n HeaderTag,\n HeaderContainer,\n HeaderTopBarContainer,\n MobileMenuContainer,\n MobileMenuBodyContainer,\n MobileMenuLinksContainer,\n Divider\n } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {props.currentDistributor}\n {_renderDesktopAccountBlock(props)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n \n \n {props.MobileMenuHeader}\n {_renderReactFragment(props.menuBar)}\n \n {props.accountLinks ? props.accountLinks.map(link => link) : false}\n {props.siteOptions}\n {props.wishListIconMobile}\n {props.signInLink}\n {props.signOutLink}\n \n \n \n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map(link => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return {signInLink};\n }\n }\n props.context.telemetry.error('Header content is empty, module wont render.');\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AddOrderTemplateToCartComponent, ILinesAddedToCartDialogResources } from '@msdyn365-commerce/components';\nimport { getUrlSync, ICoreContext, IImageSettings, Image, ITelemetry } from '@msdyn365-commerce/core';\nimport { ProductList, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n getFallbackImageUrl,\n getProductUrlSync,\n OrderTemplate,\n OrderTemplateLine,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateActionMessageState } from '../order-template-list';\n\nexport interface ISingleOrderTemplateProps extends ProductList {\n orderTemplateState: IOrderTemplateActionMessageState;\n name?: string;\n orderTemplate: OrderTemplate;\n context: ICoreContext;\n imageSettings?: IImageSettings;\n enableImageProductLink?: boolean;\n removeFromOrderTemplateListText: string;\n addToBagText: string;\n index: number;\n itemKey: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n handlers: {\n onRemoveOrderTemplate(id: string): void | undefined;\n onDismiss(): void;\n };\n resources: {\n closeWindowButtonText: string;\n addToCartFailureMessage: string;\n addToCartSuccessMessage: string;\n addToCartProcessMessage: string;\n orderTemplateErrorMessage: string;\n linesAddedToCartDialogResources: ILinesAddedToCartDialogResources;\n };\n telemetryContent?: ITelemetryContent;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n}\n\nexport interface ISingleOrderTemplateViewProps {\n key: string;\n orderTemplateImage: React.ReactNode;\n addToCartButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n orderTemplateStatusMessage?: React.ReactNode;\n orderTemplateName?: React.ReactNode;\n orderTemplateAriaLabel?: string;\n orderTemplateHeaderDivider?: React.ReactNode;\n}\n\nconst _removeItemFromOrderTemplateList = (props: ISingleOrderTemplateProps): void => {\n const { onRemoveOrderTemplate } = props.handlers;\n const { itemKey } = props;\n\n onRemoveOrderTemplate && itemKey && onRemoveOrderTemplate(itemKey);\n};\n\nconst OrderTemplateActions = {\n removeOrderTemplate: _removeItemFromOrderTemplateList\n};\n\n/**\n * Remove order template action.\n * @param input -Single order template props.\n * @returns Set remove order template.\n */\nconst removeOrderTemplateActionHandler = (input: ISingleOrderTemplateProps) => () => {\n OrderTemplateActions.removeOrderTemplate(input);\n};\n\nexport const OrderTemplateRender = (input: ISingleOrderTemplateProps): ISingleOrderTemplateViewProps | null => {\n const {\n Id,\n orderTemplate,\n removeFromOrderTemplateListText,\n orderTemplateState,\n handlers,\n name,\n imageSettings,\n context,\n telemetryContent,\n enableImageProductLink\n } = input;\n\n if (!Id) {\n return null;\n }\n\n const _getOrderTemplatePageUrl = (): string => {\n const url = getUrlSync('ordertemplate', context.actionContext) ?? '';\n const separator = url.includes('?') ? '&' : '?';\n if (Id) {\n return `${url}${separator}id=${Id}`;\n }\n return '';\n };\n\n const { onDismiss } = handlers;\n\n return {\n key: `${Id}-template`,\n orderTemplateImage: _renderOrderTemplateImages(context, orderTemplate.orderTemplateLines, imageSettings, enableImageProductLink),\n orderTemplateAriaLabel: _renderAriaLabel(input),\n orderTemplateName: (\n
\n \n
\n {orderTemplate.totalLines}\n {` `}\n line items\n
\n
\n
\n ),\n addToCartButton: (\n
\n \n
\n ),\n removeButton: (\n \n ),\n orderTemplateStatusMessage: orderTemplateState && orderTemplateState.isOpen && orderTemplateState.userMessage && (\n
\n \n {orderTemplateState.userMessage}\n \n
\n )\n };\n};\n\n/**\n * On image click handler.\n * @param productUrl -Product url value.\n * @returns Assign window location.\n */\nconst onClickHandler = (productUrl: string) => () => {\n window.location.assign(productUrl);\n};\n\nconst _renderOrderTemplateImages = (\n context: ICoreContext,\n orderTemplateLines?: OrderTemplateLine[],\n imageSettings?: IImageSettings,\n enableImageProductLink?: boolean\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\n lg: { q: 'w=140&h=140&m=6', w: 0, h: 0 },\n xl: { q: 'w=140&h=140&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n if (orderTemplateLines) {\n const count = orderTemplateLines.length < 4 ? orderTemplateLines.length : 4;\n\n return (\n
\n {orderTemplateLines?.slice(0, count).map(line => {\n const productUrl = line.fullProduct\n ? _updateProductUrlCatalog(line.fullProduct.ProductDetails, context, line?.productListLine?.CatalogId)\n : '';\n\n return (\n \n );\n })}\n
\n );\n }\n return
;\n};\n\n// This method is used to update the product url with the catalogId\nconst _updateProductUrlCatalog = (productDetails: SimpleProduct, context: ICoreContext, catalogId: number | undefined): string => {\n const productUrl = getProductUrlSync(productDetails, context.actionContext, undefined);\n if (!StringExtensions.isNullOrWhitespace(productUrl) && catalogId !== undefined) {\n const fullUrl = new URL(productUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${catalogId ?? 0}`);\n return fullUrl.href;\n }\n return productUrl;\n};\n\nconst _renderAriaLabel = (props: ISingleOrderTemplateProps): string => {\n const { name } = props;\n return `${name}`;\n};\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\nimport { orderTemplateListStatus } from '../order-template-list';\n\nexport interface IOrderTemplateListStatusMessageProps {\n className?: string;\n errorType: orderTemplateListStatus;\n text?: string;\n}\n\nexport const OrderTemplateListStatusMessage: React.FC = ({ className, errorType, text }) => {\n switch (errorType) {\n case 'EMPTY':\n return

{text}

;\n case 'FAILED':\n return

{text}

;\n case 'LOADING':\n default:\n return

{text}

;\n }\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IOrderTemplateNameDialogResources, OrderTemplateNameDialog } from '@msdyn365-commerce/components';\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport React, { useState } from 'react';\n\nconst modalCloseButtonReference: React.RefObject = React.createRef();\n\n/**\n * The Create Order Template Button Props.\n */\nexport interface ICreateOrderTemplateButtonProps extends IComponentProps {\n /**\n * The label for create order template.\n */\n createOrderTemplateText: string;\n\n /**\n * The create order template dialog resources.\n */\n createOrderTemplateDialogResources: IOrderTemplateNameDialogResources;\n\n /**\n * The delegate to fire when dialog captured any user entry.\n */\n onOrderTemplateCreated(): Promise;\n}\n\nconst CreateOrderTemplateButton: React.FC = props => {\n const onCancelHandler = React.useCallback(() => {\n return;\n }, []);\n const [isCreateOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = useState(false);\n const onCreateButtonClick = React.useCallback(() => {\n setOrderTemplateNameDialogOpen(true);\n }, []);\n\n return (\n <>\n \n {props.createOrderTemplateText}\n \n \n \n );\n};\n\nexport default CreateOrderTemplateButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IOrderTemplateNameDialogResources } from '@msdyn365-commerce/components';\nimport { deleteAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { OrderTemplate } from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Heading, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport Spinner from '../order-template/components/add-line/spinner';\nimport {\n ISingleOrderTemplateProps,\n ISingleOrderTemplateViewProps,\n OrderTemplateListStatusMessage,\n OrderTemplateRender\n} from './components';\nimport CreateNewTemplateButtonComponent from './components/create-order-template';\nimport { IOrderTemplateListData } from './order-template-list.data';\nimport { HeadingTag, IOrderTemplateListProps, IOrderTemplateListResources } from './order-template-list.props.autogenerated';\n\nexport interface IOrderTemplateActionMessageState {\n itemKey: string;\n userMessage: string;\n statusCssString: string;\n messageGlyph: string;\n isOpen: boolean;\n headerStatusMessage: string;\n}\n\nexport type orderTemplateListStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\n\nexport interface IOrderTemplateListViewProps extends IOrderTemplateListProps {\n OrderTemplateList: IModuleProps;\n status?: orderTemplateListStatus;\n statusMessage?: React.ReactNode;\n heading?: React.ReactNode;\n OrderTemplates?: INodeProps;\n OrderTemplate?: INodeProps;\n orderTemplates?: ISingleOrderTemplateViewProps[];\n createOrderTemplateButton?: React.ReactNode;\n templateHeaderStatusMessage?: React.ReactNode;\n}\n\n/**\n *\n * OrderTemplateList component.\n * @extends {React.PureComponent, IOrderTemplateListActionMessageState>}\n */\n@observer\nclass OrderTemplateList extends React.Component, IOrderTemplateActionMessageState> {\n constructor(props: IOrderTemplateListProps) {\n super(props);\n this.state = {\n itemKey: '',\n userMessage: '',\n headerStatusMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false\n };\n }\n\n public async componentDidMount(): Promise {\n this.setState({});\n }\n\n public shouldComponentUpdate(\n nextProps: IOrderTemplateListProps,\n nextState: IOrderTemplateActionMessageState\n ): 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 | null {\n const { className, heading } = this.props.config;\n const { emptyOrderTemplateText, createNewTemplateButtonText } = this.props.resources;\n const { orderTemplates } = this.props.data;\n const orderTemplatesData = orderTemplates && orderTemplates.result;\n const orderTemplateListHeading = heading?.text ?? this.props.resources.orderTemplateListTitle;\n\n if (orderTemplates.status === 'LOADING') {\n const errorProps: IOrderTemplateListViewProps = {\n ...(this.props as IOrderTemplateListProps),\n OrderTemplateList: {\n moduleProps: this.props,\n className: classnames('ms-order-template', className)\n },\n status: 'LOADING',\n statusMessage: ,\n heading: (\n \n )\n };\n return this.props.renderView(errorProps);\n }\n\n if (orderTemplatesData && orderTemplatesData.length === 0) {\n // When no order templates are found for customer\n const emptyViewProps: IOrderTemplateListViewProps = {\n ...(this.props as IOrderTemplateListProps),\n OrderTemplateList: {\n moduleProps: this.props,\n className: classnames('ms-order-template', className)\n },\n status: 'EMPTY',\n statusMessage: ,\n createOrderTemplateButton: (\n \n ),\n heading: (\n \n )\n };\n\n return this.props.renderView(emptyViewProps);\n }\n\n const viewProps: IOrderTemplateListViewProps = {\n ...(this.props as IOrderTemplateListProps),\n OrderTemplateList: {\n moduleProps: this.props,\n className: classnames('ms-order-template', className)\n },\n status: 'SUCCESS',\n heading: ,\n createOrderTemplateButton: (\n \n ),\n templateHeaderStatusMessage: this.state.isOpen && this.state.headerStatusMessage && (\n
\n \n {this.state.headerStatusMessage}\n \n
\n ),\n OrderTemplates: {\n className: 'ms-order-template__list-item',\n tag: 'ul'\n },\n OrderTemplate: {\n className: 'ms-order-template__tile',\n tag: 'li'\n },\n orderTemplates: orderTemplatesData && this._renderOrderTemplateList(orderTemplatesData)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _generateOrderTemplateNameDialogResources(resources: IOrderTemplateListResources): IOrderTemplateNameDialogResources {\n return {\n orderTemplateHeaderLabel: resources.createOrderTemplateHeader,\n orderTemplateTitleLabel: resources.orderTemplateTitle,\n orderTemplateNameAriaLabel: resources.orderTemplateNameAriaLabel,\n orderTemplateDescription: resources.createOrderTemplateDescription,\n\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\n\n orderTemplateButtonLabel: resources.createOrderTemplateButtonText,\n orderTemplateCancelButtonLabel: resources.cancelNewOrderTemplateCreationButtonText\n };\n }\n\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n private _renderOrderTemplateList(orderTemplates: OrderTemplate[]): ISingleOrderTemplateViewProps[] {\n const { context, telemetry } = this.props;\n const { imageSettings, enableImageProductLink } = this.props.config;\n return orderTemplates.map((orderTemplate: OrderTemplate, index) => {\n const currentTemplateProps: ISingleOrderTemplateProps = {\n orderTemplateState: this.state,\n Id: orderTemplate.productList.Id,\n name: orderTemplate.productList.Name,\n orderTemplate,\n context,\n imageSettings,\n enableImageProductLink,\n removeFromOrderTemplateListText: 'remove',\n addToBagText: this.props.resources.addToBagButtonText,\n index,\n itemKey: orderTemplate.productList.Id,\n telemetry,\n moduleId: this.props.id,\n moduleTypeName: this.props.typeName,\n handlers: {\n onRemoveOrderTemplate: this._onRemoveFromOrderTemplateList,\n onDismiss: this._onDismiss\n },\n resources: {\n closeWindowButtonText: this.props.resources.closeWindowButtonText,\n addToCartFailureMessage: this.props.resources.addToCartFailureMessage,\n addToCartSuccessMessage: this.props.resources.addToCartSuccessMessage,\n addToCartProcessMessage: this.props.resources.addToCartProcessMessage,\n orderTemplateErrorMessage: this.props.resources.orderTemplateErrorMessage,\n linesAddedToCartDialogResources: {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n linesAddedToCartHeaderItemsOneText: this.props.resources.linesAddedToCartHeaderItemsOneText,\n linesAddedToCartHeaderLinesOneText: this.props.resources.linesAddedToCartHeaderLinesOneText,\n linesAddedToCartHeaderLinesFormatText: this.props.resources.linesAddedToCartHeaderLinesFormatText,\n linesAddedToCartHeaderMessageText: this.props.resources.linesAddedToCartHeaderMessageText\n }\n },\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled()\n };\n\n return OrderTemplateRender(currentTemplateProps)!;\n });\n }\n\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\n });\n };\n\n private readonly _reloadPage = async () => {\n window.location.reload();\n };\n\n private readonly _onRemoveFromOrderTemplateList = (productListId: string): void | undefined => {\n const { context, data, telemetry, resources } = this.props;\n const { orderTemplates } = data;\n\n if (context && context.actionContext) {\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplates.result && orderTemplates.result[0] && productListId) {\n const orderTemplate = orderTemplates.result.find(p => p.productList.Id === productListId);\n if (orderTemplate) {\n deleteAsync({ callerContext: context.actionContext }, orderTemplate.productList)\n .then()\n .catch((error: string) => {\n telemetry.warning('[order-template-list] Unable to delete order template.');\n telemetry.error(error);\n this.setState({\n itemKey: productListId,\n headerStatusMessage: resources.deleteOrderTemplateFailedText,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n })\n .then(this._reloadPage)\n .catch((error: string) => {\n telemetry.warning('[order-template-list] Unable to delete order template.');\n telemetry.error(error);\n });\n } else {\n telemetry.warning('[order-template-list] Failed to delete order template. Order template was not found');\n }\n } else {\n telemetry.warning('[order-template-list] Failed to delete order template.');\n }\n }\n };\n}\n\nexport default OrderTemplateList;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISingleOrderTemplateViewProps } from './components';\nimport { IOrderTemplateListViewProps } from './order-template-list';\n\nexport const OrderTemplateListView: React.FC = props => {\n const {\n OrderTemplateList,\n status,\n statusMessage,\n heading,\n OrderTemplates,\n orderTemplates,\n OrderTemplate,\n createOrderTemplateButton,\n templateHeaderStatusMessage\n } = props;\n\n return (\n \n {heading}\n {status !== 'SUCCESS' && statusMessage}\n \n {createOrderTemplateButton}\n {templateHeaderStatusMessage}\n \n {OrderTemplates && orderTemplates && orderTemplates.length > 0 && (\n \n {orderTemplates &&\n orderTemplates.map(orderTemplate => {\n return _renderOrderTemplate(orderTemplate, OrderTemplate);\n })}\n \n )}\n \n );\n};\n\nconst _renderOrderTemplate = (orderTemplate: ISingleOrderTemplateViewProps, OrderTemplate?: INodeProps): JSX.Element | null => {\n const { key, addToCartButton, orderTemplateImage, orderTemplateStatusMessage, removeButton, orderTemplateName } = orderTemplate;\n return (\n \n {orderTemplateName}\n {orderTemplateImage}\n {addToCartButton}\n {removeButton}\n {orderTemplateStatusMessage}\n \n );\n};\n\nexport default OrderTemplateListView;\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 default (props: { className: string; msg?: string }) => (\n <>\n
\n {props?.msg &&
{props?.msg}
}\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { getCatalogId, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\nimport { ProductListLine, ProductSearchCriteria, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductCatalog, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n addItemToOrderTemplate,\n AddItemToOrderTemplateInput,\n ArrayExtensions,\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getSelectedVariant,\n SelectedVariantInput,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Modal, ModalBody, ModalHeader, getPayloadObject, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport { get } from 'lodash';\nimport { computed } from 'mobx';\nimport React from 'react';\n\nimport { IProductConfigurationState, NotFoundComponent, ProductConfiguration, ProductList } from '.';\nimport Spinner from './spinner';\n\nexport interface IAddLineToTemplateProps {\n context: ICoreContext;\n resources: IAddLineToTemplateResources;\n orderTemplateId: string;\n imageSettings?: IImageSettings;\n isMultipleCatalogFeatureEnabledInHq: boolean;\n catalogs?: ProductCatalog[] | undefined;\n telemetryContent?: ITelemetryContent;\n}\n\nexport interface IAddLineToTemplateResources {\n addLineModalLinkText: string;\n searchButtonAriaLabel: string;\n searchInputAriaLabel: string;\n searchModalPlaceholderText: string;\n selectCatalogTitleText: string;\n selectProductButtonText: string;\n addItemToTemplateText: string;\n addLineProductUnitPricePrefix: string;\n backButtonText: string;\n decrementButtonAriaLabel: string;\n incrementButtonAriaLabel: string;\n quantitySelectLabel: string;\n addLineProductUnitOfMeasurePrefix: string;\n notFoundSearchErrorNotice: string;\n notFoundSearchErrorRedediation: string;\n searchErrorMessage: string;\n productDimensionTypeColor: string;\n productDimensionTypeConfiguration: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n searchResultsCountVerbage: string;\n searchResultsCountSubject: string;\n addToTemplateConfirmation: string;\n totalPriceLabel: string;\n progressNotificationText: string;\n addToTemplateDuplicateError: string;\n addToTemplateGenericError: string;\n dimensionMissingError: string;\n backToResultsText?: string;\n}\n\nenum CONTENT {\n Search,\n ProductList,\n ProductConfiguration,\n NotFound,\n Error,\n Loading\n}\n\ninterface IAddLineToTemplateState {\n isOpen: boolean;\n query: string;\n products: ProductSearchResult[];\n productCatalogs: ProductCatalog[] | null;\n content: number;\n selectedProduct: SimpleProduct | null;\n selectedCatalogId: number | undefined;\n selectedProductDimensions?: ProductDimensionFull[];\n selectedQuantity?: number;\n reloadPage?: boolean;\n}\n\n/**\n * Add Lines to order template.\n */\nexport class AddLineToTemplate extends React.Component {\n public state: IAddLineToTemplateState = {\n isOpen: false,\n query: '',\n products: [],\n productCatalogs: [],\n content: CONTENT.Search,\n selectedProduct: null,\n selectedCatalogId: 0\n };\n\n public defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n public searchTextInput: React.RefObject = React.createRef(); // @TODO public/private\n\n private readonly addLineButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAddLineToTemplateProps) {\n super(props);\n }\n\n public onComponentDidMount(): void {\n this.searchTextInput.current?.focus();\n }\n\n public componentDidMount(): void {\n this._getCatalogs();\n }\n\n public onComponentDidUpdate(): void {\n this.searchTextInput.current?.focus();\n }\n\n @computed get showBackArrow(): boolean {\n return this.state.content === CONTENT.ProductConfiguration;\n }\n\n public shouldComponentUpdate(nextProps: IAddLineToTemplateProps, nextState: IAddLineToTemplateState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const {\n resources: { addLineModalLinkText, backToResultsText }\n } = this.props;\n\n const modalProps = {\n ...this.props,\n className: 'msc-add-line-to-template',\n toggle: this._toggleModalHandler,\n isOpen: this.state.isOpen,\n ariaLabel: addLineModalLinkText\n };\n\n return (\n <>\n \n \n {this.showBackArrow && (\n \n )}\n {addLineModalLinkText}\n \n {this._renderContent()}\n \n \n \n {addLineModalLinkText}\n \n \n );\n }\n\n private readonly _renderSearchForm = () => {\n const {\n resources: { searchButtonAriaLabel, searchModalPlaceholderText, selectCatalogTitleText }\n } = this.props;\n\n return (\n \n {this.state.productCatalogs && ArrayExtensions.hasElements(this.state.productCatalogs) && (\n <>\n \n \n {this._getCatalogNodes()}\n \n \n )}\n
\n \n
\n \n );\n };\n\n private readonly _onSearchSubmit = (event: React.FormEvent): void => {\n event.preventDefault();\n\n const query = get(this, 'searchTextInput.current.value', null);\n\n if (!query) {\n return;\n }\n\n this.setState({\n content: CONTENT.Loading\n });\n\n this._getSearchResults(query)\n .then(result => {\n if (result.length === 0) {\n this.setState({\n products: result,\n content: CONTENT.NotFound\n });\n } else {\n this.setState({\n products: result,\n content: CONTENT.ProductList\n });\n }\n })\n .catch(error => {\n this.setState({\n content: CONTENT.Error\n });\n });\n };\n\n private readonly _onQuantityChangeHandler = (event: React.ChangeEvent) => {\n this.setState({\n selectedQuantity: +event.target.value\n });\n };\n\n private readonly _onSelectItem = async (product: ProductSearchResult): Promise => {\n const {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n } = this.props.context;\n const varianteInput = new SelectedVariantInput(product.RecordId, channelId, [], undefined, this.props.context.request);\n const productVariant = await getSelectedVariant(varianteInput, actionContext);\n\n if (!productVariant) {\n this.props.context.telemetry.error('Error retrieving product variant');\n return Promise.resolve([]);\n }\n\n const dimensions = await this._getProductDimensions(product as SimpleProduct);\n\n this.setState({\n selectedProductDimensions: dimensions,\n content: CONTENT.ProductConfiguration,\n selectedProduct: productVariant\n });\n\n return dimensions;\n };\n\n private readonly _onInputChange = (event: React.ChangeEvent): void => {\n this.setState({\n query: event.target.value\n });\n };\n\n private readonly _onBackButtonClickHandler = (): void => {\n this.setState({\n content: CONTENT.ProductList\n });\n };\n\n private readonly _highlightSearchTerm = (name: string) => {\n const parsedName = name && unescape(name.replace(new RegExp(this.state.query, 'i'), '$&'));\n\n return (\n \n );\n };\n\n private readonly _resultCountText = (): string => {\n return this.props.resources.searchResultsCountVerbage\n .replace('{count}', this.state.products.length.toString())\n .replace('{subject}', `${this.props.resources.searchResultsCountSubject}${this.state.products.length > 1 ? 's' : ''}`);\n };\n\n private _renderContent(): React.ReactNode | null {\n switch (this.state.content) {\n case CONTENT.ProductConfiguration:\n const { selectedProduct, selectedProductDimensions } = this.state;\n const viewProps = {\n ...this.props,\n imageSettings: this.props.imageSettings || this.defaultImageSettings,\n product: selectedProduct!,\n dimensions: selectedProductDimensions!,\n addToTemplateHandler: this._addItemToTemplateHandler,\n onQuantityChangeHandler: this._onQuantityChangeHandler,\n highlightSearchTerm: this._highlightSearchTerm,\n searchForm: this._renderSearchForm()\n };\n\n return ;\n\n case CONTENT.ProductList:\n const productProps = {\n ...this.props,\n imageSettings: this.props.imageSettings || this.defaultImageSettings,\n clickHandler: this._onSelectItem,\n products: this.state.products,\n highlightSearchTerm: this._highlightSearchTerm,\n searchForm: this._renderSearchForm(),\n renderResultCountText: this._resultCountText\n };\n\n return (\n \n \n \n );\n\n case CONTENT.Loading:\n return (\n \n {this._renderSearchForm()}\n \n \n );\n\n case CONTENT.NotFound:\n const { notFoundSearchErrorNotice, notFoundSearchErrorRedediation } = this.props.resources;\n\n return (\n \n

{this._resultCountText()}

\n {this._renderSearchForm()}\n \n
\n );\n\n case CONTENT.Error:\n return (\n \n {this._renderSearchForm()}\n
\n {this.props.resources.searchErrorMessage}\n
\n
\n );\n\n default:\n return {this._renderSearchForm()};\n }\n }\n\n private readonly _addItemToTemplateHandler = async (config: IProductConfigurationState): Promise => {\n const {\n orderTemplateId,\n context: { actionContext },\n isMultipleCatalogFeatureEnabledInHq\n } = this.props;\n const catalogId = this.state.selectedCatalogId;\n const input = isMultipleCatalogFeatureEnabledInHq\n ? new AddItemToOrderTemplateInput(\n orderTemplateId,\n config.product.RecordId,\n config.quantity,\n config.product.DefaultUnitOfMeasure || 'ea',\n isMultipleCatalogFeatureEnabledInHq,\n catalogId\n )\n : new AddItemToOrderTemplateInput(\n orderTemplateId,\n config.product.RecordId,\n config.quantity,\n config.product.DefaultUnitOfMeasure || 'ea'\n );\n const result = await addItemToOrderTemplate(input, actionContext);\n this.setState({\n isOpen: false,\n reloadPage: true\n });\n // reload when closing\n window.location.reload();\n return result;\n };\n\n /**\n *\n * Get all active product catalogs.\n */\n private _getCatalogs(): void {\n const { isMultipleCatalogFeatureEnabledInHq, catalogs } = this.props;\n\n // if Channel Multiple Catalogs Feature is enabled then show all catalogs.\n const productCatalogs = isMultipleCatalogFeatureEnabledInHq && catalogs ? catalogs : [];\n\n // get the current catalog id.\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n // set the current catalog id as a default selected catalog id from the url\n this.setState({\n productCatalogs: productCatalogs,\n selectedCatalogId: catalogId\n });\n }\n\n private _getCatalogNodes(): JSX.Element[] | null {\n const { productCatalogs, selectedCatalogId } = this.state;\n if (productCatalogs && ArrayExtensions.hasElements(productCatalogs)) {\n return productCatalogs.map((productCatalog: ProductCatalog) => {\n // initially select default catalog in dropdown\n const isSelected = productCatalog.RecordId === selectedCatalogId;\n return (\n \n );\n });\n }\n return [];\n }\n\n private readonly _onCatalogSelectionChange = (event: React.ChangeEvent) => {\n this.setState({\n selectedCatalogId: Number.parseInt(event.target.value, 10)\n });\n };\n\n private _getSearchResults(searchText: string): Promise {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n const { selectedCatalogId } = this.state;\n const searchCriteriaInput: ProductSearchCriteria = {};\n\n searchCriteriaInput.Context = {\n ChannelId: channelId,\n CatalogId: selectedCatalogId\n };\n\n if (process.env.NODE_ENV === 'development' && process.env.ENABLE_CLOUD_SEARCH?.toLowerCase() !== 'true') {\n searchCriteriaInput.IncludeAttributes = false;\n } else {\n searchCriteriaInput.IncludeAttributes = true;\n }\n searchCriteriaInput.SearchCondition = searchText;\n\n return searchByCriteriaAsync({ callerContext: actionContext }, searchCriteriaInput);\n }\n\n private async _getProductDimensions(product: SimpleProduct): Promise {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n const id = product.MasterProductId ? product.MasterProductId : product.RecordId;\n\n return getDimensionsForSelectedVariant(\n new GetDimensionsForSelectedVariantInput(id, channelId, [], this.props.context.request),\n actionContext\n );\n }\n\n private readonly _toggleModalHandler = () => {\n if (this.state.isOpen) {\n const payLoad = getPayloadObject('click', this.props.telemetryContent!, 'add-item-to-template', '');\n onTelemetryClick(this.props.telemetryContent!, payLoad, 'add-item-to-template');\n this._getCatalogs();\n this.addLineButtonRef.current!.focus();\n }\n\n this.setState({\n isOpen: !this.state.isOpen,\n content: CONTENT.Search\n });\n\n if (this.state.reloadPage) {\n window.location.reload();\n this.setState({\n reloadPage: false\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 { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\ninterface IDropdownState {\n /**\n * @friendlyName selectedIndex\n * @description Selected index.\n */\n selectedIndex: string;\n}\n\nexport interface IDropdownProps {\n dropdownId: number;\n dropdownName: string;\n dropdownList: IDropdownItemProps[];\n telemetryContent?: ITelemetryContent;\n onChange?(selection: IDropdownOnSelection): void;\n}\n\nexport interface IDropdownItemProps {\n value: string;\n id: number;\n}\n\nexport interface IDropdownOnSelection {\n dropdownId: number;\n selectId: string;\n selectedValue: string;\n}\n\n/**\n *\n * DropDown component.\n * @extends {React.PureComponent}\n */\nexport class Dropdown extends React.PureComponent {\n private readonly selectMenu: React.RefObject = React.createRef();\n\n constructor(props: IDropdownProps, state: IDropdownState) {\n super(props);\n this.state = {\n selectedIndex: ''\n };\n }\n\n public componentDidMount(): void {\n if (this.selectMenu.current) {\n this.selectMenu.current.selectedIndex = 0;\n }\n }\n\n public render(): JSX.Element {\n const { dropdownId, dropdownList, dropdownName } = this.props;\n\n return (\n \n {dropdownList.map(\n (item: IDropdownItemProps) =>\n item && (\n \n {item.value}\n \n )\n )}\n \n );\n }\n\n private readonly _onChanged = (event: React.ChangeEvent): void => {\n this.setState({ selectedIndex: event.target.value });\n\n if (this.props.onChange) {\n this.props.onChange({\n dropdownId: this.props.dropdownId,\n selectId: event.target.value,\n selectedValue: event.target.innerText\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 React from 'react';\n\nexport const NotFoundComponent = (props: { error: string; msg: string }) => (\n <>\n
\n
{props.error}
\n
{props.msg}
\n \n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { debounce } from 'lodash';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\ninterface IQuantityProps {\n min?: number;\n max: number;\n currentCount?: number;\n disabled?: boolean;\n incrementGlyphClass?: string;\n decrementGlyphClass?: string;\n decrementButtonAriaLabel?: string;\n incrementButtonAriaLabel?: string;\n inputQuantityAriaLabel?: string;\n id?: string;\n onChange?(newValue: number): void;\n}\n\ninterface IQuantityState {\n currentInput: number;\n}\n\n/**\n * Quantity Component - This component is used to add or remove quantity.\n */\n@observer\nexport default class OrderTemplateQuantity extends React.PureComponent {\n public static defaultProps: Partial = {\n min: 1,\n decrementGlyphClass: 'fas fa-minus',\n incrementGlyphClass: 'fas fa-plus'\n };\n\n private readonly inputRef: React.RefObject = React.createRef();\n\n constructor(props: IQuantityProps) {\n super(props);\n this.state = { currentInput: props.currentCount || 1 };\n this._handleChange = this._handleChange.bind(this);\n\n reaction(\n () => this.props.currentCount,\n () => {\n this.setState({ currentInput: this.props.currentCount || 1 });\n }\n );\n }\n\n public render(): JSX.Element {\n const glyphMinusClassName: string = `${this.props.decrementGlyphClass!} quantity__controls-glyph`;\n const glyphPlusClassName: string = `${this.props.incrementGlyphClass!} quantity__controls-glyph`;\n const disabled = this.props.currentCount === this.props.min;\n const incDisabled = this.props.currentCount === this.props.max;\n const currentValue = this.state.currentInput;\n let extraClass = '';\n if (disabled) {\n // The quantity has reached its boundaries (max or min)\n extraClass = 'disabled';\n } else if (this.props.disabled) {\n // This.props.disabled shows if the state is not succeded yet\n extraClass = 'transition';\n }\n const getChangeHandler = (amount: number) => () => {\n this._onIncrementalChange(amount);\n };\n\n return (\n
\n \n \n \n \n \n \n \n
\n );\n }\n\n private _onIncrementalChange(amount: number): void {\n const updatedQuantity = this.state.currentInput + amount;\n\n if (updatedQuantity >= 1 && updatedQuantity <= this.props.max) {\n this.props.onChange && this.props.onChange(updatedQuantity);\n }\n }\n\n private _handleChange(e: React.ChangeEvent): void {\n const currentValue = Number.parseInt(e.target.value, 10);\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n const inputElement =\n this.inputRef && this.inputRef.current && this.inputRef.current instanceof HTMLInputElement && this.inputRef.current;\n\n if (currentValue > this.props.max) {\n this.setState({ currentInput: this.props.max });\n } else {\n this.setState({ currentInput: currentValue }, () => {\n debounce(() => {\n if (!isNaN(this.state.currentInput) && !(this.state.currentInput < minValue) && inputElement) {\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\n inputElement.setAttribute('value', currentValue.toString());\n }\n }, 200)();\n });\n }\n }\n\n private readonly _validateMin = (): void => {\n const minValue = this.props.min === undefined ? 1 : this.props.min;\n\n if (isNaN(this.state.currentInput) || this.state.currentInput < minValue) {\n this.props.onChange && this.props.onChange(minValue);\n } else {\n this.props.onChange && this.props.onChange(this.state.currentInput);\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 { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ProductDimensionValue, ProductListLine } from '@msdyn365-commerce/retail-proxy';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getFallbackImageUrl,\n getPriceForSelectedVariant,\n getProductAvailabilitiesForSelectedVariant,\n getSelectedVariant,\n IProductInventoryInformation,\n PriceForSelectedVariantInput,\n ProductAvailabilitiesForSelectedVariantInput,\n SelectedVariantInput\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, ITelemetryContent, ModalBody, ModalFooter } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport OrderTemplateQuantity from '../common/order-template-quantity';\nimport { Dropdown, IAddLineToTemplateProps, IAddLineToTemplateResources, IDropdownItemProps, IDropdownOnSelection } from '.';\n\nexport interface IProductCnnfigurationProps extends IAddLineToTemplateProps {\n product: SimpleProduct;\n dimensions: ProductDimensionFull[];\n imageSettings: IImageSettings;\n telemetryContent?: ITelemetryContent;\n searchForm: React.ReactNode;\n addToTemplateHandler(params: IProductConfigurationState): Promise;\n highlightSearchTerm(name: string): React.ReactNode;\n}\n\nexport interface IProductConfigurationState {\n quantity: number;\n unitPrice: number;\n totalPrice: number;\n product: SimpleProduct;\n dimensions: ProductDimensionFull[];\n selectedDimensions: {};\n productAvailableQuantity?: IProductInventoryInformation;\n buttonDisabled: boolean;\n showAddConfirmation: boolean;\n errorMessage?: string;\n isBusy: boolean;\n errors: { dimension?: string[]; add?: string };\n}\n\n/**\n * Configure selected product for addition to order template.\n */\nexport class ProductConfiguration extends React.Component {\n private selectedDimensions: {} = {};\n\n constructor(props: IProductCnnfigurationProps) {\n super(props);\n\n this.state = {\n quantity: 1,\n unitPrice: props.product.Price,\n totalPrice: props.product.Price,\n product: props.product,\n dimensions: props.dimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\n selectedDimensions: {},\n buttonDisabled: false,\n showAddConfirmation: false\n } as IProductConfigurationState;\n }\n\n public shouldComponentUpdate(nextProps: IProductCnnfigurationProps, nextState: IProductConfigurationState): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const {\n context: {\n actionContext: {\n requestContext: { apiSettings }\n },\n request: { gridSettings }\n },\n resources: {\n addItemToTemplateText,\n addLineProductUnitPricePrefix,\n decrementButtonAriaLabel,\n incrementButtonAriaLabel,\n quantitySelectLabel,\n addLineProductUnitOfMeasurePrefix,\n totalPriceLabel\n },\n imageSettings,\n highlightSearchTerm\n } = this.props;\n const { buttonDisabled, product, quantity, unitPrice, totalPrice, showAddConfirmation, errors } = this.state;\n const isMultipleCatalogSelect = this.props.isMultipleCatalogFeatureEnabledInHq ? 'isMultipleCatalogSelect' : '';\n return (\n <>\n \n {this.props.searchForm}\n
\n
\n
\n \n
\n
{product?.ItemId}
\n {highlightSearchTerm(product?.Name ?? '')}\n
\n {addLineProductUnitPricePrefix}\n {` `}\n {this._formatPrice(unitPrice)}\n
\n
\n {addLineProductUnitOfMeasurePrefix}\n {` `}\n {product?.DefaultUnitOfMeasure}\n
\n
\n
\n
{this._getDimensionsNodes()}
\n
\n
\n
{quantitySelectLabel}
\n \n
\n
\n
\n {totalPriceLabel}\n {` `}\n {this._formatPrice(totalPrice)}\n
\n
\n \n {showAddConfirmation && (\n \n
\n )}\n {errors?.add && (\n
\n
\n )}\n \n {addItemToTemplateText}\n \n \n \n );\n }\n\n private _getConfirmationMessage(): string {\n const selectedDimensionNames = this.state.dimensions\n .map(dimension => {\n let variant = dimension.DimensionValues?.find(\n value => value.RecordId === this.selectedDimensions[dimension.DimensionTypeValue]\n )?.Value;\n if (dimension.DimensionTypeValue === 3) {\n variant = `size ${variant}`;\n }\n return variant;\n })\n .filter(value => value);\n\n return this.props.resources.addToTemplateConfirmation\n .replace('{count}', this.state.quantity.toString())\n .replace('{productAndDimensions}', `${this.state.product.Name}, ${Object.values(selectedDimensionNames).join(', ')}`);\n }\n\n private _getDimensionsNodes(): React.ReactElement[] {\n const { dimensions } = this.state;\n const { resources } = this.props;\n\n return dimensions?.map((dimension: ProductDimensionFull) => {\n const { DimensionValues, DimensionTypeValue } = dimension;\n const mapDimensions = (value: ProductDimensionValue): IDropdownItemProps => ({\n id: value.RecordId,\n value: value.Value || ''\n });\n const dimensionName = this._getDropdownName(DimensionTypeValue, resources);\n const dropdownList: IDropdownItemProps[] = DimensionValues ? DimensionValues.map(mapDimensions) : [];\n dropdownList.unshift({ id: 0, value: `Choose a ${dimensionName}` });\n\n return (\n
\n
{dimensionName}
\n {this.state.errors?.dimension?.includes(DimensionTypeValue.toString()) && (\n \n \n \n )}\n \n
\n );\n });\n }\n\n private readonly _getDimensionsError = (dimensionName: string) =>\n this.props.resources.dimensionMissingError.replace(/{dimensionName}/g, dimensionName);\n\n private readonly _addToTemplateHandler = async (event: React.MouseEvent) => {\n // Hide confirmation of previous addition when adding multiple items\n this.setState({\n isBusy: true,\n showAddConfirmation: false,\n errors: { ...this.state.errors, add: undefined }\n });\n\n const missingDimensions = this.state.dimensions\n .map(dimension => dimension.DimensionTypeValue.toString())\n .filter(type => !this.selectedDimensions[type]);\n\n this.setState({\n errors: { dimension: missingDimensions }\n });\n if (missingDimensions.length > 0) {\n this.setState({\n isBusy: false\n });\n return;\n }\n\n this.props\n .addToTemplateHandler({ ...this.state })\n .then(status => {\n // Validate against the existance of a ProductListId\n if (status.ProductListId) {\n this.setState({\n isBusy: false,\n showAddConfirmation: true\n });\n }\n })\n .catch(error => {\n const { addToTemplateDuplicateError, addToTemplateGenericError } = this.props.resources;\n let errorMessage;\n\n if (error.error.name === 'Microsoft_Dynamics_Commerce_Runtime_DuplicateObject') {\n errorMessage = addToTemplateDuplicateError;\n } else {\n errorMessage = addToTemplateGenericError;\n }\n\n this.setState({\n isBusy: false,\n errors: { ...this.state.errors, add: errorMessage }\n });\n this.props.context.telemetry.error('Error adding item to order template');\n });\n };\n\n private readonly _onQuantityChange = (newValue: number) => {\n this.setState({\n quantity: newValue,\n totalPrice: newValue * this.props.product.Price\n });\n };\n\n private readonly _updateDimensionValue = (\n productDimensionFull: ProductDimensionFull,\n newValueId: string | undefined\n ): ProductDimensionValue | undefined => {\n if (newValueId && productDimensionFull.DimensionValues) {\n return productDimensionFull.DimensionValues.find(dimension => dimension.RecordId === +newValueId);\n }\n\n return undefined;\n };\n\n // Rehydrate the selected variants price, available dimensions & sizes\n private readonly _onDimensionChanged = async (selection: IDropdownOnSelection): Promise => {\n const { product, dimensions, context } = this.props;\n const {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n } = context;\n\n // Remaining error notifications for missing dimensions\n const remainingDimensionsErrors = this.state.errors?.dimension?.filter(id => id !== selection.dropdownId.toString());\n\n this.setState({\n isBusy: false,\n showAddConfirmation: false,\n buttonDisabled: true,\n errors: { add: undefined, dimension: remainingDimensionsErrors }\n });\n\n // Update currently selected dimensions\n this.selectedDimensions[selection.dropdownId] = +selection.selectId;\n\n const mappedDimensions = dimensions\n ?.map(dimension => {\n return {\n DimensionTypeValue: dimension.DimensionTypeValue,\n DimensionValue:\n this._updateDimensionValue(dimension, this.selectedDimensions[dimension.DimensionTypeValue]) ||\n dimension.DimensionValue,\n ExtensionProperties: dimension.ExtensionProperties\n };\n })\n .filter(dimension => {\n return dimension && dimension.DimensionValue;\n });\n\n const variantProduct = await getSelectedVariant(\n new SelectedVariantInput(\n product.MasterProductId ? product.MasterProductId : product.RecordId,\n channelId,\n mappedDimensions,\n undefined,\n this.props.context.request\n ),\n actionContext\n );\n\n if (!variantProduct) {\n this.props.context.telemetry.error(\n `Error retrieving variant product for product ${product.MasterProductId ? product.MasterProductId : product.RecordId}`\n );\n return;\n }\n\n const dimensionInput = new GetDimensionsForSelectedVariantInput(\n variantProduct.RecordId,\n channelId,\n mappedDimensions,\n this.props.context.request\n );\n const variantDimensions = await getDimensionsForSelectedVariant(dimensionInput, actionContext);\n\n if (!variantDimensions) {\n this.props.context.telemetry.error('Error retrieving dimensions for reconfigured product variant');\n this.setState({\n buttonDisabled: false\n });\n return;\n }\n\n const availabilityInput = new ProductAvailabilitiesForSelectedVariantInput(\n product.MasterProductId ? product.MasterProductId : product.RecordId,\n channelId\n );\n\n // @TODO sync UX quantity w/ actual availability\n const newAvailableQuantity = await getProductAvailabilitiesForSelectedVariant(availabilityInput, actionContext);\n const priceInput = new PriceForSelectedVariantInput(product.RecordId, channelId);\n const productPrice = await getPriceForSelectedVariant(priceInput, actionContext);\n\n if (!productPrice) {\n this.props.context.telemetry.error('Error retrieving price for reconfigured product variant');\n this.setState({\n buttonDisabled: false\n });\n return;\n }\n\n this.setState({\n buttonDisabled: false,\n productAvailableQuantity: (newAvailableQuantity && newAvailableQuantity[0]) || undefined,\n unitPrice: +(productPrice.BasePrice || product.Price),\n dimensions: variantDimensions.sort((a, b) => a.DimensionTypeValue - b.DimensionTypeValue),\n product: variantProduct\n });\n };\n\n private readonly _getDropdownName = (dimensionType: number, resources: IAddLineToTemplateResources): string => {\n switch (dimensionType) {\n case 1: // Color\n return resources.productDimensionTypeColor;\n case 2: // Configuration\n return resources.productDimensionTypeConfiguration;\n case 3: // Size\n return resources.productDimensionTypeSize;\n case 4: // Style\n return resources.productDimensionTypeStyle;\n default:\n return '';\n }\n };\n\n private _formatPrice(price: number): string {\n const {\n context: {\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n }\n } = this.props;\n\n return formatCurrency(price.toFixed(2), currencyCode);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { getFallbackImageUrl, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React, { useState } from 'react';\n\nimport { IAddLineToTemplateProps } from '.';\n\nexport interface IProductListProps extends IAddLineToTemplateProps {\n products: ProductSearchResult[];\n imageSettings: IImageSettings;\n searchForm: React.ReactNode;\n clickHandler(product: ProductSearchResult): Promise;\n highlightSearchTerm(name: string): React.ReactNode;\n renderResultCountText(): string;\n}\n\nexport const ProductList = (props: IProductListProps) => {\n const {\n products,\n context: {\n actionContext: {\n requestContext: { apiSettings }\n },\n request: { gridSettings },\n cultureFormatter: {\n formatCurrency,\n\n // @ts-expect-error\n currencyCode\n }\n },\n clickHandler,\n highlightSearchTerm,\n renderResultCountText,\n resources: { selectProductButtonText },\n imageSettings\n } = props;\n\n return (\n <>\n

\n {renderResultCountText()}\n

\n {props.searchForm}\n
\n {products.map((product: ProductSearchResult, index: number) => {\n const { Price, ItemId, Name, PrimaryImageUrl } = product;\n const price = formatCurrency(Price.toFixed(2), currencyCode);\n const primaryImageSource = generateImageUrl(PrimaryImageUrl ?? '', apiSettings) ?? '';\n const fallBackImg = getFallbackImageUrl(ItemId, apiSettings, props.context.request.app?.config?.OmniChannelMedia) ?? '';\n\n return (\n
\n
\n \n
\n
{ItemId}
\n {highlightSearchTerm(Name ?? '')}\n
\n
\n
\n {price}\n \n
\n
\n );\n })}\n
\n \n );\n};\n\ninterface IProductSelectButton {\n product: ProductSearchResult;\n buttonText: string;\n clickHandler(product: ProductSearchResult): Promise;\n}\n\nconst ProductSelectButton = (props: IProductSelectButton) => {\n const [isBusy, setBusy] = useState(false);\n const { product, buttonText, clickHandler } = props;\n const getClickHandler = React.useCallback(async () => {\n setBusy(!isBusy);\n await clickHandler(product);\n setBusy(!isBusy);\n }, [clickHandler, isBusy, product]);\n\n return (\n \n {buttonText}\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 { Button, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewModel } from '../order-template';\nimport { IOrderTemplateData } from '../order-template.data';\nimport { IOrderTemplateProps } from '../order-template.props.autogenerated';\nimport { AddLineToTemplate } from '.';\n\ninterface IOrderTemplateBulkActionsProps extends IOrderTemplateProps {\n orderTemplateId: string;\n selectedLines: IOrderTemplateLineViewModel[];\n isMinifiedView: boolean;\n isMultipleCatalogFeatureEnabledInHq: boolean;\n telemetryContent?: ITelemetryContent;\n onAddSelectionToBag(): void;\n onRemoveSelection(): void;\n}\n\ninterface IOrderTemplateBulkActionsState {\n isAddDisabled: boolean;\n isRemoveDisabled: boolean;\n}\n\n/**\n * Bulk Order Template line actions.\n */\nexport class OrderTemplateBulkActions extends React.PureComponent {\n public state: IOrderTemplateBulkActionsState = {\n isAddDisabled: true,\n isRemoveDisabled: true\n };\n\n public static getDerivedStateFromProps(\n props: IOrderTemplateBulkActionsProps,\n state: IOrderTemplateBulkActionsState\n ): IOrderTemplateBulkActionsState {\n const selectedLines = props.selectedLines.length;\n let nextState = { ...state };\n nextState = {\n isAddDisabled: selectedLines === 0,\n isRemoveDisabled: selectedLines === 0\n };\n return nextState;\n }\n\n public render(): JSX.Element {\n const {\n addLineModalLinkText,\n searchButtonAriaLabel,\n searchInputAriaLabel,\n searchModalPlaceholderText,\n selectCatalogTitleText,\n selectProductButtonText,\n addItemToTemplateText,\n addLineProductUnitPricePrefix,\n backButtonText,\n decrementButtonAriaLabel,\n incrementButtonAriaLabel,\n quantitySelectLabel,\n addLineProductUnitOfMeasurePrefix,\n notFoundSearchErrorNotice,\n notFoundSearchErrorRedediation,\n searchErrorMessage,\n productDimensionTypeColor,\n productDimensionTypeConfiguration,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n addSelectedToBagButtonText,\n removeSelectedToBagButtonText,\n searchResultsCountVerbage,\n searchResultsCountSubject,\n addToTemplateConfirmation,\n totalPriceLabel,\n progressNotificationText,\n addToTemplateDuplicateError,\n addToTemplateGenericError,\n dimensionMissingError\n } = this.props.resources;\n\n const addLineProps = {\n context: this.props.context,\n telemetryContent: this.props.telemetryContent,\n resources: {\n addLineModalLinkText,\n searchButtonAriaLabel,\n searchInputAriaLabel,\n searchModalPlaceholderText,\n selectCatalogTitleText,\n selectProductButtonText,\n addItemToTemplateText,\n addLineProductUnitPricePrefix,\n backButtonText,\n decrementButtonAriaLabel,\n incrementButtonAriaLabel,\n quantitySelectLabel,\n addLineProductUnitOfMeasurePrefix,\n notFoundSearchErrorNotice,\n notFoundSearchErrorRedediation,\n searchErrorMessage,\n productDimensionTypeColor,\n productDimensionTypeConfiguration,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n searchResultsCountVerbage,\n searchResultsCountSubject,\n addToTemplateConfirmation,\n totalPriceLabel,\n progressNotificationText,\n addToTemplateDuplicateError,\n addToTemplateGenericError,\n dimensionMissingError\n },\n imageSettings: this.props.config.imageSettings,\n orderTemplateId: this.props.orderTemplateId,\n isMultipleCatalogFeatureEnabledInHq: this.props.isMultipleCatalogFeatureEnabledInHq,\n catalogs: this.props.data.catalogs?.result\n };\n\n return (\n <>\n \n \n \n {!this.props.isMinifiedView && addSelectedToBagButtonText}\n \n \n \n {!this.props.isMinifiedView && removeSelectedToBagButtonText}\n \n \n );\n }\n\n private readonly addHandler = (event: React.MouseEvent) => {\n this.setState({\n isAddDisabled: true\n });\n\n this.props.onAddSelectionToBag();\n\n this.setState({\n isAddDisabled: false\n });\n };\n\n private readonly removeHandler = (event: React.MouseEvent) => {\n this.setState({\n isRemoveDisabled: true\n });\n\n this.props.onRemoveSelection();\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n AddOrderTemplateToCartComponent,\n ILinesAddedToCartDialogResources,\n IOrderTemplateNameDialogResources,\n RenameOrderTemplateComponent,\n OrderTemplateNameDialog\n} from '@msdyn365-commerce/components';\nimport { IComponentProps, ICoreContext } from '@msdyn365-commerce/core';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy';\nimport { OrderTemplate, Random } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, ITelemetryContent, Popover } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\nimport { useState } from 'react';\n\nexport interface IOrderTemplateActionsData {\n orderTemplate: OrderTemplate;\n}\n\nexport interface IOrderTemplateActionsProps extends IComponentProps {\n context: ICoreContext;\n telemetryContent?: ITelemetryContent;\n handlers: {\n onRemoveTemplate(orderTemplateId: string): void;\n onRenameTemplate(orderTemplate: ProductList): Promise;\n };\n renameOrderTemplateDialogStrings: IOrderTemplateNameDialogResources;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n resources: {\n addTemplateToBagButtonText: string;\n renameTemplateButtonText: string;\n deleteTemplateButtonText: string;\n closeWindowButtonText: string;\n addToCartFailureMessage: string;\n addToCartSuccessMessage: string;\n addToCartProcessMessage: string;\n orderTemplateErrorMessage: string;\n linesAddedToCartDialogResources: ILinesAddedToCartDialogResources;\n };\n}\n\nexport interface IOrderTemplateActionsViewProps {\n addTemplateToBag: React.ReactNode;\n renameTemplate?: React.ReactNode;\n removeTemplate?: React.ReactNode;\n isMultipleCatalogsFeatureEnabled?: boolean;\n actionsSplitButton?: React.ReactNode;\n}\n\n/**\n * Remove Order Action.\n * @param props -Order template action props.\n * @returns Remove order template.\n */\nconst removeOrderActionHandler = (props: IOrderTemplateActionsProps) => () => {\n _removeOrderTemplate(props);\n};\n\nexport const OrderTemplateActionsView = (props: IOrderTemplateActionsProps): IOrderTemplateActionsViewProps => {\n const { resources, isMultipleCatalogFeatureEnabledInHq } = props;\n const { deleteTemplateButtonText } = resources;\n\n return {\n addTemplateToBag: _getOrderTemplateAddToCartDialog(props),\n renameTemplate: !isMultipleCatalogFeatureEnabledInHq && _getOrderTemplateRenameControl(props),\n removeTemplate: !isMultipleCatalogFeatureEnabledInHq && (\n \n ),\n actionsSplitButton: isMultipleCatalogFeatureEnabledInHq && \n };\n};\n\nconst _removeOrderTemplate = (props: IOrderTemplateActionsProps): void => {\n const {\n data: { orderTemplate },\n handlers\n } = props;\n const { onRemoveTemplate } = handlers;\n\n if (onRemoveTemplate) {\n onRemoveTemplate(orderTemplate.productList.Id);\n }\n};\n\nconst _getOrderTemplateAddToCartDialog = (props: IOrderTemplateActionsProps): React.ReactNode => {\n const {\n data: { orderTemplate },\n typeName,\n id,\n context,\n telemetryContent,\n resources,\n isMultipleCatalogFeatureEnabledInHq\n } = props;\n const {\n addTemplateToBagButtonText,\n closeWindowButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n orderTemplateErrorMessage,\n linesAddedToCartDialogResources\n } = resources;\n\n const dialogStrings = {\n closeWindowButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n orderTemplateErrorMessage,\n linesAddedToCartDialogResources\n };\n\n return (\n \n );\n};\n\nconst _getOrderTemplateRenameControl = (props: IOrderTemplateActionsProps): React.ReactNode => {\n const { renameOrderTemplateDialogStrings, resources, context, handlers } = props;\n return (\n \n );\n};\n\nlet buttonEventReference: HTMLButtonElement | undefined;\nexport const ActionsSplitButton: React.FC = (props: IOrderTemplateActionsProps) => {\n const [isStatementRequestAdminDropdownOpen, setIsStatementRequestAdminDropdownOpen] = useState(false);\n const [renameOrderTemplateDialogOpen, setOrderTemplateNameDialogOpen] = React.useState(false);\n\n const onOrderTemplateNameCancel = () => {\n context.telemetry.debug('Rename of template was canceled.');\n buttonEventReference?.focus();\n };\n\n const onRenameButtonClick = (event: React.MouseEvent) => {\n buttonEventReference = event.target as HTMLButtonElement;\n setOrderTemplateNameDialogOpen(true);\n event.preventDefault();\n };\n const onToggleDropdown1 = () => {\n setIsStatementRequestAdminDropdownOpen(!isStatementRequestAdminDropdownOpen);\n };\n const {\n data: { orderTemplate },\n resources,\n renameOrderTemplateDialogStrings,\n context\n } = props;\n\n const className = 'ms-order-template-action-bar';\n\n const popoverReference = React.createRef();\n const renderModalPopup = (\n \n );\n const requestStatementDropdownString = `request-statement-dropdown-id-${Random.Guid.generateGuid()}`;\n\n return (\n
\n {renderModalPopup}\n \n {'Options'}\n \n \n \n\n \n {'Delete'}\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 { PriceComponent } from '@msdyn365-commerce/components';\nimport { ICoreContext, IImageSettings, Image, ITelemetry } from '@msdyn365-commerce/core';\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy';\nimport { ProductCatalog, ProductPrice, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ArrayExtensions, getFallbackImageUrl, validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport React, { useState } from 'react';\n\nimport { IOrderTemplateLineViewModel } from '../order-template';\nimport OrderTemplateQuantity from './common/order-template-quantity';\n\nexport interface IOrderTemplateLineProps extends ProductListLine {\n orderTemplateLine: IOrderTemplateLineViewModel;\n productListLine: ProductListLine;\n price?: ProductPrice;\n context: ICoreContext;\n productUrl: string;\n imageSettings?: IImageSettings;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n quantity: number;\n isQuantityDisabledForUpdate?: boolean;\n handlers: {\n onAddToBag(product: SimpleProduct, quantity: number, itemKey: string, catalogId?: number | undefined): void;\n onRemoveItem(line: IOrderTemplateLineViewModel): void;\n onChangeQuantity(orderTemplateLineId: string, quantity: number, props?: IOrderTemplateLineProps): void;\n onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void;\n };\n resources: {\n selectOneRowText?: string;\n moreButtonText?: string;\n viewProductDetailsText?: string;\n productDimensionTypeColor: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n originalPriceText: string;\n currentPriceText: string;\n freePriceText: string;\n inputQuantityAriaLabel: string;\n removeFromOrderTemplateLinesText: string;\n addToBagButtonText: string;\n deleteButtonText: string;\n incrementButtonAriaLabel?: string;\n decrementButtonAriaLabel?: string;\n editOrderTemplateLineQuantityError?: string;\n unavailableProductErrorMessage?: string;\n outOfStockProductErrorMessage?: string;\n };\n index: number;\n isMobile: boolean;\n productQuantityView?: React.ReactNode;\n addToBagButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n toggleDetailsDisplayed(props: IOrderTemplateLineProps): void;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n catalogs?: ProductCatalog[];\n error?: string;\n shouldDisable?: boolean;\n}\n\nexport interface IOrderTemplateLineViewProps {\n key?: string;\n productImage: React.ReactNode;\n productPrice?: React.ReactNode;\n addToBagButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n productName?: string;\n productNumber?: React.ReactNode;\n productInfo?: React.ReactNode;\n productLabel?: React.ReactNode;\n productUnitOfMeasure?: React.ReactNode;\n productQuantity?: number;\n productQuantityView?: React.ReactNode;\n productListId?: string;\n selectLine?: React.ReactNode;\n popUp?: JSX.Element;\n extraActionsPopup?: JSX.Element | null | undefined;\n isMobile?: boolean;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n productLineCatalog?: React.ReactNode;\n disabled?: boolean;\n}\n\ninterface IEventHandlerFactory {\n getAddToBag(): (event: React.MouseEvent) => void;\n getRemoveItem(): (event: React.MouseEvent) => void;\n}\n\nconst OrderTemplateLineActions = (props: IOrderTemplateLineProps): IEventHandlerFactory => {\n const { orderTemplateLine, productListLine, quantity, handlers } = props;\n const { LineId, CatalogId } = productListLine;\n const { onAddToBag, onRemoveItem } = handlers;\n\n return {\n getAddToBag: () => (event: React.MouseEvent) => {\n LineId &&\n orderTemplateLine.fullProduct &&\n onAddToBag(orderTemplateLine.fullProduct.ProductDetails, quantity, LineId, CatalogId);\n },\n getRemoveItem: () => (event: React.MouseEvent) => LineId && onRemoveItem(props.orderTemplateLine)\n };\n};\n\ninterface IPopupProps extends IOrderTemplateLineProps {\n addButtonClassName: string;\n removeButtonClassName: string;\n}\n\nconst PopUp = (props: IPopupProps): JSX.Element | null => {\n const { addToBagButtonText, removeFromOrderTemplateLinesText, moreButtonText, viewProductDetailsText } = props.resources;\n const [showMobile, setShowMobile] = useState(false);\n const componentClassName = 'ms-table';\n\n const getViewHandler = () => (event: React.MouseEvent) => {\n props.toggleDetailsDisplayed(props);\n };\n\n const toggle = React.useCallback(() => {\n setShowMobile(!showMobile);\n }, [showMobile]);\n\n return (\n
\n \n {showMobile && (\n
\n \n View\n \n {getActionButton(\n props.isMobile,\n props.removeButtonClassName,\n removeFromOrderTemplateLinesText,\n OrderTemplateLineActions(props).getRemoveItem()\n )}\n {getActionButton(\n props.isMobile,\n props.addButtonClassName,\n addToBagButtonText,\n OrderTemplateLineActions(props).getAddToBag()\n )}\n
\n )}\n
\n );\n};\n\nconst getActionButton = (\n isMobile: boolean,\n className: string,\n buttonText: string,\n clickHandler: (event: React.MouseEvent) => void\n): React.ReactNode => (\n \n);\n\nconst getDesktopActionButton = (\n className: string,\n buttonText: string,\n clickHandler: (event: React.MouseEvent) => void\n): React.ReactNode => (\n \n);\n/**\n * On Select line function.\n * @param orderTemplateLine -Order template line.\n * @param input -Order template line props.\n * @returns Set on select order template.\n */\nconst onSelectLineHandler = (orderTemplateLine: IOrderTemplateLineViewModel, input: IOrderTemplateLineProps) => (\n event: React.ChangeEvent\n) => {\n orderTemplateLine.isChecked = !orderTemplateLine.isChecked;\n\n input.handlers.onSelect(orderTemplateLine, event.target.checked);\n};\n\nexport const OrderTemplateLineView = (input: IOrderTemplateLineProps): IOrderTemplateLineViewProps | null => {\n const {\n orderTemplateLine,\n productListLine,\n price,\n context,\n imageSettings,\n quantity,\n resources,\n isMobile,\n isMultipleCatalogFeatureEnabledInHq\n } = input;\n const product = orderTemplateLine.fullProduct;\n const { LineId, UnitOfMeasure } = productListLine;\n const { removeFromOrderTemplateLinesText, addToBagButtonText, selectOneRowText } = resources;\n if (!product) {\n return null;\n }\n\n const { ItemId, PrimaryImageUrl } = product.ProductDetails;\n const fallbackImage = getFallbackImageUrl(\n ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n const addButtonClassName = input.isMobile ? 'ms-table__row-links-add' : 'ms-order-template-table-line__product-add-button';\n const removeButtonClassName = input.isMobile ? 'ms-table__row-links-delete' : 'ms-order-template-table-line__product-remove-button';\n\n return {\n isMobile,\n isMultipleCatalogFeatureEnabledInHq: isMultipleCatalogFeatureEnabledInHq,\n selectLine: (\n \n ),\n key: LineId!,\n productLineCatalog: isMultipleCatalogFeatureEnabledInHq && renderProductCatalog(input),\n productImage: _renderProductImage(\n 'ms-order-template-table-line__product-image',\n context,\n product.ProductDetails.Name!,\n PrimaryImageUrl,\n fallbackImage,\n imageSettings\n ),\n productInfo: renderProductInfo(input),\n productPrice: price && _renderPrice(input),\n productNumber: product && (\n <>\n
{ItemId}
\n {input.error !== 'NONE' ? (\n
{_renderProductError(input)}
\n ) : (\n undefined\n )}\n \n ),\n productUnitOfMeasure: price ? (\n
{UnitOfMeasure || price.UnitOfMeasure}
\n ) : (\n undefined\n ),\n productListId: LineId!,\n removeButton:\n !isMultipleCatalogFeatureEnabledInHq &&\n getActionButton(\n input.isMobile,\n removeButtonClassName,\n removeFromOrderTemplateLinesText,\n OrderTemplateLineActions(input).getRemoveItem()\n ),\n productQuantityView:
{_generateQuantity(input, LineId!)}
,\n productQuantity: quantity,\n addToBagButton:\n !isMultipleCatalogFeatureEnabledInHq &&\n getActionButton(input.isMobile, addButtonClassName, addToBagButtonText, OrderTemplateLineActions(input).getAddToBag()),\n extraActionsPopup:\n !isMobile && isMultipleCatalogFeatureEnabledInHq ? (\n \n ) : (\n undefined\n ),\n popUp: ,\n disabled: input.shouldDisable\n };\n};\n\nconst ExtraActionsPopup = (props: IPopupProps): JSX.Element | null => {\n const [showActions, setShowActions] = useState(false);\n const toggle = React.useCallback(() => {\n setShowActions(!showActions);\n }, [showActions]);\n\n const className = 'ms-order-template-table-line__extra-actions-cell';\n const actionsContainerClassName = `${className}__actions-container`;\n return (\n
\n
\n );\n};\n\nexport const OrderTemplateMobileLineView = (input: IOrderTemplateLineProps): IOrderTemplateLineViewProps | undefined => {\n const { orderTemplateLine, productListLine, price, context, imageSettings, isMultipleCatalogFeatureEnabledInHq } = input;\n const product = orderTemplateLine.fullProduct;\n const { LineId, UnitOfMeasure } = productListLine;\n if (!product) {\n return;\n }\n const { ItemId, PrimaryImageUrl } = product.ProductDetails;\n const fallbackImage = getFallbackImageUrl(\n ItemId,\n context.actionContext.requestContext.apiSettings,\n context.request.app?.config?.OmniChannelMedia\n );\n\n return {\n productLineCatalog: isMultipleCatalogFeatureEnabledInHq && renderProductCatalog(input),\n productImage: _renderProductImage(\n 'thumbnail',\n context,\n product.ProductDetails.Name!,\n PrimaryImageUrl,\n fallbackImage,\n imageSettings\n ),\n productInfo: renderProductInfo(input),\n productPrice: price && _renderPrice(input),\n productNumber: ItemId,\n productUnitOfMeasure: UnitOfMeasure || price?.UnitOfMeasure,\n productQuantityView: _generateQuantity(input, LineId!)\n };\n};\n\nexport interface IOrderTemplateProductQuantityViewProps {\n ContainerProps: INodeProps;\n input: React.ReactNode;\n}\n\n/**\n * On Change function.\n * @param onChangeQuantity -On change quantity function.\n * @param itemKey -String.\n * @param props -Order template line props.\n * @returns Set change quantity.\n */\nconst onChangeHandler = (\n onChangeQuantity: (orderTemplateLineId: string, quantity: number, props?: IOrderTemplateLineProps | undefined) => void,\n itemKey: string,\n props: IOrderTemplateLineProps\n) => (newValue: number) => {\n if (onChangeQuantity) {\n onChangeQuantity(itemKey, newValue, props);\n }\n};\n\nconst _generateQuantity = (props: IOrderTemplateLineProps, itemKey: string): React.ReactNode => {\n const { handlers, resources, quantity } = props;\n const { onChangeQuantity } = handlers;\n return (\n \n );\n};\n\nexport const _renderProductImage = (\n className: string,\n context: ICoreContext,\n heading: string,\n image?: string,\n fallbackImage?: string,\n imageSettings?: IImageSettings\n): JSX.Element | null => {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n lg: { q: 'w=64&h=64&m=6', w: 0, h: 0 },\n xl: { q: 'w=64&h=64&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n};\n\nexport const renderProductCatalog = (props: IOrderTemplateLineProps) => {\n const catalogId = props.productListLine.CatalogId;\n validateCatalogId(catalogId);\n\n if (!props.context.request.user.isB2b || !catalogId || !ArrayExtensions.hasElements(props.catalogs)) {\n return null;\n }\n\n const catalog = props.catalogs.find(item => item.RecordId === catalogId);\n\n if (!catalog || !catalog.Name) {\n return null;\n }\n\n return
{catalog.Name}
;\n};\n\nconst _renderPrice = (props: IOrderTemplateLineProps): JSX.Element | null => {\n const { price, context, moduleId, moduleTypeName, resources } = props;\n\n if (price) {\n return (\n \n );\n }\n return null;\n};\n\nconst _renderProductDimensions = (props: IOrderTemplateLineProps): (string | undefined)[] => {\n const { orderTemplateLine } = props;\n\n if (!orderTemplateLine.fullProduct || !orderTemplateLine.fullProduct.ProductDetails.Dimensions) {\n return [];\n }\n\n return orderTemplateLine.fullProduct.ProductDetails.Dimensions.map(dimension => {\n if (!dimension.DimensionValue || !dimension.DimensionValue.Value) {\n return undefined;\n }\n\n return dimension.DimensionValue.Value;\n });\n};\n\nconst _renderProductError = (props: IOrderTemplateLineProps) => {\n const { error, resources } = props;\n\n if (!error) {\n return '';\n }\n\n const errorMessages = {\n OOS: resources.outOfStockProductErrorMessage,\n UNASSORTED: resources.unavailableProductErrorMessage,\n NONE: ''\n };\n\n return errorMessages[error];\n};\n\nexport const renderProductInfo = (props: IOrderTemplateLineProps): React.ReactNode | undefined => {\n const { orderTemplateLine, productUrl } = props;\n const name = orderTemplateLine.fullProduct?.ProductDetails.Name;\n\n const dimensions = _renderProductDimensions(props);\n if (!orderTemplateLine.fullProduct) {\n return [];\n }\n\n const productName = productUrl ? (\n \n {name}\n \n ) : (\n
{name}
\n );\n\n const dimensionsLine: string = dimensions.join(', ');\n\n return (\n
\n
{productName}
\n
{dimensionsLine}
\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 classnames from 'classnames';\nimport * as React from 'react';\n\nimport { orderTemplateLinesStatus } from '../order-template';\n\nexport interface IOrderTemplateLinesStatusMessageProps {\n className?: string;\n errorType: orderTemplateLinesStatus;\n text?: string;\n}\n\nexport const OrderTemplateLinesStatusMessage: React.FC = ({ className, errorType, text }) => {\n switch (errorType) {\n case 'EMPTY':\n return

{text}

;\n case 'FAILED':\n return

{text}

;\n case 'LOADING':\n default:\n return

{text}

;\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 React from 'react';\n\nimport { IOrderTemplateLineViewModel } from '../order-template';\n\nexport interface IOrderTemplateTableHeadingProps {\n selectAllRowsText?: string;\n productNumber: string;\n productName: string;\n productUnitPrice: string;\n productUOM: string;\n productQuantity: string;\n productActions: string;\n lines: IOrderTemplateLineViewModel[];\n isMobile: boolean;\n clickHandler(isChecked: boolean): void;\n productImage?: string;\n isMultipleCatalogFeatureEnabledInHq?: boolean;\n productLineCatalogName?: string;\n}\n\n/**\n * Order Template's table state.\n */\nexport interface IOrderTemplateTableHeadingState {\n isChecked: boolean;\n}\n\nexport interface IOrderTemplateTableShortHeading {\n productNumber: string;\n productActions: string;\n}\n\n/**\n * Order Template's table heading.\n */\nexport class OrderTemplateTableHeading extends React.PureComponent {\n public state: IOrderTemplateTableHeadingState = {\n isChecked: false\n };\n\n private readonly componentClassName: string = 'ms-table';\n\n public static getDerivedStateFromProps(\n props: IOrderTemplateTableHeadingProps,\n state: IOrderTemplateTableHeadingState\n ): IOrderTemplateTableHeadingState {\n const checkedLines = props.lines.filter(line => !line.isChecked).length;\n let nextState = { ...state };\n nextState = { isChecked: checkedLines === 0 };\n return nextState;\n }\n\n public getOnChange = () => (event: React.ChangeEvent) => {\n this.setState(\n {\n isChecked: this.state.isChecked\n },\n () => {\n this.props.clickHandler(!this.state.isChecked);\n }\n );\n };\n\n public render(): JSX.Element {\n return (\n \n \n \n \n \n {!this.props.isMobile && this.props.isMultipleCatalogFeatureEnabledInHq ? (\n {this.props.productLineCatalogName}\n ) : null}\n {!this.props.isMobile ? {this.props.productImage} : null}\n {this.props.productNumber}\n {!this.props.isMobile ? {this.props.productName} : null}\n {!this.props.isMobile ? {this.props.productUnitPrice} : null}\n {!this.props.isMobile ? {this.props.productUOM} : null}\n {!this.props.isMobile ? {this.props.productQuantity} : null}\n {!this.props.isMobile ? {this.props.productActions} : }\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 {\n IItemAddedToCartDialogData,\n IItemAddedToCartDialogResources,\n ILinesAddedToCartDialogResources,\n IOrderTemplateNameDialogResources,\n ItemAddedToCartDialog\n} from '@msdyn365-commerce/components';\nimport MsDyn365, { AsyncResult, getCatalogId, getUrlSync, ICoreContext, IRequestContext } from '@msdyn365-commerce/core';\nimport { ICartActionResult } from '@msdyn365-commerce/global-state';\nimport { ProductList, ProductListLine } from '@msdyn365-commerce/retail-proxy';\nimport {\n deleteAsync,\n removeProductListLinesAsync,\n updateProductListLinesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { FeatureState, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n ArrayExtensions,\n createGetFeatureStateInput,\n getFeatureState,\n getPriceForSelectedVariant,\n getProductUrlSync,\n ObjectExtensions,\n OrderTemplate,\n OrderTemplateLine,\n PriceForSelectedVariantInput,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Alert,\n getTelemetryObject,\n Heading,\n IModuleProps,\n INodeProps,\n ITelemetryContent,\n UncontrolledPagination\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport { action, computed, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n IOrderTemplateActionsProps,\n IOrderTemplateActionsViewProps,\n IOrderTemplateLineProps,\n IOrderTemplateLineViewProps,\n IOrderTemplateTableHeadingProps,\n OrderTemplateActionsView,\n OrderTemplateLinesStatusMessage,\n OrderTemplateLineView,\n OrderTemplateMobileLineView,\n OrderTemplateTableHeading\n} from '../..';\nimport { ActiveOrderTemplateLinesInput } from './actions/get-order-template';\nimport { OrderTemplateBulkActions } from './components/bulk-actions';\nimport { IOrderTemplateData } from './order-template.data';\nimport { IOrderTemplateProps, IOrderTemplateResources } from './order-template.props.autogenerated';\nimport Spinner from './components/add-line/spinner';\n\nexport interface IOrderTemplateLineActionMessageState {\n itemKey: string;\n userMessage: string;\n statusCssString: string;\n messageGlyph: string;\n isOpen: boolean;\n isItemAddedToOrderTemplateOpen: boolean;\n isConfirmAddSelectionToBagModalOpen: boolean;\n itemAddedToCartDialogData?: IItemAddedToCartDialogData;\n productSelection: IOrderTemplateLineViewModel[];\n isDetailsDisplayed: boolean;\n detailedProductView?: IOrderTemplateLineViewProps;\n isQuantityDisabledForUpdate?: boolean;\n}\n\nexport type orderTemplateLinesStatus = 'LOADING' | 'SUCCESS' | 'FAILED' | 'EMPTY';\ntype GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface IOrderTemplateViewProps extends IOrderTemplateProps {\n OrderTemplateLines: IModuleProps;\n callbacks?: IOrderTemplateLinesCallbacks;\n status?: orderTemplateLinesStatus;\n statusMessage?: React.ReactNode;\n heading?: React.ReactNode;\n OrderTemplateActions?: INodeProps;\n ProductsTable?: INodeProps;\n ProductsTableRow?: INodeProps;\n ProductsTableHeading?: React.ReactNode;\n ProductDetails?: INodeProps;\n orderLines?: IOrderTemplateLineViewProps[];\n productListLines?: ProductListLine[];\n productsStatusMessage?: React.ReactNode;\n orderActions?: IOrderTemplateActionsViewProps | null;\n resources: IOrderTemplateResources;\n pagination?: React.ReactNode;\n itemAddedToCartDialog?: React.ReactNode;\n bulkOrderLineActions?: React.ReactNode;\n isDetailsDisplayed?: boolean;\n detailedProduct?: IOrderTemplateLineProps;\n detailedProductView?: IOrderTemplateLineViewProps;\n productQuantityView?: React.ReactNode;\n addButton?: React.ReactNode;\n isMobile?: boolean;\n toggleDetailsDisplayed?(props: IOrderTemplateLineProps | undefined): void;\n}\n\nexport interface IOrderTemplateLinesCallbacks {\n updateQuantity(itemKey: string, quantity: number): void;\n}\n\nexport interface IOrderTemplateLineViewModel extends OrderTemplateLine {\n isChecked: boolean;\n productQuantityView: React.ReactNode;\n}\n\n/**\n *\n * OrderTemplateLines component.\n * @extends {React.PureComponent, IOrderTemplateLineActionMessageState>}\n */\n@observer\nclass OrderTemplateLines extends React.Component, IOrderTemplateLineActionMessageState> {\n private readonly className: string;\n\n private readonly telemetryContent?: ITelemetryContent;\n\n @observable\n private _viewport: GridSize;\n\n @computed get isMobile(): boolean {\n return this._viewport === 'xs' || this._viewport === 'sm';\n }\n\n constructor(props: IOrderTemplateProps, state: IOrderTemplateLineActionMessageState) {\n super(props);\n this.className = 'ms-order-template';\n this._viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._updateViewport = this._updateViewport.bind(this);\n\n this.state = {\n itemKey: '',\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false,\n isItemAddedToOrderTemplateOpen: false,\n isConfirmAddSelectionToBagModalOpen: false,\n productSelection: [],\n isDetailsDisplayed: false,\n isQuantityDisabledForUpdate: false\n };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this._updateViewport();\n\n if (MsDyn365.isBrowser && !this.props.context.request.user.isAuthenticated && !this.props.context.request.params.isEditor) {\n window.location.assign(this.props.context.request.user.signInUrl || '/');\n }\n }\n\n @action\n public async componentDidMount(): Promise {\n this.setState({});\n const orderTemplate = await this.props.data.orderTemplate;\n this.props.config.heading!.text = orderTemplate?.productList.Name || '';\n this.setState({\n productSelection: orderTemplate?.orderTemplateLines as IOrderTemplateLineViewModel[]\n });\n\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', this._updateViewport);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this._updateViewport);\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IOrderTemplateProps,\n nextState: IOrderTemplateLineActionMessageState\n ): boolean {\n if (this.state === nextState && this.props === nextProps) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n const { heading, className } = this.props.config;\n const { emptyOrderTemplateLinesText, errorGettingOrderTemplateLines } = this.props.resources;\n const { orderTemplate, cart } = this.props.data;\n\n if (cart.status === 'LOADING' || ObjectExtensions.isNullOrUndefined(orderTemplate) || orderTemplate.status === 'LOADING') {\n const errorProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(this.className, className)\n },\n status: 'LOADING',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources\n };\n return this.props.renderView(errorProps);\n }\n\n if (cart.status === 'FAILED' || orderTemplate.status === 'FAILED') {\n const errorProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'FAILED',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources\n };\n\n return this.props.renderView(errorProps);\n }\n\n const orderTemplateResult = orderTemplate && orderTemplate.result;\n const orderTemplateLines = orderTemplateResult && orderTemplateResult.orderTemplateLines;\n\n if (!orderTemplateResult || !orderTemplateLines || orderTemplateLines.length === 0) {\n if (orderTemplateResult && !this._isFirstPage() && MsDyn365.isBrowser) {\n window.location.href = this._getOrderTemplatePageUrl();\n return null;\n }\n\n const emptyViewProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'EMPTY',\n statusMessage: ,\n heading: heading && ,\n resources: this.props.resources,\n orderActions:\n orderTemplateResult &&\n this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\n bulkOrderLineActions: orderTemplateResult && this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\n OrderTemplateActions: {\n className: `${this.className}-action-bar`,\n tag: 'div'\n }\n };\n\n return this.props.renderView(emptyViewProps);\n }\n\n const viewProps: IOrderTemplateViewProps = {\n ...(this.props as IOrderTemplateProps),\n OrderTemplateLines: {\n moduleProps: this.props,\n className: classnames(`${this.className}`, className)\n },\n status: 'SUCCESS',\n productsStatusMessage: this.state.isOpen && (\n
\n \n {this.state.userMessage}\n \n
\n ),\n heading: heading && ,\n OrderTemplateActions: {\n className: `${this.className}-action-bar`,\n tag: 'div'\n },\n ProductsTable: {\n className: `${this.className}__table`,\n tag: 'table',\n role: 'grid'\n },\n ProductsTableRow: {\n className: `${this.className}-table-line`,\n tag: 'tr'\n },\n ProductsTableHeading: this._renderProductListHeader(this.props.resources),\n ProductDetails: {\n className: `${this.className}-table-line__link`,\n tag: 'a'\n },\n orderLines: this._renderProductList(),\n callbacks: { updateQuantity: debounce(this._changeQuantity, 2000) },\n orderActions: this._renderOrderTemplateActions(orderTemplateResult, this._isChannelMultipleCatalogsFeatureEnabled()),\n pagination: this._renderPagination(),\n itemAddedToCartDialog: this._renderItemAddedToCartDialog(),\n bulkOrderLineActions: this._getOrderTemplateLineActions(orderTemplateResult.productList.Id),\n isDetailsDisplayed: this.state.isDetailsDisplayed,\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\n detailedProductView: this.state.detailedProductView,\n isMobile: this.isMobile\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public onSelect(line: IOrderTemplateLineViewModel, isChecked: boolean): void {\n line.isChecked = isChecked;\n\n const updated =\n this.state.productSelection.map(product => {\n if (product.fullProduct?.ProductDetails.ItemId === line.fullProduct?.ProductDetails.ItemId) {\n line.isChecked = isChecked;\n }\n return product;\n }) || [];\n\n this.setState({\n productSelection: updated\n });\n }\n\n public onSelectAll(isChecked: boolean): void {\n const updated =\n this.state.productSelection.map(line => {\n line.isChecked = isChecked;\n return line;\n }) || [];\n\n this.setState({\n productSelection: updated\n });\n }\n\n private _renderProductListHeader(resources: IOrderTemplateResources): React.ReactNode {\n const {\n productImage,\n productNumberText,\n productText,\n productUnitPriceText,\n productUOMText,\n productQuantityText,\n productActionsText,\n selectAllRowsText,\n productLineCatalogName\n } = resources;\n const headers: IOrderTemplateTableHeadingProps = {\n productImage: productImage,\n productNumber: productNumberText,\n productName: productText,\n productUnitPrice: productUnitPriceText,\n productUOM: productUOMText,\n productQuantity: productQuantityText,\n productActions: productActionsText,\n selectAllRowsText,\n lines: this.state.productSelection,\n isMobile: this.isMobile,\n clickHandler: (isChecked: boolean) => {\n this.onSelectAll(isChecked);\n },\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\n productLineCatalogName: productLineCatalogName\n };\n\n return ;\n }\n\n private _getOrderTemplateLineActions(orderTemplateId: string): React.ReactNode {\n return (\n line.isChecked)}\n onAddSelectionToBag={this._onAddSelectionToBag}\n onRemoveSelection={this._onRemoveSelection}\n isMinifiedView={this.isMobile}\n isMultipleCatalogFeatureEnabledInHq={this._isChannelMultipleCatalogsFeatureEnabled()}\n telemetryContent={this.telemetryContent}\n />\n );\n }\n\n private _generateLinesAddedToCartDialogResources(): ILinesAddedToCartDialogResources {\n return {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n linesAddedToCartHeaderItemsOneText: this.props.resources.linesAddedToCartHeaderItemsOneText,\n linesAddedToCartHeaderLinesOneText: this.props.resources.linesAddedToCartHeaderLinesOneText,\n linesAddedToCartHeaderLinesFormatText: this.props.resources.linesAddedToCartHeaderLinesFormatText,\n linesAddedToCartHeaderMessageText: this.props.resources.linesAddedToCartHeaderMessageText\n };\n }\n\n private _generateItemAddedToCartDialogResources(): IItemAddedToCartDialogResources {\n return {\n viewCartButtonText: this.props.resources.viewCartButtonText,\n orderTemplateCloseButtonText: this.props.resources.orderTemplateCloseButtonText,\n itemAddedToCartHeaderItemOneText: this.props.resources.itemAddedToCartHeaderItemOneText,\n itemAddedToCartHeaderItemFormatText: this.props.resources.itemAddedToCartHeaderItemFormatText,\n itemAddedToCartHeaderMessageText: this.props.resources.itemAddedToCartHeaderMessageText,\n freePriceText: this.props.resources.freePriceText,\n originalPriceText: this.props.resources.originalPriceText,\n currentPriceText: this.props.resources.currentPriceText\n };\n }\n\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n private readonly _onRemoveSelection = (): void => {\n const { context, resources } = this.props;\n const { telemetry } = context;\n const { removeSelectedFailureMessage, removeSelectedSuccessMessage } = resources;\n const lines = this.state.productSelection;\n const productListLines = lines && lines.length && lines.filter(line => line.isChecked).map(line => line.productListLine);\n\n if (productListLines && productListLines.length > 0) {\n const productListId = productListLines[0].ProductListId;\n\n const maxWaitTimeInMilliSeconds: number = 1000;\n removeProductListLinesAsync({ callerContext: context.actionContext }, productListId!, productListLines)\n .then(async () => {\n this.setState({\n userMessage: removeSelectedSuccessMessage,\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: true\n });\n // eslint-disable-next-line no-promise-executor-return -- fix\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\n window.location.reload();\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\n telemetry.error(error);\n this.setState({\n userMessage: removeSelectedFailureMessage,\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: true\n });\n });\n }\n };\n\n private readonly _getOrderTemplatePageUrl = (): string => {\n let url = getUrlSync('ordertemplate', this.props.context.actionContext) || '';\n url = url.includes('?') ? url.substr(0, url.indexOf('?')) : url;\n if (this.props.data.orderTemplate?.result?.productList.Id) {\n return `${url}?id=${this.props.data.orderTemplate.result.productList.Id}`;\n }\n return '';\n };\n\n private readonly _onAddSelectionToBag = async (): Promise => {\n const lines = this.state.productSelection;\n const selectedLines = lines.filter(line => line.isChecked);\n if (selectedLines.length > 0) {\n for (const productLine of selectedLines) {\n const itemKey = productLine.fullProduct?.ProductDetails.ItemId ?? '';\n const product = productLine.fullProduct?.ProductDetails ?? {\n RecordId: 0,\n ProductTypeValue: 0,\n BasePrice: 0,\n Price: 0,\n AdjustedPrice: 0\n };\n const quantity = productLine.productListLine.Quantity ?? 0;\n if (this._isChannelMultipleCatalogsFeatureEnabled()) {\n const catalogId = productLine.productListLine.CatalogId;\n await this._addItemToBag(product, quantity, itemKey, catalogId);\n } else {\n await this._addItemToBag(product, quantity, itemKey);\n }\n }\n }\n return Promise.resolve(void 0);\n };\n\n private _renderOrderTemplateActions(\n orderTemplate: OrderTemplate,\n isMultipleCatalogFeatureEnabledInHq: boolean\n ): IOrderTemplateActionsViewProps {\n const { id, typeName, context, resources } = this.props;\n const {\n addTemplateToBagButtonText,\n renameTemplateButtonText,\n deleteTemplateButtonText,\n closeWindowButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n orderTemplateErrorMessage\n } = resources;\n\n const orderTemplateActions: IOrderTemplateActionsProps = {\n data: { orderTemplate },\n id,\n typeName,\n context,\n telemetryContent: this.telemetryContent,\n handlers: {\n onRenameTemplate: this._renameTemplate,\n onRemoveTemplate: this._removeTemplate\n },\n isMultipleCatalogFeatureEnabledInHq,\n renameOrderTemplateDialogStrings: this._generateOrderTemplateNameDialogResources(resources),\n resources: {\n addTemplateToBagButtonText,\n renameTemplateButtonText,\n deleteTemplateButtonText,\n addToCartFailureMessage,\n addToCartSuccessMessage,\n addToCartProcessMessage,\n closeWindowButtonText,\n orderTemplateErrorMessage,\n linesAddedToCartDialogResources: this._generateLinesAddedToCartDialogResources()\n }\n };\n\n return OrderTemplateActionsView(orderTemplateActions);\n }\n\n private _generateOrderTemplateNameDialogResources(resources: IOrderTemplateResources): IOrderTemplateNameDialogResources {\n return {\n orderTemplateHeaderLabel: resources.renameOrderTemplateTitleText,\n orderTemplateTitleLabel: resources.orderTemplateTitle,\n orderTemplateNameAriaLabel: resources.orderTemplateTitle,\n orderTemplateDescription: '',\n defaultOrderTemplateName: resources.defaultOrderTemplateName,\n orderTemplateButtonLabel: resources.renameOrderTemplateButtonText,\n orderTemplateCancelButtonLabel: resources.cancelBtnLabel\n };\n }\n\n private readonly _getCurrentUrl = (reqContext: IRequestContext): URL => {\n if (MsDyn365.isBrowser) {\n return new URL(window.location.href);\n }\n return new URL(reqContext.url.requestUrl.href);\n };\n\n /**\n * On close handler.\n */\n private readonly onCloseHandler = () => {\n this.setState({\n itemKey: this.state.itemKey,\n userMessage: this.state.userMessage,\n statusCssString: this.state.statusCssString,\n messageGlyph: this.state.messageGlyph,\n isOpen: this.state.isOpen,\n isItemAddedToOrderTemplateOpen: false\n });\n };\n\n private readonly _renderItemAddedToCartDialog = (): React.ReactNode | null => {\n if (!this.state.itemAddedToCartDialogData) {\n return null;\n }\n const isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState?.result?.find(feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature')\n ?.IsEnabled || false;\n\n return (\n \n );\n };\n\n private _isFirstPage(): boolean {\n return this._getCurrentPageNumber() === 0;\n }\n\n private _getCurrentPageNumber(): number {\n const itemsPerPage = this.props.config.itemsPerPage || 50;\n return (this.props.context.request.query && +this.props.context.request.query.skip / itemsPerPage) || 0;\n }\n\n private readonly _renderPagination = (): React.ReactNode | null => {\n const { config, context, data, resources } = this.props;\n const orderTemplate = data && data.orderTemplate && data.orderTemplate.result;\n if (!orderTemplate) {\n return null;\n }\n\n const fullUrl = this._getCurrentUrl(context.request);\n const itemsPerPage = config.itemsPerPage || 50;\n const currentPageNumber = this._getCurrentPageNumber();\n const skipCount = currentPageNumber * itemsPerPage;\n const totalItems = orderTemplate && orderTemplate.totalLines;\n const previousText = resources.flipperPrevious;\n const nextText = resources.flipperNext;\n\n if (totalItems <= itemsPerPage) {\n return null;\n }\n\n return (\n \n );\n };\n\n private _renderProductList(): IOrderTemplateLineViewProps[] {\n const {\n selectOneRowText,\n moreButtonText,\n viewProductDetailsText,\n priceFree,\n originalPriceText,\n currentPriceText,\n addOrderTemplateItemToBagButtonText,\n removeItemFromOrderTemplateButtonText,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n inputQuantityAriaLabel,\n deleteButtonText,\n incrementButtonAriaLabel,\n decrementButtonAriaLabel,\n unavailableProductErrorMessage,\n outOfStockProductErrorMessage\n } = this.props.resources;\n\n const { context, telemetry, data } = this.props;\n const { catalogs } = data;\n const { imageSettings } = this.props.config;\n\n return this.state.productSelection.map((line, index) => {\n const currentProductProps: IOrderTemplateLineProps = {\n orderTemplateLine: line,\n productListLine: line.productListLine,\n price: line.fullProduct?.ProductPrice,\n error: line.error,\n shouldDisable: line.shouldDisable,\n context,\n isQuantityDisabledForUpdate: this.state.isQuantityDisabledForUpdate,\n productUrl: line.fullProduct\n ? this._updateProductUrlCatalog(line.fullProduct.ProductDetails, context, line.productListLine.CatalogId)\n : '',\n imageSettings,\n telemetry,\n moduleId: this.props.id,\n moduleTypeName: this.props.typeName,\n quantity: line.productListLine.Quantity!,\n handlers: {\n onAddToBag: this._addItemToBag,\n onRemoveItem: this._removeItemFromOrderTemplateLines,\n onChangeQuantity: this._changeQuantity,\n onSelect: this.onSelect.bind(this)\n },\n resources: {\n selectOneRowText,\n moreButtonText,\n viewProductDetailsText,\n productDimensionTypeColor,\n productDimensionTypeSize,\n productDimensionTypeStyle,\n freePriceText: priceFree,\n originalPriceText,\n currentPriceText,\n inputQuantityAriaLabel,\n removeFromOrderTemplateLinesText: removeItemFromOrderTemplateButtonText,\n addToBagButtonText: addOrderTemplateItemToBagButtonText,\n deleteButtonText,\n incrementButtonAriaLabel,\n decrementButtonAriaLabel,\n unavailableProductErrorMessage,\n outOfStockProductErrorMessage\n },\n index,\n isMobile: this.isMobile,\n toggleDetailsDisplayed: this._toggleDetailsDisplayed,\n isMultipleCatalogFeatureEnabledInHq: this._isChannelMultipleCatalogsFeatureEnabled(),\n catalogs: catalogs && catalogs.result\n };\n\n return OrderTemplateLineView(currentProductProps)!;\n });\n }\n\n private readonly _toggleDetailsDisplayed = (props: IOrderTemplateLineProps): void => {\n let state = {\n isDetailsDisplayed: !this.state.isDetailsDisplayed\n };\n if (props) {\n state = {\n ...state,\n ...{\n detailedProductView: OrderTemplateMobileLineView(props)\n }\n };\n }\n this.setState(state);\n };\n\n // This method is used to update the product url with the catalogId\n private readonly _updateProductUrlCatalog = (\n productDetails: SimpleProduct,\n context: ICoreContext,\n catalogId: number | undefined\n ): string => {\n const productUrl = getProductUrlSync(productDetails, context.actionContext, undefined);\n if (!StringExtensions.isNullOrWhitespace(productUrl) && catalogId !== undefined) {\n const absoluteUrl = new URL(productUrl, window.location.href);\n absoluteUrl.searchParams.set('catalogid', `${catalogId ?? 0}`);\n return absoluteUrl.href;\n }\n\n return productUrl;\n };\n\n // Dismiss alert when addingToCart/removeItem\n private readonly _onDismiss = () => {\n this.setState({\n isOpen: false\n });\n };\n\n private readonly _changeQuantity = async (itemKey: string, quantity: number, props?: IOrderTemplateLineProps) => {\n const { context, data, telemetry, config, resources } = this.props;\n const { orderTemplate } = data;\n\n if (context) {\n if (orderTemplate?.result) {\n const orderTemplateLinesData = orderTemplate.result.orderTemplateLines;\n if (orderTemplateLinesData) {\n const orderLineIndex = orderTemplateLinesData.findIndex(\n (lines: OrderTemplateLine) => lines.productListLine.LineId === itemKey\n );\n const newProductListLine = { ...orderTemplateLinesData[orderLineIndex] };\n if (orderTemplateLinesData[orderLineIndex].productListLine.Quantity === quantity) {\n return;\n }\n const prevQuantity = newProductListLine.productListLine.Quantity;\n newProductListLine.productListLine.Quantity = quantity;\n const { fullProduct, ...line } = newProductListLine;\n\n // Update mobile modal\n if (props) {\n props.quantity = quantity;\n this.setState({\n detailedProductView: OrderTemplateMobileLineView(props)\n });\n }\n\n this.setState({\n isQuantityDisabledForUpdate: true\n });\n\n updateProductListLinesAsync({ callerContext: context.actionContext }, orderTemplate.result.productList.Id, [\n line.productListLine\n ])\n .then(list => {\n this.setState({\n itemKey,\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isQuantityDisabledForUpdate: false,\n isOpen: false\n });\n if (list) {\n const newLine = list.find(lines => lines.LineId === itemKey);\n orderTemplateLinesData[orderLineIndex].productListLine = newLine!;\n const updatedLines = [...orderTemplateLinesData];\n updatedLines[orderLineIndex] = { fullProduct, productListLine: newLine! };\n const updatedOrderTemplate = { ...orderTemplate.result, ProductListLines: updatedLines };\n context.actionContext.update(\n new ActiveOrderTemplateLinesInput(context.actionContext.requestContext, config),\n updatedOrderTemplate\n );\n }\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable to update product quantity.');\n telemetry.error(error);\n const userMessage = resources.editOrderTemplateLineQuantityError;\n if (props) {\n props && (props.productListLine.Quantity = prevQuantity);\n this.setState({\n itemKey,\n userMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isQuantityDisabledForUpdate: false,\n isOpen: true,\n detailedProductView: OrderTemplateMobileLineView(props)\n });\n } else {\n newProductListLine.productListLine.Quantity = prevQuantity;\n this.setState({\n itemKey,\n userMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isQuantityDisabledForUpdate: false,\n isOpen: true\n });\n }\n });\n }\n }\n }\n };\n\n private readonly _addItemToBag = async (\n product: SimpleProduct,\n quantity: number,\n itemKey: string,\n catalogId?: number | undefined\n ): Promise => {\n const { context, data, resources, telemetry } = this.props;\n const { cart } = data;\n const { maxQuantityLimitText, addedToCartFailureMessage } = resources;\n\n if (context) {\n if (cart.result) {\n const addProductToCartInput = {\n product,\n count: quantity,\n catalogId\n };\n\n await cart.result\n .addProductToCart(addProductToCartInput)\n .then((result: ICartActionResult) => {\n if (result.status === 'SUCCESS') {\n return getPriceForSelectedVariant(\n new PriceForSelectedVariantInput(\n product.RecordId,\n this.props.context.actionContext.requestContext.apiSettings.channelId,\n product\n ),\n this.props.context.actionContext\n ).then(priceResult => {\n if (!priceResult) {\n return AsyncResult.reject('Failed to retrieve product price');\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- read config file.\n const isMiniCart = context.app.config.addToCartBehavior === 'showMiniCart';\n this.setState({\n itemKey,\n userMessage: '',\n statusCssString: 'success',\n messageGlyph: 'fas fa-check',\n isOpen: false,\n isItemAddedToOrderTemplateOpen: !isMiniCart,\n itemAddedToCartDialogData: {\n product,\n productPrice: priceResult,\n quantity\n },\n isDetailsDisplayed: false\n });\n return AsyncResult.resolve();\n });\n } else {\n switch (result.substatus) {\n case 'MAXQUANTITY':\n if (context.app.config.maxQuantityForCartLineItem) {\n const cartLineQuantity: number | undefined =\n cart.result?.cart.CartLines &&\n cart.result?.cart.CartLines.find(result => result.ProductId === product.RecordId)?.Quantity;\n const defaultMessage = `You can only add ${context.app.config.maxQuantityForCartLineItem} of this item to your shopping bag`;\n this.setState({\n itemKey,\n userMessage:\n cartLineQuantity !== undefined\n ? maxQuantityLimitText\n .replace('{curQuantity}', cartLineQuantity.toString())\n .replace(\n '{maxQuantity}',\n context.app.config.maxQuantityForCartLineItem.toString()\n ) || defaultMessage\n : defaultMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n } else {\n const defaultMessage = `Max quantity for cart line item is undefined. Please define in configuration settings.`;\n this.setState({\n itemKey,\n userMessage: defaultMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n case 'INVOICEINCART': {\n this.setState({\n itemKey,\n userMessage: result.errorDetails?.LocalizedMessage || addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n default:\n telemetry.debug('[order-template-lines] Unable to Update Cart Line from the order template lines');\n this.setState({\n itemKey,\n userMessage: addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n return AsyncResult.resolve();\n }\n }\n })\n .catch((error: Error) => {\n telemetry.warning(error.message);\n telemetry.debug('[order-template-lines] Error trying to Update Cart Line from the order template lines');\n if (StringExtensions.isNullOrWhitespace(error.message)) {\n this.setState({\n itemKey,\n userMessage: error.message,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n } else {\n this.setState({\n itemKey,\n userMessage: addedToCartFailureMessage,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n }\n });\n }\n }\n };\n\n private readonly _removeItemFromOrderTemplateLines = async (line: IOrderTemplateLineViewModel) => {\n const { context, data, telemetry } = this.props;\n const { orderTemplate } = data;\n\n if (context && context.actionContext) {\n const maxWaitTimeInMilliSeconds: number = 1000;\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplate?.result && line) {\n const featureStates = await getFeatureState(createGetFeatureStateInput(context.actionContext), context.actionContext);\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (ArrayExtensions.hasElements(featureStates)) {\n isMultipleCatalogFeatureEnabledInHq =\n featureStates.find(\n (featureState: FeatureState) => featureState.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n const catalogId = getCatalogId(context.actionContext.requestContext);\n if (isMultipleCatalogFeatureEnabledInHq) {\n line.productListLine.CatalogId = catalogId;\n }\n removeProductListLinesAsync({ callerContext: context.actionContext }, line.productListLine.ProductListId!, [\n line.productListLine\n ])\n .then(async () => {\n // eslint-disable-next-line no-promise-executor-return -- fix\n await new Promise(resolve => setTimeout(resolve, maxWaitTimeInMilliSeconds));\n window.location.reload();\n })\n .catch(error => {\n telemetry.warning('[order-template-lines] Unable remove items from the order template lines');\n telemetry.error(error);\n });\n } else {\n telemetry.warning(\n '[order-template-lines] Unable remove items from the order template lines user token or lineItemID was not found'\n );\n }\n }\n };\n\n private readonly _renameTemplate = async (_template: ProductList): Promise => {\n window.location.reload();\n return Promise.resolve();\n };\n\n private readonly _removeTemplate = () => {\n const { context, data, telemetry, resources } = this.props;\n const { orderTemplate } = data;\n\n if (context && context.actionContext) {\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && orderTemplate && orderTemplate.result) {\n deleteAsync({ callerContext: context.actionContext }, orderTemplate.result.productList)\n .then()\n .catch((error: string) => {\n telemetry.warning('[order-template] Unable to delete order template.');\n telemetry.error(error);\n this.setState({\n itemKey: orderTemplate.result?.productList.Id || '',\n userMessage: resources.deleteOrderTemplateFailedText,\n statusCssString: 'danger',\n messageGlyph: 'fas fa-exclamation-triangle',\n isOpen: true\n });\n });\n const newLink = getUrlSync('ordertemplatelist', this.props.context.actionContext);\n if (newLink) {\n window.location.assign(newLink);\n }\n } else {\n telemetry.warning('[order-template] Failed to delete order template. Order template was not found');\n }\n } else {\n telemetry.warning('[order-template] Failed to delete order template.');\n }\n };\n\n private _updateViewport(): void {\n this._viewport = this._getViewport();\n }\n\n private readonly _getViewport = (): GridSize => {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n };\n\n /**\n * Renders a Pagination previous text.\n * @param paginationPreviousText - Pagination previous text from resources.\n * @returns Previous text and flipper icon.\n */\n private readonly _renderPrev = (paginationPreviousText: string) => {\n return (\n
\n
\n );\n };\n\n /**\n * Renders a Pagination next text.\n * @param paginationNextText - Pagination next text from resources.\n * @returns Next text and flipper icon.\n */\n private readonly _renderNext = (paginationNextText: string) => {\n return (\n
\n {paginationNextText}\n
\n );\n };\n}\n\nexport default OrderTemplateLines;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, INodeProps, Modal, ModalBody, ModalFooter, ModalHeader, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderTemplateLineViewProps } from './components';\nimport { IOrderTemplateViewProps } from './order-template';\n\nconst OrderTemplateLinesView: React.FC = (props: IOrderTemplateViewProps) => {\n const {\n OrderTemplateLines,\n status,\n statusMessage,\n heading,\n ProductsTable,\n ProductsTableHeading,\n orderLines,\n ProductsTableRow,\n productsStatusMessage,\n OrderTemplateActions,\n orderActions,\n pagination,\n itemAddedToCartDialog,\n bulkOrderLineActions,\n isDetailsDisplayed,\n detailedProductView,\n toggleDetailsDisplayed,\n resources: {\n cancelBtnLabel,\n productNumberText,\n productText,\n productUnitPriceText,\n productUOMText,\n productQuantityText,\n productLineCatalogName\n }\n } = props;\n\n const toggleDetails = React.useCallback(() => {\n toggleDetailsDisplayed && toggleDetailsDisplayed(undefined);\n }, [toggleDetailsDisplayed]);\n\n return (\n \n {heading}\n {OrderTemplateActions && (\n \n {orderActions?.addTemplateToBag}\n {orderActions?.renameTemplate}\n {orderActions?.removeTemplate}\n {orderActions?.actionsSplitButton}\n {!isDetailsDisplayed && productsStatusMessage}\n \n )}\n {bulkOrderLineActions}\n {status !== 'SUCCESS' && statusMessage}\n {ProductsTable && orderLines && orderLines.length > 0 && (\n \n \n {ProductsTableHeading}\n \n {orderLines &&\n orderLines.map(product => {\n return _renderItem(product, productQuantityText, ProductsTableRow);\n })}\n \n \n {pagination}\n \n )}\n {itemAddedToCartDialog}\n \n Product Details\n \n
    \n
  • {detailedProductView?.productImage}
  • \n
  • \n {productText}:\n {detailedProductView?.productInfo}\n
  • \n
  • \n {productLineCatalogName}:\n {detailedProductView?.productLineCatalog}\n
  • \n
  • \n {productNumberText}:\n {detailedProductView?.productNumber}\n
  • \n
  • \n {productUnitPriceText}:\n {` `}\n {detailedProductView?.productPrice}\n
  • \n
  • \n {productUOMText}:\n {` `}\n {detailedProductView?.productUnitOfMeasure}\n
  • \n
  • \n {productQuantityText}:\n {detailedProductView?.productQuantityView}\n
  • \n {productsStatusMessage &&
  • {productsStatusMessage}
  • }\n
\n
\n \n \n \n \n
\n );\n};\n\nconst _renderItem = (product: IOrderTemplateLineViewProps, quantityLabel: string, ProductsTableRow?: INodeProps): JSX.Element | null => {\n if (!product) {\n return null;\n }\n\n const {\n key,\n selectLine,\n productLineCatalog,\n productImage,\n productPrice,\n productNumber,\n addToBagButton,\n removeButton,\n productInfo,\n productUnitOfMeasure,\n productQuantityView,\n productQuantity,\n popUp,\n isMobile,\n extraActionsPopup,\n isMultipleCatalogFeatureEnabledInHq,\n disabled\n } = product;\n\n const lineVisibility = disabled\n ? {\n pointerEvents: 'none',\n opacity: 0.5\n }\n : {\n pointerEvents: 'auto',\n opacity: 1\n };\n\n const disableElement: React.CSSProperties = lineVisibility as React.CSSProperties;\n\n return (\n \n {selectLine}\n {!isMobile && isMultipleCatalogFeatureEnabledInHq && {productLineCatalog}}\n {productImage}\n {isMobile ? (\n \n
{productNumber}
\n
\n {quantityLabel}:{` `}\n {productQuantity}\n
\n \n ) : (\n {productNumber}\n )}\n {!isMobile && {productInfo}}\n {!isMobile && {productPrice}}\n {!isMobile && {productUnitOfMeasure}}\n {!isMobile && {productQuantityView}}\n {isMobile && {popUp}}\n {!isMobile && !isMultipleCatalogFeatureEnabledInHq && (\n \n {addToBagButton}\n {removeButton}\n \n )}\n {extraActionsPopup}\n
\n );\n};\n\nexport default OrderTemplateLinesView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce, { getCatalogId, getUrlSync, IImageSettings, Image, isChannelTypeB2B } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport {\n ArrayExtensions,\n convertProductDimensionTypeToDimensionTypes,\n getFallbackImageUrl,\n getProductUrlSync,\n ObjectExtensions,\n Random,\n StringExtensions,\n validateCatalogId\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps, isMobile, VariantType, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport React from 'react';\n\nimport { RemoveFromComparisonButtonComponent } from '../product-comparison';\nimport { ProductComparisonState } from '../product-comparison-state';\nimport {\n getProductsInPreviewProductComparisonAction,\n GetProductsInPreviewProductComparisonInput,\n IProductComparisonProductData\n} from './actions';\nimport { IProductComparisonPreviewData } from './product-comparison-preview.data';\nimport { IProductComparisonPreviewProps } from './product-comparison-preview.props.autogenerated';\n\n/**\n * Represents product comparison view props for main product info.\n */\nexport interface IProductComparisonPreviewProductMainInfo {\n productData: IProductComparisonProductData;\n productNameLink?: string;\n\n removeFromComparisonButton: React.ReactNode;\n productImage: React.ReactNode;\n productLink: React.ReactNode;\n}\n\n/**\n * Represents product comparison view props.\n */\nexport interface IProductComparisonPreviewViewProps extends IProductComparisonPreviewProps<{}> {\n moduleProps: IModuleProps;\n collapseButton: INodeProps;\n isMainContentReady: boolean;\n\n hasUserInteractedWithComparison?: boolean;\n isExpanded?: boolean;\n subheaderText?: string;\n productsMainInfo?: IProductComparisonPreviewProductMainInfo[];\n previewGreyPlaceHolders?: React.ReactNode;\n\n productComparisonLink?: string;\n goToComparisonButton?: React.ReactNode;\n clearAllButton?: React.ReactNode;\n\n handleCollapseClick?(): void;\n clearAllProductsFromTheComparison?(): void;\n removeProductFromList?(itemId: string): void;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewState {\n isExpanded?: boolean;\n productsData?: IProductComparisonProductData[];\n greyPlaceHoldersCount?: number;\n}\n\n/**\n * Extended props for the module including info about the product.\n */\nexport interface IProductComparisonPreviewFullProps extends IProductComparisonPreviewProps {}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductComparisonPreview extends React.PureComponent {\n public static readonly className = 'ms-product-comparison-preview';\n\n public static readonly containerClassName = `${ProductComparisonPreview.className}__container`;\n\n public static readonly mainContainerClassName = `${ProductComparisonPreview.containerClassName}__main-container`;\n\n public static readonly headerClassName = `${ProductComparisonPreview.mainContainerClassName}__header`;\n\n public static readonly headerLabelClassName = `${ProductComparisonPreview.headerClassName}__label`;\n\n public static readonly tableClassName = `${ProductComparisonPreview.mainContainerClassName}__table`;\n\n public static readonly tableRowClassName = `${ProductComparisonPreview.tableClassName}__product-row`;\n\n public static readonly footerClassName = `${ProductComparisonPreview.mainContainerClassName}__footer`;\n\n public static readonly collapseButtonClassName = `${ProductComparisonPreview.headerClassName}__collapse`;\n\n public static _displayedInstanceId?: string;\n\n private readonly _instanceId: string;\n\n private _hasUserInteractedWithComparison: boolean;\n\n public constructor(props: IProductComparisonPreviewFullProps) {\n super(props);\n\n this.state = {};\n\n this._instanceId = `${ProductComparisonPreview.className}-${this.props.id}-${Random.Guid.generateGuid()}`;\n ProductComparisonPreview._displayedInstanceId = this._instanceId;\n\n this._hasUserInteractedWithComparison = false;\n }\n\n public componentDidMount(): void {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return;\n }\n\n this._loadProducts();\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).listModifiedEvent.subscribe(\n {\n instanceId: this._instanceId,\n\n /**\n * Updates the state in case the state for the particular product was changed.\n */\n handler: () => {\n this._hasUserInteractedWithComparison = true;\n // eslint-disable-next-line @typescript-eslint/no-floating-promises -- Initialize data downloading.\n this._loadProducts();\n }\n }\n );\n }\n\n public componentWillUnmount(): void {\n ProductComparisonState.instance(\n this.props.context.request,\n this.props.data.accountInformation?.result\n ).listModifiedEvent.unsubscribe(this._instanceId);\n }\n\n public render(): React.ReactNode {\n if (this._instanceId !== ProductComparisonPreview._displayedInstanceId) {\n return null;\n }\n\n const viewProps: IProductComparisonPreviewViewProps = {\n ...this.props,\n moduleProps: {\n moduleProps: this.props,\n className: ProductComparisonPreview.className,\n id: this._instanceId\n },\n collapseButton: this._renderCollapseButton(),\n isMainContentReady: false,\n hasUserInteractedWithComparison: this._hasUserInteractedWithComparison\n };\n\n const productData = this._getProdutComparisonDataByCatalogId(this.state.productsData ?? this.props.data.productsData?.result);\n\n if (!ArrayExtensions.hasElements(productData)) {\n return this.props.renderView(viewProps);\n }\n\n viewProps.isMainContentReady = true;\n\n const productsLimit = this._getProductsLimit();\n if (!ObjectExtensions.isNullOrUndefined(productsLimit)) {\n viewProps.subheaderText = this.props.resources.productComparisonPreviewHeaderTextWithLimit\n .replace('{0}', productData.length.toString())\n .replace('{1}', productsLimit.toString());\n }\n\n viewProps.isExpanded = this.state.isExpanded;\n viewProps.handleCollapseClick = this._handleCollapseClick;\n viewProps.productsMainInfo = this._getProductsMainInfo(productData);\n viewProps.previewGreyPlaceHolders = this._renderGreyPlaceHolders(productData);\n viewProps.productComparisonLink = getUrlSync('product-comparison', this.props.context.actionContext);\n viewProps.clearAllProductsFromTheComparison = this._clearAllProductsFromTheComparison;\n viewProps.removeProductFromList = this._removeProductFromList;\n viewProps.goToComparisonButton = this._renderGoToComparisonButton(viewProps.productComparisonLink);\n viewProps.clearAllButton = this._renderClearAllButton();\n\n return this.props.renderView(viewProps);\n }\n private _getProdutComparisonDataByCatalogId(productData: IProductComparisonProductData[] | undefined): IProductComparisonProductData[] {\n const catalogId = getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n const productByCatalogId = productData?.filter(product => product.catalogId === catalogId) ?? [];\n return productByCatalogId;\n }\n private async _loadProducts(): Promise {\n const items = ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).items;\n const input = new GetProductsInPreviewProductComparisonInput(items);\n const productData = await getProductsInPreviewProductComparisonAction(input, this.props.context.actionContext);\n const productDataByCatalogId = this._getProdutComparisonDataByCatalogId(productData);\n this.setState({ productsData: productDataByCatalogId });\n this._getGreyPlaceHoldersCount(productDataByCatalogId);\n }\n\n private _getGreyPlaceHoldersCount(productData: IProductComparisonProductData[]): number | undefined {\n if (productData && ArrayExtensions.hasElements(productData)) {\n const limit = this._getProductsLimit();\n if (limit && this.props.context.app.config.displayGreyPlaceHolders) {\n const placeHolder = limit - productData.length;\n this.setState({ greyPlaceHoldersCount: placeHolder });\n return placeHolder;\n }\n }\n return;\n }\n\n private _getProductsMainInfo(products: IProductComparisonProductData[]): IProductComparisonPreviewProductMainInfo[] {\n const productImageContainerClassName = `${ProductComparisonPreview.tableRowClassName}__product-image-container`;\n const productImageClassName = `${productImageContainerClassName}__product-image`;\n const productNameClassName = `${ProductComparisonPreview.tableRowClassName}__product-name`;\n\n return products.map(productData => {\n const product = productData.product;\n\n let productNameLink: string | undefined;\n if (msdyn365Commerce.isBrowser) {\n const productUrl = getProductUrlSync(product, this.props.context.actionContext);\n const fullUrl = new URL(productUrl, window.location.href);\n if (isChannelTypeB2B(this.props.context.actionContext.requestContext)) {\n fullUrl.searchParams.set('catalogid', `${productData.catalogId}`);\n }\n product.Dimensions?.map(dimension => {\n const dimensionValue = dimension.DimensionValue?.Value;\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\n fullUrl.searchParams.set(dimensionName, dimensionValue!);\n }\n });\n productNameLink = fullUrl.href;\n }\n\n return {\n productNameLink,\n productData,\n removeFromComparisonButton: (\n \n ),\n productImage: (\n \n {this._renderProductImage(productImageClassName, productData.product)}\n \n ),\n productLink: (\n \n {productData.product.Name}\n \n )\n };\n });\n }\n\n /**\n * Represents product comparison preview view.\n * @returns Elements.\n */\n private _renderGreyPlaceHolders = (productData: IProductComparisonProductData[]): React.ReactNode[] | undefined => {\n const counts = this.state.greyPlaceHoldersCount;\n if (this.props.context.app.config.displayGreyPlaceHolders && counts! > 0) {\n const elements = [];\n for (let index = 0; index < counts!; index++) {\n elements.push(\n \n
\n \n );\n }\n return elements;\n }\n return;\n };\n\n /**\n * Removes the product from a list.\n * @param itemId - The id of a product to remove.\n */\n private readonly _removeProductFromList = (itemId: string): void => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).removeItemById(itemId);\n this.setState(previousState => {\n return {\n productsData: previousState.productsData?.filter(item => item.itemId !== itemId)\n };\n });\n };\n\n /**\n * Toggle collapsing.\n */\n private readonly _handleCollapseClick: () => void = () => {\n this.setState(previousState => {\n return {\n isExpanded: !(previousState.isExpanded ?? this._hasUserInteractedWithComparison)\n };\n });\n };\n\n /**\n * Removes all products from the comparison.\n */\n private readonly _clearAllProductsFromTheComparison = () => {\n ProductComparisonState.instance(this.props.context.request, this.props.data.accountInformation?.result).clearAll();\n this.setState({ productsData: [] });\n };\n\n private _getProductsLimit(): number | undefined {\n const viewport = isMobile({ variant: VariantType.Browser, context: this.props.context.request });\n if (viewport === 'xs' || viewport === 'sm') {\n return this.props.context.app.config.productComparisonMobileProductsLimit;\n }\n return this.props.context.app.config.productComparisonDesktopProductsLimit;\n }\n\n /**\n * Retrieves product image react node.\n * @param className - Class name to use.\n * @param product - Product info.\n * @returns React node.\n */\n private _renderProductImage(className: string, product?: SimpleProduct): React.ReactNode | undefined {\n if (ObjectExtensions.isNullOrUndefined(product)) {\n return undefined;\n }\n\n const defaultImageSettingQ = 'w=140&h=140&m=6';\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: defaultImageSettingQ, w: 0, h: 0 },\n lg: { q: defaultImageSettingQ, w: 0, h: 0 },\n xl: { q: defaultImageSettingQ, w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n\n private _renderCollapseButton(): INodeProps {\n const shouldBeExpanded = this.state.isExpanded ?? this._hasUserInteractedWithComparison;\n const headerContainerClassName = `${ProductComparisonPreview.mainContainerClassName}__header_button`;\n let collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__expanded`;\n if (!shouldBeExpanded) {\n collapseClassName = `${ProductComparisonPreview.collapseButtonClassName}__collapsed`;\n }\n\n return {\n className: classnames(headerContainerClassName, ProductComparisonPreview.collapseButtonClassName, collapseClassName),\n onClick: this._handleCollapseClick,\n role: 'button',\n tabIndex: 0\n };\n }\n\n private _renderGoToComparisonButton(productComparisonLink: string | undefined): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonCompareProductsButtonText}\n \n );\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllProductsButtonText}\n \n );\n }\n}\n\nexport default ProductComparisonPreview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport msdyn365Commerce from '@msdyn365-commerce/core';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IProductComparisonPreviewViewProps, ProductComparisonPreview } from './product-comparison-preview';\n\n/**\n * Represents product comparison preview view.\n * @param props - View props for product comparison preview.\n * @returns Functional component of product comparison preview.\n */\nexport const ProductComparisonPreviewViewFunctionalComponent: React.FC = props => {\n if (!props.isMainContentReady) {\n return null;\n }\n\n const shouldBeExpanded = props.isExpanded ?? props.hasUserInteractedWithComparison;\n\n const containerClassName = classnames(\n ProductComparisonPreview.mainContainerClassName,\n shouldBeExpanded ? '' : `${ProductComparisonPreview.mainContainerClassName}__collapsed`\n );\n\n return (\n \n \n \n \n \n \n \n \n \n {props.resources.productComparisonPreviewHeaderText}\n \n \n {props.subheaderText}\n \n \n \n \n \n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {info.removeFromComparisonButton}\n {info.productImage}\n \n );\n })}\n {props.previewGreyPlaceHolders}\n \n \n {props.productsMainInfo?.map(info => {\n return (\n \n {msdyn365Commerce.isBrowser ? info.productLink : undefined}\n \n );\n })}\n \n \n \n \n \n {props.clearAllButton}\n {props.goToComparisonButton}\n \n \n \n \n );\n};\n\nexport default ProductComparisonPreviewViewFunctionalComponent;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml, ICoreContext, ITelemetry } from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport React from 'react';\n\n/**\n * Represents resources for the component.\n */\nexport interface IProductSpecificationResources {\n productComparisonProductItemSpecificationTrue: string;\n productComparisonProductItemSpecificationFalse: string;\n}\n\n/**\n * Represent configuration of the component.\n */\nexport interface IProductSpecificationProps {\n telemetry: ITelemetry;\n specification?: AttributeValue;\n context: ICoreContext;\n\n resources: IProductSpecificationResources;\n}\n\n/**\n * Represents the product specification values that comes from the server.\n */\nexport enum SpecificationDataTypeValues {\n none = 0,\n currency = 1,\n dateTime = 2,\n decimal = 3,\n integer = 4,\n text = 5,\n boolean = 6,\n video = 40,\n image = 41\n}\n\n/**\n * Represents the component which renders product comparison table.\n */\nexport class ProductSpecification extends React.PureComponent {\n private static _renderCurrencyCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.CurrencyValue)) {\n return null;\n }\n\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n private static _renderDateTimeCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isFunction(product.DateTimeOffsetValue?.toUTCString)) {\n return null;\n }\n\n return {product.DateTimeOffsetValue!.toUTCString()};\n }\n\n private static _renderIntegerCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.IntegerValue)) {\n return null;\n }\n\n return {product.IntegerValue};\n }\n\n private static _renderDecimalCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.FloatValue)) {\n return null;\n }\n\n return {product.FloatValue};\n }\n\n private static _renderTextCell(product: AttributeValue): React.ReactNode | null {\n if (ObjectExtensions.isNullOrUndefined(product.TextValue)) {\n return null;\n }\n\n // eslint-disable-next-line react/no-danger -- Implementation is a copy.\n return ;\n }\n\n public constructor(props: IProductSpecificationProps) {\n super(props);\n }\n\n public render(): React.ReactNode | null {\n const specification = this.props.specification;\n if (ObjectExtensions.isNullOrUndefined(specification)) {\n return null;\n }\n\n switch (specification.DataTypeValue) {\n case SpecificationDataTypeValues.none:\n // Return span here instead of null so the row still shows\n return ;\n case SpecificationDataTypeValues.currency:\n return ProductSpecification._renderCurrencyCell(specification);\n case SpecificationDataTypeValues.dateTime:\n return ProductSpecification._renderDateTimeCell(specification);\n case SpecificationDataTypeValues.decimal:\n return ProductSpecification._renderDecimalCell(specification);\n case SpecificationDataTypeValues.integer:\n return ProductSpecification._renderIntegerCell(specification);\n case SpecificationDataTypeValues.text:\n return ProductSpecification._renderTextCell(specification);\n case SpecificationDataTypeValues.boolean:\n return this._renderTrueFalseCell(specification);\n case SpecificationDataTypeValues.video:\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case SpecificationDataTypeValues.image:\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${specification.DataTypeValue ?? 'null'} so skipping line`);\n return null;\n }\n }\n\n private _renderTrueFalseCell(product: AttributeValue): React.ReactNode | null {\n if (product.BooleanValue) {\n return {this.props.resources.productComparisonProductItemSpecificationTrue};\n }\n return {this.props.resources.productComparisonProductItemSpecificationFalse};\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IComponentProps } from '@msdyn365-commerce/core';\nimport { Button } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback } from 'react';\n\n/**\n * Resources for the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonResources {\n productComparisonRemoveProductFromListAriaLabel: string;\n}\n\n/**\n * The configuration of the remove from comparison button component.\n */\nexport interface IRemoveFromComparisonButtonComponentProps extends IComponentProps {\n className: string;\n itemId: string;\n\n resources: IRemoveFromComparisonButtonResources;\n\n onClickHandler(itemId: string): void;\n}\n\n/**\n * Represents a button which handles adding to product comparison.\n * @param props - Configuration of the component.\n * @returns React functional component.\n */\nconst RemoveFromComparisonButtonFunctionalComponent: React.FC = (\n props: IRemoveFromComparisonButtonComponentProps\n) => {\n const onClick = useCallback(() => {\n props.onClickHandler(props.itemId);\n }, [props]);\n\n const { className } = props;\n\n return \n );\n }\n\n private readonly _goBack = (): void => {\n const backToShoppingUrl = getUrlSync('home', this.props.context.actionContext) || '';\n if (document.referrer === '') {\n window.location.href = backToShoppingUrl;\n } else {\n window.history.back();\n }\n };\n\n /**\n * Retrieves localized text for dimension.\n * @param dimensionId - Dimension id.\n * @returns Localized text.\n */\n private _getDimensionName(dimensionId: number): string | undefined {\n if (dimensionId === ProductDimensionType.Color) {\n return this.props.resources.productComparisonProductItemColorDimension;\n }\n if (dimensionId === ProductDimensionType.Size) {\n return this.props.resources.productComparisonProductItemSizeDimension;\n }\n\n if (dimensionId === ProductDimensionType.Style) {\n return this.props.resources.productComparisonProductItemStyleDimension;\n }\n return undefined;\n }\n\n private getUpdatedDimensionsProps(dimensionId: number, products: IProductComparisonProductMainInfo[]) {\n const dimensionClassName = `${ProductComparison.dimensionsRowClassName}__dimension-${dimensionId}`;\n const dimensionDescription = this._getDimensionName(dimensionId);\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimensionId);\n let dimensionSelectionType = SelectionType.text;\n\n const dimensionsAsSwatchConfiguration: DimensionTypes[] | undefined = this.props.context.app.config.dimensionsAsSwatchType;\n if (\n ArrayExtensions.hasElements(dimensionsAsSwatchConfiguration) &&\n !dimensionsAsSwatchConfiguration?.includes(DimensionTypes.none) &&\n dimensionsAsSwatchConfiguration?.includes(dimensionName)\n ) {\n dimensionSelectionType = SelectionType.swatch;\n }\n\n const productDimensionValues = products.map(productMainInfo => {\n let dimension: IDimensionResult[] = [];\n let textValue: string = '';\n let renderSwatch: JSX.Element | undefined;\n this.props.data.productsData?.result?.map(productsDimension => {\n if (productsDimension.productInfo.RecordId === productMainInfo.product.productInfo.RecordId) {\n dimension = productsDimension.dimensions?.dimensions ?? [];\n }\n return dimension;\n });\n\n if (dimensionSelectionType === SelectionType.swatch) {\n renderSwatch = (\n
\n {dimension.map(dimensionItems => {\n return (\n \n {dimensionItems.result.map(dimensionItem => {\n let currentDimensionId: number | undefined;\n const swatches =\n dimensionItem.map(swatchItem => {\n let isDefaultDimension: boolean = false;\n const selectedDimensions = productMainInfo.product.productInfo.Dimensions?.filter(\n item => item.DimensionTypeValue === swatchItem.DimensionTypeValue\n );\n selectedDimensions?.map(selectedDimension => {\n if (\n selectedDimension.DimensionValue !== undefined &&\n selectedDimension.DimensionValue.DimensionId ===\n swatchItem.DimensionValue?.DimensionId\n ) {\n isDefaultDimension = true;\n }\n return isDefaultDimension;\n });\n\n if (swatchItem.DimensionTypeValue === dimensionId) {\n currentDimensionId = swatchItem.DimensionTypeValue;\n }\n const dimensionType = dimensionName;\n return {\n itemId: `${swatchItem.DimensionValue?.RecordId ?? ''}-${swatchItem.DimensionValue\n ?.Value ?? ''}`,\n value: swatchItem.DimensionValue?.Value ?? '',\n dimensionType,\n colorHexCode: swatchItem.DimensionValue?.ColorHexCode,\n imageUrl: swatchItem.DimensionValue?.ImageUrl,\n isDefault: isDefaultDimension\n };\n }) ?? [];\n if (currentDimensionId && currentDimensionId === dimensionId) {\n return (\n \n );\n }\n return null;\n })}\n
\n );\n })}\n
\n );\n }\n\n if (dimensionSelectionType === SelectionType.text) {\n dimension.map(item => {\n return item.result.map(items => {\n return items.map(dimensionItem => {\n if (dimensionItem.DimensionTypeValue === dimensionId) {\n const productDimensionSeperatorValue =\n textValue !== ''\n ? this.props.resources.productDimensionSeparator\n : this.props.resources.productDimensionSeparator.replace('/', '');\n textValue = textValue + format(productDimensionSeperatorValue, dimensionItem.DimensionValue?.Value ?? '');\n }\n return textValue;\n });\n });\n });\n }\n\n const dimensionProps = {\n RecordId: productMainInfo.product.productInfo.RecordId,\n Value: textValue,\n DimensionId: dimensionId,\n ImageUrl: productMainInfo.product.productInfo.PrimaryImageUrl\n };\n\n return {\n dimensionProps,\n productMainInfo,\n node: (\n
\n {dimensionSelectionType === SelectionType.swatch ? renderSwatch : dimensionProps.Value}\n
\n )\n };\n });\n return {\n dimensionId,\n dimensionName: dimensionDescription,\n dimensionClassName,\n productDimensionValues\n };\n }\n private _getSpecificationProps(specifications: AttributeValue[], products: IProductComparisonProductMainInfo[]) {\n return specifications.map(specification => {\n const specificationClassName = `${ProductComparison.specificationsRowClassName}__specification-${specification.Name!}`;\n\n const specificationValues = products.map(productMainInfo => {\n const productSpecification = productMainInfo.product.specifications?.specificationsList.find(\n productSpecifications => productSpecifications.Name === specification.Name\n );\n\n return {\n productSpecification,\n productMainInfo,\n node: (\n
\n \n
\n )\n };\n });\n\n return {\n specification,\n specificationClassName,\n specificationValues\n };\n });\n }\n\n private _renderHeading(): React.ReactNode {\n return ;\n }\n\n private _renderLoading(): React.ReactNode {\n return
{this.props.resources.productComparisonLoadingText}
;\n }\n\n private _renderClearAllButton(): React.ReactNode {\n return (\n \n {this.props.resources.productComparisonClearAllButtonText}\n \n );\n }\n\n /**\n * Retrieves unique dimension ids of product.\n * @param products - Product.\n * @returns Unique dimension ids.\n */\n private getProductsDimensionsIds(products: IProductComparisonItemData[]): number[] {\n const dimensions = products.map(product => product.productInfo.Dimensions);\n const allDimensions: ProductDimension[] = ArrayExtensions.flatten(dimensions);\n\n const dimensionIds = ArrayExtensions.validValues(allDimensions.map(dimension => dimension.DimensionTypeValue));\n const uniqueDimensionIds = ArrayExtensions.unique(dimensionIds);\n\n return uniqueDimensionIds;\n }\n\n private _renderPreviousClicker(): React.ReactNode {\n return (\n \n
\n );\n};\n\n/**\n * Renders quick order grid table rows for desktop view.\n * @param props - Configuration for the rows.\n * @returns A react node with a list of quick order grid rows for desktop view.\n */\nexport const QuickOrderGridDesktopTableRowCellComponent: React.FC = (props: IQuickOrderGridTableRowProps) => {\n const product = props.data.product.productLine.fullProduct?.ProductDetails;\n const productListLine = props.data.product.productLine.productListLine;\n const { min, max, quantity } = props;\n const columnWithNumberClassName = `${props.className}__column-with-number`;\n if (product !== undefined) {\n let productUrl = '';\n if (!StringExtensions.isNullOrWhitespace(product.Name) && !ObjectExtensions.isNullOrUndefined(product.RecordId)) {\n productUrl = getProductPageUrlSync(product.Name!, product.RecordId, props.context.actionContext);\n }\n\n return (\n <>\n \n \n \n {product.ItemId}\n \n
\n \n {product.Name}\n \n \n {product.Dimensions?.map(dimension => dimension.DimensionValue?.Value)\n .filter(dimensionValue => !StringExtensions.isNullOrWhitespace(dimensionValue))\n .join(props.resources.quickOrderGridProductDimensionsSeparator)}\n \n
\n \n {renderProductPrice(props)}\n {renderUnitOfMeasure(props)}\n \n \n \n \n \n \n \n );\n }\n\n return null;\n};\n\n/**\n * Renders rows for mobile view.\n * @param props - Configuration for the rows.\n * @returns A react node with a list of quick order grid rows for mobile view.\n */\nexport const QuickOrderGridMobileTableRowCellComponent: React.FC = (props: IQuickOrderGridTableRowProps) => {\n const product = props.data.product.productLine.fullProduct?.ProductDetails;\n const productListLine = props.data.product.productLine.productListLine;\n const { min, max, quantity } = props;\n if (product !== undefined) {\n return (\n <>\n \n \n \n \n
\n {product.RecordId}\n \n \n \n
\n \n \n \n \n \n );\n }\n return null;\n};\n\n/**\n * Quick order table row component.\n * @param props - Configuration of the component.\n * @returns React node for the row.\n */\nexport const QuickOrderGridTableRowComponent: React.FC = (props: IQuickOrderGridTableRowProps) => {\n const rowClassName = `${props.className}__row`;\n const isMobileView = isMobile({ variant: VariantType.Viewport, context: props.context.request }) === 'xs';\n let headerCells: JSX.Element;\n if (isMobileView) {\n headerCells = ;\n } else {\n headerCells = ;\n }\n\n return (\n \n {headerCells}\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 MsDyn365, { IComponent, IComponentProps, ICoreContext, IImageSettings } from '@msdyn365-commerce/core';\nimport React from 'react';\n\nimport { ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { QuickOrderGridProduct } from '../quick-order-grid-product';\nimport { IQuickOrderGridRowCallbacks } from '../utilities';\nimport {\n IQuickOrderGridTableHeaderResources,\n IQuickOrderGridTableRowResources,\n QuickOrderGridTableHeaderComponent,\n QuickOrderGridTableRowComponent\n} from './components';\n\n/**\n * Quick order table data interface.\n */\ninterface IQuickOrderGridTableData {\n quickOrderGridProducts: QuickOrderGridProduct[];\n isOrderQuantityLimitsFeatureEnabled: boolean;\n}\n\n/**\n * Quick order table resources.\n */\nexport interface IQuickOrderGridTableResources extends IQuickOrderGridTableHeaderResources, IQuickOrderGridTableRowResources {}\n\n/**\n * Quick order table props.\n */\nexport interface IQuickOrderGridTableProps extends IComponentProps {\n context: ICoreContext;\n className: string;\n moduleId: string;\n moduleTypeName: string;\n\n resources: IQuickOrderGridTableResources;\n isMobileView: boolean;\n imageSettings?: IImageSettings;\n callBacks: IQuickOrderGridRowCallbacks;\n}\n\n/**\n * Quick order table component.\n */\nexport interface IQuickOrderGridTableComponent extends IComponent {}\n\n/**\n * The quick order table.\n * @param props -- The quick order table props.\n * @returns The quick order table element.\n */\nexport const QuickOrderGridTableComponent: React.FC = (props: IQuickOrderGridTableProps) => {\n const [isMobile, setIsMobile] = React.useState(props.isMobileView);\n const quickOrderGridProducts = props.data.quickOrderGridProducts;\n const isOrderQuantityLimitsFeatureEnabled = props.data.isOrderQuantityLimitsFeatureEnabled;\n\n /**\n * Update the view port.\n */\n const updateViewport = () => {\n setIsMobile(props.isMobileView);\n };\n\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', updateViewport);\n }\n\n const headerClassName = `${props.className}__header`;\n const rowClassName = `${props.className}__row`;\n\n return (\n \n \n {quickOrderGridProducts.map((quickOrderProduct, index) => {\n let quantity = quickOrderProduct.productLine.productListLine.Quantity!;\n const product = quickOrderProduct.productLine.fullProduct;\n let min: number = 1;\n let max: number = 10;\n const behavior = product?.ProductDetails?.Behavior;\n if (isOrderQuantityLimitsFeatureEnabled && !ObjectExtensions.isNullOrUndefined(behavior)) {\n if (behavior.MinimumQuantity && behavior.MinimumQuantity > 0) {\n min = behavior.MinimumQuantity;\n }\n if (behavior.MaximumQuantity && behavior.MaximumQuantity > 0) {\n max = behavior.MaximumQuantity;\n }\n quantity = Math.max(quantity, min);\n }\n const price = quickOrderProduct.productLine.fullProduct?.ProductPrice;\n return (\n \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 {\n getProductConfigure,\n IProductDimensionCallbacks,\n IProductDimensionConfigureResources,\n IProductDimensionConfigureViewProps\n} from '@msdyn365-commerce/components';\nimport {\n ProductDimension,\n ProductDimensionType,\n ProductDimensionValue,\n ProductListsDataActions,\n ProductListType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy';\nimport {\n addItemToProductListAction,\n AddItemToProductListInput,\n ArrayExtensions,\n createProductList,\n CreateProductListInput,\n FinitePromiseQueue,\n FinitePromiseQueueError,\n getDimensionsForSelectedVariant,\n GetDimensionsForSelectedVariantInput,\n getScanResult,\n GetScanResultInput,\n getSelectedVariant,\n IDimensionForSelectedVariant,\n IPromiseQueue,\n ObjectExtensions,\n QuickOrderTemplate,\n QuickOrderTemplateLine,\n SelectedVariantInput,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { debounce } from 'lodash';\nimport { computed } from 'mobx';\nimport * as React from 'react';\n\nimport { getCatalogId } from '@msdyn365-commerce/core';\nimport { ActiveProductListInput } from './actions';\nimport {\n EcommerceQuantityLimitConfigurationsFeatureName,\n IQuickOrderGridActionsProps,\n IQuickOrderGridActionsViewProps,\n IQuickOrderGridRowCallbacks,\n IQuickOrderGridState,\n QuickOrderGridActionsView,\n QuickOrderGridDrawer,\n QuickOrderGridFormComponent,\n QuickOrderGridProduct,\n QuickOrderGridTableComponent,\n RetailDefaultOrderQuantityLimitsFeatureName\n} from './components';\nimport { IQuickOrderGridData } from './quick-order-grid.data';\nimport { IQuickOrderGridProps, IQuickOrderGridResources } from './quick-order-grid.props.autogenerated';\n\n/**\n * QuickOrder Grid View props.\n */\nexport interface IQuickOrderGridViewProps extends IQuickOrderGridProps {\n header: JSX.Element;\n actions?: INodeProps;\n isB2bCustomer?: boolean;\n isQuickOrderGridFormExpanded: boolean;\n contentProps: INodeProps;\n drawer: INodeProps;\n loading?: React.ReactNode;\n quickOrderGridForm: INodeProps;\n quickOrderGridFormProductContent: INodeProps;\n quickOrderGridFormMsgContent: INodeProps;\n quickOrderGridProps: IModuleProps;\n form: React.ReactNode;\n configure?: IProductDimensionConfigureViewProps;\n isMobileView: boolean;\n container?: JSX.Element;\n orderActions?: IQuickOrderGridActionsViewProps | null;\n bulkPurchase?: React.ReactNode;\n}\n\n/**\n * QuickOrder Grid View port.\n */\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * QuickOrderGrid component.\n * @extends {React.PureComponent>}\n */\nclass QuickOrderGrid extends React.PureComponent, IQuickOrderGridState> {\n private readonly _productTextInput: React.RefObject;\n\n private readonly _quantityInput: React.RefObject;\n\n private readonly _waitTime: number = 500;\n\n private readonly _dimensionUpdateQueueMaxLength: number = 2;\n\n private readonly _errorCssClass: string = 'danger';\n\n private readonly _errorCssGlyphClass: string = 'fas fa-exclamation-triangle';\n\n private readonly _quickOrderGridFormClass: string;\n\n private readonly _quickOrderGridFormProductContent: string;\n\n private readonly _quickOrderGridFormMsgContent: string;\n\n private readonly _telemetryContent: ITelemetryContent;\n\n private readonly _dimensionUpdateQueue: IPromiseQueue = new FinitePromiseQueue(this._dimensionUpdateQueueMaxLength);\n\n private _dimensions: { [id: number]: string } = {};\n\n private _initializedDimensions: Set = new Set();\n\n private readonly _cssClassNameConfigure: string = 'ms-quick-order_grid__content-form-main';\n\n private readonly _className: string = 'ms-quick-order-grid';\n\n // @ts-expect-error: Debouce needs to be used as type.\n private _cancellabelDebounce: debounce;\n\n private _isOrderQuantityLimitsFeatureEnabled: boolean = false;\n\n private _isChannelLimitsFeatureEnabled: boolean = false;\n\n private _applyDefaultOrderSettingsForCartLine: boolean = false;\n\n private readonly _quickOrderGridCallbacks: IProductDimensionCallbacks = {\n initializeDimension: (initializedDimension: string): void => {\n if (initializedDimension) {\n this._initializedDimensions.add(initializedDimension);\n }\n },\n /**\n * Get Dropdown name.\n * @param selectedDimensionId - Dimension type.\n * @param selectedDimensionValueId - Resources.\n * @returns Dropdown name.\n */\n dimensionSelectedAsync: async (selectedDimensionId: number, selectedDimensionValueId: string): Promise => {\n this._dimensions[selectedDimensionId] = selectedDimensionValueId;\n // Only trigger _updateDimensions when all dimensions are initialized\n if (this._initializedDimensions.size === this.state.productDimensions?.length) {\n return this._dimensionUpdateQueue\n .enqueue(async () => {\n return this._updateDimensions();\n })\n .catch((error: string) => {\n // Ignore discarded processes.\n if (error !== FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue) {\n throw new Error(error);\n }\n });\n }\n },\n\n /**\n * Get Dropdown name.\n * @param dimensionType - Dimension type.\n * @param resources - Resources.\n * @returns Dropdown name.\n */\n getDropdownName: (dimensionType: number, resources: IProductDimensionConfigureResources): string => {\n return this._getDropdownName(dimensionType, resources);\n },\n\n /**\n * Method to call on dimension change.\n * @param isUpdatingDimension - Flag to update dimension.\n */\n changeUpdatingDimension: (isUpdatingDimension: boolean): void => {\n this.setState({ isUpdatingDimension });\n }\n };\n\n private readonly _quickOrderGridRowCallbacks: IQuickOrderGridRowCallbacks = {\n /**\n * Method to call remove button.\n * @param line - Grid row product.\n */\n onRemoveItem: (line: QuickOrderGridProduct): void => {\n this._removeItemRowFromTable(line.productLine);\n },\n\n /**\n * Method to call on change quantity button.\n * @param productListLineId - Grid row product list line id.\n * @param quantity - Product quantity.\n * @returns - Falg to get confirmation for action.\n */\n onChangeQuantity: (productListLineId: string | undefined, quantity: number): boolean => {\n return this._changeRowQuantity(productListLineId, quantity);\n }\n };\n\n public constructor(props: IQuickOrderGridProps) {\n super(props);\n this._productTextInput = React.createRef();\n this._quantityInput = React.createRef();\n\n this._telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.state = {\n isQuickOrderGridFormExpanded: false,\n min: 0,\n max: 10,\n quantity: 1,\n productResponse: undefined,\n productDimensions: undefined,\n productDimensionErrorState: {\n configureErrors: {}\n },\n isMobile: this.isMobile,\n products: [],\n isUpdatingDimension: false,\n productListId: ''\n };\n\n this._quickOrderGridFormClass = 'ms-quick-order-grid__content-form';\n this._quickOrderGridFormProductContent = 'ms-quick-order-grid__content-form-main';\n this._quickOrderGridFormMsgContent = 'ms-quick-order-grid__content-form-msg';\n\n this._isOrderQuantityLimitsFeatureEnabled =\n this.props.data.featureState.result?.find(featureState => featureState.Name === RetailDefaultOrderQuantityLimitsFeatureName)\n ?.IsEnabled ?? false;\n\n this._isChannelLimitsFeatureEnabled =\n this.props.data.featureState.result?.find(featureState => featureState.Name === EcommerceQuantityLimitConfigurationsFeatureName)\n ?.IsEnabled ?? false;\n\n const cartConfiguration = this.props.data.cartConfiguration;\n this._applyDefaultOrderSettingsForCartLine = cartConfiguration?.result?.ValidateDefaultOrderSettingsPerLine ?? false;\n }\n\n @computed public get isMobile(): boolean {\n const size = isMobile({ variant: VariantType.Viewport, context: this.props.context.request });\n return size === 'xs';\n }\n\n public render(): JSX.Element | null {\n const { data } = this.props;\n if (!data.customerInformation.result) {\n return null;\n }\n const quickOrderTemplate = data.quickOrderTemplate;\n\n if (quickOrderTemplate?.result !== undefined) {\n this.setState({\n products: quickOrderTemplate.result.quickOrderTemplateLines,\n productListId: quickOrderTemplate.result.productList.Id\n });\n }\n const { className = '', maxQuantity } = this.props.config;\n const customerInfo = this.props.data.customerInformation.result;\n const {\n quickOrderGridModuleHeading,\n quickOrderGridModuleDescription,\n quickOrderGridAddtogrid,\n quickOrderGridProductQuantityInputLabel,\n quickOrderGridProductInputLabel,\n quickOrderGridProductDimensionTypeColor,\n quickOrderGridProductDimensionTypeConfiguration,\n quickOrderGridSelectDimensionFormatString,\n quickOrderGridProductDimensionTypeSize,\n quickOrderGridProductDimensionTypeStyle,\n quickOrderGridProductDimensionTypeAmount,\n quickOrderGridModulePageHeading\n } = this.props.resources;\n\n const productConfigureResources: IProductDimensionConfigureResources = {\n selectDimensionFormatString: quickOrderGridSelectDimensionFormatString,\n productDimensionTypeColor: quickOrderGridProductDimensionTypeColor,\n productDimensionTypeConfiguration: quickOrderGridProductDimensionTypeConfiguration,\n productDimensionTypeSize: quickOrderGridProductDimensionTypeSize,\n productDimensionTypeStyle: quickOrderGridProductDimensionTypeStyle,\n productDimensionTypeAmount: quickOrderGridProductDimensionTypeAmount\n };\n\n const { isQuickOrderGridFormExpanded, productDimensionErrorState, productResponse, productDimensions } = this.state;\n\n const headerClassName = `${this._className}__header`;\n\n const header = (\n
\n \n
\n );\n\n const viewProps: IQuickOrderGridViewProps = {\n ...(this.props as IQuickOrderGridProps),\n\n quickOrderGridProps: { className: classnames('ms-quick-order-grid', className), moduleProps: this.props },\n contentProps: { className: 'ms-quick-order-grid__content' },\n isB2bCustomer: customerInfo?.IsB2b,\n header,\n actions: {\n className: `${this._className}-action-bar`,\n tag: 'div'\n },\n drawer: {\n tag: QuickOrderGridDrawer,\n className: `${this._className}__drawer`,\n collapseProps: { isOpen: this.state.isQuickOrderGridFormExpanded },\n moduleHeadingText: quickOrderGridModuleHeading,\n moduleDescriptionText: quickOrderGridModuleDescription,\n requestContext: this.props.context.request,\n telemetryContent: this._telemetryContent\n },\n bulkPurchase: this._renderBulkPurchase(),\n quickOrderGridForm: {\n className: `${this._quickOrderGridFormClass} ${isQuickOrderGridFormExpanded ? 'qo-show' : 'qo-hide'}`\n },\n quickOrderGridFormProductContent: {\n className: this._quickOrderGridFormProductContent\n },\n quickOrderGridFormMsgContent: {\n className: this._quickOrderGridFormMsgContent\n },\n form: QuickOrderGridFormComponent({\n productTextInput: this._productTextInput,\n quantityTextInput: this._quantityInput,\n isAddtoListDisabled: !productResponse,\n ariaLabelAddtoCart: quickOrderGridAddtogrid,\n ariaLabelProduct: quickOrderGridProductInputLabel,\n ariaLabelQuantity: quickOrderGridProductQuantityInputLabel,\n maxChars: 50,\n minQuantity: this.state.min ?? 0,\n maxQuantity: this.state.max ?? maxQuantity,\n moduleClassName: this._className,\n quickOrderGridState: this.state,\n handleInputChange: this._handleInputChange,\n handleQuantityChange: this._handleQuantityChange,\n handleAddProductListClick: this._addItemToProductListLine\n }),\n configure:\n productResponse && productDimensions\n ? getProductConfigure(\n this._cssClassNameConfigure,\n this.props.context,\n this.props.friendlyName,\n this.props.telemetry,\n quickOrderGridSelectDimensionFormatString,\n productConfigureResources,\n this._quickOrderGridCallbacks,\n productResponse,\n productDimensions,\n productDimensionErrorState\n )\n : undefined,\n isQuickOrderGridFormExpanded: this.state.isQuickOrderGridFormExpanded,\n isMobileView: this.state.isMobile,\n container: ArrayExtensions.hasElements(this.state.products) ? this._renderListContainer() : undefined,\n orderActions: this._renderQuickOrderGridActions(quickOrderTemplate?.result)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _renderQuickOrderGridActions(quickOrderTemplate: QuickOrderTemplate | undefined): IQuickOrderGridActionsViewProps | null {\n const { typeName, context, resources } = this.props;\n const {\n quickOrderGridDeleteButtonText,\n quickOrderGridBuySelectedButtonText,\n quickOrderGridBuySelectedButtonAriaLabel,\n quickOrderGridBuySelectedAddingToCartErrorNotificationTitle,\n quickOrderGridBuySelectedAddingToCartErrorNotificationCloseAriaLabel,\n quickOrderGridGoToCartText,\n quickOrderGridDialogCloseText,\n quickOrderGridSingleItemText,\n quickOrderGridMultiLineItemFormatText,\n quickOrderGridMultiLinesFormatText,\n quickOrderGridHeaderMessageText,\n addedQuantityText,\n originalPriceText,\n currentPriceText,\n freePriceText\n } = resources;\n if (ArrayExtensions.hasElements(quickOrderTemplate?.quickOrderTemplateLines)) {\n const quickOrderGridActions: IQuickOrderGridActionsProps = {\n data: { quickOrderTemplate },\n moduleClassName: this._className,\n id: 'quick-order-grid',\n typeName,\n context,\n handlers: {\n removeProductList: this._removeProductList,\n onErrorMessage: (message: string) =>\n this.setState({\n topStateMessage: {\n messageText: message,\n statusCssString: this._errorCssClass,\n messageGlyph: this._errorCssGlyphClass,\n isOpen: true\n }\n })\n },\n quickOrderGridState: this.state,\n resources: {\n quickOrderGridDeleteButtonText,\n quickOrderGridBuySelectedButtonText,\n quickOrderGridBuySelectedButtonAriaLabel,\n quickOrderGridBuySelectedAddingToCartErrorNotificationTitle,\n quickOrderGridBuySelectedAddingToCartErrorNotificationCloseAriaLabel,\n quickOrderGridGoToCartText,\n quickOrderGridDialogCloseText,\n quickOrderGridSingleItemText,\n quickOrderGridMultiLineItemFormatText,\n quickOrderGridMultiLinesFormatText,\n quickOrderGridHeaderMessageText,\n addedQuantityText,\n originalPriceText,\n currentPriceText,\n freePriceText\n }\n };\n\n return QuickOrderGridActionsView(quickOrderGridActions);\n }\n return null;\n }\n\n /**\n * Renders bulk purchase module.\n * @returns Bulk purchase module react node.\n */\n private _renderBulkPurchase(): React.ReactNode {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access -- Temporary switch for the feature which is under development.\n if (!this.props.context.app.config.isBulkPurchaseEnabled) {\n return null;\n }\n\n if (!ArrayExtensions.hasElements(this.props.slots.bulkPurchaseSlots)) {\n return null;\n }\n\n const containerClass = `${this._className}__bulk-purchase`;\n return (\n
\n {React.cloneElement(this.props.slots.bulkPurchaseSlots[0] as React.ReactElement, {\n productDimensions: this.state.productDimensions\n })}\n
\n );\n }\n\n /**\n * Render list container.\n * @returns JSX element.\n */\n private _renderListContainer(): JSX.Element {\n const containerClass = `${this._className}__table-content`;\n return
{this._renderQuickOrderTable(this._className)}
;\n }\n\n /**\n * Initial the products on quick order.\n * @returns List of quick order products or undefined.\n */\n private _initQuickOrderGridProducts(): QuickOrderGridProduct[] {\n const products: QuickOrderTemplateLine[] = this.state.products;\n\n const quickOrderGridProduct: QuickOrderGridProduct[] = products.map((product: QuickOrderTemplateLine) => {\n return new QuickOrderGridProduct(product);\n });\n\n return ArrayExtensions.validValues(quickOrderGridProduct);\n }\n\n /**\n * Method to call on clear button.\n */\n private readonly _removeProductList = () => {\n const { context, data, telemetry, resources } = this.props;\n const { quickOrderTemplate } = data;\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken && quickOrderTemplate && quickOrderTemplate.result) {\n ProductListsDataActions.deleteAsync({ callerContext: context.actionContext }, quickOrderTemplate.result.productList)\n .then(() => {\n window.location.reload();\n })\n .catch((error: string) => {\n telemetry.warning('[quick-order-grid] Unable to delete product list.');\n telemetry.error(error);\n this._updateStatusState(\n resources.quickOrderGridDeleteProductListFailedText,\n this._errorCssClass,\n this._errorCssGlyphClass,\n true\n );\n });\n } else {\n telemetry.warning('[quick-order-grid] Failed to delete product list. Product List was not found');\n }\n };\n\n /**\n * Initial the products on quick order.\n * @param className - Class name.\n * @returns JSX element.\n */\n private _renderQuickOrderTable(className: string): JSX.Element {\n const tableClassName = `${className}__table-list`;\n\n return (\n \n );\n }\n\n private _updateQuantitiesInState(product: SimpleProduct): void {\n const min: number = this._getMinQuantityForCartLineItem(this._isOrderQuantityLimitsFeatureEnabled, product);\n const max: number = this._getMaxQuantityForCartLineItem(\n this._isChannelLimitsFeatureEnabled || this._isOrderQuantityLimitsFeatureEnabled,\n product\n );\n let quantity: number = this._getQuantity(\n this._isOrderQuantityLimitsFeatureEnabled,\n this._applyDefaultOrderSettingsForCartLine,\n product\n );\n quantity = Math.max(quantity, min);\n\n this.setState({\n min,\n max,\n quantity\n });\n }\n\n private _getMinQuantityForCartLineItem(isOrderQuantityLimitsFeatureEnabled: boolean, product: SimpleProduct): number {\n if (isOrderQuantityLimitsFeatureEnabled && product?.Behavior?.MinimumQuantity && product.Behavior.MinimumQuantity > 0) {\n return product.Behavior.MinimumQuantity;\n }\n\n return 1;\n }\n\n private _getMaxQuantityForCartLineItem(isQuantityLimitsFeatureEnabled: boolean, product: SimpleProduct): number {\n if (isQuantityLimitsFeatureEnabled && product?.Behavior?.MaximumQuantity && product.Behavior.MaximumQuantity > 0) {\n return product.Behavior.MaximumQuantity;\n }\n\n return this.props.context.app.config.maxQuantityForCartLineItem;\n }\n\n private _getQuantity(\n isOrderQuantityLimitsFeatureEnabled: boolean,\n applyDefaultOrderSettingsForCartLine: boolean,\n product: SimpleProduct\n ): number {\n let defaultQuantity = 1;\n\n if (!isOrderQuantityLimitsFeatureEnabled || !applyDefaultOrderSettingsForCartLine) {\n return defaultQuantity;\n }\n\n if (product?.Behavior?.DefaultQuantity && product.Behavior.DefaultQuantity > 0) {\n defaultQuantity = product.Behavior.DefaultQuantity;\n }\n\n return defaultQuantity;\n }\n\n /**\n * Method to called on product input change.\n * @param query - Product inventory info.\n */\n private readonly _handleInputChange = (query: string): void => {\n const queryMinLength = 4;\n if (!query || query.length > queryMinLength) {\n this.setState({ quantity: 0, productDimensions: [], productResponse: undefined });\n this._updateStatusState('', '', '', false);\n }\n if (this._cancellabelDebounce) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call -- existing code.\n this._cancellabelDebounce.cancel();\n }\n\n const { telemetry, context } = this.props;\n const zeroNumber = 0;\n if (!StringExtensions.isNullOrEmpty(query)) {\n this._cancellabelDebounce = debounce(() => {\n getScanResult(\n new GetScanResultInput(\n context.actionContext.requestContext.apiSettings,\n query,\n context.actionContext.requestContext.apiSettings.channelId\n ),\n this.props.context.actionContext\n )\n .then(results => {\n this.setState({\n productResponse: results?.Product,\n productDimensions: results?.ProductDimensionFull,\n isQuickOrderGridFormExpanded: true\n });\n if (results?.Product) {\n this._updateQuantitiesInState(results.Product);\n }\n })\n .catch((error: Error) => {\n telemetry.exception(error);\n telemetry.debug('Unable to get scan results');\n });\n }, this._waitTime);\n\n setTimeout(() => {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call -- Existing code.\n this._cancellabelDebounce();\n }, zeroNumber);\n this.setState({ isQuickOrderGridFormExpanded: true });\n } else {\n this.setState({ productResponse: undefined, isQuickOrderGridFormExpanded: true });\n }\n };\n\n /**\n * Method to called on quantity change.\n * @param value - Quantity value.\n */\n private readonly _handleQuantityChange = (value: string): void => {\n let currentValue = Number.parseInt(value, 10);\n const inputElement = this._quantityInput.current instanceof HTMLInputElement && this._quantityInput.current;\n const quantityChangeDebounceTimeout = 200;\n let minimumQuantity = 0;\n let needToUpdateUIValue: boolean = false;\n if (this._isOrderQuantityLimitsFeatureEnabled && !ObjectExtensions.isNullOrUndefined(this.state.productResponse?.Behavior)) {\n const behavior = this.state.productResponse!.Behavior;\n minimumQuantity = behavior?.MinimumQuantity ?? 0;\n const newCurrentValue = Math.max(currentValue, minimumQuantity);\n if (newCurrentValue !== currentValue) {\n needToUpdateUIValue = true;\n }\n currentValue = newCurrentValue;\n }\n\n this.setState({ quantity: currentValue }, () => {\n debounce(() => {\n if (needToUpdateUIValue && !Number.isNaN(this.state.quantity) && inputElement) {\n inputElement.setAttribute('aria-valuenow', currentValue.toString());\n inputElement.value = currentValue.toString();\n }\n }, quantityChangeDebounceTimeout)();\n });\n };\n\n /**\n * Method to get dropdwon name.\n * @param dimensionType - Dimension Type.\n * @param resources - String resources.\n * @returns Dropdwon label.\n */\n private readonly _getDropdownName = (dimensionType: number, resources: IProductDimensionConfigureResources): string => {\n const isGiftCard = this.state.productResponse?.IsGiftCard;\n\n switch (dimensionType) {\n case ProductDimensionType.Color: // ProductDimensionType.Color\n return resources.productDimensionTypeColor;\n case ProductDimensionType.Configuration: // ProductDimensionType.Configuration\n return resources.productDimensionTypeConfiguration;\n case ProductDimensionType.Size: // ProductDimensionType.Size\n return resources.productDimensionTypeSize;\n case ProductDimensionType.Style: // ProductDimensionType.Style\n return isGiftCard ? resources.productDimensionTypeAmount : resources.productDimensionTypeStyle;\n default:\n return '';\n }\n };\n\n /**\n * Method to update dimension and product in UI.\n */\n private readonly _updateDimensions = async (): Promise => {\n const {\n context: {\n actionContext,\n request: {\n apiSettings: { channelId }\n }\n }\n } = this.props;\n const { productDimensions, productResponse } = this.state;\n const hasProductDimensions = ArrayExtensions.hasElements(productDimensions);\n if (!productResponse || !hasProductDimensions) {\n return;\n }\n\n const dimensionsToUpdate: { [id: number]: string } = { ...this._dimensions };\n this.setState({ isUpdatingDimension: true });\n\n // Step 1: Update state to indicate which dimensions are selected\n if (this.state.productDimensionErrorState.otherError) {\n // eslint-disable-next-line react/no-access-state-in-setstate -- existing code.\n const clearOtherErrorState = { ...this.state.productDimensionErrorState };\n clearOtherErrorState.otherError = undefined;\n this.setState({ productDimensionErrorState: clearOtherErrorState });\n }\n\n // Step 2: Clear any errors indicating the dimension wasn't selected\n for (const dimensionKey of Object.keys(dimensionsToUpdate)) {\n if (this.state.productDimensionErrorState.configureErrors[dimensionKey]) {\n // eslint-disable-next-line react/no-access-state-in-setstate -- existing code.\n const errorState = { ...this.state.productDimensionErrorState };\n errorState.configureErrors[dimensionKey] = undefined;\n\n this.setState({ productDimensionErrorState: errorState });\n }\n }\n\n // Step 3, Build the actually selected dimensions, prioritizing the information in state\n // over the information in data\n const mappedDimensions = productDimensions\n ?.map(dimension => {\n return {\n DimensionTypeValue: dimension.DimensionTypeValue,\n DimensionValue:\n this._updateDimensionValue(dimension, dimensionsToUpdate[dimension.DimensionTypeValue]) ?? dimension.DimensionValue,\n ExtensionProperties: dimension.ExtensionProperties\n };\n })\n .filter(dimension => {\n return dimension.DimensionValue;\n });\n\n // Step 4. Use these dimensions hydrate the product. Wrap this in a promise\n // so that places like add to cart can await it\n // eslint-disable-next-line no-async-promise-executor -- existing code\n const selectedProduct = new Promise(async resolve => {\n const newProduct = await getSelectedVariant(\n new SelectedVariantInput(\n productResponse.MasterProductId ? productResponse.MasterProductId : productResponse.RecordId,\n channelId,\n mappedDimensions,\n undefined,\n this.props.context.request\n ),\n actionContext\n );\n if (newProduct) {\n await getDimensionsForSelectedVariant(\n new GetDimensionsForSelectedVariantInput(\n newProduct.MasterProductId ? newProduct.MasterProductId : newProduct.RecordId,\n channelId,\n mappedDimensions,\n this.props.context.request\n ),\n actionContext\n );\n }\n\n resolve(newProduct);\n });\n\n const variantProduct = await selectedProduct;\n this.setState({ productResponse: variantProduct !== null ? variantProduct : undefined });\n };\n\n /**\n * Method to get updated dimension value.\n * @param productDimensionFull - Product dimension full.\n * @param newValueId - New Dimension value.\n * @returns Dimension Value.\n */\n private readonly _updateDimensionValue = (\n productDimensionFull: IDimensionForSelectedVariant,\n newValueId: string | undefined\n ): ProductDimensionValue | undefined => {\n if (newValueId && productDimensionFull.DimensionValues) {\n return productDimensionFull.DimensionValues.find(dimension => dimension.RecordId === +newValueId);\n }\n\n return undefined;\n };\n\n /**\n * Method to get dropdwon name.\n * @param dimensionTypeValue - Dimension Type.\n * @param resources - String resources.\n * @param isGiftCard - Flag to check if its a giftcard product.\n * @returns Dropdwon error label.\n */\n private readonly _getDimensionErrorString = (\n dimensionTypeValue: number,\n resources: IQuickOrderGridResources,\n isGiftCard?: boolean\n ): string => {\n const amountErrorMessage = resources.quickOrderGridproductDimensionTypeAmountErrorMessage;\n\n switch (dimensionTypeValue) {\n case ProductDimensionType.Color: // ProductDimensionType.Color\n return resources.quickOrderGridproductDimensionTypeColorErrorMessage;\n case ProductDimensionType.Configuration: // ProductDimensionType.Configuration\n return resources.quickOrderGridproductDimensionTypeConfigurationErrorMessage;\n case ProductDimensionType.Size: // ProductDimensionType.Size\n return resources.quickOrderGridproductDimensionTypeSizeErrorMessage;\n case ProductDimensionType.Style: // ProductDimensionType.Style\n return isGiftCard ? amountErrorMessage : resources.quickOrderGridproductDimensionTypeStyleErrorMessage;\n default:\n return '';\n }\n };\n\n /**\n * Initial the products on quick order.\n * @param productResponse - Simple Product.\n * @param quantity - Product Quantity.\n * @returns Flag to validate productlistline.\n */\n private readonly _validateCart = (productResponse: SimpleProduct, quantity: number): boolean => {\n // eslint-disable-next-line @typescript-eslint/prefer-optional-chain -- existing code\n const missingDimensions = productResponse.Dimensions?.filter(\n dimension => !(dimension.DimensionValue && dimension.DimensionValue.Value)\n );\n const minimumQuantity = 0;\n if (ArrayExtensions.hasElements(missingDimensions)) {\n const userMessage = this._getConfigureErrors(missingDimensions, false);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- existing code\n if (this.state.productDimensionErrorState.configureErrors) {\n // eslint-disable-next-line react/no-access-state-in-setstate -- existing code\n const errorState = { ...this.state.productDimensionErrorState };\n errorState.configureErrors = userMessage;\n\n this.setState({ productDimensionErrorState: errorState });\n return false;\n }\n }\n\n if (quantity <= minimumQuantity) {\n const resources = this.props.resources;\n this._updateStatusState(resources.quickOrderGridWrongQuantityErrorMsg, this._errorCssClass, this._errorCssGlyphClass, true);\n return false;\n }\n return true;\n };\n\n /**\n * Initial the products on quick order.\n * @param result - Simple Product.\n * @param isGiftCard - Product Quantity.\n * @returns Flag to validate cart.\n */\n private _getConfigureErrors(\n result: ProductDimension[] | undefined,\n isGiftCard?: boolean\n ): { [configureId: string]: string | undefined } {\n if (!result) {\n return {};\n }\n const dimensions: { [configureId: string]: string | undefined } = {};\n const resources = this.props.resources;\n for (const dimension of result) {\n dimensions[dimension.DimensionTypeValue] = this._getDimensionErrorString(dimension.DimensionTypeValue, resources, isGiftCard);\n }\n return dimensions;\n }\n\n /**\n * Method to call on quantity change in row.\n * @param itemKey - Product Key.\n * @param quantity - Product quantity.\n * @returns Flag to update status.\n */\n private readonly _changeRowQuantity = (itemKey: string | undefined, quantity: number): boolean => {\n const { context, data, telemetry } = this.props;\n const { quickOrderTemplate } = data;\n if (quickOrderTemplate?.result) {\n const quickOrderTemplateLinesData = quickOrderTemplate.result.quickOrderTemplateLines;\n if (ArrayExtensions.hasElements(quickOrderTemplateLinesData)) {\n const orderLineIndex = quickOrderTemplateLinesData.findIndex(\n (lines: QuickOrderTemplateLine) => lines.productListLine.LineId === itemKey\n );\n const newProductListLine = { ...quickOrderTemplateLinesData[orderLineIndex] };\n if (quickOrderTemplateLinesData[orderLineIndex].productListLine.Quantity === quantity) {\n return true;\n }\n const previousQuantity = newProductListLine.productListLine.Quantity;\n newProductListLine.productListLine.Quantity = quantity;\n const { fullProduct, ...line } = newProductListLine;\n\n ProductListsDataActions.updateProductListLinesAsync(\n { callerContext: context.actionContext },\n quickOrderTemplate.result.productList.Id,\n [line.productListLine]\n )\n .then(list => {\n if (ArrayExtensions.hasElements(list)) {\n const newLine = list.find(lines => lines.LineId === itemKey);\n quickOrderTemplateLinesData[orderLineIndex].productListLine = newLine!;\n const updatedLines = [...quickOrderTemplateLinesData];\n updatedLines[orderLineIndex] = { fullProduct, productListLine: newLine! };\n const updatedProductList = { ...quickOrderTemplate.result, ProductListLines: updatedLines };\n context.actionContext.update(\n new ActiveProductListInput(context.actionContext.requestContext),\n updatedProductList\n );\n return true;\n }\n\n return false;\n })\n .catch((error: Error) => {\n telemetry.warning('[quick-order-grid] Unable to update product quantity.');\n telemetry.error(error.message);\n const userMessage = 'Failed to update quantity value.';\n newProductListLine.productListLine.Quantity = previousQuantity;\n this._updateStatusState(userMessage, this._errorCssClass, this._errorCssGlyphClass, true);\n return false;\n });\n }\n return false;\n }\n\n return false;\n };\n\n /**\n * Method to call on remove item from table.\n * @param line - Order Template Line.\n */\n private readonly _removeItemRowFromTable = (line: QuickOrderTemplateLine): void => {\n const { context, data, telemetry } = this.props;\n const { quickOrderTemplate } = data;\n\n if (quickOrderTemplate?.result) {\n const userToken = context.request.user.isAuthenticated && context.request.user.token;\n if (userToken) {\n ProductListsDataActions.removeProductListLinesAsync(\n { callerContext: context.actionContext },\n line.productListLine.ProductListId!,\n [line.productListLine]\n )\n .then(() => {\n window.location.reload(false);\n })\n .catch((error: Error) => {\n telemetry.warning('[quick-order-grid] Unable remove item from product list grid');\n telemetry.error(error.message);\n });\n } else {\n telemetry.warning('[quick-order-grid] Unable remove items from product list grid user token was not found');\n }\n }\n };\n\n private readonly _isChannelMultipleCatalogsFeatureEnabled = (): boolean => {\n let isMultipleCatalogFeatureEnabledInHq = false;\n if (this.props.data.featureState) {\n isMultipleCatalogFeatureEnabledInHq =\n this.props.data.featureState.result?.find(\n feature => feature.Name === 'Dynamics.AX.Application.ChannelMultipleCatalogsFeature'\n )?.IsEnabled || false;\n }\n return isMultipleCatalogFeatureEnabledInHq;\n };\n\n /**\n * Method to call on add item from form.\n */\n private readonly _addItemToProductListLine = async (): Promise => {\n const {\n context: { actionContext },\n resources,\n telemetry\n } = this.props;\n const {\n quickOrderGridAddedToGridSuccessMessage,\n quickOrderGridAddedToGridFailureMessage,\n quickOrderGridAddedToGridDuplicateError\n } = resources;\n const { productResponse, quantity, productListId } = this.state;\n // get the current catalog id.\n const catalogId = getCatalogId(this.props.context.request);\n\n this._updateStatusState('', '', '', false);\n\n if (productResponse !== undefined && this._validateCart(productResponse, quantity)) {\n if (StringExtensions.isNullOrWhitespace(productListId)) {\n await this._createProductList();\n }\n\n if (StringExtensions.isNullOrWhitespace(this.state.productListId)) {\n this._updateStatusState(quickOrderGridAddedToGridFailureMessage, this._errorCssClass, this._errorCssGlyphClass, true);\n return;\n }\n const input = new AddItemToProductListInput(\n this.state.productListId,\n productResponse.RecordId,\n quantity,\n productResponse.DefaultUnitOfMeasure ?? 'ea',\n this._isChannelMultipleCatalogsFeatureEnabled(),\n catalogId\n );\n\n await addItemToProductListAction(input, actionContext)\n .then(result => {\n if (result.ProductListId) {\n this._updateStatusState(quickOrderGridAddedToGridSuccessMessage, 'success', 'fas fa-check', true);\n window.location.reload();\n this.setState({});\n }\n })\n .catch((error: Error) => {\n telemetry.debug('[quick-order-grid] Error trying to Update Grid Line from the quick order grid');\n if (error.name === 'Microsoft_Dynamics_Commerce_Runtime_DuplicateObject') {\n this._updateStatusState(\n quickOrderGridAddedToGridDuplicateError,\n this._errorCssClass,\n this._errorCssGlyphClass,\n true\n );\n } else {\n this._updateStatusState(\n quickOrderGridAddedToGridFailureMessage,\n this._errorCssClass,\n this._errorCssGlyphClass,\n true\n );\n }\n });\n }\n };\n\n /**\n * Method to create product list.\n * @returns - ProductListId.\n */\n private _createProductList = async (): Promise => {\n const {\n context: { actionContext },\n telemetry,\n resources\n } = this.props;\n const { productListId } = this.state;\n const { quickOrderGridAddedToGridFailureMessage } = resources;\n\n if (StringExtensions.isNullOrWhitespace(productListId)) {\n const input = new CreateProductListInput('', ProductListType.QuickOrder);\n\n await createProductList(input, actionContext)\n .then(result => {\n if (!StringExtensions.isNullOrWhitespace(result.Id)) {\n this.setState({ productListId: result.Id });\n return result.Id;\n }\n return '';\n })\n .catch((error: Error) => {\n telemetry.debug('[quick-order-grid] Error on creating productlist from quick order grid');\n telemetry.error(error.message);\n this._updateStatusState(quickOrderGridAddedToGridFailureMessage, this._errorCssClass, this._errorCssGlyphClass, true);\n return '';\n });\n return '';\n }\n\n return productListId;\n };\n\n /**\n * Method to create product list.\n * @param messageText - Message Text.\n * @param statusCssString - Css class names.\n * @param messageGlyph - Glyph string.\n * @param isOpen - Flag to show.\n */\n private readonly _updateStatusState = (messageText: string, statusCssString: string, messageGlyph: string, isOpen: boolean): void => {\n this.setState({\n // eslint-disable-next-line react/no-unused-state -- Showing user message in Form component.\n stateMessage: {\n messageText,\n statusCssString,\n messageGlyph,\n isOpen\n }\n });\n };\n}\nexport default QuickOrderGrid;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IErrorState } from '@msdyn365-commerce/components';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { IDimensionForSelectedVariant, OrderTemplateLine } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { QuickOrderGridProduct } from './quick-order-grid-product';\n\n/**\n * QuickOrderGrid state message Interface.\n */\nexport interface IQuickOrderGridStateMessage {\n isOpen: boolean;\n messageGlyph: string;\n messageText: string;\n statusCssString: string;\n}\n\n/**\n * QuickOrderGrid state Interface.\n */\nexport interface IQuickOrderGridState {\n isQuickOrderGridFormExpanded: boolean;\n isUpdatingDimension?: boolean;\n productResponse: SimpleProduct | undefined;\n productDimensions: IDimensionForSelectedVariant[] | undefined;\n min: number | undefined;\n max: number | undefined;\n quantity: number;\n stateMessage?: IQuickOrderGridStateMessage;\n topStateMessage?: IQuickOrderGridStateMessage;\n productDimensionErrorState: IErrorState;\n isMobile: boolean;\n products: OrderTemplateLine[];\n productListId: string;\n}\n\n/**\n * QuickOrder Grid Row view.\n */\nexport interface IQuickOrderGridRowViewModel extends OrderTemplateLine {\n isChecked: boolean;\n}\n\n/**\n * Interface for quick order callbacks.\n */\nexport interface IQuickOrderGridRowCallbacks {\n onRemoveItem(line: QuickOrderGridProduct): void;\n onChangeQuantity(orderTemplateLineId: string | undefined, quantity: number): boolean;\n}\n\n/**\n * Interface for quick order grid action view props.\n */\nexport interface IQuickOrderGridActionsViewProps {\n addProductListToBag: React.ReactNode;\n removeProductList?: React.ReactNode;\n userMessage?: React.ReactNode;\n}\n\nexport const RetailDefaultOrderQuantityLimitsFeatureName: string = 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature';\n\nexport const EcommerceQuantityLimitConfigurationsFeatureName: string =\n 'Dynamics.AX.Application.EcommerceQuantityLimitConfigurationsFeature';\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProductDimensionConfigureDropdownViewProps, IProductDimensionConfigureViewProps } from '@msdyn365-commerce/components';\nimport { INodeProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IQuickOrderGridViewProps, IQuickOrderGridFormViewProps } from './index';\n\n/**\n * Render product dimension/configure dropdown.\n * @param dropdown -- Product dimension drop down.\n * @returns Dropdown.\n */\nconst renderConfigureDropdown = (dropdown: IProductDimensionConfigureDropdownViewProps): JSX.Element => {\n const { containerProps, labelContainerProps, heading, errors, select } = dropdown;\n\n return (\n \n {heading}\n {errors}\n {select}\n \n );\n};\n\n/**\n * Render product dimension/configure container.\n * @param configure -- Product dimension configuration.\n * @returns Container to have dimension dropdown.\n */\nconst renderConfigure = (configure?: IProductDimensionConfigureViewProps): JSX.Element | null => {\n if (configure !== undefined) {\n const { containerProps, dropdowns } = configure;\n\n return {dropdowns.map(renderConfigureDropdown)};\n }\n return null;\n};\n\n/**\n * Render product dimension/configure container.\n * @param form -- Form props.\n * @param isMobileView -- Flag to check mobile view.\n * @param quickOrderForm - Form component container.\n * @param quickOrderProductContent - Form product component.\n * @param quickOrderMessageContent - Form user message component.\n * @param configure - Product Dimension component.\n * @returns Jsx element of quick order form component.\n */\nconst renderForm = (\n form: IQuickOrderGridFormViewProps,\n isMobileView: boolean,\n quickOrderForm: INodeProps,\n quickOrderProductContent: INodeProps,\n quickOrderMessageContent: INodeProps,\n configure?: IProductDimensionConfigureViewProps\n) => {\n return isMobileView ? (\n \n \n {form.product}\n {renderConfigure(configure)}\n {form.quantity}\n {form.userMessage}\n {form.addToListBtn}\n \n \n ) : (\n \n {form.userMessage}\n \n {form.product}\n {renderConfigure(configure)}\n {form.quantity}\n {form.addToListBtn}\n \n \n );\n};\n\n/**\n * Retrieves current sort criteria.\n * @param props - QuickOrder Grid view props.\n * @returns - Render View.\n */\nconst quickOrderGridView: React.FC = props => {\n const {\n quickOrderGridProps,\n contentProps,\n form,\n quickOrderGridForm,\n drawer,\n configure,\n quickOrderGridFormProductContent,\n quickOrderGridFormMsgContent,\n isMobileView,\n header,\n container,\n actions,\n orderActions\n } = props;\n\n return (\n \n {header}\n {actions && (\n \n {orderActions?.userMessage}\n {orderActions?.addProductListToBag}\n {orderActions?.removeProductList}\n \n )}\n \n \n {renderForm(\n form as IQuickOrderGridFormViewProps,\n isMobileView,\n quickOrderGridForm,\n quickOrderGridFormProductContent,\n quickOrderGridFormMsgContent,\n configure\n )}\n {props.bulkPurchase}\n \n \n {container}\n \n );\n};\n\nexport default quickOrderGridView;\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 '../video-player.props.autogenerated';\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content Component props.\n */\nexport interface IVideoPlayerAdditionalContentProps {\n requestContext: Msdyn365.IRequestContext;\n additionalContent: IAdditionalContentData | undefined;\n handleAdditionalTextChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalParagraphChange(event: Msdyn365.ContentEditableEvent): void;\n handleAdditionalLinkTextChange(linkIndex: number, event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content view props.\n */\nexport interface IVideoPlayerAdditionalContentViewProps {\n additionalContentNode: INodeProps;\n additionalContentItems?: IVideoPlayerAdditionalContentItemViewProps;\n}\n\n/**\n * IVideoPlayerAdditionalContentProps: Interface for\n * Video Player Additional Content Item view props.\n */\nexport interface IVideoPlayerAdditionalContentItemViewProps {\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 - Video Player Additional content component props.\n * @returns Heading Node.\n */\nconst renderHeading = (additionalContentHeading: string, props: IVideoPlayerAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalTextChange(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 - Video Player Additional content component props.\n * @returns Paragraph Node.\n */\nconst renderParagraph = (additionalContentParagraphText: string, props: IVideoPlayerAdditionalContentProps) => {\n const requestContext = props.requestContext;\n return (\n {\n props.handleAdditionalParagraphChange(event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Renders additional content heading.\n * @param ctaLink - Additional content link.\n * @param props - Video Player Additional content component props.\n * @param linkIndex - Additional content link index.\n * @returns Link Node.\n */\nconst renderLinks = (ctaLink: ILinksData, props: IVideoPlayerAdditionalContentProps, linkIndex: number) => {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: ctaLink.ariaLabel,\n className: 'ms-video-player__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, event);\n },\n requestContext\n }}\n />\n );\n};\n\n/**\n * Create node for each additonal content item.\n * @param item - Video Player additonal content item props.\n * @param props - Video Player Additional content component props.\n * @returns IVideoPlayerAdditionalContentItemViewProps.\n */\nconst getAdditionalContentItems = (\n item: IAdditionalContentData,\n props: IVideoPlayerAdditionalContentProps\n): IVideoPlayerAdditionalContentItemViewProps => {\n const headingNode = item.heading && renderHeading(item.heading, props);\n const paragraphNode = item.subtext && renderParagraph(item.subtext, props);\n const linksNode = item.links?.map((ctaLink: ILinksData, index: number) => {\n return renderLinks(ctaLink, props, index);\n });\n\n return {\n heading: headingNode,\n text: paragraphNode,\n links: linksNode,\n additionalContentItemContainer: { className: 'ms-video-player__details__additional-content__container' },\n additionalContentItemLinks: { className: 'ms-video-player__details__additional-content__cta' }\n };\n};\n\n/**\n * VideoPlayerAdditionalContent component.\n * @param props - Video Player Additional content component props.\n * @returns Video Player Additional content view props.\n */\nexport const videoPlayerAdditionalContent = (\n props: IVideoPlayerAdditionalContentProps\n): IVideoPlayerAdditionalContentViewProps | undefined => {\n const { additionalContent } = props;\n if (!additionalContent) {\n return undefined;\n }\n\n const reactNodes: IVideoPlayerAdditionalContentItemViewProps = getAdditionalContentItems(additionalContent, props);\n return {\n additionalContentNode: { className: 'ms-video-player__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 { IPlayerData, IPlayerOptions, IPlayerResources, IVideoMetadata, Player } from '@msdyn365-commerce/components';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n INodeProps,\n isMobile,\n ITelemetryContent,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IVideoPlayerAdditionalContentViewProps, videoPlayerAdditionalContent } from './components/additional-content';\nimport { ILinksData, IVideoPlayerConfig, IVideoPlayerProps } from './video-player.props.autogenerated';\n\nexport interface IVideoPlayerViewProps extends IVideoPlayerProps<{}> {\n player: React.ReactNode;\n title?: React.ReactNode;\n text?: React.ReactNode;\n links?: React.ReactNode;\n detailsContainer?: INodeProps;\n detailsContainerCta?: INodeProps;\n additionalContent?: IVideoPlayerAdditionalContentViewProps;\n handleText?(): void;\n handleParagraph?(): void;\n handleAdditionalText?(): void;\n handleAdditionalParagraph?(): void;\n handleLink?(): void;\n handleAdditionalLink?(): void;\n}\n\n/**\n *\n * VideoPlayer component.\n * @extends {React.PureComponent>}\n */\nclass VideoPlayer extends React.PureComponent> {\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly isMobileDevice: boolean;\n\n public constructor(props: IVideoPlayerProps) {\n super(props);\n this.isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\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 options = {\n ...this.props.config,\n isMobileDevice: this.isMobileDevice\n };\n const video: MsDyn365.IVideoData = this.props.config.video;\n const playerResources: IPlayerResources = {\n playAriaLabel: this.props.resources.playLabel,\n pauseAriaLabel: this.props.resources.pauseLabel,\n playingAriaLabel: this.props.resources.playingLabel,\n pausedAriaLabel: this.props.resources.pausedLabel,\n muteAriaLabel: this.props.resources.muteLabel,\n unMuteAriaLabel: this.props.resources.unMuteLabel,\n fullScreenAriaLabel: this.props.resources.fullScreenLabel,\n exitFullScreenAriaLabel: this.props.resources.exitFullScreenLabel,\n seekBarLabel: this.props.resources.seekBarLabel,\n videoTimeDurationLabel: this.props.resources.videoTimeDurationLabel,\n closedCaptionLabel: this.props.resources.closedCaptionLabel\n };\n const videoMetaData: IVideoMetadata = {};\n\n if (video) {\n videoMetaData.videoId = video.id;\n videoMetaData.title = video.title;\n videoMetaData.duration = video.playTime;\n\n if (video.thumbnail) {\n videoMetaData.posterframeUrl = video.thumbnail.src;\n }\n\n if (video._links?.binaryReferences) {\n videoMetaData.videoBinaryReferences = video._links.binaryReferences;\n }\n }\n const videoPlayerData: IPlayerData = { options: options as IPlayerOptions, metaData: videoMetaData };\n const viewProps = {\n // Context for telemetry and raw data for C1 to do customization\n // Including computed data, state data and methods\n ...this.props,\n\n player: (\n \n \n \n ),\n title: this._getVideoDetailsHeading(),\n text: this._getVideoDetailsParagraph(),\n links: this._getVideoDetailsLinks(),\n detailsContainer: { className: 'ms-video-player__details' },\n detailsContainerCTA: { className: 'ms-video-player__details__cta' },\n additionalContent: videoPlayerAdditionalContent({\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 handleText: this.handleTextChange,\n handleParagraph: this.handleParagraphChange,\n handleAdditionalText: this.handleAdditionalTextChange,\n handleAdditionalParagraph: this.handleAdditionalParagraphChange,\n handleLink: this.handleLinkTextChange,\n handleAdditionalLink: this.handleAdditionalTextChange\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle link text change.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\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 /**\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 this.props.config.paragraph = event.target.value;\n };\n\n /**\n * Handle additional text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalTextChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.heading = event.target.value;\n }\n }\n\n /**\n * Handle additional link text change.\n * @param linkIndex - The link index.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalLinkTextChange(linkIndex: number, event: MsDyn365.ContentEditableEvent): void {\n const additionalContent = this.props.config.additionalContent ?? {};\n if (additionalContent.links) {\n additionalContent.links[Number(linkIndex)].linkText = event.target.value;\n }\n }\n\n /**\n * Handle additional paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleAdditionalParagraphChange(event: MsDyn365.ContentEditableEvent): void {\n if (this.props.config.additionalContent) {\n this.props.config.additionalContent.subtext = event.target.value;\n }\n }\n\n /**\n * Get video details links.\n * @returns - React node.\n */\n private _getVideoDetailsLinks(): React.ReactNode[] | undefined {\n const { links } = this.props.config;\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\n\n return links?.map((linkData: ILinksData, index: number) => {\n payLoad.contentAction.etext = linkData.linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const linkId = index;\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: linkData.ariaLabel,\n className: 'ms-video-player__details__cta__link',\n linkText: linkData.linkText,\n linkUrl: linkData.linkUrl.destinationUrl,\n openInNewTab: linkData.openInNewTab,\n role: 'button',\n additionalProperties: attributes\n };\n\n return (\n {\n this.handleLinkTextChange(index, event);\n },\n requestContext: this.props.context.request\n }}\n />\n );\n });\n }\n\n private _getVideoDetailsHeading(): React.ReactNode | undefined {\n const { heading } = this.props.config;\n\n return (\n heading && (\n \n )\n );\n }\n\n private _getVideoDetailsParagraph(): React.ReactNode | undefined {\n const { paragraph } = this.props.config;\n\n return (\n paragraph && (\n \n )\n );\n }\n}\n\nexport default VideoPlayer;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IVideoPlayerAdditionalContentViewProps, IVideoPlayerViewProps } from './index';\n\n/**\n * Render Additional Content.\n * @param additionalContent - Additional content view props.\n * @returns JSX Element.\n */\nconst renderAdditionalContent = (additionalContent: IVideoPlayerAdditionalContentViewProps) => {\n if (additionalContent.additionalContentItems) {\n return (\n \n <>\n {additionalContent.additionalContentItems.heading}\n \n {additionalContent.additionalContentItems.text}\n \n {additionalContent.additionalContentItems.links}\n \n \n \n \n );\n }\n\n return null;\n};\n\nconst VideoPlayerView: React.FC = props => {\n return (\n
\n {props.player}\n \n {props.title}\n {props.text}\n {props.additionalContent && renderAdditionalContent(props.additionalContent)}\n \n {props.links}\n \n \n
\n );\n};\n\nexport default VideoPlayerView;\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 IWishlistItemDimension {\n key: string;\n className?: string;\n dimensionType: string;\n dimensionValue: string;\n}\n\nexport const WishlistItemDimension: React.FC = ({ key, className, dimensionType, dimensionValue }) => (\n
\n {dimensionType}:\n {dimensionValue}\n
\n);\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { PriceComponent } from '@msdyn365-commerce/components';\nimport { IAny, ICoreContext, IGeneric, IImageSettings, Image, ITelemetry, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport {\n CommerceListLine,\n ProductPrice,\n ReleasedProductType,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport {\n convertProductDimensionTypeToDimensionTypes,\n getFallbackImageUrl,\n StringExtensions\n} from '@msdyn365-commerce-modules/retail-actions';\nimport { Alert, Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWishlistItemActionMessageState } from '../wishlist-items';\nimport { WishlistItemDimension } from './wishlist-items-dimensions';\n\nexport interface IWishlistItemProps extends CommerceListLine {\n product: SimpleProduct;\n wishlistState: IWishlistItemActionMessageState;\n price?: ProductPrice;\n context: ICoreContext>;\n productUrl: string;\n imageSettings?: IImageSettings;\n removeFromWishlistText: string;\n isInStock: boolean;\n addToCartText: string;\n outOfStockText: string;\n index: number;\n itemKey: string;\n telemetry: ITelemetry;\n moduleId: string;\n moduleTypeName: string;\n enableImageProductLink?: boolean;\n inventoryInformationLabel?: string;\n inventoryLabelClassName?: string;\n telemetryContent?: ITelemetryContent;\n handlers: {\n onAddToCart(product: SimpleProduct, itemKey: string): void;\n onRemoveItem(productId: number): void | undefined;\n onDismiss(): void;\n };\n resources: {\n productDimensionTypeColor: string;\n productDimensionTypeSize: string;\n productDimensionTypeStyle: string;\n originalPriceText: string;\n currentPriceText: string;\n freePriceText: string;\n };\n}\n\nexport interface IWishlistItemViewProps {\n key: string;\n productImage: React.ReactNode;\n productLink: React.ReactNode;\n productDimensions?: React.ReactNode[];\n productPrice?: React.ReactNode;\n addToCartButton?: React.ReactNode;\n removeButton?: React.ReactNode;\n productStatusMessage?: React.ReactNode;\n productName?: React.ReactNode;\n productAriaLabel?: string;\n entireProductLink?: string;\n inventoryInformation?: React.ReactNode;\n productUnitOfMeasure?: React.ReactNode;\n}\n\nconst _addItemToCart = (props: IWishlistItemProps): void => {\n const { product, itemKey, handlers } = props;\n const { onAddToCart } = handlers;\n\n onAddToCart && product && itemKey && onAddToCart(product, itemKey);\n};\n\nconst _removeItemFromWishlist = (props: IWishlistItemProps): void => {\n const { onRemoveItem } = props.handlers;\n const { RecordId } = props.product;\n\n onRemoveItem && RecordId && onRemoveItem(RecordId);\n};\n\nconst WishListItemActions = {\n addToCart: _addItemToCart,\n removeItem: _removeItemFromWishlist\n};\n\nconst _getFullProductLink = (props: IWishlistItemProps): string => {\n if (!msdyn365Commerce.isBrowser) {\n return '';\n }\n\n const fullUrl = new URL(props.productUrl, window.location.href);\n for (const dimension of props.product.Dimensions ?? []) {\n const dimensionValue = dimension.DimensionValue?.Value;\n if (!StringExtensions.isNullOrWhitespace(dimensionValue)) {\n const dimensionName = convertProductDimensionTypeToDimensionTypes(dimension.DimensionTypeValue);\n fullUrl.searchParams.set(dimensionName, dimensionValue!);\n }\n }\n return fullUrl.href;\n // return updateProductUrl(productUrl, context, swatch);\n};\n\nconst _renderAriaLabel = (props: IWishlistItemProps): string => {\n const { product, price, context, resources } = props;\n\n const { Name, Dimensions } = product;\n const { productDimensionTypeColor, productDimensionTypeSize, productDimensionTypeStyle } = resources;\n\n let formattedPrice = 'Free';\n let dimensions = null;\n\n if (price) {\n formattedPrice =\n price.BasePrice === 0 ? resources.freePriceText : context.cultureFormatter.formatCurrency(price.BasePrice!, price.CurrencyCode);\n }\n\n if (Dimensions) {\n dimensions = Dimensions.map(productDimension => {\n switch (productDimension.DimensionTypeValue) {\n case 1:\n return `${productDimensionTypeColor}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\n case 3:\n return `${productDimensionTypeSize}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\n case 4:\n return `${productDimensionTypeStyle}${productDimension.DimensionValue && productDimension.DimensionValue.Value}`;\n default:\n return '';\n }\n });\n }\n\n return `${Name} ${formattedPrice} ${(dimensions && dimensions.join('')) || ''}`;\n};\n\n/**\n * Renders a link to a product based on the given props.\n * @param input - Wishlist item props with the info about the product.\n * @param productUrl - The url to the product.\n * @returns React component with a link to a product.\n */\nconst renderProductLink = (input: IWishlistItemProps, productUrl: string) => {\n const { telemetryContent } = input;\n const { RecordId: recordId, Name: productName } = input.product;\n const payLoad = getPayloadObject('click', telemetryContent!, '', recordId.toString());\n const productAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const productPageUrlWithSwatch = productUrl;\n return (\n !StringExtensions.isNullOrWhitespace(productPageUrlWithSwatch) && (\n \n {productName}\n \n )\n );\n};\n\n/**\n * Renders a product name box.\n * @param productName - The text to display.\n * @returns React component with a name of a product.\n */\nconst renderProductName = (productName: string) => {\n return
{productName}
;\n};\n\n/**\n * Renders inventory information.\n * @param inventoryInformationLabel - The text to display.\n * @param inventoryLabelClassName - The component class name.\n * @returns React component.\n */\nconst renderInventoryInformationLabel = (inventoryInformationLabel: string | undefined, inventoryLabelClassName: string | undefined) => {\n const inventoryCssName = inventoryLabelClassName\n ? `ms-wishlist-items__inventory-label ${inventoryLabelClassName}`\n : 'ms-wishlist-items__inventory-label';\n return (\n !StringExtensions.isNullOrWhitespace(inventoryInformationLabel) && (\n {inventoryInformationLabel}\n )\n );\n};\n\n/**\n * Renders add to cart button.\n * @param input - Wishlist item props with the configuration.\n * @returns React component.\n */\nconst WishlistItemAddToCartButtonComponent = (input: IWishlistItemProps) => {\n const { isInStock, addToCartText, outOfStockText } = input;\n\n // Check if the product is service or not by product type.\n const isServiceItem = input.product.ItemTypeValue === ReleasedProductType.Service;\n\n const addItemAction = React.useCallback(() => {\n WishListItemActions.addToCart(input);\n }, [input]);\n\n return (\n \n {((isServiceItem || isInStock) && addToCartText) || outOfStockText}\n \n );\n};\n\n/**\n * Renders remove from wishlist button.\n * @param input - Wishlist item props with the configuration.\n * @returns React component.\n */\nconst WishlistItemRemoveFromWishlistButtonComponent = (input: IWishlistItemProps) => {\n const { removeFromWishlistText } = input;\n\n const removeItemAction = React.useCallback(() => {\n WishListItemActions.removeItem(input);\n }, [input]);\n\n return \n
{choiceSummary}
\n
\n {sortByOptions && !isRecoSearchPage && renderSort(sortByOptions)}\n
\n \n {refineMenu && isExpanded && renderRefiner(refineMenu)}\n \n {refineMenu && isExpanded && renderRefinerFooter(refineMenu, toggle, resources)}\n \n \n\n \n {errorMessage}\n {props.config.enableProdutDescription ? renderProducts(props) : renderProductCards(props)}\n {pagination}\n \n \n \n );\n};\n\n/**\n * Render Search result Modal.\n * @param modalProps - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createSearchResultModal = (\n modalProps: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element => {\n return React.cloneElement(\n modalProps.modal,\n {},\n modalProps.modalHeader,\n createModalBody(modalProps, refineMenu, sortByDropDown, isRecoSearchPage),\n modalProps.modalFooter\n );\n};\n\n/**\n * Render Refiner Mobile.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefinerMobile = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Search result Body.\n * @param props - The Search Result Modal view props.\n * @param refineMenu - The Refine Menu view props.\n * @param sortByDropDown - The Sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst createModalBody = (\n props: ISearchResultModalViewProps,\n refineMenu: IRefineMenuViewProps,\n sortByDropDown: ISortByViewProps,\n isRecoSearchPage?: string\n): JSX.Element | null => {\n if (sortByDropDown) {\n return React.cloneElement(props.modalBody, {}, renderSort(sortByDropDown, isRecoSearchPage), renderRefinerMobile(refineMenu));\n }\n return null;\n};\n\n/**\n * Render Refiner.\n * @param props - The Refine Menu view props.\n * @returns The JSX Element.\n */\nconst renderRefiner = (props: IRefineMenuViewProps): JSX.Element | null => {\n const { refiners, RefineMenuContainer, RefinerSectionContainer } = props;\n if (refiners) {\n return (\n \n \n {refiners.map((submenu, index) => (\n {submenu}\n ))}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render Refiner Footer.\n * @param props - The Refine Menu view props.\n * @param handler - The Refine menu toggle function.\n * @param resources - Resources to get the done text and aria label.\n * @returns The JSX Element.\n */\nconst renderRefinerFooter = (\n props: IRefineMenuViewProps,\n handler: MouseEventHandler,\n resources: ISearchResultContainerResources\n): JSX.Element | null => {\n const { refiners } = props;\n if (refiners) {\n return (\n \n \n {resources.doneText}\n \n \n );\n }\n return null;\n};\n\n/**\n * Render sort by drop down.\n * @param props - The sort by view props.\n * @param isRecoSearchPage - The recomandation search page flag.\n * @returns The JSX Element.\n */\nconst renderSort = (props: ISortByViewProps, isRecoSearchPage?: string): JSX.Element | null => {\n const { SortingContainer, sortByDropDown } = props;\n if (sortByDropDown && !isRecoSearchPage) {\n return {sortByDropDown};\n }\n return null;\n};\n\n/**\n * Render Title.\n * @param props - The title view props.\n * @returns The JSX Element.\n */\nconst renderTitle = (props: ITitleViewProps): JSX.Element | null => {\n const { title, TitleContainer } = props;\n if (title) {\n return (\n \n \n {title.titlePrefix}\n {title.titleText}\n \n \n );\n }\n return null;\n};\n\nexport default SearchResultContainerView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n"],"names":["HeaderPreferredStore","React","constructor","modalCloseButtonRef","handleClick","this","_findPreferredStoreOnClick","props","render","data","storeSelectorStateManager","result","slots","resources","ArrayExtensions","hasElements","storeSelector","storeName","preferredStore","StoreName","headerPreferredStoreText","className","color","headerPreferredStoreAriaLabel","onClick","ref","modules","storeSelectorId","Object","keys","length","id","openDialog","showMapViewLink","parentElementRef","onLocationSelected","orgUnitLocation","Promise","resolve","catch","error","telemetry","message","debug","__decorate","observer","Logo","super","payLoad","getPayloadObject","telemetryContent","TelemetryConstant","attributes","getTelemetryAttributes","_renderLogo","config","link","linkUrl","destinationUrl","assign","href","ariaLabel","target","openInNewTab","undefined","rel","_renderImage","Msdyn365","image","requestContext","gridSettings","imageSettings","viewports","xs","q","w","h","lg","lazyload","loadFailureBehavior","editProps","key","moduleType","typeName","imagePropertyName","shouldSkipToMainImage","NavIcon","Button","toggleNavBar","title","mobileHamburgerAriaLabel","isExpanded","targetId","Header","handleLinkTextChange","linkIndex","event","_this$props$config$my","myAccountLinks","linkText","value","popOverRef","_toggleNavbar","bind","_togglePopover","_openPopover","_closePopover","_keydown","_handleMouseLeaveEvent","viewport","context","request","device","Type","state","mobileMenuCollapsed","signinPopoverOpen","hasSigninerror","timeout","getTelemetryObject","telemetryPageName","friendlyName","_this$props$data$acco","customer","accountInformation","FirstName","Name","actionContext","MsDyn365","url","requestUrl","pathname","split","includes","accountPageUrl","componentDidMount","isBrowser","window","addEventListener","reaction","cart","user","signUpCustomerNotFoundTitle","signUpMultipleCustomerFoundTitle","closeNotificationLabel","signinNotificationError","_getSigninNotification","NotificationsManager","instance","addNotification","ErrorNotification","componentWillUnmount","removeEventListener","wishlists","cartLabel","cartQtyLabel","logoLink","logoImage","shouldShowWishlistCount","disableTooltip","app","headerToggleClass","headerClassName","classnames","navbarKey","cartIconSlot","_getSlot","menuBarSlot","searchSlot","wishlistCount","siteOptionsSlot","preferredStoreSlot","CommerceListLines","viewProps","_objectSpread","logo","wishListIconDesktop","WishListIconComponent","showButtonTooltip","wishlistTooltipText","wishlistCountLabel","isDispayWishlistCount","wishListIconMobile","cartIcon","CartIconComponent","navIcon","menuBar","search","siteOptions","HeaderTag","moduleProps","tag","HeaderContainer","HeaderTopBarContainer","Divider","MobileMenuContainer","Modal","isOpen","wrapClassName","toggle","MobileMenuHeader","ModalHeader","MobileMenuBodyContainer","ModalBody","MobileMenuLinksContainer","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","displayName","Popover","placement","signInLink","_getSigninButton","signOutLink","_getSignOutButton","accountInfoDropdownButton","_getAccountInfoDropdownButton","accountLinks","_getAccountLinks","renderView","slotName","SignIn","signInLinkText","signInUrl","signInLinkAriaText","onTelemetryClick","_user$signOutUrl","SignOut","signOutLinkText","signOutUrl","signOutLinkAriaText","signUpCustomerNotFound","signUpMultipleCustomerFound","retailServerErrorCode","showMenuOnHover","MyProfile","showOnHover","isMobile","onMouseEnter","innerRef","menuHideTimeout","timeToCloseMenu","traverseNodes","nodeList","document","querySelectorAll","node","isInMenu","parentNode","_node$classList","classList","contains","clearTimeout","setState","setTimeout","map","cta","index","contentAction","etext","editableLink","role","additionalProperties","onTextChange","keyCode","KeyCodes","Escape","observable","computed","renderCustomerName","_renderReactFragment","items","slot","Module","Node","renderForMobile","accountClassName","_renderAccountBlock","Collapse","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","_renderMobileAccountBlock","_renderCollapseMenu","ProductComponent","msdyn365Commerce","createComponentOverride","component","_ref","_product$Name","_getProductImageUrlFr","_getProductPageUrlFro","_product$AttributeVal","savingsText","freePriceText","originalPriceText","currentPriceText","ratingAriaLabel","ratingCountAriaLabel","allowBack","quickViewButton","inventoryLabel","isPriceMinMaxEnabled","priceResources","dimensionAvailabilities","product","updateProductUrl","productDetailsPageUrl","coreContext","queryString","sourceUrl","URL","apiSettings","baseUrl","getDefaultColorSwatchSelected","productData","_colorAttribute$Swatc","AttributeValues","colorAttribute","find","attributeValue","_attributeValue$KeyNa","KeyName","toLocaleLowerCase","DimensionTypes","Swatches","item","IsDefault","productUrl","getProductPageUrlSync","RecordId","productImageUrlFromSwatch","dimensionToPreSelectInProductCard","none","PrimaryImageUrl","defaultSwatch","ProductImageUrls","generateImageUrl","getProductImageUrlFromDefaultColorSwatch","productPageUrlFromSwatch","SwatchValue","getProductPageUrlFromDefaultSwatch","productPageUrl","setProductPageUrl","useState","productImageUrl","setProductImageUrl","selectedSwatchItems","Dictionary","dimensAvails","setDimensAvails","isInit","setIsInit","isUnhide","setIsUnhide","enableStockCheck","updateSizeAvailabilityHandler","e","alt","getAttribute","updateSizeAvailability","colorName","init","activeColor","colName","col","isDefault","querySelector","productId","uniqueSizes","size","filter","self","indexOf","sizes","d","newsizes","i","found","j","match","n","inventoryCode","push","s","selector","masterProductId","el","replace","_el$parentElement","style","opacity","add","remove","parentElement","updatePageAndImageUrl","swatchItem","dimensionType","setValue","StringExtensions","isNullOrWhitespace","productPageUrlWithSwatch","newUrl","searchParams","delete","toString","swatchProductImageUrl","productImageUrls","newImageUrl","location","swatchItems","validValues","_item$KeyName$toLocal","_item$KeyName","_item$Swatches$map","_item$Swatches","dimensionTypeValue","checkIfShouldDisplayAsSwatch","DimensionSwatchDisplayTypes","productCard","swatchFlatMap","swatches","_item$RecordId","_swatchItem$SwatchVal","_dimensAvails$find","_dimensAvails$find2","_swatchItem$SwatchVal2","_dimensionAvailabilit","itemId","avails","colorHexCode","SwatchColorHexCode","imageUrl","SwatchImageUrl","isDisabled","dimensionAvailability","_swatchItem$SwatchVal3","forEach","sw","productSelector","_attributeSwatch$Exte","_dimensAvails$find3","attributeSwatch","sfm","swatchTitleReplacement","ExtensionProperties","Key","Value","StringValue","setAttribute","swsel","swel","some","swatch","recordId","attribute","isUnitOfMeasureEnabled","unitOfMeasureDisplayType","getRatingAriaLabel","rating","ratingAriaLabelText","roundedRating","toFixed","format","getReviewAriaLabel","reviewCount","ratingCountAriaLabelText","renderLabel","name","price","reviewCountArialableText","prodNeUrl","getDimensionAvail","async","_data$product","searchCriteria","RequestedDimensionTypeValues","MatchingDimensionValues","DefaultWarehouseOnly","CatalogId","colorSearchCriteria","variantList","getDimensionValuesWithEstimatedAvailabilitiesAsync","callerContext","then","_data$product2","sizeRes","res","dim","searchCriteria2","createInventoryAvailabilitySearchCriteria","ProductIds","unique","getEstimatedAvailabilityAsync","res2","_res2$AggregatedProdu","AggregatedProductInventoryAvailabilities","inv","_data$product3","_dim$DimensionValue","_sizeRes$filter$0$Dim","_swatchItems$find","code","getInventoryLevelCodeFromDimensionValue","DimensionTypeValue","DimensionValue","ProductId","TotalAvailableInventoryLevelLabel","TotalAvailableInventoryLevelCode","PhysicalAvailableInventoryLevelLabel","PhysicalAvailableInventoryLevelCode","inventoryLevel","variant","MasterProductId","_s$ProductIds","p","_dim$DimensionValue2","click","quickview","selectedDimensions","getValues","convertDimensionTypeToProductDimensionType","selectedProductId","renderQuickView","ItemId","cultureFormatter","formatCurrency","Price","AverageRating","TotalRatings","productCardimageSettings","fallbackImageUrl","altText","src","fallBackSrc","imageProps","cropFocalRegion","Image","renderProductPlacementImage","moduleTypeName","moduleId","basePrice","adjustedPrice","maxVariantPrice","minVariantPrice","savingsPriceResourceText","freePriceResourceText","originalPriceResourceText","currentPriceResourceText","BasePrice","AdjustedPrice","CustomerContextualPrice","MaxVariantPrice","MinVariantPrice","PriceComponent","renderPrice","unitOfMeasure","DefaultUnitOfMeasure","description","Description","hideRating","avgRating","totalRatings","numberRatings","Number","RatingComponent","ratingCount","readOnly","renderRating","inventoryAvailabilityLabel","ProductComponentSwatchComponent","onSelectDimension","PromoCode","_onInputChangeHandler","promoCodeInputValue","canApply","_applyPromotion","cartState","appliedPromo","addPromoCode","promoCode","status","substatus","duplicatePromoCodeErrorText","invalidPromoCodeErrorText","failedToAddPromoCodeErrorText","_onSubmitHandler","preventDefault","_applyPromotionHandler","_renderForm","promoPlaceholderText","promoCodeApplyButtonText","onSubmit","onChange","placeholder","disabled","_removePromotion","currentTarget","removePromoCodes","promoCodes","failedToRemovePromoCodeErrorText","_calculateDiscount","CartLines","discountAmount","line","DiscountLines","discountLine","DiscountCode","DiscountCost","_renderAppliedPromoCode","Coupons","removePromotionHandler","promoCodTotalDiscount","reduce","count","coupon","Code","appliedPromoCodeHeadingText","removePromoAriaLabelFormat","removePromoText","ApplyPromoCode","isCollapseOpen","shouldComponentUpdate","nextProps","nextState","promoCodeHeadingText","CarouselModule","_handleDismissCarousel","cookies","set","dismissCarousel","_next","nextIndex","activeIndex","content","animating","closeNow","_previous","_onExiting","_onExited","_goToIndex","newIndex","get","carouselContainer","closeAnimation","next","previous","onIndicatorsClickHandler","handleDismissCarousel","handleOnExited","handleOnExiting","retrieveItems","renderModuleAttributes","Carousel","pause","pauseOnHover","ride","autoplay","interval","transitionType","hideFlipper","dismissEnabled","dismissCarouselAriaText","ariaLabelForDismissButton","indicatorAriaText","ariaLabelForSlide","directionTextPrev","flipperPrevious","directionTextNext","flipperNext","keyboard","validateCartAsync","propsContext","cartResult","cartVersion","shouldRetry","arguments","Version","warning","AsyncResult","_validationResult$Val","validationResult","CartsDataActions","bypassCache","Id","ValidationResultsByLineId","refreshCart","refreshError","validateError","cartLineQuantityUpdatedAsync","isQuantityLimitsFeatureEnabled","products","cartLineToUpdate","quantity","isUsingDefaultOrderSettingsMax","_modifiedProduct$Beha2","modifiedProduct","Behavior","MaximumQuantity","input","cartLineId","LineId","newQuantity","updateLineResult","updateCartLineQuantity","getProductByProductId","getProductByProductIdAndWarehouse","warehouseId","targetWarehouseValue","WarehouseId","_product$Behavior","InventoryLocationId","_renderDeliveryLocation","cartLine","deliverylocation","FulfillmentStoreId","_foundProductDelivery","orgUnitName","_getOrgUnitName","orgUnitLocations","foundProductDeliveryOption","productDeliveryOptions","deliveryOption","delivery","DeliveryOptions","option","DeliveryMode","shippingText","_renderStoreLocation","fulfillmentStoreId","foundLocation","OrgUnitNumber","OrgUnitName","_assembleCartlines","cartlines","reactNodes","cartline","foundProductAvailability","_foundProductAvailabi","productAvailabilites","productAvailability","_productAvailability$","ProductAvailableQuantity","_assembleNode","foundProductDeliveryOptions","removeButtonText","removeItemClickHandler","availableQuantityInStock","isStockCheckEnabled","outOfStockThreshold","AvailableQuantity","_getCartItemAvailableQuantity","maxQuantity","_getCartItemMaxQuantity","maxQuantityByConfig","maxByQuantityLimitsFeature","maxByQuantityLimitsFeatureResult","maxCartlineQuantity","isServiceItem","ItemTypeValue","ReleasedProductType","Service","onRemoveClickHandler","onRemoveClickFunction","RemoveCartItem","removeCartItemAttribute","getProductUrlSync","isChannelTypeB2B","_cartline$CatalogId","fullUrl","hasError","Quantity","CartLineItemComponent","catalogs","currentQuantity","isOutOfStock","isQuantityEditable","primaryImageUrl","displayMode","channelDeliveryOptionConfig","deliveryLocation","storeLocation","getMiniCartData","ctx","miniCartData","hasInvoiceLine","getActiveCartProductsAction","ActiveCartProductsInput","exception","Error","getAvailabilitiesForCartLineItems","ProductAvailabilitiesForCartLineItems","availableQuantity","getDeliveryOptionsForCartLineItems","ProductDeliveryOptionsForCartLineItems","deliveryOptions","CartIcon","retailMultiplePickUpOptionEnabled","getSortedCartLines","sortOrder","lines","sort","item1","item2","_item2$LineNumber","_item1$LineNumber","LineNumber","_item1$LineNumber2","_item2$LineNumber2","_getImageSettings","sm","_removeItemFromCartHandler","cartlineToRemove","cartLineIds","removeCartLines","isCartValid","payload","TelemetryEvent","CheckOut","Checkout","checkoutBySignInAttributes","GuestCheckout","checkoutByGuestAttributes","ViewShoppingBag","viewShoppingBagAttributes","_this$props$data$orgU","_this$props$data$cart","_setQuantityLimitsFeatureFlag","_validateCart","componentDidUpdate","prevProps","_this$props$context$r","_cart$cart$CartLines","_this$state$miniCartD","_this$state$miniCartD2","_this$props$data$chan","_this$props$data$feat","enableHoverCart","isAnonymousCheckout","isAuthenticated","guestCheckoutUrl","getUrlSync","cartUrl","checkoutURL","_getCheckoutURL","isCartEmpty","shouldShowMiniCart","isProductAddedToCart","addToCartBehavior","AddToCartBehavior","showMiniCart","emailDeliveryModeCode","channel","EmailDeliveryModeCode","cartLines","_getCartLines","validInventoryAcrossCartLines","validateCartLinesInventory","isValid","includeFlyout","totalItemsInCart","goToCartButtonText","goToCartButtonTitle","flyoutTitle","flyoutTooltip","UncontrolledTooltip","hideArrow","trigger","shouldShowCloseButton","cartPageUrl","hideAriaHidden","TotalAmount","priceString","totalPriceFormatString","featureState","feature","IsEnabled","FlyoutContainer","CartlinesWrapper","miniCartWrapper","miniCartItemWrapper","checkoutAsSignInUserButton","checkoutButtonTitle","checkoutAsGuestButton","guestCheckoutButtonTitle","goToCartButton","checkoutBlockedDueToUnavailableFunds","totalPrice","_cart$result$cart$Ver","_cart$result","lastValidatedCartVersion","ValidationResultsPairs","isAbsoluteUrl","urlCheck","returnURL","origin","_this$props$data$cata","PickupDeliveryModeCode","FlyoutCartLineItems","cartLinesSortOrder","updateMaxQuantityForCartLineItem","maxQuantityForCartLineItem","sizeString","productDimensionTypeSize","colorString","productDimensionTypeColor","configString","productDimensionTypeConfiguration","styleString","productDimensionTypeStyle","quantityDisplayString","quantityDisplayText","salesAgreementPricePrompt","inputQuantityAriaLabel","discountStringText","shippingChargesText","removeCartButtonText","outOfStockText","outOfRangeOneText","outOfRangeFormatText","pickupDeliveryModeCode","_featureStatuses$find","_featureStatuses$find2","featureStatuses","_this$props$context","defaultOrderQuantityLimitsFeatureConfig","platform","enableDefaultOrderQuantityLimits","_featureStatuses$find3","customerInformation","customerInfo","IsB2b","_cartConfiguration$Ig","cartConfiguration","IgnoreOrderSettings","_renderCartlines","CatalogLabelComponent","catalogId","validateCatalogId","isB2b","catalog","CartLineItemFunctions","renderProductDimensions","Product","DimensionStrings","Dimensions","productDimension","IsGiftCard","amountString","OfferId","OfferName","isSalesLine","PeriodicDiscount","EffectiveAmount","currencyCode","priceCurrency","EffectivePercentage","inventoryInformationLabel","inventoryCssName","inventoryLabelClassName","IsInvoiceLine","_props$context$reques","hasShippingMethod","_channelDeliveryOptio","PickupDeliveryModeCodes","deliveryMode","shippingChargeLines","ChargeLines","chargeLine","IsShipping","freightFee","chargeTotal","CalculatedAmount","priceComponent","_cartline$ChargeLines","otherCharges","chargeline","otherCharge","SalesAgreementLineRecordId","_props$context$reques2","_props$primaryImageUr","destructDimensionStrings","getFallbackImageUrl","OmniChannelMedia","productDimensions","renderDisountLines","renderInventoryLabel","renderUnitOfMeasure","renderShippingLabel","renderOtherCharges","renderSalesAgreementPrompt","productAttribute","productName","imgeClassName","newValue","quantityOnChange","lineIndex","NetAmountWithAllInclusiveTax","GrossAmount","ExtendedPrice","NetPrice","salesAgreementLineId","showShippingChargesForLineItems","_generateQuantityandPrice","nodes","IncrementalQuantity","max","currentCount","decrementButtonAriaLabel","incrementButtonAriaLabel","isCartStateReady","isGiftCard","classNames","DiscountAmount","priceEditorResources","CartLinePriceEditor","errorMessage","trim","isB2BSite","workerName","customerName","_this$props$data$empl","worker","employee","signInCustomerNotAuthorizedTitle","currentDistributorSlot","headerAriaLabel","isOBORequest","switchCustomerLink","_getSwitchCustomerButton","currentDistributor","SwitchCustomer","isOBOAccountSelected","getAccountSelectionCookie","switchCustomerLinkAriaText","switchCustomerLinkText","getBusinessPartnerSelectionUrl","removeAccountSelectionCookie","shoppingAsText","route","param","signInCustomerNotAuthorized","retailServerErrorMessage","_renderDesktopAccountBlock","OrderTemplateActions","onRemoveOrderTemplate","handlers","itemKey","removeOrderTemplateActionHandler","OrderTemplateRender","orderTemplate","removeFromOrderTemplateListText","orderTemplateState","enableImageProductLink","onDismiss","orderTemplateImage","_renderOrderTemplateImages","orderTemplateLines","orderTemplateAriaLabel","_renderAriaLabel","orderTemplateName","_getOrderTemplatePageUrl","_getUrlSync","separator","totalLines","addToCartButton","AddOrderTemplateToCartComponent","addToCartText","addToBagText","dialogStrings","isMultipleCatalogFeatureEnabledInHq","removeButton","orderTemplateStatusMessage","userMessage","Alert","statusCssString","onClickHandler","defaultImageSettings","xl","slice","_line$productListLine","_line$fullProduct$Pro","_line$fullProduct","_line$fullProduct2","_line$fullProduct$Pro2","_line$fullProduct3","_getFallbackImageUrl","_line$fullProduct4","_context$request$app","fullProduct","_updateProductUrlCatalog","ProductDetails","productListLine","productDetails","OrderTemplateListStatusMessage","errorType","text","modalCloseButtonReference","onCancelHandler","isCreateOrderTemplateDialogOpen","setOrderTemplateNameDialogOpen","onCreateButtonClick","createOrderTemplateText","OrderTemplateNameDialog","modalOpen","isUpdateDialog","setModalOpen","createOrderTemplateDialogResources","onCancel","onSuccess","onOrderTemplateCreated","OrderTemplateList","_isChannelMultipleCatalogsFeatureEnabled","_onDismiss","_reloadPage","reload","_onRemoveFromOrderTemplateList","productListId","orderTemplates","token","productList","deleteAsync","headerStatusMessage","deleteOrderTemplateFailedText","messageGlyph","_heading$text","_heading$tag3","heading","emptyOrderTemplateText","createNewTemplateButtonText","orderTemplatesData","orderTemplateListHeading","orderTemplateListTitle","_heading$tag","errorProps","statusMessage","Spinner","msg","progressNotificationText","Heading","_heading$tag2","emptyViewProps","createOrderTemplateButton","CreateNewTemplateButtonComponent","_generateOrderTemplateNameDialogResources","templateHeaderStatusMessage","OrderTemplates","OrderTemplate","_renderOrderTemplateList","orderTemplateHeaderLabel","createOrderTemplateHeader","orderTemplateTitleLabel","orderTemplateTitle","orderTemplateNameAriaLabel","orderTemplateDescription","createOrderTemplateDescription","defaultOrderTemplateName","orderTemplateButtonLabel","createOrderTemplateButtonText","orderTemplateCancelButtonLabel","cancelNewOrderTemplateCreationButtonText","currentTemplateProps","addToBagButtonText","closeWindowButtonText","addToCartFailureMessage","addToCartSuccessMessage","addToCartProcessMessage","orderTemplateErrorMessage","linesAddedToCartDialogResources","viewCartButtonText","orderTemplateCloseButtonText","linesAddedToCartHeaderItemsOneText","linesAddedToCartHeaderLinesOneText","linesAddedToCartHeaderLinesFormatText","linesAddedToCartHeaderMessageText","OrderTemplateListView","_renderOrderTemplate","CONTENT","AddLineToTemplate","query","productCatalogs","Search","selectedProduct","selectedCatalogId","searchTextInput","addLineButtonRef","_renderSearchForm","searchButtonAriaLabel","searchModalPlaceholderText","selectCatalogTitleText","autoComplete","_onSearchSubmit","htmlFor","_onCatalogSelectionChange","_getCatalogNodes","type","autoFocus","_onInputChange","maxLength","_get","Loading","_getSearchResults","NotFound","ProductList","_onQuantityChangeHandler","selectedQuantity","_onSelectItem","channelId","varianteInput","SelectedVariantInput","productVariant","getSelectedVariant","dimensions","_getProductDimensions","selectedProductDimensions","ProductConfiguration","_onBackButtonClickHandler","_highlightSearchTerm","parsedName","unescape","RegExp","dangerouslySetInnerHTML","__html","_resultCountText","searchResultsCountVerbage","searchResultsCountSubject","_addItemToTemplateHandler","orderTemplateId","AddItemToOrderTemplateInput","addItemToOrderTemplate","reloadPage","parseInt","_toggleModalHandler","_getCatalogs","current","focus","onComponentDidMount","_this$searchTextInput","onComponentDidUpdate","_this$searchTextInput2","addLineModalLinkText","backToResultsText","modalProps","showBackArrow","_renderContent","addToTemplateHandler","onQuantityChangeHandler","highlightSearchTerm","searchForm","productProps","clickHandler","renderResultCountText","notFoundSearchErrorNotice","notFoundSearchErrorRedediation","NotFoundComponent","searchErrorMessage","getCatalogId","productCatalog","isSelected","selected","searchText","searchCriteriaInput","Context","ChannelId","IncludeAttributes","SearchCondition","searchByCriteriaAsync","getDimensionsForSelectedVariant","GetDimensionsForSelectedVariantInput","Dropdown","selectMenu","_onChanged","selectedIndex","dropdownId","selectId","selectedValue","innerText","dropdownList","dropdownName","OrderTemplateQuantity","inputRef","_validateMin","minValue","min","isNaN","currentInput","_handleChange","glyphMinusClassName","decrementGlyphClass","glyphPlusClassName","incrementGlyphClass","incDisabled","currentValue","extraClass","getChangeHandler","amount","_onIncrementalChange","tabIndex","pattern","onBlur","updatedQuantity","inputElement","HTMLInputElement","_debounce","defaultProps","_getDimensionsError","dimensionName","dimensionMissingError","_addToTemplateHandler","isBusy","showAddConfirmation","errors","missingDimensions","dimension","ProductListId","addToTemplateDuplicateError","addToTemplateGenericError","_onQuantityChange","_updateDimensionValue","productDimensionFull","newValueId","DimensionValues","_onDimensionChanged","_this$state$errors","remainingDimensionsErrors","selection","buttonDisabled","mappedDimensions","variantProduct","dimensionInput","variantDimensions","availabilityInput","ProductAvailabilitiesForSelectedVariantInput","newAvailableQuantity","getProductAvailabilitiesForSelectedVariant","priceInput","PriceForSelectedVariantInput","productPrice","getPriceForSelectedVariant","productAvailableQuantity","unitPrice","a","b","_getDropdownName","_product$PrimaryImage","_product$Name2","addItemToTemplateText","addLineProductUnitPricePrefix","quantitySelectLabel","addLineProductUnitOfMeasurePrefix","totalPriceLabel","isMultipleCatalogSelect","_formatPrice","_getDimensionsNodes","ModalFooter","_getConfirmationMessage","selectedDimensionNames","_dimension$DimensionV","addToTemplateConfirmation","values","join","_this$state$errors2","unshift","assertive","selectProductButtonText","_generateImageUrl","primaryImageSource","fallBackImg","ProductSelectButton","buttonText","setBusy","getClickHandler","OrderTemplateBulkActions","isAddDisabled","isRemoveDisabled","addHandler","onAddSelectionToBag","removeHandler","onRemoveSelection","selectedLines","searchInputAriaLabel","backButtonText","addSelectedToBagButtonText","removeSelectedToBagButtonText","addLineProps","isMinifiedView","removeOrderActionHandler","_removeOrderTemplate","onRemoveTemplate","_getOrderTemplateAddToCartDialog","addTemplateToBagButtonText","_getOrderTemplateRenameControl","renameOrderTemplateDialogStrings","RenameOrderTemplateComponent","onRenameTemplate","renameOrderTemplateButtonText","renameTemplateButtonText","buttonEventReference","ActionsSplitButton","isStatementRequestAdminDropdownOpen","setIsStatementRequestAdminDropdownOpen","renameOrderTemplateDialogOpen","onToggleDropdown1","popoverReference","renderModalPopup","existingOrderTemplate","onOrderTemplateNameCancel","_buttonEventReference","requestStatementDropdownString","Random","Guid","generateGuid","OrderTemplateLineActions","orderTemplateLine","onAddToBag","onRemoveItem","getAddToBag","getRemoveItem","PopUp","removeFromOrderTemplateLinesText","moreButtonText","viewProductDetailsText","showMobile","setShowMobile","toggleDetailsDisplayed","getActionButton","removeButtonClassName","addButtonClassName","getDesktopActionButton","onSelectLineHandler","isChecked","onSelect","checked","ExtraActionsPopup","showActions","setShowActions","actionsContainerClassName","OrderTemplateMobileLineView","_context$request$app2","UnitOfMeasure","fallbackImage","productLineCatalog","renderProductCatalog","productImage","_renderProductImage","productInfo","renderProductInfo","_renderPrice","productNumber","productUnitOfMeasure","productQuantityView","_generateQuantity","onChangeHandler","onChangeQuantity","isQuantityDisabledForUpdate","_context$actionContex","_context$request","_renderProductError","OOS","outOfStockProductErrorMessage","UNASSORTED","unavailableProductErrorMessage","NONE","_orderTemplateLine$fu","_renderProductDimensions","dimensionsLine","OrderTemplateLinesStatusMessage","OrderTemplateTableHeading","componentClassName","getOnChange","checkedLines","scope","selectAllRowsText","productLineCatalogName","productUnitPrice","productUOM","productQuantity","productActions","OrderTemplateLines","_onRemoveSelection","removeSelectedFailureMessage","removeSelectedSuccessMessage","productSelection","productListLines","maxWaitTimeInMilliSeconds","removeProductListLinesAsync","_this$props$data$orde","substr","_onAddSelectionToBag","productLine","_productLine$fullProd","_productLine$fullProd2","_productLine$fullProd3","_productLine$fullProd4","_productLine$productL","ProductTypeValue","_addItemToBag","_getCurrentUrl","reqContext","onCloseHandler","isItemAddedToOrderTemplateOpen","_renderItemAddedToCartDialog","_this$props$data$feat2","itemAddedToCartDialogData","ItemAddedToCartDialog","_generateItemAddedToCartDialogResources","onClose","_renderPagination","itemsPerPage","skipCount","_getCurrentPageNumber","totalItems","previousText","nextText","UncontrolledPagination","paginationAriaLabel","qsp","startingItem","_renderPrev","_renderNext","previousAriaLabel","nextAriaLabel","_toggleDetailsDisplayed","isDetailsDisplayed","detailedProductView","absoluteUrl","_changeQuantity","orderTemplateLinesData","orderLineIndex","findIndex","newProductListLine","prevQuantity","_objectWithoutProperties","_excluded","updateProductListLinesAsync","list","newLine","updatedLines","updatedOrderTemplate","ProductListLines","update","ActiveOrderTemplateLinesInput","editOrderTemplateLineQuantityError","maxQuantityLimitText","addedToCartFailureMessage","addProductToCartInput","addProductToCart","priceResult","reject","isMiniCart","_cart$result2","cartLineQuantity","defaultMessage","_result$errorDetails","errorDetails","LocalizedMessage","_removeItemFromOrderTemplateLines","userToken","featureStates","getFeatureState","createGetFeatureStateInput","_featureStates$find","_renameTemplate","_removeTemplate","_orderTemplate$result","newLink","_getViewport","innerWidth","md","paginationPreviousText","paginationNextText","_viewport","_updateViewport","isConfirmAddSelectionToBagModalOpen","params","isEditor","emptyOrderTemplateLinesText","errorGettingOrderTemplateLines","ObjectExtensions","isNullOrUndefined","orderTemplateResult","_isFirstPage","orderActions","_renderOrderTemplateActions","bulkOrderLineActions","_getOrderTemplateLineActions","productsStatusMessage","ProductsTable","ProductsTableRow","ProductsTableHeading","_renderProductListHeader","orderLines","_renderProductList","callbacks","updateQuantity","debounce","pagination","itemAddedToCartDialog","updated","_product$fullProduct","onSelectAll","productNumberText","productText","productUnitPriceText","productUOMText","productQuantityText","productActionsText","headers","_generateLinesAddedToCartDialogResources","itemAddedToCartHeaderItemOneText","itemAddedToCartHeaderItemFormatText","itemAddedToCartHeaderMessageText","deleteTemplateButtonText","addTemplateToBag","renameTemplate","removeTemplate","actionsSplitButton","OrderTemplateActionsView","renameOrderTemplateTitleText","cancelBtnLabel","skip","selectOneRowText","priceFree","addOrderTemplateItemToBagButtonText","removeItemFromOrderTemplateButtonText","deleteButtonText","selectLine","addToBagButton","extraActionsPopup","popUp","shouldDisable","OrderTemplateLineView","ProductPrice","action","_renderItem","quantityLabel","disableElement","pointerEvents","toggleDetails","fade","applicationNode","ProductComparisonPreview","_renderGreyPlaceHolders","counts","greyPlaceHoldersCount","displayGreyPlaceHolders","elements","_removeProductFromList","ProductComparisonState","removeItemById","previousState","_previousState$produc","productsData","_handleCollapseClick","_previousState$isExpa","_hasUserInteractedWithComparison","_clearAllProductsFromTheComparison","_this$props$data$acco2","clearAll","_instanceId","_displayedInstanceId","_this$props$data$acco3","_loadProducts","listModifiedEvent","subscribe","instanceId","handler","_this$props$data$acco4","unsubscribe","_this$state$productsD","_this$props$data$prod","collapseButton","_renderCollapseButton","isMainContentReady","hasUserInteractedWithComparison","_getProdutComparisonDataByCatalogId","productsLimit","_getProductsLimit","subheaderText","productComparisonPreviewHeaderTextWithLimit","handleCollapseClick","productsMainInfo","_getProductsMainInfo","previewGreyPlaceHolders","productComparisonLink","clearAllProductsFromTheComparison","removeProductFromList","goToComparisonButton","_renderGoToComparisonButton","clearAllButton","_renderClearAllButton","_productData$filter","_this$props$data$acco5","GetProductsInPreviewProductComparisonInput","getProductsInPreviewProductComparisonAction","productDataByCatalogId","_getGreyPlaceHoldersCount","limit","placeHolder","productImageContainerClassName","tableRowClassName","productImageClassName","productNameClassName","productNameLink","_product$Dimensions","dimensionValue","convertProductDimensionTypeToDimensionTypes","removeFromComparisonButton","RemoveFromComparisonButtonComponent","productLink","VariantType","Browser","productComparisonMobileProductsLimit","productComparisonDesktopProductsLimit","defaultImageSettingQ","_this$state$isExpande","shouldBeExpanded","headerContainerClassName","mainContainerClassName","collapseClassName","collapseButtonClassName","footerClassName","productComparisonCompareProductsButtonText","productComparisonClearAllProductsButtonText","containerClassName","headerLabelClassName","tableClassName","ProductComparisonPreviewViewFunctionalComponent","_props$isExpanded","_props$productsMainIn","_props$productsMainIn2","productComparisonPreviewHeaderText","info","SpecificationDataTypeValues","ProductSpecification","CurrencyValue","CurrencyCode","_product$DateTimeOffs","isFunction","DateTimeOffsetValue","toUTCString","IntegerValue","FloatValue","TextValue","getRichTextHtml","_specification$DataTy","specification","DataTypeValue","currency","_renderCurrencyCell","dateTime","_renderDateTimeCell","decimal","_renderDecimalCell","integer","_renderIntegerCell","_renderTextCell","boolean","_renderTrueFalseCell","video","BooleanValue","productComparisonProductItemSpecificationTrue","productComparisonProductItemSpecificationFalse","RemoveFromComparisonButtonFunctionalComponent","useCallback","productComparisonRemoveProductFromListAriaLabel","SelectionType","ProductClickerDirections","ProductComparison","_clearAllProductsFromComparison","_configureBoxShadowOnScroll","_this$_tableReference","_tableReference","comparisonProductCardHeader","getElementsByClassName","tableHeaderClassName","Array","from","documentElement","scrollTop","tableHeaderLockedClassName","_handleScroll","_this$_tableHeaderRef","_tableHeaderReference","scrollTo","top","left","scrollLeft","_checkClickersState","_handleScrollClick","direction","_this$_tableBodyRefer","_this$_tableCellRefer","_document$body$parent","tableBody","_tableBodyReference","newLeftPosition","cellWidth","_tableCellReference","clientWidth","_getCellWidth","scrollPosition","Math","ceil","minLeftPosition","maxScroll","scrollWidth","body","currentClickerPosition","change","hoverStateLastUpdate","Date","now","hoveringCellItemId","_handlePreviousClick","_document$body$parent2","right","_handleNextClick","_document$body$parent3","_this$_tableBodyRefer2","floor","_this$_tableBodyRefer3","_document$body$parent4","_shouldShowNextClicker","forceUpdate","_shouldShowPreviousClicker","newClickerPosition","_handleHoverIn","_hoveringCellItemId","_handleHoverOut","_goBack","backToShoppingUrl","referrer","history","back","specifications","_product$specificatio","specificationsList","allSpecifications","flatten","specificationNames","AttributeValueId","uniqueSpecificationNames","allDimensions","dimensionIds","actionBarClassName","clearAllProductsFromComparison","isEmptyContent","_renderHeading","loading","_renderLoading","actionBarContainerProps","_getActionBarContainerProps","previousClicker","_renderPreviousClicker","nextClicker","_renderNextClicker","backToShopping","_renderBackToShoppingButton","emptyComparison","emptyComparisonContentSlots","_getProductComparisonDataByCatalogId","isConsentGiven","productCountText","productComparisonCountText","productsMainInfoData","allUniqueDimensionIds","getProductsDimensionsIds","updatedDimensionProps","getUpdatedDimensionsProps","tableReference","tableHeaderReference","tableBodyReference","tableCellReference","shouldShowPreviousClicker","shouldShowNextClicker","handlePreviousClick","handleNextClick","handleScroll","handleHoverIn","handleHoverOut","uniqueDimensionIds","_getProductsDimensions","dimensionsProps","uniqueSpecifications","_getProductsSpecifications","specificationsProps","_getSpecificationProps","GetProductsInProductComparisonInput","getProductsInProductComparisonAction","_renderQuickView","_product$productInfo$","quickViewSlot","quickViews","defaultImageSettingsQ","_getTableHeaderProps","isHoverModeEnabled","tableHeaderCellClassName","onMouseLeave","_getTableCellProps","cellClassName","tableCellClassName","_renderProductRating","_ratingValue$reviewsC","averageRating","ratingValue","productComparisonProductItemRatingAriaLabel","reviewsCount","shouldShowFullRatingDescription","backToShoppingLabel","_getDimensionName","dimensionId","ProductDimensionType","Color","productComparisonProductItemColorDimension","Size","productComparisonProductItemSizeDimension","Style","productComparisonProductItemStyleDimension","dimensionClassName","dimensionsRowClassName","dimensionDescription","dimensionSelectionType","dimensionsAsSwatchConfiguration","dimensionsAsSwatchType","productDimensionValues","productMainInfo","_this$props$data$prod2","renderSwatch","textValue","productsDimension","_productsDimension$di","_productsDimension$di2","dimensionItems","dimensionItem","_dimensionItem$map","currentDimensionId","_productMainInfo$prod","_swatchItem$Dimension2","_swatchItem$Dimension3","_swatchItem$Dimension4","_swatchItem$Dimension5","_swatchItem$Dimension6","_swatchItem$Dimension7","_swatchItem$Dimension8","_swatchItem$Dimension9","isDefaultDimension","selectedDimension","_swatchItem$Dimension","DimensionId","ColorHexCode","ImageUrl","SwatchComponent","isSelectionEnabled","_dimensionItem$Dimens","_dimensionItem$Dimens2","productDimensionSeperatorValue","productDimensionSeparator","dimensionProps","specificationClassName","specificationsRowClassName","specificationValues","_productMainInfo$prod2","productSpecification","productSpecifications","productComparisonTitle","productComparisonLoadingText","productComparisonClearAllButtonAriaLabel","productComparisonClearAllButtonText","tableClickerClassName","onKeyUp","productComparisonPreviousProduct","productComparisonNextProduct","_renderRemoveFromComparisonButton","productRowClassName","currentCatalogId","productUrlLink","_product$productInfo$2","_dimension$DimensionV2","isFromCurrentCatalog","productPriceClassName","cellNewWidth","width","minWidth","maxWidth","cellContainerProps","productComparisonProductItemFreePrice","productComparisonProductItemOriginalPrice","productComparisonProductItemCurrentPrice","quickView","goToProductDetailsButton","productComparisonGoToProductDetailsButtonText","tableCellProps","tableHeaderProps","productRating","productDescription","_renderProductDescription","tableBodyClassName","tableRowContentClassName","tableRowContentInformationClassName","renderDynamicHeaderCells","headerName","tabindex","renderDynamicCells","ProductComparisonViewFunctionalComponent","_props$productsMainIn5","_props$dimensionsProp","_props$specifications","_props$productsMainIn8","_props$productsMainIn9","actionsClassName","onScroll","_props$productsMainIn3","_props$productsMainIn4","productComparisonProductItemRating","_props$productsMainIn6","_props$productsMainIn7","productComparisonProductItemDescription","specificationProps","isNullOrEmpty","productComparisonProductItemSku","PromoBannerCloseButton","closeButtonAriaLabel","label","PromoBannerClose","PromoBannerLinks","links","editableLinks","_mapEditableLinks","linkdata","PromoBannerText","onEdit","PromoBanner","isVisible","handleTextChange","bannerMessages","_isLastItem","_isFirstItem","closeButtonLabel","bannerText","bannerAriaLabel","handleLinks","handleText","promoBannerProps","promoBannerTextProps","promoBannerLinksProps","contentProps","promoBannerText","carouselProps","hideIndicator","closeButton","slides","AddToCartProductListComponent","_quickOrderTemplate$q","_quickOrderTemplate$q2","quickOrderTemplate","quickOrderTemplateLines","buttonLabel","quickOrderGridBuySelectedButtonText","buttonAriaLabel","quickOrderGridBuySelectedButtonAriaLabel","_props$resources$quic","_props$resources$quic2","_props$resources$quic3","_props$resources$quic4","_props$resources$quic5","_props$resources$quic6","_props$resources$quic7","_props$resources$free","_props$resources$orig","_props$resources$curr","_props$resources$adde","_props$resources$quic8","_props$resources$quic9","goToCartText","quickOrderGridGoToCartText","continueShoppingText","quickOrderGridDialogCloseText","quickOrderGridBuySelectedAddingToCartErrorNotificationCloseAriaLabel","headerItemOneText","quickOrderGridSingleItemText","headerItemFormatText","quickOrderGridMultiLineItemFormatText","headerLinesFormatText","quickOrderGridMultiLinesFormatText","headerMessageText","quickOrderGridHeaderMessageText","addedQuantityText","buyAgainNotificationTitle","quickOrderGridBuySelectedAddingToCartErrorNotificationTitle","buyAgainNotificationCloseAriaLabel","getDialogStrings","orderDetailProducts","quickOrder","orderDetails","quickLine","_quickLine$fullProduc","salesLine","OrderDetailsProduct","getOrderDetails","AddToCartComponent","addToCartArialLabel","navigationUrl","shouldSkipSiteSettings","orderDetailsProducts","onError","getQuickOrderGridAddToCartDialog","moduleClassName","_result$cartActionRes","cartActionResult","onErrorMessage","removeActionHandler","removeProductList","removeQuickOrderList","QuickOrderGridDrawer","_props$collapseProps$","_props$collapseProps","_isManuallyToggled","onToggle","collapseProps","_drawerGlyphClass","toggleGlyphClassName","isAnimateGlyph","_drawerOpenGlyph","_drawerCloseGlyph","children","drawerClass","drawerButtonClassName","toggleButtonProps","block","_generateDrawerButtonInnerMarkup","isCollapseState","drawerButtonTextClass","toggleButtonClassName","headingDrawerClass","descriptionDrawerClass","moduleHeadingText","moduleDescriptionText","_generateGlyphMarkup","glyphClass","QuickOrderGridFormComponent","productTextInput","quantityTextInput","quickOrderGridState","maxChars","minQuantity","isAddtoListDisabled","ariaLabelQuantity","ariaLabelProduct","ariaLabelAddtoCart","handleQuantityChange","handleInputChange","handleAddProductListClick","onInputChange","onInputChangeFunction","onQuantityInputChange","onQuantityChangeFunction","productNode","quantityNode","addToListBtn","stateMessage","messageText","QuickOrderGridProduct","QuickOrderGridDesktopHeaderCellsComponent","columnWithNumberClassName","quickOrderGridProductNumberText","quickOrderGridProductText","quickOrderGridUnitPriceText","quickOrderGridUnitOfMeasureText","quickOrderGridQuantityText","quickOrderGridActionsText","QuickOrderGridMobileHeaderCellsComponent","QuickOrderGridTableHeaderComponent","rowClassName","headerCells","QuickOrderGridTableRowProductImageComponent","_props$data$product$p","_props$imageSettings","setShowPreviousActions","onRemoveHandler","quickOrderGridProductKey","QuickOrderGridExtraActionsPopupComponent","_props$data$product$p2","quickOrderGridViewDetailsButtonAriaLabel","quickOrderGridViewDetailsButtonText","shouldShowActions","onClickViewDetails","shouldShowActionsNewValue","quickOrderGridRemoveItemButtonAriaLabel","QuickOrderGridDesktopTableRowCellComponent","_props$data$product$p3","_productListLine$Line","quickOrderGridProductDimensionsSeparator","renderProductPrice","quickOrderGridInputQuantityAriaLabel","quickOrderGridDecrementButtonAriaLabel","quickOrderGridIncrementButtonAriaLabel","QuickOrderGridMobileTableRowCellComponent","_props$data$product$p4","_productListLine$Line2","QuickOrderGridTableRowComponent","Viewport","QuickOrderGridTableComponent","setIsMobile","isMobileView","quickOrderGridProducts","isOrderQuantityLimitsFeatureEnabled","updateViewport","quickOrderProduct","_product$ProductDetai","_quickOrderProduct$pr","_quickOrderProduct$pr2","behavior","MinimumQuantity","callBacks","QuickOrderGrid","_this$props$data$feat3","_this$props$data$feat4","_this$props$data$feat5","_cartConfiguration$re","_cartConfiguration$re2","_waitTime","_dimensionUpdateQueueMaxLength","_errorCssClass","_errorCssGlyphClass","_dimensionUpdateQueue","FinitePromiseQueue","_dimensions","_initializedDimensions","Set","_cssClassNameConfigure","_className","_isOrderQuantityLimitsFeatureEnabled","_isChannelLimitsFeatureEnabled","_applyDefaultOrderSettingsForCartLine","_quickOrderGridCallbacks","initializeDimension","initializedDimension","dimensionSelectedAsync","selectedDimensionId","selectedDimensionValueId","_this$state$productDi","enqueue","_updateDimensions","FinitePromiseQueueError","ProcessWasDiscardedFromTheQueue","getDropdownName","changeUpdatingDimension","isUpdatingDimension","_quickOrderGridRowCallbacks","_removeItemRowFromTable","productListLineId","_changeRowQuantity","_removeProductList","ProductListsDataActions","_updateStatusState","quickOrderGridDeleteProductListFailedText","_handleInputChange","productResponse","_cancellabelDebounce","cancel","isQuickOrderGridFormExpanded","getScanResult","GetScanResultInput","results","ProductDimensionFull","_updateQuantitiesInState","_handleQuantityChange","_this$state$productRe","_quantityInput","minimumQuantity","needToUpdateUIValue","_behavior$MinimumQuan","newCurrentValue","_this$state$productRe2","Configuration","productDimensionTypeAmount","hasProductDimensions","dimensionsToUpdate","productDimensionErrorState","otherError","clearOtherErrorState","dimensionKey","configureErrors","errorState","_this$_updateDimensio","newProduct","_getDimensionErrorString","amountErrorMessage","quickOrderGridproductDimensionTypeAmountErrorMessage","quickOrderGridproductDimensionTypeColorErrorMessage","quickOrderGridproductDimensionTypeConfigurationErrorMessage","quickOrderGridproductDimensionTypeSizeErrorMessage","quickOrderGridproductDimensionTypeStyleErrorMessage","_productResponse$Dime","_getConfigureErrors","quickOrderGridWrongQuantityErrorMsg","quickOrderTemplateLinesData","previousQuantity","updatedProductList","ActiveProductListInput","_addItemToProductListLine","quickOrderGridAddedToGridSuccessMessage","quickOrderGridAddedToGridFailureMessage","quickOrderGridAddedToGridDuplicateError","_productResponse$Defa","_createProductList","AddItemToProductListInput","addItemToProductListAction","CreateProductListInput","ProductListType","QuickOrder","createProductList","_productTextInput","_telemetryContent","_quickOrderGridFormClass","_quickOrderGridFormProductContent","_quickOrderGridFormMsgContent","ValidateDefaultOrderSettingsPerLine","_this$state$min","_this$state$max","quickOrderGridModuleHeading","quickOrderGridModuleDescription","quickOrderGridAddtogrid","quickOrderGridProductQuantityInputLabel","quickOrderGridProductInputLabel","quickOrderGridProductDimensionTypeColor","quickOrderGridProductDimensionTypeConfiguration","quickOrderGridSelectDimensionFormatString","quickOrderGridProductDimensionTypeSize","quickOrderGridProductDimensionTypeStyle","quickOrderGridProductDimensionTypeAmount","quickOrderGridModulePageHeading","productConfigureResources","selectDimensionFormatString","header","quickOrderGridProps","isB2bCustomer","actions","drawer","bulkPurchase","_renderBulkPurchase","quickOrderGridForm","quickOrderGridFormProductContent","quickOrderGridFormMsgContent","form","configure","getProductConfigure","container","_renderListContainer","_renderQuickOrderGridActions","quickOrderGridDeleteButtonText","userMessageNode","topStateMessage","addProductListToBag","QuickOrderGridActionsView","isBulkPurchaseEnabled","bulkPurchaseSlots","containerClass","_renderQuickOrderTable","_initQuickOrderGridProducts","quickOrderGridProduct","_getMinQuantityForCartLineItem","_getMaxQuantityForCartLineItem","_getQuantity","_product$Behavior2","applyDefaultOrderSettingsForCartLine","_product$Behavior3","defaultQuantity","DefaultQuantity","renderConfigureDropdown","dropdown","containerProps","labelContainerProps","select","renderConfigure","dropdowns","renderForm","quickOrderForm","quickOrderProductContent","quickOrderMessageContent","getAdditionalContentItems","_item$links","renderHeading","additionalContentHeading","handleAdditionalTextChange","subtext","renderParagraph","additionalContentParagraphText","handleAdditionalParagraphChange","ctaLink","renderLinks","handleAdditionalLinkTextChange","additionalContentItemContainer","additionalContentItemLinks","videoPlayerAdditionalContent","additionalContent","additionalContentNode","additionalContentItems","VideoPlayer","handleParagraphChange","paragraph","isMobileDevice","options","playerResources","playAriaLabel","playLabel","pauseAriaLabel","pauseLabel","playingAriaLabel","playingLabel","pausedAriaLabel","pausedLabel","muteAriaLabel","muteLabel","unMuteAriaLabel","unMuteLabel","fullScreenAriaLabel","fullScreenLabel","exitFullScreenAriaLabel","exitFullScreenLabel","seekBarLabel","videoTimeDurationLabel","closedCaptionLabel","videoMetaData","_video$_links","videoId","duration","playTime","thumbnail","posterframeUrl","_links","binaryReferences","videoBinaryReferences","videoPlayerData","metaData","player","Player","playerData","_getVideoDetailsHeading","_getVideoDetailsParagraph","_getVideoDetailsLinks","detailsContainer","detailsContainerCTA","handleParagraph","handleAdditionalText","handleAdditionalParagraph","handleLink","handleAdditionalLink","_this$props$config$ad","linkData","linkId","detailsContainerCta","WishlistItemDimension","WishListItemActions","onAddToCart","formattedPrice","renderProductLink","productAttributes","renderInventoryInformationLabel","WishlistItemAddToCartButtonComponent","isInStock","addItemAction","WishlistItemRemoveFromWishlistButtonComponent","removeFromWishlistText","removeItemAction","WishlistItem","wishlistState","_props$product$Dimens","_getFullProductLink","entireProductLink","productAriaLabel","inventoryInformation","productStatusMessage","WishlistItemsStatusMessage","WishlistItems","handleHeadingChange","_addItemToCart","addedToCartSuccessMessage","invoiceInCartErrorMessage","productInventoryInformation","_getProductInventory","_this$props$context$a","_product$Behavior$Min","getDeliveryOptionsAsync","queryResultSettings","QueryResultSettingsProxy","getPagingFromInputDataOrDefaultValue","validateQuantity","isQuantityValidationRequired","respectQuantityLimits","isAddEmailDeliveryItemToCart","_await$cart$cart","curQuantity","maxQtyLimitReachedMessage","_getInventoryValueMessage","_result$errorDetails2","isChannelQuantityLimitsFeatureEnabledInHq","_this$props$data$cart2","validateLimitsPerLine","_this$props$data$cart3","_removeItemFromWishlist","noLongerLineExist","wishlistLineId","_getWishlistLineIdFromProductId","removeLinesAsync","commerceList","castCommerceList","_getProductsNoLongerExists","_removeNoLongerExistsLines","createGetByCustomerInput","getItemsInWishlists","ActiveWishlistInput","castSimpleProducts","isError","_inventoryLabel","StockLevelLabel","_inventoryClassName","StockLevelCode","toLowerCase","_isProductInStock","productResult","IsProductAvailable","foundWishlistItem","commerceListLine","_castCommerceList$Com","noLongerExist","emptyWishlistText","wishlistErrorGettingWishlist","noLongerExitsWishlistItemText","productsList","Products","ProductDimensions","statusNotExistsMessage","_getProductNotExists","emptytext","noLongerExisttext","addToCartButtonText","currentProductProps","maxQuantityForLineItem","minInventory","productInventoryCollection","getDefaultSwatchSelected","_productData$Attribut","_attributeSwatches$fi","attributeSwatches","renderProductUnitOfMeasure","productSearchResult","IsMasterProduct","ProductType","Master","Standalone","_context$app$config","contextConfig","placeholderImageName","fallbackImageSource","img","bypassHideOnFailure","_product$RecordId","productComparisonButton","isEnabledProductDescription","swatchItemAriaLabel","MIN_VALUE","swatchProductImageUrls","getProductImageUrlFromDefaultSwatch","encodeURIComponent","attributeValues","dimensionsToDisplayOnProductCard","dimensionsInProductCard","shouldDisplayDimension","renderProductComparisonButton","mockRequest","buildMockRequest","mockRequestURL","staticCdnUrl","signUpUrl","mockAnonRequest","mockSigninErrorRequest","mockActionContext","buildHydratedMockActionContext","HeaderView","_configureStickyHeader","headerAlertsContainer","bannerHeights","offsetHeight","headerElement","stickyHeader","headerLogo","navStickyPos","_renderAccountDropdownLinks","menuNode","useStickyHeader","_renderMobileLogo","_config$mobileLogoIma","mobileLogoImage","DescriptionInterval","renderProductCards","ProductsContainer","getInventoryLabel","channelInventoryConfigurationId","inventoryAttribute","renderProductCardsDescription","_props$data$products$","_props$data$featureSt","productsDimensionAvailabilities","breadCrumbType","breadcrumbType","isAllowBack","allowBackNavigation","classname","quickviewslot","isPriceMinMaxFeatureState","priceRangeSeparator","renderProducts","_props$data$listPageS","listPageState","activeProducts","productDescriptionInterval","productDescriptionIntervalRemainder0","productDescriptionIntervalRemainder9","renderTitleCount","TitleContainer","titleCount","renderCategoryHierarchy","CategoryHierarchyContainer","categoryHierarchyList","categoryHierarchySeparator","category","configureStickyFilter","isStickyHeader","headerContainer","headerHeight","defaultContainer","refinerElement","clientHeight","removeAttribute","createSearchResultModal","refineMenu","sortByDropDown","isRecoSearchPage","modal","modalHeader","createModalBody","modalFooter","modalBody","renderSort","refiners","RefineMenuContainer","RefinerSectionContainer","submenu","renderRefinerMobile","renderRefiner","renderRefinerFooter","doneAriaLabel","doneText","SortingContainer","renderTitle","titlePrefix","titleText","_props$context$action","SearchResultContainer","ProductSectionContainer","choiceSummary","modalToggle","searchResultModal","TitleViewProps","categoryHierarchy","sortByOptions","CategoryNavContainer","RefineAndProductSectionContainer","FeatureSearchContainer","similarLookProduct","useEffect","useStickyFilter","stickyFilterSetup","enableStickyHeader","setIsExpanded","wrapperRefiner","refinerRefernce","handleClickOutside","element","useOutsideClick","recommendation","enableProdutDescription","filterText","hashClear","hashDelete","hashGet","hashHas","hashSet","Hash","entries","clear","entry","prototype","has","module","exports","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","Map","getNative","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","MapCache","Symbol","array","iteratee","eq","castPath","toKey","object","path","getRawTag","objectToString","symToStringTag","toStringTag","isMasked","isObject","toSource","reIsHostCtor","funcProto","Function","objectProto","funcToString","hasOwnProperty","reIsNative","call","test","arrayMap","isArray","isSymbol","symbolProto","symbolToString","baseToString","trimmedEndIndex","reTrimStart","string","isKey","stringToPath","coreJsData","freeGlobal","g","isKeyable","__data__","baseIsNative","getValue","nativeObjectToString","isOwn","unmasked","nativeCreate","reIsDeepProp","reIsPlainProp","uid","maskSrcKey","exec","IE_PROTO","func","assocIndexOf","splice","pop","getMapData","memoize","cache","freeSelf","root","memoizeCapped","rePropName","reEscapeChar","charCodeAt","number","quote","subString","reWhitespace","charAt","toNumber","nativeMax","nativeMin","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","apply","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","flush","other","baseGet","defaultValue","baseGetTag","isObjectLike","resolver","memoized","Cache","baseTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","valueOf","isBinary"],"sourceRoot":""}