{"version":3,"file":"37.chunk.js","mappings":"mTAKaA,EAAsD,CACjEC,gBAAiB,GACjBC,WAAYC,EAAAA,GACZC,aAAc,GACdC,WAAY,GACZC,YAAa,GACbC,UAAW,GACXC,aAAc,GACdC,OAAQ,IAGGC,GAAuBC,EAAAA,EAAAA,eAAgCX,GAEvDY,EAAwBF,EAAqBG,SAE7CC,EAAmB,WAAH,OAASC,EAAAA,EAAAA,YAAWL,EAAqB,ECbzDM,EAAkC,WAC7C,IAAAC,EAA+BH,IAAvBL,EAAMQ,EAANR,OAAQP,EAAUe,EAAVf,WAChBgB,ECD0C,WAC1C,IAAQhB,EAAeY,IAAfZ,WACFiB,GAASC,EAAAA,EAAAA,OACfC,GAA4CC,EAAAA,EAAAA,YAAyBC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA9DI,EAAcF,EAAA,GAAEG,EAAiBH,EAAA,GACxCI,GAA4CL,EAAAA,EAAAA,YAA+DM,GAAAJ,EAAAA,EAAAA,GAAAG,EAAA,GAApGE,EAAcD,EAAA,GAAEE,EAAiBF,EAAA,GAClCG,EAAcC,OAAOC,SAASC,SAC9BC,GAAkBC,EAAAA,EAAAA,GAAwBlC,GAC1CmC,GAAkBC,EAAAA,EAAAA,cACtB,SAAIC,GACF,GAAIJ,EAAiB,CACnB,IAAMK,EAAkB,IAAIC,gBAG5B,OAFAF,EAAMC,EAAgBE,QAAQC,MAAMC,QAAQC,OAErC,kBAAML,EAAgBM,OAAO,CACtC,CAGF,GACA,CAACX,IAqBH,OAnBAY,EAAAA,EAAAA,YAAU,WACRV,GAAgBW,eAAON,GACrB,IAAMO,QAAiBC,EAAAA,EAAAA,KAAgB/B,EAAQjB,OAAYiD,EAAW,CACpET,OAAAA,EACAU,eAAAA,EAAAA,KAEFC,EAAAA,EAAAA,GAAeJ,EAAU,CACvBK,QAAS,WACP5B,EAAkB,MAClBI,EAAkB,KACpB,EACAyB,UAAW,SAAAC,GAAc,IAAAC,EAAXC,EAAIF,EAAJE,KACZhC,EAAmC,QAAlB+B,EAACC,EAAKC,oBAAY,IAAAF,OAAA,EAAjBA,EAAmBhC,gBACrCK,EAAkB4B,EAAK7B,eACzB,GAEJ,GACF,GAAG,CAACV,EAAQjB,EAAYmC,KAEjBuB,EAAAA,EAAAA,UACL,iBAAO,CACLnC,eAAgBA,QAAAA,OAAkB0B,EAClCpB,YAAAA,EACAF,eAAgBA,QAAAA,OAAkBsB,EACnC,GACD,CAAC1B,EAAgBM,EAAaF,GAElC,CD9C0DgC,GAAhDpC,EAAcP,EAAdO,eAAgBM,EAAWb,EAAXa,YAAaF,EAAcX,EAAdW,eAC/BM,GAAkBC,EAAAA,EAAAA,GAAwBlC,GAEhD,OAAO4D,EAAAA,EAAAA,KACLrD,EACA,CACEgB,eAAAA,EACAM,YAAAA,EACAF,eAAAA,GAEF,CACEkC,IAAK,CACHC,SAAU7B,QAAuCgB,IAAnB1B,QAAmD0B,IAAnBtB,EAC9DoC,mBAAmB,EACnBC,mBAAmB,EACnBC,uBAAuB,GAEzBC,QAAS,CACPhB,eAAAA,EAAAA,IAIR,EE3BaiB,EAAoB,WAC/BC,OAAOC,KAAKC,cACTC,QAAO,SAACC,GAAG,OAAKA,EAAIC,WAAW,SAAWD,EAAIE,SAAS,SAAWF,EAAIC,WAAW,OAAO,IACxFE,SAAQ,SAACH,GAAG,OAAKF,aAAaM,WAAWJ,EAAI,GAClD,ECFaK,EAAgB,WAC3B,IAAQrB,EAAS1C,IAAT0C,KACRrC,GAAwCC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAhD2D,EAAYzD,EAAA,GAAE0D,EAAe1D,EAAA,GACpCiC,EAAiDE,QAAAA,EAAQ,CAAC,EAAlDwB,EAAY1B,EAAZ0B,aAAcC,EAAW3B,EAAX2B,YAAaC,EAAS5B,EAAT4B,UA2BnC,OAzBArC,EAAAA,EAAAA,YAAU,WAGR,OAFAf,OAAOqD,iBAAiB,eAAgBhB,GAEjC,WACLrC,OAAOsD,oBAAoB,eAAgBjB,EAC7C,CACF,GAAG,KAEHtB,EAAAA,EAAAA,YAAU,WACR,IACMwC,ECnB0B,WAI+C,IAAA/B,EAAAgC,UAAAC,OAAA,QAAAtC,IAAAqC,UAAA,GAAAA,UAAA,GAAP,CAAC,EAH3EN,EAAY1B,EAAZ0B,aACAC,EAAW3B,EAAX2B,YACAC,EAAS5B,EAAT4B,UAKA,GAHKpD,OAAO0D,SACVpB,OAAOqB,eAAe3D,OAAQ,UAAW,CAAE4D,UAAU,EAAMC,MAAO,CAAC,IAEjEX,GAAgBC,GAAeC,EAAW,CAC5CpD,OAAO8D,WAAa,UACpBxB,OAAOqB,eAAe3D,OAAQ,UAAW,CACvC4D,UAAU,EACVC,MAAO,CACLE,EAAGC,KAAKC,MACRC,EAAG,CACDf,YAAAA,EACAD,aAAAA,EACAiB,OAAOC,MAIb,IAAMb,EAASc,SAASC,cAAc,UAGtC,OAFAf,EAAOgB,IAAMnB,EAENG,CACT,CAEA,OAAO,IACT,CDTmBiB,CAAqB,CAClCtB,aAAAA,EACAC,YAAAA,EACAC,UAAAA,IAEF,GAAIG,EAIF,OAHAA,EAAOF,iBAAiB,QAPX,WAAH,OAASJ,GAAgB,EAAK,IAQxCoB,SAASI,KAAKC,OAAOnB,GAEd,kBAAMA,EAAOoB,QAAQ,CAIhC,GAAG,CAACzB,EAAcC,EAAaC,IAExB,CAAEJ,aAAAA,EACX,E,sCEnCa4B,GAAgBC,E,QAAAA,GAAGC,IAAAA,GAAAC,EAAAA,EAAAA,GAAA,6RCYnBC,EAA4B,SAAHxD,GAA0D,IAApDwB,EAAYxB,EAAZwB,aAC1C/D,EAA4DH,IAApDb,EAAegB,EAAfhB,gBAAiBC,EAAUe,EAAVf,WAAYG,EAAUY,EAAVZ,WAAYI,EAAMQ,EAANR,OAC3C0B,GAAkBC,EAAAA,EAAAA,GAAwBlC,GACxC+G,GAAUC,EAAAA,EAAAA,KAAVD,MACR5F,GAA4CC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAApD8F,EAAc5F,EAAA,GAAE6F,EAAiB7F,EAAA,GACxC8F,GAAwBC,EAAAA,EAAAA,GAA6D,CACnFC,MAAOX,EACPY,IAAKnH,EACLoH,SAASC,EAAAA,EAAAA,GAAW,CAClBxH,WAAAA,EACAyH,SAAU1H,EACV2H,cAAeC,EAAAA,GACfpH,OAAAA,EACAwG,MAAAA,IAEFa,MAAO3F,IAAoB6C,IAVrBtB,EAAI2D,EAAJ3D,KAAMb,EAAKwE,EAALxE,MAyBd,OAZIA,GAEFD,QAAQC,MAAMA,IAGhBE,EAAAA,EAAAA,YAAU,YACJiC,GAAyB,MAARtB,IAAgBb,GAAUV,KCnCnB,SAAC4F,GAA8C,IAAAC,EAAAC,ECqBnDzE,EAA+E0E,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAzEtI,EAAiByD,EAAMjD,EACvD+H,EACcC,EACZC,EACA/E,EACAgF,EACAC,EACAC,EACAC,EAGI7F,ED9BQ,QAAd+E,GAAAC,EAAAjG,QAAO0D,eAAO,IAAAsC,GAAdA,EAAAe,KAAAd,EAAiB,UAAW,eAAgB,CAC1Ce,UAAW,CACTC,kBCiBsBzF,EDjBYuE,ECiBN9H,EAAeuD,EAAfvD,gBAAiByD,EAAIF,EAAJE,KAAMjD,EAAM+C,EAAN/C,OACvD+H,EAQkB,QARlBN,EAQIxE,aAAI,EAAJA,EAAMwF,gBAAQ,IAAAhB,EAAAA,EAAI,CAAC,EAPTO,EAAkBD,EAA9BtI,WACAwI,EAAgBF,EAAhBE,iBACA/E,EAAY6E,EAAZ7E,aACAgF,EAAMH,EAANG,OACAC,EAASJ,EAATI,UACAC,EAAQL,EAARK,SACAC,EAAMN,EAANM,OAGI7F,EAAW,CACf,4BAA6B,iBAC7B,uBAAiD,QAA3BkF,EAAExE,aAAY,EAAZA,EAAcwF,mBAAW,IAAAhB,EAAAA,EAAI,YACrD,4BAA6B,oBAC7B,uBAA4C,MAApBO,EAA2B,GAAKA,EACxD,4BAA6B,gBAC7B,uBAAwBzI,EAAgBmJ,MAAM,EAAG,GAAGC,cACpD,4BAA6B,cAC7B,uBAAwB5I,EAAO4I,cAC/B,qBAAsBZ,QAAAA,EAAsB,GAC5C,gBAA0C,QAA3BL,EAAEO,SAAW,QAALN,EAANM,EAAS,UAAE,IAAAN,OAAA,EAAXA,EAAaiB,oBAAY,IAAAlB,EAAAA,EAAI,GAC9C,oBAAqBQ,QAAAA,EAAa,GAClC,mBAAoBC,QAAAA,EAAY,GAChC,sBAAmD,QAA9BP,EAAEQ,SAAW,QAALP,EAANO,EAAS,UAAE,IAAAP,OAAA,EAAXA,EAAagB,uBAAe,IAAAjB,EAAAA,EAAI,GACvD,iBAAkB,OAIpB1F,QAAQ4G,IAAIvG,GAELA,KD7CT,CD6BMwG,CAAiB,CAAExJ,gBAAAA,EAAiByD,KAAAA,EAAMjD,OAAAA,IAC1C2G,GAAkB,GAEtB,GAAG,CAACpC,EAAc/E,EAAiByD,EAAMb,EAAOV,EAAiB1B,IAE1D,CACL0G,eAAAA,EAEJ,E,kPGzCO,IAAMuC,GAAkBC,EAAAA,EAAAA,GAAO,MAAPA,EAAoC,SAAAnG,GAA6B,IAA1BoG,EAAYpG,EAAZoG,aAAcC,EAAKrG,EAALqG,MAC5EC,EAAiB,CACrBC,SAAU,OACVC,gBAAiB,KACjBC,IAAK,CACHC,QAAS,EACTF,gBAAiB,SAIrB,O,qWAAAG,EAAAC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,CACEC,WAAY,SACZC,WAAYT,EAAMU,QAAQC,QAAQC,KAClCC,aAAc,OACdC,OAAQ,OACRC,UAAWC,EAAAA,GACXC,UAAW,QACXC,MAAOlB,EAAMU,QAAQS,OAAOC,MAC5BC,OAAQ,UACRC,UAAW,MACXC,QAAS,OACTC,cAAe,MACfC,OAAQ,OACRvB,SAAU,OACVwB,SAAU,SACVC,SAAU,QACVC,MAAO,OACPC,UAAW,SACXC,aAAc,WACdC,cAAe,YACfC,WAAY,kCACZC,WAAY,OACZC,cAAe,SACfC,WAAY,SACZC,MAAO,OACPC,OAAQ,KAEPrC,EAAMsC,YAAYC,GAAG,MAAQ,CAC5BzB,OAAQ,OACRc,MAAO,SAET,mBAAoB3B,GAChBF,EAAeE,OAAiB3G,EAExC,IAEakJ,GAAQ1C,EAAAA,EAAAA,GAAO,MAAPA,EAAc,SAAAnB,GAAA,IAAGqB,EAAKrB,EAALqB,MAAK,MAAQ,CACjDuB,QAAS,QACTkB,SAAUzC,EAAM0C,WAAWC,QAAQ,IACnCC,WAAY5C,EAAM0C,WAAWG,eAC7BxC,QAAS,EACTyC,YAAa9C,EAAM+C,QAAQ,GAC3Bf,WAAY,2BACb,I,UCrDYgB,EAAU,SAACC,GAAW,MAAa,IAAAC,OAAID,EAAIE,SAAS,KAAM5D,OAAO,EAAE,EA2DhFpG,eAAeiK,EAAkCC,GAG/C,OA3BsB,SAACC,GAIvB,IAHA,IAAMC,EAAQ,IAAIC,WAAWF,GACvBG,EAAMF,EAAMG,WACdC,EAAM,GACDC,EAAI,EAAGA,EAAIH,EAAKG,IAAK,CAC5B,IAAMC,EAAQN,EAAMK,QACNtK,IAAVuK,IACFF,GAAOG,OAAOC,cAAcF,GAEhC,CAEA,OAAOG,KAAKL,GAAKM,WAAW,IAAK,KAAKA,WAAW,IAAK,KAAKC,QAAQ,QAAS,GAC9E,CAeSC,OAzCMhL,eAAOiL,GACpB,IACMvK,GADU,IAAIwK,aACCC,OAAOF,GAE5B,OAAOjM,OAAOoM,OAAOC,OAAOC,OAAO,UAAW5K,EAChD,CAkCuB6K,CAAOrB,GAG9B,CAeO,IAAMsB,EAA+BxL,iBAC1C,IAvEMyL,EAuEAC,GAvEAD,EAAQ,IAAIE,YAAY,IAC9B3M,OAAOoM,OAAOQ,gBAAgBH,GAEvBI,MAAMC,KAAKL,EAAO5B,GAASkC,KAAK,KAuEvC,MAAO,CAAEC,oBAFmB/B,EAAkCyB,GAEtCA,aAAAA,EAC1B,E,UChEaO,GAAsBtO,EAAAA,EAAAA,eAAmC,CACpE+N,aAAc,KAGR7N,EAAaoO,EAAbpO,SAEKqO,EAA8C,SAAH1L,GAAqB,IAAf2L,EAAQ3L,EAAR2L,SAC5DlO,EAA4CH,IAApCR,EAAWW,EAAXX,YAAaG,EAAMQ,EAANR,OAAQP,EAAUe,EAAVf,WAGvBkP,EAAmB9O,EAAYsE,SAAS,cAAgB,mCAAqCtE,EAEnGe,GAAwCC,EAAAA,EAAAA,UAAS,IAAGC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAA7CqN,EAAYnN,EAAA,GAAE8N,EAAe9N,EAAA,GAE9B+N,GAAkBhN,EAAAA,EAAAA,cACtB,SAAC0M,GACC,IAAMxH,EAAM,IAAI+H,IAAIH,GAWpB,OAVA5H,EAAItF,SAAW,qBACfsF,EAAIgI,aAAa9I,OAAO,QAAS,OACjCc,EAAIgI,aAAa9I,OAAO,SAAU,QAClCc,EAAIgI,aAAa9I,OAAO,YAAa,uBACrCc,EAAIgI,aAAa9I,OAAO,gBAAiB,QACzCc,EAAIgI,aAAa9I,OAAO,wBAAyB,QACjDc,EAAIgI,aAAa9I,OAAO,aAAc,UAAFqG,OAAYtM,IAChD+G,EAAIgI,aAAa9I,OAAO,iBAAkBsI,GAC1CxH,EAAIgI,aAAa9I,OAAO,eAAgB+I,EAAAA,IAEjCjI,EAAIwF,UACb,GACA,CAACoC,EAAkB3O,KAGrBsC,EAAAA,EAAAA,YAAU,WACR,IAAM2M,EAAgB,SAACC,GACyD,IAAAC,EAApD,gBAAtBD,EAAMjM,KAAKmM,QAA4BF,EAAMjM,KAAKoM,MAAQH,EAAMjM,KAAKqM,MACvEvL,aAAawL,QAAQC,EAAAA,GAAyCN,EAAMjM,KAAKoM,MACzEtL,aAAawL,QAAQE,EAAAA,GAAsCP,EAAMjM,KAAKqM,KAE/B,QAAvCH,EAAAvJ,SAAS8J,eAAeC,EAAAA,WAAe,IAAAR,GAAvCA,EAAyCjJ,SAE7C,EAIA,OAFA3E,OAAOqD,iBAAiB,UAAWqK,GAE5B,kBAAM1N,OAAOsD,oBAAoB,UAAWoK,EAAc,CACnE,GAAG,KAEH3M,EAAAA,EAAAA,YAAU,WACJ7C,IAAeC,EAAAA,IACjBqO,IACG6B,MAAK,SAACC,GACL,IAAMC,EAAUjB,EAAgBgB,EAAEtB,eAElCK,EAAgBiB,EAAE5B,cAElB,IAAM8B,EAASnK,SAASC,cAAc,UAYtC,OAXAkK,EAAOC,GAAKL,EAAAA,GACZI,EAAOjK,IAAMgK,EACbC,EAAOE,QAAQC,IAAI,eACnBH,EAAOE,QAAQC,IAAI,iBACnBH,EAAOE,QAAQC,IAAI,qBACnBH,EAAOI,QAAS,EAChBJ,EAAOK,MAAMC,WAAa,SAC1BN,EAAOK,MAAMzF,QAAU,OAEvB/E,SAAS0K,KAAKrK,OAAO8J,GAEd,kBAAMA,EAAO7J,QAAQ,CAC9B,IACChE,OAAM,SAACE,GAEND,QAAQ4G,IAAI3G,EACd,GAEN,GAAG,CAAC3C,EAAYoP,IAEhB,IAAMzJ,GAAQjC,EAAAA,EAAAA,UACZ,iBAAO,CACL8K,aAAAA,EACD,GACD,CAACA,IAGH,OAAOsC,EAAAA,EAAAA,KAACnQ,EAAQ,CAACgF,MAAOA,EAAMsJ,SAAEA,GAClC,EC7Fa8B,EAAgC,WAC3C,IAAQ/Q,EAAeY,IAAfZ,WACAwO,GD6F2B3N,EAAAA,EAAAA,YAAWkO,GC7FtCP,cAER3L,EAAAA,EAAAA,YAAU,WACJ7C,IAAeC,EAAAA,IAVrB+Q,YAYM,eAAAlJ,EAAAC,EAAA,OAEgB,QADdD,GACAC,EAAAjG,QAAO0D,eAAO,IAAAsC,OAAA,EAAdA,EAAAe,KAAAd,EAAiB,iBAAkB,gBAAgB,SAACkJ,GAClDA,EAAaC,gBAAgB,eAAe,SAACC,GAC3CA,EAAEC,QAAQ,CACRC,SAAU/M,aAAagN,QAAQvB,EAAAA,IAC/BvB,aAAAA,EACAqB,IAAKvL,aAAagN,QAAQtB,EAAAA,IAC1BuB,YAAahC,EAAAA,KAEfjL,aAAaM,WAAWmL,EAAAA,GAC1B,IAEAkB,EAAaC,gBAAgB,kBAAkB,SAACC,GAI9CA,EAAEC,aAAQnO,EACZ,IAEAgO,EAAaO,OACf,GAAE,GACJ,IAGN,GAAG,CAAChD,EAAcxO,GACpB,E,oBCzCMyR,EAAgB,SAAHnO,GAAW,MAA4B,CACxD4H,QAAS,OACTE,OAAQ,OACRsG,QAH4BpO,EAALqG,MAGR+C,QAAQ,EAAG,IAAK,EAAG,GAClCX,MAAO,OACR,EAEY4F,GAAWlI,EAAAA,EAAAA,GAAOmI,EAAAA,EAAPnI,CAAyBgI,GAEpCI,GAAYpI,EAAAA,EAAAA,GAAOqI,EAAAA,EAAPrI,CAAcgI,GCZ1BM,EAAsB,SAAHzO,GAAkB,OAAAA,EAAZoG,cAAmCoH,EAAAA,EAAAA,KAACe,EAAS,KAAMf,EAAAA,EAAAA,KAACa,EAAQ,GAAG,ECGxFK,EAAa,WACxB,IAAQC,GCSRC,EAAAA,EAAAA,KDTQD,aACRE,EEPuB,WACvB,IAAAhR,GAAwCC,EAAAA,EAAAA,WAAS,GAAMC,GAAAC,EAAAA,EAAAA,GAAAH,EAAA,GAAhDuI,EAAYrI,EAAA,GAAE+Q,EAAe/Q,EAAA,GAC9BgR,GAAejQ,EAAAA,EAAAA,cAAY,kBAAMgQ,GAAgB,EAAM,GAAE,IACzDE,GAAelQ,EAAAA,EAAAA,cAAY,kBAAMgQ,GAAgB,EAAK,GAAE,IACxDG,GAAUnQ,EAAAA,EAAAA,cAAY,WAAM,IAAA0F,EAAAC,EAClB,QAAdD,GAAAC,EAAAjG,QAAO0D,eAAO,IAAAsC,GAAdA,EAAAe,KAAAd,EAAiB,UAAW2B,EAAe,kBAAoB,iBACjE,GAAG,CAACA,IAMJ,OALA7G,EAAAA,EAAAA,YAAU,WAAM,IAAA2P,EAAAC,EAAAC,EAAAC,EACA,QAAdH,GAAAC,EAAA3Q,QAAO0D,eAAO,IAAAgN,GAAdA,EAAA3J,KAAA4J,EAAiB,YAAa,mBAAoBH,GACpC,QAAdI,GAAAC,EAAA7Q,QAAO0D,eAAO,IAAAkN,GAAdA,EAAA7J,KAAA8J,EAAiB,YAAa,mBAAoBN,EACpD,GAAG,CAACA,EAAcC,KAEX5O,EAAAA,EAAAA,UACL,iBAAO,CACLgG,aAAAA,EACA6I,QAAAA,EACD,GACD,CAAC7I,EAAc6I,GAEnB,CFZoCK,GAA1BlJ,EAAYyI,EAAZzI,aAAc6I,EAAOJ,EAAPI,QAItB,OAFAxB,KAGE8B,EAAAA,EAAAA,MAACrJ,EAAe,CACd,cGhB8B,uBHiB9BE,aAAcA,EACd6I,QAASA,EAAQtD,SAAA,EAEjB6B,EAAAA,EAAAA,KAACiB,EAAI,CAACrI,aAAcA,KACpBoH,EAAAA,EAAAA,KAAC3E,EAAK,CAAA8C,SAAEvF,EAAeuI,EAAaa,UAAYb,EAAac,eAGnE,EInBaC,GAAmB,WAC9B,ICFQlO,EACAmC,EDGR,OCJQnC,EAAiBD,IAAjBC,aACAmC,EAAmBH,EAA0B,CAAEhC,aAAAA,IAA/CmC,eAED,CAAEgM,WAAYnO,GAAgBmC,IDD7BgM,YAEYnC,EAAAA,EAAAA,KAACkB,EAAM,IAAM,IACnC,EEIakB,GAA2C,CACtDH,WAAY,eACZD,UAAW,cAGAK,GAAwB,gB,WCdxBC,GAA8B,CACzCC,gBAAiB,EACjBC,mBAAoB,IACpBC,sBAAuB,IACvBC,oBAAoB,EACpBC,UAAU,EAEVC,aAAc,SACZ/Q,EACA6B,EACAmP,EACAC,EAAuBtQ,GAEpB,IAAAuQ,EAAAC,EADDC,EAAUzQ,EAAVyQ,WAEIC,EAAaC,OAAwB,QAAlBJ,EAAClR,EAAMa,KAAK0Q,cAAM,IAAAL,EAAAA,EAAI,KAE/C,KAAIG,GAAc,KAAOA,EAAa,KAAtC,CAIA,IAAMG,EAASJ,QAAAA,EAAc,EAEzBI,IAAiC,QAA3BL,EAAKH,EAAON,uBAAe,IAAAS,EAAAA,EAAI,IAIzC9C,YAAW,WAAW4C,EAAW,CAAEG,WAAYI,GAAS,GAAER,EAAOL,mBARjE,CASF,GCtBWc,GAAqC,SAAH9Q,GAAqB,IAAf2L,EAAQ3L,EAAR2L,SACnDlO,EAAgEH,IAAxDb,EAAegB,EAAfhB,gBAAiBG,EAAYa,EAAZb,aAAcI,EAAYS,EAAZT,aAAcC,EAAMQ,EAANR,OAC7CwG,GAAUC,EAAAA,EAAAA,KAAVD,MAER,OACE+J,EAAAA,EAAAA,KAACuD,GAAAA,GAAS,CAAC1O,MAAOyN,GAAUnE,UAC1B6B,EAAAA,EAAAA,KAACwD,EAAAA,IAAuB,CACtBC,QAASrU,EACTuH,SAAU1H,EACVQ,OAAQA,EACRwG,MAAOA,EAAMkI,UAEb6B,EAAAA,EAAAA,KAAC0D,EAAAA,IAAuB,CACtBD,QAASjU,EACTmH,SAAU1H,EACVQ,OAAQA,EAAO0O,SAEdA,OAKX,ECfawF,GAAoB,SAAHnR,GAA0B,IAApBoR,EAAapR,EAAboR,cAC1B3U,EAA0C2U,EAA1C3U,gBAAiBO,EAAyBoU,EAAzBpU,aAAcC,EAAWmU,EAAXnU,OAC/BwG,GAAUC,EAAAA,EAAAA,KAAVD,MAER,OACE+J,EAAAA,EAAAA,KAACpQ,EAAqB,CAACiF,MAAO+O,EAAczF,UAC1C6B,EAAAA,EAAAA,KAAC6D,EAAAA,EAAc,CACbC,KAAMC,EAAAA,GACNC,QAASnN,EAAAA,GAASsH,UAElB6B,EAAAA,EAAAA,KAACiE,EAAAA,SAAQ,CAACC,SAAU,KAAK/F,UACvB6B,EAAAA,EAAAA,KAACsD,GAAW,CAAAnF,UACV6B,EAAAA,EAAAA,KAACmE,EAAAA,EAAoB,CACnBlV,gBAAiBA,EACjBmV,mCAAiChL,EAAAA,EAAAA,GAAA,GAC9BiJ,GAAwBD,IAE3BiC,yBAA0B,CACxB5U,OAAAA,EACAwG,MAAAA,EACAwN,QAASjU,EAET8C,QAASV,QAAQC,OACjBsM,UAEF6B,EAAAA,EAAAA,KAACsE,EAAAA,EAA6B,CAACC,UAAWlC,GAAsBlE,UAC9D6B,EAAAA,EAAAA,KAAC9B,EAAoB,CAAAC,UACnB6B,EAAAA,EAAAA,KAACkC,GAAY,iBAS/B,E,6fCzCO,IAAMsC,GAAa,SAAAC,IAAAC,EAAAA,GAAAA,GAAAF,EAAAC,GAAA,IAAAE,EAAAC,GAAAJ,GAAA,SAAAA,IAAA,IAAAK,GAAAC,EAAAA,GAAAA,GAAA,KAAAN,GAAA,QAAAO,EAAAvQ,UAAAC,OAAAuQ,EAAA,IAAAnH,MAAAkH,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAAD,EAAAC,GAAAzQ,UAAAyQ,GACwB,OADxBJ,EAAAF,EAAA5M,KAAAmN,MAAAP,EAAA,OAAA5I,OAAAiJ,KAAA5L,EAAAA,EAAAA,IAAA+L,EAAAA,GAAAA,GAAAN,GAAA,QACsB,CAAC,GAACA,CAAA,CAI/C,OAJ+CO,EAAAA,GAAAA,GAAAZ,EAAA,EAAA9Q,IAAA,oBAAAmB,MAMhD,SAA2BhD,EAAcwT,GAEvCzT,QAAQC,MAAM,CAAEA,MAAAA,EAAOwT,UAAAA,GACzB,GAAC,CAAA3R,IAAA,SAAAmB,MAED,WACE,IAAQsJ,EAAamH,KAAKC,MAAlBpH,SAGR,OAFkBmH,KAAKE,MAAf3T,MAEO,KAAOsM,CACxB,IAAC,EAAAzK,IAAA,2BAAAmB,MAdD,SAAgChD,GAC9B,MAAO,CAAEA,MAAAA,EACX,KAAC2S,CAAA,CALuB,CAASiB,EAAAA,WCF5BzT,eAAe0T,GAAOC,GAEN,IAAIC,gBAAgB5U,OAAOC,SAAS4U,KAAKC,MAAM,KAAK,IAAzE,IAEAC,EAAwBJ,EAAYK,QAA5BnD,OAAAA,OAAM,IAAAkD,EAAG,GAAEA,EACbE,GAAYC,EAAAA,EAAAA,GAAiCrD,EAAQ,IACnD3T,EAA4B+W,EAA5B/W,WAA4B+W,EAAhB3W,aAgBpB6W,SAD6B,mCAArBA,YACGR,GAAaD,QACtB1F,EAAAA,EAAAA,KAACwE,GAAa,CAAArG,UACZ6B,EAAAA,EAAAA,KAACoG,EAAAA,EAAsB,CACrBlX,WAAYA,EACZmX,aAAa,GAAElI,UAEf6B,EAAAA,EAAAA,KAACsG,EAAAA,EAAa,CACZC,qBAAmB,EACnBC,SAAU3P,EAAAA,GAASsH,UAEnB6B,EAAAA,EAAAA,KAAC2D,GAAG,CAACC,cAAeqC,UAK9B,C","sources":["webpack://oriwebmessenger/./src/contexts/configurationContext.ts","webpack://oriwebmessenger/./src/hooks/useGetWebMessengerConfiguration.ts","webpack://oriwebmessenger/./src/hooks/useWebMessengerRequestParams.ts","webpack://oriwebmessenger/./src/utils/purgeLocalStorage.ts","webpack://oriwebmessenger/./src/hooks/useLoadClient.ts","webpack://oriwebmessenger/./src/utils/prepareGenesysScript.ts","webpack://oriwebmessenger/./src/queries/customerQuery.ts","webpack://oriwebmessenger/./src/hooks/useSendCustomerAttributes.ts","webpack://oriwebmessenger/./src/utils/sendCustomerData.ts","webpack://oriwebmessenger/./src/utils/getCustomerData.ts","webpack://oriwebmessenger/./src/components/Button/styles.ts","webpack://oriwebmessenger/./src/utils/authUtils.ts","webpack://oriwebmessenger/./src/contexts/externalAuthContext.tsx","webpack://oriwebmessenger/./src/hooks/useCreateAuthenticatedSession.ts","webpack://oriwebmessenger/./src/components/Icon/styles.ts","webpack://oriwebmessenger/./src/components/Icon/Icon.tsx","webpack://oriwebmessenger/./src/components/Button/Button.tsx","webpack://oriwebmessenger/./src/hooks/useTranslations.ts","webpack://oriwebmessenger/./src/components/Button/useButton.ts","webpack://oriwebmessenger/./src/components/Button/constants.ts","webpack://oriwebmessenger/./src/components/WebMessenger/WebMessenger.tsx","webpack://oriwebmessenger/./src/hooks/useShowButton.ts","webpack://oriwebmessenger/./src/constants/defaultTranslations.ts","webpack://oriwebmessenger/./src/constants/swrConfig.ts","webpack://oriwebmessenger/./src/containers/ApiProvider.tsx","webpack://oriwebmessenger/./src/App.tsx","webpack://oriwebmessenger/./src/containers/ErrorBoundary.ts","webpack://oriwebmessenger/./src/appRender.tsx"],"sourcesContent":["import { NOT_LOGGED_IN_USER_ID } from '@ori/auth';\nimport { useContext, createContext } from 'react';\n\nimport type { AppConfiguration } from '../models';\n\nexport const configurationContextDefaultValues: AppConfiguration = {\n currentLanguage: '',\n customerId: NOT_LOGGED_IN_USER_ID,\n globalApiUrl: '',\n graphqlUrl: '',\n identityUrl: '',\n kpiApiUrl: '',\n staticApiUrl: '',\n tenant: '',\n};\n\nexport const configurationContext = createContext(configurationContextDefaultValues);\n\nexport const ConfigurationProvider = configurationContext.Provider;\n\nexport const useConfiguration = () => useContext(configurationContext);\n","import { isAuthenticatedCustomer } from '@ori/auth';\nimport { validateStatus } from '@ori/fetching';\nimport { useGetTenantApplicationsWebMessengerConfiguration } from '@ori/static-api-client-react';\n\nimport { useWebMessengerRequestParams } from './useWebMessengerRequestParams';\nimport { useConfiguration } from '../contexts';\n\nexport const useGetWebMessengerConfiguration = () => {\n const { tenant, customerId } = useConfiguration();\n const { customerTypeId, relativeUrl, visitorSegment } = useWebMessengerRequestParams();\n const isAuthenticated = isAuthenticatedCustomer(customerId);\n\n return useGetTenantApplicationsWebMessengerConfiguration(\n tenant,\n {\n customerTypeId,\n relativeUrl,\n visitorSegment,\n },\n {\n swr: {\n enabled: !isAuthenticated || (customerTypeId !== undefined && visitorSegment !== undefined),\n revalidateIfStale: false,\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n },\n request: {\n validateStatus,\n },\n },\n );\n};\n","import { isAuthenticatedCustomer } from '@ori/auth';\nimport { handleResponse, validateStatus } from '@ori/fetching';\nimport type { GlobalCustomersCustomerInfoDtoVisitorSegment } from '@ori/global-api-client-react';\nimport { getCustomerInfo, useApiClient } from '@ori/global-api-client-react';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { useConfiguration } from '../contexts';\n\nexport const useWebMessengerRequestParams = () => {\n const { customerId } = useConfiguration();\n const client = useApiClient();\n const [customerTypeId, setCustomerTypeId] = useState();\n const [visitorSegment, setVisitorSegment] = useState();\n const relativeUrl = window.location.pathname;\n const isAuthenticated = isAuthenticatedCustomer(customerId);\n const onAuthenticated = useCallback(\n (fetch: (signal: AbortSignal) => Promise) => {\n if (isAuthenticated) {\n const abortController = new AbortController();\n fetch(abortController.signal).catch(console.error); // eslint-disable-line no-console -- log error to console\n\n return () => abortController.abort();\n }\n\n return undefined;\n },\n [isAuthenticated],\n );\n useEffect(() => {\n onAuthenticated(async (signal) => {\n const response = await getCustomerInfo(client, customerId, undefined, {\n signal,\n validateStatus,\n });\n handleResponse(response, {\n onError: () => {\n setCustomerTypeId(null);\n setVisitorSegment(null);\n },\n onSuccess: ({ data }) => {\n setCustomerTypeId(data.customerType?.customerTypeId);\n setVisitorSegment(data.visitorSegment);\n },\n });\n });\n }, [client, customerId, onAuthenticated]);\n\n return useMemo(\n () => ({\n customerTypeId: customerTypeId ?? undefined,\n relativeUrl,\n visitorSegment: visitorSegment ?? undefined,\n }),\n [customerTypeId, relativeUrl, visitorSegment],\n );\n};\n","/**\n * Genesys cloud stores some data in local storage.\n * This function removes it to be able to auto login again.\n */\nexport const purgeLocalStorage = () => {\n Object.keys(localStorage)\n .filter((key) => key.startsWith('_act') || key.includes(':gcm') || key.startsWith('_gca'))\n .forEach((key) => localStorage.removeItem(key));\n};\n","import { useEffect, useState } from 'react';\n\nimport { useGetWebMessengerConfiguration } from './useGetWebMessengerConfiguration';\nimport { prepareGenesysScript } from '../utils';\nimport { purgeLocalStorage } from '../utils/purgeLocalStorage';\n\nexport const useLoadClient = () => {\n const { data } = useGetWebMessengerConfiguration();\n const [clientLoaded, setClientLoaded] = useState(false);\n const { deploymentId, environment, scriptUrl } = data ?? {};\n\n useEffect(() => {\n window.addEventListener('beforeunload', purgeLocalStorage);\n\n return () => {\n window.removeEventListener('beforeunload', purgeLocalStorage);\n };\n }, []);\n\n useEffect(() => {\n const onLoad = () => setClientLoaded(true);\n const script = prepareGenesysScript({\n deploymentId,\n environment,\n scriptUrl,\n });\n if (script) {\n script.addEventListener('load', onLoad);\n document.head.append(script);\n\n return () => script.remove();\n }\n\n return undefined;\n }, [deploymentId, environment, scriptUrl]);\n\n return { clientLoaded };\n};\n","import type { StaticApplicationsWebMessengerWebMessengerConfigurationDto } from '@ori/static-api-client-react';\n\nexport const prepareGenesysScript = ({\n deploymentId,\n environment,\n scriptUrl,\n}: StaticApplicationsWebMessengerWebMessengerConfigurationDto | undefined = {}) => {\n if (!window.Genesys) {\n Object.defineProperty(window, 'Genesys', { writable: true, value: {} });\n }\n if (deploymentId && environment && scriptUrl) {\n window._genesysJs = 'Genesys';\n Object.defineProperty(window, 'Genesys', {\n writable: true,\n value: {\n t: Date.now(),\n c: {\n environment,\n deploymentId,\n debug: process.env.NODE_ENV !== 'production',\n },\n },\n });\n const script = document.createElement('script');\n script.src = scriptUrl;\n\n return script;\n }\n\n return null;\n};\n","import { gql } from '@ori/fetching';\n\nexport const customerQuery = gql`\n query GetCustomer {\n customer {\n firstName\n lastName\n emails {\n emailAddress\n }\n consultantNumber\n customerId\n phones {\n telephoneNumber\n }\n customerType {\n description\n }\n }\n }\n`;\n","import { isAuthenticatedCustomer, useToken } from '@ori/auth';\nimport { getHeaders, useGraphqlQuery } from '@ori/fetching';\nimport { useEffect, useState } from 'react';\n\nimport { APP_NAME } from '../constants';\nimport { useConfiguration } from '../contexts';\nimport type { GetCustomerQuery, GetCustomerQueryVariables } from '../models';\nimport { customerQuery } from '../queries';\nimport { sendCustomerData } from '../utils';\n\nexport interface UseSendCustomerAttributesParams {\n clientLoaded?: boolean;\n}\n\nexport const useSendCustomerAttributes = ({ clientLoaded }: UseSendCustomerAttributesParams) => {\n const { currentLanguage, customerId, graphqlUrl, tenant } = useConfiguration();\n const isAuthenticated = isAuthenticatedCustomer(customerId);\n const { token } = useToken();\n const [attributesSent, setAttributesSent] = useState(false);\n const { data, error } = useGraphqlQuery({\n query: customerQuery,\n url: graphqlUrl,\n headers: getHeaders({\n customerId,\n language: currentLanguage,\n sourceAppName: APP_NAME,\n tenant,\n token,\n }),\n skip: !isAuthenticated || !clientLoaded,\n });\n\n if (error) {\n // eslint-disable-next-line no-console -- Need to log error to console\n console.error(error);\n }\n\n useEffect(() => {\n if (clientLoaded && (data != null || error || !isAuthenticated)) {\n sendCustomerData({ currentLanguage, data, tenant });\n setAttributesSent(true);\n }\n }, [clientLoaded, currentLanguage, data, error, isAuthenticated, tenant]);\n\n return {\n attributesSent,\n };\n};\n","import type { GetCustomerDataParams } from './getCustomerData';\nimport { getCustomerData } from './getCustomerData';\n\nexport const sendCustomerData = (customerDataParams: GetCustomerDataParams) => {\n // eslint-disable-next-line new-cap -- Genesys preset naming\n window.Genesys?.('command', 'Database.set', {\n messaging: {\n customAttributes: getCustomerData(customerDataParams),\n },\n });\n};\n","/* eslint-disable @typescript-eslint/naming-convention -- Genesys preset naming */\nimport type { AppConfiguration, GetCustomerQuery } from '../models';\n\nexport interface GetCustomerDataParams extends Pick {\n data: GetCustomerQuery | undefined;\n}\n\nexport interface CustomerData {\n 'context.customField1Label': string;\n 'context.customField1': string;\n 'context.customField2Label': string;\n 'context.customField2': number | string;\n 'context.customField3Label': string;\n 'context.customField3': string;\n 'context.customField4Label': string;\n 'context.customField4': string;\n 'context.customerId': string;\n 'context.email': string;\n 'context.firstName': string;\n 'context.lastName': string;\n 'context.phoneNumber': string;\n 'context.source': string;\n}\n\nexport const getCustomerData = ({ currentLanguage, data, tenant }: GetCustomerDataParams): CustomerData => {\n const {\n customerId: customerCustomerId,\n consultantNumber,\n customerType,\n emails,\n firstName,\n lastName,\n phones,\n } = data?.customer ?? {};\n\n const response = {\n 'context.customField1Label': 'Customer Title',\n 'context.customField1': customerType?.description ?? 'Anonymous',\n 'context.customField2Label': 'Consultant Number',\n 'context.customField2': consultantNumber == null ? '' : consultantNumber,\n 'context.customField3Label': 'Language Code',\n 'context.customField3': currentLanguage.slice(0, 2).toUpperCase(),\n 'context.customField4Label': 'Market Code',\n 'context.customField4': tenant.toUpperCase(),\n 'context.customerId': customerCustomerId ?? '',\n 'context.email': emails?.[0]?.emailAddress ?? '',\n 'context.firstName': firstName ?? '',\n 'context.lastName': lastName ?? '',\n 'context.phoneNumber': phones?.[0]?.telephoneNumber ?? '',\n 'context.source': 'web',\n };\n\n // eslint-disable-next-line no-console -- debug info required to investigate issues\n console.log(response);\n\n return response;\n};\n","import { SHADOW_LEVEL1, styled } from '@ori-ui/mui';\n\ninterface ButtonComponentProps {\n isChatOpened?: boolean;\n}\n\nexport const ButtonComponent = styled('div')(({ isChatOpened, theme }) => {\n const buttonExpanded = {\n maxWidth: '100%',\n transitionDelay: '0s',\n div: {\n opacity: 1,\n transitionDelay: '0.2s',\n },\n };\n\n return {\n alignItems: 'center',\n background: theme.palette.default.main,\n borderRadius: '30px',\n bottom: '15px',\n boxShadow: SHADOW_LEVEL1,\n boxSizing: 'unset',\n color: theme.palette.common.white,\n cursor: 'pointer',\n direction: 'rtl',\n display: 'flex',\n flexDirection: 'row',\n height: '60px',\n maxWidth: '60px',\n overflow: 'hidden',\n position: 'fixed',\n right: '15px',\n textAlign: 'center',\n textOverflow: 'ellipsis',\n textTransform: 'uppercase',\n transition: 'max-width 0.5s ease-in-out 0.2s',\n userSelect: 'none',\n verticalAlign: 'middle',\n whiteSpace: 'nowrap',\n width: 'auto',\n zIndex: 100,\n\n [theme.breakpoints.up('md')]: {\n bottom: '30px',\n right: '30px',\n },\n '&:focus, &:hover': buttonExpanded,\n ...(isChatOpened ? buttonExpanded : undefined),\n };\n});\n\nexport const Label = styled('div')(({ theme }) => ({\n display: 'block',\n fontSize: theme.typography.pxToRem(14),\n fontWeight: theme.typography.fontWeightBold,\n opacity: 0,\n paddingLeft: theme.spacing(4),\n transition: 'opacity 0.3s ease-in-out',\n}));\n","/**\n * Converts a decimal number to a hexadecimal string.\n *\n * @param {number} dec - The decimal number to be converted to hexadecimal.\n * @returns {string} The hexadecimal representation of the input decimal number.\n */\nexport const dec2hex = (dec: number): string => `0${dec.toString(16)}`.slice(-2);\n\n/**\n * Generates a random code verifier for PKCE (Proof Key for Code Exchange) authentication.\n *\n * @returns {string} A random code verifier represented as a hexadecimal string.\n */\nconst generateCodeVerifier = () => {\n const array = new Uint32Array(56 / 2);\n window.crypto.getRandomValues(array);\n\n return Array.from(array, dec2hex).join('');\n};\n\n/**\n * Generates an SHA-256 hash of a string.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest\n *\n * @param {string} plain - The string to be hashed.\n */\nconst sha256 = async (plain: string): Promise => {\n const encoder = new TextEncoder();\n const data = encoder.encode(plain);\n\n return window.crypto.subtle.digest('SHA-256', data);\n};\n\n/**\n * Base64url encoding is similar to base64 encoding except it uses non-reserved URL characters\n * (e.g., '-', '_', '~') instead of reserved URL characters (e.g., '+', '/', '=').\n *\n * @param {ArrayBuffer} a - The array buffer to be encoded.\n * @returns {string} The base64url encoded string.\n */\nconst base64urlEncode = (a: ArrayBuffer): string => {\n const bytes = new Uint8Array(a);\n const len = bytes.byteLength;\n let str = '';\n for (let i = 0; i < len; i++) {\n const point = bytes[i];\n if (point !== undefined) {\n str += String.fromCodePoint(point);\n }\n }\n\n return btoa(str).replaceAll('+', '-').replaceAll('/', '_').replace(/[=]+$/, '');\n};\n\n/**\n * Generates a code challenge from a code verifier for PKCE (Proof Key for Code Exchange) authentication.\n * The code challenge is a base64url encoded SHA-256 hash of the code verifier.\n *\n * See https://tools.ietf.org/html/rfc7636#section-4.2 for more details.\n *\n * @param {string} v - The code verifier to generate a code challenge from.\n * @returns {string} The code challenge.\n *\n */\nasync function generateCodeChallengeFromVerifier(v: string): Promise {\n const hashed = await sha256(v);\n\n return base64urlEncode(hashed);\n}\n\ninterface VerifierAndChallenge {\n codeChallenge: string;\n codeVerifier: string;\n}\n\n/**\n * Generates a code verifier and a code challenge for PKCE (Proof Key for Code Exchange) authentication.\n * The code verifier is a random string and the code challenge is a base64url encoded SHA-256 hash of the code verifier.\n * See https://tools.ietf.org/html/rfc7636#section-4.2 for more details.\n *\n * @returns {VerifierAndChallenge} The code verifier and the code challenge.\n *\n */\nexport const generateVerifierAndChallenge = async (): Promise => {\n const codeVerifier = generateCodeVerifier();\n const codeChallenge = await generateCodeChallengeFromVerifier(codeVerifier);\n\n return { codeChallenge, codeVerifier };\n};\n","import { NOT_LOGGED_IN_USER_ID } from '@ori/auth';\nimport type { FC, PropsWithChildren } from 'react';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';\n\nimport { useConfiguration } from './configurationContext';\nimport {\n AUTH_CODE_STORAGE_PARAMETER_FOR_GENESYS,\n AUTH_IFRAME_ID,\n ISSUER_STORAGE_PARAMETER_FOR_GENESYS,\n REDIRECT_URI,\n} from '../constants';\nimport { generateVerifierAndChallenge } from '../utils/authUtils';\n\nexport interface ExternalAuthContext {\n codeVerifier: string;\n}\n\ninterface MessageEvent {\n data: {\n source: string;\n code: string;\n iss: string;\n };\n}\n\nexport const externalAuthContext = createContext({\n codeVerifier: '',\n});\n\nconst { Provider } = externalAuthContext;\n\nexport const ExternalAuthProvider: FC = ({ children }) => {\n const { identityUrl, tenant, customerId } = useConfiguration();\n\n // Quick hack for identityUrl until it's fixed on FP, sometimes it contains url {tenant}.online.ori which is wrong.\n const fixedIdentityUrl = identityUrl.includes('online.ori') ? 'https://identity-we.oriflame.com' : identityUrl;\n\n const [codeVerifier, setCodeVerifier] = useState('');\n\n const generateAuthUrl = useCallback(\n (codeChallenge: string) => {\n const url = new URL(fixedIdentityUrl);\n url.pathname = '/connect/authorize';\n url.searchParams.append('scope', 'all');\n url.searchParams.append('prompt', 'none');\n url.searchParams.append('client_id', 'GenesysWebMessenger');\n url.searchParams.append('response_type', 'code');\n url.searchParams.append('code_challenge_method', `S256`);\n url.searchParams.append('acr_values', `tenant:${tenant}`);\n url.searchParams.append('code_challenge', codeChallenge);\n url.searchParams.append('redirect_uri', REDIRECT_URI);\n\n return url.toString();\n },\n [fixedIdentityUrl, tenant],\n );\n\n useEffect(() => {\n const handleMessage = (event: MessageEvent) => {\n if (event.data.source === 'genesysAuth' && event.data.code && event.data.iss) {\n localStorage.setItem(AUTH_CODE_STORAGE_PARAMETER_FOR_GENESYS, event.data.code);\n localStorage.setItem(ISSUER_STORAGE_PARAMETER_FOR_GENESYS, event.data.iss);\n\n document.getElementById(AUTH_IFRAME_ID)?.remove();\n }\n };\n\n window.addEventListener('message', handleMessage);\n\n return () => window.removeEventListener('message', handleMessage);\n }, []);\n\n useEffect(() => {\n if (customerId !== NOT_LOGGED_IN_USER_ID) {\n generateVerifierAndChallenge()\n .then((r) => {\n const authUrl = generateAuthUrl(r.codeChallenge);\n\n setCodeVerifier(r.codeVerifier);\n\n const iframe = document.createElement('iframe');\n iframe.id = AUTH_IFRAME_ID;\n iframe.src = authUrl;\n iframe.sandbox.add('allow-forms');\n iframe.sandbox.add('allow-scripts');\n iframe.sandbox.add('allow-same-origin');\n iframe.hidden = true;\n iframe.style.visibility = 'hidden';\n iframe.style.display = 'none';\n\n document.body.append(iframe);\n\n return () => iframe.remove();\n })\n .catch((error) => {\n // eslint-disable-next-line no-console -- error\n console.log(error);\n });\n }\n }, [customerId, generateAuthUrl]);\n\n const value = useMemo(\n () => ({\n codeVerifier,\n }),\n [codeVerifier],\n );\n\n return {children};\n};\n\nexport const useExternalAuth = () => useContext(externalAuthContext);\n","import { NOT_LOGGED_IN_USER_ID } from '@ori/auth';\nimport { useEffect } from 'react';\n\nimport {\n AUTH_CODE_STORAGE_PARAMETER_FOR_GENESYS,\n ISSUER_STORAGE_PARAMETER_FOR_GENESYS,\n REDIRECT_URI,\n} from '../constants';\nimport { useConfiguration, useExternalAuth } from '../contexts';\n\nconst waitAndExecute = (callback: () => void, delay: number) => {\n setTimeout(callback, delay);\n};\n/**\n * Due to iframe and its redirect I have to wait few seconds before I can register plugin.\n */\nexport const useCreateAuthenticatedSession = () => {\n const { customerId } = useConfiguration();\n const { codeVerifier } = useExternalAuth();\n\n useEffect(() => {\n if (customerId !== NOT_LOGGED_IN_USER_ID) {\n waitAndExecute(\n () =>\n // eslint-disable-next-line new-cap, @typescript-eslint/no-unsafe-return -- Genesys preset naming,\n window.Genesys?.('registerPlugin', 'AuthProvider', (AuthProvider) => {\n AuthProvider.registerCommand('getAuthCode', (e) => {\n e.resolve({\n authCode: localStorage.getItem(AUTH_CODE_STORAGE_PARAMETER_FOR_GENESYS),\n codeVerifier,\n iss: localStorage.getItem(ISSUER_STORAGE_PARAMETER_FOR_GENESYS),\n redirectUri: REDIRECT_URI,\n });\n localStorage.removeItem(AUTH_CODE_STORAGE_PARAMETER_FOR_GENESYS);\n });\n\n AuthProvider.registerCommand('reAuthenticate', (e) => {\n /*\n In case there is no valid auth-code or refresh token it should again open login form but in this case we are using hidden iframe.\n */\n e.resolve(undefined);\n });\n\n AuthProvider.ready();\n }),\n 3000,\n );\n }\n }, [codeVerifier, customerId]);\n};\n","import { BubbleHelpFilled, Clear } from '@ori-ui/icons';\nimport type { Theme } from '@ori-ui/mui';\nimport { styled } from '@ori-ui/mui';\n\ninterface GetIconStylesProps {\n theme: Theme;\n}\n\nconst getIconStyles = ({ theme }: GetIconStylesProps) => ({\n display: 'flex',\n height: '32px',\n padding: theme.spacing(0, 2.8, 0, 2),\n width: '32px',\n});\n\nexport const OpenIcon = styled(BubbleHelpFilled)(getIconStyles);\n\nexport const CloseIcon = styled(Clear)(getIconStyles);\n","import type { FC } from 'react';\n\nimport { CloseIcon, OpenIcon } from './styles';\nimport type { IconProps } from './types';\n\nexport const Icon: FC = ({ isChatOpened }) => (isChatOpened ? : );\n","import type { FC } from 'react';\n\nimport { WEB_MESSENGER_BUTTON } from './constants';\nimport { ButtonComponent, Label } from './styles';\nimport { useButton } from './useButton';\nimport { useCreateAuthenticatedSession, useTranslations } from '../../hooks';\nimport { Icon } from '../Icon';\n\nexport const Button: FC = () => {\n const { translations } = useTranslations();\n const { isChatOpened, onClick } = useButton();\n\n useCreateAuthenticatedSession();\n\n return (\n \n \n \n \n );\n};\n","/* istanbul ignore file */\n/**\n * DO NOT EDIT!\n * This file was autogenerated by npm script `localizations-codegen`.\n * Changes may cause incorrect behavior and will be lost when the file is regenerated.\n *\n * Run `npx localizations-codegen` to regenerate.\n */\nimport { useTranslationsFromNamespace, type UseTranslationsFromNamespaceResult } from '@ori/i18n';\n\nimport type { DefaultTranslations } from '../constants/defaultTranslations';\n\n/**\n * A hook for accessing translations within a specific namespace along with a formatting function.\n *\n * @returns The translations within the specified namespace and a formatting function.\n */\nexport const useTranslations: () => UseTranslationsFromNamespaceResult = () =>\n useTranslationsFromNamespace();\n","/* eslint-disable new-cap -- Genesys preset naming */\nimport { useCallback, useEffect, useMemo, useState } from 'react';\n\nexport const useButton = () => {\n const [isChatOpened, setIsChatOpened] = useState(false);\n const onChatClosed = useCallback(() => setIsChatOpened(false), []);\n const onChatOpened = useCallback(() => setIsChatOpened(true), []);\n const onClick = useCallback(() => {\n window.Genesys?.('command', isChatOpened ? 'Messenger.close' : 'Messenger.open');\n }, [isChatOpened]);\n useEffect(() => {\n window.Genesys?.('subscribe', 'Messenger.opened', onChatOpened);\n window.Genesys?.('subscribe', 'Messenger.closed', onChatClosed);\n }, [onChatClosed, onChatOpened]);\n\n return useMemo(\n () => ({\n isChatOpened,\n onClick,\n }),\n [isChatOpened, onClick],\n );\n};\n","export const WEB_MESSENGER_BUTTON = 'web-messenger-button';\n","import type { FC } from 'react';\n\nimport { useShowButton } from '../../hooks';\nimport { Button } from '../Button';\n\nexport const WebMessenger: FC = () => {\n const { showButton } = useShowButton();\n\n return showButton ?