{"version":3,"file":"961.chunk.js","mappings":"qXAKaA,GAAuBC,EAAAA,EAAAA,eAAgCC,EAAAA,IAEvDC,EAAwBH,EAAqBI,SCL7CC,GAAoBJ,EAAAA,EAAAA,eAAsB,IAE1CK,EAA4BD,EAAkBD,SAE9CG,EAAuB,WAAH,OAASC,EAAAA,EAAAA,YAAWH,EAAkB,ECG1DI,GAAiBR,EAAAA,EAAAA,eAA8B,CAC1DS,gBAAiB,WAAO,IAGbC,EAAyBF,EAAeL,S,UCP/CQ,GAAOC,EAAAA,EAAAA,GAAOC,EAAAA,EAAPD,EAAa,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CACxCC,OAAQD,EAAME,QAAQ,GACtBC,SAAU,WACVC,QAAS,QACTC,WAAY,SACZC,OAAQ,GACRC,MAAOP,EAAMQ,QAAQC,WAAWC,MAChCC,OAAQ,YACRC,YAAaZ,EAAMQ,QAAQK,QAAQC,KACnCL,WAAYT,EAAMQ,QAAQK,QAAQC,KAClCC,UAAW,SACXC,cAAe,YACfC,eAAgB,OAChBC,cAAe,SACfC,OAAQ,UACRC,gBAAiB,aACjBC,UAAW,aACXC,SAAU,OACVC,WAAY,OACZC,aAAc,QACdC,WAAY,oCACZ,UAAW,CACTC,UAAW,oCACXC,UAAW,cACXpB,MAAOP,EAAMQ,QAAQC,WAAWC,OAEnC,IAEKkB,GAAQ/B,EAAAA,EAAAA,GAAOgC,EAAAA,EAAPhC,EAAmB,SAAAiC,GAAA,IAAG9B,EAAK8B,EAAL9B,MAAK,MAAQ,CAC/CuB,WAAY,OACZQ,WAAY,GAAFC,OAAKhC,EAAME,QAAQ,IAC9B,IAEY+B,EAAoC,SAAHC,GAAqB,IAAfC,EAAQD,EAARC,SAC5CC,EAAa7C,IACX8C,GAAcC,EAAAA,EAAAA,KAAdD,UAER,OACEE,EAAAA,EAAAA,KAAC3C,EAAI,CACH4C,KAAMJ,EACN,cAAaC,EAAU,UAAUF,UAEjCI,EAAAA,EAAAA,KAACX,EAAK,CAACa,QAAM,EAAAN,SAAEA,KAGrB,E,8EC5CMO,GAAOC,EAAAA,EAAAA,IAASC,IAAAA,GAAAC,EAAAA,EAAAA,GAAA,oGAShBjD,GAAOC,EAAAA,EAAAA,GAAO,MAAPA,CAAciD,EAAAA,IAErBC,GAAUlD,EAAAA,EAAAA,GAAOmD,EAAAA,EAAPnD,CAAwB,CACtCoD,UAAW,GAAFjB,OAAKU,EAAI,yBAGPQ,EAAa,WAAH,OACrBX,EAAAA,EAAAA,KAAC3C,EAAI,CAAAuC,UACHI,EAAAA,EAAAA,KAACQ,EAAO,CACNI,SAAS,QACT5C,MAAM,eAEH,E,wBCfHX,GAAOC,EAAAA,EAAAA,GAAOuD,EAAAA,EAAPvD,EAAe,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CAC1CqD,MAAO,eAAFrB,OAAiBhC,EAAME,QAAQ,GAAE,KACtCD,OAAQD,EAAME,QAAQ,GACvB,IAEYoD,EAAoC,SAAHxB,GAA2C,IAArCyB,EAAqBzB,EAArByB,sBAAuBC,EAAO1B,EAAP0B,QACjEnB,GAAcC,EAAAA,EAAAA,KAAdD,UAER,OACEoB,EAAAA,EAAAA,MAAC7D,EAAI,CACH,cAAayC,EAAU,8BACvBqB,UAAWH,EACXI,QAAQ,YACRpD,MAAM,YACNiD,QAASA,EAAQrB,SAAA,EAEjBI,EAAAA,EAAAA,KAACqB,EAAAA,EAAK,KACNrB,EAAAA,EAAAA,KAACsB,EAAAA,EAAgB,CAACC,GAAIC,EAAAA,GAAAA,oBAG5B,E,8lBCHA,IAAMC,IAAenE,EAAAA,EAAAA,GAAOoE,EAAAA,GAAPpE,EAElB,SAAAE,GAAA,IAAiBmE,EAAcnE,EAA5BoE,WAAcD,eAAkBlE,EAAKD,EAALC,MAAK,OAAAoE,GAAA,GACrCF,GAAkB,CACpB,wBAAyB,CACvBG,cAAerE,EAAME,QAAQ,IAE/B,yBAA0B,CACxBoB,SAAU,MAEb,IAGGgD,IAAgBC,EAAAA,EAAAA,OAAKC,iBAAA,OAAY,oDAAyB,IAC1DC,IAAeF,EAAAA,EAAAA,OAAKC,iBAAA,OAAY,qDAAwB,IAEjDE,GAA0C,SAAH5C,GAAkC,ICzC5E6C,EDyCgDpB,EAAqBzB,EAArByB,sBACxDqB,GAAsCC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA9CI,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAClCI,GAA4CL,EAAAA,EAAAA,WAAS,GAAMM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAApDhB,EAAciB,EAAA,GAAEC,EAAiBD,EAAA,GACxCE,GAA0CR,EAAAA,EAAAA,UAAiC,CAAC,GAAES,GAAAP,EAAAA,EAAAA,GAAAM,EAAA,GAAvEE,EAAaD,EAAA,GAAEE,EAAgBF,EAAA,GACtCG,GAAwBZ,EAAAA,EAAAA,UAAS,IAAGa,GAAAX,EAAAA,EAAAA,GAAAU,EAAA,GAA7BE,EAAID,EAAA,GAAEE,EAAOF,EAAA,GACdG,EAAcb,GAAed,EAEnC4B,ECxCO,CACLnB,cATMA,GAAkBoB,EAAAA,EAAAA,KAAlBpB,cAUNqB,UARgB,SAAClC,GAA2C,QAAAmC,EAAAC,UAAAC,OAApBC,EAAI,IAAAC,MAAAJ,EAAA,EAAAA,EAAA,KAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAJF,EAAIE,EAAA,GAAAJ,UAAAI,GAC5C,IAAMC,EAASC,OAAOC,YAAYL,EAAKM,KAAI,SAACC,EAAKC,GAAK,MAAK,CAACA,EAAOC,OAAOF,QAAAA,EAAO,IAAI,KAErF,OAAOhC,EAAc,CAAEb,GAAAA,GAAMyC,EAC/B,GD0CQP,EAASF,EAATE,UAEFc,GAAqBC,EAAAA,EAAAA,cAAYvC,kBACrCwC,EAAAA,GAAAA,IAAS,wBACT,IACE,IAAMC,QAAaC,EAAAA,GAAAA,MACnB1B,EAAiByB,GACjBhC,GAAe,EACjB,CAAE,MAAOkC,IACPC,EAAAA,GAAAA,IAAsBrD,GAAAA,GAAAA,aACxB,CACF,GAAG,IAEGsD,GAAUN,EAAAA,EAAAA,cAAY,YAC1BC,EAAAA,GAAAA,IAAS,+BACT/B,GAAe,GACfG,GAAkB,EACpB,GAAG,IAEGkC,GAAUP,EAAAA,EAAAA,cAAY,WAC1BM,KACAD,EAAAA,GAAAA,IAAsBrD,GAAAA,GAAAA,aACxB,GAAG,CAACsD,IAEEE,GAAaR,EAAAA,EAAAA,cAAY,SAACS,EAAoBC,IAClDT,EAAAA,GAAAA,IAAS,eAAgB,CAAES,gBAAAA,EAAiBD,OAAAA,IAC5C5B,EAAQ6B,GACRrC,GAAkB,EACpB,GAAG,IAEGsC,GAAmBX,EAAAA,EAAAA,cACvBvC,eAAOgD,IACLR,EAAAA,GAAAA,IAAS,oCAETK,KAEAM,EAAAA,GAAAA,IAA2B,CACzBC,YAAaC,EAAAA,GAAAA,YACbC,OAAQN,EACRO,UAAWC,EAAAA,GAAAA,WAGRC,EAAAA,EAAAA,IAAM,CAAEV,WAAAA,EAAYD,QAAAA,EAAS/B,cAAAA,EAAeiC,OAAAA,GACnD,GACA,CAACH,EAASE,EAAYD,EAAS/B,IAG3B2C,EAAqC,CACzC3E,sBAAAA,EACAC,QAASsD,GAILqB,EAAgC,CAEpCC,aAAc,CAHYC,EAAAA,EAAAA,iBAI1BC,YAAatC,EAAUuC,EAAAA,GAAAA,uBACvBC,yBAAyB,EACzBlB,QAAAA,EACAI,iBAAAA,GAGIe,EAAqB,CAAEC,OAAQ1C,EAAUuC,EAAAA,GAAAA,WAEzCI,EAAUvE,GAAA,CACdwE,qBAAqB,EACrBC,mBAAmB,EACnBxB,QAAAA,EACAyB,KAAMjD,EACN1B,WAAY,CAAED,eAAAA,IACVA,EAAiBuE,EAPC,CAAEM,KAAM,UAU1BC,EAAoC,CACxCC,WAAYjD,EAAUuC,EAAAA,GAAAA,MACtBW,WAAYlD,EAAUuC,EAAAA,GAAAA,YACtB5C,KAAAA,GAKF,OAFAqB,EAAAA,GAAAA,IAAS,4CAA6C2B,IAGpDlF,EAAAA,EAAAA,MAAA0F,EAAAA,SAAA,CAAAhH,SAAA,EACEI,EAAAA,EAAAA,KAACe,EAAWc,GAAA,GAAK8D,IAChBrC,GACCpC,EAAAA,EAAAA,MAACO,GAAYI,GAAAA,GAAA,GAAKuE,GAAU,IAAAxG,SAAA,CACzB6C,GACCzC,EAAAA,EAAAA,KAAC6G,EAAAA,SAAQ,CAACC,UAAU9G,EAAAA,EAAAA,KAACW,EAAM,IAAIf,UAC7BI,EAAAA,EAAAA,KAACkC,GAAYL,GAAA,GAAK+D,MAElB,KACHjE,GACC3B,EAAAA,EAAAA,KAAC6G,EAAAA,SAAQ,CAACC,UAAU9G,EAAAA,EAAAA,KAACW,EAAM,IAAIf,UAC7BI,EAAAA,EAAAA,KAAC+B,GAAaF,GAAA,GAAK4E,MAEnB,SAEJ,OAGV,EE5IA,IAAMpJ,IAAOC,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAE,GAAQ,MAAQ,CACzCU,WAAY,+DACZ6I,OAAQ,EACRjI,UAAW,aACXkI,YAAa,WACbC,QALiCzJ,EAALC,MAKbE,QAAQ,GACvBC,SAAU,WACVkD,MAAO,OACPoG,OAAQ,EACT,IAEYC,GAA0B,SAAH5H,GAAA,IAAM6H,EAAsB7H,EAAtB6H,uBAAwBpG,EAAqBzB,EAArByB,sBAAqB,OACrFE,EAAAA,EAAAA,MAAC7D,GAAI,CAAAuC,SAAA,EACHI,EAAAA,EAAAA,KAACN,EAAU,CAAAE,UACTI,EAAAA,EAAAA,KAACsB,EAAAA,EAAgB,CAACC,GAAIC,EAAAA,GAAAA,eAEvB4F,GACCpH,EAAAA,EAAAA,KAACmC,GAAc,CAACnB,sBAAuBA,IACrC,OACC,ECxBH3D,IAAOC,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CACzCM,OAAQ,GACRH,SAAU,WACVsJ,OAAQ,EACRrJ,QAAS,OACToJ,QAASxJ,EAAME,QAAQ,EAAG,GAC1BmB,UAAW,aACXuI,WAAY,SACZvG,MAAO,OACP5C,WAAY,kEACZF,MAAOP,EAAMQ,QAAQqJ,KAAKC,UAC3B,IAEKC,IAAalK,EAAAA,EAAAA,GAAO,IAAPA,EAAY,SAAAiC,GAAQ,MAAQ,CAC7CvB,MADqCuB,EAAL9B,MACnBQ,QAAQqJ,KAAKhJ,QAC1BI,eAAgB,OACjB,IAEY+I,GAAmC,SAAH9H,GAAqB,IAAf+H,EAAQ/H,EAAR+H,SAC3C7H,EAAa7C,IACX8C,GAAcC,EAAAA,EAAAA,KAAdD,UAER,OACEE,EAAAA,EAAAA,KAAC3C,GAAI,CAAC,cAAayC,EAAU,UAAUF,UACrCI,EAAAA,EAAAA,KAACV,EAAAA,EAAU,CAAC8B,QAAQ,KAAIxB,UACtBsB,EAAAA,EAAAA,MAACsG,GAAU,CACTvH,KAAMJ,EACN,cAAaC,EAAU,sBAAsBF,SAAA,EAE7CI,EAAAA,EAAAA,KAACsB,EAAAA,EAAgB,CAACC,GAAIC,EAAAA,GAAAA,SAA0B,KAAGkG,EAASC,WAAW,UAKjF,E,sDC3BKC,GAAY,SAAZA,GAAY,OAAZA,EAAY,yBAAZA,EAAY,6BAAZA,EAAY,+BAAZA,CAAY,EAAZA,IAAY,ICMXvK,IAAOC,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,OAAAoK,EAAAA,EAAAA,GAAA,CACjCR,WAAY,SACZS,UAAW,WACXjK,QAAS,OACTD,SAAU,WACVkD,MAAO,KAENrD,EAAMsK,YAAYC,GAAG,MAAQ,CAC5BF,UAAW,SACXG,WAAY,GACb,IAGUC,GAA0C,SAAHvI,GAU9C,IATWwI,EAAMxI,EAArB,eACAyI,EAAYzI,EAAZyI,aACAC,EAAa1I,EAAb0I,cACAC,EAAY3I,EAAZ2I,aACAC,EAAe5I,EAAf4I,gBACAC,EAAQ7I,EAAR6I,SACAC,EAAU9I,EAAV8I,WACAC,EAAW/I,EAAX+I,YAGAC,EDtB+B,SAAHnL,GAOE,IAN9B4K,EAAY5K,EAAZ4K,aACAG,EAAe/K,EAAf+K,gBACAC,EAAQhL,EAARgL,SACAC,EAAUjL,EAAViL,WACAC,EAAWlL,EAAXkL,YACAE,EAAgBpL,EAAhBoL,iBAEMC,GAAWC,EAAAA,EAAAA,QAAyB,MACpCC,GAAiBD,EAAAA,EAAAA,SAAO,GACxBE,GAAiBF,EAAAA,EAAAA,SAAO,GAC9BG,GAAwBC,EAAAA,EAAAA,aAAW,SAACC,GAAS,OAAKA,EAAI,CAAC,GAAE,GAAhDC,GAAkD5G,EAAAA,EAAAA,GAAAyG,EAAA,GAAvC,GACdI,GAAQP,EAAAA,EAAAA,QAAqBP,GAC7Be,GAAW9E,EAAAA,EAAAA,cACf,SAAC+E,GACKA,IAAaF,EAAMG,SACrB/E,EAAAA,GAAAA,IAAS,+DAAgE8E,IAEzEF,EAAMG,QAAUD,GAChB9E,EAAAA,GAAAA,IAAS,+CAAgD8E,GACzDH,IAEJ,GACA,CAACC,IAGGI,GAAiBjF,EAAAA,EAAAA,cACrB,SAACkF,EAA0BC,GAazB,IAZAlF,EAAAA,GAAAA,IACE,8CACAiF,EACA,oBACAnB,EACA,gBACAG,EACA,mBACAiB,GAIiB,MAAfD,EAKJ,GAAmB,KAAfA,GAAqBE,OAAOC,MAAMH,GAChCC,IAAiB/B,GAAakC,YAEhCR,EAASf,GAITe,EAASI,OAPb,CAcA,IAAIK,EAAeL,EAGfK,EAAe,IACjBA,EAAe,GACftF,EAAAA,GAAAA,IAAS,kFAGPsF,EAAe,IAAM3B,IACvB2B,EAAe,GACftF,EAAAA,GAAAA,IAAS,8DAGPsF,EAAerB,IACjBqB,EAAerB,GACfjE,EAAAA,GAAAA,IAAS,6CAADhF,OAA8CiJ,EAAW,OAQjEqB,IAAiBxB,GAChBQ,EAAeS,SAAWG,IAAiB/B,GAAaoC,eAGzDV,EAASS,IAQXf,EAAeQ,SAAU,GACzB/E,EAAAA,GAAAA,IAAS,uCAST6E,EAASS,GAEJnB,EAAiB,CACpBJ,SAAAA,EACAC,WAAAA,EACAf,SAAUqC,EACVE,iBAAkB1B,IACjB2B,MAde,WAChBlB,EAAeQ,SAAU,GACzB/E,EAAAA,GAAAA,IAAS,uCACX,IA5CA,CAwDF,GACA,CAAC2D,EAAcG,EAAiBC,EAAUC,EAAYC,EAAaE,EAAkBU,IAMnFf,IAAoBc,EAAMG,SAAaT,EAAeS,UAAWR,EAAeQ,WAClF/E,EAAAA,GAAAA,IAAS,0CAADhF,OACoC8I,EAAe,gBAAA9I,OAAe4J,EAAMG,QAAO,SAEvFF,EAASf,IAGX,IA4CM4B,GAAe3F,EAAAA,EAAAA,cACnB,SAACkF,GAAwB,OAAKD,EAAeC,EAAY9B,GAAawC,cAAc,GACpF,CAACX,IAGH,MAAO,CACLZ,SAAAA,EACAE,eAAgBA,EAAeS,QAC/BR,eAAgBA,EAAeQ,QAC/Ba,WA3CkB,SAACC,GACnBvB,EAAeS,SAAU,EACzB,IAEeO,EAFIO,EAAXC,OAEAlB,MAENI,EADmB,KAAjBM,GAAwC,MAAjBA,EACVA,EAEAH,OAAOY,SAAST,EAAc,IAFhBnC,GAAakC,YAI9C,EAkCEK,aAAAA,EACAM,YAvDmB,SAACH,GACpBvB,EAAeS,SAAU,EACzB,IACMkB,EADaJ,EAAXC,OAEOR,EAAiBW,EAAxBrB,OACR5E,EAAAA,GAAAA,IAAS,6CAA8CsF,GAEvDW,EAAMC,kBAAkB,EAAGZ,EAAanG,OAC1C,EAgDEgH,cAlCqB,SAACN,GACtB,IAAQO,EAAgBP,EAAhBO,IAAKN,EAAWD,EAAXC,OAEb,IADA9F,EAAAA,GAAAA,IAAS,qCAAsCoG,GACzB,YAAlBC,EAAAA,GAAAA,GAAOP,IAzJG,UAyJoBM,EAAlC,CAIA,IACed,EADDQ,EACNlB,MACF0B,EAAenB,OAAOG,IAC5BtF,EAAAA,GAAAA,IACE,8CACAsF,EACA,eACAgB,GAEmB,KAAjBhB,GAAuBH,OAAOC,MAAMkB,IAGxCtB,EAAesB,EAAcnD,GAAaoC,eAd1C,CAeF,EAeEV,SAAAA,EACAD,MAAOA,EAAMG,QAEjB,CCnKIwB,CAAkB,CAChB5C,aAAAA,EACAG,gBAAAA,EACAC,SAAAA,EACAC,WAAAA,EACAC,YAAAA,EACAE,iBATYjJ,EAAhBiJ,mBAEQC,EAAQF,EAARE,SAAUwB,EAAU1B,EAAV0B,WAAYF,EAAYxB,EAAZwB,aAAcM,EAAW9B,EAAX8B,YAAaG,EAAajC,EAAbiC,cAAevB,EAAKV,EAALU,MAUxE,OACErJ,EAAAA,EAAAA,KAAC3C,GAAI,CAAAuC,UACHI,EAAAA,EAAAA,KAACiL,GAAAA,GAAO,CACNC,wBACE,CACE,cAAe,GAAFzL,OAAK0I,EAAM,cAG5BhH,UAAWkH,EACX8C,wBACE,CACE,cAAe,GAAF1L,OAAK0I,EAAM,cAG5BiD,WACE,CACEC,KAAM,MACNxC,SAAAA,EACAyC,QAASb,EACTc,OAAQlB,EACRmB,UAAWZ,GAGfa,SAAU/C,EACVgD,SAAUpD,EAAe,EAAIC,EAC7Bc,MAAOA,EACPsC,SAAUxB,KAIlB,E,sBC1EM9M,IAAOC,EAAAA,EAAAA,GAAOsO,GAAAA,GAAPtO,EAAmB,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CAC9C4J,WAAY,SACZxJ,QAAS,OACT+C,SAAUnD,EAAMoO,WAAWC,QAAQ,IACnC9N,MAAOP,EAAMQ,QAAQ8N,OAAOC,MAC5BjO,OAAQ,GACRkO,eAAgB,SAChBC,KAAMzO,EAAME,SAAS,GACrBC,SAAU,WACVuO,IAAK1O,EAAME,QAAQ,GACnBmD,MAAO,GACPoG,OAAQ,EACT,IAEKkF,IAAO9O,EAAAA,EAAAA,GAAO+O,GAAAA,EAAP/O,EAAY,SAAAiC,GAAQ,MAAQ,CACvCqB,SAD+BrB,EAAL9B,MACVoO,WAAWC,QAAQ,IACnC1M,UAAW,gBACZ,IAEYkN,GAA0B,SAAH3M,GAAA,IAAqBwI,EAAMxI,EAArB,eAAuBsB,EAAOtB,EAAPsB,QAAO,OACtEjB,EAAAA,EAAAA,KAAC3C,GAAI,CACHW,MAAM,UACNoD,QAAQ,YACR,cAAa+G,EACblH,QAASA,EAAQrB,UAEjBI,EAAAA,EAAAA,KAACoM,GAAI,KACA,E,ykBC7BT,IAAMG,GAAqB,SAAC9O,GAAY,MACrC,CACCwB,aAAc,MACdpB,QAAS,eACTE,OAAQ,EACRL,OAAQD,EAAME,QAAQ,EAAG,EAAG,IAAK,GACjCmD,MAAO,EACR,EAEG0L,IAAoBlP,EAAAA,EAAAA,GAAO,MAAPA,EACxB,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAqBS,EAAUV,EAAxBoE,WAAc1D,WAAU,OAAA2D,GAAAA,GAAA,GAC7B0K,GAAmB9O,IAAM,IAC5BS,WAAAA,GAAU,IAIRuO,IAAoBnP,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAiC,GAAA,IAAG9B,EAAK8B,EAAL9B,MAAK,OAAO8O,GAAmB9O,EAAM,IAKnEiP,GAAsC,SAAH/M,GAAwC,IAIhFiC,EAPmB+K,EAG2BC,EAAYjN,EAAZiN,aAAcC,EAAalN,EAAbkN,cAC5DC,EAAgBF,aAAY,EAAZA,EAAcG,MAAM,KAAKC,QAAO,SAACC,GAAO,OAAKC,QAAQD,EAAQ,IAEnF,OAAIH,GAAiBA,EAAclJ,OAAS,EAGtCkJ,EAAclJ,OAAS,GACzBhC,EAAa,CAAE1D,YAVMyO,EAUwBG,EAVR,6BAAArN,OACZkN,EAAO,GAAE,MAAAlN,OAAKkN,EAAO,GAAE,UAAAlN,OAASkN,EAAO,GAAE,YAW3D3M,EAAAA,EAAAA,KAACwM,GAAiB,CAAC5K,WAAYA,MAGxCA,EAAa,CAAE1D,WAAY4O,EAAc,KAElC9M,EAAAA,EAAAA,KAACwM,GAAiB,CAAC5K,WAAYA,KAGpCiL,GAEA7M,EAAAA,EAAAA,KAACyM,GAAiB,CAChBU,IAAKN,EACLO,IAAI,KAKH,IACT,EC5CM/P,IAAOC,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAE,GAAQ,MAAQ,CACzCQ,MADiCR,EAALC,MACfQ,QAAQoP,KAAKC,KAC1BzP,QAAS,OACTwJ,WAAY,SACb,IAEYkG,IAAwBC,EAAAA,EAAAA,OACnC,SAAAjO,GAAA,IAAkB4I,EAAM5I,EAArB,eAAuBqN,EAAYrN,EAAZqN,aAAcC,EAAatN,EAAbsN,cAAeY,EAASlO,EAATkO,UAAS,OAC9DvM,EAAAA,EAAAA,MAAC7D,GAAI,CAAC,cAAa8K,EAAOvI,SAAA,EACxBI,EAAAA,EAAAA,KAAC0M,GAAY,CACXE,aAAcA,EACdC,cAAeA,KAEjB7M,EAAAA,EAAAA,KAACV,EAAAA,EAAU,CAAC8B,QAAQ,UAASxB,SAAE6N,MAC1B,I,ykBCVX,IAAMpQ,IAAOC,EAAAA,EAAAA,GAAO,KAAPA,EAAa,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAK,MAAQ,CACxCwJ,QAASxJ,EAAME,QAAQ,EAAG,GAC1BC,SAAU,WACVkB,UAAW,aACXpB,OAAQD,EAAME,QAAQ,EAAG,GACzB,SAAU,CACR+P,UAAW,aAAFjO,OAAehC,EAAMQ,QAAQoP,KAAK,OAE9C,IAEKM,IAAuBrQ,EAAAA,EAAAA,GAAO,MAAPA,CAAc,CACzCO,QAAS,OACTG,MAAO,MACPU,eAAgB,SAGZkP,IAAUtQ,EAAAA,EAAAA,GAAOC,EAAAA,EAAPD,EAAa,SAAAiC,GAAA,IAAG9B,EAAK8B,EAAL9B,MAAK,MAAQ,CAC3CqD,MAAO,GACP/C,OAAQ,IACRkJ,QAASxJ,EAAME,QAAQ,EAAG,GAC1BkQ,YAAapQ,EAAME,QAAQ,GAC3BO,WAAYT,EAAMQ,QAAQoP,KAAK,KAC/BpO,aAAc,EACdrB,SAAU,WACVkQ,SAAU,SACVjQ,QAAS,OACToO,eAAgB,SACjB,IAEK8B,IAAQzQ,EAAAA,EAAAA,GAAO,MAAPA,CAAc,CAC1ByB,SAAU,OACViP,UAAW,SAGPC,IAAiB3Q,EAAAA,EAAAA,GAAO4Q,GAAAA,EAAP5Q,EAAiB,SAAAqC,GAAQ,MAAQ,CACtD/B,SAAU,WACVkD,MAAO,MACP/C,OAAQ,OACRmO,KAAM,MACNC,IAAK,MACL/M,UAAW,wBACXpB,MAP8C2B,EAALlC,MAO5BQ,QAAQoP,KAAK,KAC3B,IAEKc,IAAwB7Q,EAAAA,EAAAA,GAAO,MAAPA,CAAc,CAC1CO,QAAS,OACTuQ,SAAU,EACVC,cAAe,SACf3P,eAAgB,OAChBK,SAAU,sBAGNuP,IAAqBhR,EAAAA,EAAAA,GAAOC,EAAAA,EAAPD,EAAa,SAAAiR,GAAQA,EAAL9Q,MAAK,MAAQ,CACtDI,QAAS,OACTa,eAAgB,OAChBsP,UAAW,GACXF,SAAU,SACX,IAEKU,IAAalR,EAAAA,EAAAA,GAAOgC,EAAAA,EAAPhC,CAAmB,CACpCyB,SAAU,oBACV+O,SAAU,SACVW,aAAc,WACd5Q,QAAS,cACT6Q,gBAAiB,EACjBC,gBAAiB,aAGbC,IAAWtR,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAuR,GAAA,IAAGpR,EAAKoR,EAALpR,MAAK,MAAQ,CAC7CI,QAAS,OACTwJ,WAAY,SACZ4E,eAAgB,SAChBrO,SAAU,WACVqK,WAAY,EACZnH,MAAO,GACP/C,OAAQ,GACR+Q,WAAY,OACZ1Q,OAAQ,IACRJ,MAAOP,EAAMQ,QAAQ8Q,MAAMC,aAC3B/P,aAAc,MACdgQ,gBAAiBxR,EAAMQ,QAAQ8Q,MAAMxQ,KACtC,IAEK2Q,IAAe5R,EAAAA,EAAAA,GAAO6R,GAAAA,EAAP7R,EAA0B,SAAA8R,GAAQ,MAAQ,CAC7DxO,SADqDwO,EAAL3R,MAChCoO,WAAWC,QAAQ,IACpC,IAEKuD,IAAoB/R,EAAAA,EAAAA,GAAO,MAAPA,CAAc,CACtCO,QAAS,OACTyR,UAAW,OACX5Q,eAAgB,SAGZ6Q,IAAsBjS,EAAAA,EAAAA,GAAOgC,EAAAA,EAAPhC,CAAmB,CAC7CuQ,YAAa,OACb/F,UAAW,aAGP0H,IAAmBlS,EAAAA,EAAAA,GAAO,MAAPA,CAAc,CACrCwR,WAAY,OACZQ,UAAW,SAGPG,IAAcnS,EAAAA,EAAAA,GAAOgC,EAAAA,EAAPhC,EAAmB,SAAAoS,GAAQ,MAAQ,CACrD1Q,WAAY,OACZhB,MAF6C0R,EAALjS,MAE3BQ,QAAQqJ,KAAKC,UAC1BzJ,WAAY,SACb,IAEK6R,IAAiBrS,EAAAA,EAAAA,GAAOgC,EAAAA,EAAPhC,EAAmB,SAAAsS,GAAA,IAAGnS,EAAKmS,EAALnS,MAAK,MAAQ,CACxDe,UAAW,QACXE,eAAgB,eAChBkC,SAAUnD,EAAMoO,WAAWC,QAAQ,IACnC9N,MAAOP,EAAMQ,QAAQqJ,KAAKnG,SAC3B,IAEK0O,IAAmBvS,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAwS,GAAQ,MAAQ,CACrDjS,QAAS,OACTkS,IAF6CD,EAALrS,MAE7BE,QAAQ,GACpB,IAEYqS,GAA4B,SAAHC,GAiBhC,IAhBJzH,EAAQyH,EAARzH,SACA0H,EAAeD,EAAfC,gBACAC,EAAYF,EAAZE,aACAC,EAAcH,EAAdG,eACAC,EAAQJ,EAARI,SACAC,EAAiBL,EAAjBK,kBACAC,EAAkBN,EAAlBM,mBACAC,EAAUP,EAAVO,WACApI,EAAY6H,EAAZ7H,aACAK,EAAUwH,EAAVxH,WACAJ,EAAa4H,EAAb5H,cACAC,EAAY2H,EAAZ3H,aACAI,EAAWuH,EAAXvH,YACAkE,EAAYqD,EAAZrD,aACAC,EAAaoD,EAAbpD,cACA4D,EAASR,EAATQ,UAEQ3Q,GAAcC,EAAAA,EAAAA,KAAdD,UACA3C,GAAoBF,EAAAA,EAAAA,YAAWC,GAA/BC,gBACFuT,GAAWlM,EAAAA,EAAAA,cACf,SAACmM,GAAgC,OAC/BxT,GAAgB,SAACyT,GAAa,OAAA/O,GAAAA,GAAA,GACzB+O,GACAD,EAAS,GACX,GACL,CAACxT,IAEG0T,GAAoBrM,EAAAA,EAAAA,cAAYvC,iBACpC,IACEyO,EAAS,CACPI,WAAW,UAEPC,EAAAA,GAAAA,IAAiB,CACrBvI,SAAAA,EACAC,WAAAA,EACAjD,UAAWC,EAAAA,GAAAA,QACXwE,iBAAkBqG,GAEtB,CAAE,MAAO1L,IACPoM,EAAAA,GAAAA,GAASpM,GACT8L,EAAS,CACPI,WAAW,GAEf,CACF,GAAG,CAACJ,EAAUlI,EAAUC,EAAY6H,IAE9BW,GAAuBzM,EAAAA,EAAAA,cAC3BvC,eAAAiP,GAKmC,IAJvBC,EAAID,EAAd1I,SACY4I,EAAIF,EAAhBzI,WACU4I,EAAeH,EAAzBxJ,SACAuC,EAAgBiH,EAAhBjH,iBAEA,GAAwB,IAApBoH,EACF,UACQR,GACR,CAAE,MAAOjM,IACPC,EAAAA,GAAAA,IAAsB,eACxB,MAEA,UACQyM,EAAAA,GAAAA,IAAiB,CACrB9I,SAAU2I,EACV1I,WAAY2I,EACZ5L,UAAWC,EAAAA,GAAAA,QACXwE,iBAAAA,EACAvC,SAAU2J,GAEd,CAAE,MAAOzM,IACPC,EAAAA,GAAAA,IAAsB,eACxB,CAEJ,GACA,CAACgM,IAGGU,EAAY,GAAH9R,OAAMgJ,EAAU,KAAAhJ,OAAI+I,EAAQ,KAAA/I,OAAI4Q,GAE/C,OACEnP,EAAAA,EAAAA,MAAC7D,GAAI,CACHkE,GAAE,QAAA9B,OAAU8R,EAAS,KAAA9R,OAAI+Q,GACzB,iBAAA/Q,OAAgBK,EAAU,QAAO,KAAAL,OAAI8R,GAAY3R,SAAA,CAEhDwI,GACCpI,EAAAA,EAAAA,KAACsM,GAAM,CACL,cAAY,SACZrL,QAAS4P,IAET,MACJ3P,EAAAA,EAAAA,MAACyM,GAAoB,CAAA/N,SAAA,EACnBI,EAAAA,EAAAA,KAAC4N,GAAO,CAAC3N,KAAMmQ,EAAexQ,SAC3BuQ,GACCnQ,EAAAA,EAAAA,KAAC+N,GAAK,CACJZ,IAAKgD,EACL/C,IAAI,aAGNpN,EAAAA,EAAAA,KAACiO,GAAc,OAGnB/M,EAAAA,EAAAA,MAACiN,GAAqB,CAAAvO,SAAA,EACpBsB,EAAAA,EAAAA,MAACoN,GAAkB,CAACrO,KAAMmQ,EAAexQ,SAAA,EACvCI,EAAAA,EAAAA,KAACwO,GAAU,CAACpN,QAAQ,QAAOxB,SAAEsQ,IAC5BK,GACCvQ,EAAAA,EAAAA,KAAC4O,GAAQ,CAAAhP,UACPI,EAAAA,EAAAA,KAACkP,GAAY,MAEb,SAENhO,EAAAA,EAAAA,MAAC2O,GAAgB,CAAAjQ,SAAA,EACfI,EAAAA,EAAAA,KAACV,EAAAA,EAAU,CACT8B,QAAQ,UACRpD,MAAM,gBAAe4B,SAEpB4I,KAEDoE,GAAgBC,IAAkB4D,GAClCzQ,EAAAA,EAAAA,KAACuN,GAAK,CACJ,cAAY,QACZX,aAAcA,EACdC,cAAeA,EACfY,UAAWgD,IAEX,SAENvP,EAAAA,EAAAA,MAACmO,GAAiB,CAAAzP,SAAA,CACd0I,GAAiBD,GAKjBrI,EAAAA,EAAAA,KAACkI,GAAc,CACb,cAAY,kBACZE,aAAcA,EACdC,cAAeA,EACfC,aAAcA,EACdC,gBAAiB+H,EACjB9H,SAAUA,EACVC,WAAYA,EACZC,YAAaA,EACbE,iBAAkBqI,KAbpB/P,EAAAA,EAAAA,MAACqO,GAAmB,CAACnO,QAAQ,QAAOxB,SAAA,EAClCI,EAAAA,EAAAA,KAACsB,EAAAA,EAAgB,CAACC,GAAIC,EAAAA,GAAAA,MAAuB,IAAE8O,MAenDpP,EAAAA,EAAAA,MAACsO,GAAgB,CAAA5P,SAAA,CACd2Q,GACCvQ,EAAAA,EAAAA,KAAC2P,GAAc,CAACvO,QAAQ,QAAOxB,SAAE2Q,IAC/B,MACJvQ,EAAAA,EAAAA,KAACyP,GAAW,CAACrO,QAAQ,QAAOxB,SAAE4Q,kBAO5C,E,olBC3RA,IAAMnT,IAAOC,EAAAA,EAAAA,GAAO,MAAPA,EACX,SAAAE,GAAA,IAAiB4J,EAAsB5J,EAApCoE,WAAcwF,uBAA0B3J,EAAKD,EAALC,MAAK,OAAAoE,GAAAA,GAAA,GAC3CtB,EAAAA,IAAkB,IACrB3C,SAAU,WACVuO,IAAK1O,EAAME,QAAQ,IACnBoJ,OAAQtJ,EAAME,QAAQ,GACtBmD,MAAO,OACP/C,OAAQ,eAAF0B,OAAiBhC,EAAME,QAAQ,IAAMyJ,EAAyB,GAAK,IAAG,KAC5ElJ,YAAYsT,EAAAA,GAAAA,IAAM/T,EAAMQ,QAAQ8N,OAAO0F,MAAO,IAC9CvK,OAAQ,KAAG,IAIFwK,GAA0C,SAACC,GAAK,OAC3D3R,EAAAA,EAAAA,KAAC3C,GAAI,CAACuE,WAAY+P,EAAM/R,UACtBI,EAAAA,EAAAA,KAACW,EAAM,KACF,E,ykBChBF,IAAMiR,GAAoB,sCAY3BvU,IAAOC,EAAAA,EAAAA,GAAO,MAAPA,EACX,SAAAE,GAAA,IAAGC,EAAKD,EAALC,MAAOmE,EAAUpE,EAAVoE,WAAU,OAAAC,GAAAA,GAAA,GACfgQ,EAAAA,IAAkB,IACrB3T,WAAYT,EAAMQ,QAAQC,WAAWC,MACrCgB,UAAW1B,EAAMqU,QAAQ,GACzBhT,UAAW,aACXjB,QAAS,OACTwQ,cAAe,SACfnC,KAAM,OACNnN,SAAU,qBACV+B,MACEc,EAAWmQ,cAA+C,IAA/BnQ,EAAWoQ,gBAAwBJ,GAAoB,QACpF1K,OAAQ,GAAC,IAIP+K,IAAc3U,EAAAA,EAAAA,GAAO4U,EAAAA,EAAP5U,EAA0B,SAAAiC,GAAQ,MAAQ,CAC5D3B,SAAU,WACVC,QAAS,QACTiB,UAAW,aACXgP,SAAU,SACVqE,KAAM,EACNjU,WANoDqB,EAAL9B,MAM7BQ,QAAQC,WAAWC,MACtC,IAEKiU,IAAW9U,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAqC,GAAQ,MAAQ,CAC7C/B,SAAU,UACVuO,IAAK,MACL3N,UAAW,SACXR,MAJqC2B,EAALlC,MAInBQ,QAAQqJ,KAAKC,UAC3B,IAEK8K,IAAQ/U,EAAAA,EAAAA,GAAOgV,EAAAA,EAAPhV,EACZ,SAAAiR,GAAA,IAAG9Q,EAAK8Q,EAAL9Q,MAAqB2J,EAAsBmH,EAApC3M,WAAcwF,uBAAsB,MAAU,CACtDtI,UAAW,aACXyT,cAAe,OACfvE,UAAW,OACXF,SAAU,OACV0E,WAAY/U,EAAME,QAAQ,IAC1BmE,cAAerE,EAAME,QAAQyJ,EAAyB,GAAK,IAC3DqL,mBAAoB,UACrB,IAGUC,GAA4B,SAAH7D,GAShC,IARJmD,EAAenD,EAAfmD,gBACA5K,EAAsByH,EAAtBzH,uBACA2K,EAAYlD,EAAZkD,aACAY,EAAK9D,EAAL8D,MACAC,EAAY/D,EAAZ+D,aACA9B,EAASjC,EAATiC,UACA+B,EAAYhE,EAAZgE,aACAC,EAAYjE,EAAZiE,aAEMpL,EAAWiL,EAAMI,QAAO,SAACC,EAAOxJ,GAAO,OAAKwJ,EAAQxJ,EAAQ8G,iBAAiB,GAAE,GAC7E2C,GAAmBlT,EAAAA,EAAAA,KAAnBkT,eAEFC,EAAkB,CAAE9L,uBAAAA,GACpB+L,EAAStR,GAAA,CAAKgR,aAAAA,EAAcC,aAAAA,EAAclR,WAF7B,CAAEoQ,gBAAAA,EAAiBD,aAAAA,IAEyBkB,EAAe,YAExEG,EAAc,CAAEhM,uBAAAA,EAAwBpG,sBADhB2R,EAAM/O,OAAS,GAG7C,OACE1C,EAAAA,EAAAA,MAAC7D,GAAIwE,GAAAA,GAAA,GAAKsR,GAAS,IAAAvT,SAAA,EACjBI,EAAAA,EAAAA,KAACyH,GAAM,CAACC,SAAUA,IACjBoJ,IAAc8B,GACb5S,EAAAA,EAAAA,KAAC0R,GAAc,CAACtK,uBAAwBA,IACtC,MACJlG,EAAAA,EAAAA,MAAC+Q,GAAWpQ,GAAAA,GAAA,GAAKoR,EAAe,UAAQ,IAAArT,SAAA,CACrC+S,EAAM/O,OAAS,IACd5D,EAAAA,EAAAA,KAACqS,GAAK,CAACzQ,WAAYsR,EAAgBtT,SAChC+S,EAAMxO,KAAI,SAACkP,GAAqB,OAC/BrT,EAAAA,EAAAA,KAACgQ,GAAInO,GAAA,GAECwR,GAAI,gBAAA5T,OADa4T,EAAK5K,WAAU,KAAAhJ,OAAI4T,EAAK7K,SAAQ,KAAA/I,OAAI4T,EAAKhD,SAAQ,KAAA5Q,OAAI4T,EAAK7C,YAE/E,MAIPoC,GAAiC,IAAjBD,EAAM/O,QACrB1C,EAAAA,EAAAA,MAACkR,GAAQvQ,GAAAA,GAAA,GAAKoR,EAAe,UAAQ,IAAArT,SAAA,EACnCI,EAAAA,EAAAA,KAACV,EAAAA,EAAU,CAAC8B,QAAQ,KAAIxB,UACtBI,EAAAA,EAAAA,KAACsB,EAAAA,EAAgB,CAACC,GAAIC,EAAAA,GAAAA,cAExBN,EAAAA,EAAAA,MAAC5B,EAAAA,EAAU,CAAC8B,QAAQ,QAAOxB,SAAA,CAAC,MACxBI,EAAAA,EAAAA,KAACsB,EAAAA,EAAgB,CAACC,GAAIC,EAAAA,GAAAA,kBAAmC,YAG7D,UAENxB,EAAAA,EAAAA,KAACmH,GAAMtF,GAAA,GAAKuR,OAGlB,E,6nBChGA,IAUM/V,IAAOC,EAAAA,EAAAA,GAAOgW,EAAAA,EAAPhW,EAEV,SAAAE,GAAyE,IAAA+V,EAAA/V,EAAtEoE,WAAcoQ,EAAeuB,EAAfvB,gBAAiBD,EAAYwB,EAAZxB,aAAcyB,EAASD,EAATC,UAAa/V,EAAKD,EAALC,MACxDgW,EAAgC,IAApBzB,EACdtR,EAAY,6BACZwL,EAAwB,OACxBC,EAhBoB,2BA6BxB,OAZIqH,IAEAtH,EADE6F,GAAgB0B,EACX,gBAAHhU,OAAmBmS,GAAiB,KAEjC,GAGPG,IACFrR,EAAY,0CACZyL,EAAMsH,EAzBmB,wCAyBgB,GAG3C5R,GAAAA,GAAA,GACKgQ,EAAAA,IAAkB,IACrBhU,QAAS,QACTqO,KAAAA,EACAtO,SAAU,QACVY,UAAW,OACX2N,IAAAA,EACAjN,WAAY,WAAFO,OAAaiB,EAAS,uBAEhCwG,OAAQzJ,EAAMyJ,OAAOwM,OAAS,GAElC,IAEaC,GAA0C,SAAHpU,GAG9C,IC3CE9B,EACAmW,EACAC,EDuCN9B,EAAYxS,EAAZwS,aACA3K,EAAsB7H,EAAtB6H,uBAEM4K,GC5CAvU,GAAQqW,EAAAA,GAAAA,KACRF,GAAgBG,EAAAA,GAAAA,GAActW,EAAMsK,YAAYiM,KAAK,MAAO,CAAEC,OAAO,IACrEJ,GAAiBE,EAAAA,GAAAA,GAActW,EAAMsK,YAAYiM,KAjBnB,MAiBiD,CACnFC,OAAO,IAKLL,EACgB,EACTC,EACS,EAEA,GDgCpBxR,GAAwCC,EAAAA,EAAAA,UAAgC4R,GAAAA,GAAoB3R,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAArF8R,EAAY5R,EAAA,GAAEpF,EAAeoF,EAAA,GAC9BmO,GAAWlM,EAAAA,EAAAA,cACf,SAACmM,GAAgC,OAC/BxT,GAAgB,SAACyT,GACf,IAAMwD,EAAQvS,GAAAA,GAAA,GACT+O,GACAD,GAIL,OAFAlM,EAAAA,GAAAA,IAAS,qBAAsB2P,GAExBA,CACT,GAAE,GACJ,IAGFC,EAAkFF,EAA1EX,UAAAA,OAAS,IAAAa,GAAQA,EAAAC,EAAyDH,EAAvDxB,MAAAA,OAAK,IAAA2B,EAAG,GAAEA,EAAAC,EAA6CJ,EAA3CvB,aAAAA,OAAY,IAAA2B,GAAQA,EAAAC,EAAuBL,EAArBrD,UAAAA,OAAS,IAAA0D,GAAOA,EAC7E7R,GAAwCL,EAAAA,EAAAA,eAAmCmS,GAAU7R,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAA9E+R,EAAY9R,EAAA,GAAE+R,EAAe/R,EAAA,GAC9BgS,GAAcpQ,EAAAA,EAAAA,cAClB,SAACqQ,GAAkC,OACjCF,GAAgB,SAACG,GAQf,OAPIA,KACFrQ,EAAAA,GAAAA,IAAS,+BACTqQ,EAAYC,WAEdtQ,EAAAA,GAAAA,IAAS,mCAAoCoQ,GAC7CA,SAAAA,IAEOA,CACT,GAAE,GACJ,KAGFpQ,EAAAA,GAAAA,IACE,gBACA,aACA0P,EACA,wBACAnC,EACA,qBACAD,EACA,oCACA2C,GAGF,IE1GwCG,EF0GhC/U,GAAcC,EAAAA,EAAAA,KAAdD,UAEFkV,EAAa,SAACtQ,GAClBgM,EAAS,CACPI,WAAW,EACX8B,cAAc,EACdD,MAAOjO,EAAKuQ,YAAYC,iBAAiBlI,QAAO,SAACqG,GAAI,MAAuB,MAAlBA,EAAKhD,QAAgB,KAEnF,EElHwCwE,EFoHdG,GEnH1BG,EAAAA,EAAAA,YAAU,WACR,IAAMC,EAAY,SAAC9K,GAA0B,OAAKuK,EAASvK,EAAM+K,OAAO,EAGxE,OAFAC,OAAOC,iBAAiBC,GAAAA,EAA4BJ,GAE7C,kBAAME,OAAOG,oBAAoBD,GAAAA,EAA4BJ,EAAS,CAC/E,GAAG,CAACP,ICP0B,SAACA,IAC/BM,EAAAA,EAAAA,YAAU,WACR,IAAMC,EAAY,SAAC9K,GAA0B,OAAKuK,EAASvK,EAAM+K,OAAO,EAGxE,OAFAC,OAAOC,iBAAiBG,GAAAA,GAAoBN,GAErC,kBAAME,OAAOG,oBAAoBC,GAAAA,GAAoBN,EAAS,CACvE,GAAG,CAACP,GACN,CH+GEc,CAAiBX,IAEjBG,EAAAA,EAAAA,YAAU,YACR1Q,EAAAA,GAAAA,IAAS,mCACT,IAAM6F,EAAQ,IAAIsL,YAAYC,EAAAA,GAC9BP,OAAOQ,cAAcxL,EACvB,GAAG,IAEH,IAAMyL,EAAsBhE,GAAoC,IAApBC,EACtCgE,GAA0BjE,GAAoC,IAApBC,EAE1CiE,GAAgBzR,EAAAA,EAAAA,cACpB,kBACE0R,KAAS,WACPtB,OAAYH,GACZ/D,EAAS,CAAE8C,WAAW,GACxB,GAAG,IAAI,GACT,CAACoB,EAAalE,IAGVyF,GAAqB3R,EAAAA,EAAAA,cAGzB,SAACE,GAGC,IAFAD,EAAAA,GAAAA,IAAS,8BAA+BC,IAEpCqR,IAAuBC,EAM3B,OAAItR,EAAK2Q,OAAOe,WAAaC,EAAAA,GAAAA,UAC3B5R,EAAAA,GAAAA,IAAS,wFACTiM,EAAS,CAAE8C,WAAW,UAKc,IAA3B9O,EAAK2Q,OAAOiB,aACrB7R,EAAAA,GAAAA,IACE,gFACA,gCAGFtH,GAAgB,SAACyT,GAAa,OAAA/O,GAAAA,GAAA,GACzB+O,GAAa,IAChB4C,WAAY5C,EAAc4C,WAAS,KAMnC9O,EAAK2Q,OAAOiB,aACd7R,EAAAA,GAAAA,IACE,2FAEFiM,EAAS,CAAE8C,WAAW,OAKxB/O,EAAAA,GAAAA,IACE,yEACA,sCAGKwR,MAxCLxR,EAAAA,GAAAA,IAAS,iDAyCb,GACA,CAACwR,EAAeF,EAAqBC,EAAwBtF,KAG/DyE,EAAAA,EAAAA,YAAU,WAEJY,KACFtR,EAAAA,GAAAA,IAAS,sDACTiM,EAAS,CAAE8C,WAAW,KAGpBwC,KACFvR,EAAAA,GAAAA,IAAS,iEACTiM,EAAS,CAAE8C,WAAW,KAGxB,IAAM+C,EAA2B,SAAC7R,GAA4B,OAC5DkQ,EAAYuB,EAAmBzR,GAAM,EAIvC,OAFA4Q,OAAOC,iBAAiBc,EAAAA,GAAuBE,GAExC,kBAAMjB,OAAOG,oBAAoBY,EAAAA,GAAuBE,EAAwB,CACzF,GAAG,CACDvE,EACAD,EACAgE,EACAC,EACAtB,EACAE,EACAlE,EACAyF,IAGF,IAMMtD,GAAerO,EAAAA,EAAAA,cAAY,WAC3BuN,GAAgBiE,GAClBvR,EAAAA,GAAAA,IAAS,4CAIXA,EAAAA,GAAAA,IAAS,cACTmQ,OAAYH,GACd,GAAG,CAAC1C,EAAciE,EAAwBpB,IAEpC9B,GAAetO,EAAAA,EAAAA,cAAY,WAC3BuN,GAAgBiE,GAClBvR,EAAAA,GAAAA,IAAS,4CAIXA,EAAAA,GAAAA,IAAS,0BACTiM,EAAS,CAAE8C,WAAW,IACxB,GAAG,CAACzB,EAAciE,EAAwBtF,IAEpC9O,EAAa,CAAEoQ,gBAAAA,EAAiBD,aAAAA,EAAcyB,UAAAA,GAE9CgD,EAA6B,CACjCxE,gBAAAA,EACA5K,uBAAAA,EACAwL,aAAAA,EACAb,aAAAA,EACAjB,UAAAA,EACA6B,MAAAA,EACAE,aAAAA,EACAC,aAAAA,GAGF,OACE9S,EAAAA,EAAAA,KAAC5C,EAAsB,CAACiM,MAAO,CAAElM,gBAAAA,GAAkByC,UACjDI,EAAAA,EAAAA,KAAC3C,GAAI,CACHgJ,qBAAmB,EACnBzE,WAAYA,EACZ2E,KAAMiN,EACNiD,cAAe,CACbxV,QA9CmB,WACpB8U,GACHrF,EAAS,CAAE8C,WAAW,GAE1B,EA2CQkD,QAAS,EACTC,KAAM,eACNpQ,KAAMiN,IAAcuC,GACpBnW,UAEFI,EAAAA,EAAAA,KAAC4W,EAAAA,EAAI,CAACC,GAAIrD,EAAU5T,UAClBI,EAAAA,EAAAA,KAAA,OAAK,cAAaF,EAAU,kBAAkBF,UAC5CI,EAAAA,EAAAA,KAAC0S,GAAO7Q,GAAA,GAAK2U,WAMzB,EI1QaM,GAAoB,SAAHtZ,GAAwC,IAAAuZ,EAAlChF,EAAYvU,EAAZuU,aAAciF,EAAaxZ,EAAbwZ,cACxCC,EACND,EADMC,aAAcC,EACpBF,EADoBE,OAAQlR,EAC5BgR,EAD4BhR,aAAcmR,EAC1CH,EAD0CG,cAAe/P,EACzD4P,EADyD5P,uBAGrDgQ,EAAsC,QAA3BL,GAAGM,GADeC,EAAAA,EAAAA,KAA3BD,iCACoC,IAAAN,EAAAA,EAAIQ,SAASC,gBAAgBC,KAEzE,OACEzX,EAAAA,EAAAA,KAACpD,EAAqB,CAACyM,MAAO2N,EAAcpX,UAC1CI,EAAAA,EAAAA,KAAC0X,EAAAA,EAAa,CACZC,qBAAmB,EACnBC,SAAUC,EAAAA,GAAiBjY,UAE3BI,EAAAA,EAAAA,KAAC8X,EAAAA,EAA4B,CAC3BC,KAAMd,EACNC,OAAQA,EAAOtX,UAEfI,EAAAA,EAAAA,KAACjD,EAAyB,CAACsM,MAAO8N,EAAcvX,UAC9CI,EAAAA,EAAAA,KAACgY,EAAAA,EAAY,CACXC,OAAQb,EACRc,SAAUlS,EAAapG,UAEvBI,EAAAA,EAAAA,KAACmY,EAAAA,EAAc,CACbC,KAAMC,EAAAA,GACNC,QAAST,EAAAA,GAAiBjY,UAE1BI,EAAAA,EAAAA,KAAC2T,GAAc,CACb5B,aAAcA,EACd3K,uBAAwBA,eAS1C,E,+NCjDO,IAAMmR,GAAStW,eAAOuW,EAA0BzG,GACrD,IACMJ,EAAQ,CAAEqF,eADMyB,EAAAA,GAAAA,IAAiBD,GACRzG,aAAAA,GAG/B,aAFM2G,EAAAA,GAAAA,IAAkBF,GAAaxY,EAAAA,EAAAA,KAAC8W,G,uWAAGjV,CAAA,GAAK8P,MAEvC,CACT,C","sources":["webpack://oriminishoppingbag/./src/contexts/configurationContext.ts","webpack://oriminishoppingbag/./src/contexts/basketLinkContext.ts","webpack://oriminishoppingbag/./src/contexts/minBagContext.ts","webpack://oriminishoppingbag/./src/components/content/MainButton.tsx","webpack://oriminishoppingbag/./src/components/content/Loader.tsx","webpack://oriminishoppingbag/./src/components/content/ShareButton.tsx","webpack://oriminishoppingbag/./src/components/content/SharingWrapper.tsx","webpack://oriminishoppingbag/./src/hooks/useTranslations.ts","webpack://oriminishoppingbag/./src/components/content/Footer.tsx","webpack://oriminishoppingbag/./src/components/content/Header.tsx","webpack://oriminishoppingbag/./src/hooks/useQuantityPicker.ts","webpack://oriminishoppingbag/./src/components/content/QuantityPicker.tsx","webpack://oriminishoppingbag/./src/components/content/Remove.tsx","webpack://oriminishoppingbag/./src/components/content/ShadeElement.tsx","webpack://oriminishoppingbag/./src/components/content/Shade.tsx","webpack://oriminishoppingbag/./src/components/content/Item.tsx","webpack://oriminishoppingbag/./src/components/content/LoadingOverlay.tsx","webpack://oriminishoppingbag/./src/components/MiniBag.tsx","webpack://oriminishoppingbag/./src/components/MiniBagWrapper.tsx","webpack://oriminishoppingbag/./src/hooks/useBreakpointIndex.ts","webpack://oriminishoppingbag/./src/hooks/useInitialShoppingContext.ts","webpack://oriminishoppingbag/./src/hooks/useBasketUpdated.ts","webpack://oriminishoppingbag/./src/App.tsx","webpack://oriminishoppingbag/./src/AppRender.tsx"],"sourcesContent":["import { useContext, createContext } from 'react';\n\nimport type { AppConfiguration } from '~/models';\nimport { DEFAULT_CONFIG } from '~/models';\n\nexport const configurationContext = createContext(DEFAULT_CONFIG);\n\nexport const ConfigurationProvider = configurationContext.Provider;\n\nexport const useConfiguration = () => useContext(configurationContext);\n","import { useContext, createContext } from 'react';\n\nexport const basketLinkContext = createContext('');\n\nexport const BasketLinkContextProvider = basketLinkContext.Provider;\n\nexport const useBasketLinkContext = () => useContext(basketLinkContext);\n","import type { Dispatch, SetStateAction } from 'react';\nimport { createContext } from 'react';\n\nimport type { MiniBagState } from '~/models';\n\nexport interface MiniBagContext {\n setMiniBagState: Dispatch>>;\n}\n\nexport const miniBagContext = createContext({\n setMiniBagState: () => {},\n});\n\nexport const MiniBagContextProvider = miniBagContext.Provider;\n","import useTestId from '@ori/testid-generator';\nimport { Typography, styled, Link } from '@ori-ui/mui';\nimport type { FC, PropsWithChildren } from 'react';\n\nimport { useBasketLinkContext } from '~/contexts';\n\nconst Root = styled(Link)(({ theme }) => ({\n margin: theme.spacing(1),\n position: 'relative',\n display: 'block',\n whiteSpace: 'nowrap',\n height: 45,\n color: theme.palette.background.paper,\n border: '2px solid',\n borderColor: theme.palette.primary.main,\n background: theme.palette.primary.main,\n textAlign: 'center',\n textTransform: 'uppercase',\n textDecoration: 'none',\n verticalAlign: 'middle',\n cursor: 'pointer',\n WebkitBoxSizing: 'border-box',\n boxSizing: 'border-box',\n maxWidth: '100%',\n fontWeight: 'bold',\n borderRadius: '999px',\n transition: 'box-shadow 0.15s, transform 0.15s',\n '&:hover': {\n boxShadow: '0 3px 8px 0 rgba(51, 51, 51, 0.1)',\n transform: 'scale(1.01)',\n color: theme.palette.background.paper,\n },\n}));\n\nconst Label = styled(Typography)(({ theme }) => ({\n fontWeight: 'bold',\n lineHeight: `${theme.spacing(8)}`,\n}));\n\nexport const MainButton: FC = ({ children }) => {\n const basketLink = useBasketLinkContext();\n const { getTestId } = useTestId();\n\n return (\n \n \n \n );\n};\n","import { keyframes } from '@emotion/react';\nimport { OriflameSpinner } from '@ori-ui/icons';\nimport { styled } from '@ori-ui/mui';\nimport type { FC } from 'react';\n\nimport { centeredFlexStyles } from '~/constants';\n\nconst spin = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n`;\n\nconst Root = styled('div')(centeredFlexStyles);\n\nconst Spinner = styled(OriflameSpinner)({\n animation: `${spin} 1s linear infinite`,\n});\n\nexport const Loader: FC = () => (\n \n \n \n);\n\nexport default Loader;\n","import useTestId from '@ori/testid-generator';\nimport { Share } from '@ori-ui/icons';\nimport { styled, Button } from '@ori-ui/mui';\nimport type { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { translationKeys } from '~/models';\n\nexport interface ShareButtonProps {\n isSharingButtonActive: boolean;\n onClick?: () => unknown;\n}\n\nconst Root = styled(Button)(({ theme }) => ({\n width: `calc(100% - ${theme.spacing(2)})`,\n margin: theme.spacing(1),\n}));\n\nexport const ShareButton: FC = ({ isSharingButtonActive, onClick }) => {\n const { getTestId } = useTestId();\n\n return (\n \n \n \n \n );\n};\n","import { ContentType, Placement } from '@ori/analytics-data';\nimport type {\n CopyLinkPanelProps,\n SharedContent,\n SharingPanelProps,\n VendorType,\n} from '@ori/sharing-panel';\nimport { share, SharingCapability } from '@ori/sharing-panel';\nimport { Dialog } from '@ori-ui/components';\nimport { styled } from '@ori-ui/mui';\nimport { lazy, Suspense, useCallback, useState } from 'react';\nimport type { FC } from 'react';\n\nimport { Loader } from './Loader';\nimport type { ShareButtonProps } from './ShareButton';\nimport { ShareButton } from './ShareButton';\nimport { useTranslations } from '~/hooks/useTranslations';\nimport { translationKeys as translations } from '~/models';\nimport {\n getSharedContent,\n logDebug,\n showErrorNotification,\n translationKeys,\n triggerShareItemClickEvent,\n} from '~/utils';\n\nexport interface SharingWrapperProps {\n isSharingButtonActive: boolean;\n}\n\nconst SharingPopup = styled(Dialog)<{\n ownerState: { isCopyLinkOpen: boolean };\n}>(({ ownerState: { isCopyLinkOpen }, theme }) => ({\n ...(isCopyLinkOpen && {\n '&.MuiOriDialog-header': {\n paddingBottom: theme.spacing(6),\n },\n '&.MuiOriDialog-content': {\n maxWidth: 540,\n },\n }),\n}));\n\nconst CopyLinkPanel = lazy(async () => import('./CopyLinkPanel'));\nconst SharingPanel = lazy(async () => import('./SharingPanel'));\n\nexport const SharingWrapper: FC = ({ isSharingButtonActive }) => {\n const [isPanelOpen, setIsPanelOpen] = useState(false);\n const [isCopyLinkOpen, setIsCopyLinkOpen] = useState(false);\n const [sharedContent, setSharedContent] = useState>({});\n const [link, setLink] = useState('');\n const isPopupOpen = isPanelOpen || isCopyLinkOpen;\n\n const { translate } = useTranslations();\n\n const onShareButtonClick = useCallback(async () => {\n logDebug('onShareButtonClick()');\n try {\n const data = await getSharedContent();\n setSharedContent(data);\n setIsPanelOpen(true);\n } catch (error: unknown) {\n showErrorNotification(translationKeys.genericError);\n }\n }, []);\n\n const onClose = useCallback(() => {\n logDebug('Closing sharing wrapper ...');\n setIsPanelOpen(false);\n setIsCopyLinkOpen(false);\n }, []);\n\n const onError = useCallback(() => {\n onClose();\n showErrorNotification(translationKeys.genericError);\n }, [onClose]);\n\n const onCopyLink = useCallback((vendor: VendorType, finalSharedLink: string) => {\n logDebug('onCopyLink()', { finalSharedLink, vendor });\n setLink(finalSharedLink);\n setIsCopyLinkOpen(true);\n }, []);\n\n const onShareIconClick = useCallback(\n async (vendor: VendorType) => {\n logDebug('onShareIconClick handler called.');\n // close sharing popup\n onClose();\n // always monitor user intentions even when the checks later will fail\n triggerShareItemClickEvent({\n contentType: ContentType.ProductList,\n method: vendor,\n placement: Placement.Minibag,\n });\n // start the sharing process\n void share({ onCopyLink, onError, sharedContent, vendor });\n },\n [onClose, onCopyLink, onError, sharedContent],\n );\n\n const shareButtonProps: ShareButtonProps = {\n isSharingButtonActive,\n onClick: onShareButtonClick,\n };\n\n const { ShareUrlAndText } = SharingCapability;\n const panelProps: SharingPanelProps = {\n // sharing capabilities filter so far hard-coded here\n capabilities: [ShareUrlAndText],\n captionText: translate(translations.shareWithBrandPartner),\n isCopyLinkIconDisplayed: true,\n onError,\n onShareIconClick,\n };\n\n const copyLinkPopupProps = { header: translate(translations.copyLink) } as const;\n const sharePopupProps = { size: 'small' } as const;\n const popupProps = {\n disableEnforceFocus: true,\n disableTransition: true,\n onClose,\n open: isPopupOpen,\n ownerState: { isCopyLinkOpen },\n ...(isCopyLinkOpen ? copyLinkPopupProps : sharePopupProps),\n } as const;\n\n const copyLinkProps: CopyLinkPanelProps = {\n buttonText: translate(translations.copy),\n copiedText: translate(translations.linkCopied),\n link,\n };\n\n logDebug('Rendering SharingWrapper.tsx, popupProps:', popupProps);\n\n return (\n <>\n \n {isPopupOpen ? (\n \n {isPanelOpen ? (\n }>\n \n \n ) : null}\n {isCopyLinkOpen ? (\n }>\n \n \n ) : null}\n \n ) : null}\n \n );\n};\n\nexport default SharingWrapper;\n","import { useIntl } from 'react-intl';\n\nimport type { TranslationKey } from '../models';\n\nexport const useTranslations = () => {\n const { formatMessage } = useIntl();\n\n const translate = (id: TranslationKey, ...rest: unknown[]) => {\n const params = Object.fromEntries(rest.map((cur, index) => [index, String(cur ?? '')]));\n\n return formatMessage({ id }, params);\n };\n\n return {\n formatMessage,\n translate,\n };\n};\n","import { styled } from '@ori-ui/mui';\nimport type { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { MainButton } from './MainButton';\nimport { SharingWrapper } from './SharingWrapper';\nimport { translationKeys } from '~/models';\n\ninterface FooterProps {\n isBasketSharingEnabled?: boolean;\n isSharingButtonActive: boolean;\n}\n\nconst Root = styled('div')(({ theme }) => ({\n background: 'linear-gradient(to top, #fff 20%, rgba(255,255,255,0.9) 30%)',\n bottom: 0,\n boxSizing: 'border-box',\n justifySelf: 'flex-end',\n padding: theme.spacing(3),\n position: 'absolute',\n width: '100%',\n zIndex: 2,\n}));\n\nexport const Footer: FC = ({ isBasketSharingEnabled, isSharingButtonActive }) => (\n \n \n \n \n {isBasketSharingEnabled ? (\n \n ) : null}\n \n);\n","import useTestId from '@ori/testid-generator';\nimport { Typography, styled } from '@ori-ui/mui';\nimport type { FC } from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { useBasketLinkContext } from '~/contexts';\nimport { translationKeys } from '~/models';\n\nconst Root = styled('div')(({ theme }) => ({\n height: 65,\n position: 'absolute',\n zIndex: 2,\n display: 'flex',\n padding: theme.spacing(0, 4),\n boxSizing: 'border-box',\n alignItems: 'center',\n width: '100%',\n background: 'linear-gradient(to bottom, #fff 20%, rgba(255,255,255,0.9) 30%)',\n color: theme.palette.text.secondary,\n}));\n\nconst BasketLink = styled('a')(({ theme }) => ({\n color: theme.palette.text.primary,\n textDecoration: 'none',\n}));\n\nexport const Header: FC<{ quantity: number }> = ({ quantity }) => {\n const basketLink = useBasketLinkContext();\n const { getTestId } = useTestId();\n\n return (\n \n \n \n ({quantity.toString()})\n \n \n \n );\n};\n","import type { FocusEventHandler, KeyboardEventHandler } from 'react';\nimport { useReducer, useCallback, useRef } from 'react';\n\nimport type { CounterValue, HandleQuantityChangeOptions } from '../models';\nimport { logDebug } from '~/utils/log';\n\ninterface UseQuantityPickerOptions {\n canBeDeleted: boolean;\n initialQuantity: number;\n itemCode: string;\n lineNumber: number;\n maxQuantity: number;\n onQuantityChange: (options: HandleQuantityChangeOptions) => Promise;\n}\n\nenum ChangeOrigin {\n BlurHandler = 'handleBlur',\n ChangeHandler = 'handleChange',\n KeyDownHandler = 'handleKeyDown',\n}\n\nconst KEY_ENTER = 'Enter';\n\nexport const useQuantityPicker = ({\n canBeDeleted,\n initialQuantity,\n itemCode,\n lineNumber,\n maxQuantity,\n onQuantityChange,\n}: UseQuantityPickerOptions) => {\n const inputRef = useRef(null);\n const isInputFocused = useRef(false);\n const isServerUpdate = useRef(false);\n const [, forceUpdate] = useReducer((x: number) => x + 1, 0);\n const value = useRef(initialQuantity);\n const setValue = useCallback(\n (newValue: CounterValue) => {\n if (newValue === value.current) {\n logDebug('QuantityPicker.setValue() same value as previous, no change:', newValue);\n } else {\n value.current = newValue;\n logDebug('QuantityPicker.setValue() new value was set:', newValue);\n forceUpdate();\n }\n },\n [value],\n );\n\n const changeQuantity = useCallback(\n (inputValue: CounterValue, changeOrigin?: ChangeOrigin) => {\n logDebug(\n 'QuantityPicker.changeQuantity(), inputValue',\n inputValue,\n ', initialQuantity',\n initialQuantity,\n ', maxQuantity',\n maxQuantity,\n ', change origin:',\n changeOrigin,\n );\n\n // ignore '-' value completely - server doesn't accept negative values\n if (inputValue === '-') {\n return;\n }\n\n // non-numeric values\n if (inputValue === '' || Number.isNaN(inputValue)) {\n if (changeOrigin === ChangeOrigin.BlurHandler) {\n // for blur event, let's set some correct numeric value\n setValue(initialQuantity);\n } else {\n // in the middle of the editting process here, just set the local state\n // so that user sees the editted value\n setValue(inputValue);\n }\n\n return;\n }\n\n // checks for min and max quantity\n let currentValue = inputValue;\n\n // just for the case - negative value could be pasted from clipboard for example\n if (currentValue < 0) {\n currentValue = 0;\n logDebug('Current value was set to 0 as negative quantities are not accepted by server.');\n }\n\n if (currentValue < 1 && !canBeDeleted) {\n currentValue = 1;\n logDebug('Current value was set to 1 as the item cannot be deleted.');\n }\n\n if (currentValue > maxQuantity) {\n currentValue = maxQuantity;\n logDebug(`Current value was limited to max quantity ${maxQuantity}.`);\n }\n\n // skip calling updates on server when same as initial quantity\n // skip server updates when the user is edditting the input value directly ATM\n // (the change in handleKeyDown is called only for specific key(s) like Enter,\n // so it should call server for those cases, but the focus still stays in the input)\n if (\n currentValue === initialQuantity ||\n (isInputFocused.current && changeOrigin !== ChangeOrigin.KeyDownHandler)\n ) {\n // just set local state so that user sees the edit updates\n setValue(currentValue);\n\n return;\n }\n\n // call server updates - this might return updated value of this item's quantity\n // depending on the checkout rule engine;\n // server operation indication is needed for correct derived value state logic\n isServerUpdate.current = true;\n logDebug('Server update flag was set to true.');\n\n const resetFlag = () => {\n isServerUpdate.current = false;\n logDebug('Server update flag was set to false.');\n };\n\n // set local state so that user sees the edit updates;\n // set here so that the isServerUpdate is set up in advance\n setValue(currentValue);\n\n void onQuantityChange({\n itemCode,\n lineNumber,\n quantity: currentValue,\n previousQuantity: initialQuantity,\n }).then(resetFlag);\n },\n [canBeDeleted, initialQuantity, itemCode, lineNumber, maxQuantity, onQuantityChange, setValue],\n );\n\n // Derived value state after server data updates from shopping rule engine. Stays here for merchandising cases:\n // 1. Quantity of item was increased by previous update of another item's amount.\n // 2. Increasing item quantity over limit increases the qty of another item and original item's qty stays the same.\n if (initialQuantity !== value.current && (!isInputFocused.current || isServerUpdate.current)) {\n logDebug(\n `Setting value to match initialQuantity ${initialQuantity}, value was ${value.current} ...`,\n );\n setValue(initialQuantity);\n }\n\n const handleFocus = ((event) => {\n isInputFocused.current = true;\n const { target } = event;\n const input = target as HTMLInputElement;\n const { value: currentValue } = input;\n logDebug('QuantityPicker.handleFocus(), currentValue', currentValue);\n // selecting whole text value on focus was requested\n input.setSelectionRange(0, currentValue.length);\n }) as FocusEventHandler;\n\n const handleBlur = ((event) => {\n isInputFocused.current = false;\n const { target } = event;\n const input = target as HTMLInputElement;\n const { value: currentValue } = input;\n if (currentValue === '' || currentValue === '-') {\n changeQuantity(currentValue, ChangeOrigin.BlurHandler);\n } else {\n changeQuantity(Number.parseInt(currentValue, 10), ChangeOrigin.BlurHandler);\n }\n }) as FocusEventHandler;\n\n const handleKeyDown = ((event) => {\n const { key, target } = event;\n logDebug('QuantityPicker.handleKeyDown() key', key);\n if (typeof target !== 'object' || key !== KEY_ENTER) {\n return;\n }\n\n const input = target as HTMLInputElement;\n const { value: currentValue } = input;\n const numericValue = Number(currentValue);\n logDebug(\n 'QuantityPicker.handleKeyDown() currentValue',\n currentValue,\n 'numericValue',\n numericValue,\n );\n if (currentValue === '' || Number.isNaN(numericValue)) {\n return;\n }\n changeQuantity(numericValue, ChangeOrigin.KeyDownHandler);\n }) as KeyboardEventHandler;\n\n const handleChange = useCallback(\n (inputValue: CounterValue) => changeQuantity(inputValue, ChangeOrigin.ChangeHandler),\n [changeQuantity],\n );\n\n return {\n inputRef,\n isInputFocused: isInputFocused.current,\n isServerUpdate: isServerUpdate.current,\n handleBlur,\n handleChange,\n handleFocus,\n handleKeyDown,\n setValue,\n value: value.current,\n };\n};\n","/* eslint-disable @typescript-eslint/naming-convention -- x */\nimport type { IconButtonProps } from '@ori-ui/components';\nimport { Counter } from '@ori-ui/components';\nimport type { InputProps } from '@ori-ui/mui';\nimport { styled } from '@ori-ui/mui';\nimport type { FC } from 'react';\n\nimport { useQuantityPicker } from '~/hooks/useQuantityPicker';\nimport type { HandleQuantityChangeOptions, TestIdProp } from '~/models';\n\ninterface QuantityPickerProps extends TestIdProp {\n canBeDeleted: boolean;\n canBeModified: boolean;\n canBeReduced: boolean;\n initialQuantity: number;\n itemCode: string;\n lineNumber: number;\n maxQuantity: number;\n onQuantityChange: (options: HandleQuantityChangeOptions) => Promise;\n}\n\nconst Root = styled('div')(({ theme }) => ({\n alignItems: 'center',\n alignSelf: 'flex-end',\n display: 'flex',\n position: 'relative',\n width: 125,\n\n [theme.breakpoints.up('md')]: {\n alignSelf: 'center',\n flexShrink: 0,\n },\n}));\n\nexport const QuantityPicker: FC = ({\n 'data-testid': testId,\n canBeDeleted,\n canBeModified,\n canBeReduced,\n initialQuantity,\n itemCode,\n lineNumber,\n maxQuantity,\n onQuantityChange,\n}) => {\n const { inputRef, handleBlur, handleChange, handleFocus, handleKeyDown, value } =\n useQuantityPicker({\n canBeDeleted,\n initialQuantity,\n itemCode,\n lineNumber,\n maxQuantity,\n onQuantityChange,\n });\n\n return (\n \n \n }\n disabled={!canBeModified}\n IncreaseIconButtonProps={\n {\n 'data-testid': `${testId}-increase`,\n } as Partial\n }\n InputProps={\n {\n type: 'tel',\n inputRef,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onKeyDown: handleKeyDown,\n } as Partial\n }\n maxValue={maxQuantity}\n minValue={canBeReduced ? 0 : initialQuantity}\n value={value}\n onChange={handleChange}\n />\n \n );\n};\n","import { IconButton } from '@ori-ui/components';\nimport { Add } from '@ori-ui/icons';\nimport { styled } from '@ori-ui/mui';\nimport type { FC } from 'react';\n\nimport type { TestIdProp } from '~/models';\n\ninterface RemoveProps extends TestIdProp {\n onClick?: () => Promise;\n}\n\nconst Root = styled(IconButton)(({ theme }) => ({\n alignItems: 'center',\n display: 'flex',\n fontSize: theme.typography.pxToRem(14),\n color: theme.palette.common.black,\n height: 20,\n justifyContent: 'center',\n left: theme.spacing(-2),\n position: 'absolute',\n top: theme.spacing(1),\n width: 20,\n zIndex: 1,\n}));\n\nconst Icon = styled(Add)(({ theme }) => ({\n fontSize: theme.typography.pxToRem(14),\n transform: 'rotate(45deg)',\n}));\n\nexport const Remove: FC = ({ 'data-testid': testId, onClick }) => (\n \n \n \n);\n","import type { Theme } from '@ori-ui/mui';\nimport { styled } from '@ori-ui/mui';\nimport type { FC } from 'react';\n\ninterface ShadeElementProps {\n colorHexCode: string | null;\n colorImageSrc: string | null;\n}\n\nconst shadeElementStyles = (theme: Theme) =>\n ({\n borderRadius: '50%',\n display: 'inline-block',\n height: 7,\n margin: theme.spacing(1, 1, 1.2, 0),\n width: 7,\n } as const);\n\nconst ColorShadeElement = styled('div')<{ ownerState: { background: string } }>(\n ({ theme, ownerState: { background } }) => ({\n ...shadeElementStyles(theme),\n background,\n }),\n);\n\nconst ImageShadeElement = styled('img')(({ theme }) => shadeElementStyles(theme));\n\nconst getLinearGradient = (colors: string[]) =>\n `linear-gradient(to right, ${colors[0]}, ${colors[0]} 50%, ${colors[1]} 50%)`;\n\nexport const ShadeElement: FC = ({ colorHexCode, colorImageSrc }) => {\n const colorHexCodes = colorHexCode?.split(',').filter((hexCode) => Boolean(hexCode));\n\n if (colorHexCodes && colorHexCodes.length > 0) {\n let ownerState;\n\n if (colorHexCodes.length > 1) {\n ownerState = { background: getLinearGradient(colorHexCodes) };\n\n return ;\n }\n\n ownerState = { background: colorHexCodes[0] as string };\n\n return ;\n }\n\n if (colorImageSrc) {\n return (\n \n );\n }\n\n return null;\n};\n","import { styled, Typography } from '@ori-ui/mui';\nimport type { FC } from 'react';\nimport { memo } from 'react';\n\nimport { ShadeElement } from './ShadeElement';\nimport type { TestIdProp } from '~/models';\n\ninterface ShadeProps extends TestIdProp {\n colorHexCode: string | null;\n colorImageSrc: string | null;\n colorName: string;\n}\n\nconst Root = styled('div')(({ theme }) => ({\n color: theme.palette.grey.A400,\n display: 'flex',\n alignItems: 'center',\n}));\n\nexport const Shade: FC = memo(\n ({ 'data-testid': testId, colorHexCode, colorImageSrc, colorName }) => (\n \n \n {colorName}\n \n ),\n);\n","import { Placement } from '@ori/analytics-data';\nimport useTestId from '@ori/testid-generator';\nimport type { ShoppingBagItem } from '@ori-events/basket-updated';\nimport { DiscountTagFilled, Products } from '@ori-ui/icons';\nimport { Link, Typography, styled } from '@ori-ui/mui';\nimport type { FC } from 'react';\nimport { useCallback, useContext } from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { QuantityPicker } from './QuantityPicker';\nimport { Remove } from './Remove';\nimport { Shade } from './Shade';\nimport { miniBagContext } from '~/contexts';\nimport { translationKeys } from '~/models';\nimport type { MiniBagState, HandleQuantityChangeOptions } from '~/models';\nimport { logError, removeBasketItem, showErrorNotification, updateBasketItem } from '~/utils';\n\nconst Root = styled('li')(({ theme }) => ({\n padding: theme.spacing(3, 0),\n position: 'relative',\n boxSizing: 'border-box',\n margin: theme.spacing(0, 3),\n '& + li': {\n borderTop: `2px solid ${theme.palette.grey[100]}`,\n },\n}));\n\nconst StyledMiniBagWrapper = styled('div')({\n display: 'flex',\n color: '999',\n textDecoration: 'none',\n});\n\nconst ImgLink = styled(Link)(({ theme }) => ({\n width: 80,\n height: 100,\n padding: theme.spacing(3, 0),\n marginRight: theme.spacing(2),\n background: theme.palette.grey[100],\n borderRadius: 5,\n position: 'relative',\n overflow: 'hidden',\n display: 'flex',\n justifyContent: 'center',\n}));\n\nconst Image = styled('img')({\n maxWidth: '100%',\n maxHeight: '100%',\n});\n\nconst MissingImgIcon = styled(Products)(({ theme }) => ({\n position: 'absolute',\n width: '50%',\n height: 'auto',\n left: '50%',\n top: '50%',\n transform: 'translate(-50%, -50%)',\n color: theme.palette.grey[200],\n}));\n\nconst StyledItemDescription = styled('div')({\n display: 'flex',\n flexGrow: 1,\n flexDirection: 'column',\n textDecoration: 'none',\n maxWidth: 'calc(100% - 90px)',\n});\n\nconst StyledItemInfoLink = styled(Link)(({ theme }) => ({\n display: 'flex',\n textDecoration: 'none',\n maxHeight: 40,\n overflow: 'hidden',\n}));\n\nconst StyledName = styled(Typography)({\n maxWidth: 'calc(100% - 38px)',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n});\n\nconst Discount = styled('div')(({ theme }) => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n flexShrink: 0,\n width: 25,\n height: 25,\n marginLeft: 'auto',\n border: '0',\n color: theme.palette.offer.contrastText,\n borderRadius: '50%',\n backgroundColor: theme.palette.offer.main,\n}));\n\nconst DiscountIcon = styled(DiscountTagFilled)(({ theme }) => ({\n fontSize: theme.typography.pxToRem(15),\n}));\n\nconst StyledItemDetails = styled('div')({\n display: 'flex',\n marginTop: 'auto',\n textDecoration: 'none',\n});\n\nconst StyledQuantityBlock = styled(Typography)({\n marginRight: 'auto',\n alignSelf: 'flex-end',\n});\n\nconst StyledPriceBlock = styled('div')({\n marginLeft: 'auto',\n marginTop: 'auto',\n});\n\nconst StyledPrice = styled(Typography)(({ theme }) => ({\n fontWeight: 'bold',\n color: theme.palette.text.secondary,\n whiteSpace: 'nowrap',\n}));\n\nconst StyledPriceOld = styled(Typography)(({ theme }) => ({\n textAlign: 'right',\n textDecoration: 'line-through',\n fontSize: theme.typography.pxToRem(12),\n color: theme.palette.text.disabled,\n}));\n\nconst ItemShadeWrapper = styled('div')(({ theme }) => ({\n display: 'flex',\n gap: theme.spacing(2),\n}));\n\nexport const Item: FC = ({\n itemCode,\n itemDescription,\n itemImageSrc,\n itemDetailPath,\n itemType,\n requestedQuantity,\n totalOriginalPrice,\n totalPrice,\n canBeDeleted,\n lineNumber,\n canBeModified,\n canBeReduced,\n maxQuantity,\n colorHexCode,\n colorImageSrc,\n itemColor,\n}) => {\n const { getTestId } = useTestId();\n const { setMiniBagState } = useContext(miniBagContext);\n const setState = useCallback(\n (nextState: Partial) =>\n setMiniBagState((previousState) => ({\n ...previousState,\n ...nextState,\n })),\n [setMiniBagState],\n );\n const removeItemHandler = useCallback(async () => {\n try {\n setState({\n isLoading: true,\n });\n await removeBasketItem({\n itemCode,\n lineNumber,\n placement: Placement.Minibag,\n previousQuantity: requestedQuantity,\n });\n } catch (error: unknown) {\n logError(error);\n setState({\n isLoading: false,\n });\n }\n }, [setState, itemCode, lineNumber, requestedQuantity]);\n\n const handleQuantityChange = useCallback(\n async ({\n itemCode: code,\n lineNumber: line,\n quantity: currentQuantity,\n previousQuantity,\n }: HandleQuantityChangeOptions) => {\n if (currentQuantity === 0) {\n try {\n await removeItemHandler();\n } catch (error) {\n showErrorNotification('genericError');\n }\n } else {\n try {\n await updateBasketItem({\n itemCode: code,\n lineNumber: line,\n placement: Placement.Minibag,\n previousQuantity,\n quantity: currentQuantity,\n });\n } catch (error) {\n showErrorNotification('genericError');\n }\n }\n },\n [removeItemHandler],\n );\n\n const partialId = `${lineNumber}-${itemCode}-${itemType}`;\n\n return (\n \n {canBeDeleted ? (\n \n ) : null}\n \n \n {itemImageSrc ? (\n \n ) : (\n \n )}\n \n \n \n {itemDescription}\n {totalOriginalPrice ? (\n \n \n \n ) : null}\n \n \n \n {itemCode}\n \n {(colorHexCode || colorImageSrc) && itemColor ? (\n \n ) : null}\n \n \n {!canBeReduced && !canBeModified ? (\n \n :{requestedQuantity}\n \n ) : (\n \n )}\n \n {totalOriginalPrice ? (\n {totalOriginalPrice}\n ) : null}\n {totalPrice}\n \n \n \n \n \n );\n};\n","import { styled, alpha } from '@ori-ui/mui';\nimport type { FC } from 'react';\n\nimport { Loader } from './Loader';\nimport { centeredFlexStyles } from '~/constants';\n\nexport interface LoadingOverlayProps {\n isBasketSharingEnabled?: boolean;\n}\n\nconst Root = styled('div')<{ ownerState: LoadingOverlayProps }>(\n ({ ownerState: { isBasketSharingEnabled }, theme }) => ({\n ...centeredFlexStyles,\n position: 'absolute',\n top: theme.spacing(13),\n bottom: theme.spacing(9),\n width: '100%',\n height: `calc(100% - ${theme.spacing(28 + (isBasketSharingEnabled ? 11 : 0))})`, // 100% - (header + footer height)\n background: alpha(theme.palette.common.white, 0.5),\n zIndex: 999,\n }),\n);\n\nexport const LoadingOverlay: FC = (props) => (\n \n \n \n);\n\nexport default LoadingOverlay;\n","import useTestId from '@ori/testid-generator';\nimport type { ShoppingBagItem } from '@ori-events/basket-updated';\nimport { List, Typography, styled, ScopedCssBaseline } from '@ori-ui/mui';\nimport type { FC, MouseEvent } from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { Footer, Header, Item, LoadingOverlay } from './content';\nimport { basePositionStyles } from '~/constants';\nimport { translationKeys } from '~/models';\n\nexport const minibagWidthStyle = 'var(--minibag-desktop-width, 400px)';\nexport interface MiniBagProps {\n breakpointIndex: number;\n isBasketSharingEnabled: boolean | undefined;\n isECatalogue: boolean;\n items: ShoppingBagItem[];\n isDataLoaded: boolean;\n isLoading: boolean;\n onMouseEnter: (event: MouseEvent) => void;\n onMouseLeave: (event: MouseEvent) => void;\n}\n\nconst Root = styled('div')<{ ownerState: { breakpointIndex: number; isECatalogue: boolean } }>(\n ({ theme, ownerState }) => ({\n ...basePositionStyles,\n background: theme.palette.background.paper,\n boxShadow: theme.shadows[2],\n boxSizing: 'border-box',\n display: 'flex',\n flexDirection: 'column',\n left: 'auto',\n maxWidth: 'calc(100vw - 40px)',\n width:\n ownerState.isECatalogue && ownerState.breakpointIndex === 2 ? minibagWidthStyle : '400px',\n zIndex: 1,\n }),\n);\n\nconst ItemWrapper = styled(ScopedCssBaseline)(({ theme }) => ({\n position: 'relative',\n display: 'block',\n boxSizing: 'border-box',\n overflow: 'hidden',\n flex: 1,\n background: theme.palette.background.paper,\n}));\n\nconst EmptyBag = styled('div')(({ theme }) => ({\n position: 'inherit',\n top: '40%',\n textAlign: 'center',\n color: theme.palette.text.secondary,\n}));\n\nconst Items = styled(List)<{ ownerState: { isBasketSharingEnabled: boolean | undefined } }>(\n ({ theme, ownerState: { isBasketSharingEnabled } }) => ({\n boxSizing: 'border-box',\n listStyleType: 'none',\n maxHeight: '100%',\n overflow: 'auto',\n paddingTop: theme.spacing(13),\n paddingBottom: theme.spacing(isBasketSharingEnabled ? 26 : 15),\n overscrollBehavior: 'contain',\n }),\n);\n\nexport const MiniBag: FC = ({\n breakpointIndex,\n isBasketSharingEnabled,\n isECatalogue,\n items,\n isDataLoaded,\n isLoading,\n onMouseEnter,\n onMouseLeave,\n}) => {\n const quantity = items.reduce((total, current) => total + current.requestedQuantity, 0);\n const { getTestIdProps } = useTestId();\n const ownerState = { breakpointIndex, isECatalogue };\n const itemsOwnerState = { isBasketSharingEnabled };\n const rootProps = { onMouseEnter, onMouseLeave, ownerState, ...getTestIdProps('content') };\n const isSharingButtonActive = items.length > 0;\n const footerProps = { isBasketSharingEnabled, isSharingButtonActive };\n\n return (\n \n
\n {isLoading || !isDataLoaded ? (\n \n ) : null}\n \n {items.length > 0 && (\n \n {items.map((item: ShoppingBagItem) => (\n \n ))}\n \n )}\n {isDataLoaded && items.length === 0 ? (\n \n \n \n \n \n - -\n \n \n ) : null}\n \n