{"version":3,"file":"shoppingbag.bundle.js","mappings":"6BAAIA,ECCAC,EADAC,ECAAC,EACAC,ECwCAC,EASAC,E,mKC7CG,SAASC,GAAS,OAAEC,IACvB,MAAM,KAAEC,EAAI,EAAEC,IAAM,EAAAC,EAAA,GAAe,eAGnC,OAFAF,EAAKG,kBAAkB,KAAM,cAAe,EAAAC,IAAI,GAAM,GACtDJ,EAAKG,kBAAkB,KAAM,cAAe,EAAAE,IAAI,GAAM,IAElD,iCACI,6BAAIC,UAAU,cAAY,kCAC1B,4BAAGA,UAAU,aAAW,UAAEL,EAAE,4DAC1BF,IACE,6BAAGO,UAAU,aAAW,WACnBL,EAAE,uCAAwC,KAC3C,4BAAGM,KAAK,gBAAgBD,UAAU,qBAAmB,UAChDL,EAAE,cACF,IACJA,EAAE,4CAIX,4BAAGK,UAAU,aAAW,UACnBL,EAAE,4FAInB,C,8FCzBO,MAAMO,EAAsBC,IAC/BC,OAAOC,cAAcF,KAAOA,CAAI,ECsBvBG,EAAWb,I,MACpB,MAAMc,EAAiB,IAAI,IAC3B,OAAO,EAAAC,EAAA,GAAS,CACZC,SAAU,CAAC,MAAOF,EAAOG,SAAgC,QAAtB,EAAAH,EAAOI,uBAAe,eAAEC,IAAKL,EAAOM,UACvEC,QAC8BC,MAA1BR,EAAOI,iBACPJ,EAAOI,gBAAgBK,MAAMC,OAAS,GACtCV,EAAOI,gBAAgBC,IAAM,EAOrC,W,qDAEI,MACMM,EAAOX,EAAOM,SAASM,UAAU,EAAG,IAAM,KAC1CC,EAA2C,QAAtB,EAAAb,EAAOI,uBAAe,eAAEC,IACnD,KAEkCG,MAA1BR,EAAOI,iBACPJ,EAAOI,gBAAgBK,MAAMC,OAAS,GACtCV,EAAOI,gBAAgBC,IAAM,GAGjC,MAAM,IAAIS,MAAM,qBAEpB,IACI,MAAMC,QAAiB,IAAKC,IAAI,WAAUL,cAAiBE,UAG3D,OADAlB,EAAmBoB,EAASE,MACrBF,EAASE,I,CAClB,MAAOC,GAKL,OAHAC,QAAQC,IAAI,0CAGL,IAAIC,SAAQ,SAAUC,EAASC,GAClCD,EAAQ,CAAC,EACb,G,MAIR,W,+CAEI,MACMX,EAAOX,EAAOM,SAASM,UAAU,EAAG,IAAM,KAChD,IAAIZ,EAAOG,SAgBP,OAFAH,EAAOwB,iBAAmB,IAC1BL,QAAQC,IAAI,iCACL,IAAIC,SAAQ,SAAUC,EAASC,GAClCD,EAAQ,CAAC,EACb,IAjBA,IACI,MAAMP,QAAiB,IAAKC,IAAI,WAAUL,WAAcX,EAAOG,YAG/D,OADAR,EAAmBoB,EAASE,MACrBF,EAASE,I,CAClB,MAAOC,GAGL,OAFAC,QAAQC,IAAIF,GACZC,QAAQC,IAAI,+BACL,IAAIC,SAAQ,SAAUC,EAASC,GAClCD,EAAQ,CAAC,EACb,G,CASZ,G,EA1DIG,kBAAkB,EAClBC,MAAO,G,EAgGFC,EAAiBV,IAC1B,MAAMW,GAAc,UAEd5B,EAAiB,IAAI,IACrB6B,EAAU,IAAI,IACdlB,EAAOX,EAAOM,SAASM,UAAU,EAAG,IAAM,KAChD,OAAO,OAAP,WACO,EAAAkB,EAAA,GAAY,CACXC,WAAaC,GACF,IAAKC,OAAO,WAAUtB,WAAcM,EAAKd,sBAAsB6B,KAE1EE,UAAW,CAACnB,EAAUoB,EAAWC,K,YDvIT,EAACC,EAAiBC,EAAsBC,KACxE,MAAMC,EAAaF,EAAaG,UAAUC,MAAMC,GAAiBJ,GAAcI,EAAaX,KAAIY,OAAOC,SACjGC,EAAgBR,EAAaG,UAAUC,MAAMC,GAAiBJ,GAAcI,EAAaX,KAAIe,aAC9FC,OACCC,EAAiBX,EAAaY,SAASR,MAAMS,GAAYA,EAAQH,QAAUF,IACjFjD,OAAOC,cAAcF,KAAOyC,EAC5BxC,OAAOC,cAAcsD,cAAgB,CAAC,EACtCvD,OAAOC,cAAcsD,cAAcD,QAAUF,EAC7CpD,OAAOC,cAAcsD,cAAcC,UAAYb,EAC3CF,EAAaG,UAAUC,MAAMC,GAAiBJ,GAAcI,EAAaX,KAAIe,aAAaO,YAC1FzD,OAAOC,cAAcsD,cAAcG,OAAS,YAEhD1D,OAAOC,cAAc0D,MAAMC,WAAa,gBAAgB,EC6H5CC,CAAqB3C,EAASE,KAAMA,EAAMkB,GDzHnB,CAACvC,IACpC,GAAY,MAARA,GAAgBA,EAAK6C,UAAU/B,OAAS,EAAG,CAC3C,MAAMiD,EAAe,IAAIC,YAAY,YAAa,CAAEC,OAAQ,CAAEjE,KAAMA,KACpEkE,SAASC,cAAcJ,E,GCuHfK,CAAwBjD,EAASE,MACjCjB,EAAOG,SAAWY,EAASE,KAAKd,SAChCH,EAAOwB,iBAAmBT,EAASE,KAAKgD,aAAaC,cAAcC,WACnEtC,EAAQuC,2BAEU,QAAd,EAAArD,aAAQ,EAARA,EAAUE,YAAI,eAAEwB,YAAkD,IAAZ,QAAzB,EAAc,QAAd,EAAA1B,aAAQ,EAARA,EAAUE,YAAI,eAAEwB,iBAAS,eAAE/B,SAExDV,EAAOqE,kBAGXzC,EAAY0C,aACR,CAAC,MAAOvD,EAASE,KAAKd,SAAgC,QAAtB,EAAAH,EAAOI,uBAAe,eAAEC,IAAKL,EAAOM,UACpES,aAAQ,EAARA,EAAUE,KACb,EAELsD,QAAS,CAACrD,EAAOiB,EAAWC,KACxBjB,QAAQC,IAAI,GAAGgB,KAAWlB,IAAQ,IAExC,EA2DGsD,EAAgB,CAACC,EAAaC,KACvC,MAAM9C,GAAc,UAEd5B,EAAiB,IAAI,IACrB6B,EAAU,IAAI,IACdlB,EAAOX,EAAOM,SAASM,UAAU,EAAG,IAAM,KAShD,OAAO,EAAAkB,EAAA,GAAY,CACf6C,SAAiB1D,IAAS,0C,cAGhBW,EAAYgD,cAAc,CAAE1E,SAAU,CAAC,SAG7C,MAAM2E,EAAcjD,EAAYkD,aAAqB,CACjD,MACA9E,EAAOG,SACe,QAAtB,EAAAH,EAAOI,uBAAe,eAAEC,IACxBL,EAAOM,WAELyE,EAASC,KAAKC,MAAMD,KAAKE,UAAUL,IAWzC,OAVAE,EAAOtC,UAAUC,MAAMyC,GAAMA,EAAEnD,IAAMf,EAAKmE,SAAQxC,OAAOC,SAAW5B,EAAKoE,IAGrEN,GACAnD,EAAY0C,aAAa,CAAC,MAAOtE,EAAOG,SAAgC,QAAtB,EAAAH,EAAOI,uBAAe,eAAEC,IAAKL,EAAOM,UAAW,OAAF,UACxFyE,IAKJ,CAAEF,cACb,IACA3C,UAAW,CAAOnB,EAAUoB,EAAWC,KAAY,0C,MDvOpB,EAACC,EAAiBF,EAAWC,KAChE,MAAMG,EAAaJ,aAAS,EAATA,EAAWiD,OACxB9C,EAAuBF,aAAO,EAAPA,EAASyC,YAChCS,EAAehD,EAAaG,UAAUC,MAAM6C,GAAqBhD,IAAcgD,aAAgB,EAAhBA,EAAkBvD,MACjGiB,EAAiBX,EAAaY,SAASR,MACxCS,IAAW,MAAC,OAAyB,QAAzB,EAAAmC,EAAavC,oBAAY,eAAEC,UAAUG,aAAO,EAAPA,EAASH,OAAM,IAErEnD,OAAOC,cAAcF,KAAOyC,EAC5BxC,OAAOC,cAAcsD,cAAgB,CAAC,EACtCvD,OAAOC,cAAcsD,cAAcD,QAAUF,EAC7CpD,OAAOC,cAAcsD,cAAcC,SAAWlB,aAAS,EAATA,EAAWqD,UACzD3F,OAAOC,cAAc0D,MAAMC,WAAa,gBAAgB,EC6NhDgC,CAAwB1E,EAASE,KAAMkB,EAAWC,GAClDpC,EAAOG,SAAWY,EAASE,KAAKd,SAChCH,EAAOwB,iBAAmBT,EAASE,KAAKgD,aAAaC,cAAcC,WACnEtC,EAAQuC,0BACRxC,EAAY0C,aACR,CAAC,MAAOvD,EAASE,KAAKd,SAAgC,QAAtB,EAAAH,EAAOI,uBAAe,eAAEC,IAAKL,EAAOM,UACpES,EAASE,KAEjB,IACAsD,QAAS,CAACmB,EAAKvD,EAAWC,K,OAClBA,aAAO,EAAPA,EAASyC,cACTjD,EAAY0C,aACR,CAAC,MAAOtE,EAAOG,SAAgC,QAAtB,EAAAH,EAAOI,uBAAe,eAAEC,IAAKL,EAAOM,UAC7D8B,EAAQyC,Y,EAIpB9C,WApDe,EAAGqD,SAAQO,QAAON,MAAKG,eAC/B,IAAKI,IAAI,WAAUjF,WAAc+D,eAAsBU,IAAU,CACpEX,YAAaA,EACboB,cAAe,GACfC,QAASH,EACT9C,SAAUwC,KAgDhB,EClROU,EAAqB,EAAGC,W,cACjC,MAAMC,EAA8BC,OAAwB,QAAjB,EAAM,OAANrG,aAAM,IAANA,YAAM,EAANA,OAAQsG,iBAAS,eAAEC,wBAC9D,IAAAC,YAAU,QAAU,KACI,EAAAC,EAAA,KAAxB,MACQrF,KAAMrB,GAASG,KAChBwG,EAAmBC,IAAwB,IAAAC,UAAS,GACrDC,EAA8C,QAAlB,EAAA9G,aAAI,EAAJA,EAAMqE,oBAAY,eAAE0C,0BAChDC,EAA0C,QAAlB,EAAAhH,aAAI,EAAJA,EAAMqE,oBAAY,eAAE4C,sBAC5CC,EAAsCZ,OAAyB,QAAlB,EAAAtG,aAAI,EAAJA,EAAMqE,oBAAY,eAAE8C,qCACjEC,EACqC,GAAvCF,EACM,EACAb,EAA8Ba,EAClCG,EAAaC,KAAKC,IAAID,KAAKE,MAAOJ,EAAaf,EAA+B,KAAM,MACnFoB,EAAQC,IAAa,IAAAb,WAAS,GAC/Bc,GAAa,IAAAC,QAAOH,GAEpBI,EAAmBb,GAAyBE,EAAsC,GAGxF,IAAAT,YAAU,KACNiB,GAAU,EAAK,GAChB,KAEH,IAAAjB,YAAU,KACN,IAAIqB,EAWJ,OAV2B,IAAvBH,EAAWI,UAAgC,IAAXN,EAEhCK,EAAQE,YAAW,KACfpB,EAAqBS,EAAW,GACjC,KAEHT,EAAqBS,GAEzBM,EAAWI,QAAUN,EAEd,IAAMQ,aAAaH,EAAM,GACjC,CAACL,EAAQJ,IAIZ,OACI,8BACKQ,GACG,+BACI,8BAAKhI,UAAU,mFAAiF,WAC5F,+BAAKA,UAAU,oHAAkH,YAC7H,8BAAKA,UAAU,mNAAiN,UAC3NmH,GACG,kDACuB,uDAGvB,iCACI,uCACgB,uBAAsB,QAAlB,EAAAhH,aAAI,EAAJA,EAAMqE,oBAAY,eAAE6D,gCAAkC,QAAM,QAEhF,2BACI,qDAC8B,KAC1B,4BACIpI,KAAK,4CACLqI,OAAO,SACPC,IAAI,aACJvI,UAAU,gCAA8B,0CAShE,gBAAKA,UAAU,gBACf,+BAAKA,UAAU,oHAAkH,YAC7H,8BAAKA,UAAU,oCAAkC,mBACjD,8BAAKA,UAAU,oCAAkC,WAC7C,SAAC,IAAQ,CAACwI,MAAO1B,QAErB,+BAAK9G,UAAU,oCAAkC,eAAGwG,oBAMpE,8BACKS,GACG,+BACI,8BAAKjH,UAAU,mFAAiF,WAC5F,+BAAKA,UAAU,uEAAqE,6BAC7D,kDAA6B,QAAM,KACtD,4BAAGA,UAAU,qBAAmB,iDAK5C,UAzDG,IAAM,MAyDM,OAKlC,ECvGE,SAASyI,EAAShJ,EAAiBiJ,G,MACtC,MAAMnI,EAAiB,IAAI,IAC3B,OAAO,EAAAC,EAAA,GAAS,CACZC,SAAU,CAAC,QAASiI,EAAmBnI,EAAOG,SAAgC,QAAtB,EAAAH,EAAOI,uBAAe,eAAEC,KAChFE,QAAS,IAMb,SAA0B4H,G,qDACtB,MAAMC,EAAU,CACZ,eAAgB,mBAChB,gBAAiB,WACjBC,gBAAiBrI,EAAOsI,aAEtBC,EAAO,WACP5H,EAAOX,EAAOM,SAASM,UAAU,EAAG,IAAM,KAC1CC,EAA2C,QAAtB,EAAAb,EAAOI,uBAAe,eAAEC,IACnD,IACI,MAAMU,QAAiB,IAAKC,IACxB,GAAGuH,IAAO5H,cAAiBE,YAA6BsH,mBACxD,CACIC,QAASA,IAIjB,OADA,EAAmBrH,EAASE,MACrBF,EAASE,I,CAClB,MAAOC,GAGL,MADAC,QAAQC,IAAI,uBACN,IAAIN,MAAM,sB,KA3BL0H,CAAWL,GAC1BM,UAAWN,GAAqBA,EAAkBzH,OAAS,EAC3De,kBAAkB,EAClBC,OAAO,GA2Bf,CACA,MAAM,EAAsB9B,IAAD,E,wBCpCpB,MAAM8I,EAAezH,IACxB,MAAO0H,EAAiBC,IAAsB,IAAAnC,UAAqB,OAC5DoC,EAAoBC,IAAyB,IAAArC,WAAS,IACtDsC,EAAUC,IAAe,IAAAvC,WAAS,GAqDzC,OAnDA,IAAAJ,YAAU,K,YACN,MAAMxE,EAAmB,IAAI,IACvB7B,EAAiB,IAAI,IAGrB2I,EAAiC,QAAf,EAAA1H,aAAI,EAAJA,EAAMwB,iBAAS,eAAEC,MAAMuG,IAAQ,MAAC,OAAkB,QAAlB,EAAAA,aAAI,EAAJA,EAAMlG,oBAAY,eAAEmG,UAAU,IA2BtF,GAzBIN,EADAD,GAGmB,MAIvBK,EAA8B,OAAlB/H,aAAI,EAAJA,EAAMkI,WAAsC,OAAlBlI,aAAI,EAAJA,EAAMkI,WAAsC,OAAlBlI,aAAI,EAAJA,EAAMkI,gBAG9C3I,KAApBS,aAAI,EAAJA,EAAMwB,YAAsD,IAAZ,QAAf,EAAAxB,aAAI,EAAJA,EAAMwB,iBAAS,eAAE/B,SAClDoI,GAAsB,IAEP,QAAf,EAAA7H,aAAI,EAAJA,EAAMwB,iBAAS,eAAE/B,SAAU,GAC3BoI,GAAsB,GAEK,IAAZ,QAAf,EAAA7H,aAAI,EAAJA,EAAMwB,iBAAS,eAAE/B,SAAeiI,GAEhCG,GAAsB,GAEtB9I,EAAOoJ,mBACPN,GAAsB,GAKtB7H,IACAY,EAAQwH,eAAepI,GACnBA,QAA0BT,IAAlBS,EAAKiC,UAAwB,CACrC,MAAMoG,EAAY,IAAI1F,YAAY,aAAc,CAAEC,OAAQ,CAAEjE,KAAMqB,KAClE6C,SAASC,cAAcuF,E,CAK3BrI,IAAQA,aAAI,EAAJA,EAAMd,YACS,MAAnBH,EAAOG,WACPH,EAAOG,SAAWc,EAAKd,UAEvBH,EAAOG,UAAYc,EAAKd,WACxBH,EAAOG,SAAWc,EAAKd,U,GAGhC,CAACc,IAEG,CAAE0H,kBAAiBE,qBAAoBE,WAAU,E,uBCjC5D,MA3BqBQ,IAEb,+BACI9J,UAAU,mBACN8J,EAAK,CACTC,MAAM,KACNC,OAAO,KACPC,QAAQ,iBACRC,MAAM,8BAA4B,YAElC,iBAAMC,EAAE,oGACR,iBAAMA,EAAE,wYACR,iBAAMA,EAAE,8JACR,iBAAMA,EAAE,4UACR,iBAAMA,EAAE,qDACR,iBAAMA,EAAE,kJACR,iBACIA,EAAE,0HACFC,KAAK,UACLC,OAAO,UACPC,iBAAiB,KACjBC,YAAY,aCT5B,MAZmBT,IAEX,+BAAK9J,UAAU,iBAAoB8J,EAAK,CAAEC,MAAM,KAAKC,OAAO,KAAKC,QAAQ,mBAAiB,YACtF,iBAAME,EAAE,4KACR,iBAAMA,EAAE,0DACR,mBAAQK,GAAG,OAAOC,GAAG,OAAOC,EAAE,SAC9B,iBAAMP,EAAE,s5BACR,iBAAMA,EAAE,k9C,kDCkMpB,MApLA,UAAkB,QAAEzG,EAAO,IAAEiH,IACzB,MAAM,KAAEjL,EAAI,EAAEC,IAAM,EAAAC,EAAA,GAAe,eACnCF,EAAKG,kBAAkB,KAAM,cAAe,EAAAC,IAAI,GAAM,GACtDJ,EAAKG,kBAAkB,KAAM,cAAe,EAAAE,IAAI,GAAM,GACtD,MAAO6K,EAAaC,IAAkB,IAAA7D,WAAS,IACxC8D,EAAYC,IAAiB,IAAA/D,UAAS,KACtCgE,EAAqBC,IAA0B,IAAAjE,WAAS,IACxDkE,EAAmBC,IAAwB,IAAAnE,WAAS,GAErDoE,EAAc1H,EACdnD,EAAiB,IAAI,IAErB8K,GAAa,IAAAC,UAAQ,OACR,IAAI,KACH3K,iBACjB,IAEG4K,EACFC,IAEAA,EAAEC,iBACFR,GAAuB,EAAM,EAoGjC,OAdA,IAAArE,YAAU,KACoB,MACtB,MAAM8E,EAAmB,IAAI,IAEvBC,EADUD,EAAiBE,WACR3I,MAAMuG,GAASA,EAAKqC,YAAcT,EAAY7H,SACvEwH,EAAcW,EAAiBE,YAC3BD,GACAd,GAAe,E,EAIvBiB,EAAmB,GACpB,CAACV,KAGA,+BAAKpL,UAAU,uBAAqB,YAChC,+BAAMA,UAAU,6BAA2B,UACxBL,EAAdiL,EAAgB,mBAAwB,sBAE7C,iCACI5K,UAAU,oCACV+L,KAAK,SAAQ,aACF,kBACXC,QArGY,KAAY,wCAChC,IAAKX,EAKD,YAJAJ,GAAuB,GAO3B,MAAMgB,GAAM,IAAI,KAAStL,gBAEzB,IAAKsL,EAKD,OAJAhB,GAAuB,QACvB9C,YAAW,KACP8C,GAAuB,EAAM,GAnCF,KAwCnC,MAAMiB,EAAUD,EAAIrL,IAEpB,IAAKsL,EAKD,OAJAjB,GAAuB,QACvB9C,YAAW,KACP8C,GAAuB,EAAM,GA7CF,KAkDnC,MAAMnC,EAAO,WACP5H,GAAO,IAAI,KAASL,SAASM,UAAU,EAAG,IAAM,KAChDqI,EAAOmB,EACPwB,EAAYrD,EAAO5H,EAAO,YAAc,IAAIgL,IAAY,eAAe1C,EAAKjG,SAE5E6I,EAAkB,CACpB,eAAgB,mBAChB,gBAAiB,WACjBxD,iBAAiB,IAAI,KAASC,aAE5B6C,EAAmB,IAAI,IAC7B,GAAId,EACA,UACU,IAAKpI,OAAO2J,EAAW,CACzBxD,QAASyD,IAEbV,EAAiBW,mBAAmB7C,EAAKjG,QACzCsH,GAAe,E,CACjB,MAAOW,GAAG,MAEZ,IACI,MAAMc,EAAUxD,EAAO5H,EAAO,YAAc,IAAIgL,qBAC1C,IAAKK,KACPD,EACA,CACIT,WAAYrC,EAAKjG,OACjBiJ,kBAAkB,IAAIC,MAAOC,eAEjC,CACI/D,QAASyD,IAGjB,MAAMO,EAAyB,IAAI,KACnCA,EAAUd,WAAarC,EAAKjG,OAC5BmI,EAAiBkB,IAAID,GACrB9B,GAAe,GAEf,MAAM9G,EAAQ,IAAII,YAAiC,gBAAiB,CAChEC,OAAQ,CAAEgH,YAAaA,EAAayB,YAAalC,EAAImC,SAEzDzI,SAASC,cAAcP,E,CACzB,MAAOyH,GACL9J,QAAQC,IAAI,0BAA2B6J,E,CAG/CL,GAAsB4B,IAAUA,GAEpC,KAyBoC,UAEvBnC,GACG,SAACoC,EAAA,EAAY,CAAChN,UAAU,oCAExB,SAACiN,EAAA,EAAiB,CAACjN,UAAU,sCAGpCgL,IACG,iCACI,gBAAKhL,UAAU,+BAA+BgM,QAAUR,GAAMD,EAA4BC,MAC1F,8BAAKxL,UAAU,gCAA8B,WACzC,+BAAKA,UAAU,wCAAsC,YACjD,gCAAMA,UAAU,8CAA4C,WACvDL,EAAE,UAAY,KACf,4BACIK,UAAU,wCACVC,KAAK,gBAEL+L,QAAUR,IA9HjB,CAACA,IACtBA,EAAEC,iBACFlL,EAAO2M,UAAY9M,OAAO+M,SAASC,SAAWhN,OAAO+M,SAASE,OAC9DjN,OAAO+M,SAASlN,KAAO,eAAe,EA4HNqN,CAAiB9B,EAAE,GACtB,WAED,uBAAI7L,EAAE,eALD,GAML,KAEJ,4BACIK,UAAU,yCACVC,KAAK,wBAAsB,WAG3B,uBAAIN,EAAE,gBAFD,GAIR,IAAMA,EAAE,6CAEb,kCACIqM,QAAUR,GAAMD,EAA4BC,GAC5CxL,UAAU,sDAAoD,YAE9D,+BAAMA,UAAU,mBAAiB,UAAEL,EAAE,iBACrC,SAAC,IAAY,qBAQ7C,ECzLO,SAAS4N,GAAiB,MAAE/E,EAAK,UAAEgF,EAAS,OAAEC,EAAM,MAAEvH,EAAK,OAAEP,IAChE,MAAM,KAAEjG,EAAI,EAAEC,IAAM,EAAAC,EAAA,GAAe,eACnCF,EAAKG,kBAAkB,KAAM,cAAe,EAAAC,IAAI,GAAM,GACtDJ,EAAKG,kBAAkB,KAAM,cAAe,EAAAE,IAAI,GAAM,GACtD,MAGM2N,EAAaC,IACfF,EAAOG,OAAO,CAAEjI,OAAQA,EAAQO,MAAOA,EAAON,IAAK4C,EAAQmF,EAAa5H,UAAW4H,GAAc,EAErG,OACI,8BAAK3N,UAAU,uBAAqB,UAC/BwN,GAAa,GACV,8BAAKxN,UAAU,0BAAwB,UAAEL,EAAE,oBAE3C,iCACI,8CACe,0BACXkO,SAAUrF,GAAS,EACnBxI,UAAU,kBACVgM,QAAS,KACL0B,GAAW,EAAE,GAChB,WAED,+BAAKxD,MAAM,6BAA6BH,MAAM,KAAKC,OAAO,KAAKC,QAAQ,aAAW,YAC9E,iBAAME,EAAE,2EACR,iBAAMA,EAAE,sEAGhB,8BAAKnK,UAAU,qBAAmB,UAAEwI,MACpC,8CACe,0BACXqF,SAAUrF,GAASgF,GAAahF,GAAS,GACzCxI,UAAU,iBACVgM,QAAS,KACL0B,EAAU,EAAE,GACf,WAED,+BAAKxD,MAAM,6BAA6BH,MAAM,KAAKC,OAAO,KAAKC,QAAQ,aAAW,YAC9E,iBAAME,EAAE,2EACR,iBAAMA,EAAE,sHAOpC,CCpCO,MAAM2D,EAAW,EACpBC,WACAC,eACAC,eACAC,WACAC,gBACAC,SACAC,SACAC,eACAC,c,MAEA,MAAM,KAAE7O,EAAI,EAAEC,IAAM,EAAAC,EAAA,GAAe,eACnCF,EAAKG,kBAAkB,KAAM,cAAe,EAAAC,IAAI,GAAM,GACtDJ,EAAKG,kBAAkB,KAAM,cAAe,EAAAE,IAAI,GAAM,GACtD,MAAOyO,EAAiBC,IAAsB,IAAAzH,WAAS,GAEjDtD,EAAqBsK,EAAa/K,MAAMyC,GAAMA,EAAEnC,QAAUwK,EAASzK,aAAaC,SAChFmL,EAAUhL,aAAO,EAAPA,EAASiL,KAAK1L,MAAM2L,GAAMA,EAAE9B,OAASiB,EAASzK,aAAawJ,QACrEU,EAAYO,EAASzK,aAAauL,UAMxC,OACI,+BACI,+BAAK7O,UAAWsO,GAAY,YACxB,8BAAKtO,UAAU,eAAa,UACvB+N,EAAS5K,OAAO2L,YACb,4BAAG7O,KAAMyD,EAAQqL,YAAYC,mBAAiB,WAC1C,gBACIhP,UAAU,iBACV+J,MAAM,MACNC,OAAO,MACPiF,IAAI,GACJC,IAAK,8BAAgCnB,EAASzK,aAAa6L,SAAW,oBAI9E,gBACInP,UAAU,iBACV+J,MAAM,MACNC,OAAO,MACPiF,IAAI,GACJC,IAAK,8BAAgCnB,EAASzK,aAAa6L,SAAW,oBAIlF,+BAAKnP,UAAU,qBAAmB,WAC7BmO,IAAiB,8BAAKnO,UAAU,qBAAmB,UAAEL,EAAE,kBACvD+D,EAAQ0L,cAAe,8BAAKpP,UAAU,eAAa,UAAE0D,EAAQ0L,gBAAsB,KAEnFrB,EAAS5K,OAAO2L,YACb,4BAAG7O,KAAMyD,EAAQqL,YAAYC,mBAAiB,WAC1C,6BAAIhP,UAAU,cAAY,UAAE0D,EAAQ2L,YAGxC,6BAAIrP,UAAU,cAAY,UAAE0D,EAAQ2L,SAGxC,8BAAKrP,UAAU,gBAAc,UAAE0D,EAAQH,OAAO+L,MAAM,EAAG,GAAK,IAAM5L,EAAQH,OAAO+L,MAAM,EAAG,OAExFvB,EAASzK,aAAaiM,MAAQxB,EAASzK,aAAakM,SAClD,+BAAKxP,UAAU,eAAa,WACvB+N,EAASzK,aAAaiM,OACnB,4BACK5P,EAAE,QAAO,KAAIoO,EAASzK,aAAaiM,QAG3CxB,EAASzK,aAAaiM,MAAQxB,EAASzK,aAAakM,QACjD,+BAAMxP,UAAU,aAAW,iBAE9B+N,EAASzK,aAAakM,QACnB,4BACK7P,EAAE,SAAQ,KAAIoO,EAASzK,aAAakM,aAK7B,gBAAvB9L,EAAQ+L,aACL,+BAAKzP,UAAU,gBAAc,YACzB,gBACIkP,IAAI,0CACJD,IAAI,mBACJjP,UAAU,uBAEd,8BAAKA,UAAU,qBAAmB,UACN,gBAAvB0D,EAAQ+L,aAAgC,4DAKpDlB,IACG,+BAAKvO,UAAU,cAAc0P,MAAO,CAAEC,aAAc,SAAQ,wBAC7B,QAAhB,EAAA5B,aAAQ,EAARA,EAAU5K,cAAM,eAAEC,aAKpCoK,EAAY,IAAMA,EAAY,IAC3B,+BAAKxN,UAAU,6BAA2B,mBAAOwN,EAAS,iBAMjEO,EAAS5K,OAAO2L,aACb,8BAAK9O,UAAU,aAAW,WACtB,SAAC,EAAQ,CAAC0D,QAASA,EAASiH,IAAK+D,OAIxCX,EAAS5K,OAAO2L,aAAeP,IAC5B,+BAAKvO,UAAU,aAAW,YACtB,SAACuN,EAAgB,CACb/E,MAAOuF,EAAS5K,OAAOC,SACvBoK,UAAWA,EACX7H,OAAQoI,EAASxL,GACjB2D,MAAO6H,EAASzK,aAAawJ,MAC7BW,OAAQY,KAEZ,iCAAQtC,KAAK,SAAS/L,UAAU,eAAegM,QAASoC,GAAM,UACzDzO,EAAE,kBAKf,8BAAKK,UAAU,eAAa,WACxB,4BACI,+BAAK0P,MAAO,CAAEE,UAAW,UAAS,YAC9B,+BAAM5P,UAAU,kBAAgB,UAAE+N,EAAS5K,OAAO0M,aACjD9B,EAAS5K,OAAO0M,WAAanB,EAAQoB,WAClC,+BAAM9P,UAAU,mBAAiB,UAAE0O,EAAQoB,iBAInD,8BAAKJ,MAAO,CAAEE,UAAW,UAAS,WAC5B7B,EAASzK,aAAamG,aACiB,QAApCsE,EAAS5K,OAAO4M,kBACuB,WAApChC,EAAS5K,OAAO4M,oBAChB,+BAAM/P,UAAU,uBAAqB,UAAEL,EAAE,wBAKnDwO,GACEX,EAAY,IACXO,EAAS5K,OAAO6M,mBACbjC,EAAS5K,OAAO8M,uBAChBhC,EAAaiC,gBACjBnC,EAAS5K,OAAO2L,aACZ,iCACI,kCAAQ9O,UAAU,uBAAuBgM,QApIhD,KACrByC,GAAoBD,EAAgB,GAmI0D,WAC7DN,GACG,SAAC,EAAS,CAAClO,UAAW,uBAGtB,SAAC,EAAW,CAACA,UAAW,yBAE1B+N,EAAS5K,OAAOgN,oBAAsBlC,EAAaiC,gBACjD,+BACI,gCAAMR,MAAO,CAAEU,WAAY,SAAQ,WAC9BnC,EAAakC,mBACblC,EAAaiC,gBACV,iCAAQR,MAAO,CAAEW,WAAY,WAAU,UAClCpC,EAAaiC,uBAMjCnC,EAAS5K,OAAOgN,qBACb,+BACI,gCAAMT,MAAO,CAAEU,WAAY,SAAQ,WAC9BrC,EAAS5K,OAAOgN,mBAChBpC,EAAS5K,OAAO8M,wBACb,iCAAQP,MAAO,CAAEW,WAAY,WAAU,UAClCtC,EAAS5K,OAAO8M,yBAGxBlC,EAAS5K,OAAO6M,oBACb,iCAAQN,MAAO,CAAEW,WAAY,WAAU,UAClCtC,EAAS5K,OAAO6M,4BAOrC,8BACIhQ,UAAW,IAAW,iBAAkB,CACpC,aAAcwO,EACd,aAAcA,KAChB,UAEDA,SAGRA,IACG,8BACyC,QAApCT,EAAS5K,OAAO4M,kBACmB,WAApChC,EAAS5K,OAAO4M,kBACZ,8BAAK/P,UAAU,6BAA2B,UAAEL,EAAE,qBAE9C,+BAEKoO,EAAS5K,OAAO4M,kBAAoBrB,EAAQ4B,iBAC7CvC,EAAS5K,OAAOC,UACZ,iCACI,gCAAMpD,UAAU,mCAAiC,WAC5CL,EAAE,YAAW,SAElB,+BAAMK,UAAU,gCAA8B,UACzC+N,EAAS5K,OAAO4M,0CAiC5E,ECrQQQ,EAAiB,EAAGC,aAAchH,EAAM8E,mBACjD,MAAM,KAAE5O,EAAI,EAAEC,IAAM,EAAAC,EAAA,GAAe,eAInC,OAHAF,EAAKG,kBAAkB,KAAM,cAAe,EAAAC,IAAI,GAAM,GACtDJ,EAAKG,kBAAkB,KAAM,cAAe,EAAAE,IAAI,GAAM,IAGlD,+BACI,+BAAKC,UAAWsO,GAAY,YACxB,8BAAKtO,UAAU,eAAa,WACxB,4BAAGC,KAAMuJ,EAAKiH,SAAO,WACjB,gBACIzQ,UAAU,iBACV+J,MAAM,MACNC,OAAO,MACPiF,IAAI,GACJC,IAAK,8BAAgC1F,EAAKkH,aAAe,uBAIrE,+BAAK1Q,UAAU,qBAAmB,YAC9B,4BAAGC,KAAMuJ,EAAKiH,SAAO,WACjB,6BAAIzQ,UAAU,cAAY,UAAEwJ,EAAKmH,mBAErC,8BAAK3Q,UAAU,gBAAc,UAAEwJ,EAAKoH,qBAClCpH,EAAK+F,MAAQ/F,EAAKgG,SAChB,+BAAKxP,UAAU,eAAa,WACvBwJ,EAAK+F,OACF,4BACK5P,EAAE,QAAO,KAAI6J,EAAK+F,QAG1B/F,EAAK+F,MAAQ/F,EAAKgG,QAAS,+BAAMxP,UAAU,aAAW,iBACtDwJ,EAAKgG,QACF,4BACK7P,EAAE,SAAQ,KAAI6J,EAAKgG,aAKf,gBAApBhG,EAAKiG,aACF,+BAAKzP,UAAU,gBAAc,YACzB,gBACIkP,IAAI,0CACJD,IAAI,mBACJjP,UAAU,uBAEd,8BAAKA,UAAU,qBAAmB,WAAE,6DAI5C,+BAAKA,UAAU,cAAc0P,MAAO,CAAEC,aAAc,SAAQ,wBAC7CnG,EAAKqH,sBAIxB,8BAAK7Q,UAAU,mCAAiC,WAC5C,0BACI,8BAAK0P,MAAO,CAAEE,UAAW,UAAS,WAC9B,+BAAM5P,UAAU,kBAAgB,UAAEwJ,EAAKqG,0BAM9D,ECgML,MAvPA,UAAe,cAAE1B,EAAa,WAAE2C,I,YAE5B,MAAMvQ,EAAiB,IAAI,KACpBwQ,EAAkBC,IAAuB,IAAAhK,WAAS,IAClDiK,EAAeC,IAAoB,IAAAlK,UAAS,IAC5CmK,EAAoBC,IAAyB,IAAApK,UAAmB,KAGjE,KAAEtH,EAAI,EAAEC,IAAM,EAAAC,EAAA,GAAe,eACnCF,EAAKG,kBAAkB,KAAM,cAAe,EAAAC,IAAI,GAAM,GACtDJ,EAAKG,kBAAkB,KAAM,cAAe,EAAAE,IAAI,GAAM,IAE9B,EAAA8G,EAAA,KAAxB,MACM,KAAErF,EAAI,UAAE6P,EAAS,QAAEC,GAAYhR,KAC/B,SAAEgJ,GAAaL,EAAYzH,GAC3B+P,EAAQ9I,EAAS+I,EAAiBjR,EAAOoJ,mBACzC8H,EAAWvP,EAAcV,GACzBkQ,EAAiB3M,EAAqC,QAAvB,EAAAxE,aAAM,EAANA,EAAQI,uBAAe,eAAEC,IAAKL,aAAM,EAANA,EAAQG,UAKrEiR,EAAgB,CAAC5D,EAAUC,IACFA,EAAa/K,MAAMyC,GAAMA,EAAEnC,QAAUwK,EAASzK,aAAaC,SACvEkM,WAEbmC,EAA8B,QAAf,EAAApQ,aAAI,EAAJA,EAAMwB,iBAAS,eAAE6O,QAAQrI,IAC1C,IAAKA,EAAKlG,aAAamG,YAAoD,OAAtCkI,EAAcnI,EAAMhI,EAAKiC,UAC1D,OAAO,C,IAEZxC,OAEG6Q,EAAqC,QAAf,EAAAtQ,aAAI,EAAJA,EAAMwB,iBAAS,eAAE6O,QAAQrI,IACjD,IAAKA,EAAKlG,aAAamG,YAAoD,cAAtCkI,EAAcnI,EAAMhI,EAAKiC,UAC1D,OAAO,C,IAEZxC,OAEG8Q,EAAsC,QAAf,EAAAvQ,aAAI,EAAJA,EAAMwB,iBAAS,eAAE6O,QAAQrI,IAClD,IAAKA,EAAKlG,aAAamG,YAAoD,eAAtCkI,EAAcnI,EAAMhI,EAAKiC,UAC1D,OAAO,C,IAEZxC,OAiBH,OAVA,IAAA2F,YAAU,KACN,GAAIpF,GAAQA,EAAKiC,SAAU,CACvB,MAAMuO,EAAgBxQ,EAAKiC,SAASoO,QAAQI,GAA2B,gBAAnBA,EAAIxC,aACnDyC,KAAKD,GAAQA,EAAIE,aACjBN,QAAO,CAACtL,EAAM6L,EAAOC,IAAUA,EAAMC,QAAQ/L,KAAU6L,IACvDG,OACLnB,EAAsBY,E,IAE3B,CAACxQ,IAECA,GAAS+P,EAAM/P,MAKhB,gCACK2M,IAAkB2C,IACf,+BAAK9Q,UAAU,aAAW,YACtB,SAACwS,EAAA,EAAc,CAACxS,UAAU,kBACzBL,EAAE,mFAGViS,EAAe,IACZ,iCACMzD,IAAiB,8BAAKnO,UAAU,yBAAuB,UAAEL,EAAE,iCAC7D,8BAAKK,UAAW4R,EAAe,EAAI,yBAA2B,iBAAe,UACxEpQ,EAAKwB,UAAUkP,KACX1I,IACIA,EAAKlG,aAAamG,YACmB,OAAtCkI,EAAcnI,EAAMhI,EAAKiC,YACrB,SAACqK,EAAQ,CACLQ,aAAc,kBACdP,SAAUvE,EACVwE,aAAcxM,EAAKiC,SACnB0K,cAAeA,EACfF,aAAczM,EAAKyM,aACnBC,SAAU5E,EAEV+E,OAAQqD,EACRtD,OAAQ,KACJ8C,EAAiB1H,EAAKjH,IACtByO,GAAoB,EAAK,GAJxBxH,EAAKjH,YAYrCuP,EAAsB,IACnB,iCACM3D,IACE,8BAAKnO,UAAU,yBAAuB,UAAEL,EAAE,6CAE9C,8BAAKK,UAAW8R,EAAsB,EAAI,yBAA2B,iBAAe,UAC/EtQ,EAAKwB,UAAUkP,KACX1I,IACIA,EAAKlG,aAAamG,YACmB,cAAtCkI,EAAcnI,EAAMhI,EAAKiC,YACrB,SAACqK,EAAQ,CACLQ,aAAc,kBACdP,SAAUvE,EACV2E,cAAeA,EACfH,aAAcxM,EAAKiC,SACnBwK,aAAczM,EAAKyM,aACnBC,SAAU5E,EAEV+E,OAAQqD,EACRtD,OAAQ,KACJ8C,EAAiB1H,EAAKjH,IACtByO,GAAoB,EAAK,GAJxBxH,EAAKjH,YAYrCwP,EAAuB,IACpB,8BACKZ,EAAmBe,KAAI,CAACO,EAAQL,KAC7B,UAAC,WAAc,YACTjE,IACE,8BAAKnO,UAAU,yBAAuB,UAAEL,EAAE,yBAA2B,IAAM8S,MAE/E,8BACIzS,UACIoS,GAASjB,EAAmBlQ,OAAS,EAAI,yBAA2B,iBAAe,UAGtFO,EAAKwB,UAAUkP,KACX1I,IACG,OAACA,EAAKlG,aAAamG,YACmB,eAAtCkI,EAAcnI,EAAMhI,EAAKiC,YAlGzCsK,EAmG2BvE,EAAMhI,EAAKiC,SAlGdR,MAAMyC,GAAMA,EAAEnC,QAAUwK,EAASzK,aAAaC,SACvE4O,YAiG4DM,KACvC,SAAC3E,EAAQ,CACLQ,aAAc,kBACdP,SAAUvE,EACV2E,cAAeA,EACfH,aAAcxM,EAAKiC,SACnBwK,aAAczM,EAAKyM,aACnBC,SAAU5E,EAEV+E,OAAQqD,EACRtD,OAAQ,KACJ8C,EAAiB1H,EAAKjH,IACtByO,GAAoB,EAAK,GAJxBxH,EAAKjH,IA3GnC,IAACwL,CAkHiB,SA5BI0E,OAoChCtE,IAAiBoD,aAAK,EAALA,EAAO/P,QACrB,+BACI,8BAAKxB,UAAU,iBAAe,UACzBuR,EAAM/P,KAAKkR,WAAW,GAAGC,MAAMT,KAAI,CAAC1I,EAAM4I,KACvC,SAAC7B,EAAc,CACXjC,aAAc,kBACdkC,aAAchH,GACT,SAAW4I,UAgBnCrB,IACG,+BACI,UAAC6B,EAAA,EAAM,eACHC,MAAOlT,EAAE,4DACT2O,aAAa,eACbtE,OAAO,OACP8I,aAAc,KACV9B,GAAqBD,EAAiB,GACzC,WAEAvP,aAAI,EAAJA,EAAMwB,UAAU6O,QAAQrI,GAASA,EAAKjH,IAAM0O,IAAeiB,KAAI,CAAC1I,EAAM4I,KACnE,SAACtE,EAAQ,CACLQ,aAAc,kBACdP,SAAUvE,EACVwE,aAAcxM,EAAKiC,SACnBwK,aAAczM,EAAKyM,aACnBC,SAAU5E,EACV6E,cAAeA,EAEfE,OAAQqD,EACRnD,SAAS,EACTH,OAAQ,KACJqD,EAAS7D,OAAOpE,EAAKjH,GAAG,GAJvB,SAAWiH,EAAKjH,MAQ5Bf,aAAI,EAAJA,EAAMwB,UAAU6O,QAAQrI,GAASA,EAAKjH,IAAM0O,IAAeiB,KAAI,CAAC1I,EAAM4I,KACnE,+BAAKpS,UAAU,8BAA4B,YACvC,iCACI+L,KAAK,SAAQ,aACDpM,EAAE,wBACdK,UAAU,yBACVgM,QAAS,KACLyF,EAAS7D,OAAOpE,EAAKjH,IACrByO,GAAqBD,EAAiB,GACzC,UAEApR,EAAE,cAEP,iCACIoM,KAAK,SAAQ,aACDpM,EAAE,+BACdK,UAAU,yBACVgM,QAAS,KACLgF,GAAqBD,EAAiB,GACzC,yBAlBwC,gBAAkBvH,EAAKjH,gBA5JrF,uBAyLf,E,mBCtPA,MAlBmBuH,IAEX,8BAAKC,MAAM,KAAKC,OAAO,KAAKC,QAAQ,aAAgBH,EAAK,CAAEI,MAAM,8BAA4B,WACzF,6BAAGE,KAAK,OAAO2I,SAAS,WAAS,YAC7B,iBAAMhJ,MAAM,KAAKC,OAAO,KAAKI,KAAK,OAAO4I,GAAG,QAC5C,iBAAM3I,OAAO,OAAO4I,cAAc,QAAQ9I,EAAE,yBAC5C,6BAAGC,KAAK,QAAM,YACV,iBAAMD,EAAE,+MACR,iBACI4I,SAAS,UACT5I,EAAE,+J,UCI1B,OAdmBL,IAEX,8BAAKC,MAAM,KAAKC,OAAO,KAAKC,QAAQ,aAAgBH,EAAK,CAAEI,MAAM,8BAA4B,WACzF,6BAAGE,KAAK,OAAO2I,SAAS,WAAS,YAC7B,iBAAMhJ,MAAM,KAAKC,OAAO,KAAKI,KAAK,OAAO4I,GAAG,QAC5C,iBACI5I,KAAK,OACLD,EAAE,oMCUf,SAAS+I,IAAgB,cAAE/E,EAAa,WAAE2C,I,SACrB,EAAAjK,EAAA,KAAxB,MACMtG,EAAiB,IAAI,KACrB,KAAEiB,GAASlB,IACXiR,EAAQ9I,EAAS+I,EAAiBjR,EAAOoJ,oBACzC,KAAEjK,EAAI,EAAEC,IAAM,EAAAC,EAAA,GAAe,eAInC,OAHAF,EAAKG,kBAAkB,KAAM,cAAe,EAAAC,IAAI,GAAM,GACtDJ,EAAKG,kBAAkB,KAAM,cAAe,EAAAE,IAAI,GAAM,GAEjDwR,EAAM/P,MAASjB,EAAOoJ,kBAGvB4H,EAAM9P,OACC,yBAIP,iCACMqP,GAAc3C,IACZ,+BAAKnO,UAAU,sBAAoB,YAC/B,SAACmT,EAAA,EAAY,CAACnT,UAAU,4BACxB,6BACI,uBAAIL,EAAE,kCAAqC,IAC1CA,EAAE,+DAIf,+BAAKK,UAAU,qBAAmB,YAC9B,6BAAIA,UAAU,cAAY,UAAEL,EAAE,oBAC9B,+BAAKK,UAAU,2BAAyB,YACpC,+BAAKA,UAAU,sBAAoB,WAC9BL,EAAE,eACH,uBAAI,IAAM4R,EAAM/P,KAAKgD,aAAa4O,eAAeC,OAAO,6BAE5D,+BAAKrT,UAAU,wBAAsB,WAChCL,EAAE,iBACH,uBAAI4R,EAAM/P,KAAKgD,aAAa8O,cAEhC,+BAAKtT,UAAU,wBAAsB,WAChCL,EAAE,iBACH,uBAAI4R,EAAM/P,KAAKgD,aAAa+O,mBAGpC,+BAAKvT,UAAU,gCAA8B,YACzC,+BAAKA,UAAU,gCAA8B,YACzC,SAAC,EAAS,CAAC0P,MAAO,CAAE3F,MAAO,OAAQyJ,SAAU,WAC7C,4BACI,uBACK7T,EACG,+FAEH,IACJA,EAAE,kFAGX,8BAAKK,UAAU,6BAA2B,WACtC,iCACI+L,KAAK,SACLC,QAAS,IAAOmB,SAASlN,KAAO,IAChCD,UAAU,yBAAwB,aACtBL,EAAE,kBAAgB,iCAKtC,+BAAKK,UAAU,mCAAiC,YAC5C,SAAC,GAAS,CAAC0P,MAAO,CAAE3F,MAAO,OAAQyJ,SAAU,WAC7C,4BACI,uBAAI7T,EAAE,uCAA0C,IAC/CA,EACG,4KACD,KACH,uBAAIA,EAAE,oDAIC,QAAlB,EAAA6B,aAAI,EAAJA,EAAMgD,oBAAY,eAAEC,eAAgB,IACjC,6BAAIzE,UAAU,wBAAsB,UAAEL,EAAE,oBAEN,IAAnB,QAAlB,EAAA6B,aAAI,EAAJA,EAAMgD,oBAAY,eAAEC,iBACjB,6BAAIzE,UAAU,wBAAsB,UAAEL,EAAE,4BAtE7C,IA2Ef,CCvFA,OAfsBmK,IAEd,8BACI9J,UAAU,gBACN8J,EAAK,CACTI,MAAM,6BACND,QAAQ,YACRF,MAAM,KACNC,OAAO,MAAI,WAEX,iBAAMG,EAAE,wG,WCgBb,MAAMsJ,GAAU,EAAGC,wBAAuBvF,gBAAewF,aAAYC,0BACxE,MAAMrT,EAAiB,IAAI,KACpBsT,EAAqBC,IAA0B,IAAA9M,WAAS,IACxD+M,EAAiBC,IAAsB,IAAAhN,UACtB,MAApBzG,EAAO0T,WAAyClT,MAApBR,EAAO0T,WAA4D,QAAlC1T,EAAO0T,UAAUC,gBAElF,IAAAtN,YAAU,KACkB,MAApBrG,EAAO0T,WAAyClT,MAApBR,EAAO0T,WAA4D,QAAlC1T,EAAO0T,UAAUC,gBAC9EF,GAAmB,GAGnBzT,EAAO4T,kB,GAEZ,KAEqB,EAAAtN,EAAA,KAAxB,MACQrF,KAAMrB,GAASG,KACjB,KAAEZ,EAAI,EAAEC,IAAM,EAAAC,EAAA,GAAe,eACnCF,EAAKG,kBAAkB,KAAM,cAAe,EAAAC,IAAI,GAAM,GACtDJ,EAAKG,kBAAkB,KAAM,cAAe,EAAAE,IAAI,GAAM,GACtD,IAAIqU,GAAiB,EAIrB,IAAIC,GAAuB,EAC3B,MAAM5C,EAAWvP,EAAc/B,GACzBmU,EAAoC,GACpCC,EAA4C,IAC3CC,EAAaC,IAAkB,IAAAzN,UAAS,KACxC0N,EAAqBC,IAA0B,IAAA3N,UAAS,KACxD4N,EAAeC,IAAoB,IAAA7N,WAAS,IAGnD,IAAAJ,YAAU,K,MACN,GAAIzG,IAAuB,QAAf,EAAAA,aAAI,EAAJA,EAAM6C,iBAAS,eAAE/B,QAAS,IAAMkN,IAAkByG,EAAe,CACzE,MAAM1Q,EAAe,IAAIC,YAAY,WAAY,CAAEC,OAAQ,CAAEjE,KAAMA,KACnEkE,SAASC,cAAcJ,GACvB2Q,GAAiB,E,IAEtB,CAAC1U,EAAMgO,EAAeyG,KAEzB,IAAAhO,YAAU,K,MACN,GACY,MAARzG,GACQY,MAARZ,GACkB,MAAlBA,EAAK6C,WACajC,MAAlBZ,EAAK6C,WACL7C,EAAK6C,UAAU/B,OAAS,EAC1B,CAGEyS,GAAsB,GACtB,IAAK,IAAIoB,EAAI,EAAGA,EAAI3U,EAAK6C,UAAU/B,OAAQ6T,IAAK,CAC5C,MAAMC,EAAc5U,EAAK6C,UAAU8R,GAAGxR,aAChC0R,EAAS7U,EAAK6C,UAAU8R,GAAG3R,OAC3B8R,EAAqB9U,EAAKsD,SAASyR,WAAWxP,GAAMA,EAAEnC,QAAUwR,EAAYxR,SAC5EG,EAAUvD,EAAKsD,SAASwR,GAE9B,GAAIA,GAAc,EAAG,CACjB,MAAME,EAAOhV,EAAKsD,SAASwR,GAAYtG,KACvC,GAAY,MAARwG,GAAgBA,EAAKlU,OAAS,EAAG,CAEjC,GADekU,EAAKD,WAAWxP,GAAMA,EAAEoH,OAASiI,EAAYjI,SAC9C,IAENpJ,EAAQG,WACRkR,EAAYlR,WACZkR,EAAYK,sBACyB,IAArCJ,EAAOK,4BACT,CACE,MAAMC,EAAS,CACX/R,OAAQwR,EAAYxR,OACpBuJ,MAAOiI,EAAYjI,MACnByI,OAAQpV,EAAK6C,UAAU8R,GAAGvS,GAC1BiT,SAAU9R,EAAQ2L,MAGlB3L,EAAQG,WAERyR,EAAOG,UAAW,8BAAG/R,EAAQ2L,OAC7BiG,EAAOI,eACH,uCACSJ,EAAOE,SAAQ,MAAK,KACzB,+BAAMxV,UAAU,oBAAkB,UAAEL,EAAE,mBAAuB,IAAE,IAC9DA,EAAE,wCAAyC,KAC5C,iCACIK,UAAU,sBACV+L,KAAK,SACLC,QAAS,K,MACLyF,EAAS7D,OAAyB,QAAlB,EAAAzN,aAAI,EAAJA,EAAM6C,UAAU8R,UAAE,eAAEvS,GAAG,GAC1C,UAEA5C,EAAE,gBAIf2V,EAAOK,MAAO,SAAC,GAAY,IAC3BL,EAAOM,QAAUjW,EAAE,YACnB2V,EAAOO,OAAS,SAChBvB,EAAiBwB,KAAKR,GACtB5B,GAAsB,IACfqB,EAAYlR,WAEnByR,EAAOG,UACH,gCACK/R,EAAQ2L,KAAM,IACd0G,GAAgBhB,IAAgBiB,GAAajB,EAAaC,IACvD,sCACQe,GAAgBhB,GACnBiB,GAAajB,EAAaC,IACvB,oCAAIgB,GAAajB,EAAaC,MAC9B,QAER,QAGZM,EAAOI,eACH,wCACQ,0BAAOJ,EAAOG,WAAkB,OAAG,KACvC,gCAAMzV,UAAU,oBAAkB,WAAEL,EAAE,gBAAe,QAAU,IAC9DA,EAAE,qEAAsE,KACzE,iCACIK,UAAU,sBACV+L,KAAK,SACLC,QAAS,K,MACLyF,EAAS7D,OAAyB,QAAlB,EAAAzN,aAAI,EAAJA,EAAM6C,UAAU8R,UAAE,eAAEvS,GAAG,GAC1C,UAEA5C,EAAE,gBAIf2V,EAAOK,MAAO,SAAC,GAAY,IAC3BL,EAAOO,OAAS,SAChBnC,GAAsB,GACtBY,EAAiBwB,KAAKR,IACsB,IAArCN,EAAOK,6BAEdC,EAAOG,UACH,gCACK/R,EAAQ2L,KAAM,IACd0G,GAAgBhB,IAAgBiB,GAAajB,EAAaC,IACvD,sCACQe,GAAgBhB,GAAc,IACjCiB,GAAajB,EAAaC,MAE/B,QAIZM,EAAOW,YACgB,SAAnB1V,EAAOM,SACD,QAAUkU,EAAYlG,UAAY,kBAClC,qBAAuBkG,EAAYlG,UAAY,IACzDyG,EAAOK,MAAO,SAAC,GAAY,IAC3BL,EAAOI,eACH,uCACSJ,EAAOG,SAAQ,YAAW,KAC/B,gCAAMzV,UAAU,oBAAkB,WAC7BgV,EAAOK,2BAA0B,IAAGC,EAAOW,mBAIxD3B,EAAiBwB,KAAKR,G,IAY9C,MAAMY,EAA0B,GAEhC,GAAyB,MAArB/V,EAAK8N,aAAsB,CAE3B,GAAI9N,EAAKgW,kCAAoChI,EAAe,CACxD,MAAMmH,EAAS,CAAC,EAChBA,EAAOK,MAAO,SAAC,GAAY,IAC3BL,EAAOM,QAAUzV,EAAK8N,aAAamI,8BACnC7B,EAAyBuB,KAAKR,GAC9B5B,GAAsB,E,CAG1B,GAAIvT,EAAKkW,4BAA8BlI,EAAe,CAClD,MAAMmH,EAAS,CAAC,EAChBA,EAAOK,MAAO,SAAC,GAAY,IAC3BL,EAAOM,QAAUzV,EAAK8N,aAAaqI,wBACnC/B,EAAyBuB,KAAKR,GAC9B5B,GAAsB,E,CAG1B,GAAIvT,EAAKoW,gCAAkCpI,EAAe,CACtD,MAAMmH,EAAS,CAAC,EAChBA,EAAOK,MAAO,SAAC,GAAY,IAC3BL,EAAOM,QAAUzV,EAAK8N,aAAauI,wBACnCjC,EAAyBuB,KAAKR,GAC9B5B,GAAsB,E,CAG1B,GAAmB,OAAfvT,aAAI,EAAJA,EAAMsW,SAA4B,QAAX,EAAAtW,aAAI,EAAJA,EAAMsW,aAAK,eAAEC,WAAYvI,EAAe,CAC/DiG,GAAiB,EACjB,MAAMkB,EAAS,CAAC,EAChBA,EAAOK,MAAO,SAAC,GAAY,IAC3BL,EAAOI,eACH,iCACI,sCAAkB,IACjB/V,EACG,mIAIZ2U,EAAiBwB,KAAKR,GACtB5B,GAAsB,GACtBC,GAAW,E,CAGf,GAAII,EAAiB,CACjB,MAAMuB,EAAS,CAAC,EAChBA,EAAOK,MAAO,SAACgB,GAAA,EAAQ,IACvBrB,EAAOI,eAAgB,8BAAG/V,EAAE,uDAC5B2V,EAAOO,OAAS,QAChBP,EAAOsB,aACH,iCAAQ5W,UAAU,qBAAqBgM,QAAS,IAAM6K,KAAe,WACjE,SAAC,IAAY,OAGrBvC,EAAiBwC,QAAQxB,E,CAG7B,GAAsB,MAAlBnV,EAAK6C,WAAqB7C,EAAKqE,aAAauS,uBAAyB,IAC1C,GAAzB5W,EAAK6C,UAAU/B,QACwB,GAArCd,EAAK6C,UAAU,GAAGG,OAAOC,WACxBjD,EAAK6C,UAAU,GAAGM,aAAamG,YACL,IAA3ByM,GACkB,WAAlB/V,EAAK6W,WACLnD,GACiB,MAAjB1T,EAAKuJ,WACJyE,GAEqB,GAAzBhO,EAAK6C,UAAU/B,QAIC,GAFbd,EAAK6C,UAAU6O,QAAQoF,IACXA,EAAS3T,aAAamG,aAC/BxI,QACwB,IAA3BiV,GACkB,WAAlB/V,EAAK6W,WACLnD,GACiB,MAAjB1T,EAAKuJ,WACJyE,GAEP,CACE,MAAMmH,EAAS,CAAC,EAChBA,EAAOK,MAAO,SAAC,EAAW,IAC1BL,EAAOO,OAAS,YAChBP,EAAOsB,aACH,iCAAQ5W,UAAU,qBAAqBgM,QAAS,IAAMkL,KAAmB,WACrE,SAAC,IAAY,OAGrB5B,EAAOI,eACH,iCACI,uBAAI/V,EAAE,uBAA0B,IAC/BA,EACG,mGACD,KACH,4BACIK,UAAU,oBACVC,KAAK,6CACLqI,OAAO,UAAQ,6BAM3BgM,EAAiBwC,QAAQxB,E,EAK7BjB,EADsC,IAAtClU,EAAKqE,aAAa2S,kBAA4C,WAAlBhX,EAAK6W,UAOrDrC,EAAuBJ,GACvBE,EAAeH,E,CAGP,MAARnU,GACQY,MAARZ,GACmB,OAAnBA,aAAI,EAAJA,EAAM6C,YACajC,OAAnBZ,aAAI,EAAJA,EAAM6C,YACoB,IAA1B7C,aAAI,EAAJA,EAAM6C,UAAU/B,UAGhB0T,EAAuB,IACvBF,EAAe,I,GAEpB,CAACtU,EAAM4T,EAAiBF,IAE3B,MAAMgD,EAAgB,KACd9C,GACAC,GAAmB,E,EAGrBkD,EAAoB,KAClBrD,GACAC,GAAuB,E,EAI/B,OACI,2BACKU,GACGA,EAAYvT,OAAS,GACrBuT,EAAYtC,KAAI,CAACoD,EAAQlD,KAEjB,+BAEIpS,UAAU,cACV0P,MACqB,SAAjB4F,EAAOO,QAAsC,aAAjBP,EAAOO,OAC7B,CAAEuB,OAAQ,qBACV,CAAC,GAAC,YAGZ,8BAAKpX,UAAU,qBAAmB,UAAEsV,EAAOK,SAC3C,8BAAK3V,UAAU,wBAAsB,UAAEsV,EAAOI,iBAC7CJ,EAAOsB,eAVHxE,EAAQ,GAAKkD,EAAOC,UAexCb,GACGA,EAAoBzT,OAAS,GAC7ByT,EAAoBxC,KAAI,CAACoD,EAAQlD,KAGzB,+BAAsCpS,UAAU,eAAa,YACzD,8BAAKA,UAAU,qBAAmB,UAAEsV,EAAOK,SAC3C,8BAAK3V,UAAU,wBAAsB,UAAEsV,EAAOM,cAFxCxD,EAAQ,GAAKkD,EAAOC,WAM1C,gBAAK8B,GAAG,sBAEf,EAECrB,GAAe,CAACjB,EAAoBC,IACN,GAA5BD,EAAYuC,aACL,GAEyB,IAA5BtC,EAAOuC,mBACA,4DAEA,6DAKbxB,GAAmBhB,GAChBA,EAAYxF,MAASwF,EAAYvF,MAGlCuF,EAAYxF,MAAQwF,EAAYvF,OAE5B,yCACWuF,EAAYxF,KAAI,YAAWwF,EAAYvF,SAItDuF,EAAYxF,MACL,yCAASwF,EAAYxF,QAE5BwF,EAAYvF,OACL,0CAAUuF,EAAYvF,cADjC,EAZW,G,0BCnPf,OAnIyB,EAAGgI,cAAaC,8BAA6BjW,W,MAClE,MAAMjB,EAAiB,IAAI,IACrBmX,EAAwBtX,OAA4B,qBAClDoB,KAAMmW,EAAY,UAAEtG,GCjBL,MACvB,MAAM9Q,EAAiB,IAAI,IAmB3B,OAAO,EAAAC,EAAA,GAAS,CACZC,SAAU,CAAC,YACXK,QApBkB,KAAY,0CAC9B,MAAM6H,EAAU,CACZ,eAAgB,mBAChBC,gBAAiBrI,EAAOsI,aAGtB3H,EAAOX,EAAOM,SAASM,UAAU,EAAG,IAAM,KAChD,IAII,aAHuB,IAAKI,IAAI,WAAUL,sBAA0B,CAChEyH,QAASA,KAEGnH,I,CAClB,MAAOgK,GAEL,MADA9J,QAAQC,IAAI,+BACN,IAAIN,MAAM,8B,CAExB,IAKIW,kBAAkB,EAClBC,OAAO,EACP2V,UAAW,KACb,EDTwCC,IACnCC,EAAaC,IAAkB,IAAA/Q,WAAS,IACzC,gBAAEkC,GAAoBD,EAAYzH,GAClCiQ,EhBkJgB,EAACzM,EAAa5B,EAAU6B,KAC9C,MAAM9C,GAAc,UAEd5B,EAAiB,IAAI,IACrB6B,EAAU,IAAI,IACdlB,EAAOX,EAAOM,SAASM,UAAU,EAAG,IAAM,KAsBhD,OAAO,EAAAkB,EAAA,GAAY,CACfI,UAAW,CAAOnB,EAAUoB,EAAWC,KAAY,0C,MAE/CzC,EAAmBoB,EAASE,MAC5BjB,EAAOG,SAAWY,EAASE,KAAKd,SAChCH,EAAOwB,iBAAmBT,EAASE,KAAKgD,aAAaC,cAAcC,WACnEtC,EAAQuC,gCAEFxC,EAAY6V,cAAc,CAAEvX,SAAU,CAAC,SAE7C0B,EAAY0C,aACR,CAAC,MAAOvD,EAASE,KAAKd,SAAgC,QAAtB,EAAAH,EAAOI,uBAAe,eAAEC,IAAKL,EAAOM,UACpES,EAASE,KAEjB,IACAsD,QAAS,CAACrD,EAAOiB,EAAWC,KACxBjB,QAAQC,IAAI,QAAQ,EAExBW,WAAY/B,EAAOG,SA3BIuX,GAEhB,IAAK1L,KAAK,WAAUrL,WAAc+D,cAAsB,CAC3DD,YAAaA,EACboB,cAAe,GACf8R,QAASD,EACT7U,SAAUA,IAjBU6U,IAEjB,QAAqB,CACxB7R,cAAe,GACf8R,QAASD,EACT7U,SAAUA,EACV4B,YAAa,KAiCnB,EgBhMemT,CAAiC,QAAtB,EAAA5X,EAAOI,uBAAe,eAAEC,IAAK,EAAGL,EAAOG,WAC5D0X,EAAUC,IAAe,IAAArR,UAAsB,KAChD,KAAEtH,EAAI,EAAEC,IAAM,EAAAC,EAAA,GAAe,eACnCF,EAAKG,kBAAkB,KAAM,cAAe,EAAAC,IAAI,GAAM,GACtDJ,EAAKG,kBAAkB,KAAM,cAAe,EAAAE,IAAI,GAAM,GA8CtD,OAvCA,IAAA6G,YAAU,KAEFmR,KADAP,IAAeC,G,GAKpB,CAACD,EAAaC,KAEjB,IAAA7Q,YAAU,KAEN,MAAMwR,EAAWE,OAAOC,OAAO,GAAIZ,QACR,IAAhBA,IAA+BA,aAAY,EAAZA,EAAc1W,QAAS,IAE7DmX,EAASI,SAAQ,SAAUhP,GACvBA,EAAKiP,aAAejP,EAAKiP,aAAaC,QAAQ,IAAK,IACnDlP,EAAKiP,aAAehR,KAAKkR,MAAMC,WAAWpP,EAAKiP,eAAe/T,UAClE,QAAG,GAGH0T,EAAS7F,MAAK,SAAUsG,EAAGC,GACvB,OAAOF,WAAWC,EAAEJ,cAAgBG,WAAWE,EAAEL,cAC3C,EACAG,WAAWE,EAAEL,cAAgBG,WAAWC,EAAEJ,eACzC,EACD,CACV,IAGAL,EAASI,SAAQ,SAAUhP,EAAM4I,GACQ,SAAjC7R,EAAOM,SAASqT,cAChB1K,EAAKiP,aAAe,IAAMjP,EAAKiP,aAE/BjP,EAAKiP,aAAejP,EAAKiP,aAAe,IAEhD,QAAG,GACHJ,EAAYD,G,GAEjB,CAACT,EAAcpX,EAAOM,WAErBwQ,GACO,uDAIP,8BACKqG,GAAyBU,IACtB,+BACI,+BAAKpY,UAAU,kBAAgB,YAC3B,kCACIA,UAAU,iBACV+L,KAAK,SAAQ,aACF,sBACXC,QAAS,KACL+L,GAAgBD,EAAY,GAC/B,YAED,8BAAK9X,UAAU,mBAAiB,WAC5B,gBACIiP,IAAKtP,EAAE,aACPoK,MAAM,KACNC,OAAO,KACPkF,IAAI,8CAGZ,8BAAKlP,UAAU,mBAAiB,WAC5B,0BAAOL,EAAE,+DAEb,gBACIK,UAAW,IAAW,iBAAkB,CACpC,aAAc8X,EACd,aAAcA,UAIzBA,IACG,iCACI,8BAAK9X,UAAU,qBAAmB,UAC7BL,EACG,uIAGR,8BAAKK,UAAU,sBAAoB,UAC9BoY,EAASlG,KAAI,CAACxO,EAAS0O,K,MAAU,OAC9B,4BACI,kBACIiF,GAAIjF,EAAM1N,WACV1E,UAAU,4BACV+L,KAAK,QACLvD,MAAO9E,aAAO,EAAPA,EAASiL,KAAK,GAAG7B,MACxBvG,KAAM,oBACNsM,MAAOnP,aAAO,EAAPA,EAASiL,KAAK,GAAGoK,aACxBC,SAAStV,aAAO,EAAPA,EAASiL,KAAK,GAAG7B,SAAsC,QAA7B,EAAA5D,aAAe,EAAfA,EAAiB5F,oBAAY,eAAEwJ,OAClEmM,SAAU,KAAMC,OAjGlChT,EAiGmDxC,aAAO,EAAPA,EAASiL,KAAK,GAAG7B,WA/F1F2E,EAAS7D,OAAO1H,GAFK,IAACA,CAiG0E,KAE5D,gCAAOiT,QAAS/G,EAAM1N,WAAY1E,UAAU,6BAA2B,WACnE,0BAAO0D,aAAO,EAAPA,EAAS+U,oBAZdrG,EAeb,QAEL,8BAAKpS,UAAU,yBAAuB,UACjCL,EACG,8HASnC,E,WE/IE,MA0BD,GAAsBQ,IACxBC,OAAOC,cAAcF,KAAOA,CAAI,ECTvBiZ,GAAU,EACnBxF,sBACAyF,kBAAmBC,EACnBC,qBAAsBC,EACtBC,kC,8BAEA,MAAMlZ,EAAiB,IAAI,KACpBmZ,EAAsBC,IAA2B,IAAA3S,WAAS,IAC1DqS,EAAmBE,IAAwB,IAAAvS,WAAS,IACpD4S,EAAkBC,IAAuB,IAAA7S,WAAS,IAClD8S,EAAgBC,IAAqB,IAAA/S,UAAS,SAC9CgT,EAAkBC,IAAuB,IAAAjT,UAAsB,CAAE6L,MAAO,GAAIqH,QAAS,MACrFC,EAAoBC,IAAyB,IAAApT,WAAS,IACtDqT,EAA2BC,IAAgC,IAAAtT,WAAS,IAErE,KAAEtH,EAAI,EAAEC,IAAM,EAAAC,EAAA,GAAe,eACnCF,EAAKG,kBAAkB,KAAM,cAAe,EAAAC,IAAI,GAAM,GACtDJ,EAAKG,kBAAkB,KAAM,cAAe,EAAAE,IAAI,GAAM,IAE9B,EAAA8G,EAAA,KAAxB,MACM,KAAErF,GAASlB,IACXia,EDvCgB,CAACtV,IACvB,MAAM9C,GAAc,UAEd5B,EAAiB,IAAI,IACrBW,EAAOX,EAAOM,SAASM,UAAU,EAAG,IAAM,KAMhD,OAAO,EAAAkB,EAAA,GAAY,CACfC,WANuB,EAAGkY,mBAAkB/X,eACrC,IAAK0D,IAAI,WAAUjF,WAAc+D,gBAAwB,CAC5DwV,iBAAkBD,IAKtB/X,UAAW,CAACnB,EAAUoB,K,MAClB,GAAmBpB,EAASE,MAE5BkB,EAAUD,YACVN,EAAY0C,aACR,CAAC,MAAOtE,EAAOG,SAAgC,QAAtB,EAAAH,EAAOI,uBAAe,eAAEC,IAAKL,EAAOM,UAC7DS,aAAQ,EAARA,EAAUE,KACb,EAELsD,QAAS,CAACrD,EAAOiB,EAAWC,KACxBjB,QAAQC,IAAI,GAAGgB,KAAWlB,IAAQ,GAExC,ECesBiZ,CAAWna,EAAOG,WAE1C,IAAAkG,YAAU,K,wBAC6B7F,OAAb,QAAlB,EAAAS,aAAI,EAAJA,EAAMgD,oBAAY,eAAEmW,WAA0C,QAAlB,EAAAnZ,aAAI,EAAJA,EAAMgD,oBAAY,eAAEmW,QAAQF,kBAAmB,GAC3Fd,GAAwB,IAEY,QAApC,EAAAnY,aAAI,EAAJA,EAAMoZ,sCAA8B,eAAE3Z,QAAS,EAC/CmZ,GAAsB,GAEtBA,GAAsB,GAE1B,MAAMS,EAAqD,QAA3B,EAAkB,QAAlB,EAAArZ,aAAI,EAAJA,EAAMgD,oBAAY,eAAEmW,eAAO,eAAEF,kBAGzDjZ,aAAI,EAAJA,EAAMsZ,gCACHD,IAA8D,QAAnC,EAAArZ,aAAI,EAAJA,EAAMsZ,qCAA6B,eAAEL,oBAChD,QAAhB,EAAAjZ,aAAI,EAAJA,EAAMuZ,kBAAU,eAAEC,gBAErBV,GAA6B,GAE7BA,GAA6B,GAEjCP,GAAoC,QAAlB,EAAAvY,aAAI,EAAJA,EAAMgD,oBAAY,eAAEmW,SAAqC,QAA3B,EAAkB,QAAlB,EAAAnZ,aAAI,EAAJA,EAAMgD,oBAAY,eAAEmW,eAAO,eAAEF,iBAAiB/V,WAAa,IAAI,GAChH,CAAClD,KAEJ,IAAAoF,YAAU,KAEF6S,IADkB,KAAlBK,IAAyBJ,G,GAK9B,CAACI,EAAgBL,EAA6BC,IAEjD,MAAMuB,EAAsB,KAAY,0CAwBpC,GAAgC,IAA5BjB,EAAiBE,QAAe,CAChC,MAAMgB,QAxBV,W,+CACI,MAAMvS,EAAU,CACZ,eAAgB,mBAChB,gBAAiB,WACjBC,iBAAiB,IAAI,KAASC,aAI5BsS,EAFO,aACA,IAAI,KAASta,SAASM,UAAU,EAAG,IAAM,MACrB,4BACjC,IACI,MAAMK,QAAa,IAAKD,IAAI4Z,EAAY,CACpCxS,QAASA,EACTyS,iBAAkB,CAAC5Z,EAAMmH,YACdA,EAAQ0S,cACR7Z,KAGf,OAAOA,EAAKA,KAAK8Z,O,CACnB,MAAO9P,GACL,OAAO,I,CAEf,G,CAG0B+P,GAClBL,IACAjB,EAAoB,CAAEpH,MAAOqI,EAAQM,MAAOtB,QAASgB,EAAQO,UAC7D5B,GAAoB,G,MAGxBA,GAAoB,EAE5B,IAEA,OACI,8BACKM,IACG,gCACK,KACD,+BAAKna,UAAU,0BAAwB,YACnC,kBACI+L,KAAK,WAELsL,GAAG,kBACHrX,UAAU,kBACVgZ,QAASU,EACTT,SAAWzN,I,SAEFA,EAAElD,OAAO0Q,SACqB,OAAb,QAAlB,EAAAxX,aAAI,EAAJA,EAAMgD,oBAAY,eAAEmW,WACF,QAAlB,EAAAnZ,aAAI,EAAJA,EAAMgD,oBAAY,eAAEmW,QAAQF,kBAAmB,GAE/CF,EAAgB3M,OAAO,CACnB4M,iBAAkB,EAClB/X,UAAW,KACPmR,GAAoB,EAAM,IAItC4F,GAAwB,GACxBG,EAAwBnO,EAAElD,OAAO0Q,SAC7BxN,EAAElD,OAAO0Q,QACTpF,GAAoB,GAEpBA,GAAoB,E,GAtBvB,IA0BT,gCAAO5T,UAAU,mCAAmCmZ,QAAQ,mBAAiB,UACxExZ,EAAE,oCAEP,iCACIK,UAAU,kFACVgM,QAAS,IAAMiP,KAAqB,UAEnCtb,EAAE,oBAGV+Z,IACG,iCAEKlY,aAAI,EAAJA,EAAMka,yBACH,+BACI,kCACI1b,UAAU,wPACVwI,MAAOsR,EACPpK,MAAO,CAAEiM,gBAAiB,iDAC1B1C,SAAWzN,IACPuO,EAAkBvO,EAAElD,OAAOE,OAC3BgR,GAAwB,GACxBe,EAAgB3M,OAAO,CACnB4M,iBAAkBoB,SAASpQ,EAAElD,OAAOE,OACpC/F,UAAW,QACb,GACL,YAED,kCAAQ+F,MAAM,KAAG,WACZ7I,EAAE,0BAAyB,KAAIA,EAAE,UAAS,QAE9C6B,aAAI,EAAJA,EAAMoZ,+BAA+BtL,MAAM,GAAG4C,KAAI,CAAC2J,EAASzJ,KACzD,iCAAuC5J,MAAOqT,EAAQpB,kBAAgB,UACjEoB,EAAQC,iBADAD,EAAQpB,qBAKxBjZ,aAAI,EAAJA,EAAMsZ,iCAAiD,QAAhB,EAAAtZ,aAAI,EAAJA,EAAMuZ,kBAAU,eAAEC,kBACtD,iCAEIxS,MAA0C,QAAnC,EAAAhH,aAAI,EAAJA,EAAMsZ,qCAA6B,eAAEL,kBAAgB,UAExB,QAAnC,EAAAjZ,aAAI,EAAJA,EAAMsZ,qCAA6B,eAAEgB,iBAHlC,uBAUI,QAA3B,EAAkB,QAAlB,EAAAta,aAAI,EAAJA,EAAMgD,oBAAY,eAAEmW,eAAO,eAAEF,kBAAmB,IAC7C,iCACI,+BAAKza,UAAU,kDAAgD,YAC3D,8BAAKA,UAAU,4BAA0B,WACrC,+BAAMA,UAAU,iBAAe,UAAEL,EAAE,mCAEvC,8BAAKK,UAAU,6BAA2B,WACtC,gCAAMA,UAAU,iBAAe,WACC,QAA3B,EAAkB,QAAlB,EAAAwB,aAAI,EAAJA,EAAMgD,oBAAY,eAAEmW,eAAO,eAAEoB,kBAAiB,gBAK3D,+BAAK/b,UAAU,kDAAgD,YAC3D,8BAAKA,UAAU,4BAA0B,WACrC,0BAAOL,EAAE,yCAEb,8BAAKK,UAAU,6BAA2B,WACtC,0BAAkC,QAA3B,EAAkB,QAAlB,EAAAwB,aAAI,EAAJA,EAAMgD,oBAAY,eAAEmW,eAAO,eAAEqB,qCAI5C,+BAAKhc,UAAU,kDAAgD,YAC3D,+BAAKA,UAAU,4BAA0B,YACrC,0BAAkC,QAA3B,EAAkB,QAAlB,EAAAwB,aAAI,EAAJA,EAAMgD,oBAAY,eAAEmW,eAAO,eAAEsB,4BAAkC,KACtE,0BAAOtc,EAAE,kCAEb,8BAAKK,UAAU,6BAA2B,WACtC,0BAAkC,QAA3B,EAAkB,QAAlB,EAAAwB,aAAI,EAAJA,EAAMgD,oBAAY,eAAEmW,eAAO,eAAEuB,+BAG5C,8BAAKlc,UAAU,wDAAsD,WACjE,8BAAKA,UAAU,4BAA0B,WACrC,gCAAMA,UAAU,2BAAyB,eACnCL,EAAE,8EAQ9B0Z,GAAqBC,KACnB,+BAAKtZ,UAAU,0EAAwE,YACnF,SAAC,GAAY,CAACA,UAAU,2BACxB,4BAAGA,UAAU,yBAAuB,UAAEL,EAAE,6CAA+C,KACvF,0BAAOA,EAAE,wEAGhBia,IACG,SAACuC,GAAA,EAAe,CACZtJ,MAAOmH,EAAiBnH,MACxBqH,QAASF,EAAiBE,QAC1BpH,aAAc,KACV+G,GAAoB,EAAM,QAOrD,E,eCxPE,SAASuC,GAAe3c,EAAiBiJ,EAA2BvI,G,MACvE,MAAMI,EAAiB,IAAI,IAGrB8b,EAAqC,IAAI,MAC3C9b,EAAO+b,qBACPD,EAAaE,UAAYhc,EAAO+b,4BAEzBD,EAAaE,UAExBF,EAAa1J,MAAQ,GACrB,IAAK,IAAImC,EAAI,EAAGA,GAAmB,QAAf,EAAA3U,aAAI,EAAJA,EAAM6C,iBAAS,eAAE/B,QAAQ6T,IAAK,CAC9C,MAAM0H,EAAWrc,EAAK6C,UAAU8R,GAC1B2H,EAAgC,IAAI,MAC1CA,EAAYpW,QAAUmW,EAASlZ,aAAawJ,MAAMpI,WAClD+X,EAAY5L,aAAe2L,EAASrZ,OAAOC,SAC3CiZ,EAAa1J,MAAMmD,KAAK2G,E,CAI5B,OAAO,EAAAjc,EAAA,GAAS,CACZC,SAAU,CACN,cACAF,EAAOG,SACPgI,EACA2T,EAAa1J,MACb0J,EAAaE,UAAYF,EAAaE,UAAY,IAEtDzb,QAAS,IASb,SAA0B4H,G,qDACtB,MAAMI,EAAO,WACP5H,EAAOX,EAAOM,SAASM,UAAU,EAAG,IAAM,KAC1CC,EAA2C,QAAtB,EAAAb,EAAOI,uBAAe,eAAEC,IAI9BL,EAAOsI,YAG5B,IACI,MAAMvH,QAAiB,IAAK6E,IACxB,GAAG2C,IAAO5H,cAAiBE,YAA6BsH,WACxD2T,GAIJ,OADA,GAAmBlc,EAAMmB,EAASE,MAC3BF,EAASE,I,CAClB,MAAOC,GAKL,MADAlB,EAAOmc,8BACD,IAAIrb,MAAM,sB,KAhCL0H,CAAWL,GAC1BM,UAAWN,GAAqBA,EAAkBzH,OAAS,KAAOd,EAClE6B,kBAAkB,EAClBC,OAAO,EAEP2V,UAAW,IACX+E,sBAAsB,GA6B9B,CAEO,MA6DD,GAAqB,CAACxc,EAAMyc,KAE9Bxc,OAAOC,cAAgBD,OAAOC,eAAiB,CAAC,EAChDD,OAAOC,cAAcwc,KAAOzc,OAAOC,cAAcwc,MAAQ,CAAC,EAC1Dzc,OAAOC,cAAcwc,KAAKC,UAAY,mCAEtC1c,OAAOC,cAAc0c,YAAc3c,OAAOC,cAAc0c,aAAe,CAAC,EACxE3c,OAAOC,cAAc0c,YAAYhR,KAAO,QACxC3L,OAAOC,cAAc0c,YAAYC,QAAU,eAC3C5c,OAAOC,cAAc0c,YAAYE,QAAU,GAE3C7c,OAAOC,cAAc6c,KAAO9c,OAAOC,cAAc6c,MAAQ,CAAC,EAC1D9c,OAAOC,cAAc6c,KAAKC,WAAa,UACvC/c,OAAOC,cAAc6c,KAAKE,eAAiB,IAC3Chd,OAAOC,cAAc6c,KAAKG,aAAe,eAEzCjd,OAAOC,cAAcF,KAAOA,EAC5BC,OAAOC,cAAcid,OAASV,CAAU,ECzIrC,SAASW,IAAc,cAAEpP,I,cAC5B,MAAM5N,EAAiB,IAAI,KACrB,KAAEb,EAAI,EAAEC,IAAM,EAAAC,EAAA,GAAe,eACnCF,EAAKG,kBAAkB,KAAM,cAAe,EAAAC,IAAI,GAAM,GACtDJ,EAAKG,kBAAkB,KAAM,cAAe,EAAAE,IAAI,GAAM,IAC9B,EAAA8G,EAAA,KAAxB,MACM,KAAErF,EAAI,UAAE6P,GAAc/Q,KACpBkB,KAAMgc,EAAe,WAAEC,GAAerB,GAAe5K,EAAiBjR,EAAOoJ,kBAAmBnI,GAExG,OACI,8BACiC,OAA5Bgc,aAAe,EAAfA,EAAiB7C,WACd,iCACI,+BAAK3a,UAAU,gBAAc,YACzB,8BAAKA,UAAU,wBAAsB,UAAEL,EAAE,8BACzC,8BAAKK,UAAU,kBAAgB,UAA0B,QAAxB,EAAAwd,aAAe,EAAfA,EAAiB7C,eAAO,eAAEF,yBAE/D,+BAAKza,UAAU,gBAAc,YACzB,8BAAKA,UAAU,wBAAsB,WACjC,+BAAMA,UAAU,2BAAyB,UAAEL,EAAE,mCAEjD,8BAAKK,UAAU,kBAAgB,WAC3B,+BAAMA,UAAU,2BAAyB,UACZ,QAAxB,EAAAwd,aAAe,EAAfA,EAAiB7C,eAAO,eAAEoB,6BAKvC,+BAAK/b,UAAU,gBAAc,YACzB,8BAAKA,UAAU,wBAAsB,WACjC,0BAAOL,EAAE,yCAEb,8BAAKK,UAAU,kBAAgB,WAC3B,0BAA+B,QAAxB,EAAAwd,aAAe,EAAfA,EAAiB7C,eAAO,eAAEqB,qCAIzC,+BAAKhc,UAAU,gBAAc,YACzB,+BAAKA,UAAU,wBAAsB,YACjC,0BAA+B,QAAxB,EAAAwd,aAAe,EAAfA,EAAiB7C,eAAO,eAAEsB,4BAAkC,KACnE,0BAAOtc,EAAE,kCAEb,8BAAKK,UAAU,kBAAgB,WAC3B,0BAA+B,QAAxB,EAAAwd,aAAe,EAAfA,EAAiB7C,eAAO,eAAEuB,kCAO7D,CC1DO,MCWMK,GAAY,EAAGpO,oBACxB,MAAM5N,EAAiB,IAAI,KAErB,KAAEiB,EAAI,UAAE6P,KADU,EAAAxK,EAAA,KACIvG,MACpBkB,KAAMgc,EAAe,WAAEC,GAAerB,GAAe5K,EAAiBjR,EAAOoJ,kBAAmBnI,IACjGkc,EAAWC,IAAgB,IAAA3W,UAAS,KACpC4W,EAAcC,IAAmB,IAAA7W,UAAS,OAC1C8W,EAAUC,IAAe,IAAA/W,WAAS,IAClCY,EAAQC,IAAa,IAAAb,WAAS,IAC9BgX,EAA4BC,IAAiC,IAAAjX,WAAS,IACtEkX,EAAWC,IAAgB,IAAAnX,WAAS,IACpCoX,EAAcC,IAAmB,IAAArX,UAAS,KAC1CsX,EAAcC,IAAmB,IAAAvX,WAAS,IAC1CwX,EAAeC,IAAoB,IAAAzX,UAAS,IAC7CyK,EH0CoB,EAAC/I,EAA2BvI,K,MACtD,MACMgC,GAAc,UACd5B,EAAiB,IAAI,IACrBW,EAAOX,EAAOM,SAASM,UAAU,EAAG,IAAM,KAC1CC,EAA2C,QAAtB,EAAAb,EAAOI,uBAAe,eAAEC,IAG7Cyb,EAAqC,IAAI,MAC/CA,EAAa1J,MAAQ,GACrB,IAAK,IAAImC,EAAI,EAAGA,GAAI3U,aAAI,EAAJA,EAAM6C,UAAU/B,QAAQ6T,IAAK,CAC7C,MAAM0H,EAAWrc,EAAK6C,UAAU8R,GAC1B2H,EAAgC,IAAI,MAC1CA,EAAYpW,QAAUmW,EAASlZ,aAAawJ,MAAMpI,WAClD+X,EAAY5L,aAAe2L,EAASrZ,OAAOC,SAC3CiZ,EAAa1J,MAAMmD,KAAK2G,E,CAI5B,OAAO,OAAP,WACO,EAAApa,EAAA,GAAY,CACXC,WAAaob,IAMTrB,EAAaE,UAAYmB,EAAUgB,OAC5B,IAAKvY,IACR,WAAUjF,cAAiBE,YAA6BsH,WACxD2T,IAGR5Z,UAAYnB,IAGR,MAAMqd,EAAWrd,EAASE,KACO,MAA7Bmd,EAASC,kBAAyD,IAA7BD,EAASC,iBAC9Cre,EAAO+b,qBAAuBqC,EAASC,iBAEvCre,EAAOmc,8BAEX,GAAmBvc,EAAMmB,EAASE,MAClCW,EAAY0C,aACR,CACI,cACAtE,EAAOG,SACPgI,EACA2T,EAAa1J,MACb0J,EAAaE,UAAYF,EAAaE,UAAY,IAEtDjb,aAAQ,EAARA,EAAUE,KACb,EAELsD,QAAS,CAACrD,EAAOiB,EAAWC,KACxBjB,QAAQC,IAAI,GAAGgB,KAAWlB,IAAQ,IAExC,EGnGWod,CAAete,EAAOoJ,kBAAmBnI,IACpD,EAAE7B,IAAM,EAAAC,EAAA,MAEd,IAAAgH,YAAU,KACFuH,EACI5N,EAAO+b,uBACPmC,EAAiBle,EAAO+b,sBACxB5a,QAAQC,IAAI,aACZgc,EAAapd,EAAO+b,uBAEjB9a,IAEPid,EAAiBjd,EAAKwV,WAClBxV,EAAKiV,OAASjV,EAAKiV,MAAMqI,iBACwB,IAAtC1e,OAAiC,0BACxC6d,EAA8B7d,OAAiC,0B,GAI5E,KAEH,IAAAwG,YAAU,KACF4W,GAAmBA,EAAgBoB,mBACnCld,QAAQC,IAAI,WACZgc,EAAaH,EAAgBoB,kB,GAElC,CAACpB,KAEJ,IAAA5W,YAAU,MACFpF,aAAI,EAAJA,EAAMkI,YACFlI,aAAI,EAAJA,EAAMkI,WAAYkU,IAElBS,EAAgB,IAChBR,EAAgBrc,EAAKkI,U,GAG9B,CAAClI,EAAMoc,IAEV,MASMmB,EAAqB,KAAY,0CAEnCtN,EAAS7D,OAAO8P,EAAW,CACvBjb,UAAW,KACPsb,GAAY,EAAM,EAEtBjZ,QAAS,CAACrD,EAAOiB,EAAWC,KACxB0b,EAAgB5c,GAEhB0G,YAAW,KACP5H,EAAOmc,6BAA6B,GACrC,IAEH6B,GAAgB,GAChB7c,QAAQC,IAAI,gBAAgB,GAGxC,IAaA,OAAKH,GAKD,gCACOA,EAAKiV,OAAUjV,EAAKiV,SAAWjV,EAAKiV,MAAMqI,YAAcd,MACvD,8BAAKhe,UAAU,iCAA+B,WAC1C,8BACKwd,GAAmBA,EAAgBoB,mBAAqBd,GACrD,+BACI,+BAAK9d,UAAU,kCAAgC,YAC3C,+BAAKA,UAAU,uBAAqB,YAChC,SAACmT,EAAA,EAAY,CAACnT,UAAU,2BACxB,8BAAKA,UAAU,mBAAiB,UAAEwd,EAAgBoB,yBAEtD,iCACI7S,KAAK,SACL/L,UAAU,uBACVgf,SAAU,EACVhT,QAAS,KACL+R,GAAY,EAAK,GACpB,UAEApe,EAAE,qBAKf,iCACI,+BAAKK,UAAU,kBAAkB0P,MAAO,CAAEuP,UAAW,SAAQ,YACzD,+BAAKjf,UAAU,2BAAyB,YACpC,kBACIA,UAAU,eACVkf,aAAa,MACb7H,GAAG,QACH9Q,KAAK,YAAW,aACJ+X,EAAY,aACE,KAAdZ,EACZlV,MAAOkV,EAAYA,EAAUyB,cAAgB,GAE7ClG,SAhFjBzN,IACnB6S,EAAgB,IAChBV,EAAanS,EAAElD,OAAOE,MAAM,EA+EQ4W,QA7ElB5T,IAClB6S,EAAgB,IAChBE,GAAgB,EAAK,EA4Eec,UAtDrBtb,IACfsa,EAAgB,IAChBE,GAAgB,GAEE,UAAdxa,EAAMub,MACNvb,EAAM0H,iBACN1H,EAAMwb,kBACNR,I,KAiD4B,gCAAO5F,QAAQ,QAAQnZ,UAAU,yBAAuB,UACnDL,EAAE,4BAGX,iCACIK,UAAU,uBACVgM,QAAS+S,EAAkB,iBACZ,OAAM,kBACL,aAChBC,SAAU,EAAC,sBACS,oBAAkB,UAErCrf,EAAE,iBAGT2e,IAAgB,8BAAKte,UAAU,qBAAmB,UAAEoe,MACtD,+BAAKpe,UAAU,kBAAkB0P,MAAO,CAAEC,aAAc,MAAK,YACzD,SAAC,GAAY,CAAC3P,UAAU,sBACxB,+BAAKA,UAAU,kBAAgB,YAC3B,uBAAIL,EAAE,gBAAkB,IAAEA,EAAE,gEA/DrD,IAwEV,ECnLQ6f,GAAmBrf,I,YAI5B,IAAIsf,GAAiB,EAiBrB,OATYA,GAPPtf,OAGkB,QAAf,EAAAA,aAAI,EAAJA,EAAM6C,iBAAS,eAAE/B,QAAS,MAEK,IAAZ,QAAf,EAAAd,aAAI,EAAJA,EAAM6C,iBAAS,eAAE/B,WAA+C,QAAhC,EAAkB,QAAlB,EAAAd,aAAI,EAAJA,EAAM6C,UAAU,UAAE,eAAEM,oBAAY,eAAEmG,cAWvEgW,CAAc,EAGZC,GAA4Bvf,I,YAIrC,QAAKA,KAGkB,QAAf,EAAAA,aAAI,EAAJA,EAAM6C,iBAAS,eAAE/B,QAAS,KACK,IAAZ,QAAf,EAAAd,aAAI,EAAJA,EAAM6C,iBAAS,eAAE/B,WAA+C,QAAhC,EAAkB,QAAlB,EAAAd,aAAI,EAAJA,EAAM6C,UAAU,UAAE,eAAEM,oBAAY,eAAEmG,a,ECR5EkW,GAAW,CACb,CAAEpZ,KAAM,UAAW8Q,GAAI,MACvB,CAAE9Q,KAAM,mBAAoB8Q,GAAI,MAChC,CAAE9Q,KAAM,WAAY8Q,GAAI,MACxB,CAAE9Q,KAAM,gBAAiB8Q,GAAI,MAC7B,CAAE9Q,KAAM,4BAA6B8Q,GAAI,MACzC,CAAE9Q,KAAM,wBAAyB8Q,GAAI,MACrC,CAAE9Q,KAAM,cAAe8Q,GAAI,MAC3B,CAAE9Q,KAAM,UAAW8Q,GAAI,MACvB,CAAE9Q,KAAM,UAAW8Q,GAAI,MACvB,CAAE9Q,KAAM,uBAAwB8Q,GAAI,MACpC,CAAE9Q,KAAM,SAAU8Q,GAAI,MACtB,CAAE9Q,KAAM,eAAgB8Q,GAAI,MAC5B,CAAE9Q,KAAM,kBAAmB8Q,GAAI,OAgqBnC,OA3oBqB,EACjBlJ,gBACAyR,qBACAC,UACAC,mBACAlM,sBACAF,wBACAqM,8BACAtG,8BACAF,uBACAF,wB,4DAGA,MAAM2G,IAAY,IAAAjY,UACZxH,GAAiB,IAAI,IACrBmX,GAAwBtX,OAA4B,qBACnD6f,GAAYC,KAAiB,IAAAlZ,UAA2B,OACxDmZ,GAAgBC,KAAqB,IAAApZ,WAAS,IAC9CqZ,GAAuBC,KAA4B,IAAAtZ,WAAS,IAC5DuZ,GAAkBC,KAAuB,IAAAxZ,WAAS,IAClDyZ,GAAwBC,KAA6B,IAAA1Z,WAAS,IAC9D2Z,GAA0BC,KAA+B,IAAA5Z,WAAS,IAClE6Z,GAAkBC,KAAuB,IAAA9Z,WAAS,IAEnD,KAAEtH,GAAI,EAAEC,KAAM,EAAAC,EAAA,GAAe,eACnCF,GAAKG,kBAAkB,KAAM,cAAe,EAAAC,IAAI,GAAM,GACtDJ,GAAKG,kBAAkB,KAAM,cAAe,EAAAE,IAAI,GAAM,IAE9B,EAAA8G,EAAA,KAAxB,MACM0K,GAAQ9I,EAAS+I,EAAiBjR,GAAOoJ,oBACzC,KAAEnI,IAASlB,KAEbkB,KAAMgc,GAAe,WACrBC,GAAU,UACVpM,IACA+K,GAAe5K,EAAiBjR,GAAOoJ,kBAAmBnI,KACxD,gBAAE0H,GAAe,mBAAEE,IAAuBH,EAAYzH,IACtDiQ,GzBEuB,EAAClP,EAAI0C,KAClC,MAAM9C,GAAc,UAEd5B,EAAiB,IAAI,IACrB6B,EAAU,IAAI,IACdlB,EAAOX,EAAOM,SAASM,UAAU,EAAG,IAAM,KAChD,OAAO,EAAAkB,EAAA,GAAY,CACfC,WAAY,IACD,IAAKE,OAAO,WAAUtB,WAAc+D,eAAsB1C,KAErEE,UAAW,CAACnB,EAAUoB,EAAWC,K,YAE7BzC,EAAmBoB,EAASE,MAC5BjB,EAAOG,SAAWY,EAASE,KAAKd,SAChCH,EAAOwB,iBAAmBT,EAASE,KAAKgD,aAAaC,cAAcC,WACnEtC,EAAQuC,2BACU,QAAd,EAAArD,aAAQ,EAARA,EAAUE,YAAI,eAAEwB,YAAkD,IAAZ,QAAzB,EAAc,QAAd,EAAA1B,aAAQ,EAARA,EAAUE,YAAI,eAAEwB,iBAAS,eAAE/B,SAExDV,EAAOqE,kBAEXzC,EAAY0C,aACR,CAAC,MAAOvD,EAASE,KAAKd,SAAgC,QAAtB,EAAAH,EAAOI,uBAAe,eAAEC,IAAKL,EAAOM,UACpES,aAAQ,EAARA,EAAUE,KACb,EAELsD,QAAS,CAACrD,EAAOiB,EAAWC,KACxBjB,QAAQC,IAAI,GAAGgB,KAAWlB,IAAQ,GAExC,EyB9Besf,CAAkB7X,cAAe,EAAfA,GAAiB3G,GAAIhC,GAAOG,WACzD,YAAEsgB,GAAW,eAAEC,GAAc,WAAEC,IC3FX,MAC1B,MAAM1P,GAAkB,EAAA3K,EAAA,MACjBqa,EAAYC,IAAiB,IAAAna,UAAS,OACtCga,EAAaC,IAAkB,IAAAja,UAAS,OACxCoa,EAAeC,IAAoB,IAAAra,UAAS,IAC7C,KAAExF,EAAI,UAAE6P,GAAc/Q,IACtBC,EAAiB,IAAI,IA4B3B,OApBA,IAAAqG,YAAU,K,gBACF4K,EAC6B,OAAzBhQ,aAAI,EAAJA,EAAM8f,kBACNL,EAAezf,aAAI,EAAJA,EAAM8f,gBAAgBC,OACrCJ,EAAc3f,aAAI,EAAJA,EAAM8f,gBAAgBC,QAEM,OAAX,QAA3B,EAAW,QAAX,EAAA/f,aAAI,EAAJA,EAAMiV,aAAK,eAAE+K,sBAAc,eAAED,QAC7BN,EAA0C,QAA3B,EAAW,QAAX,EAAAzf,aAAI,EAAJA,EAAMiV,aAAK,eAAE+K,sBAAc,eAAED,OAC5CJ,EAAyC,QAA3B,EAAW,QAAX,EAAA3f,aAAI,EAAJA,EAAMiV,aAAK,eAAE+K,sBAAc,eAAED,SAE3CN,EAAe,MACfE,EAAc,QAItBF,EAAe,MACfE,EAAc,M,GAEnB,CAAC3f,EAAMjB,EAAOkhB,aAAcjQ,IAExB,CAAEwP,cAAaC,iBAAgBC,aAAY,EDyDEQ,GAC9CC,GH7FqB,CAAC1c,IAC5B,MAEM/D,GADiB,IAAI,KACPL,SAASM,UAAU,EAAG,IAAM,KAIhD,OAAO,EAAAkB,EAAA,GAAY,CACfC,WAJmB,EAAGsf,aAAYnf,eAC3B,IAAKlB,IAAI,WAAUL,WAAc+D,qBAA4B2c,KAIpEnf,UAAW,CAACnB,EAAUoB,KAClBA,EAAUD,UAAUnB,EAASE,KAAK,EAEtCsD,QAAS,CAACrD,EAAOiB,EAAWC,KACxBjB,QAAQC,IAAI,GAAGgB,KAAWlB,IAAQ,GAExC,EG8EqBogB,CAAgBthB,GAAOG,UAExCohB,GAAa,KACXjC,GAAWD,IAGVG,EAGDxG,GAAqB,GAFrBnZ,OAAO+M,SAASlN,KAAO,yB,GAO/B,IAAA2G,YAAU,K,MACN,GACY,MAARpF,KACkB,QAAlB,EAAAA,cAAI,EAAJA,GAAMgD,oBAAY,eAAEC,eAAgB,IACnCob,IACAC,IACAF,IACAzR,EACH,CACE,IAAKgS,GAAgB,CACjB,MAAM4B,EAAiB3hB,OAAuB,eACxC4hB,EAAS3d,SAAS4d,cAAc,UACtCD,EAAO9S,IACH,2CACA6S,EADA,mFAKJC,EAAOE,aAAa,iBAAkB,UACtCF,EAAOG,iBAAiB,QAAQ,IAAM/B,IAAkB,KACxD/b,SAAS+d,KAAKC,YAAYL,E,CAE9B,GAAI7B,KAAmBM,GAAwB,CAC3C,MAAM6B,EAAe,KAAY,0CAC7B5B,IAA0B,GAC1B6B,OACKC,QAAQ,CACL9S,MAAO,CACH+S,OAAQ,WACRC,MAAO,OACPC,MAAO,OACPC,MAAO,YAEXC,YAAa,CAAOC,EAAQC,KAAY,0CAEpC,MAAMxiB,EAAS,IAAI,IACnBA,EAAOyiB,mBACP,MAAMC,QAAwBC,GAAyB1hB,IAEvD,OADAjB,EAAO4iB,gBAAkBF,EAAgB5L,GAClC4L,EAAgBG,KAC3B,IACAC,UAAW,CAAO7hB,EAAMuhB,KAAY,0CAChCzC,IAAyB,GACzBlgB,OAAO+M,SAASlN,KAAO,2CAC3B,IACAqjB,SAAU,MACS,IAAI,KACZN,kBAAkB,EAE7Ble,QAAUmB,IACNvE,QAAQD,MAAMwE,EAAI,IAGzBsd,OAAOvD,GAAU9X,QAC1B,IACAC,YAAW,KACPma,GAAc,G,KAI3B,CAACnC,GAAgB3e,GAAMoe,EAAoBC,EAASC,EAAkBW,GAAwBtS,KAGjG,IAAAvH,YAAU,KACFuH,KACIqP,cAAe,EAAfA,GAAiBgG,sBAAsBhG,cAAe,EAAfA,GAAiBiG,YACxD7C,IAA4B,GAE5BA,IAA4B,G,GAGrC,CAACpD,cAAe,EAAfA,GAAiBiG,WAAYjG,cAAe,EAAfA,GAAiBgG,mBAAoB5C,GAA6BzS,KAGnG,IAAAvH,YAAU,K,MACFkZ,GAAyD,IAAnB,QAAlB,EAAAte,cAAI,EAAJA,GAAMgD,oBAAY,eAAEC,gBAAsBmb,EAC9DY,IAAoB,GAEpBA,IAAoB,E,GAEzB,CAACV,EAAoC,QAAlB,EAAAte,cAAI,EAAJA,GAAMgD,oBAAY,eAAEC,cAAemb,IAEzD,MAAMsD,GAAkCQ,IAAa,0CACjD,IACI,MAAMC,QAAe,SAAwBD,GAC7C,GAAIC,GAAUA,EAAOniB,MAAQmiB,EAAOniB,KAAK4hB,MACrC,OAAOO,EAAOniB,I,CAEpB,MAAOC,GAELC,QAAQC,IAAIF,E,CAEpB,IAkBA,GAAIgc,GACA,OACI,8BAAKzd,UAAU,UAAU0P,MAAO,CAAEkU,WAAY,SAAQ,WAClD,+BAAK5jB,UAAU,oBAAkB,YAC7B,SAAC6jB,EAAA,EAAU,KACX,8BAAKnU,MAAO,CAAEE,UAAW,SAAUkU,QAAS,gBAAe,UACtDnkB,GACG,gHAQxB,GAAI4R,GAAM9P,MACN,OAAO,kEAGX,GAAI0M,GAA+BpN,MAAdwQ,GAAM/P,KACvB,OAAO,KAKX,OACI,8BAAKxB,UAAU,UAAUqX,GAAG,WAAS,WACjC,+BACIrX,UAAW,gDACP0X,GACM,aACsC,KAApB,QAAlB,EAAAlW,cAAI,EAAJA,GAAMgD,oBAAY,eAAEC,eACpB,WACA,cAEV4S,GAAG,WAAS,WAEXlJ,IACG,8BAAInO,UAAU,4CAA0C,WACnDL,GAAE,iBAAgB,MAAe,QAAX,EAAA4R,cAAK,EAALA,GAAO/P,YAAI,eAAEgD,aAAapB,WAA6B,QAAlB,EAAA5B,cAAI,EAAJA,GAAMgD,oBAAY,eAAEC,eAAe,KACnF,QAAX,EAAA8M,cAAK,EAALA,GAAO/P,YAAI,eAAEgD,aAAapB,WAA6B,QAAlB,EAAA5B,cAAI,EAAJA,GAAMgD,oBAAY,eAAEC,eAAgB,EACpE9E,GAAE,QACFA,GAAE,SAAQ,SAItBwO,GAAiB3M,IAAQA,GAAKgD,cAAqD,IAAnB,QAAlB,EAAAhD,cAAI,EAAJA,GAAMgD,oBAAY,eAAEC,iBAChE,8BAAIzE,UAAU,4CAA0C,WACnDL,GAAE,iBAAgB,KAAsB,QAAlB,EAAA6B,cAAI,EAAJA,GAAMgD,oBAAY,eAAEC,cAAe,KACvC,QAAlB,EAAAjD,cAAI,EAAJA,GAAMgD,oBAAY,eAAEC,eAAgB,EAAI9E,GAAE,QAAUA,GAAE,SAAQ,QAItEwO,IACG,+BACI,SAACoO,GAAS,CAACpO,cAAeA,MAIjCuJ,KACG,iCACMvJ,IACE,SAAC,EAAA4V,cAAa,eAACC,kBAAmB,IAAM,MAAI,WACxC,SAAC,GAAgB,CACbxiB,KAAMA,GACNgW,YAAagI,GAAgBhe,IAC7BiW,4BAA6BiI,GAAyBle,UAIhE2M,IAAiBjF,cAAe,EAAfA,GAAiB5F,gBAChC,+BAAKtD,UAAU,4DAA0D,YACrE,+BAAKA,UAAU,4BAA0B,YACrC,+BAAMA,UAAU,UAAQ,UAAEL,GAAE,0BAC5B,iCACIK,UAAU,uCACVgM,QAAS,KACLyF,GAAS7D,QAAQ,GACpB,UAEAjO,GAAE,kBAGX,8BAAKK,UAAU,6BAA2B,UACR,QAA7B,EAAAkJ,cAAe,EAAfA,GAAiB5F,oBAAY,eAAEyV,uBAMnD3P,KACG,iCAGI,+BACIpJ,YACIwB,cAAI,EAAJA,GAAMwB,YAzEd,CAAC,SAAU,SAAU,SAAU,SAAU,UAyEFihB,SAA2B,QAAlB,EAAAziB,cAAI,EAAJA,GAAMwB,UAAU,UAAE,eAAEM,aAAaC,QACnE,GACA,cAHC,kDAIqC,YAEhD,8BAAKvD,UAAU,4BAA0B,WACrC,0BAAOL,GAAE,kBAEb,+BAAKK,UAAU,6BAA2B,WACrCmO,IAAiB,0BAAOqP,cAAe,EAAfA,GAAiB0G,uBACxC/V,IAAiB,0BAAyB,QAAlB,EAAA3M,cAAI,EAAJA,GAAMgD,oBAAY,eAAE0f,+BAIrD1iB,cAAI,EAAJA,GAAMgD,aAAa2f,wBAAyB,IAC7C3iB,cAAI,EAAJA,GAAMgD,aAAa2f,0BACf3iB,cAAI,EAAJA,GAAMgD,aAAa4f,gCACnB,+BACI,+BAAKpkB,UAAU,kDAAgD,YAC3D,+BAAKA,UAAU,4BAA0B,YACrC,+BAAMA,UAAU,iBAAe,UAAEL,GAAE,0BACnC,gCAAMK,UAAU,mCAAiC,WAC5C,KACD,+BAAMA,UAAU,YAAU,UAAEL,GAAE,gBAC9B,UAAC,MAAO,YACJ,UAAC,MAAc,YACX,+BAAMK,UAAU,mBAAiB,UAC5BL,GAAE,2CAEP,SAAC6S,EAAA,EAAc,QAEnB,UAAC,MAAc,eAAC6R,SAAS,WAAS,WAC7B1kB,GAAE,QAAO,IAAG6B,cAAI,EAAJA,GAAMgD,aAAa2S,iBAAgB,IAAGxX,GAAE,QAAS,KAC9D,uBAAIA,GAAE,iCAAoC,IACzCA,GAAE,yCACH,SAAC,MAAY,KACb,SAAC,MAAY,oBAK7B,8BAAKK,UAAU,6BAA2B,WACtC,gCAAMA,UAAU,iBAAe,eAAGwB,cAAI,EAAJA,GAAMgD,aAAa2S,8BAIjE,MAEJ,+BAAKnX,UAAU,kDAAgD,YAC3D,8BAAKA,UAAU,4BAA0B,WACrC,0BAAOL,GAAE,kBAEb,+BAAKK,UAAU,6BAA2B,WACrCmO,IAAiB,0BAAOqP,cAAe,EAAfA,GAAiBzN,oBACxC5B,IAAiB,0BAAO3M,cAAI,EAAJA,GAAMgD,aAAauL,4BA4BnD5B,IACE,+BACoB,QAAf,EAAA3M,cAAI,EAAJA,GAAMwV,iBAAS,eAAEsN,WAAW,WACzB,+BACI,+BAAKtkB,UAAU,kDAAgD,YAC3D,8BAAKA,UAAU,4BAA0B,WACrC,+BAAMA,UAAU,iBAAe,UAAEwB,cAAI,EAAJA,GAAMwV,iBAE3C,8BAAKhX,UAAU,6BAA2B,WACtC,gCAAMA,UAAU,iBAAe,eACzBwB,cAAI,EAAJA,GAAMgD,aAAa2S,gCAShDhJ,IAAiBqP,cAAe,EAAfA,GAAiB+G,gBAAiB,IAChD,+BAAKvkB,UAAU,kDAAgD,YAC3D,8BAAKA,UAAU,4BAA0B,UACC,KAArCwd,cAAe,EAAfA,GAAiBoB,mBACmB,OAArCpB,cAAe,EAAfA,GAAiBoB,mBACqB,KAArCpB,cAAe,EAAfA,GAAiBoB,oBACmB,QAAjC,EAAApB,cAAe,EAAfA,GAAiBoB,wBAAgB,eAAE0F,WAAW,UAC9C,+BAAMtkB,UAAU,iBAAe,UAAEL,GAAE,gBAEnC,+BAAMK,UAAU,iBAAe,UAAEwd,cAAe,EAAfA,GAAiBoB,wBAG1D,8BAAK5e,UAAU,6BAA2B,UACrCwd,GAAgB+G,eAAiB,IAC9B,gCAAMvkB,UAAU,iBAAe,eAAGwd,cAAe,EAAfA,GAAiBgH,qBAMjErW,IAAmC,QAAlB,EAAA3M,cAAI,EAAJA,GAAMgD,oBAAY,eAAE+f,gBAAiB,IACpD,+BAAKvkB,UAAU,kDAAgD,YAC3D,8BAAKA,UAAU,4BAA0B,UACjB,KAAnBwB,cAAI,EAAJA,GAAMwV,YACa,KAAnBxV,cAAI,EAAJA,GAAMwV,aAAkC,QAAf,EAAAxV,cAAI,EAAJA,GAAMwV,iBAAS,eAAEsN,WAAW,UAClD,+BAAMtkB,UAAU,iBAAe,UAAEL,GAAE,gBAEnC,+BAAMK,UAAU,iBAAe,UAAEwB,cAAI,EAAJA,GAAMwV,iBAG/C,8BAAKhX,UAAU,6BAA2B,WACtC,gCAAMA,UAAU,iBAAe,eAAqB,QAAlB,EAAAwB,cAAI,EAAJA,GAAMgD,oBAAY,eAAEggB,oBAKjErW,MAAmBqP,cAAe,EAAfA,GAAiBiH,YACjC,+BAAKzkB,UAAU,kDAAgD,YAC3D,8BAAKA,UAAU,4BAA0B,WACrC,+BAAMA,UAAU,iBAAe,UAAEL,GAAE,oBAEvC,8BAAKK,UAAU,6BAA2B,UACrCmO,IACG,gCAAMnO,UAAU,iBAAe,eAAGwd,cAAe,EAAfA,GAAiBiH,qBAMjEtW,MAAmB3M,cAAI,EAAJA,GAAMgD,aAAaigB,YACpC,+BAAKzkB,UAAU,kDAAgD,YAC3D,8BAAKA,UAAU,4BAA0B,WACrC,+BAAMA,UAAU,iBAAe,UAAEL,GAAE,oBAEvC,8BAAKK,UAAU,6BAA2B,WACtC,gCAAMA,UAAU,iBAAe,eAAqB,QAAlB,EAAAwB,cAAI,EAAJA,GAAMgD,oBAAY,eAAEigB,qBAKlE,+BAAKzkB,UAAU,kDAAgD,YAC3D,+BAAKA,UAAU,4BAA0B,WACpCmO,IACG,iCACI,0BAAOxO,GAAE,YACT,iCAAS6d,cAAe,EAAfA,GAAiBkH,iBAAgB,WAGhDvW,IACE,iCACI,0BAAOxO,GAAE,iBACT,8CACe,mCACXK,UAAU,oBACVwI,MAAOwY,GACP/H,SAAWzN,IACP,MAAMmZ,EAAMnZ,EAAElD,OAAOE,MACrBmZ,GAAe/T,OAAO,CAClBgU,WAAYpW,EAAElD,OAAOE,MACrB/F,UAAYjB,IACR0e,GAAc1e,GACdyf,GAAe0D,EAAI,GAEzB,GACL,UAEAhF,GAASzN,KAAI,CAACyN,EAAUvN,KACrB,iCAA0B5J,MAAOmX,EAAStI,IAAE,UACvCsI,EAAStI,KADDsI,EAAStI,iBAS1C,+BAAKrX,UAAU,6BAA2B,WACrCmO,IAAiB,0BAAOqP,cAAe,EAAfA,GAAiBoH,YACxCzW,IACE,8BACK6S,IAAeE,IACZ,0BAAOjB,cAAU,EAAVA,GAAY2E,YAEnB,0BAAyB,QAAlB,EAAApjB,cAAI,EAAJA,GAAMgD,oBAAY,eAAEogB,wBAStDzW,IACG,+BAAKnO,UAAU,kDAAgD,YAC3D,8BAAKA,UAAU,4BAA0B,WACpCwd,cAAe,EAAfA,GAAiBgG,sBAAsBhG,cAAe,EAAfA,GAAiBiG,aACrD,+BAAMzjB,UAAU,6CAA2C,UAAEL,GAAE,iBAE/D,+BAAMK,UAAU,6CAA2C,UAAEL,GAAE,gBAGvE,8BAAKK,UAAU,6BAA2B,WACtC,+BAAMA,UAAU,6CAA2C,UACtDwd,cAAe,EAAfA,GAAiBiG,sBAMhCtV,IAAmC,QAAlB,EAAA3M,cAAI,EAAJA,GAAMgD,oBAAY,eAAEC,eAAgB,IACnD,+BAAKzE,UAAU,kDAAgD,YAC3D,8BAAKA,UAAU,4BAA0B,WACrC,+BAAMA,UAAU,6CAA2C,UAAEL,GAAE,gBAEnE,8BAAKK,UAAU,6BAA2B,UACrCghB,IAAeE,IACZ,+BAAMlhB,UAAU,6CAA2C,UACtDigB,cAAU,EAAVA,GAAYwD,eAGjB,+BAAMzjB,UAAU,6CAA2C,UACpC,QAAlB,EAAAwB,cAAI,EAAJA,GAAMgD,oBAAY,eAAEif,qBAQxCtV,IAAiBqP,cAAe,EAAfA,GAAiBgG,sBAAsBhG,cAAe,EAAfA,GAAiBiG,cACtE,+BAAKzjB,UAAU,yBAAuB,YAClC,+BAAKA,UAAU,kDAAgD,YAC3D,8BAAKA,UAAU,4BAA0B,UAAEL,GAAE,sBAC7C,8BAAKK,UAAU,6BAA2B,UAAEwd,cAAe,EAAfA,GAAiBgG,2BAEjE,+BAAKxjB,UAAU,kDAAgD,YAC3D,8BAAKA,UAAU,4BAA0B,UAAEL,GAAE,gCAC7C,8BAAKK,UAAU,6BAA2B,UAAEwd,cAAe,EAAfA,GAAiBqH,gCAKxE1W,GACG,+BACI,SAACoP,GAAa,CAACpP,cAAeA,OAGlC,+BACI,SAACiL,GAAO,CACJxF,oBAAqBA,EACrByF,kBAAmBA,EACnBE,qBAAsBA,EACtBE,4BAA6BA,MAKxCtL,IACG,iCAEI,iCACInO,UAAU,iNACV+L,KAAK,SAAQ,aACDpM,GAAE,uBACdkO,SAAU+R,GAAsBe,GAChC3U,QAAS,KACL8V,IAAY,GACf,WAED,4BACKniB,GAAE,uBAAsB,MACb,QAAX,EAAA4R,cAAK,EAALA,GAAO/P,YAAI,eAAEgD,aAAapB,WAA6B,QAAlB,EAAA5B,cAAI,EAAJA,GAAMgD,oBAAY,eAAEC,eAAe,KAC7D,QAAX,EAAA8M,cAAK,EAALA,GAAO/P,YAAI,eAAEgD,aAAapB,WAA6B,QAAlB,EAAA5B,cAAI,EAAJA,GAAMgD,oBAAY,eAAEC,eAAgB,EACpE9E,GAAE,QACFA,GAAE,SAAQ,WAKxB,iCACIK,UAAU,iLACV+L,KAAK,SAAQ,aACDpM,GAAE,uBACdqM,QAAS,KACL8U,IAAoB,EAAK,GAC5B,WAED,0BAAOnhB,GAAE,gCAKnBwO,IAAmC,QAAlB,GAAA3M,cAAI,EAAJA,GAAMgD,oBAAY,iBAAEC,eAAgB,IACnD,iCACIzE,UAAU,4MACV+L,KAAK,SACL8B,SAAU+R,EAAkB,aAChBjgB,GAAE,uBACdqM,QAAS,KACL8V,IAAY,GACf,WAED,4BACKniB,GAAE,uBAAsB,KAAI6B,cAAI,EAAJA,GAAMgD,aAAaC,cAAe,KAC9DjD,cAAI,EAAJA,GAAMgD,aAAaC,eAAgB,EAAI9E,GAAE,QAAUA,GAAE,SAAQ,WAK1E,gBACI0X,GAAG,YACHyN,IAAK9E,GACLhgB,UAAWugB,GAAmB,SAAW,2DAG3CpS,IAAmC,QAAlB,GAAA3M,cAAI,EAAJA,GAAMgD,oBAAY,iBAAEC,eAAgB,IACnD,+BAAKzE,UAAU,2CAAyC,YACpD,yBAAML,GAAE,sCACR,yBAAMA,GAAE,mCAGfkhB,KACG,+BACI,UAACjO,EAAA,EAAM,eACHC,MAAOlT,GAAE,iBACT2O,aAAa,eACbtE,OAAO,OACP+a,oBAAoB,EACpBrV,MAAO,CAAEsV,OAAQ,QACjBlS,aAAc,KACVgO,IAAqBD,GAAiB,GACzC,YAED,uBACKlhB,GACG,0KAGR,+BAAKK,UAAU,0FAAwF,YACnG,iCACI+L,KAAK,SAAQ,aACDpM,GAAE,uBACdK,UAAU,oQACVgM,QAAS,KACLzL,GAAO0kB,wB1B3nB3C7kB,OAAOC,cAAgBD,OAAOC,eAAiB,CAAC,EAChDD,OAAOC,cAAcwc,KAAOzc,OAAOC,cAAcwc,MAAQ,CAAC,EAC1Dzc,OAAOC,cAAcwc,KAAKC,UAAY,4BACtC1c,OAAOC,cAAc6c,KAAO9c,OAAOC,cAAc6c,MAAQ,CAAC,EAC1D9c,OAAOC,cAAc6c,KAAKG,aAAe,sB0BynBLjd,OAAO+M,SAASlN,KAAO,+BACvB6gB,IAAqBD,GAAiB,GACzC,UAEAlhB,GAAE,2BAEP,iCACIoM,KAAK,SAAQ,aACDpM,GAAE,gBACdK,UAAU,8OACVgM,QAAS,KACL8U,IAAqBD,GAAiB,GACzC,UAEAlhB,GAAE,mCAQlC,EEhrBE,MAAMulB,GAAc,K,oBAEvB,MAAM3kB,EAAiB,IAAI,KACpB4N,EAAegX,IAAoB,IAAAne,WAAS,IAC5C4Y,EAAoBlM,IAAyB,IAAA1M,WAAS,IACtD6Y,EAASlM,IAAc,IAAA3M,WAAS,IAChC8Y,EAAkBlM,IAAuB,IAAA5M,WAAS,IAClD8J,EAAYsU,IAAiB,IAAApe,WAAS,IACtC+Y,EAA6BtG,IAA+B,IAAAzS,WAAS,IACrEqS,EAAmBE,IAAwB,IAAAvS,WAAS,IAErD,KAAEtH,EAAI,EAAEC,IAAM,EAAAC,EAAA,GAAe,eACnCF,EAAKG,kBAAkB,KAAM,cAAe,EAAAC,IAAI,GAAM,GACtDJ,EAAKG,kBAAkB,KAAM,cAAe,EAAAE,IAAI,GAAM,GAEtD,MAAMyR,GAAkB,EAAA3K,EAAA,KAClB1G,EAAOG,IACP+kB,GAAa,EAAAC,EAAA,KACb5T,EAAiB3M,EAAqC,QAAvB,EAAAxE,aAAM,EAANA,EAAQI,uBAAe,eAAEC,IAAKL,aAAM,EAANA,EAAQG,UACrE6Q,EAAQ9I,EAAS+I,EAAiBjR,EAAOoJ,mBA6C/C,OA3CA,IAAA/C,YAAU,KAE0B7F,MAA5BR,EAAOoJ,mBAAkCpJ,EAAOoJ,kBAAkB1I,OAAS,EAC3EkkB,GAAiB,GAEjBA,GAAiB,E,GAEtB,CAAC5kB,EAAOoJ,qBAEX,IAAA/C,YAAU,K,QACNwe,EAAc5F,GAAgBrf,EAAKqB,OACMT,OAAb,QAAxB,EAAU,QAAV,EAAAZ,aAAI,EAAJA,EAAMqB,YAAI,eAAEgD,oBAAY,eAAEmW,SAC1B/G,GAAoB,GAEpBA,GAAoB,E,GAEzB,CAACzT,KA4BA,+BAAKH,UAAU,8CAA4C,YACvD,SAACkT,GAAe,CAACpC,WAAYA,EAAY3C,cAAeA,KACxD,+BAAKnO,UAAU,gBAAc,WACxB8Q,IAAe3C,IAAiB,SAAC3O,EAAQ,CAACC,OAAQ+R,KACjDV,IAAe3C,IACb,iCACI,6BAAInO,UAAU,cAAY,UAAEL,EAAE,yBAC9B,4BAAGK,UAAU,0BAAwB,UAChCL,EACG,uHAMdwO,IACE,+BAE4B,QAAvB,EAAS,QAAT,EAAAhO,EAAKqB,YAAI,eAAEgD,oBAAY,eAAEC,eAAgB,IACtC,iCACIzE,UAAU,6DACV+L,KAAK,SACL8B,SAAU+R,EACV5T,QAAS,KACD6T,GAAWD,IAGVG,EAGDxG,GAAqB,GAFrBnZ,OAAO+M,SAASlN,KAAO,yB,EAK9B,aACWN,EAAE,wBAAsB,WAEpC,4BACKA,EAAE,uBAAsB,KAA2B,QAAvB,EAAS,QAAT,EAAAQ,EAAKqB,YAAI,eAAEgD,oBAAY,eAAEC,cAAe,KACzD,QAAX,EAAA8M,aAAK,EAALA,EAAO/P,YAAI,eAAEgD,aAAapB,WAAkC,QAAvB,EAAS,QAAT,EAAAjD,EAAKqB,YAAI,eAAEgD,oBAAY,eAAEC,eAAgB,EACzE9E,EAAE,QACFA,EAAE,SAAQ,aAQpC,SAAC2G,EAAkB,KAEnB,SAACmN,GAAO,CACJC,sBAAuBA,EACvBvF,cAAeA,EACfyF,oBAAqBA,EACrBD,WAAYA,KAGhB,SAAC,EAAK,CAACxF,cAAeA,EAAe2C,WAAYA,KAC/C3C,IACE,4BAAGlO,KAAK,IAAID,UAAU,oBAAkB,UACnCL,EAAE,4BAIf,8BAAKK,UAAU,gBAAc,WACzB,SAAC,EAAA+jB,cAAa,eAACC,kBAAmBuB,IAAa,WAC3C,SAAC,GAAY,CACTpX,cAAeA,EACfyR,mBAAoBA,EACpBC,QAASA,EACTC,iBAAkBA,EAClBlM,oBAAqBA,EACrBF,sBAAuBA,EACvBqM,4BAA6BA,EAC7BtG,4BAA6BA,EAC7BJ,kBAAmBA,EACnBE,qBAAsBA,UAG3B,IACN7H,EAAeL,WAAagU,GAAcllB,EAAKkR,WAC5C,+BAAKrR,UAAU,gBAAgB0P,MAAO,CAAE8V,QAAS,UAAS,YACtD,gBAAKxlB,UAAU,sBACf,8BAAKA,UAAU,YAAU,WACrB,SAAC6jB,EAAA,EAAU,WAGnB,QAEX,EAEC0B,GAAgB,KAEd,8BAAKvlB,UAAU,UAAU0P,MAAO,CAAEkU,WAAY,SAAQ,WAClD,8BAAK5jB,UAAU,oBAAkB,WAC7B,+BAAK0P,MAAO,CAAEE,UAAW,SAAUkU,QAAS,gBAAe,+CAEvD,kBAAM,qCC5KpB,GAAgB,KAEd,8BAAK9jB,UAAU,gBAAc,WACzB,+BAAKA,UAAU,gBAAc,YACzB,6BAAIA,UAAU,GAAG0P,MAAO,CAAE+V,SAAU,SAAQ,uCAG5C,iCAAQzlB,UAAU,GAAGgM,QAAS,IAAM5L,OAAO+M,SAASoL,OAAOnY,OAAO+M,SAASuY,SAAO,8BAQ5FC,GAAiB,KACnB,MAAMC,EAAS,IAAI,IAAY,CAC3BC,eAAgB,CACZC,QAAS,CACLC,UAAW,MACXnO,UAAW,QAIjBoO,GAAY,OAA2B,CACzC5jB,QAAShC,OAAO6lB,eAGpB,OACI,SAAC,EAAAlC,cAAa,eAACC,kBAAmB,IAAa,WAC3C,UAACkC,EAAA,EAA0B,eAACN,OAAQA,EAAQO,eAAgB,CAAEH,cAAW,YACrE,SAAC,IAAkB,CAACI,eAAe,KACnC,SAAClB,GAAW,UAGvB,EAIC,GAAU7gB,SAASgiB,eADd,gBAELC,GAAO,aAAoB,IAC7B,IACAA,GAAK/C,QACD,SAAC,aAAgB,WACb,SAACoC,GAAc,OC5BZ,MAAMY,WAAoB,EAAAC,UACrC,WAAAC,CAAY3c,GACR4c,MAAM5c,GAGV,KAAA6c,MAAQ,CACJC,gBAAiB,KACjBxb,YAAa,KACbyb,OAAQ,KACRC,gBAAgB,EAChBC,YAAY,EACZC,aAAc,KACdC,0BAA2B,MAqG/B,KAAAC,WAAa,IAE+B,UADjB,IAAI,KACbrmB,SAASqT,cACjB,kDAAkDiT,KAAKR,MAAMM,6BAC7D,yEAAyEE,KAAKR,MAAMM,6BAE9F,KAAAG,YAAc,IAE8B,UADjB,IAAI,KACbvmB,SAASqT,cACjB,wCACA,sDAGV,KAAA2C,cAAgB,KACZsQ,KAAKE,SAAS,CAAEN,YAAY,GAAQ,EAGxC,KAAAO,eAAkBljB,IAGd,IAAImjB,GAAgB,EAChBC,EAAiBL,KAAKrd,MAAM1F,OAC5BA,IACAojB,EAAiBpjB,GAErB,IAAK,IAAI0Q,EAAI0S,EAAernB,KAAK6C,UAAU/B,OAAS,EAAG6T,GAAK,EAAGA,IAAK,CAiBhE,GAhBAyS,EAAeC,EAAernB,KAAK6C,UAAUkS,WAAWxP,I,MACpD,OACIA,EAAEpC,aAAaC,SAAWikB,EAAernB,KAAK6C,UAAU8R,GAAGxR,aAAaC,QACxEmC,EAAEpC,aAAamkB,mBACXD,EAAernB,KAAK6C,UAAU8R,GAAGxR,aAAamkB,kBAClD/hB,EAAEpC,aAAawJ,QAAU0a,EAAernB,KAAK6C,UAAU8R,GAAGxR,aAAawJ,OACvE,CAAC,SAAU,SAAU,WAAWmX,SAKR,QAJpB,EAAAuD,EAAernB,KAAKsD,SAChB+jB,EAAernB,KAAKsD,SAASyR,WAAWtG,GAC7BA,EAAErL,SAAWmC,EAAEpC,aAAaC,UAEzCmkB,gBAAgB,UAAE,eAAEC,aAE7B,KAGgB,GAAjBJ,EAAoB,CACpBJ,KAAKE,SACD,CACIP,gBAAgB,EAChBG,0BAA2BO,EAAernB,KAAKsD,SAASR,MACnDyC,GAAMA,EAAEnC,QAAUikB,EAAernB,KAAK6C,UAAUukB,GAAcpkB,OAAOI,SACxE8L,KACFuX,gBAAiBY,EAAernB,KAAK6C,UAAU8R,GAAGxR,aAClDujB,OAAQjL,SAAS4L,EAAernB,KAAK6C,UAAU8R,GAAGxR,aAAaC,OAAQ,MAE3E,KAEI4jB,KAAKS,qBACLT,KAAKU,cAAc,IAG3B,K,CAEAV,KAAKE,SAAS,CACVP,gBAAgB,EAChBF,gBAAiBY,EAAernB,KAAK6C,UAAU8R,GAAGxR,aAClDujB,OAAQjL,SAAS4L,EAAernB,KAAK6C,UAAU8R,GAAGxR,aAAaC,OAAQ,K,GAKvF,KAAAukB,mBAAqB,KACjBzjB,SAAS8d,iBACL,YACA,SAAU3W,GAEoBzK,MADCsD,SAASgiB,eAAe,oBAI/Cc,KAAKG,eAAe9b,EAAEpH,OAE9B,EAAE2jB,KAAKZ,OACP,EACH,CA9LL,CAYA,kBAAAS,GAKI,MAAMI,EAAU5nB,OAAO+M,SAAS8a,SAC1BC,EALe,CAAC,aAAc,iBAAkB,mBAErC5V,QAGqB0V,IAHD,EAOrC,IAAUtd,EAAEc,EACgB7L,EAAEwoB,EAAEziB,EAAxB0iB,EAASje,EADPO,EAzCD,MAyCGc,EAHQ0c,EAAS,OAAS,UAI9BE,EAAEhoB,OAAO+J,EAAE9F,SACf+jB,EAAEC,OAAO1oB,EAAEyoB,EAAEC,QAAQ,WAAW1oB,EAAE2oB,EAAE3oB,EAAE2oB,GAAG,GAAI3oB,EAAE2oB,EAAExS,KAAKyS,UAAW,EACjE5oB,EAAE,OAAQ,OAAF,QAAG6oB,SAAU9d,EAAG+d,YAAajd,GAOf,CAACkd,eAAc,KANrChjB,EAAEyE,EAAEwe,qBAAqB,UAAU,IACnCR,EAAEhe,EAAE8X,cAAc,WAChBlW,KAAK,kBAAkBoc,EAAES,OAAM,EACjCT,EAAEjZ,IAAI,mBAAyB,QAAJ1D,GAAe,YAAJA,EAAc,IAAIA,EAAE,IAAK,2BAA2Bd,EAAE,wBAC5FhF,EAAEmjB,WAAWC,aAAaX,EAAEziB,EAIpC,CAEA,gBAAAqjB,GACI,MAAMC,EAAe3kB,SAASgiB,eAAe,eACzC2C,GACIA,EAAaC,UAAUC,SAAS,WAChCF,EAAaC,UAAUE,OAAO,SAG1C,CAEA,uBAAAC,CAAwBxC,EAAiBxb,GAErC,IAAIuY,EAAS,GACb,MAAM0F,EAAoB,GAe1B,OAdyB,MAArBje,EAAYke,OACZle,EAAYke,MAAM9Q,SAAS+Q,IACvB5F,EAASvY,EAAYuD,KAAKkD,QACrBsD,GACGA,EAAKqU,iBAAmBD,EAAKE,aAC7BtU,EAAKsS,kBAAoBb,EAAgBa,kBACzCtS,EAAKtG,UAAY,IAErB8U,EAAO1iB,OAAS,GAChBooB,EAAkBvT,KAAK6N,EAAO,GAAGpU,K,IAKtC8Z,EAAkBK,KAAK,IAClC,CACA,YAAA7B,GACI,MAAMtnB,EAAiB,IAAI,IAC3B,IAAIopB,EAAS,KAEb,MAAM9C,EAASM,KAAKR,MAAMC,gBAAgBrjB,OAAOmV,QAAQ,KAAM,IAEzDkR,EAAazC,KAAKrd,MAAM1F,OAAOjE,KAAKsD,SAASoO,QAAQnM,GAChDA,EAAEnC,QAAUsjB,IAIO9lB,MAA1BR,EAAOI,iBACPJ,EAAOI,gBAAgBK,MAAMC,OAAS,GACtCV,EAAOI,gBAAgBC,IAAM,IAE7B+oB,EAASppB,EAAOI,gBAAgBC,KAEpC,MAAMomB,EAAe,CACjB5O,SAAU,CAAC,GAEXuR,IACA3C,EAAqB,OAAI2C,EACzB3C,EAAyB,aAAI2C,GAEjC3C,EAAqB,OAAIzmB,EAAOM,SAEhCmmB,EAAa5O,SAASyO,GAAU,CAC5BgD,eAAgB1C,KAAKiC,wBAAwBjC,KAAKR,MAAMC,gBAAiBgD,EAAW,KAEpFzC,KAAKR,MAAMC,gBAAgBpX,QAC3BwX,EAAa5O,SAASyO,GAAiB,QAAIM,KAAKR,MAAMC,gBAAgBpX,OAE1E2X,KAAKE,SAAS,CAAEL,aAAcA,GAAgB5mB,OAAOioB,OAAO,YAAarB,IACrE5mB,OAAOioB,QACPjoB,OAAOioB,OACH,QACA,qBACA,eACA,SAAU1lB,GACNwkB,KAAKE,SAAS,CAAEN,YAAY,GAAQI,KAAK4B,mBAC7C,EAAEhB,KAAKZ,MAGnB,CAoFA,iBAAA2C,GAGI3C,KAAKG,eAAe,MACpBH,KAAKW,oBACT,CAEA,MAAAvE,GACI,MAAMwG,EAAS,CACXC,mBAAoB,CAChBxE,QAAS2B,KAAKR,MAAMI,WAAa,OAAS,OAC1CnD,WAAY,OACZxM,OAAQ,oBACR0M,QAAS,aAEbmG,cAAe,CACXlgB,MAAO,OACPC,OAAQ,OACRkgB,YAAa,QAEjBC,iBAAkB,CAAE1E,SAAU,OAAQrV,WAAY,QAClDga,gBAAiB,CAAEC,eAAgB,YAAajT,OAAQ,MAE5D,OACI,8BACK+P,KAAKR,MAAMG,iBACR,+BAAKpX,MAAOqa,EAAOC,mBAAoBhqB,UAAU,eAAa,YAC1D,8BAAK0P,MAAOqa,EAAOE,eAAa,WAC5B,+BACIlgB,MAAM,MACNC,OAAO,MACPC,QAAQ,mBACRyF,MAAO,CAAE1F,OAAQ,OAAQD,MAAO,SAAQ,YAExC,iBAAMK,KAAK,OAAOD,EAAE,0BACpB,iBACIA,EAAE,oKACFC,KAAK,oBAIjB,+BAAKsF,MAAOqa,EAAOI,kBAAgB,YAC/B,uBAAIhD,KAAKD,gBACT,+BAAKxX,MAAO,CAAE8V,QAAS,OAAQ8E,WAAY,SAAUC,SAAU,SAAQ,YACnE,+BAAM7a,MAAO,CAAEwa,YAAa,SAAQ,UAAG/C,KAAKC,kBAC5C,0BACKD,KAAKR,MAAMC,kBACR,gBACI5mB,UAAU,qBAAoB,eAChBmnB,KAAKR,MAAME,OAAM,eACjBM,KAAKR,MAAMC,gBAAgBpX,mBAM7D,iCAAQxP,UAAU,qBAAqBgM,QAAS,IAAMmb,KAAKtQ,iBAAe,WACtE,SAAC,IAAY,YAMrC,ECxRJxS,SAAS8d,iBACL,WACA,SAAU3W,GACN,MAAMgf,EAAaC,aAAY,WAC3B,MAAMC,EAAqBrmB,SAASgiB,eAAe,mBACnD,GAA0BtlB,MAAtB2pB,EAAiC,CACjC,MAAMpE,EAAO,aAAoBoE,GACjCC,cAAcH,GACdlE,EAAK/C,QACD,SAAC,aAAgB,WACb,SAACgD,GAAW,CAACniB,OAAQoH,EAAEpH,W,CAIvC,GAAG,IACP,EAAE2jB,UAAK,IACP,G,+DC4GG,MAAM6C,G,mBChIbC,EAAOC,QAAUC,M,GCCbC,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBnqB,IAAjBoqB,EACH,OAAOA,EAAaL,QAGrB,IAAID,EAASG,EAAyBE,GAAY,CAGjDJ,QAAS,CAAC,GAOX,OAHAM,EAAoBF,GAAUG,KAAKR,EAAOC,QAASD,EAAQA,EAAOC,QAASG,GAGpEJ,EAAOC,OACf,CAGAG,EAAoBK,EAAIF,EvCzBpBnsB,EAAW,GACfgsB,EAAoBM,EAAI,SAAS5H,EAAQ6H,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,IACnB,IAAS9W,EAAI,EAAGA,EAAI7V,EAASgC,OAAQ6T,IAAK,CACrC0W,EAAWvsB,EAAS6V,GAAG,GACvB2W,EAAKxsB,EAAS6V,GAAG,GACjB4W,EAAWzsB,EAAS6V,GAAG,GAE3B,IAJA,IAGI+W,GAAY,EACPC,EAAI,EAAGA,EAAIN,EAASvqB,OAAQ6qB,MACpB,EAAXJ,GAAsBC,GAAgBD,IAAapT,OAAOyT,KAAKd,EAAoBM,GAAGS,OAAM,SAAS1M,GAAO,OAAO2L,EAAoBM,EAAEjM,GAAKkM,EAASM,GAAK,IAChKN,EAASS,OAAOH,IAAK,IAErBD,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACb5sB,EAASgtB,OAAOnX,IAAK,GACrB,IAAIpK,EAAI+gB,SACE1qB,IAAN2J,IAAiBiZ,EAASjZ,EAC/B,CACD,CACA,OAAOiZ,CArBP,CAJC+H,EAAWA,GAAY,EACvB,IAAI,IAAI5W,EAAI7V,EAASgC,OAAQ6T,EAAI,GAAK7V,EAAS6V,EAAI,GAAG,GAAK4W,EAAU5W,IAAK7V,EAAS6V,GAAK7V,EAAS6V,EAAI,GACrG7V,EAAS6V,GAAK,CAAC0W,EAAUC,EAAIC,EAwB/B,EwC5BAT,EAAoBiB,EAAI,SAASrB,GAChC,IAAIsB,EAAStB,GAAUA,EAAOuB,WAC7B,WAAa,OAAOvB,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAI,EAAoB9gB,EAAEgiB,EAAQ,CAAEtT,EAAGsT,IAC5BA,CACR,EvCPIhtB,EAAWmZ,OAAO+T,eAAiB,SAASpa,GAAO,OAAOqG,OAAO+T,eAAepa,EAAM,EAAI,SAASA,GAAO,OAAOA,EAAIqa,SAAW,EAQpIrB,EAAoBtrB,EAAI,SAAS6I,EAAO+jB,GAEvC,GADU,EAAPA,IAAU/jB,EAAQ2e,KAAK3e,IAChB,EAAP+jB,EAAU,OAAO/jB,EACpB,GAAoB,iBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAP+jB,GAAa/jB,EAAM4jB,WAAY,OAAO5jB,EAC1C,GAAW,GAAP+jB,GAAoC,mBAAf/jB,EAAMgkB,KAAqB,OAAOhkB,CAC5D,CACA,IAAIikB,EAAKnU,OAAOoU,OAAO,MACvBzB,EAAoBvgB,EAAE+hB,GACtB,IAAIE,EAAM,CAAC,EACXztB,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAI+I,EAAiB,EAAPqkB,GAAY/jB,EAAyB,iBAAXN,KAAyBhJ,EAAeoT,QAAQpK,GAAUA,EAAU/I,EAAS+I,GACxHoQ,OAAOsU,oBAAoB1kB,GAASsQ,SAAQ,SAAS8G,GAAOqN,EAAIrN,GAAO,WAAa,OAAO9W,EAAM8W,EAAM,CAAG,IAI3G,OAFAqN,EAAa,QAAI,WAAa,OAAOnkB,CAAO,EAC5CyiB,EAAoB9gB,EAAEsiB,EAAIE,GACnBF,CACR,EwCxBAxB,EAAoB9gB,EAAI,SAAS2gB,EAAS+B,GACzC,IAAI,IAAIvN,KAAOuN,EACX5B,EAAoB6B,EAAED,EAAYvN,KAAS2L,EAAoB6B,EAAEhC,EAASxL,IAC5EhH,OAAOyU,eAAejC,EAASxL,EAAK,CAAE0N,YAAY,EAAMzrB,IAAKsrB,EAAWvN,IAG3E,ECPA2L,EAAoBgC,EAAI,CAAC,EAGzBhC,EAAoBzf,EAAI,SAAS0hB,GAChC,OAAOtrB,QAAQurB,IAAI7U,OAAOyT,KAAKd,EAAoBgC,GAAGG,QAAO,SAASC,EAAU/N,GAE/E,OADA2L,EAAoBgC,EAAE3N,GAAK4N,EAASG,GAC7BA,CACR,GAAG,IACJ,ECPApC,EAAoBqC,EAAI,SAASJ,GAEhC,MAAY,CAAC,IAAM,YAAY,KAAO,gBAAgB,KAAO,cAAc,KAAO,WAAW,KAAO,kBAAkB,KAAO,SAAS,KAAO,aAAa,KAAO,aAAa,KAAO,YAAYA,GAAW,WAAa,CAAC,IAAM,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,wBAAwBA,GAAW,KACpf,ECHAjC,EAAoBsC,SAAW,SAASL,GAEvC,MAAO,OAAS,CAAC,KAAO,aAAa,KAAO,YAAYA,GAAW,MACpE,ECJAjC,EAAoBuC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOtG,MAAQ,IAAIuG,SAAS,cAAb,EAChB,CAAE,MAAOliB,GACR,GAAsB,iBAAXpL,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB6qB,EAAoB6B,EAAI,SAAS7a,EAAK0b,GAAQ,OAAOrV,OAAOsV,UAAUC,eAAexC,KAAKpZ,EAAK0b,EAAO,E5CAlGvuB,EAAa,CAAC,EACdC,EAAoB,aAExB4rB,EAAoB6C,EAAI,SAASC,EAAKC,EAAM1O,EAAK4N,GAChD,GAAG9tB,EAAW2uB,GAAQ3uB,EAAW2uB,GAAKjY,KAAKkY,OAA3C,CACA,IAAIhM,EAAQiM,EACZ,QAAWltB,IAARue,EAEF,IADA,IAAI4O,EAAU7pB,SAASskB,qBAAqB,UACpC7T,EAAI,EAAGA,EAAIoZ,EAAQjtB,OAAQ6T,IAAK,CACvC,IAAIqT,EAAI+F,EAAQpZ,GAChB,GAAGqT,EAAEgG,aAAa,QAAUJ,GAAO5F,EAAEgG,aAAa,iBAAmB9uB,EAAoBigB,EAAK,CAAE0C,EAASmG,EAAG,KAAO,CACpH,CAEGnG,IACHiM,GAAa,GACbjM,EAAS3d,SAAS4d,cAAc,WAEzBmM,QAAU,QACjBpM,EAAOqM,QAAU,IACbpD,EAAoBqD,IACvBtM,EAAOE,aAAa,QAAS+I,EAAoBqD,IAElDtM,EAAOE,aAAa,eAAgB7iB,EAAoBigB,GAExD0C,EAAO9S,IAAM6e,GAEd3uB,EAAW2uB,GAAO,CAACC,GACnB,IAAIO,EAAmB,SAASxhB,EAAMhJ,GAErCie,EAAOwM,QAAUxM,EAAOyM,OAAS,KACjCrmB,aAAaimB,GACb,IAAIK,EAAUtvB,EAAW2uB,GAIzB,UAHO3uB,EAAW2uB,GAClB/L,EAAO6G,YAAc7G,EAAO6G,WAAW8F,YAAY3M,GACnD0M,GAAWA,EAAQlW,SAAQ,SAASiT,GAAM,OAAOA,EAAG1nB,EAAQ,IACzDgJ,EAAM,OAAOA,EAAKhJ,EACtB,EACIsqB,EAAUlmB,WAAWomB,EAAiBxG,KAAK,UAAMhnB,EAAW,CAAEgL,KAAM,UAAWzD,OAAQ0Z,IAAW,MACtGA,EAAOwM,QAAUD,EAAiBxG,KAAK,KAAM/F,EAAOwM,SACpDxM,EAAOyM,OAASF,EAAiBxG,KAAK,KAAM/F,EAAOyM,QACnDR,GAAc5pB,SAASuqB,KAAKvM,YAAYL,EApCkB,CAqC3D,E6CxCAiJ,EAAoBvgB,EAAI,SAASogB,GACX,oBAAX+D,QAA0BA,OAAOC,aAC1CxW,OAAOyU,eAAejC,EAAS+D,OAAOC,YAAa,CAAEtmB,MAAO,WAE7D8P,OAAOyU,eAAejC,EAAS,aAAc,CAAEtiB,OAAO,GACvD,ECNAyiB,EAAoBa,EAAI,KCAxBb,EAAoB8D,EAAI,S9CyCpBzvB,EAAiB,SAAS4tB,GAC7B,OAAO,IAAItrB,SAAQ,SAASC,EAASC,GACpC,IAAI7B,EAAOgrB,EAAoBsC,SAASL,GACpC8B,EAAW/D,EAAoB8D,EAAI9uB,EACvC,GAlBmB,SAASA,EAAM+uB,GAEnC,IADA,IAAIC,EAAmB5qB,SAASskB,qBAAqB,QAC7C7T,EAAI,EAAGA,EAAIma,EAAiBhuB,OAAQ6T,IAAK,CAChD,IACIoa,GADAC,EAAMF,EAAiBna,IACRqZ,aAAa,cAAgBgB,EAAIhB,aAAa,QACjE,GAAe,eAAZgB,EAAI5mB,MAAyB2mB,IAAajvB,GAAQivB,IAAaF,GAAW,OAAOG,CACrF,CACA,IAAIC,EAAoB/qB,SAASskB,qBAAqB,SACtD,IAAQ7T,EAAI,EAAGA,EAAIsa,EAAkBnuB,OAAQ6T,IAAK,CACjD,IAAIqa,EAEJ,IADID,GADAC,EAAMC,EAAkBta,IACTqZ,aAAa,gBAChBluB,GAAQivB,IAAaF,EAAU,OAAOG,CACvD,CACD,CAKKE,CAAepvB,EAAM+uB,GAAW,OAAOntB,KA7CrB,SAASqrB,EAAS8B,EAAUntB,EAASC,GAC3D,IAAIwtB,EAAUjrB,SAAS4d,cAAc,QAErCqN,EAAQ/mB,IAAM,aACd+mB,EAAQvjB,KAAO,WAiBfujB,EAAQd,QAAUc,EAAQb,OAhBL,SAAS1qB,GAG7B,GADAurB,EAAQd,QAAUc,EAAQb,OAAS,KAChB,SAAf1qB,EAAMgI,KACTlK,QACM,CACN,IAAI0tB,EAAYxrB,IAAyB,SAAfA,EAAMgI,KAAkB,UAAYhI,EAAMgI,MAChEyjB,EAAWzrB,GAASA,EAAMuE,QAAUvE,EAAMuE,OAAOrI,MAAQ+uB,EACzD/oB,EAAM,IAAI5E,MAAM,qBAAuB6rB,EAAU,cAAgBsC,EAAW,KAChFvpB,EAAIwpB,KAAO,wBACXxpB,EAAI8F,KAAOwjB,EACXtpB,EAAIypB,QAAUF,EACdF,EAAQzG,WAAW8F,YAAYW,GAC/BxtB,EAAOmE,EACR,CACD,EAEAqpB,EAAQrvB,KAAO+uB,EAEf3qB,SAASuqB,KAAKvM,YAAYiN,EAE3B,CAoBEK,CAAiBzC,EAAS8B,EAAUntB,EAASC,EAC9C,GACD,EAEIvC,EAAqB,CACxB,KAAM,GAGP0rB,EAAoBgC,EAAE2C,QAAU,SAAS1C,EAASG,GAE9C9tB,EAAmB2tB,GAAUG,EAASvX,KAAKvW,EAAmB2tB,IACzB,IAAhC3tB,EAAmB2tB,IAFX,CAAC,KAAO,EAAE,KAAO,GAEsBA,IACtDG,EAASvX,KAAKvW,EAAmB2tB,GAAW5tB,EAAe4tB,GAASV,MAAK,WACxEjtB,EAAmB2tB,GAAW,CAC/B,IAAG,SAAS1hB,GAEX,aADOjM,EAAmB2tB,GACpB1hB,CACP,IAEF,E,W+C5DA,IAAIqkB,EAAkB,CACrB,KAAM,GAGP5E,EAAoBgC,EAAEnB,EAAI,SAASoB,EAASG,GAE1C,IAAIyC,EAAqB7E,EAAoB6B,EAAE+C,EAAiB3C,GAAW2C,EAAgB3C,QAAWnsB,EACtG,GAA0B,IAAvB+uB,EAGF,GAAGA,EACFzC,EAASvX,KAAKga,EAAmB,QAC3B,CAGL,IAAIC,EAAU,IAAInuB,SAAQ,SAASC,EAASC,GAAUguB,EAAqBD,EAAgB3C,GAAW,CAACrrB,EAASC,EAAS,IACzHurB,EAASvX,KAAKga,EAAmB,GAAKC,GAGtC,IAAIhC,EAAM9C,EAAoB8D,EAAI9D,EAAoBqC,EAAEJ,GAEpDzrB,EAAQ,IAAIJ,MAgBhB4pB,EAAoB6C,EAAEC,GAfH,SAAShqB,GAC3B,GAAGknB,EAAoB6B,EAAE+C,EAAiB3C,KAEf,KAD1B4C,EAAqBD,EAAgB3C,MACR2C,EAAgB3C,QAAWnsB,GACrD+uB,GAAoB,CACtB,IAAIP,EAAYxrB,IAAyB,SAAfA,EAAMgI,KAAkB,UAAYhI,EAAMgI,MAChEikB,EAAUjsB,GAASA,EAAMuE,QAAUvE,EAAMuE,OAAO4G,IACpDzN,EAAMwuB,QAAU,iBAAmB/C,EAAU,cAAgBqC,EAAY,KAAOS,EAAU,IAC1FvuB,EAAM8E,KAAO,iBACb9E,EAAMsK,KAAOwjB,EACb9tB,EAAMiuB,QAAUM,EAChBF,EAAmB,GAAGruB,EACvB,CAEF,GACyC,SAAWyrB,EAASA,EAE/D,CAEH,EAUAjC,EAAoBM,EAAEO,EAAI,SAASoB,GAAW,OAAoC,IAA7B2C,EAAgB3C,EAAgB,EAGrF,IAAIgD,EAAuB,SAASC,EAA4B3uB,GAC/D,IAKI0pB,EAAUgC,EALV1B,EAAWhqB,EAAK,GAChB4uB,EAAc5uB,EAAK,GACnB6uB,EAAU7uB,EAAK,GAGIsT,EAAI,EAC3B,GAAG0W,EAAS8E,MAAK,SAASjZ,GAAM,OAA+B,IAAxBwY,EAAgBxY,EAAW,IAAI,CACrE,IAAI6T,KAAYkF,EACZnF,EAAoB6B,EAAEsD,EAAalF,KACrCD,EAAoBK,EAAEJ,GAAYkF,EAAYlF,IAGhD,GAAGmF,EAAS,IAAI1M,EAAS0M,EAAQpF,EAClC,CAEA,IADGkF,GAA4BA,EAA2B3uB,GACrDsT,EAAI0W,EAASvqB,OAAQ6T,IACzBoY,EAAU1B,EAAS1W,GAChBmW,EAAoB6B,EAAE+C,EAAiB3C,IAAY2C,EAAgB3C,IACrE2C,EAAgB3C,GAAS,KAE1B2C,EAAgB3C,GAAW,EAE5B,OAAOjC,EAAoBM,EAAE5H,EAC9B,EAEI4M,EAAqBC,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FD,EAAmB/X,QAAQ0X,EAAqBnI,KAAK,KAAM,IAC3DwI,EAAmBza,KAAOoa,EAAqBnI,KAAK,KAAMwI,EAAmBza,KAAKiS,KAAKwI,G,ICvFvFtF,EAAoBqD,QAAKvtB,ECGzB,IAAI0vB,EAAsBxF,EAAoBM,OAAExqB,EAAW,CAAC,OAAO,WAAa,OAAOkqB,EAAoB,KAAO,IAClHwF,EAAsBxF,EAAoBM,EAAEkF,E","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///webpack/runtime/create fake namespace object","webpack:///webpack/runtime/load script","webpack:///webpack/runtime/css loading","webpack:///./components/shopping_bag/EmptyBag.tsx","webpack:///./components/shopping_bag/utils/analyticsEvents.tsx","webpack:///./components/shopping_bag/hooks/useCart.tsx","webpack:///./components/shopping_bag/FreeShippingNotice.tsx","webpack:///./components/shopping_bag/hooks/useOrder.tsx","webpack:///./components/shopping_bag/hooks/useCartData.tsx","webpack:///./components/common/DeliverySvg.tsx","webpack:///./components/common/PickupSvg.tsx","webpack:///./components/shopping_bag/Favorite.tsx","webpack:///./components/shopping_bag/QuantitySelector.tsx","webpack:///./components/shopping_bag/ItemCard.tsx","webpack:///./components/shopping_bag/ItemCardModify.tsx","webpack:///./components/shopping_bag/Items.tsx","webpack:///./components/common/AddBagSvg.tsx","webpack:///./components/common/PencilSvg.tsx","webpack:///./components/shopping_bag/ModifyOrderHero.tsx","webpack:///./components/common/ImportantSvg.tsx","webpack:///./components/shopping_bag/Notices.tsx","webpack:///./components/shopping_bag/DonationSelector.tsx","webpack:///./components/shopping_bag/hooks/useDonation.tsx","webpack:///./components/shopping_bag/hooks/useEasyPay.tsx","webpack:///./components/shopping_bag/EasyPay.tsx","webpack:///./components/shopping_bag/hooks/useOrderReview.tsx","webpack:///./components/shopping_bag/EasyPayModify.tsx","webpack:///./components/shopping_bag/hooks/useEstimatedTax.tsx","webpack:///./components/shopping_bag/Promocode.tsx","webpack:///./components/shopping_bag/utils/isBagEmpty.tsx","webpack:///./components/shopping_bag/OrderSummary.tsx","webpack:///./components/shopping_bag/hooks/useTaxes.tsx","webpack:///./components/shopping_bag/ShoppingBag.tsx","webpack:///./components/shopping_bag/index.tsx","webpack:///./components/truefit_cart/truefit-cart.component.tsx","webpack:///./components/truefit_cart/truefit-cart.tsx","webpack:///./external/model/paypal.ts","webpack:///external var \"jQuery\"","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/get mini-css chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/runtimeId","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///webpack/runtime/nonce","webpack:///webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"tsc-react:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t9059: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"7867\":1,\"8652\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { en, fr } from './i18n';\r\n\r\nexport function EmptyBag({ isAuth }) {\r\n const { i18n, t } = useTranslation('shoppingbag');\r\n i18n.addResourceBundle('en', 'shoppingbag', en, true, true);\r\n i18n.addResourceBundle('fr', 'shoppingbag', fr, true, true);\r\n return (\r\n <>\r\n

Your Shopping Bag

\r\n

{t('Your shopping bag is empty, but you can change that!')}

\r\n {!isAuth && (\r\n

\r\n {t('If you have previously added items,')}{' '}\r\n \r\n {t('Sign in')}\r\n {' '}\r\n {t('to see what’s in your shopping bag.')}\r\n

\r\n )}\r\n\r\n

\r\n {t('We have thousands of products to choose from. Go ahead and find something you like!')}\r\n

\r\n \r\n );\r\n}\r\n","import { TmCart } from '@/tscapi/model/cart';\r\n\r\n//cart object exposed for analytics\r\nexport const setupAnalyticsData = (cart: TmCart) => {\r\n window.analyticsData.cart = cart;\r\n};\r\n\r\n//prepare analytics object that highlights item that was removed and qty\r\n//looks in previousCart, finds cartlineid of item being removed\r\nexport const setupAnalyticsRemove = (newCart: TmCart, previousCart: TmCart, cartLineId) => {\r\n const currentQty = previousCart.CartLines.find((prevCartLine) => cartLineId == prevCartLine.Id).InCart.Quantity;\r\n const currentItemNo = previousCart.CartLines.find((prevCartLine) => cartLineId == prevCartLine.Id).CartLineItem\r\n .ItemNo;\r\n const changedProduct = previousCart.Products.find((product) => product.ItemNo == currentItemNo);\r\n window.analyticsData.cart = newCart;\r\n window.analyticsData.productChange = {};\r\n window.analyticsData.productChange.product = changedProduct;\r\n window.analyticsData.productChange.quantity = -currentQty;\r\n if (previousCart.CartLines.find((prevCartLine) => cartLineId == prevCartLine.Id).CartLineItem.IsSoldOut) {\r\n window.analyticsData.productChange.reason = 'sold out';\r\n }\r\n window.analyticsData.event.eventTitle = 'change-in-cart';\r\n};\r\n\r\n//fire off 'cart updated event' so Truefit component can refresh recommendations\r\nexport const setupTruefitUpdateEvent = (cart: TmCart) => {\r\n if (cart != null && cart.CartLines.length > 0) {\r\n const truefitEvent = new CustomEvent('tf-update', { detail: { cart: cart } });\r\n document.dispatchEvent(truefitEvent);\r\n }\r\n};\r\n\r\n//send analytics change qty event;\r\nexport const setupAnalyticsUpdateQty = (newCart: TmCart, variables, context) => {\r\n const cartLineId = variables?.lineId;\r\n const previousCart: TmCart = context?.previousBag;\r\n const prevCartline = previousCart.CartLines.find((PreviousCartLine) => cartLineId == PreviousCartLine?.Id);\r\n const changedProduct = previousCart.Products.find(\r\n (product) => prevCartline.CartLineItem?.ItemNo == product?.ItemNo,\r\n );\r\n window.analyticsData.cart = newCart;\r\n window.analyticsData.productChange = {};\r\n window.analyticsData.productChange.product = changedProduct;\r\n window.analyticsData.productChange.quantity = variables?.addRemove;\r\n window.analyticsData.event.eventTitle = 'change-in-cart';\r\n};\r\n\r\n//when pressing 'cancel order modification' button on shopping bag\r\nexport const setupAnalyticsCancelModification = () => {\r\n window.analyticsData = window.analyticsData || {};\r\n window.analyticsData.page = window.analyticsData.page || {};\r\n window.analyticsData.page.pageTitle = 'order modification cancel';\r\n window.analyticsData.form = window.analyticsData.form || {};\r\n window.analyticsData.form.formStepName = 'cancel modification';\r\n};\r\n","import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\r\n\r\nimport { TmCart } from '@/tscapi/model/cart';\r\nimport { createCartAndAddItem } from '@/tscapi/service/cart.service';\r\nimport http from '@/tscapi/service/httpservice';\r\nimport { Storage } from '@/tscapi/utils/browser-storage';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nimport {\r\n setupAnalyticsData,\r\n setupAnalyticsRemove,\r\n setupTruefitUpdateEvent,\r\n setupAnalyticsUpdateQty,\r\n} from '../utils/analyticsEvents';\r\n\r\ntype TmCartDerived = {\r\n isShowBagEmpty: boolean;\r\n};\r\ntype TmCartExtended = TmCart & TmCartDerived;\r\n// const cookie: Cookie = new Cookie();\r\n// const headers = {\r\n// 'Content-Type': 'application/json',\r\n// 'cache-control': 'no-cache',\r\n// currentdatetime: cookie.CurrentDate,\r\n// };\r\n\r\nexport const useCart = (isAuth: boolean) => {\r\n const cookie: Cookie = new Cookie();\r\n return useQuery({\r\n queryKey: ['bag', cookie.CartGuid, cookie.UserAccessToken?.Edp, cookie.Language],\r\n queryFn:\r\n cookie.UserAccessToken != undefined &&\r\n cookie.UserAccessToken.Token.length > 0 &&\r\n cookie.UserAccessToken.Edp > 0\r\n ? fetchBagAccount\r\n : fetchBagGuid,\r\n useErrorBoundary: true,\r\n retry: 1,\r\n });\r\n\r\n async function fetchBagAccount(): Promise {\r\n //signed in\r\n const base = '/api/v2/';\r\n const lang = cookie.Language.substring(0, 2) || 'en';\r\n const userAccessTokenEdp = cookie.UserAccessToken?.Edp;\r\n if (\r\n !(\r\n cookie.UserAccessToken != undefined &&\r\n cookie.UserAccessToken.Token.length > 0 &&\r\n cookie.UserAccessToken.Edp > 0\r\n )\r\n ) {\r\n throw new Error('UserToken expired');\r\n }\r\n try {\r\n const response = await http.get(`${base}${lang}/accounts/${userAccessTokenEdp}/cart`);\r\n //console.log(response.data);\r\n setupAnalyticsData(response.data);\r\n return response.data;\r\n } catch (error) {\r\n //if this state happens, user will be re-directed to signin page anyway\r\n console.log('Error getting Shopping Bag for Account');\r\n // throw new Error('Error getting Shopping Bag for Account');\r\n\r\n return new Promise(function (resolve, reject) {\r\n resolve({} as TmCart);\r\n });\r\n }\r\n }\r\n\r\n async function fetchBagGuid(): Promise {\r\n //not signed in\r\n const base = '/api/v2/';\r\n const lang = cookie.Language.substring(0, 2) || 'en';\r\n if (cookie.CartGuid) {\r\n try {\r\n const response = await http.get(`${base}${lang}/carts/${cookie.CartGuid}`);\r\n //console.log(response.data);\r\n setupAnalyticsData(response.data);\r\n return response.data;\r\n } catch (error) {\r\n console.log(error);\r\n console.log('GUID failed so clearing bag');\r\n return new Promise(function (resolve, reject) {\r\n resolve({} as TmCart);\r\n });\r\n }\r\n } else {\r\n cookie.CartProductCount = '0';\r\n console.log('no GUID exist so clearing bag');\r\n return new Promise(function (resolve, reject) {\r\n resolve({} as TmCart);\r\n });\r\n }\r\n }\r\n};\r\n\r\n// used to remove donation from bag\r\n// used in order summary\r\nexport const useRemoveDonation = (Id, cartGuid) => {\r\n const queryClient = useQueryClient();\r\n const base = '/api/v2/';\r\n const cookie: Cookie = new Cookie();\r\n const storage = new Storage();\r\n const lang = cookie.Language.substring(0, 2) || 'en';\r\n return useMutation({\r\n mutationFn: () => {\r\n return http.delete(`${base}${lang}/carts/${cartGuid}/cartlines/${Id}`);\r\n },\r\n onSuccess: (response, variables, context) => {\r\n // update detail view directly\r\n setupAnalyticsData(response.data);\r\n cookie.CartGuid = response.data.CartGuid;\r\n cookie.CartProductCount = response.data.OrderSummary.TotalQuantity.toString();\r\n storage.deleteSessionLanguageQC();\r\n if (response?.data?.CartLines && response?.data?.CartLines?.length == 0) {\r\n //remove redirect if cart is empty\r\n cookie.deleteTargetUrl();\r\n }\r\n queryClient.setQueryData(\r\n ['bag', response.data.CartGuid, cookie.UserAccessToken?.Edp, cookie.Language],\r\n response?.data,\r\n );\r\n },\r\n onError: (error, variables, context) => {\r\n console.log(`${context} ${error}`);\r\n },\r\n });\r\n};\r\n\r\n// used to remove items from bag\r\n// used in the Itemcard component\r\n// used in the Notices to remove item if sold out\r\nexport const useRemoveItem = (data) => {\r\n const queryClient = useQueryClient();\r\n const base = '/api/v2/';\r\n const cookie: Cookie = new Cookie();\r\n const storage = new Storage();\r\n const lang = cookie.Language.substring(0, 2) || 'en';\r\n return {\r\n ...useMutation({\r\n mutationFn: (Id: number) => {\r\n return http.delete(`${base}${lang}/carts/${data.CartGuid}/cartlines/${Id}`);\r\n },\r\n onSuccess: (response, variables, context) => {\r\n // update detail view directly\r\n setupAnalyticsRemove(response.data, data, variables);\r\n setupTruefitUpdateEvent(response.data);\r\n cookie.CartGuid = response.data.CartGuid;\r\n cookie.CartProductCount = response.data.OrderSummary.TotalQuantity.toString();\r\n storage.deleteSessionLanguageQC();\r\n\r\n if (response?.data?.CartLines && response?.data?.CartLines?.length == 0) {\r\n //remove redirect if cart is empty\r\n cookie.deleteTargetUrl();\r\n }\r\n\r\n queryClient.setQueryData(\r\n ['bag', response.data.CartGuid, cookie.UserAccessToken?.Edp, cookie.Language],\r\n response?.data,\r\n );\r\n },\r\n onError: (error, variables, context) => {\r\n console.log(`${context} ${error}`);\r\n },\r\n }),\r\n };\r\n};\r\n\r\n// used to add donation to bag\r\n// used by donation picker component\r\n// returns bag with donation added\r\nexport const useAddItem = (CustomerEdp, Quantity, cartGuid) => {\r\n const queryClient = useQueryClient();\r\n const base = '/api/v2/';\r\n const cookie: Cookie = new Cookie();\r\n const storage = new Storage();\r\n const lang = cookie.Language.substring(0, 2) || 'en';\r\n\r\n const createAndAddToCart = (itemEDP) => {\r\n // not signed in , no cart exists yet\r\n return createCartAndAddItem({\r\n Customization: '',\r\n ItemEDP: itemEDP,\r\n Quantity: Quantity,\r\n CustomerEdp: 0,\r\n //SOPeriod: \"D\",\r\n //SOInterval:30,\r\n });\r\n };\r\n const addToExistingCart = (itemEDP) => {\r\n // signed in\r\n return http.post(`${base}${lang}/carts/${cartGuid}/cartlines`, {\r\n CustomerEdp: CustomerEdp,\r\n Customization: '',\r\n ItemEDP: itemEDP,\r\n Quantity: Quantity,\r\n });\r\n };\r\n return useMutation({\r\n onSuccess: async (response, variables, context) => {\r\n // update detail view directly\r\n setupAnalyticsData(response.data);\r\n cookie.CartGuid = response.data.CartGuid;\r\n cookie.CartProductCount = response.data.OrderSummary.TotalQuantity.toString();\r\n storage.deleteSessionLanguageQC();\r\n //remove other bags that may be cached from previous accounts\r\n await queryClient.removeQueries({ queryKey: ['bag'] });\r\n //save new bag\r\n queryClient.setQueryData(\r\n ['bag', response.data.CartGuid, cookie.UserAccessToken?.Edp, cookie.Language],\r\n response.data as TmCart,\r\n );\r\n },\r\n onError: (error, variables, context) => {\r\n console.log('error');\r\n },\r\n mutationFn: cookie.CartGuid ? addToExistingCart : createAndAddToCart,\r\n });\r\n};\r\n\r\n//\r\n// used to change quantity of item in bag\r\n// used in Itemcard\r\nexport const useUpdateCart = (CustomerEdp, cartGuid) => {\r\n const queryClient = useQueryClient();\r\n const base = '/api/v2/';\r\n const cookie: Cookie = new Cookie();\r\n const storage = new Storage();\r\n const lang = cookie.Language.substring(0, 2) || 'en';\r\n const updateCart = ({ lineId, edpNo, qty, addRemove }) => {\r\n return http.put(`${base}${lang}/carts/${cartGuid}/cartlines/${lineId}`, {\r\n CustomerEdp: CustomerEdp,\r\n Customization: '',\r\n ItemEdp: edpNo,\r\n Quantity: qty,\r\n });\r\n };\r\n return useMutation({\r\n onMutate: async (data) => {\r\n // Cancel any outgoing refetches\r\n // (so they don't overwrite our optimistic update)\r\n await queryClient.cancelQueries({ queryKey: ['bag'] });\r\n\r\n // Snapshot the previous value\r\n const previousBag = queryClient.getQueryData([\r\n 'bag',\r\n cookie.CartGuid,\r\n cookie.UserAccessToken?.Edp,\r\n cookie.Language,\r\n ]);\r\n const newBag = JSON.parse(JSON.stringify(previousBag));\r\n newBag.CartLines.find((x) => x.Id == data.lineId).InCart.Quantity = data.qty;\r\n\r\n // Optimistically update to the new value\r\n if (newBag) {\r\n queryClient.setQueryData(['bag', cookie.CartGuid, cookie.UserAccessToken?.Edp, cookie.Language], {\r\n ...newBag,\r\n });\r\n }\r\n\r\n // Return a context object with the snapshotted value\r\n return { previousBag };\r\n },\r\n onSuccess: async (response, variables, context) => {\r\n setupAnalyticsUpdateQty(response.data, variables, context);\r\n cookie.CartGuid = response.data.CartGuid;\r\n cookie.CartProductCount = response.data.OrderSummary.TotalQuantity.toString();\r\n storage.deleteSessionLanguageQC();\r\n queryClient.setQueryData(\r\n ['bag', response.data.CartGuid, cookie.UserAccessToken?.Edp, cookie.Language],\r\n response.data as TmCart,\r\n );\r\n },\r\n onError: (err, variables, context) => {\r\n if (context?.previousBag) {\r\n queryClient.setQueryData(\r\n ['bag', cookie.CartGuid, cookie.UserAccessToken?.Edp, cookie.Language],\r\n context.previousBag,\r\n );\r\n }\r\n },\r\n mutationFn: updateCart,\r\n });\r\n};\r\n\r\n// exprimental - not used\r\n// function to transform incoming new cart to derive new state\r\n// derive if bag should look empty (it excludes donation)\r\nexport const transformBagData = (cart: TmCart) => {\r\n const derivedCart: TmCartExtended = Object.assign({ isShowBagEmpty: true }, cart);\r\n if (!cart) {\r\n derivedCart.isShowBagEmpty = true;\r\n } else {\r\n if (cart?.CartLines?.length > 0) {\r\n //cart has products\r\n if (cart?.CartLines?.length == 1 && cart?.CartLines[0]?.CartLineItem?.IsDonation) {\r\n //cart one products but only donation\r\n derivedCart.isShowBagEmpty = true;\r\n } else {\r\n derivedCart.isShowBagEmpty = false;\r\n }\r\n } else {\r\n //cart has data but no products\r\n derivedCart.isShowBagEmpty = true;\r\n }\r\n }\r\n return derivedCart as TmCartExtended;\r\n};\r\n","import React, { useEffect, useState, useRef } from 'react';\r\n\r\nimport { Progress } from '@/components/ui/progressbar';\r\n\r\nimport { useAuthenticated } from './hooks/useAuthenticated';\r\nimport { useCart, useRemoveItem } from './hooks/useCart';\r\ninterface FreeShippingNoticeProps {\r\n name?: string;\r\n}\r\nexport const FreeShippingNotice = ({ name }: FreeShippingNoticeProps) => {\r\n const freeShippingThresholdNumber = Number(window?.tscConfig?.FreeShippingThreshold);\r\n useEffect(() => {}, []);\r\n const isAuthenticated = useAuthenticated();\r\n const { data: cart } = useCart(isAuthenticated);\r\n const [delayedPercentage, setDelayedPercentage] = useState(0);\r\n const isRogersCCFreeShipApplied = cart?.OrderSummary?.IsRogersCCFreeShipApplied;\r\n const isAutoFreeShipApplied = cart?.OrderSummary?.IsAutoFreeShipApplied;\r\n const autoFreeShipAwayFromThresholdAmount = Number(cart?.OrderSummary?.AutoFreeShipAwayFromThresholdAmount);\r\n const difference =\r\n autoFreeShipAwayFromThresholdAmount == 0\r\n ? 0\r\n : freeShippingThresholdNumber - autoFreeShipAwayFromThresholdAmount;\r\n const percentage = Math.min(Math.round((difference / freeShippingThresholdNumber) * 100), 100);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const prevIsOpen = useRef(isOpen);\r\n\r\n const showAutoFreeShip = isAutoFreeShipApplied || autoFreeShipAwayFromThresholdAmount > 0;\r\n\r\n // Set isOpen to true after the component initially loads\r\n useEffect(() => {\r\n setIsOpen(true);\r\n }, []);\r\n\r\n useEffect(() => {\r\n let timer;\r\n if (prevIsOpen.current === false && isOpen === true) {\r\n //delayed open\r\n timer = setTimeout(() => {\r\n setDelayedPercentage(percentage);\r\n }, 600);\r\n } else {\r\n setDelayedPercentage(percentage);\r\n }\r\n prevIsOpen.current = isOpen;\r\n // Cleanup function to clear the timer\r\n return () => clearTimeout(timer);\r\n }, [isOpen, percentage]);\r\n\r\n const NoFreeShipping = () => null;\r\n\r\n return (\r\n <>\r\n {showAutoFreeShip ? (\r\n <>\r\n
\r\n
\r\n
\r\n {isAutoFreeShipApplied ? (\r\n <>\r\n You've earned FREE standard shipping!\r\n \r\n ) : (\r\n <>\r\n \r\n You're {cart?.OrderSummary?.AutoFreeShipAwayFromThreshold} from{' '}\r\n \r\n \r\n \r\n FREE standard shipping on{' '}\r\n \r\n eligible items\r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n
\r\n
\r\n
$0
\r\n
\r\n \r\n
\r\n
${freeShippingThresholdNumber}
\r\n
\r\n
\r\n
\r\n \r\n ) : (\r\n <>\r\n {isRogersCCFreeShipApplied ? (\r\n <>\r\n
\r\n
\r\n You've earned FREE standard shipping with{' '}\r\n Rogers Bank Mastercard!\r\n
\r\n
\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\r\nimport React from 'react';\r\n\r\nimport { TmOrderHistoryDetail } from '@/tscapi/model/order';\r\nimport http from '@/tscapi/service/httpservice';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nexport function useOrder(isAuth: boolean, modifyOrderNumber) {\r\n const cookie: Cookie = new Cookie();\r\n return useQuery({\r\n queryKey: ['order', modifyOrderNumber, cookie.CartGuid, cookie.UserAccessToken?.Edp],\r\n queryFn: () => fetchOrder(modifyOrderNumber),\r\n enabled: !!modifyOrderNumber && modifyOrderNumber.length > 0,\r\n useErrorBoundary: false,\r\n retry: false,\r\n });\r\n\r\n async function fetchOrder(modifyOrderNumber): Promise {\r\n const headers = {\r\n 'Content-Type': 'application/json',\r\n 'cache-control': 'no-cache',\r\n currentdatetime: cookie.CurrentDate,\r\n };\r\n const base = '/api/v2/';\r\n const lang = cookie.Language.substring(0, 2) || 'en';\r\n const userAccessTokenEdp = cookie.UserAccessToken?.Edp;\r\n try {\r\n const response = await http.get(\r\n `${base}${lang}/accounts/${userAccessTokenEdp}/orders/${modifyOrderNumber}?validate=false`,\r\n {\r\n headers: headers,\r\n },\r\n );\r\n setupAnalyticsData(response.data);\r\n return response.data as TmOrderHistoryDetail;\r\n } catch (error) {\r\n //if this state happens, user will be re-directed to signin page anyway\r\n console.log('Error getting Order');\r\n throw new Error('Error getting Order');\r\n }\r\n }\r\n}\r\nconst setupAnalyticsData = (cart) => {\r\n //window.analyticsData.cart = cart; // cart contain details send by the API call\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\n\r\nimport { TmCart, TmCartLine } from '@/tscapi/model/cart';\r\nimport { Storage } from '@/tscapi/utils/browser-storage';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nexport const useCartData = (data: TmCart) => {\r\n const [donationProduct, setDonationProduct] = useState(null);\r\n const [showSummaryDetails, setShowSummaryDetails] = useState(false);\r\n const [isPickup, setIsPickup] = useState(false);\r\n\r\n useEffect(() => {\r\n const storage: Storage = new Storage();\r\n const cookie: Cookie = new Cookie();\r\n\r\n // Find donation product data\r\n const donationProduct = data?.CartLines?.find((item) => item?.CartLineItem?.IsDonation);\r\n if (donationProduct) {\r\n setDonationProduct(donationProduct);\r\n } else {\r\n setDonationProduct(null);\r\n }\r\n\r\n // Determine if shipcode is pickup\r\n setIsPickup(data?.ShipCode == '35' || data?.ShipCode == '07' || data?.ShipCode == '41');\r\n\r\n // Determine if Order Summary should be hidden\r\n if (data?.CartLines === undefined || data?.CartLines?.length == 0) {\r\n setShowSummaryDetails(false);\r\n }\r\n if (data?.CartLines?.length >= 1) {\r\n setShowSummaryDetails(true);\r\n }\r\n if (data?.CartLines?.length == 1 && donationProduct) {\r\n // Only one product in cart but it's a donation item, therefore hide extra summary details\r\n setShowSummaryDetails(false);\r\n }\r\n if (cookie.ModifyOrderNumber) {\r\n setShowSummaryDetails(true);\r\n }\r\n\r\n // Save copy of cart in session (outside of ReactQuery, necessary for analytics)\r\n // Emit shopping cart ready event - used for product recommendation\r\n if (data) {\r\n storage.setSessionCart(data);\r\n if (data && data.Products !== undefined) {\r\n const cartEvent = new CustomEvent('cart-ready', { detail: { cart: data } });\r\n document.dispatchEvent(cartEvent);\r\n }\r\n }\r\n\r\n // Update cookieCartGuid\r\n if (data && data?.CartGuid) {\r\n if (cookie.CartGuid == null) {\r\n cookie.CartGuid = data.CartGuid;\r\n }\r\n if (cookie.CartGuid != data.CartGuid) {\r\n cookie.CartGuid = data.CartGuid;\r\n }\r\n }\r\n }, [data]);\r\n\r\n return { donationProduct, showSummaryDetails, isPickup };\r\n};\r\n","import React from 'react';\r\n\r\nconst DeliverySvg = (props: React.SVGProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DeliverySvg;\r\n","import React from 'react';\r\n\r\nconst PickupSvg = (props: React.SVGProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PickupSvg;\r\n","import React, { useState, useMemo, useEffect } from 'react';\r\nimport { useTranslation, Trans } from 'react-i18next';\r\n\r\nimport TooltipClose from '@/components/common/TooltipCloseSvg';\r\nimport { TmFavourite } from '@/tscapi/model/favourite';\r\nimport http from '@/tscapi/service/httpservice';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\nimport { FavouriteStorage } from '@/tscapi/utils/favourites-storage';\r\n\r\nimport FavoriteEmptyIcon from '../pdp/FavoriteEmptyIcon';\r\nimport FavoriteIcon from '../pdp/FavoriteIcon';\r\nimport { IProduct, IEdp } from '../v2/Prp/IProduct';\r\n\r\nimport { en, fr } from './i18n';\r\n\r\nexport interface FavoriteProps {\r\n product: any;\r\n edp: any;\r\n}\r\ntype FavoriteEventDetail = {\r\n productData: IProduct;\r\n selectedEdp: number;\r\n};\r\nfunction Favorite({ product, edp }: FavoriteProps) {\r\n const { i18n, t } = useTranslation('shoppingbag');\r\n i18n.addResourceBundle('en', 'shoppingbag', en, true, true);\r\n i18n.addResourceBundle('fr', 'shoppingbag', fr, true, true);\r\n const [isFavourite, setIsFavourite] = useState(false);\r\n const [favourites, setFavourites] = useState([]);\r\n const [showFavoriteTooltip, setShowFavoriteTooltip] = useState(false);\r\n const [currentIsFavorite, setCurrentIsFavorite] = useState(false);\r\n const FAVORITE_TOOLTIP_CLOSE_TIMEOUT = 3000;\r\n const productData = product;\r\n const cookie: Cookie = new Cookie();\r\n\r\n const isSignedIn = useMemo(() => {\r\n const cookie = new Cookie();\r\n return !!cookie.UserAccessToken;\r\n }, []);\r\n\r\n const onFavoriteTooltipCloseClick = (\r\n e: React.MouseEvent | React.MouseEvent,\r\n ) => {\r\n e.preventDefault();\r\n setShowFavoriteTooltip(false);\r\n };\r\n const handleSignInLink = (e) => {\r\n e.preventDefault();\r\n cookie.TargetUrl = window.location.pathname + window.location.search;\r\n window.location.href = '/pages/signin';\r\n };\r\n\r\n const onFavoriteClick = async () => {\r\n if (!isSignedIn) {\r\n setShowFavoriteTooltip(true);\r\n // setTimeout(() => {\r\n // setShowFavoriteTooltip(false);\r\n // }, FAVORITE_TOOLTIP_CLOSE_TIMEOUT);\r\n return;\r\n }\r\n\r\n const uat = new Cookie().UserAccessToken;\r\n\r\n if (!uat) {\r\n setShowFavoriteTooltip(true);\r\n setTimeout(() => {\r\n setShowFavoriteTooltip(false);\r\n }, FAVORITE_TOOLTIP_CLOSE_TIMEOUT);\r\n return;\r\n }\r\n\r\n const userEdp = uat.Edp;\r\n\r\n if (!userEdp) {\r\n setShowFavoriteTooltip(true);\r\n setTimeout(() => {\r\n setShowFavoriteTooltip(false);\r\n }, FAVORITE_TOOLTIP_CLOSE_TIMEOUT);\r\n return;\r\n }\r\n\r\n const base = '/api/v2/';\r\n const lang = new Cookie().Language.substring(0, 2) || 'en';\r\n const item = edp;\r\n const deleteUrl = base + lang + '/accounts' + `/${userEdp}` + `/favourites/${item.ItemNo}`;\r\n\r\n const cachebleHeaders = {\r\n 'Content-Type': 'application/json',\r\n 'cache-control': 'no-cache',\r\n currentdatetime: new Cookie().CurrentDate,\r\n };\r\n const favouriteStorage = new FavouriteStorage();\r\n if (isFavourite) {\r\n try {\r\n await http.delete(deleteUrl, {\r\n headers: cachebleHeaders,\r\n });\r\n favouriteStorage.removeByItemNumber(item.ItemNo);\r\n setIsFavourite(false);\r\n } catch (e) {}\r\n } else {\r\n try {\r\n const postUrl = base + lang + '/accounts' + `/${userEdp}` + '/favourites';\r\n await http.post(\r\n postUrl,\r\n {\r\n ItemNumber: item.ItemNo,\r\n ActivityDateTime: new Date().toISOString(),\r\n },\r\n {\r\n headers: cachebleHeaders,\r\n },\r\n );\r\n const favourite: TmFavourite = new TmFavourite();\r\n favourite.ItemNumber = item.ItemNo;\r\n favouriteStorage.add(favourite);\r\n setIsFavourite(true);\r\n //trigger TT analytics event\r\n const event = new CustomEvent('favoriteEvent', {\r\n detail: { productData: productData, selectedEdp: edp.EdpNo },\r\n });\r\n document.dispatchEvent(event);\r\n } catch (e) {\r\n console.log('Failed to add favourite', e);\r\n }\r\n }\r\n setCurrentIsFavorite((prev) => !prev);\r\n return;\r\n };\r\n\r\n useEffect(() => {\r\n const getUserFavourites = () => {\r\n const favouriteStorage = new FavouriteStorage();\r\n const favList = favouriteStorage.Favourites;\r\n const foundFav = favList.find((item) => item.ItemNumber == productData.ItemNo);\r\n setFavourites(favouriteStorage.Favourites);\r\n if (foundFav) {\r\n setIsFavourite(true);\r\n }\r\n };\r\n // console.count('gf');\r\n getUserFavourites();\r\n }, [productData]);\r\n\r\n return (\r\n
\r\n \r\n {isFavourite ? t('addedToFavourite') : t('addToFavourite')}\r\n \r\n \r\n {isFavourite ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {showFavoriteTooltip && (\r\n <>\r\n
onFavoriteTooltipCloseClick(e)}>
\r\n
\r\n
\r\n \r\n {t('Please') + ' '}\r\n {\r\n handleSignInLink(e);\r\n }}\r\n >\r\n {t('sign in')}\r\n \r\n /\r\n \r\n {t('register')}\r\n \r\n {' ' + t('to add items to your Favorites list.')}\r\n \r\n onFavoriteTooltipCloseClick(e)}\r\n className=\"bag-items__favorite__tooltip-content__close-button\"\r\n >\r\n {t('closeText')}\r\n \r\n \r\n
\r\n
\r\n \r\n )}\r\n
\r\n );\r\n}\r\n\r\nexport default Favorite;\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { en, fr } from './i18n';\r\n\r\ninterface IQuantity {\r\n value: number;\r\n inventory: number;\r\n edpNo: number;\r\n lineId: number;\r\n // CartProducts?: TmProduct[];\r\n // CartMessages?: TmCartMessageType;\r\n isPickup?: boolean;\r\n update?: any;\r\n add?: any;\r\n}\r\nexport function QuantitySelector({ value, inventory, update, edpNo, lineId }: IQuantity) {\r\n const { i18n, t } = useTranslation('shoppingbag');\r\n i18n.addResourceBundle('en', 'shoppingbag', en, true, true);\r\n i18n.addResourceBundle('fr', 'shoppingbag', fr, true, true);\r\n const updateBag = () => {\r\n update.mutate();\r\n };\r\n const updateQty = (addOrRemove) => {\r\n update.mutate({ lineId: lineId, edpNo: edpNo, qty: value + addOrRemove, addRemove: addOrRemove });\r\n };\r\n return (\r\n
\r\n {inventory <= 0 ? (\r\n
{t('OUT OF STOCK')}
\r\n ) : (\r\n <>\r\n {\r\n updateQty(-1);\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
{value}
\r\n = inventory || value >= 10}\r\n className=\"quantity__plus\"\r\n onClick={() => {\r\n updateQty(1);\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n}\r\n","import classNames from 'classnames';\r\nimport React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport DeliverySvg from '@/components/common/DeliverySvg';\r\nimport PickupSvg from '@/components/common/PickupSvg';\r\nimport ShippingTruckSvg from '@/components/common/ShippingTruckSvg';\r\nimport { TmCartLine, TmCartMessageType } from '@/tscapi/model/cart';\r\nimport { TmProduct } from '@/tscapi/model/product';\r\n\r\nimport Favorite from './Favorite';\r\nimport { en, fr } from './i18n';\r\nimport { QuantitySelector } from './QuantitySelector';\r\n\r\ninterface ICartLine {\r\n CartLine: TmCartLine;\r\n CartProducts: TmProduct[];\r\n CartMessages?: TmCartMessageType;\r\n IsPickup?: boolean;\r\n isModifyOrder: boolean;\r\n Remove: () => void;\r\n Update: any;\r\n containerCss?: string;\r\n hideQty?: boolean;\r\n SellerName?: string;\r\n}\r\n\r\nexport const ItemCard = ({\r\n CartLine,\r\n CartProducts,\r\n CartMessages,\r\n IsPickup,\r\n isModifyOrder,\r\n Remove,\r\n Update,\r\n containerCss,\r\n hideQty,\r\n}: ICartLine) => {\r\n const { i18n, t } = useTranslation('shoppingbag');\r\n i18n.addResourceBundle('en', 'shoppingbag', en, true, true);\r\n i18n.addResourceBundle('fr', 'shoppingbag', fr, true, true);\r\n const [isShipPanelOpen, setIsShipPanelOpen] = useState(false);\r\n\r\n const product: TmProduct = CartProducts.find((x) => x.ItemNo == CartLine.CartLineItem.ItemNo);\r\n const edpData = product?.Edps.find((y) => y.EdpNo == CartLine.CartLineItem.EdpNo);\r\n const inventory = CartLine.CartLineItem.Inventory;\r\n\r\n const onClickShipPanel = () => {\r\n setIsShipPanelOpen(!isShipPanelOpen);\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n {CartLine.InCart.IsEditable ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n {isModifyOrder &&
{t('NEWLY ADDED')}
}\r\n {product.PriceIsLabel ?
{product.PriceIsLabel}
: null}\r\n\r\n {CartLine.InCart.IsEditable ? (\r\n \r\n

{product.Name}

\r\n
\r\n ) : (\r\n

{product.Name}

\r\n )}\r\n\r\n
{product.ItemNo.slice(0, 3) + '-' + product.ItemNo.slice(3, 6)}
\r\n\r\n {(CartLine.CartLineItem.Size || CartLine.CartLineItem.Style) && (\r\n
\r\n {CartLine.CartLineItem.Size && (\r\n \r\n {t('Size')}: {CartLine.CartLineItem.Size}\r\n \r\n )}\r\n {CartLine.CartLineItem.Size && CartLine.CartLineItem.Style && (\r\n |\r\n )}\r\n {CartLine.CartLineItem.Style && (\r\n \r\n {t('Style')}: {CartLine.CartLineItem.Style}\r\n \r\n )}\r\n
\r\n )}\r\n {product.SellerType === 'Marketplace' && (\r\n
\r\n \r\n
\r\n {product.SellerType === 'Marketplace' && <>Marketplace Seller}\r\n
\r\n
\r\n )}\r\n {/* quantity display if quantity selector disabled */}\r\n {hideQty && (\r\n
\r\n Quantity: {CartLine?.InCart?.Quantity}\r\n
\r\n )}\r\n\r\n {/* low stock */}\r\n {inventory < 10 && inventory > 0 && (\r\n
Only {inventory} left!
\r\n )}\r\n {/* out of stock */}\r\n {/* {inventory <= 0 &&
Sold Out
} */}\r\n
\r\n\r\n {CartLine.InCart.IsEditable && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n {CartLine.InCart.IsEditable && !hideQty && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n\r\n
\r\n
\r\n
\r\n {CartLine.InCart.UnitPrice}\r\n {CartLine.InCart.UnitPrice != edpData.WasPrice && (\r\n {edpData.WasPrice}\r\n )}\r\n
\r\n\r\n
\r\n {!CartLine.CartLineItem.IsDonation &&\r\n (CartLine.InCart.ShippingHandling == 'FREE' ||\r\n CartLine.InCart.ShippingHandling == 'GRATUIT') && (\r\n {t('Free shipping')}\r\n )}\r\n
\r\n\r\n {/* shipdate */}\r\n {!isModifyOrder &&\r\n inventory > 0 &&\r\n (CartLine.InCart.EstimatedShipDate ||\r\n CartLine.InCart.EstimatedDeliveryDate ||\r\n CartMessages.EstimatedDate) &&\r\n CartLine.InCart.IsEditable && (\r\n <>\r\n
\r\n \r\n {isShipPanelOpen && (\r\n <>\r\n {CartLine.InCart.ShippingHandling == 'FREE' ||\r\n CartLine.InCart.ShippingHandling == 'GRATUIT' ? (\r\n
{t('Free shipping')}
\r\n ) : (\r\n <>\r\n {/* NOT FREE */}\r\n {CartLine.InCart.ShippingHandling != edpData.AppliedShipping &&\r\n CartLine.InCart.Quantity == 1 ? (\r\n <>\r\n \r\n {t('Shipping')}:\r\n \r\n \r\n {CartLine.InCart.ShippingHandling}\r\n \r\n {/* Commented Logic below to be implemented later when ShippingHandling takes quantity into account */}\r\n {/* \r\n Shipping:\r\n \r\n \r\n {edpData.AppliedShipping}\r\n \r\n \r\n {CartLine.InCart.ShippingHandling}\r\n */}\r\n \r\n ) : (\r\n <>\r\n \r\n {t('Shipping')}:\r\n \r\n \r\n {CartLine.InCart.ShippingHandling}\r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n )}\r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n );\r\n};\r\n","import React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { TmShipmentItem } from '@/tscapi/model/order';\r\n\r\nimport { en, fr } from './i18n';\r\n\r\ninterface ItemCardModifyProps {\r\n ShipmentItem: TmShipmentItem;\r\n containerCss?: string;\r\n}\r\n\r\nexport const ItemCardModify = ({ ShipmentItem: item, containerCss }: ItemCardModifyProps) => {\r\n const { i18n, t } = useTranslation('shoppingbag');\r\n i18n.addResourceBundle('en', 'shoppingbag', en, true, true);\r\n i18n.addResourceBundle('fr', 'shoppingbag', fr, true, true);\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n

{item.Description}

\r\n
\r\n
{item.ItemNoForDisplay}
\r\n {(item.Size || item.Style) && (\r\n
\r\n {item.Size && (\r\n \r\n {t('Size')}: {item.Size}\r\n \r\n )}\r\n {item.Size && item.Style && |}\r\n {item.Style && (\r\n \r\n {t('Style')}: {item.Style}\r\n \r\n )}\r\n
\r\n )}\r\n {item.SellerType === 'Marketplace' && (\r\n
\r\n \r\n
{<>Marketplace Seller}
\r\n
\r\n )}\r\n {/* quantity display if quantity selector disabled */}\r\n
\r\n Quantity: {item.ItemQuantity}\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n {item.UnitPrice}\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport InfoTooltipSvg from '@/components/common/InfoTooltipSvg';\r\nimport { TmProduct } from '@/tscapi/model/product';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nimport { Dialog } from './Dialog';\r\nimport { useAuthenticated } from './hooks/useAuthenticated';\r\nimport { useCart, useRemoveItem, useUpdateCart } from './hooks/useCart';\r\nimport { useCartData } from './hooks/useCartData';\r\nimport { useOrder } from './hooks/useOrder';\r\nimport { en, fr } from './i18n';\r\nimport { ItemCard } from './ItemCard';\r\nimport { ItemCardModify } from './ItemCardModify';\r\n\r\ninterface ItemProps {\r\n isModifyOrder: boolean;\r\n isBagEmpty: boolean;\r\n}\r\n\r\nfunction Items({ isModifyOrder, isBagEmpty }: ItemProps) {\r\n //state\r\n const cookie: Cookie = new Cookie();\r\n const [showRemoveDialog, setShowRemoveDialog] = useState(false);\r\n const [currentItemId, setCurrentItemId] = useState(0);\r\n const [marketplaceSellers, setMarketplaceSellers] = useState([]);\r\n\r\n //translations\r\n const { i18n, t } = useTranslation('shoppingbag');\r\n i18n.addResourceBundle('en', 'shoppingbag', en, true, true);\r\n i18n.addResourceBundle('fr', 'shoppingbag', fr, true, true);\r\n //react query data & hooks\r\n const isAuthenticated = useAuthenticated();\r\n const { data, isLoading, isError } = useCart(isAuthenticated);\r\n const { isPickup } = useCartData(data);\r\n const order = useOrder(isAuthenticated, cookie.ModifyOrderNumber);\r\n const mutation = useRemoveItem(data);\r\n const updateMutation = useUpdateCart(cookie?.UserAccessToken?.Edp, cookie?.CartGuid);\r\n\r\n const toggleDialog = () => {\r\n setShowRemoveDialog(!showRemoveDialog);\r\n };\r\n const sellerTypeTSC = (CartLine, CartProducts) => {\r\n const product: TmProduct = CartProducts.find((x) => x.ItemNo == CartLine.CartLineItem.ItemNo);\r\n return product.SellerType /* == 'TSC'*/;\r\n };\r\n const itemCountTSC = data?.CartLines?.filter((item) => {\r\n if (!item.CartLineItem.IsDonation && sellerTypeTSC(item, data.Products) == 'TSC') {\r\n return true;\r\n }\r\n }).length;\r\n\r\n const itemCountTSCPartner = data?.CartLines?.filter((item) => {\r\n if (!item.CartLineItem.IsDonation && sellerTypeTSC(item, data.Products) == 'TSCPartner') {\r\n return true;\r\n }\r\n }).length;\r\n\r\n const itemCountMarketplace = data?.CartLines?.filter((item) => {\r\n if (!item.CartLineItem.IsDonation && sellerTypeTSC(item, data.Products) == 'Marketplace') {\r\n return true;\r\n }\r\n }).length;\r\n\r\n const sellerName = (CartLine, CartProducts, brandName) => {\r\n const product: TmProduct = CartProducts.find((x) => x.ItemNo == CartLine.CartLineItem.ItemNo);\r\n return product.SellerName;\r\n };\r\n\r\n useEffect(() => {\r\n if (data && data.Products) {\r\n const filteredNames = data.Products.filter((obj) => obj.SellerType === 'Marketplace')\r\n .map((obj) => obj.SellerName)\r\n .filter((name, index, array) => array.indexOf(name) === index)\r\n .sort();\r\n setMarketplaceSellers(filteredNames);\r\n }\r\n }, [data]);\r\n\r\n if (!data && !order.data) {\r\n return <>;\r\n }\r\n\r\n return (\r\n <>\r\n {isModifyOrder && !isBagEmpty && (\r\n
\r\n \r\n {t(\"Adding an item here doesn't hold it. So get what you love before it's gone.\")}\r\n
\r\n )}\r\n {itemCountTSC > 0 && (\r\n <>\r\n {!isModifyOrder &&
{t('Sold and fulfilled by TSC')}
}\r\n
0 ? 'bag__itemlist noBorder' : 'bag__itemlist'}>\r\n {data.CartLines.map(\r\n (item) =>\r\n !item.CartLineItem.IsDonation &&\r\n sellerTypeTSC(item, data.Products) == 'TSC' && (\r\n {\r\n setCurrentItemId(item.Id);\r\n setShowRemoveDialog(true);\r\n }}\r\n />\r\n ),\r\n )}\r\n
\r\n \r\n )}\r\n {itemCountTSCPartner > 0 && (\r\n <>\r\n {!isModifyOrder && (\r\n
{t('Sold by TSC, fulfilled by TSC Partner')}
\r\n )}\r\n
0 ? 'bag__itemlist noBorder' : 'bag__itemlist'}>\r\n {data.CartLines.map(\r\n (item) =>\r\n !item.CartLineItem.IsDonation &&\r\n sellerTypeTSC(item, data.Products) == 'TSCPartner' && (\r\n {\r\n setCurrentItemId(item.Id);\r\n setShowRemoveDialog(true);\r\n }}\r\n />\r\n ),\r\n )}\r\n
\r\n \r\n )}\r\n {itemCountMarketplace > 0 && (\r\n <>\r\n {marketplaceSellers.map((seller, index) => (\r\n \r\n {!isModifyOrder && (\r\n
{t('Sold and fulfilled by') + ' ' + seller}
\r\n )}\r\n \r\n {data.CartLines.map(\r\n (item) =>\r\n !item.CartLineItem.IsDonation &&\r\n sellerTypeTSC(item, data.Products) == 'Marketplace' &&\r\n sellerName(item, data.Products, seller) == seller && (\r\n {\r\n setCurrentItemId(item.Id);\r\n setShowRemoveDialog(true);\r\n }}\r\n />\r\n ),\r\n )}\r\n \r\n
\r\n ))}\r\n \r\n )}\r\n\r\n {isModifyOrder && order?.data && (\r\n <>\r\n
\r\n {order.data.ShipLevels[0].Items.map((item, index) => (\r\n \r\n ))}\r\n
\r\n \r\n )}\r\n\r\n {/* {(updateMutation.isLoading || isLoading) && (\r\n
\r\n
\r\n
\r\n \"loading\"\r\n
\r\n
\r\n )} */}\r\n\r\n {showRemoveDialog && (\r\n <>\r\n {\r\n setShowRemoveDialog(!showRemoveDialog);\r\n }}\r\n >\r\n {data?.CartLines.filter((item) => item.Id == currentItemId).map((item, index) => (\r\n {\r\n mutation.mutate(item.Id);\r\n }}\r\n />\r\n ))}\r\n {data?.CartLines.filter((item) => item.Id == currentItemId).map((item, index) => (\r\n
\r\n {\r\n mutation.mutate(item.Id);\r\n setShowRemoveDialog(!showRemoveDialog);\r\n }}\r\n >\r\n {t('Remove')}\r\n \r\n {\r\n setShowRemoveDialog(!showRemoveDialog);\r\n }}\r\n >\r\n Cancel\r\n \r\n
\r\n ))}\r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nexport default Items;\r\n","import React from 'react';\r\n\r\nconst AddBagSvg = (props: React.SVGProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AddBagSvg;\r\n","import React from 'react';\r\n\r\nconst PencilSvg = (props: React.SVGProps) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PencilSvg;\r\n","import dayjs from 'dayjs';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport AddBagSvg from '@/components/common/AddBagSvg';\r\nimport CheckmarkSvg from '@/components/common/CheckmarkSvg';\r\nimport PencilSvg from '@/components/common/PencilSvg';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nimport { useAuthenticated } from './hooks/useAuthenticated';\r\nimport { useCart } from './hooks/useCart';\r\nimport { useOrder } from './hooks/useOrder';\r\nimport { en, fr } from './i18n';\r\n\r\ninterface ModifyOrderHeroProps {\r\n isModifyOrder: boolean;\r\n isBagEmpty: boolean;\r\n}\r\n\r\nexport function ModifyOrderHero({ isModifyOrder, isBagEmpty }: ModifyOrderHeroProps) {\r\n const isAuthenticated = useAuthenticated();\r\n const cookie: Cookie = new Cookie();\r\n const { data } = useCart(isAuthenticated);\r\n const order = useOrder(isAuthenticated, cookie.ModifyOrderNumber);\r\n const { i18n, t } = useTranslation('shoppingbag');\r\n i18n.addResourceBundle('en', 'shoppingbag', en, true, true);\r\n i18n.addResourceBundle('fr', 'shoppingbag', fr, true, true);\r\n\r\n if (!order.data || !cookie.ModifyOrderNumber) {\r\n return null;\r\n }\r\n if (order.error) {\r\n return <>;\r\n }\r\n\r\n return (\r\n <>\r\n {!isBagEmpty && isModifyOrder && (\r\n
\r\n \r\n \r\n {t('Your order has been updated!')}{' '}\r\n {t('Please review your changes and proceed to checkout.')}\r\n \r\n
\r\n )}\r\n
\r\n

{t('Modify order')}

\r\n
\r\n
\r\n {t('Order date')}\r\n {dayjs(order.data.OrderSummary.OrderDateTime).format('dddd, MMMM D, YYYY')}\r\n
\r\n
\r\n {t('Order status')}\r\n {order.data.OrderSummary.Status}\r\n
\r\n
\r\n {t('Order number')}\r\n {order.data.OrderSummary.OrderNo}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n {t(\r\n \"You can add items and/or a promo code while your order is in 'Waiting to process' status.\",\r\n )}\r\n {' '}\r\n {t('Your additions will be combined with or applied to the existing order.')}\r\n
\r\n
\r\n
\r\n (location.href = '/')}\r\n className=\"modify__button--addnew\"\r\n aria-label={t('Add new items')}\r\n >\r\n Add new items\r\n \r\n
\r\n
\r\n \r\n
\r\n {t('Additional changes to your order.')}{' '}\r\n {t(\r\n 'If you want to remove items from your order or make any other changes including changes to your EASY PAY installments, payment method or shipping method please call our',\r\n )}{' '}\r\n {t('Customer Service at 1-888-202-0888')}\r\n
\r\n
\r\n
\r\n {data?.OrderSummary?.TotalQuantity > 0 && (\r\n

{t('Updated order')}

\r\n )}\r\n {data?.OrderSummary?.TotalQuantity == 0 && (\r\n

{t('Existing order')}

\r\n )}\r\n
\r\n \r\n );\r\n}\r\n","import React from 'react';\r\n\r\nconst ImportantSvg = (props: React.SVGProps) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ImportantSvg;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useTranslation, Trans } from 'react-i18next';\r\n\r\nimport DeliverySvg from '@/components/common/DeliverySvg';\r\nimport ImportantSvg from '@/components/common/ImportantSvg';\r\nimport MergeSvg from '@/components/common/MergeSvg';\r\nimport TooltipClose from '@/components/common/TooltipCloseSvg';\r\nimport { TmCartNotice, TmInCart } from '@/tscapi/model/cart';\r\nimport { TmEdp } from '@/tscapi/model/product';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nimport { useAuthenticated } from './hooks/useAuthenticated';\r\nimport { useCart, useRemoveItem } from './hooks/useCart';\r\nimport { en, fr } from './i18n';\r\n\r\ninterface NoticeDetails extends TmCartNotice {\r\n closeButton?: JSX.Element;\r\n itemName: JSX.Element;\r\n customMessage: JSX.Element;\r\n icon: JSX.Element;\r\n}\r\ninterface NoticesProps {\r\n setIsCheckoutDisabled: React.Dispatch>;\r\n setIsFraud: React.Dispatch>;\r\n setIsPaypalDisabled: React.Dispatch>;\r\n isModifyOrder: boolean;\r\n}\r\n\r\nexport const Notices = ({ setIsCheckoutDisabled, isModifyOrder, setIsFraud, setIsPaypalDisabled }: NoticesProps) => {\r\n const cookie: Cookie = new Cookie();\r\n const [showMultipackNotice, setShowMultipackNotice] = useState(true);\r\n const [showMergeNotice, setShowMergeNotice] = useState(\r\n cookie.CartMerge != null && cookie.CartMerge != undefined && cookie.CartMerge.toLowerCase() == 'true',\r\n );\r\n useEffect(() => {\r\n if (cookie.CartMerge != null && cookie.CartMerge != undefined && cookie.CartMerge.toLowerCase() == 'true') {\r\n setShowMergeNotice(true);\r\n //remove show merge cookie so future shopping-\r\n //bag views doesn't show the message\r\n cookie.deleteCartMerge();\r\n }\r\n }, []);\r\n\r\n const isAuthenticated = useAuthenticated();\r\n const { data: cart } = useCart(isAuthenticated);\r\n const { i18n, t } = useTranslation('shoppingbag');\r\n i18n.addResourceBundle('en', 'shoppingbag', en, true, true);\r\n i18n.addResourceBundle('fr', 'shoppingbag', fr, true, true);\r\n let isFraudAccount = false;\r\n const cartAONotices = [];\r\n const disableCheckout = false;\r\n const disablePayPal = false;\r\n let showMultipackMessage = false;\r\n const mutation = useRemoveItem(cart);\r\n const buildCartNotices: NoticeDetails[] = [];\r\n const buildCartMaxLimitNotices: NoticeDetails[] = [];\r\n const [cartNotices, setCartNotices] = useState([] as NoticeDetails[]);\r\n const [cartMaxLimitNotices, setCartMaxLimitNotices] = useState([] as NoticeDetails[]);\r\n const [truefitLoaded, setTruefitLoaded] = useState(false);\r\n\r\n //setup truefit library\r\n useEffect(() => {\r\n if (cart && cart?.CartLines?.length > 0 && !isModifyOrder && !truefitLoaded) {\r\n const truefitEvent = new CustomEvent('tf-ready', { detail: { cart: cart } });\r\n document.dispatchEvent(truefitEvent);\r\n setTruefitLoaded(true);\r\n }\r\n }, [cart, isModifyOrder, truefitLoaded]);\r\n\r\n useEffect(() => {\r\n if (\r\n cart != null &&\r\n cart != undefined &&\r\n cart.CartLines != null &&\r\n cart.CartLines != undefined &&\r\n cart.CartLines.length > 0\r\n ) {\r\n //check cartlines for out of stock items, quantity reduced items, check AO items\r\n // build a notice object for each occurance\r\n setIsCheckoutDisabled(false);\r\n for (let i = 0; i < cart.CartLines.length; i++) {\r\n const cartLineEdp = cart.CartLines[i].CartLineItem;\r\n const inCart = cart.CartLines[i].InCart;\r\n const productIdx: number = cart.Products.findIndex((x) => x.ItemNo == cartLineEdp.ItemNo);\r\n const product = cart.Products[productIdx];\r\n\r\n if (productIdx > -1) {\r\n const edps = cart.Products[productIdx].Edps;\r\n if (edps != null && edps.length > 0) {\r\n const edpIdx = edps.findIndex((x) => x.EdpNo == cartLineEdp.EdpNo);\r\n if (edpIdx > -1) {\r\n if (\r\n product.IsSoldOut ||\r\n cartLineEdp.IsSoldOut ||\r\n cartLineEdp.IsAdvanceOrBackOrder ||\r\n inCart.QuantityToBeReducedMessage != ''\r\n ) {\r\n const notice = {\r\n ItemNo: cartLineEdp.ItemNo,\r\n EdpNo: cartLineEdp.EdpNo,\r\n CartId: cart.CartLines[i].Id,\r\n ItemName: product.Name,\r\n } as NoticeDetails;\r\n\r\n if (product.IsSoldOut) {\r\n //6th box - Out of stock\r\n notice.itemName = <>{product.Name};\r\n notice.customMessage = (\r\n <>\r\n The {notice.ItemName} is{' '}\r\n {t('OUT OF STOCK')}.{' '}\r\n {t('Please remove this item to checkout.')}{' '}\r\n {\r\n mutation.mutate(cart?.CartLines[i]?.Id);\r\n }}\r\n >\r\n {t('Remove')}\r\n \r\n \r\n );\r\n notice.icon = ;\r\n notice.Message = t('Sold out');\r\n notice.Action = 'remove';\r\n buildCartNotices.push(notice);\r\n setIsCheckoutDisabled(true);\r\n } else if (cartLineEdp.IsSoldOut) {\r\n //5th box - Out of stock, pick another style\r\n notice.itemName = (\r\n <>\r\n {product.Name}{' '}\r\n {getEdpStyleSize(cartLineEdp) || getFrequency(cartLineEdp, inCart) ? (\r\n <>\r\n in {getEdpStyleSize(cartLineEdp)}\r\n {getFrequency(cartLineEdp, inCart) ? (\r\n <> {getFrequency(cartLineEdp, inCart)}\r\n ) : null}\r\n \r\n ) : null}\r\n \r\n );\r\n notice.customMessage = (\r\n <>\r\n The {notice.itemName}, is{' '}\r\n {t('OUT OF STOCK')}.{' '}\r\n {t('Other options are available. Please remove this item to checkout.')}{' '}\r\n {\r\n mutation.mutate(cart?.CartLines[i]?.Id);\r\n }}\r\n >\r\n {t('Remove')}\r\n \r\n \r\n );\r\n notice.icon = ;\r\n notice.Action = 'remove';\r\n setIsCheckoutDisabled(true);\r\n buildCartNotices.push(notice);\r\n } else if (inCart.QuantityToBeReducedMessage != '') {\r\n //7th box - Adjusted from Quantity\r\n notice.itemName = (\r\n <>\r\n {product.Name}{' '}\r\n {getEdpStyleSize(cartLineEdp) || getFrequency(cartLineEdp, inCart) ? (\r\n <>\r\n in {getEdpStyleSize(cartLineEdp)}{' '}\r\n {getFrequency(cartLineEdp, inCart)}\r\n \r\n ) : null}\r\n \r\n );\r\n\r\n notice.StockStatus =\r\n cookie.Language == 'en_CA'\r\n ? 'Only ' + cartLineEdp.Inventory + ' left in stock.'\r\n : \"Il n'en reste que \" + cartLineEdp.Inventory + '.';\r\n notice.icon = ;\r\n notice.customMessage = (\r\n <>\r\n The {notice.itemName} has been{' '}\r\n \r\n {inCart.QuantityToBeReducedMessage} {notice.StockStatus}\r\n \r\n \r\n );\r\n buildCartNotices.push(notice);\r\n //disablePayPal = true;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n //check cart max limits, fraud, merge cart\r\n //push a notice object for each limit exceeded\r\n\r\n const cartFreeShippingMessage = '';\r\n\r\n if (cart.CartMessages != null) {\r\n //3rd red box - max 10 of item\r\n if (cart.IsMaxQuantityPerCartLineReached && !isModifyOrder) {\r\n const notice = {} as NoticeDetails;\r\n notice.icon = ;\r\n notice.Message = cart.CartMessages.MaxQuantityPerCartLineReached;\r\n buildCartMaxLimitNotices.push(notice);\r\n setIsCheckoutDisabled(true);\r\n }\r\n //4th box - bag exceeds number of items per order\r\n if (cart.IsMaxCartLineCountReached && !isModifyOrder) {\r\n const notice = {} as NoticeDetails;\r\n notice.icon = ;\r\n notice.Message = cart.CartMessages.MaxCartLineCountReached;\r\n buildCartMaxLimitNotices.push(notice);\r\n setIsCheckoutDisabled(true);\r\n }\r\n //2nd - amount exceeds purchase limit\r\n if (cart.IsMaxCartCheckoutLimitReached && !isModifyOrder) {\r\n const notice = {} as NoticeDetails;\r\n notice.icon = ;\r\n notice.Message = cart.CartMessages.MaxCheckoutLimitReached;\r\n buildCartMaxLimitNotices.push(notice);\r\n setIsCheckoutDisabled(true);\r\n }\r\n // check fraud account status\r\n if (cart?.Buyer != null && cart?.Buyer?.IsFraud && !isModifyOrder) {\r\n isFraudAccount = true;\r\n const notice = {} as NoticeDetails;\r\n notice.icon = ;\r\n notice.customMessage = (\r\n <>\r\n Important!{' '}\r\n {t(\r\n 'You cannot place any orders due to the status of your account. Please contact our Customer Service Center at 1-888-2020-888.',\r\n )}\r\n \r\n );\r\n buildCartNotices.push(notice);\r\n setIsCheckoutDisabled(true);\r\n setIsFraud(true);\r\n }\r\n // check if merge cart\r\n if (showMergeNotice) {\r\n const notice = {} as NoticeDetails;\r\n notice.icon = ;\r\n notice.customMessage = <>{t('Your shopping bag contains previously added items')};\r\n notice.Action = 'merge';\r\n notice.closeButton = (\r\n \r\n );\r\n buildCartNotices.unshift(notice);\r\n }\r\n // check if multipack shipping message\r\n if (cart.CartLines != null && cart.OrderSummary.ShippingHandlingAmount > 0 &&\r\n ((cart.CartLines.length == 1 &&\r\n cart.CartLines[0].InCart.Quantity == 1 &&\r\n !cart.CartLines[0].CartLineItem.IsDonation &&\r\n cartFreeShippingMessage == '' &&\r\n cart.PromoCode != 'SHIP150' &&\r\n showMultipackNotice &&\r\n cart.ShipCode != '35' &&\r\n !isModifyOrder)\r\n ||\r\n (cart.CartLines.length == 2 &&\r\n //at least one product not donation\r\n cart.CartLines.filter((cartline) => {\r\n return !cartline.CartLineItem.IsDonation;\r\n }).length == 1 &&\r\n cartFreeShippingMessage == '' &&\r\n cart.PromoCode != 'SHIP150' &&\r\n showMultipackNotice &&\r\n cart.ShipCode != '35' &&\r\n !isModifyOrder)\r\n )\r\n ) {\r\n const notice = {} as NoticeDetails;\r\n notice.icon = ;\r\n notice.Action = 'multipack';\r\n notice.closeButton = (\r\n \r\n );\r\n notice.customMessage = (\r\n <>\r\n {t('Save on shipping!')}{' '}\r\n {t(\r\n 'If you add another item to your order, you may be eligible for our Multipack Shipping Discount!',\r\n )}{' '}\r\n \r\n Learn More\r\n \r\n \r\n );\r\n buildCartNotices.unshift(notice);\r\n }\r\n }\r\n\r\n if (cart.OrderSummary.MultipackSavings != '' && cart.PromoCode != 'SHIP150') {\r\n showMultipackMessage = true;\r\n } else {\r\n showMultipackMessage = false;\r\n }\r\n\r\n //sync cart notice object just built above with react state\r\n setCartMaxLimitNotices(buildCartMaxLimitNotices);\r\n setCartNotices(buildCartNotices);\r\n }\r\n if (\r\n cart == null ||\r\n cart == undefined ||\r\n cart?.CartLines == null ||\r\n cart?.CartLines == undefined ||\r\n cart?.CartLines.length == 0\r\n ) {\r\n //erase notices\r\n setCartMaxLimitNotices([]);\r\n setCartNotices([]);\r\n }\r\n }, [cart, showMergeNotice, showMultipackNotice]);\r\n\r\n const hideShowMerge = () => {\r\n if (showMergeNotice) {\r\n setShowMergeNotice(false);\r\n }\r\n };\r\n const hideShowMultipack = () => {\r\n if (showMultipackNotice) {\r\n setShowMultipackNotice(false);\r\n }\r\n };\r\n\r\n return (\r\n
\r\n {cartNotices &&\r\n cartNotices.length > 0 &&\r\n cartNotices.map((notice, index) => {\r\n return (\r\n \r\n
{notice.icon}
\r\n
{notice.customMessage}
\r\n {notice.closeButton}\r\n
\r\n );\r\n })}\r\n\r\n {cartMaxLimitNotices &&\r\n cartMaxLimitNotices.length > 0 &&\r\n cartMaxLimitNotices.map((notice, index) => {\r\n //return
{JSON.stringify(x, null, 2)}
;\r\n return (\r\n
\r\n
{notice.icon}
\r\n
{notice.Message}
\r\n
\r\n );\r\n })}\r\n
\r\n \r\n );\r\n};\r\nconst getFrequency = (cartLineEdp: TmEdp, inCart: TmInCart) => {\r\n if (cartLineEdp.IsSOEligible == false) {\r\n return '';\r\n } else {\r\n if (inCart.SODeliveryMessage != '') {\r\n return <>Frequency: Auto Delivery;\r\n } else {\r\n return <>Frequency: 1 Time Shipment;\r\n }\r\n }\r\n};\r\n\r\nconst getEdpStyleSize = (cartLineEdp: TmEdp) => {\r\n if (!cartLineEdp.Size && !cartLineEdp.Style) {\r\n return '';\r\n }\r\n if (cartLineEdp.Size && cartLineEdp.Style) {\r\n return (\r\n <>\r\n Size: {cartLineEdp.Size}, Style: {cartLineEdp.Style}\r\n \r\n );\r\n }\r\n if (cartLineEdp.Size) {\r\n return <>Size: {cartLineEdp.Size};\r\n }\r\n if (cartLineEdp.Style) {\r\n return <>Style: {cartLineEdp.Style};\r\n }\r\n};\r\n","import classNames from 'classnames';\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { TmCart } from '@/tscapi/model/cart';\r\nimport { TmProduct } from '@/tscapi/model/product';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nimport { useAuthenticated } from './hooks/useAuthenticated';\r\nimport { useAddItem } from './hooks/useCart';\r\nimport { useCartData } from './hooks/useCartData';\r\nimport { useDonation } from './hooks/useDonation';\r\nimport { en, fr } from './i18n';\r\n\r\ninterface DonationSelectorProps {\r\n isCartEmpty: boolean;\r\n isOnlyDonationProductInCart: boolean;\r\n data: TmCart;\r\n}\r\n\r\nconst DonationSelector = ({ isCartEmpty, isOnlyDonationProductInCart, data }: DonationSelectorProps) => {\r\n const cookie: Cookie = new Cookie();\r\n const isDonationFlowEnabled = window['donationFlowEnabled'];\r\n const { data: dataDonation, isLoading } = useDonation();\r\n const [isPanelOpen, setIsPanelOpen] = useState(true);\r\n const { donationProduct } = useCartData(data);\r\n const mutation = useAddItem(cookie.UserAccessToken?.Edp, 1, cookie.CartGuid);\r\n const [products, setProducts] = useState([]);\r\n const { i18n, t } = useTranslation('shoppingbag');\r\n i18n.addResourceBundle('en', 'shoppingbag', en, true, true);\r\n i18n.addResourceBundle('fr', 'shoppingbag', fr, true, true);\r\n\r\n const onDonationChange = (edpNo) => {\r\n //do react-query mutation\r\n mutation.mutate(edpNo);\r\n };\r\n\r\n useEffect(() => {\r\n if (isCartEmpty || isOnlyDonationProductInCart) {\r\n setIsPanelOpen(true);\r\n } else {\r\n setIsPanelOpen(false);\r\n }\r\n }, [isCartEmpty, isOnlyDonationProductInCart]);\r\n\r\n useEffect(() => {\r\n //retrieve donation products, make a copy before we modify price formatting\r\n const products = Object.assign([], dataDonation);\r\n if (typeof dataDonation != 'undefined' && dataDonation?.length > 0) {\r\n //strip currency formatting and decimals\r\n products.forEach(function (item) {\r\n item.IsPriceRange = item.IsPriceRange.replace('$', '');\r\n item.IsPriceRange = Math.trunc(parseFloat(item.IsPriceRange)).toString();\r\n }, this);\r\n\r\n //sort from smallest to largest donations\r\n products.sort(function (a, b) {\r\n return parseFloat(a.IsPriceRange) > parseFloat(b.IsPriceRange)\r\n ? 1\r\n : parseFloat(b.IsPriceRange) > parseFloat(a.IsPriceRange)\r\n ? -1\r\n : 0;\r\n });\r\n\r\n //add currency formatting\r\n products.forEach(function (item, index) {\r\n if (cookie.Language.toLowerCase() == 'en_ca') {\r\n item.IsPriceRange = '$' + item.IsPriceRange;\r\n } else {\r\n item.IsPriceRange = item.IsPriceRange + ' $';\r\n }\r\n }, this);\r\n setProducts(products);\r\n }\r\n }, [dataDonation, cookie.Language]);\r\n\r\n if (isLoading) {\r\n return <>Donation Loading...;\r\n }\r\n\r\n return (\r\n <>\r\n {isDonationFlowEnabled && products && (\r\n <>\r\n
\r\n {\r\n setIsPanelOpen(!isPanelOpen);\r\n }}\r\n >\r\n
\r\n \r\n
\r\n
\r\n {t('Would you like to donate to the Jays Care Foundation?')}\r\n
\r\n
\r\n \r\n {isPanelOpen && (\r\n <>\r\n
\r\n {t(\r\n 'Donate today to teach life skills and create lasting social change for Canadian children and youth in marginalized communities.',\r\n )}\r\n
\r\n
\r\n {products.map((product, index) => (\r\n
\r\n onDonationChange(product?.Edps[0].EdpNo)}\r\n />\r\n \r\n
\r\n ))}\r\n
\r\n
\r\n {t(\r\n 'The Jays Care Foundation will issue a donation receipt to the credit card holder for amounts in excess of $20',\r\n )}\r\n
\r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default DonationSelector;\r\n","import { useQuery } from '@tanstack/react-query';\r\n\r\nimport { TmProduct } from '@/tscapi/model/product';\r\nimport http from '@/tscapi/service/httpservice';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nexport const useDonation = () => {\r\n const cookie: Cookie = new Cookie();\r\n const fetchDonation = async () => {\r\n const headers = {\r\n 'Content-Type': 'application/json',\r\n currentdatetime: cookie.CurrentDate,\r\n };\r\n const base = '/api/v3/';\r\n const lang = cookie.Language.substring(0, 2) || 'en';\r\n try {\r\n const response = await http.get(`${base}${lang}/products/donation`, {\r\n headers: headers,\r\n });\r\n return response.data as TmProduct[];\r\n } catch (e) {\r\n console.log('Error getting donation data');\r\n throw new Error('Error getting Donation data');\r\n }\r\n };\r\n\r\n return useQuery({\r\n queryKey: ['donation'],\r\n queryFn: fetchDonation,\r\n useErrorBoundary: true,\r\n retry: false,\r\n staleTime: 1000 * 60 * 5, //stale time 5 minutes\r\n });\r\n};\r\n","import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\r\n\r\nimport http from '@/tscapi/service/httpservice';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nexport const useEasyPay = (cartGuid) => {\r\n const queryClient = useQueryClient();\r\n const base = '/api/v2/';\r\n const cookie: Cookie = new Cookie();\r\n const lang = cookie.Language.substring(0, 2) || 'en';\r\n const updateInstallments = ({ noOfInstallments, onSuccess }) => {\r\n return http.put(`${base}${lang}/carts/${cartGuid}/installment`, {\r\n NoOfInstallments: noOfInstallments,\r\n });\r\n };\r\n return useMutation({\r\n mutationFn: updateInstallments,\r\n onSuccess: (response, variables) => {\r\n setupAnalyticsData(response.data);\r\n // update detail view directly\r\n variables.onSuccess();\r\n queryClient.setQueryData(\r\n ['bag', cookie.CartGuid, cookie.UserAccessToken?.Edp, cookie.Language],\r\n response?.data,\r\n );\r\n },\r\n onError: (error, variables, context) => {\r\n console.log(`${context} ${error}`);\r\n },\r\n });\r\n};\r\nconst setupAnalyticsData = (cart) => {\r\n window.analyticsData.cart = cart;\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport ImportantSvg from '@/components/common/ImportantSvg';\r\nimport PdpEasyPayPopup from '@/components/pdp_easypay_popup/PdpEasyPayPopup';\r\nimport http from '@/tscapi/service/httpservice';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nimport { useAuthenticated } from './hooks/useAuthenticated';\r\nimport { useCart } from './hooks/useCart';\r\nimport { useEasyPay } from './hooks/useEasyPay';\r\nimport { en, fr } from './i18n';\r\n\r\nexport interface EasyPayData {\r\n title: string;\r\n content: string;\r\n}\r\ninterface EasyPayProps {\r\n setIsPaypalDisabled: React.Dispatch>;\r\n showEasyPayNotice: boolean;\r\n setEasyWarningBlockCheckout: React.Dispatch>;\r\n setShowEasyPayNotice: React.Dispatch>;\r\n}\r\nexport const Easypay = ({\r\n setIsPaypalDisabled,\r\n showEasyPayNotice: easyPayWarningNotice,\r\n setShowEasyPayNotice: setEasyPayWarningNotice,\r\n setEasyWarningBlockCheckout,\r\n}: EasyPayProps) => {\r\n const cookie: Cookie = new Cookie();\r\n const [showEasyPaySelectbox, setShowEasyPaySelectbox] = useState(false);\r\n const [showEasyPayNotice, setShowEasyPayNotice] = useState(false);\r\n const [showEasyPayPopup, setShowEasyPayPopup] = useState(false);\r\n const [selectedOption, setSelectedOption] = useState('none');\r\n const [easyPayPopupData, setEasyPayPopupData] = useState({ title: '', content: '' });\r\n const [isEasyPayAvailable, setIsEasyPayAvailable] = useState(false);\r\n const [promotionalEasyPayApplied, setPromotionalEasyPayApplied] = useState(false);\r\n //translation\r\n const { i18n, t } = useTranslation('shoppingbag');\r\n i18n.addResourceBundle('en', 'shoppingbag', en, true, true);\r\n i18n.addResourceBundle('fr', 'shoppingbag', fr, true, true);\r\n //react-query data hooks\r\n const isAuthenticated = useAuthenticated();\r\n const { data } = useCart(isAuthenticated);\r\n const easyPayMutation = useEasyPay(cookie.CartGuid);\r\n\r\n useEffect(() => {\r\n if (data?.OrderSummary?.EasyPay != undefined && data?.OrderSummary?.EasyPay.NoOfInstallments > 1) {\r\n setShowEasyPaySelectbox(true);\r\n }\r\n if (data?.AvailableInstallmentsBreakdown?.length > 1) {\r\n setIsEasyPayAvailable(true);\r\n } else {\r\n setIsEasyPayAvailable(false);\r\n }\r\n const easyPayNoOfInstallments = data?.OrderSummary?.EasyPay?.NoOfInstallments;\r\n \r\n if (\r\n data?.PromotionalEasyPayInstallment\r\n && easyPayNoOfInstallments == data?.PromotionalEasyPayInstallment?.NoOfInstallments\r\n && data?.CreditCard?.IsIssuerRogers\r\n ) {\r\n setPromotionalEasyPayApplied(true);\r\n } else {\r\n setPromotionalEasyPayApplied(false);\r\n }\r\n setSelectedOption(data?.OrderSummary?.EasyPay ? data?.OrderSummary?.EasyPay?.NoOfInstallments.toString() : '1');\r\n }, [data]);\r\n\r\n useEffect(() => {\r\n if (selectedOption == '1' && showEasyPaySelectbox) {\r\n setEasyWarningBlockCheckout(true);\r\n } else {\r\n setEasyWarningBlockCheckout(false);\r\n }\r\n }, [selectedOption, setEasyWarningBlockCheckout, showEasyPaySelectbox]);\r\n\r\n const fetchEasyPayArticle = async () => {\r\n async function fetchArticle() {\r\n const headers = {\r\n 'Content-Type': 'application/json',\r\n 'cache-control': 'no-cache',\r\n currentdatetime: new Cookie().CurrentDate,\r\n };\r\n const base = '/api/v2/';\r\n const lang = new Cookie().Language.substring(0, 2) || 'en';\r\n const easyPayUrl = base + lang + '/customerservice/easy-pay';\r\n try {\r\n const data = await http.get(easyPayUrl, {\r\n headers: headers,\r\n transformRequest: (data, headers) => {\r\n delete headers.Authorization;\r\n return data;\r\n },\r\n });\r\n return data.data.Article;\r\n } catch (e) {\r\n return null;\r\n }\r\n }\r\n //if content is null, fetch easy pay data\r\n if (easyPayPopupData.content == '') {\r\n const article = await fetchArticle();\r\n if (article) {\r\n setEasyPayPopupData({ title: article.Title, content: article.Content });\r\n setShowEasyPayPopup(true);\r\n }\r\n } else {\r\n setShowEasyPayPopup(true);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {isEasyPayAvailable && (\r\n <>\r\n {' '}\r\n
\r\n {\r\n if (\r\n !e.target.checked &&\r\n data?.OrderSummary?.EasyPay != null &&\r\n data?.OrderSummary?.EasyPay.NoOfInstallments > 1\r\n ) {\r\n easyPayMutation.mutate({\r\n noOfInstallments: 1,\r\n onSuccess: () => {\r\n setIsPaypalDisabled(false);\r\n },\r\n });\r\n }\r\n setEasyPayWarningNotice(false);\r\n setShowEasyPaySelectbox(e.target.checked);\r\n if (e.target.checked) {\r\n setIsPaypalDisabled(true);\r\n } else {\r\n setIsPaypalDisabled(false);\r\n }\r\n }}\r\n />\r\n \r\n fetchEasyPayArticle()}\r\n >\r\n {t('Easy Pay®')}\r\n \r\n
\r\n {showEasyPaySelectbox && (\r\n <>\r\n {/* Only show installment select box choices if not promotionaleasypay !promotionalEasyPayApplied */}\r\n {data?.AvailableInstallments && (\r\n <>\r\n {\r\n setSelectedOption(e.target.value);\r\n setEasyPayWarningNotice(false);\r\n easyPayMutation.mutate({\r\n noOfInstallments: parseInt(e.target.value),\r\n onSuccess: () => {},\r\n });\r\n }}\r\n >\r\n \r\n {data?.AvailableInstallmentsBreakdown.slice(1).map((payment, index) => (\r\n \r\n ))}\r\n\r\n {data?.PromotionalEasyPayInstallment && data?.CreditCard?.IsIssuerRogers && (\r\n \r\n {data?.PromotionalEasyPayInstallment?.MonthlyPayment}\r\n \r\n )}\r\n \r\n \r\n )}\r\n\r\n {data?.OrderSummary?.EasyPay?.NoOfInstallments > 1 && (\r\n <>\r\n
\r\n
\r\n {t('Your total payment today')}\r\n
\r\n
\r\n \r\n {data?.OrderSummary?.EasyPay?.TotalPaymentToday}*\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n {t('Payment amount left after today')}\r\n
\r\n
\r\n {data?.OrderSummary?.EasyPay?.BalanceRemainingAfterToday}\r\n
\r\n
\r\n\r\n
\r\n
\r\n {data?.OrderSummary?.EasyPay?.NoOfFutureMonthlyPayments}{' '}\r\n {t('future monthly payments')}\r\n
\r\n
\r\n {data?.OrderSummary?.EasyPay?.FutureMonthlyPayment}\r\n
\r\n
\r\n
\r\n
\r\n \r\n *{t('Shipping and taxes have been added to your first payment.')}\r\n \r\n
\r\n
\r\n \r\n )}\r\n \r\n )}\r\n {(showEasyPayNotice || easyPayWarningNotice) && (\r\n
\r\n \r\n {t('Please select a number of installments')}{' '}\r\n {t('or unselect the Monthly Payments option to Proceed to checkout')}\r\n
\r\n )}\r\n {showEasyPayPopup && (\r\n {\r\n setShowEasyPayPopup(false);\r\n }}\r\n />\r\n )}\r\n \r\n )}\r\n \r\n );\r\n};\r\n","import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\r\nimport React from 'react';\r\n\r\nimport { TmCart, TmCartOrderSummary } from '@/tscapi/model/cart';\r\nimport { TmModifyOrderRequest, TmAddItemRequest } from '@/tscapi/model/request/order-request';\r\nimport http from '@/tscapi/service/httpservice';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nexport function useOrderReview(isAuth: boolean, modifyOrderNumber: string, cart: TmCart) {\r\n const cookie: Cookie = new Cookie();\r\n\r\n //prepare put request payload (current cart contents)\r\n const orderRequest: TmModifyOrderRequest = new TmModifyOrderRequest();\r\n if (cookie.ModifyOrderPromocode) {\r\n orderRequest.Promocode = cookie.ModifyOrderPromocode;\r\n } else {\r\n delete orderRequest.Promocode;\r\n }\r\n orderRequest.Items = [];\r\n for (let i = 0; i < cart?.CartLines?.length; i++) {\r\n const cartLine = cart.CartLines[i];\r\n const itemRequest: TmAddItemRequest = new TmAddItemRequest();\r\n itemRequest.ItemEdp = cartLine.CartLineItem.EdpNo.toString();\r\n itemRequest.ItemQuantity = cartLine.InCart.Quantity;\r\n orderRequest.Items.push(itemRequest);\r\n }\r\n //end put request payload preparation\r\n\r\n return useQuery({\r\n queryKey: [\r\n 'orderreview',\r\n cookie.CartGuid,\r\n modifyOrderNumber,\r\n orderRequest.Items,\r\n orderRequest.Promocode ? orderRequest.Promocode : '',\r\n ],\r\n queryFn: () => fetchOrder(modifyOrderNumber),\r\n enabled: !!modifyOrderNumber && modifyOrderNumber.length > 0 && !!cart,\r\n useErrorBoundary: true,\r\n retry: false,\r\n //staleTime: 1000 * 60 * 5, //5mins\r\n staleTime: 1000 * 5, //30 secondz\r\n refetchOnWindowFocus: false,\r\n });\r\n\r\n async function fetchOrder(modifyOrderNumber): Promise {\r\n const base = '/api/v2/';\r\n const lang = cookie.Language.substring(0, 2) || 'en';\r\n const userAccessTokenEdp = cookie.UserAccessToken?.Edp;\r\n const headers = {\r\n 'Content-Type': 'application/json',\r\n 'cache-control': 'no-cache',\r\n currentdatetime: cookie.CurrentDate,\r\n };\r\n\r\n try {\r\n const response = await http.put(\r\n `${base}${lang}/accounts/${userAccessTokenEdp}/orders/${modifyOrderNumber}/review`,\r\n orderRequest,\r\n );\r\n //console.log(response.data, 'order review returned');\r\n setupAnalyticsData(cart, response.data);\r\n return response.data as TmCartOrderSummary;\r\n } catch (error) {\r\n //console.log(error);\r\n //console.log(error.response);\r\n //console.log('Error getting Order');\r\n cookie.deleteModifyOrder_Promocode();\r\n throw new Error('Error getting Order');\r\n }\r\n }\r\n}\r\n\r\nexport const useUpdatePromo = (modifyOrderNumber: string, cart: TmCart) => {\r\n const base = '/api/v2/';\r\n const queryClient = useQueryClient();\r\n const cookie: Cookie = new Cookie();\r\n const lang = cookie.Language.substring(0, 2) || 'en';\r\n const userAccessTokenEdp = cookie.UserAccessToken?.Edp;\r\n\r\n //prepare put request payload (current cart contents)\r\n const orderRequest: TmModifyOrderRequest = new TmModifyOrderRequest();\r\n orderRequest.Items = [];\r\n for (let i = 0; i < cart?.CartLines.length; i++) {\r\n const cartLine = cart.CartLines[i];\r\n const itemRequest: TmAddItemRequest = new TmAddItemRequest();\r\n itemRequest.ItemEdp = cartLine.CartLineItem.EdpNo.toString();\r\n itemRequest.ItemQuantity = cartLine.InCart.Quantity;\r\n orderRequest.Items.push(itemRequest);\r\n }\r\n //end put request payload preparation\r\n\r\n return {\r\n ...useMutation({\r\n mutationFn: (promoCode: string) => {\r\n // if (promoCode == null || promoCode == '') {\r\n // delete orderRequest.Promocode;\r\n // } else {\r\n // orderRequest.Promocode = promoCode;\r\n // }\r\n orderRequest.Promocode = promoCode.trim();\r\n return http.put(\r\n `${base}${lang}/accounts/${userAccessTokenEdp}/orders/${modifyOrderNumber}/review`,\r\n orderRequest,\r\n );\r\n },\r\n onSuccess: (response) => {\r\n // update detail view directly\r\n //console.log(response.data, 'order review updated');\r\n const respData = response.data as TmCartOrderSummary;\r\n if (respData.AppliedPromocode != null && respData.AppliedPromocode != '') {\r\n cookie.ModifyOrderPromocode = respData.AppliedPromocode;\r\n } else {\r\n cookie.deleteModifyOrder_Promocode();\r\n }\r\n setupAnalyticsData(cart, response.data);\r\n queryClient.setQueryData(\r\n [\r\n 'orderreview',\r\n cookie.CartGuid,\r\n modifyOrderNumber,\r\n orderRequest.Items,\r\n orderRequest.Promocode ? orderRequest.Promocode : '',\r\n ],\r\n response?.data,\r\n );\r\n },\r\n onError: (error, variables, context) => {\r\n console.log(`${context} ${error}`);\r\n },\r\n }),\r\n };\r\n};\r\n\r\nconst setupAnalyticsData = (cart, reviewCart) => {\r\n //add analyticsData for modified cart\r\n window.analyticsData = window.analyticsData || {};\r\n window.analyticsData.page = window.analyticsData.page || {};\r\n window.analyticsData.page.pageTitle = 'order modification shopping cart';\r\n\r\n window.analyticsData.transaction = window.analyticsData.transaction || {};\r\n window.analyticsData.transaction.type = 'order';\r\n window.analyticsData.transaction.subType = 'modification';\r\n window.analyticsData.transaction.counter = ''; // not available: [current number transaction with same order id]\r\n\r\n window.analyticsData.form = window.analyticsData.form || {};\r\n window.analyticsData.form.formStatus = 'started';\r\n window.analyticsData.form.formStepNumber = '1';\r\n window.analyticsData.form.formStepName = 'shoppingcart';\r\n\r\n window.analyticsData.cart = cart; // cart contain details send by the API call\r\n window.analyticsData.review = reviewCart; // review contain details send by the API call\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useTranslation, Trans } from 'react-i18next';\r\n\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nimport { useAuthenticated } from './hooks/useAuthenticated';\r\nimport { useCart, useRemoveDonation } from './hooks/useCart';\r\nimport { useOrderReview } from './hooks/useOrderReview';\r\nimport { en, fr } from './i18n';\r\n\r\ninterface EasyPayModifyProps {\r\n isModifyOrder: boolean;\r\n}\r\n\r\nexport function EasyPayModify({ isModifyOrder }: EasyPayModifyProps) {\r\n const cookie: Cookie = new Cookie();\r\n const { i18n, t } = useTranslation('shoppingbag');\r\n i18n.addResourceBundle('en', 'shoppingbag', en, true, true);\r\n i18n.addResourceBundle('fr', 'shoppingbag', fr, true, true);\r\n const isAuthenticated = useAuthenticated();\r\n const { data, isLoading } = useCart(isAuthenticated);\r\n const { data: orderReviewData, isFetching } = useOrderReview(isAuthenticated, cookie.ModifyOrderNumber, data);\r\n\r\n return (\r\n <>\r\n {orderReviewData?.EasyPay != null && (\r\n <>\r\n
\r\n
{t('Number of installments')}
\r\n
{orderReviewData?.EasyPay?.NoOfInstallments}
\r\n
\r\n
\r\n
\r\n {t('Your total payment today')}\r\n
\r\n
\r\n \r\n {orderReviewData?.EasyPay?.TotalPaymentToday}\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n {t('Payment amount left after today')}\r\n
\r\n
\r\n {orderReviewData?.EasyPay?.BalanceRemainingAfterToday}\r\n
\r\n
\r\n\r\n
\r\n
\r\n {orderReviewData?.EasyPay?.NoOfFutureMonthlyPayments}{' '}\r\n {t('future monthly payments')}\r\n
\r\n
\r\n {orderReviewData?.EasyPay?.FutureMonthlyPayment}\r\n
\r\n
\r\n \r\n )}\r\n \r\n );\r\n}\r\n","import { useMutation, useQueryClient } from '@tanstack/react-query';\r\nimport React, { useEffect, useMemo } from 'react';\r\n\r\nimport http from '@/tscapi/service/httpservice';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nexport const useEstimatedTax = (cartGuid) => {\r\n const base = '/api/v2/';\r\n const cookie: Cookie = new Cookie();\r\n const lang = cookie.Language.substring(0, 2) || 'en';\r\n const updateProvince = ({ provinceId, onSuccess }) => {\r\n return http.get(`${base}${lang}/carts/${cartGuid}/provincialtaxes/${provinceId}`);\r\n };\r\n return useMutation({\r\n mutationFn: updateProvince,\r\n onSuccess: (response, variables) => {\r\n variables.onSuccess(response.data);\r\n },\r\n onError: (error, variables, context) => {\r\n console.log(`${context} ${error}`);\r\n },\r\n });\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport CheckmarkSvg from '@/components/common/CheckmarkSvg';\r\nimport ImportantSvg from '@/components/common/ImportantSvg';\r\nimport InfoTooltipSvg from '@/components/common/InfoTooltipSvg';\r\nimport { TmCart } from '@/tscapi/model/cart';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nimport { useAuthenticated } from './hooks/useAuthenticated';\r\nimport { useCart } from './hooks/useCart';\r\nimport { useOrderReview, useUpdatePromo } from './hooks/useOrderReview';\r\n\r\ninterface PromocodeProps {\r\n isModifyOrder: boolean;\r\n}\r\n\r\nexport const Promocode = ({ isModifyOrder }: PromocodeProps) => {\r\n const cookie: Cookie = new Cookie();\r\n const isAuthenticated = useAuthenticated();\r\n const { data, isLoading } = useCart(isAuthenticated);\r\n const { data: orderReviewData, isFetching } = useOrderReview(isAuthenticated, cookie.ModifyOrderNumber, data);\r\n const [promoCode, setPromoCode] = useState('');\r\n const [lastShipCode, setLastShipCode] = useState(null);\r\n const [editMode, setEditMode] = useState(false);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [isEmployeePromocodeEnabled, setIsEmployeePromocodeEnabled] = useState(false);\r\n const [isTouched, setIsTouched] = useState(false);\r\n const [errorMessage, setErrorMessage] = useState('');\r\n const [isValidPromo, setIsValidPromo] = useState(true);\r\n const [cartPromocode, setCartPromocode] = useState('');\r\n const mutation = useUpdatePromo(cookie.ModifyOrderNumber, data);\r\n const { t } = useTranslation();\r\n\r\n useEffect(() => {\r\n if (isModifyOrder) {\r\n if (cookie.ModifyOrderPromocode) {\r\n setCartPromocode(cookie.ModifyOrderPromocode);\r\n console.log('ran again');\r\n setPromoCode(cookie.ModifyOrderPromocode);\r\n }\r\n } else if (data) {\r\n //todo, look into this section.\r\n setCartPromocode(data.PromoCode);\r\n if (data.Buyer && data.Buyer.IsEmployee) {\r\n if (typeof window['employeePromocodeEnabled'] != 'undefined') {\r\n setIsEmployeePromocodeEnabled(window['employeePromocodeEnabled']);\r\n }\r\n }\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (orderReviewData && orderReviewData.AppliedPromocode) {\r\n console.log('changed');\r\n setPromoCode(orderReviewData.AppliedPromocode);\r\n }\r\n }, [orderReviewData]);\r\n\r\n useEffect(() => {\r\n if (data?.ShipCode) {\r\n if (data?.ShipCode != lastShipCode) {\r\n //console.log('ship code changed, so clear the error message');\r\n setErrorMessage('');\r\n setLastShipCode(data.ShipCode);\r\n }\r\n }\r\n }, [data, lastShipCode]);\r\n\r\n const onPromoChange = (e) => {\r\n setErrorMessage('');\r\n setPromoCode(e.target.value);\r\n };\r\n const onPromoFocus = (e) => {\r\n setErrorMessage('');\r\n setIsValidPromo(true);\r\n };\r\n\r\n const applyCartPromoCode = async () => {\r\n //do a mutation\r\n mutation.mutate(promoCode, {\r\n onSuccess: () => {\r\n setEditMode(false);\r\n },\r\n onError: (error, variables, context) => {\r\n setErrorMessage(error as string);\r\n // cookie.deleteModifyOrder_Promocode();\r\n setTimeout(() => {\r\n cookie.deleteModifyOrder_Promocode();\r\n }, 10);\r\n\r\n setIsValidPromo(false);\r\n console.log('error grabbed');\r\n },\r\n });\r\n };\r\n\r\n const onKeyDown = (event: React.KeyboardEvent): void => {\r\n setErrorMessage('');\r\n setIsValidPromo(true);\r\n // 'keypress' event misbehaves on mobile so we track 'Enter' key via 'keydown' event\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n applyCartPromoCode();\r\n }\r\n };\r\n\r\n if (!data) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n {(!data.Buyer || (data.Buyer && (!data.Buyer.IsEmployee || isEmployeePromocodeEnabled))) && (\r\n
\r\n <>\r\n {orderReviewData && orderReviewData.AppliedPromocode && !editMode ? (\r\n <>\r\n
\r\n
\r\n \r\n
{orderReviewData.AppliedPromocode}
\r\n
\r\n {\r\n setEditMode(true);\r\n }}\r\n >\r\n {t('Replace')}\r\n \r\n
\r\n \r\n ) : (\r\n <>\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n {t('Apply')}\r\n \r\n
\r\n {!isValidPromo &&
{errorMessage}
}\r\n
\r\n \r\n
\r\n {t('Important!')} {t('Only one promo code can be used at a time.')}\r\n
\r\n
\r\n \r\n )}\r\n \r\n
\r\n )}\r\n \r\n );\r\n};\r\n","import { TmCart } from '@/tscapi/model/cart';\r\n\r\nexport const getShowBagEmpty = (cart: TmCart) => {\r\n //\r\n // derive if bag should show 'empty bag' message (it excludes donation)\r\n //\r\n let isShowBagEmpty = true;\r\n if (!cart) {\r\n isShowBagEmpty = true;\r\n } else {\r\n if (cart?.CartLines?.length > 0) {\r\n //cart has products\r\n if (cart?.CartLines?.length == 1 && cart?.CartLines[0]?.CartLineItem?.IsDonation) {\r\n //cart one products but only donation\r\n isShowBagEmpty = true;\r\n } else {\r\n isShowBagEmpty = false;\r\n }\r\n } else {\r\n //cart has data but no products\r\n isShowBagEmpty = true;\r\n }\r\n }\r\n return isShowBagEmpty;\r\n};\r\n\r\nexport const cartContainsOnlyDonation = (cart: TmCart) => {\r\n //\r\n // derive if any item in cart is a donation\r\n //\r\n if (!cart) {\r\n return false;\r\n } else {\r\n if (cart?.CartLines?.length > 0) {\r\n if (cart?.CartLines?.length == 1 && cart?.CartLines[0]?.CartLineItem?.IsDonation) {\r\n //cart one products but only donation\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n return false;\r\n }\r\n }\r\n};\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { ErrorBoundary } from 'react-error-boundary';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport InfoTooltipSvg from '@/components/common/InfoTooltipSvg';\r\nimport LoadingSvg from '@/components/common/LoadingSvg';\r\nimport { Popover, PopoverTrigger, PopoverContent, PopoverArrow, PopoverClose } from '@/components/common/popover';\r\nimport { createPaypalTransaction } from '@/external/service/paypal.service';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nimport { Dialog } from './Dialog';\r\nimport DonationSelector from './DonationSelector';\r\nimport { Easypay } from './EasyPay';\r\nimport { EasyPayModify } from './EasyPayModify';\r\nimport { useAuthenticated } from './hooks/useAuthenticated';\r\nimport { useCart, useRemoveDonation } from './hooks/useCart';\r\nimport { useCartData } from './hooks/useCartData';\r\nimport { useEstimatedTax } from './hooks/useEstimatedTax';\r\nimport { useOrder } from './hooks/useOrder';\r\nimport { useOrderReview } from './hooks/useOrderReview';\r\nimport { useTaxProvince } from './hooks/useTaxes';\r\nimport { en, fr } from './i18n';\r\nimport { Promocode } from './Promocode';\r\nimport { setupAnalyticsCancelModification } from './utils/analyticsEvents';\r\nimport { getShowBagEmpty, cartContainsOnlyDonation } from './utils/isBagEmpty';\r\n\r\nconst province = [\r\n { name: 'Alberta', id: 'AB' },\r\n { name: 'British Columbia', id: 'BC' },\r\n { name: 'Manitoba', id: 'MB' },\r\n { name: 'New Brunswick', id: 'NB' },\r\n { name: 'Newfoundland and Labrador', id: 'NL' },\r\n { name: 'Northwest Territories', id: 'NT' },\r\n { name: 'Nova Scotia', id: 'NS' },\r\n { name: 'Nunavut', id: 'NU' },\r\n { name: 'Ontario', id: 'ON' },\r\n { name: 'Prince Edward Island', id: 'PE' },\r\n { name: 'Quebec', id: 'QC' },\r\n { name: 'Saskatchewan', id: 'SK' },\r\n { name: 'Yukon Territory', id: 'YT' },\r\n];\r\n\r\ninterface OrderSummaryProps {\r\n isModifyOrder: boolean;\r\n isCheckoutDisabled: boolean;\r\n isFraud: boolean;\r\n isPaypalDisabled: boolean;\r\n easyPayWarningBlockCheckout: boolean;\r\n showEasyPayNotice: boolean;\r\n setIsPaypalDisabled: React.Dispatch>;\r\n setIsCheckoutDisabled: React.Dispatch>;\r\n setEasyWarningBlockCheckout: React.Dispatch>;\r\n setShowEasyPayNotice: React.Dispatch>;\r\n}\r\ninterface EstimatedTaxData {\r\n TaxTotal: string;\r\n GrandTotal: string;\r\n}\r\ndeclare let paypal: any;\r\n\r\nconst OrderSummary = ({\r\n isModifyOrder,\r\n isCheckoutDisabled,\r\n isFraud,\r\n isPaypalDisabled,\r\n setIsPaypalDisabled,\r\n setIsCheckoutDisabled,\r\n easyPayWarningBlockCheckout,\r\n setEasyWarningBlockCheckout,\r\n setShowEasyPayNotice,\r\n showEasyPayNotice,\r\n}: OrderSummaryProps) => {\r\n //State\r\n const paypalRef = useRef();\r\n const cookie: Cookie = new Cookie();\r\n const isDonationFlowEnabled = window['donationFlowEnabled'];\r\n const [estTaxData, setEstTaxData] = useState(null);\r\n const [isPaypalLoaded, setIsPaypalLoaded] = useState(false);\r\n const [paypalPaymentApproved, setPaypalPaymentApproved] = useState(false);\r\n const [hidePaypalButton, setHidePaypalButton] = useState(false);\r\n const [isPaypalButtonRendered, setIsPaypalButtonRendered] = useState(false);\r\n const [isModifyCheckoutDisabled, setIsModifyCheckoutDisabled] = useState(true);\r\n const [showCancelDialog, setShowCancelDialog] = useState(false);\r\n //Translation\r\n const { i18n, t } = useTranslation('shoppingbag');\r\n i18n.addResourceBundle('en', 'shoppingbag', en, true, true);\r\n i18n.addResourceBundle('fr', 'shoppingbag', fr, true, true);\r\n //React query data & hooks\r\n const isAuthenticated = useAuthenticated();\r\n const order = useOrder(isAuthenticated, cookie.ModifyOrderNumber);\r\n const { data } = useCart(isAuthenticated);\r\n const {\r\n data: orderReviewData,\r\n isFetching,\r\n isLoading,\r\n } = useOrderReview(isAuthenticated, cookie.ModifyOrderNumber, data);\r\n const { donationProduct, showSummaryDetails } = useCartData(data);\r\n const mutation = useRemoveDonation(donationProduct?.Id, cookie.CartGuid);\r\n const { taxProvince, setTaxProvince, defaultTax } = useTaxProvince();\r\n const estTaxMutation = useEstimatedTax(cookie.CartGuid);\r\n\r\n const onCheckout = () => {\r\n if (isFraud || isCheckoutDisabled) {\r\n return;\r\n }\r\n if (!easyPayWarningBlockCheckout) {\r\n window.location.href = '/pages/expresscheckout';\r\n } else {\r\n setShowEasyPayNotice(true);\r\n }\r\n };\r\n\r\n //Setup Paypal library\r\n useEffect(() => {\r\n if (\r\n data != null &&\r\n data?.OrderSummary?.TotalQuantity > 0 &&\r\n !isFraud &&\r\n !isPaypalDisabled &&\r\n !isCheckoutDisabled &&\r\n !isModifyOrder\r\n ) {\r\n if (!isPaypalLoaded) {\r\n const paypalClientId = window['payPalClientId'];\r\n const script = document.createElement('script');\r\n script.src =\r\n 'https://www.paypal.com/sdk/js?client-id=' +\r\n paypalClientId +\r\n '¤cy=CAD' +\r\n // + \"&debug=true\"\r\n '&locale=en_CA&disable-funding=credit,card&commit=false&intent=order';\r\n script.setAttribute('data-namespace', 'paypal');\r\n script.addEventListener('load', () => setIsPaypalLoaded(true));\r\n document.body.appendChild(script);\r\n }\r\n if (isPaypalLoaded && !isPaypalButtonRendered) {\r\n const renderPayPal = async () => {\r\n setIsPaypalButtonRendered(true);\r\n paypal\r\n .Buttons({\r\n style: {\r\n layout: 'vertical',\r\n color: 'gold',\r\n shape: 'rect',\r\n label: 'checkout',\r\n },\r\n createOrder: async (ppData, actions) => {\r\n //clear paypal info to reapprove new payment transaction\r\n const cookie = new Cookie();\r\n cookie.deletePaypalInfo();\r\n const paymentResponse = await getPayPalPaymentResponse(data);\r\n cookie.PaypalPaymentId = paymentResponse.id;\r\n return paymentResponse.token;\r\n },\r\n onApprove: async (data, actions) => {\r\n setPaypalPaymentApproved(true);\r\n window.location.href = '/pages/expresscheckout?source=shoppingbag';\r\n },\r\n onCancel: () => {\r\n const cookie = new Cookie();\r\n cookie.deletePaypalInfo();\r\n },\r\n onError: (err) => {\r\n console.error(err);\r\n },\r\n })\r\n .render(paypalRef.current);\r\n };\r\n setTimeout(() => {\r\n renderPayPal();\r\n });\r\n }\r\n }\r\n }, [isPaypalLoaded, data, isCheckoutDisabled, isFraud, isPaypalDisabled, isPaypalButtonRendered, isModifyOrder]);\r\n\r\n // if ordermod checkout button should be disabled\r\n useEffect(() => {\r\n if (isModifyOrder) {\r\n if (orderReviewData?.PreviousOrderTotal != orderReviewData?.GrandTotal) {\r\n setIsModifyCheckoutDisabled(false);\r\n } else {\r\n setIsModifyCheckoutDisabled(true);\r\n }\r\n }\r\n }, [orderReviewData?.GrandTotal, orderReviewData?.PreviousOrderTotal, setIsModifyCheckoutDisabled, isModifyOrder]);\r\n\r\n // show/hide paypal button\r\n useEffect(() => {\r\n if (isPaypalDisabled || data?.OrderSummary?.TotalQuantity == 0 || isCheckoutDisabled) {\r\n setHidePaypalButton(true);\r\n } else {\r\n setHidePaypalButton(false);\r\n }\r\n }, [isPaypalDisabled, data?.OrderSummary?.TotalQuantity, isCheckoutDisabled]);\r\n\r\n const getPayPalPaymentResponse = async (cartData) => {\r\n try {\r\n const result = await createPaypalTransaction(cartData);\r\n if (result && result.data && result.data.token) {\r\n return result.data;\r\n }\r\n } catch (error) {\r\n //setErrorMessage(error);\r\n console.log(error);\r\n }\r\n };\r\n\r\n // if (isModifyOrder && isLoading) {\r\n // return (\r\n //
\r\n //
\r\n // \r\n //
\r\n // {t(\r\n // \"Please wait while we retrieve your order summary. If it's taking too long please refresh the page.\",\r\n // )}\r\n // Load\r\n //
\r\n //
\r\n //
\r\n // );\r\n // }\r\n\r\n if (isFetching) {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n {t(\r\n \"Please wait while we retrieve your order summary. If it's taking too long please refresh the page.\",\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n if (order.error) {\r\n return <>Error loading the Order Summary;\r\n }\r\n\r\n if (isModifyOrder && order.data == undefined) {\r\n return null;\r\n }\r\n\r\n const itemNumbers = ['339880', '339881', '339882', '339883', '339884'];\r\n\r\n return (\r\n
\r\n \r\n {isModifyOrder && (\r\n

\r\n {t('Order summary')} ({order?.data?.OrderSummary.Quantity + data?.OrderSummary?.TotalQuantity}{' '}\r\n {order?.data?.OrderSummary.Quantity + data?.OrderSummary?.TotalQuantity < 2\r\n ? t('item')\r\n : t('items')}\r\n )\r\n

\r\n )}\r\n {!isModifyOrder && data && data.OrderSummary && data?.OrderSummary?.TotalQuantity != 0 && (\r\n

\r\n {t('Order summary')} ({data?.OrderSummary?.TotalQuantity}{' '}\r\n {data?.OrderSummary?.TotalQuantity < 2 ? t('item') : t('items')})\r\n

\r\n )}\r\n {/* PROMO CODE */}\r\n {isModifyOrder && (\r\n <>\r\n \r\n \r\n )}\r\n {/* DONATION SELECTOR AND REMOVE */}\r\n {isDonationFlowEnabled && (\r\n <>\r\n {!isModifyOrder && (\r\n null}>\r\n \r\n \r\n )}\r\n {!isModifyOrder && donationProduct?.CartLineItem && (\r\n
\r\n
\r\n {t('Jays Care Donation')}\r\n {\r\n mutation.mutate();\r\n }}\r\n >\r\n {t('Remove')}\r\n \r\n
\r\n
\r\n {donationProduct?.CartLineItem?.AppliedPrice}\r\n
\r\n
\r\n )}\r\n \r\n )}\r\n {showSummaryDetails && (\r\n <>\r\n {/* We hide summary details if only a donation is in cart */}\r\n {/* SUBTOTAL */}\r\n \r\n
\r\n {t('Subtotal')}\r\n
\r\n
\r\n {isModifyOrder && {orderReviewData?.MerchandiseSubTotal}}\r\n {!isModifyOrder && {data?.OrderSummary?.MerchandiseSubTotal}}\r\n
\r\n
\r\n {/* MULTIPACK */}\r\n {data?.OrderSummary.MultipackSavingsAmount > 0 &&\r\n data?.OrderSummary.MultipackSavingsAmount !=\r\n data?.OrderSummary.DefaultShippingHandlingAmount ? (\r\n <>\r\n
\r\n
\r\n {t('Multipack shipping')}\r\n \r\n {' '}\r\n {t('discount')}\r\n \r\n \r\n \r\n {t('Multipack Shipping Discount Tooltip')}\r\n \r\n \r\n \r\n \r\n {t('Save')} {data?.OrderSummary.MultipackSavings} {t('with')}{' '}\r\n {t('Multipack Shipping Discount')}{' '}\r\n {t('when you purchase two or more items.')}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n -{data?.OrderSummary.MultipackSavings}\r\n
\r\n
\r\n \r\n ) : null}\r\n {/* SHIPPING */}\r\n
\r\n
\r\n {t('Shipping')}\r\n
\r\n
\r\n {isModifyOrder && {orderReviewData?.ShippingHandling}}\r\n {!isModifyOrder && {data?.OrderSummary.ShippingHandling}}\r\n
\r\n
\r\n {/* SHIP150 Modify */}\r\n {/* Commented out because DefaultShippingHandling does not contain the right data */}\r\n {/* {isModifyOrder && (\r\n <>\r\n {orderReviewData?.AppliedPromocode?.startsWith('SHIP') && (\r\n <>\r\n
\r\n
\r\n \r\n {orderReviewData?.AppliedPromocode}\r\n \r\n
\r\n
\r\n \r\n {orderReviewData?.DefaultShippingHandling != null\r\n ? orderReviewData?.DefaultShippingHandling\r\n : '$0.00'}\r\n \r\n
\r\n
\r\n \r\n )}\r\n \r\n )} */}\r\n {/* SHIP150 */}\r\n {!isModifyOrder && (\r\n <>\r\n {data?.PromoCode?.startsWith('SHIP') && (\r\n <>\r\n
\r\n
\r\n {data?.PromoCode}\r\n
\r\n
\r\n \r\n -{data?.OrderSummary.MultipackSavings}\r\n \r\n
\r\n
\r\n \r\n )}\r\n \r\n )}\r\n {/* DISCOUNT Modify */}\r\n {isModifyOrder && orderReviewData?.DiscountAmount > 0 && (\r\n
\r\n
\r\n {orderReviewData?.AppliedPromocode == '' ||\r\n orderReviewData?.AppliedPromocode == null ||\r\n (orderReviewData?.AppliedPromocode != '' &&\r\n orderReviewData?.AppliedPromocode?.startsWith('SHIP')) ? (\r\n {t('DISCOUNT')}\r\n ) : (\r\n {orderReviewData?.AppliedPromocode}\r\n )}\r\n
\r\n
\r\n {orderReviewData.DiscountAmount > 0 && (\r\n -{orderReviewData?.Discount}\r\n )}\r\n
\r\n
\r\n )}\r\n {/* DISCOUNT */}\r\n {!isModifyOrder && data?.OrderSummary?.DiscountAmount > 0 && (\r\n
\r\n
\r\n {data?.PromoCode == '' ||\r\n (data?.PromoCode != '' && data?.PromoCode?.startsWith('SHIP')) ? (\r\n {t('DISCOUNT')}\r\n ) : (\r\n {data?.PromoCode}\r\n )}\r\n
\r\n
\r\n -{data?.OrderSummary?.Discount}\r\n
\r\n
\r\n )}\r\n {/* GIFTCARD Modify */}\r\n {isModifyOrder && !!orderReviewData?.GiftCard && (\r\n
\r\n
\r\n {t('Gift Card')}\r\n
\r\n
\r\n {isModifyOrder && (\r\n -{orderReviewData?.GiftCard}\r\n )}\r\n
\r\n
\r\n )}\r\n {/* GIFTCARD */}\r\n {!isModifyOrder && !!data?.OrderSummary.GiftCard && (\r\n
\r\n
\r\n {t('Gift Card')}\r\n
\r\n
\r\n -{data?.OrderSummary?.GiftCard}\r\n
\r\n
\r\n )}\r\n {/* TAXES */}\r\n
\r\n
\r\n {isModifyOrder && (\r\n <>\r\n {t('Taxes')}\r\n ({orderReviewData?.ShipmentProvince})\r\n \r\n )}\r\n {!isModifyOrder && (\r\n <>\r\n {t('Est. Taxes')}\r\n {\r\n const val = e.target.value;\r\n estTaxMutation.mutate({\r\n provinceId: e.target.value,\r\n onSuccess: (data) => {\r\n setEstTaxData(data);\r\n setTaxProvince(val);\r\n },\r\n });\r\n }}\r\n >\r\n {province.map((province, index) => (\r\n \r\n ))}\r\n \r\n \r\n )}\r\n
\r\n\r\n
\r\n {isModifyOrder && {orderReviewData?.TaxTotal}}\r\n {!isModifyOrder && (\r\n <>\r\n {taxProvince != defaultTax ? (\r\n {estTaxData?.TaxTotal}\r\n ) : (\r\n {data?.OrderSummary?.TaxTotal}\r\n )}\r\n \r\n )}\r\n
\r\n
\r\n \r\n )}\r\n {/* TOTAL Modify */}\r\n {isModifyOrder && (\r\n
\r\n
\r\n {orderReviewData?.PreviousOrderTotal != orderReviewData?.GrandTotal ? (\r\n {t('NEW TOTAL')}\r\n ) : (\r\n {t('Total')}\r\n )}\r\n
\r\n
\r\n \r\n {orderReviewData?.GrandTotal}\r\n \r\n
\r\n
\r\n )}\r\n {/* TOTAL */}\r\n {!isModifyOrder && data?.OrderSummary?.TotalQuantity > 0 && (\r\n
\r\n
\r\n {t('Total')}\r\n
\r\n
\r\n {taxProvince != defaultTax ? (\r\n \r\n {estTaxData?.GrandTotal}\r\n \r\n ) : (\r\n \r\n {data?.OrderSummary?.GrandTotal}\r\n \r\n )}\r\n
\r\n
\r\n )}\r\n\r\n {/* ORIGINAL TOTAL Modify */}\r\n {isModifyOrder && orderReviewData?.PreviousOrderTotal != orderReviewData?.GrandTotal && (\r\n
\r\n
\r\n
{t('Original total')}
\r\n
{orderReviewData?.PreviousOrderTotal}
\r\n
\r\n
\r\n
{t('Change to original total')}
\r\n
{orderReviewData?.OrderTotalDifference}
\r\n
\r\n
\r\n )}\r\n {/* EASY PAY */}\r\n {isModifyOrder ? (\r\n <>\r\n \r\n \r\n ) : (\r\n <>\r\n \r\n \r\n )}\r\n\r\n {isModifyOrder && (\r\n <>\r\n {/* CHECKOUT BUTTON */}\r\n {\r\n onCheckout();\r\n }}\r\n >\r\n \r\n {t('Proceed to checkout')} (\r\n {order?.data?.OrderSummary.Quantity + data?.OrderSummary?.TotalQuantity}{' '}\r\n {order?.data?.OrderSummary.Quantity + data?.OrderSummary?.TotalQuantity < 2\r\n ? t('item')\r\n : t('items')}\r\n )\r\n \r\n \r\n {/* CANCEL ORDER MODIFICATION MODE */}\r\n {\r\n setShowCancelDialog(true);\r\n }}\r\n >\r\n {t('Cancel modification')}\r\n \r\n \r\n )}\r\n {/* CHECKOUT BUTTON */}\r\n {!isModifyOrder && data?.OrderSummary?.TotalQuantity > 0 && (\r\n {\r\n onCheckout();\r\n }}\r\n >\r\n \r\n {t('Proceed to checkout')} ({data?.OrderSummary.TotalQuantity}{' '}\r\n {data?.OrderSummary.TotalQuantity < 2 ? t('item') : t('items')})\r\n \r\n \r\n )}\r\n {/* PAYPAL BUTTON */}\r\n \r\n {/* SUMMARY GIFTCARD MSG */}\r\n {!isModifyOrder && data?.OrderSummary?.TotalQuantity > 0 && (\r\n
\r\n
{t('Have a gift card or promo code?')}
\r\n
{t('Enter it during checkout.')}
\r\n
\r\n )}\r\n {showCancelDialog && (\r\n <>\r\n {\r\n setShowCancelDialog(!showCancelDialog);\r\n }}\r\n >\r\n

\r\n {t(\r\n 'You have unsaved changes to your Order Modification. If you cancel now your order will not be modified. The original order that you placed will be processed as is.',\r\n )}\r\n

\r\n
\r\n {\r\n cookie.deleteModifyOrderInfo();\r\n setupAnalyticsCancelModification();\r\n window.location.href = '/pages/myaccount/orderstatus';\r\n setShowCancelDialog(!showCancelDialog);\r\n }}\r\n >\r\n {t('Cancel modification')}\r\n \r\n {\r\n setShowCancelDialog(!showCancelDialog);\r\n }}\r\n >\r\n {t('Stay on page')}\r\n \r\n
\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default OrderSummary;\r\n","import { useMemo, useState, useEffect } from 'react';\r\n\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nimport { useAuthenticated } from './useAuthenticated';\r\nimport { useCart, useRemoveDonation } from './useCart';\r\n\r\nexport const useTaxProvince = () => {\r\n const isAuthenticated = useAuthenticated();\r\n const [defaultTax, setDefaultTax] = useState('ON');\r\n const [taxProvince, setTaxProvince] = useState('ON');\r\n const [taxProvinceId, setTaxProvinceId] = useState(8);\r\n const { data, isLoading } = useCart(isAuthenticated);\r\n const cookie: Cookie = new Cookie();\r\n\r\n const setProvinceId = (ID) => {\r\n if (ID) {\r\n setTaxProvinceId(ID);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (isAuthenticated) {\r\n if (data?.ShippingAddress != null) {\r\n setTaxProvince(data?.ShippingAddress.State);\r\n setDefaultTax(data?.ShippingAddress.State);\r\n } else {\r\n if (data?.Buyer?.BillingAddress?.State != null) {\r\n setTaxProvince(data?.Buyer?.BillingAddress?.State);\r\n setDefaultTax(data?.Buyer?.BillingAddress?.State);\r\n } else {\r\n setTaxProvince('ON');\r\n setDefaultTax('ON');\r\n }\r\n }\r\n } else {\r\n setTaxProvince('ON');\r\n setDefaultTax('ON');\r\n }\r\n }, [data, cookie.CartProvince, isAuthenticated]);\r\n\r\n return { taxProvince, setTaxProvince, defaultTax };\r\n};\r\n","import { useIsFetching, useIsMutating } from '@tanstack/react-query';\r\nimport React, { useEffect, useState } from 'react';\r\nimport { ErrorBoundary } from 'react-error-boundary';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport LoadingSvg from '@/components/common/LoadingSvg';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nimport { EmptyBag } from './EmptyBag';\r\nimport { FreeShippingNotice } from './FreeShippingNotice';\r\nimport { useAuthenticated } from './hooks/useAuthenticated';\r\nimport { useCart, useUpdateCart } from './hooks/useCart';\r\nimport { useOrder } from './hooks/useOrder';\r\nimport { en, fr } from './i18n';\r\nimport Items from './Items';\r\nimport { ModifyOrderHero } from './ModifyOrderHero';\r\nimport { Notices } from './Notices';\r\nimport OrderSummary from './OrderSummary';\r\nimport { getShowBagEmpty } from './utils/isBagEmpty';\r\n\r\nexport const ShoppingBag = () => {\r\n //state\r\n const cookie: Cookie = new Cookie();\r\n const [isModifyOrder, setIsModifyOrder] = useState(false);\r\n const [isCheckoutDisabled, setIsCheckoutDisabled] = useState(false);\r\n const [isFraud, setIsFraud] = useState(false);\r\n const [isPaypalDisabled, setIsPaypalDisabled] = useState(false);\r\n const [isBagEmpty, setIsBagEmpty] = useState(true);\r\n const [easyPayWarningBlockCheckout, setEasyWarningBlockCheckout] = useState(false);\r\n const [showEasyPayNotice, setShowEasyPayNotice] = useState(false);\r\n //translation\r\n const { i18n, t } = useTranslation('shoppingbag');\r\n i18n.addResourceBundle('en', 'shoppingbag', en, true, true);\r\n i18n.addResourceBundle('fr', 'shoppingbag', fr, true, true);\r\n //react query data & hooks\r\n const isAuthenticated = useAuthenticated();\r\n const cart = useCart(isAuthenticated);\r\n const isMutating = useIsMutating();\r\n const updateMutation = useUpdateCart(cookie?.UserAccessToken?.Edp, cookie?.CartGuid);\r\n const order = useOrder(isAuthenticated, cookie.ModifyOrderNumber);\r\n\r\n useEffect(() => {\r\n //check the bag if modify order mode\r\n if (cookie.ModifyOrderNumber != undefined && cookie.ModifyOrderNumber.length > 0) {\r\n setIsModifyOrder(true);\r\n } else {\r\n setIsModifyOrder(false);\r\n }\r\n }, [cookie.ModifyOrderNumber]);\r\n\r\n useEffect(() => {\r\n setIsBagEmpty(getShowBagEmpty(cart.data));\r\n if (cart?.data?.OrderSummary?.EasyPay != undefined) {\r\n setIsPaypalDisabled(true);\r\n } else {\r\n setIsPaypalDisabled(false);\r\n }\r\n }, [cart]);\r\n\r\n // if (cookie.ModifyOrderNumber != undefined && cookie.ModifyOrderNumber.length > 0 && !isModifyOrder) {\r\n // setIsModifyOrder(true);\r\n // } else {\r\n // if (isModifyOrder) {\r\n // setIsModifyOrder(false);\r\n // }\r\n // }\r\n\r\n // if (isModifyOrder) {\r\n // console.log('modify order mode');\r\n // } else {\r\n // console.log('is not modify order mode');\r\n // cookie.ModifyOrderNumber = 'Z31987850000';\r\n // }\r\n // cookie.ModifyOrderNumber = 'Z31987850000';\r\n // if (isFetching) {\r\n // console.warn('isFetching');\r\n // }\r\n // if (updateMutation.isLoading) {\r\n // console.warn('loading');\r\n // }\r\n // if (isMutating) {\r\n // console.warn('ismutating');\r\n // }\r\n\r\n return (\r\n
\r\n \r\n
\r\n {isBagEmpty && !isModifyOrder && }\r\n {!isBagEmpty && !isModifyOrder && (\r\n <>\r\n

{t('Your Shopping Bag')}

\r\n

\r\n {t(\r\n 'Popular items sell out fast. Adding an item to your bag doesn’t hold it. Get what you love before it’s gone.',\r\n )}\r\n

\r\n \r\n )}\r\n\r\n {!isModifyOrder && (\r\n <>\r\n {/* CHECKOUT BUTTON MOBILE ONLY */}\r\n {cart.data?.OrderSummary?.TotalQuantity > 0 && (\r\n {\r\n if (isFraud || isCheckoutDisabled) {\r\n return;\r\n }\r\n if (!easyPayWarningBlockCheckout) {\r\n window.location.href = '/pages/expresscheckout';\r\n } else {\r\n setShowEasyPayNotice(true);\r\n }\r\n //window.location.href = '/pages/expresscheckout';\r\n }}\r\n aria-label={t('Proceed to checkout')}\r\n >\r\n \r\n {t('Proceed to checkout')} ({cart.data?.OrderSummary?.TotalQuantity}{' '}\r\n {order?.data?.OrderSummary.Quantity + cart.data?.OrderSummary?.TotalQuantity < 2\r\n ? t('item')\r\n : t('items')}\r\n )\r\n \r\n \r\n )}\r\n \r\n )}\r\n {/* freeshipping notice */}\r\n \r\n {/* Notices */}\r\n \r\n {/* List of products in bag */}\r\n \r\n {!isModifyOrder && (\r\n \r\n {t('Back to shopping')}\r\n \r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n
{' '}\r\n {updateMutation.isLoading || isMutating || cart.isLoading ? (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n ) : null}\r\n
\r\n );\r\n};\r\nconst ErrorFallback = () => {\r\n return (\r\n
\r\n
\r\n
\r\n Error loading the Order Summary.\r\n
Please reload the page.\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import { createSyncStoragePersister } from '@tanstack/query-sync-storage-persister';\r\nimport { QueryClient, QueryClientProvider, useQuery } from '@tanstack/react-query';\r\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\r\nimport { PersistQueryClientProvider } from '@tanstack/react-query-persist-client';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom/client';\r\nimport { ErrorBoundary } from 'react-error-boundary';\r\n\r\nimport { ShoppingBag } from './ShoppingBag';\r\n\r\nconst ErrorFallback = () => {\r\n return (\r\n
\r\n
\r\n

\r\n Error loading the bag.\r\n

\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst ShoppingBagApp = () => {\r\n const client = new QueryClient({\r\n defaultOptions: {\r\n queries: {\r\n cacheTime: 1000 * 60 * 60 * 24, // 24 hours\r\n staleTime: 1000 * 5, //30 seconds\r\n },\r\n },\r\n });\r\n const persister = createSyncStoragePersister({\r\n storage: window.localStorage,\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst id = 'shopping-bag';\r\nconst element = document.getElementById(id);\r\nconst root = ReactDOM.createRoot(element);\r\nif (element) {\r\n root.render(\r\n \r\n \r\n \r\n );\r\n}\r\n","/* eslint-disable prefer-rest-params */\r\n/* eslint-disable prefer-const */\r\n/* eslint-disable @typescript-eslint/camelcase */\r\nimport React, { Component } from 'react';\r\n\r\nimport TooltipClose from '@/components/common/TooltipCloseSvg';\r\nimport { TmCart } from '@/tscapi/model/cart';\r\nimport { TmProduct, TmEdp } from '@/tscapi/model/product';\r\nimport { Cookie } from '@/tscapi/utils/cookie';\r\n\r\nconst clientID = 'tsc';\r\nconst options = { autoCalculate: false };\r\n\r\ninterface MyState {\r\n selectedEdpData: TmEdp;\r\n productData: TmProduct;\r\n itemNo: number;\r\n foundDuplicate: boolean;\r\n showBanner: boolean;\r\n widgetConfig: {};\r\n foundDuplicateProductName: string;\r\n}\r\ninterface MyProps {\r\n detail: { cart: TmCart };\r\n}\r\n\r\nexport default class TrueFitCart extends Component {\r\n constructor(props: Readonly) {\r\n super(props);\r\n }\r\n\r\n state = {\r\n selectedEdpData: null,\r\n productData: null,\r\n itemNo: null,\r\n foundDuplicate: false,\r\n showBanner: false,\r\n widgetConfig: null,\r\n foundDuplicateProductName: null,\r\n };\r\n\r\n loadTrueFitLibrary(): void {\r\n const queryStrings = ['www.tsc.ca', 'origin1.tsc.ca', 'origin1s.tsc.ca'];\r\n function includes(array, element) {\r\n return array.indexOf(element) >= 0;\r\n }\r\n const pageUrl = window.location.hostname;\r\n const isProd = includes(queryStrings, pageUrl);\r\n const environment = isProd ? 'prod' : 'staging';\r\n /* eslint-disable */\r\n // prettier-ignore\r\n (function(r,e,o){\r\n var w=window,d=document,t,s,x;\r\n w.tfcapi=t=w.tfcapi||function(){t.q=t.q||[]; t.q.push(arguments);};\r\n t('init', {storeKey: r, environment: e, ...o});\r\n x=d.getElementsByTagName('script')[0];\r\n s=d.createElement('script');\r\n s.type='text/javascript';s.async=true;\r\n s.src='https://'+r+'-cdn'+(e==='dev'||e==='staging'?'.'+e:'')+ '.truefitcorp.com/fitrec/'+r+'/js/tf-integration.js';\r\n x.parentNode.insertBefore(s,x);\r\n // Don't change anything above this line\r\n })(clientID,environment,{autoCalculate:false});\r\n /* eslint-enable */\r\n }\r\n\r\n unhideBannerArea() {\r\n const noticeBanner = document.getElementById('cartNotices') as HTMLElement;\r\n if (noticeBanner) {\r\n if (noticeBanner.classList.contains('hidden')) {\r\n noticeBanner.classList.remove('hidden');\r\n }\r\n }\r\n }\r\n\r\n calculateAvailableSizes(selectedEdpData, productData) {\r\n //return colon separated list of sizes\r\n let result = [] as any;\r\n const allAvailableSizes = [];\r\n if (productData.Sizes != null) {\r\n productData.Sizes.forEach((size) => {\r\n result = productData.Edps.filter(\r\n (edps) =>\r\n edps.SizeDimensionId == size.DimensionId &&\r\n edps.StyleDimensionId == selectedEdpData.StyleDimensionId &&\r\n edps.Inventory > 0,\r\n );\r\n if (result.length > 0) {\r\n allAvailableSizes.push(result[0].Size);\r\n }\r\n });\r\n }\r\n //console.log(allAvailableSizes.join(':'));\r\n return allAvailableSizes.join(':');\r\n }\r\n configWidget(): void {\r\n const cookie: Cookie = new Cookie();\r\n let userID = null;\r\n\r\n const itemNo = this.state.selectedEdpData.ItemNo.replace(/-/g, '');\r\n\r\n const productEdp = this.props.detail.cart.Products.filter((x) => {\r\n return x.ItemNo == itemNo;\r\n });\r\n\r\n if (\r\n cookie.UserAccessToken != undefined &&\r\n cookie.UserAccessToken.Token.length > 0 &&\r\n cookie.UserAccessToken.Edp > 0\r\n ) {\r\n userID = cookie.UserAccessToken.Edp;\r\n }\r\n const widgetConfig = {\r\n products: {},\r\n };\r\n if (userID) {\r\n widgetConfig['userId'] = userID;\r\n widgetConfig['registered'] = userID ? true : false;\r\n }\r\n widgetConfig['locale'] = cookie.Language;\r\n\r\n widgetConfig.products[itemNo] = {\r\n availableSizes: this.calculateAvailableSizes(this.state.selectedEdpData, productEdp[0]),\r\n };\r\n if (this.state.selectedEdpData.Style) {\r\n widgetConfig.products[itemNo]['colorId'] = this.state.selectedEdpData.Style;\r\n }\r\n this.setState({ widgetConfig: widgetConfig }, window.tfcapi('calculate', widgetConfig));\r\n if (window.tfcapi) {\r\n window.tfcapi(\r\n 'event',\r\n 'tfc-fitrec-product',\r\n 'widgetResult',\r\n function (context) {\r\n this.setState({ showBanner: true }, this.unhideBannerArea());\r\n }.bind(this),\r\n );\r\n }\r\n }\r\n\r\n bannerText = () => {\r\n const cookie: Cookie = new Cookie();\r\n return cookie.Language.toLowerCase() == 'en_ca'\r\n ? `We noticed you have two sizes in your cart for ${this.state.foundDuplicateProductName}.`\r\n : `Nous avons remarqué que vous avez deux tailles dans votre panier pour ${this.state.foundDuplicateProductName}.`;\r\n };\r\n bannerText2 = () => {\r\n const cookie: Cookie = new Cookie();\r\n return cookie.Language.toLowerCase() == 'en_ca'\r\n ? 'Use True Fit to find your exact size.'\r\n : 'Utilisez True Fit pour trouver votre taille exacte.';\r\n };\r\n\r\n hideShowMerge = () => {\r\n this.setState({ showBanner: false });\r\n };\r\n\r\n isSizeSampling = (detail) => {\r\n //check for duplicate product item numbers, with identical styles but different edps\r\n // also checks if elgible (by checking producttypepath id against fashion (100047) and shoes (128153)\r\n let productIndex = -1;\r\n let updatedDetails = this.props.detail;\r\n if (detail) {\r\n updatedDetails = detail;\r\n }\r\n for (let i = updatedDetails.cart.CartLines.length - 1; i >= 0; i--) {\r\n productIndex = updatedDetails.cart.CartLines.findIndex((x) => {\r\n return (\r\n x.CartLineItem.ItemNo === updatedDetails.cart.CartLines[i].CartLineItem.ItemNo &&\r\n x.CartLineItem.StyleDimensionId ===\r\n updatedDetails.cart.CartLines[i].CartLineItem.StyleDimensionId &&\r\n x.CartLineItem.EdpNo !== updatedDetails.cart.CartLines[i].CartLineItem.EdpNo &&\r\n ['100047', '128153', '3002802'].includes(\r\n updatedDetails.cart.Products[\r\n updatedDetails.cart.Products.findIndex((y) => {\r\n return y.ItemNo === x.CartLineItem.ItemNo;\r\n })\r\n ].ProductTypePath[0]?.FacetValueId,\r\n )\r\n );\r\n });\r\n //console.log(productIndex);\r\n if (productIndex != -1) {\r\n this.setState(\r\n {\r\n foundDuplicate: true,\r\n foundDuplicateProductName: updatedDetails.cart.Products.find(\r\n (x) => x.ItemNo == updatedDetails.cart.CartLines[productIndex].InCart.ItemNo,\r\n ).Name,\r\n selectedEdpData: updatedDetails.cart.CartLines[i].CartLineItem,\r\n itemNo: parseInt(updatedDetails.cart.CartLines[i].CartLineItem.ItemNo, 10),\r\n },\r\n () => {\r\n // found duplicate, load truefit library and setup widget in dom\r\n this.loadTrueFitLibrary();\r\n this.configWidget();\r\n },\r\n );\r\n break;\r\n } else {\r\n this.setState({\r\n foundDuplicate: false,\r\n selectedEdpData: updatedDetails.cart.CartLines[i].CartLineItem,\r\n itemNo: parseInt(updatedDetails.cart.CartLines[i].CartLineItem.ItemNo, 10),\r\n });\r\n }\r\n }\r\n };\r\n setupEventListener = () => {\r\n document.addEventListener(\r\n 'tf-update',\r\n function (e: CustomEvent) {\r\n const truefitCartElement = document.getElementById('tf-cart-wrapper') as HTMLElement;\r\n if (truefitCartElement != undefined) {\r\n //do something with {e.detail}\r\n //check if the customer has 2 identical products in cart (but of different sizes)\r\n this.isSizeSampling(e.detail);\r\n }\r\n }.bind(this),\r\n false,\r\n );\r\n };\r\n componentDidMount() {\r\n //bind eventhandler\r\n\r\n this.isSizeSampling(null);\r\n this.setupEventListener();\r\n }\r\n\r\n render() {\r\n const styles = {\r\n truefit__container: {\r\n display: this.state.showBanner ? 'flex' : 'none',\r\n background: '#fff',\r\n border: '2px solid #ea0c0c',\r\n padding: '20px 20px',\r\n },\r\n truefit__logo: {\r\n width: '24px',\r\n height: '20px',\r\n marginRight: '15px',\r\n },\r\n truefit__message: { fontSize: '14px', lineHeight: '20px' },\r\n truefit__button: { textDecoration: 'underline', border: '0' },\r\n };\r\n return (\r\n <>\r\n {this.state.foundDuplicate && (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {this.bannerText()}\r\n
\r\n {this.bannerText2()}\r\n \r\n {this.state.selectedEdpData && (\r\n \r\n )}\r\n \r\n
\r\n
\r\n \r\n
\r\n )}\r\n \r\n );\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport ReactDOM from 'react-dom/client';\r\n\r\nimport TrueFitCart from './truefit-cart.component';\r\ndocument.addEventListener(\r\n 'tf-ready',\r\n function (e: CustomEvent) {\r\n const checkExist = setInterval(function () {\r\n const truefitCartElement = document.getElementById('tf-cart-wrapper') as HTMLElement;\r\n if (truefitCartElement != undefined) {\r\n const root = ReactDOM.createRoot(truefitCartElement);\r\n clearInterval(checkExist);\r\n root.render(\r\n \r\n \r\n ,\r\n );\r\n }\r\n }, 100); // check every 100ms\r\n }.bind(this),\r\n false,\r\n);\r\n","export class Payment {\r\n id: string; //response\r\n token: string;\r\n create_time: string; //response\r\n update_time: string; //response\r\n state: string; //response\r\n intent: string;\r\n payer: Payer;\r\n transactions: Transaction[];\r\n note_to_payer: string;\r\n redirect_urls: RedirectUrls;\r\n payee: Payee;\r\n cartGuid: string; // for logging\r\n}\r\n\r\nexport class Payer {\r\n payment_method: string;\r\n status: string;\r\n payer_info: PayerInfo;\r\n}\r\n\r\nexport class Payee {\r\n email: string;\r\n merchant_id: string;\r\n}\r\n\r\nexport class PayerInfo {\r\n email: string;\r\n first_name: string;\r\n last_name: string;\r\n payer_id: string;\r\n shipping_address: ShippingAddress;\r\n country_code: string;\r\n phone: string;\r\n}\r\n\r\nexport class Details {\r\n subtotal: string;\r\n tax: string;\r\n shipping: string;\r\n handling_fee: string;\r\n shipping_discount: string;\r\n insurance: string;\r\n}\r\n\r\nexport class Amount {\r\n total: string;\r\n currency: string;\r\n details: Details;\r\n}\r\n\r\nexport class PaymentOptions {\r\n allowed_payment_method: string;\r\n}\r\n\r\nexport class Order {\r\n id: string;\r\n create_time: string;\r\n update_time: string;\r\n state: string;\r\n amount: Amount;\r\n parent_payment: string;\r\n links: Link[];\r\n}\r\n\r\nexport interface RelatedResource {\r\n order: Order;\r\n}\r\nexport interface Link {\r\n href: string;\r\n rel: string;\r\n method: string;\r\n}\r\n\r\nexport class Item {\r\n name: string;\r\n description: string;\r\n quantity: string;\r\n price: string;\r\n tax: string;\r\n sku: string;\r\n currency: string;\r\n}\r\n\r\nexport class ShippingAddress {\r\n recipient_name: string;\r\n line1: string;\r\n line2: string;\r\n city: string;\r\n country_code: string;\r\n postal_code: string;\r\n phone: string;\r\n state: string;\r\n}\r\n\r\nexport class ItemList {\r\n items: Item[];\r\n shipping_address: ShippingAddress;\r\n}\r\n\r\nexport class Transaction {\r\n amount: Amount;\r\n payee: Payee;\r\n description: string;\r\n custom: string;\r\n invoice_number: string;\r\n payment_options: PaymentOptions;\r\n soft_descriptor: string;\r\n item_list: ItemList;\r\n related_resources: RelatedResource[];\r\n}\r\n\r\nexport class RedirectUrls {\r\n return_url: string;\r\n cancel_url: string;\r\n}\r\n\r\nexport class Patch {\r\n op: string;\r\n path: string;\r\n value: any;\r\n from: string;\r\n}\r\n\r\nexport class ExecutePaymentRequest {\r\n payer_id: string;\r\n}\r\n\r\nexport class PayPalCreateTransactionRequest {\r\n cartGuid: string;\r\n}\r\n","module.exports = jQuery;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"131\":\"recommend\",\"1523\":\"sellercontent\",\"3167\":\"emailpopup2\",\"4199\":\"onairnow\",\"6339\":\"accountdeletion\",\"6464\":\"search\",\"6772\":\"emailpopup\",\"7867\":\"previewbar\",\"8652\":\"vitatree\"}[chunkId] + \".bundle.\" + {\"131\":\"f0aad347fd68ec076ab3\",\"1523\":\"6cbbb7f2ab9ac5261da4\",\"3167\":\"14844515abda74bfa836\",\"4199\":\"ee0b6c3296c26524153a\",\"6339\":\"2eedd230f1b6ba2c416b\",\"6464\":\"9fe33f3c17c160f2dffc\",\"6772\":\"e648afe478bd6730e208\",\"7867\":\"2c4086e7d6310548eb6a\",\"8652\":\"a0e65b2736a8b61f4872\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + {\"7867\":\"previewbar\",\"8652\":\"vitatree\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.j = 9059;","__webpack_require__.p = \"/dist/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t9059: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunktsc_react\"] = self[\"webpackChunktsc_react\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [3712], function() { return __webpack_require__(5517); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","EmptyBag","isAuth","i18n","t","useTranslation","addResourceBundle","en","fr","className","href","setupAnalyticsData","cart","window","analyticsData","useCart","cookie","useQuery","queryKey","CartGuid","UserAccessToken","Edp","Language","queryFn","undefined","Token","length","lang","substring","userAccessTokenEdp","Error","response","get","data","error","console","log","Promise","resolve","reject","CartProductCount","useErrorBoundary","retry","useRemoveItem","queryClient","storage","useMutation","mutationFn","Id","delete","onSuccess","variables","context","newCart","previousCart","cartLineId","currentQty","CartLines","find","prevCartLine","InCart","Quantity","currentItemNo","CartLineItem","ItemNo","changedProduct","Products","product","productChange","quantity","IsSoldOut","reason","event","eventTitle","setupAnalyticsRemove","truefitEvent","CustomEvent","detail","document","dispatchEvent","setupTruefitUpdateEvent","OrderSummary","TotalQuantity","toString","deleteSessionLanguageQC","deleteTargetUrl","setQueryData","onError","useUpdateCart","CustomerEdp","cartGuid","onMutate","cancelQueries","previousBag","getQueryData","newBag","JSON","parse","stringify","x","lineId","qty","prevCartline","PreviousCartLine","addRemove","setupAnalyticsUpdateQty","err","edpNo","put","Customization","ItemEdp","FreeShippingNotice","name","freeShippingThresholdNumber","Number","tscConfig","FreeShippingThreshold","useEffect","useAuthenticated","delayedPercentage","setDelayedPercentage","useState","isRogersCCFreeShipApplied","IsRogersCCFreeShipApplied","isAutoFreeShipApplied","IsAutoFreeShipApplied","autoFreeShipAwayFromThresholdAmount","AutoFreeShipAwayFromThresholdAmount","difference","percentage","Math","min","round","isOpen","setIsOpen","prevIsOpen","useRef","showAutoFreeShip","timer","current","setTimeout","clearTimeout","AutoFreeShipAwayFromThreshold","target","rel","value","useOrder","modifyOrderNumber","headers","currentdatetime","CurrentDate","base","fetchOrder","enabled","useCartData","donationProduct","setDonationProduct","showSummaryDetails","setShowSummaryDetails","isPickup","setIsPickup","item","IsDonation","ShipCode","ModifyOrderNumber","setSessionCart","cartEvent","props","width","height","viewBox","xmlns","d","fill","stroke","strokeMiterlimit","strokeWidth","cx","cy","r","edp","isFavourite","setIsFavourite","favourites","setFavourites","showFavoriteTooltip","setShowFavoriteTooltip","currentIsFavorite","setCurrentIsFavorite","productData","isSignedIn","useMemo","onFavoriteTooltipCloseClick","e","preventDefault","favouriteStorage","foundFav","Favourites","ItemNumber","getUserFavourites","type","onClick","uat","userEdp","deleteUrl","cachebleHeaders","removeByItemNumber","postUrl","post","ActivityDateTime","Date","toISOString","favourite","add","selectedEdp","EdpNo","prev","FavoriteIcon","FavoriteEmptyIcon","TargetUrl","location","pathname","search","handleSignInLink","QuantitySelector","inventory","update","updateQty","addOrRemove","mutate","disabled","ItemCard","CartLine","CartProducts","CartMessages","IsPickup","isModifyOrder","Remove","Update","containerCss","hideQty","isShipPanelOpen","setIsShipPanelOpen","edpData","Edps","y","Inventory","IsEditable","ProductLink","LinkWithoutDomain","alt","src","ImageUrl","PriceIsLabel","Name","slice","Size","Style","SellerType","style","marginBottom","textAlign","UnitPrice","WasPrice","ShippingHandling","EstimatedShipDate","EstimatedDeliveryDate","EstimatedDate","EstimatedDateLabel","lineHeight","whiteSpace","AppliedShipping","ItemCardModify","ShipmentItem","ItemURL","ItemImageURL","Description","ItemNoForDisplay","ItemQuantity","isBagEmpty","showRemoveDialog","setShowRemoveDialog","currentItemId","setCurrentItemId","marketplaceSellers","setMarketplaceSellers","isLoading","isError","order","isAuthenticated","mutation","updateMutation","sellerTypeTSC","itemCountTSC","filter","itemCountTSCPartner","itemCountMarketplace","filteredNames","obj","map","SellerName","index","array","indexOf","sort","InfoTooltipSvg","seller","ShipLevels","Items","Dialog","title","onCloseClick","fillRule","rx","strokeLinecap","ModifyOrderHero","CheckmarkSvg","OrderDateTime","format","Status","OrderNo","minWidth","Notices","setIsCheckoutDisabled","setIsFraud","setIsPaypalDisabled","showMultipackNotice","setShowMultipackNotice","showMergeNotice","setShowMergeNotice","CartMerge","toLowerCase","deleteCartMerge","isFraudAccount","showMultipackMessage","buildCartNotices","buildCartMaxLimitNotices","cartNotices","setCartNotices","cartMaxLimitNotices","setCartMaxLimitNotices","truefitLoaded","setTruefitLoaded","i","cartLineEdp","inCart","productIdx","findIndex","edps","IsAdvanceOrBackOrder","QuantityToBeReducedMessage","notice","CartId","ItemName","itemName","customMessage","icon","Message","Action","push","getEdpStyleSize","getFrequency","StockStatus","cartFreeShippingMessage","IsMaxQuantityPerCartLineReached","MaxQuantityPerCartLineReached","IsMaxCartLineCountReached","MaxCartLineCountReached","IsMaxCartCheckoutLimitReached","MaxCheckoutLimitReached","Buyer","IsFraud","MergeSvg","closeButton","hideShowMerge","unshift","ShippingHandlingAmount","PromoCode","cartline","hideShowMultipack","MultipackSavings","border","id","IsSOEligible","SODeliveryMessage","isCartEmpty","isOnlyDonationProductInCart","isDonationFlowEnabled","dataDonation","staleTime","useDonation","isPanelOpen","setIsPanelOpen","removeQueries","itemEDP","ItemEDP","useAddItem","products","setProducts","Object","assign","forEach","IsPriceRange","replace","trunc","parseFloat","a","b","AppliedPrice","checked","onChange","onDonationChange","htmlFor","Easypay","showEasyPayNotice","easyPayWarningNotice","setShowEasyPayNotice","setEasyPayWarningNotice","setEasyWarningBlockCheckout","showEasyPaySelectbox","setShowEasyPaySelectbox","showEasyPayPopup","setShowEasyPayPopup","selectedOption","setSelectedOption","easyPayPopupData","setEasyPayPopupData","content","isEasyPayAvailable","setIsEasyPayAvailable","promotionalEasyPayApplied","setPromotionalEasyPayApplied","easyPayMutation","noOfInstallments","NoOfInstallments","useEasyPay","EasyPay","AvailableInstallmentsBreakdown","easyPayNoOfInstallments","PromotionalEasyPayInstallment","CreditCard","IsIssuerRogers","fetchEasyPayArticle","article","easyPayUrl","transformRequest","Authorization","Article","fetchArticle","Title","Content","AvailableInstallments","backgroundImage","parseInt","payment","MonthlyPayment","TotalPaymentToday","BalanceRemainingAfterToday","NoOfFutureMonthlyPayments","FutureMonthlyPayment","PdpEasyPayPopup","useOrderReview","orderRequest","ModifyOrderPromocode","Promocode","cartLine","itemRequest","deleteModifyOrder_Promocode","refetchOnWindowFocus","reviewCart","page","pageTitle","transaction","subType","counter","form","formStatus","formStepNumber","formStepName","review","EasyPayModify","orderReviewData","isFetching","promoCode","setPromoCode","lastShipCode","setLastShipCode","editMode","setEditMode","isEmployeePromocodeEnabled","setIsEmployeePromocodeEnabled","isTouched","setIsTouched","errorMessage","setErrorMessage","isValidPromo","setIsValidPromo","cartPromocode","setCartPromocode","trim","respData","AppliedPromocode","useUpdatePromo","IsEmployee","applyCartPromoCode","tabIndex","marginTop","autoComplete","toUpperCase","onFocus","onKeyDown","key","stopPropagation","getShowBagEmpty","isShowBagEmpty","cartContainsOnlyDonation","province","isCheckoutDisabled","isFraud","isPaypalDisabled","easyPayWarningBlockCheckout","paypalRef","estTaxData","setEstTaxData","isPaypalLoaded","setIsPaypalLoaded","paypalPaymentApproved","setPaypalPaymentApproved","hidePaypalButton","setHidePaypalButton","isPaypalButtonRendered","setIsPaypalButtonRendered","isModifyCheckoutDisabled","setIsModifyCheckoutDisabled","showCancelDialog","setShowCancelDialog","useRemoveDonation","taxProvince","setTaxProvince","defaultTax","setDefaultTax","taxProvinceId","setTaxProvinceId","ShippingAddress","State","BillingAddress","CartProvince","useTaxProvince","estTaxMutation","provinceId","useEstimatedTax","onCheckout","paypalClientId","script","createElement","setAttribute","addEventListener","body","appendChild","renderPayPal","paypal","Buttons","layout","color","shape","label","createOrder","ppData","actions","deletePaypalInfo","paymentResponse","getPayPalPaymentResponse","PaypalPaymentId","token","onApprove","onCancel","render","PreviousOrderTotal","GrandTotal","cartData","result","background","LoadingSvg","padding","ErrorBoundary","FallbackComponent","includes","MerchandiseSubTotal","MultipackSavingsAmount","DefaultShippingHandlingAmount","portalID","startsWith","DiscountAmount","Discount","GiftCard","ShipmentProvince","val","TaxTotal","OrderTotalDifference","ref","ignoreOverlayClick","cursor","deleteModifyOrderInfo","ShoppingBag","setIsModifyOrder","setIsBagEmpty","isMutating","useIsMutating","ErrorFallback","display","fontSize","origin","ShoppingBagApp","client","defaultOptions","queries","cacheTime","persister","localStorage","PersistQueryClientProvider","persistOptions","initialIsOpen","getElementById","root","TrueFitCart","Component","constructor","super","state","selectedEdpData","itemNo","foundDuplicate","showBanner","widgetConfig","foundDuplicateProductName","bannerText","this","bannerText2","setState","isSizeSampling","productIndex","updatedDetails","StyleDimensionId","ProductTypePath","FacetValueId","loadTrueFitLibrary","configWidget","setupEventListener","bind","pageUrl","hostname","isProd","s","w","tfcapi","q","arguments","storeKey","environment","autoCalculate","getElementsByTagName","async","parentNode","insertBefore","unhideBannerArea","noticeBanner","classList","contains","remove","calculateAvailableSizes","allAvailableSizes","Sizes","size","SizeDimensionId","DimensionId","join","userID","productEdp","availableSizes","componentDidMount","styles","truefit__container","truefit__logo","marginRight","truefit__message","truefit__button","textDecoration","alignItems","flexWrap","checkExist","setInterval","truefitCartElement","clearInterval","PayPalCreateTransactionRequest","module","exports","jQuery","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","m","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","keys","every","splice","n","getter","__esModule","getPrototypeOf","__proto__","mode","then","ns","create","def","getOwnPropertyNames","definition","o","defineProperty","enumerable","f","chunkId","all","reduce","promises","u","miniCssF","g","globalThis","Function","prop","prototype","hasOwnProperty","l","url","done","needAttach","scripts","getAttribute","charset","timeout","nc","onScriptComplete","onerror","onload","doneFns","removeChild","head","Symbol","toStringTag","p","fullhref","existingLinkTags","dataHref","tag","existingStyleTags","findStylesheet","linkTag","errorType","realHref","code","request","createStylesheet","miniCss","installedChunks","installedChunkData","promise","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}