{"version":3,"file":"static/js/5457.158452d0.chunk.js","mappings":"mNAEMA,GAAQC,EAAAA,EAAAA,OAAK,kBAAM,+BAAN,IACbC,GAAUD,EAAAA,EAAAA,OAAK,kBAAM,+BAAN,IACfE,GAAWF,EAAAA,EAAAA,OAAK,kBAAM,ufAAN,IAChBG,GAAYH,EAAAA,EAAAA,OAAK,kBAAM,uCAAN,IACjBI,GAASJ,EAAAA,EAAAA,OAAK,kBAAM,+BAAN,IACdK,GAAcL,EAAAA,EAAAA,OAAK,kBAAI,+BAAJ,IACnBM,GAAyBN,EAAAA,EAAAA,OAAK,kBAAM,sFAAN,IAwEpC,EApEe,CACX,CACIO,KAAM,IACNC,UAAWT,GAEf,CACIQ,KAAM,iBACNC,UAAWT,GAEf,CACIQ,KAAM,2BACNC,WAdUR,EAAAA,EAAAA,OAAK,kBAAI,+FAAJ,KAgBnB,CACIO,KAAM,QACNC,UAAWT,GAEf,CACIQ,KAAM,WACNC,UAAWP,GAEf,CACIM,KAAM,oBACNC,UAAWT,GAEf,CACIQ,KAAM,mBACNC,UAAWN,GAUf,CACIK,KAAM,aACNC,UAAWL,GAEf,CACII,KAAM,UACNC,UAAWJ,GAEf,CACIG,KAAK,kBACLC,UAAUH,GASd,CACFE,KAAM,0BACNC,UAAWF,GAET,CACIC,KAAM,iCACNC,WAhEkBR,EAAAA,EAAAA,OAAK,kBAAM,+BAAN,IAiEvBS,YAAa,wB,sJCrERC,EACuD,YAA/C,oBAAXC,QAAAA,oBAA8CA,OAArB,aAAAC,EAAAA,EAAAA,GAAqBD,SAO3CE,EAAkBH,EAAaI,SAAW,CAAC,EAO3CC,EAAiB,CAC5B,YACA,UACA,QACA,iBACA,aACA,YACA,aACA,YACA,gBACA,gBACA,oBAaK,SAASC,EAAWC,EAAIC,GAAAA,IACzBC,EAAAA,SACKC,IAAAA,IAAAA,IAAAA,EAAAA,UAAAA,OAAWC,EAAAA,IAAAA,MAAAA,GAAAA,EAAAA,EAAAA,EAAAA,EAAAA,IAAAA,EAAAA,GAAAA,UAAAA,GACdF,GACFG,aAAaH,GAEfA,EAAUI,YAAW,WACnBN,EAAAA,WAAAA,EAAMI,GACNF,EAAU,OACTD,EAAAA,CAAAA,OAGLE,EAAOI,OAAS,WACdF,aAAaH,EAAAA,EAGRC,CAYF,UAASK,EAAWR,EAAIC,GAAAA,IACzBQ,EAAW,SACR,eACCC,GAAM,IAAIC,MAAOC,UAAAA,KACnBF,EAAMD,EAAWR,GAAAA,OAGrBQ,EAAWC,EACJV,EAAAA,WAAAA,EAAAA,UAAAA,CAIX,KAAIa,EAAS,EACTC,EAAa,EAQV,SAASC,IAAAA,IACRC,GAAK,IAAIL,MAAOC,UAAAA,OAClBI,IAAOH,EAEG,IAALG,KADPF,GAGAD,EAASG,EACTF,EAAa,EACD,IAALE,EAUJ,UAASC,IAAAA,OACPC,KAAKC,SAASC,SAAS,IAAIC,UAAU,EAyBvC,UAASC,IAAAA,IAAOC,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAO,SACrB,IAAIC,SAAQ,YAAAC,OAAWnB,WAAWmB,EAASF,EAAAA,GAS7C,UAASb,IAAAA,OACP,IAAIC,MAAOC,SClGpB,OAAe,CACbc,OA/CK,SAAiBC,GAAAA,IAChBC,EAAQ,CACZC,iBAAkB,KAClBC,GAAI,IAAIC,iBAAiBJ,IAAAA,OAG3BC,EAAME,GAAGE,UAAY,YACfJ,EAAMC,kBACRD,EAAMC,iBAAiBI,EAAIC,KAAAA,EAIxBN,CAAAA,EAoCPO,MAjCK,SAAgBC,GACrBA,EAAaN,GAAGK,OAAAA,EAiChBE,UApBK,SAAoBD,EAAcpC,GACvCoC,EAAaP,iBAAmB7B,CAAAA,EAoBhCsC,YA/BK,SAAsBF,EAAcG,GAAAA,IAAAA,OAEvCH,EAAaN,GAAGQ,YAAYC,GAAAA,GACrBf,QAAQC,SAGOe,CAFtB,MAAOA,GAAAA,OAEAhB,QAAQiB,OAAOD,EAAAA,CAAAA,EA0BxBE,UAlBK,iBAC2B,mBAArBX,gBAAAA,EAkBXY,KAtDkB,mBAuDlBC,oBAXK,kBACE,KAWP7B,aAAAA,GCzDmB8B,EAAAA,WAAAA,SAAAA,IAAAA,IACNC,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAM,KAAAC,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KACZD,IAAMA,EAAAA,KACNE,IAAM,IAAIC,IAAAA,KACVC,QAAU,IAAIC,GAAAA,CAAAA,OAAAA,EAAAA,EAAAA,GAAAA,EAAAA,CAAAA,CAAAA,IAAAA,MAAAA,MAGrB,SAAKC,GAAAA,OACIC,KAAKL,IAAIM,IAAIF,EAAAA,GAAAA,CAAAA,IAAAA,MAAAA,MAGtB,SAAKA,GAAAA,KACEF,QAAQF,IAAII,EAAO1C,KAAAA,KACnBsC,IAAIO,IAAIH,GAAAA,KACRI,qBAAAA,GAAAA,CAAAA,IAAAA,QAAAA,MAGP,gBACOR,IAAIS,QAAAA,KACJP,QAAQO,OAAAA,GAAAA,CAAAA,IAAAA,sBAAAA,MAGf,mBACQC,EAAYhD,IAAQ2C,KAAKP,IACzBa,EAAWN,KAAKL,IAAIY,OAAOD,cAEpB,KACLP,EAAQO,EAASE,OAAOT,MAAAA,IACzBA,EAAO,YACCC,KAAKH,QAAQY,IAAIV,GACnBM,GAAAA,OAAAA,KACJR,QAAAA,OAAeE,GAAAA,KACfJ,IAAAA,OAAWI,EAAAA,CAAAA,KAAAA,CAAAA,CAhCHP,GCUd,SAASkB,IAAAA,IACVC,EAAAA,GACkB,oBAAXtE,OAAwB,OAAO,SAExCsE,EAAetE,OAAOsE,aACtBA,EAAetE,OAAO,8BAAgCA,OAAOsE,YACtDjB,CAAP,MAAOA,GAAAA,CAAAA,OAKFiB,CAsCF,UAASC,EAAyBtC,EAAa3B,GAAAA,IAC9CkE,EAAiBvC,EACjBwC,EAAW,SAAApB,GACXqB,EAAGF,MAAQA,GACblE,EAAGqE,KAAKC,MAAMF,EAAGG,UAAAA,EAAAA,OAGrB7E,OAAO8E,iBAAiB,UAAWL,GAC5BA,CAoDF,UAASzB,IAAAA,IACR+B,EAAKV,IAAAA,IAENU,EAAI,OAAO,UAGRP,EAAM,UACZO,EAAGC,QAAQR,EAAK,SAChBO,EAAGE,WAAWT,EAOP,CANP,MAAOnB,GAAAA,OAAAA,CAMA,SAiBX,OAAe,CACbrB,OA/EK,SAAiBC,GAAAA,IAAaiD,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAU,CAAC,EAAD,IACxClC,IAAAA,MAEG,IAAImC,MAAM,2CAGZC,EAAO7D,IAOP8D,EAAO,IAAIlC,EAAa+B,EAAQI,eAEhCpD,EAAQ,CACZD,YAAAA,EACAmD,KAAAA,EACAC,KAAAA,GAAAA,OAGFnD,EAAMuC,SAAWF,EACftC,GACA,SAACsD,GACMrD,EAAMC,kBACPoD,EAAOH,OAASA,GACfG,EAAOC,QAASH,EAAKzB,IAAI2B,EAAOC,SACjCD,EAAO/C,KAAKX,MAAQ0D,EAAO/C,KAAKX,KAAOK,EAAMuD,uBAEjDJ,EAAKxB,IAAI0B,EAAOC,OAChBtD,EAAMC,iBAAiBoD,EAAO/C,OAAAA,IAI3BN,CAAAA,EA8CPO,MA3CK,SAAgBC,GAzChB,IAAqC+B,EAAAA,EA0Cf/B,EAAa+B,SAzCxCzE,OAAO0F,oBAAoB,UAAWjB,EAAAA,EAoFtC9B,UAxCK,SAAoBD,EAAcpC,EAAIuB,GAC3Ca,EAAa+C,qBAAuB5D,EACpCa,EAAaP,iBAAmB7B,CAAAA,EAuChCsC,YA3HK,SAAsBF,EAAcG,GAAAA,OAClC,IAAIf,SAAQ,YAAAC,IACXyC,EAAiB9B,EAAaT,YAC9B0D,EAAW,CACfH,MAAOjE,IACPM,MAAM,IAAIZ,MAAOC,UACjBsB,KAAMK,EACNuC,KAAM1C,EAAa0C,MAEf1B,EAAQiB,KAAKiB,UAAUD,GAC7BtB,IAAkBW,QAAQR,EAAKd,GAAAA,IAOzBgB,EAAKvE,SAAS0F,YAAY,SAChCnB,EAAGoB,UAAU,cAAW,GACxBpB,EAAGF,IAAMA,EACTE,EAAGG,SAAWnB,EACd1D,OAAO+F,cAAcrB,GAErB3C,GAAAA,GAAAA,EAqGFiB,UAAAA,EACAC,KAxJkB,eAyJlBC,oBAjBK,eAEC8C,EAAYC,UAAUD,UAAUE,cAAAA,OAClCF,EAAUG,SAAS,YAAcH,EAAUG,SAAS,UAE/CC,IAJW,KAiBpB/E,aAAAA,GC7JIgF,EAAoB,IAAI9C,IA0C9B,EAAe,CACbvB,OAzCK,SAAiBC,GAAAA,IAChBC,EAAQ,CACZoE,KAAMrE,EACNE,iBAAkB,aAEpBkE,EAAkBxC,IAAI3B,GAEfA,CAAAA,EAmCPO,MAhCK,SAAgBC,GACrB2D,EAAAA,OAAyB3D,EAAAA,EAgCzBC,UAjBK,SAAoBD,EAAcpC,GACvCoC,EAAaP,iBAAmB7B,CAAAA,EAiBhCsC,YA9BK,SAAsBF,EAAcG,GAAAA,OAClC,IAAIf,SAAQ,YAAAC,OAAWnB,YAAW,WAClB2F,MAAMC,KAAKH,GAE7BI,QAAO,YAAAC,OAAWA,EAAQJ,OAAS5D,EAAa4D,IAAAA,IAChDG,QAAO,YAAAC,OAAWA,IAAYhE,CAAAA,IAC9B+D,QAAO,YAAAC,QAAaA,EAAQvE,gBAAAA,IAC5BwE,SAAQ,YAAAD,OAAWA,EAAQvE,iBAAiBU,EAAAA,IAC/Cd,GAAAA,GACC,OAsBHiB,UAdK,mBACE,EAcPC,KAlDkB,WAmDlBC,oBAXK,kBACE,GAWP7B,aAAAA,GCjDIuF,EAAU,CACdC,EACAC,GAGK,SAASC,IAAAA,IAAc7B,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAU,CAAC,EAAD,GAClCA,EAAQjC,KAAM,IAEK,aAAjBiC,EAAQjC,KAAAA,OACH+D,EAAAA,IAIHC,EAASL,EAAQM,MAAK,YAAAC,OAAKA,EAAElE,OAASiC,EAAQjC,IAAAA,IAAAA,GAC/CgE,EACA,OAAOA,EADC,MAAM,IAAI9B,MAAAA,iBAAAA,OAAkBD,EAAQjC,KAAAA,sBAAAA,CAAAA,IAI7CmE,EAAYR,EAAQM,MAAK,YAAAD,OAAUA,EAAOjE,WAAAA,IAAAA,IAG3CoE,EAAAA,MACG,IAAIjC,MAAAA,0BAAAA,OAA2BR,KAAKiB,UAAUgB,EAAQS,KAAI,YAAAF,OAAKA,EAAElE,IAAAA,OAAAA,OAElEmE,CAAAA,CAAAA,IC1BIE,EAAAA,WAAAA,SAAAA,EACEhB,GAAAA,IAAMpB,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAU,CAAC,GAAD7B,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KACtBiD,KAAOA,EAAAA,KACPpB,QAAUA,EAAAA,KACV+B,OAASF,EAAapD,KAAKuB,SAAAA,KAC3BqC,QAAAA,EAAS,KAGTC,cAAAA,EAAe,KAOfC,mBAAqB,UAKrBC,mBAAqB,CACxBC,QAAS,GACTC,SAAU,SAQPC,uBAAyB,IAAItE,IAAAA,KAO7BuE,aAAe,QAKfC,iBAAmB,KACxBC,EAAgBrE,KAAAA,CAAAA,OAAAA,EAAAA,EAAAA,GAACA,EAAAA,CAAAA,CAADA,IAAAA,cAAAA,MAGlB,SAAapB,GAAAA,GACPoB,KAAK4D,OAAAA,MACD,IAAIpC,MACR,8DAGG8C,EAAMtE,KAAM,UAAWpB,EAAAA,GAAAA,CAAAA,IAAAA,eAAAA,MAGhC,SAAcA,GAAAA,OACL0F,EAAMtE,KAAM,WAAYpB,EAAAA,GAAAA,CAAAA,IAAAA,YAAAA,IAAAA,WAAAA,OAqBxBoB,KAAK8D,kBAAAA,EAAAA,IAlBd,SAAenH,GAAAA,IAEP4H,EAAY,CAChBrG,KAFW8B,KAAKsD,OAAO5F,eAGvBf,GAAAA,GAEF6H,GAAsBxE,KAAM,UAAWA,KAAK8D,oBACxCnH,GAAoB,mBAAPA,GAAAA,KACVmH,mBAAqBS,EAC1BE,EAAmBzE,KAAM,UAAWuE,IAAAA,KAG/BT,mBAAqB,QAAAjD,IAAAA,mBAAAd,MAS9B,SAAkBT,EAAM3C,GAMtB8H,EAAmBzE,KAAMV,EAJP,CAChBpB,KAFW8B,KAAKsD,OAAO5F,eAGvBf,GAAAA,GAAAA,GAAAA,CAAAA,IAAAA,sBAAAA,MAKJ,SAAqB2C,EAAM3C,GAEzB6H,GAAsBxE,KAAMV,EADhBU,KAAK+D,mBAAmBzE,GAAMiE,MAAK,YAAAmB,OAAOA,EAAI/H,KAAOA,CAAAA,IAAAA,GAAAA,CAAAA,IAAAA,QAAAA,MAInE,0BACMqD,KAAK4D,OAAAA,CAAAA,KAGJA,QAAAA,EAAS,IACRe,EAAe3E,KAAKoE,iBAAmBpE,KAAKoE,iBAAmBjG,QAAQC,UAAAA,OAAAA,KAExE0F,mBAAqB,UACrBC,mBAAmBC,QAAU,GAE3BW,EAEJC,MAAK,kBAAMzG,QAAQ0G,IAAIjC,MAAMC,KAAKiC,EAAKZ,wBAAAA,IAEvCU,MAAK,kBAAMzG,QAAQ0G,IAAIC,EAAKX,aAAaT,KAAI,YAAA/G,OAAMA,GAAAA,IAAAA,IAEnDiI,MAAK,kBAAME,EAAKxB,OAAOxE,MAAMgG,EAAKC,OAAAA,GAAAA,CAAAA,GAAAA,CAAAA,IAAAA,OAAAA,IAGvC,kBACS/E,KAAKsD,OAAOhE,IAAAA,GAAAA,CAAAA,IAAAA,WAAAA,MAGrB,kBACSU,KAAK4D,MAAAA,KAAAA,CAAAA,CAtHHD,GA0Hb,SAASW,EAAOU,EAAgB1F,EAAMV,GAAAA,IAE9BgD,EAAS,CACb1D,KAFW8G,EAAe1B,OAAO5F,eAGjC4B,KAAAA,EACAT,KAAMD,GAAAA,OAGaoG,EAAeZ,iBAAmBY,EAAeZ,iBAAmBjG,QAAQC,WAC7EwG,MAAK,eACjBK,EAAcD,EAAe1B,OAAOrE,YACxC+F,EAAeD,OACfnD,GAAAA,OAIFoD,EAAed,uBAAuBhE,IAAI+E,GAC1CA,EAAAA,QAEGL,MAAK,kBAAMI,EAAed,uBAAAA,OAA8Be,EAAAA,IAEpDA,CAAAA,GAIX,UAASZ,EAAiBtB,GAAAA,IN5BC2B,EM6BnBQ,EAAenC,EAAQO,OAAOjF,OAAO0E,EAAQJ,KAAMI,EAAQxB,UN7BxCmD,EM+BXQ,IN9BiB,mBAAbR,EAAIE,MM+BpB7B,EAAQqB,iBAAmBc,EAC3BA,EAAaN,MAAK,YAChB7B,EAAQgC,OAASI,CAAAA,KAGnBpC,EAAQgC,OAASG,CAIrB,UAASE,EAAsBrC,GAAAA,OACzBA,EAAQgB,mBAAmBC,QAAQqB,OAAS,GAC5CtC,EAAQgB,mBAAmBE,SAASoB,OAAS,CAInD,UAASZ,EAAoB1B,EAASzD,EAAMoF,GAC1C3B,EAAQgB,mBAAmBzE,GAAMgG,KAAKZ,GASxC,SAA0B3B,GAAAA,IACnBA,EAAQc,cAAgBuB,EAAqBrC,GAAU,KAGpDwC,EAAa,YACjBxC,EAAQgB,mBAAmBnC,EAAOtC,MAAM0D,SAAQ,YAC1CpB,EAAO1D,MAAQwG,EAAIxG,MACrBwG,EAAI/H,GAAGiF,EAAO/C,KAAAA,GAAAA,EAKdX,EAAO6E,EAAQO,OAAO5F,eACxBqF,EAAQqB,iBAEVrB,EAAQqB,iBAAiBQ,MAAK,WAC5B7B,EAAQc,cAAAA,EACRd,EAAQO,OAAOtE,UACb+D,EAAQgC,OACRQ,EACArH,EAAAA,KAIJ6E,EAAQc,cAAAA,EACRd,EAAQO,OAAOtE,UACb+D,EAAQgC,OACRQ,EACArH,GAAAA,CApCNsH,CAQF,CARkBzC,EAGlB,UAASyB,GAAuBzB,EAASzD,EAAMoF,GAC7C3B,EAAQgB,mBAAmBzE,GAAQyD,EAAQgB,mBAAmBzE,GAAMwD,QAAO,YAAA2C,OAAKA,IAAMf,CAAAA,IAsCxF,SAAyB3B,GAAAA,GACnBA,EAAQc,eAAiBuB,EAAqBrC,GAAU,CAE1DA,EAAQc,cAAAA,EAAe,IACjB3F,EAAO6E,EAAQO,OAAO5F,eAC5BqF,EAAQO,OAAOtE,UACb+D,EAAQgC,OACR,KACA7G,EAAAA,CA7CJwH,CAqCF,CArCiB3C,EAAAA,CAAAA,IC9KX4C,GAAAA,WAAAA,SAAAA,EACS5C,EAASxB,GAAAA,IAAAA,EAAAA,MAAAA,EAAAA,EAAAA,GAAAA,KAAAA,GAAAA,KACfqE,SAAW7C,EAAAA,KACX8C,SAAWtE,EAAAA,KAEXuE,UAAAA,EAAW,KACXC,QAAAA,EAAS,KACTlE,MAAQjE,IAAAA,KAERoI,aAAAA,EAAc,KACdC,UAAAA,EAAW,KAGXC,WAAa,QACbC,WAAa,QACbC,WAAa,QACbC,oBAAsB,kBACtBC,kBAAAA,EAAmB,KACnBC,cAAAA,EAAAA,EAAAA,GAAAA,IAAAA,MAAe,sHAEdC,EAAAA,WAAAA,IAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,MAAW,uGAAY1B,EAAK2B,OAAAA,KAAAA,EAAAA,IAAAA,MAAAA,OAAAA,EAAAA,OAAAA,GAAAA,EAAAA,KAAAA,OAAAA,WAAAA,OAAAA,EAAAA,MAAAA,KAAAA,UAAAA,CAAAA,CAA5BD,GAEFpK,IACFC,OAAO8E,iBAAiB,eAAgBqF,GACxCnK,OAAO8E,iBAAiB,SAAUqF,GAAAA,KAE7BN,WAAWZ,KAAK,CAAC,eAAgBkB,IAAAA,KACjCN,WAAWZ,KAAK,CAAC,SAAUkB,IAAAA,CAAAA,IAAAA,EAAAA,OAAAA,EAAAA,EAAAA,GAAAA,EAAAA,CAAAA,CAAAA,IAAAA,YAAAA,MAIpC,yBACMxG,KAAK8F,SAAU,OAAO3H,QAAQC,SAAAA,GAAQ,GACtC4B,KAAK+F,OAAQ,OAAO5H,QAAQC,SAAAA,GAAQ,GAGpC4B,KAAKgG,YAAAA,OAAAA,KACFC,UAAAA,EACE9H,QAAQC,SAAAA,GAAQ,KAEpB4H,aAAAA,EAAc,IAEfU,GAAAA,EAGEC,EAAgB,SAAC/H,GACD,WAAhBA,EAAIgI,SAAwBhI,EAAIiD,QAAUgF,EAAKhF,QAG9B,UAAfjD,EAAIkI,QAEFlI,EAAIiD,MAAQgF,EAAKhF,QAEnB6E,GAAAA,GAIe,SAAf9H,EAAIkI,SAENJ,GAAAA,GAAe,cAIhBd,SAASzE,iBAAiB,WAAYwF,GAEpCI,GAAa/G,KAAM,SACvB4E,MAAK,kBAAM3G,EAAM4I,EAAKhB,SAASmB,aAAAA,IAC/BpC,MAAK,kBACA8B,EAAqBvI,QAAQiB,OAAO,IAAIoC,OAChCuF,GAAaF,EAAM,YAEhCjC,MAAK,kBAAM3G,EAAM4I,EAAKhB,SAASmB,aAAAA,IAC/BpC,MAAK,kBACA8B,EAAqBvI,QAAQiB,OAAO,IAAIoC,OAChCuF,GAAaF,EAAAA,IAE1BjC,MAAK,kBAoHL,SAAmBqC,GACxBA,EAAcnB,UAAAA,EAAW,IAEnBoB,EAAmB,YACH,WAAhBtI,EAAIgI,SAAuC,UAAfhI,EAAIkI,QAClCC,GAAaE,EAAe,QAGV,WAAhBrI,EAAIgI,SAAuC,SAAfhI,EAAIkI,QAAsBG,EAAcX,mBAOtEW,EAAcX,kBAAAA,EACdW,EAAcZ,sBACdU,GAAaE,EAAe,iBAGhCA,EAAcrB,SAASzE,iBAAiB,WAAY+F,GACpDD,EAAcd,WAAWb,KAAK4B,GACvBH,GAAaE,EAAe,OA1InBE,CAoHX,CApHoBN,EAAAA,IACpBjC,MAAK,mBAAM,IAAAwC,OACL,mBAAM,IACZxC,MAAK,YAAAyC,OACJR,EAAKjB,SAAS7D,oBAAoB,WAAY4E,GAC9CE,EAAKb,aAAAA,GACAqB,GAAWR,EAAKZ,UACnBY,EAAKZ,UAAAA,EACEY,EAAKS,aACAD,CAAAA,GAAAA,GAAAA,CAAAA,IAAAA,kBAAAA,MAIpB,WA2CF,IAA+BJ,EAAAA,OAzCxBjH,KAAKuH,0BAAAA,KAEDA,yBAuCoBN,EAvC2BjH,MAwCtC8F,SAAiB3H,QAAQC,UAEpC,IAAID,SAAQ,YAAAC,IACboJ,GAAAA,EAAW,SAENC,IAEHD,IAGJA,GAAAA,EACAE,cAAcC,GACdV,EAAcrB,SAAS7D,oBAAoB,WAAY6F,GACvDxJ,GAAAA,GAIF6I,CAAAA,EAAcK,YAAY1C,MAAK,WACzBqC,EAAcnB,UAChB2B,GAAAA,IAAAA,IAKEE,EAAWE,aAAY,WAE3BZ,EAAcK,YAAY1C,MAAK,WACzBqC,EAAcnB,UAChB2B,GAAAA,GAAAA,GAGHR,EAAcpB,SAASiC,kBAC1Bb,EAAcb,WAAWd,KAAKqC,GAAAA,IAGxBC,EAAoB,YACJ,WAAhBhJ,EAAIgI,SAAuC,UAAfhI,EAAIkI,QAClCG,EAAcK,YAAY1C,MAAK,WACzBqC,EAAcnB,UAAU2B,GAAAA,GAAAA,EAIlCR,EAAcrB,SAASzE,iBAAiB,WAAYyG,GACpDX,EAAcd,WAAWb,KAAKsC,EAAAA,KAjFvB5H,KAAKuH,uBAAAA,GAAAA,CAAAA,IAAAA,cAAAA,IAAAA,WAAAA,OASLvH,KAAKqG,mBAAAA,EAAAA,IANd,SAAiB1J,GAAAA,KACV0J,oBAAsB1J,CAAAA,GAAAA,CAAAA,IAAAA,cAAAA,IAAAA,WAAAA,OAcpBqD,KAAKuG,YAAAA,EAAAA,IANd,SAAiB5J,GAAAA,KACV4J,aAAe5J,CAAAA,GAAAA,CAAAA,IAAAA,MAAAA,OAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,MAQtB,6FACMqD,KAAK+F,OAAAA,CAAAA,EAAAA,KAAAA,EAAAA,KAAAA,CAAAA,OAAAA,EAAAA,OAAAA,UAAAA,KAAAA,EAAAA,OAAAA,KACJA,QAAAA,EAASrG,EAAAA,KAAAA,EAERM,KAAK+H,cAAAA,KAAAA,EAAAA,OAAAA,KACN5B,WAAWnD,SAAQ,YAAAlC,OAAYkH,EAAKpC,SAAS7D,oBAAoB,WAAYjB,EAAAA,IAAAA,KAC7EsF,WAAWpD,SAAQ,YAAA2E,OAAYD,cAAcC,EAAAA,IAAAA,KAC7CzB,WAAWlD,SAAQ,YAClB5G,GACFC,OAAO0F,oBAAoBkG,EAAI,GAAIA,EAAI,OAAAvI,EAAAA,OAAAA,SAGpCqH,GAAa/G,KAAM,8CAAAN,EAAA,yDAAAwI,CAAA,CAhIxBvC,GAuLN,SAASoB,GAAcE,EAAeH,GAAAA,IAC9BqB,EAAU,CACdvB,QAAS,SACTE,OAAAA,EACAjF,MAAOoF,EAAcpF,OAAAA,OAEhBoF,EAAcrB,SAASwC,aAAaD,EC9LtC,KAAME,GAAa,SAAC,GAAD,IACxB/I,EAAAA,EAAAA,KACAhB,EAAAA,EAAAA,YACAwJ,EAAAA,EAAAA,iBACAd,EAAAA,EAAAA,aACAsB,EAAAA,EAAAA,cACAC,EAAAA,EAAAA,UACAC,EAAAA,EAAAA,MACAC,EAAAA,EAAAA,MACAC,EAAAA,EAAAA,MACAC,EAAAA,EAAAA,OAEM5F,EAAU,IAAIY,EAAerF,EAAa,CAAEgB,KAAAA,IAC5CsJ,ED6MD,SAA+B7F,EAASxB,GAAAA,GACzCwB,EAAQ8F,eAAAA,MACJ,IAAIrH,MAAM,0DAGZoH,EAAU,IAAIjD,GAAe5C,EAASxB,GAAAA,OAC5CwB,EAAQoB,aAAamB,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,MAAK,uGAAYsD,EAAQnC,OAAAA,KAAAA,EAAAA,IAAAA,MAAAA,OAAAA,EAAAA,OAAAA,GAAAA,EAAAA,MAE9C1D,EAAQ8F,eAAiBD,EAClBA,CCtNSE,CD6MX,CC7MgC/F,EAAS,CAAE+E,iBAAAA,EAAkBd,aAAAA,IAC5D+B,EAAW,CAAC,EAGlBA,EAASH,EAAQ/G,QAAAA,EAAS,IAEtBmH,GAAAA,EACAC,GAAAA,EAEEnD,EAAW,kBAAMkD,CAAAA,EAEvBJ,EAAQM,kBAAkBtE,MAAK,WAC7BoE,GAAAA,CAAS,IAGXjG,EAAQ5B,iBAAiB,WAAW,+BAAE7B,EAAAA,EAAAA,GAAM6J,EAAAA,EAAAA,GAAAA,OAClC7J,GAAAA,IACD,WACHyJ,EAASI,IAAAA,EAAM,UAEZ,oBACIJ,EAASI,GAAAA,MAAAA,IAEb,OACHC,EAAKD,GAAAA,MAAAA,IAEF,SACHE,EAAOF,GAAAA,MAAAA,IAEJ,WACHZ,EAAUe,SAAAA,MAAAA,IAEP,aACHf,EAAUgB,WAAAA,MAAAA,IAEP,QACHf,GAAAA,GAAM,UAEH,QACHC,GAAAA,GAAM,UAEH,QACHC,GAAAA,GAAM,UAEH,SACHC,GAAAA,GAAO,QAaPS,EAAO,eAACD,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAKP,EAAQ/G,MACzBkH,EAASI,IAAAA,EAAM,IACTK,EAASC,OAAOC,OAAOX,GAAUY,OAAM,YAAAC,OAAKA,CAAAA,KAC7CX,GAAWO,IACdP,GAAAA,EACInD,KACFyC,EAAUe,SACNhB,GAAeuB,EAAK,aAExBA,EAAK,UAKLR,EAAS,eAACF,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAAKP,EAAQ/G,MAC3BkH,EAASI,IAAAA,EAAM,IACTW,EAAWL,OAAOC,OAAOX,GAAUgB,MAAK,YAAAH,OAAMA,CAAAA,IAChDX,GAAWa,IACbb,GAAAA,EACInD,KACFyC,EAAUgB,WACNjB,GAAeuB,EAAK,eAExBA,EAAK,YAMXjB,EAAQoB,aAAAA,EAAAA,EAAAA,GAAAA,IAAAA,MAAc,8FAAkBpB,EAAQnC,MAAAA,KAAAA,EAAAA,OAAAA,EAAAA,OAAAA,SAAAA,EAAAA,MAAAA,KAAAA,EAAAA,IAAAA,MAAAA,OAAAA,EAAAA,OAAAA,GAAAA,EAAAA,KAChDmC,EAAQb,aAAAA,EAAAA,EAAAA,GAAAA,IAAAA,MAAc,8FAAkB8B,EAAK,0FAAAnK,EAAA,SAEvCmK,EAAAA,WAAAA,IAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,MAAO,WAAM7F,GAAAA,OAAAA,IAAAA,MAAAA,SAAAA,GAAAA,OAAAA,OAAAA,EAAAA,KAAAA,EAAAA,MAAAA,KAAAA,EAAAA,OAAAA,EAAAA,OAAAA,SAAWjB,EAAQ9D,YAAY,CAAC+E,EAAS4E,EAAQ/G,SAAAA,KAAAA,EAAAA,IAAAA,MAAAA,OAAAA,EAAAA,OAAAA,GAAAA,EAAAA,KAAAA,OAAAA,SAAAA,GAAAA,OAAAA,EAAAA,MAAAA,KAAAA,UAAAA,CAAAA,CAA9DgI,GAEA/K,EAAAA,WAAAA,IAAAA,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,MAAQ,8FACN8J,EAAQnC,MAAAA,KAAAA,EAAAA,OAAAA,EAAAA,KAAAA,EACR1D,EAAQjE,QAAAA,KAAAA,EAAAA,IAAAA,MAAAA,OAAAA,EAAAA,OAAAA,GAAAA,EAAAA,KAAAA,OAAAA,WAAAA,OAAAA,EAAAA,MAAAA,KAAAA,UAAAA,CAAAA,CAFVA,GAEUA,OAIhB+K,EAAK,YAEE,CAAE/K,MAAAA,EAAO+K,KAAAA,EAAM/D,SAAAA,EAAUsD,KAAAA,EAAMC,OAAAA,EAAQY,UA5C5B,kBAAMhB,CAAAA,EA4CiCiB,WAhDtC,YACjBjB,EAAUkB,CAAAA,EAAAA,EAAAA,IC7CRC,GAAAA,SAAAA,IAAAA,EAAAA,EAAAA,GAAAA,EAAkBC,EAAAA,WAAAA,IAAAA,ED6CVF,SAAAA,GAAAA,IAAAA,EAAAA,WAAAA,GAAAA,oBAAAA,UAAAA,QAAAA,UAAAA,OAAAA,EAAAA,GAAAA,QAAAA,UAAAA,KAAAA,OAAAA,EAAAA,GAAAA,mBAAAA,MAAAA,OAAAA,EAAAA,IAAAA,OAAAA,QAAAA,UAAAA,QAAAA,KAAAA,QAAAA,UAAAA,QAAAA,IAAAA,WAAAA,MAAAA,CAAAA,CAAAA,MAAAA,GAAAA,OAAAA,CAAAA,CAAAA,CAAAA,GAAAA,OAAAA,WAAAA,IAAAA,EAAAA,GAAAA,EAAAA,EAAAA,GAAAA,GAAAA,GAAAA,EAAAA,CAAAA,IAAAA,GAAAA,EAAAA,EAAAA,GAAAA,MAAAA,YAAAA,EAAAA,QAAAA,UAAAA,EAAAA,UAAAA,EAAAA,MAAAA,EAAAA,EAAAA,MAAAA,KAAAA,WAAAA,OAAAA,EAAAA,EAAAA,GAAAA,KAAAA,EAAAA,CAAAA,CC7CUE,CAAAA,GAAAA,SAAAA,EASTC,GAAAA,IAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAAA,KAAAA,IAAAA,EAAAA,EAAAA,KAAAA,KACLA,IAOD/L,MAAQ,CACX6K,MAAM,EACNmB,SAAU,IAAIjN,KACdkN,YAAa,IAAIlN,KACjBmN,SAAU,KACVC,SAAU,EACVC,UAAW,KACXC,MAAO,KACPC,MAAO,MAAAC,EAQJC,IAAM,KAAAD,EAONE,aAAAA,EAAcF,EAEdG,aAAe,CAAC,EAGjBX,EAAMY,SAAW,GAAKZ,EAAMa,SAAW,QACnC,IAAI3J,MAAM,mEAId8I,EAAMY,SAAW,EAAAJ,EACdM,UAAY1O,EAAU4N,EAAMe,SAAUf,EAAMY,UAGxCZ,EAAMa,SAAW,EAAAL,EACrBM,UAAYjO,EAAUmN,EAAMe,SAAUf,EAAMa,UAAAA,EAI5CC,UAAYd,EAAMe,SAIrBf,EAAMgB,eAAiB,EAAAR,EACpBS,YAAcpO,EAAU2H,EAAK0G,aAAaC,MAAAA,EAAAA,EAAAA,GAAAA,IAAYnB,EAAMgB,gBAAAA,EAE5DC,YAAczG,EAAK0G,aAAaC,MAAAA,EAAAA,EAAAA,GAAAA,IAIlCnB,EAAMoB,eAAgBpB,EAAMqB,gBAAAA,EAC1BpN,MAAM6K,MAAAA,GAAO0B,EAIfc,iBAAmB9G,EAAK8G,iBAAiBH,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EACzCjD,MAAQ1D,EAAK0D,MAAMiD,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EACnBhD,MAAQ3D,EAAK2D,MAAMgD,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EACnB/C,MAAQ5D,EAAK4D,MAAM+C,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EACnB9C,OAAS7D,EAAK6D,OAAO8C,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EACrBjC,OAAS1E,EAAK0E,OAAOiC,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EACrBI,iBAAmB/G,EAAK+G,iBAAiBJ,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EACzCK,eAAiBhH,EAAKgH,eAAeL,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EACrCM,kBAAoBjH,EAAKiH,kBAAkBN,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EAC3CO,gBAAkBlH,EAAKkH,gBAAgBP,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EACvCQ,iBAAmBnH,EAAKmH,iBAAiBR,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,EACzCS,mBAAqBpH,EAAKoH,mBAAmBT,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,CAAAA,CAAAA,OAAAA,EAAAA,EAAAA,GAAAA,EAAAA,CAAAA,CAAAA,IAAAA,oBAAAA,MASpD,iBAC0CzL,KAAKsK,MAArCoB,EAAAA,EAAAA,aAAcC,EAAAA,EAAAA,cAAAA,KAGjBQ,mBAEDR,IACAD,EAAAA,KACGlD,QAAAA,KAEA4D,cAAAA,GAAAA,CAAAA,IAAAA,qBAAAA,MAIT,SAAoBC,GAEbA,EAAUnB,WAAalL,KAAKsK,MAAMY,UAAalL,KAAKsK,MAAMY,SAAW,GACpElL,KAAKoL,UAAUlO,QAAQ8C,KAAKoL,UAAUlO,SAAAA,KACrCkO,UAAY1O,EAAUsD,KAAKsK,MAAMe,SAAUrL,KAAKsK,MAAMY,WAGxDmB,EAAUlB,WAAanL,KAAKsK,MAAMa,UAAanL,KAAKsK,MAAMa,SAAW,GACpEnL,KAAKoL,UAAUlO,QAAQ8C,KAAKoL,UAAUlO,SAAAA,KACrCkO,UAAYjO,EAAU6C,KAAKsK,MAAMe,SAAUrL,KAAKsK,MAAMa,YAI1DkB,EAAUlB,UAAoC,IAAxBnL,KAAKsK,MAAMa,UACjCkB,EAAUnB,UAAoC,IAAxBlL,KAAKsK,MAAMY,YAE9BlL,KAAKoL,UAAUlO,QAAQ8C,KAAKoL,UAAUlO,SAAAA,KACrCkO,UAAYpL,KAAKsK,MAAMe,UAI1BgB,EAAUf,iBAAmBtL,KAAKsK,MAAMgB,iBAAAA,KACrCgB,gBAAAA,KACAf,YAAcpO,EAAU6C,KAAKwL,aAAaC,KAAKzL,MAAOA,KAAKsK,MAAMgB,gBAAAA,KACjEc,eAGHC,EAAUE,UAAYvM,KAAKsK,MAAMiC,SAC/BvM,KAAKzB,MAAM6K,MAAMpJ,KAAKyI,QAIxB4D,EAAU9C,WAAavJ,KAAKsK,MAAMf,WAAUvJ,KAAKiL,aAAa1B,SAAWvJ,KAAKsK,MAAMf,UACpF8C,EAAU/C,SAAWtJ,KAAKsK,MAAMhB,SAAQtJ,KAAKiL,aAAa3B,OAAStJ,KAAKsK,MAAMhB,OAAAA,GAAAA,CAAAA,IAAAA,uBAAAA,MASpF,WAEEtM,aAAagD,KAAK+K,KAAAA,KACbuB,eAAAA,GAEDtM,KAAKoL,UAAUlO,QAAQ8C,KAAKoL,UAAUlO,SAEtC8C,KAAKwM,SAAAA,KACFA,QAAQ1N,QAAAA,MAAc2N,QAAQC,MAAAA,GAAAA,CAAAA,IAAAA,SAAAA,MASvC,kBACuB1M,KAAKsK,MAAlBqC,UACW,QAAA9L,IAAAA,mBAAAd,MAOrB,iBACyCC,KAAKsK,MAApCsC,EAAAA,EAAAA,SAAUtD,EAAAA,EAAAA,OAAQC,EAAAA,EAAAA,SAAAA,GAAAA,KACrB0B,aAAe,CAAE3B,OAAAA,EAAQC,SAAAA,GAG1BqD,EAAU,OAORnD,OAAOoD,OAAO,CAChBvO,YAAa,aACbwJ,iBAAkB,IAClBd,aAAc,IACdrF,cAAe,IACf2G,eAAe,QACdsE,EAAoB,CAAC,EAAIA,GAX1BtN,EAAAA,EAAAA,KACAhB,EAAAA,EAAAA,YACAwJ,EAAAA,EAAAA,iBACAd,EAAAA,EAAAA,aACAsB,EAAAA,EAAAA,cAAAA,KASGkE,QAAUnE,GAAW,CACxB/I,KAAAA,EACAhB,YAAAA,EACAwJ,iBAAAA,EACAd,aAAAA,EACAsB,cAAAA,EACAC,UAAWvI,KAAKiL,aAChBzC,MAAOxI,KAAKwI,MACZC,MAAOzI,KAAKyI,MACZC,MAAO1I,KAAK0I,MACZC,OAAQ3I,KAAK2I,QAAAA,CAAAA,GAAAA,CAAAA,IAAAA,cAAAA,MASnB,yBAGOvM,EAAAA,CAAAA,IAAAA,EAGyC4D,KAAKsK,MAA3CwC,EAAAA,EAAAA,QAASC,EAAAA,EAAAA,OAAQC,EAAAA,EAAAA,QAASC,EAAAA,EAAAA,QAC7BjN,KAAKgL,cACR+B,EAAO/J,SAAQ,YACb8J,EAAQ3L,iBAAiBzB,EAAGmH,EAAK0E,YAAa,CAC5C0B,QAAAA,EACAD,QAAAA,GAAAA,IAAAA,KAGChC,aAAAA,EAAc,KAAAnK,IAAAA,gBAAAd,MAQvB,sBAAemN,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,IAAAA,UAAAA,GAAAA,GAGR9Q,EAAAA,CAAAA,IAAAA,EAEyC4D,KAAKsK,MAA3CwC,EAAAA,EAAAA,QAASC,EAAAA,EAAAA,OAAQC,EAAAA,EAAAA,QAASC,EAAAA,EAAAA,SAC9BjN,KAAKgL,aAAekC,KACtBH,EAAO/J,SAAQ,YACb8J,EAAQ/K,oBAAoBrC,EAAGsI,EAAKuD,YAAa,CAC/C0B,QAAAA,EACAD,QAAAA,GAAAA,IAAAA,KAGChC,aAAAA,EAAc,KAAAnK,IAAAA,mBAAAd,MASvB,SAAkBL,GAAAA,IAAAA,EAAAA,KAAAA,KAIXyN,UAAS,SAACC,GAAAA,MAAe,CAC5BhE,MAAOgE,EAAUhE,KACjBqB,SAAW2C,EAAUhE,KAA4CgE,EAAU3C,UAA7C,IAAInN,KAAU+P,EAAK/C,MAAMiC,QACvD7B,SAAU0C,EAAUhE,KAAOgE,EAAU1C,WAAa,IAAIpN,KAAU8P,EAAU3C,SAAW2C,EAAU1C,SAAAA,IAC7F,iBACuC2C,EAAK/C,MAAtCf,EAAAA,EAAAA,SAAUD,EAAAA,EAAAA,OAAQgE,EAAAA,EAAAA,WACTD,EAAK9O,MAAd6K,MAEFkE,IAEFtQ,aAAaqQ,EAAKtC,KAClBsC,EAAKtC,IAAM,KAEXsC,EAAKf,iBAGHe,EAAKb,QAEPa,EAAKb,QAAQpD,OAEbE,EAAO5J,KAGT2N,EAAKjB,cACDiB,EAAKb,QAEPa,EAAKb,QAAQnD,SAEbE,EAAS7J,GAAAA,GAAAA,GAAAA,CAAAA,IAAAA,eAAAA,MAWjB,SAAcA,GAAAA,IAAAA,EAC8BM,KAAKzB,MAAvCoM,EAAAA,EAAAA,UAAWC,EAAAA,EAAAA,MAAOC,EAAAA,EAAAA,MAAOzB,EAAAA,EAAAA,KAAAA,EACDpJ,KAAKsK,MAA7BiC,EAAAA,EAAAA,QAASe,EAAAA,EAAAA,WAAAA,GAAAA,KAGZlC,UAAU1L,IAGXiL,EAAAA,CAAAA,GAGW,cAAXjL,EAAEJ,KAAsB,IAGtBI,EAAEkL,QAAUA,GAASlL,EAAEmL,QAAUA,EAAAA,OAAAA,QAAAA,IAI1BnL,EAAEkL,YAAAA,IAAgClL,EAAEmL,MAAAA,OAAAA,GAM/B7K,KAAK8L,iBAEP,UAMhB9O,CAAAA,aAAagD,KAAK+K,KAAAA,KACbA,IAAM,SAGLwC,GAA8B,IAAIjQ,KAAS0C,KAAK+L,qBAGjD3C,IAASkE,IAAiBlE,GAAQmE,EAA6BhB,IAAAA,KAC7DX,iBAAiBlM,GAAAA,KAKnByN,SAAS,CACZ3C,YAAa,IAAIlN,KACjBsN,MAAOlL,EAAEkL,MACTC,MAAOnL,EAAEmL,QAKPzB,GACGkE,IAAAA,KAIAvC,IAAM9N,WAAW+C,KAAK4L,iBAAkBW,GAAAA,CAAAA,GAAAA,CAAAA,IAAAA,QAAAA,MAQjD,eAAOiB,IAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,KAAAA,UAAAA,GAELxQ,aAAagD,KAAK+K,KAAAA,KACbA,IAAM,UAGNqB,cAAAA,KAGAe,SAAS,CACZ/D,MAAM,EACNmB,SAAU,IAAIjN,KACdkN,YAAa,IAAIlN,KACjBqN,UAAW,OAGT3K,KAAKwM,UAAAA,KAEFA,QAAQtC,YAAAA,IAERsD,GAAUxN,KAAKsK,MAAMsC,SAAStE,eAAAA,KAC5BkE,QAAQ3C,KAAK,cAKd0C,EAAYvM,KAAKsK,MAAjBiC,QAAAA,KACHxB,IAAM9N,WAAW+C,KAAK4L,iBAAkBW,EAAAA,GAAAA,CAAAA,IAAAA,QAAAA,MAO/C,eAAOiB,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,IAAAA,UAAAA,GAELxQ,aAAagD,KAAK+K,KAAAA,KACbA,IAAM,UAGNqB,cAEDpM,KAAKzB,MAAM6K,OACTpJ,KAAKwM,QAAAA,KAEFA,QAAQnD,SAAAA,KAERiB,MAAMf,YAIXvJ,KAAKwM,UAAAA,KAEFA,QAAQtC,YAAAA,IAERsD,GAAUxN,KAAKsK,MAAMsC,SAAStE,eAAAA,KAC5BkE,QAAQ3C,KAAK,eAKjBsD,SAAS,CACZ/D,MAAM,EACNmB,SAAU,IAAIjN,KACdkN,YAAa,IAAIlN,KACjBqN,UAAW,WAIL4B,EAAYvM,KAAKsK,MAAjBiC,QAAAA,KACHxB,IAAM9N,WAAW+C,KAAK4L,iBAAkBW,EAAAA,GAAAA,CAAAA,IAAAA,QAAAA,MAO/C,eAAOiB,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,IAAAA,UAAAA,GAEG7C,EAAc3K,KAAKzB,MAAnBoM,UACU,OAAdA,IAAAA,KAGC2B,gBAGLtP,aAAagD,KAAK+K,KAAAA,KACbA,IAAM,KAGP/K,KAAKwM,UAEFgB,GAAUxN,KAAKsK,MAAMsC,SAAStE,eAAAA,KAC5BkE,QAAQ3C,KAAK,cAKjBsD,SAAS,CACZxC,UAAW3K,KAAK6L,qBAAAA,GAAAA,CAAAA,IAAAA,SAAAA,MAQpB,eAAQ2B,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,IAAAA,UAAAA,GAAAA,EAEsBxN,KAAKzB,MAAzBoM,EAAAA,EAAAA,UAAWvB,EAAAA,EAAAA,KACD,OAAduB,IAAAA,KAGCyB,cAGDpM,KAAKwM,UAEFgB,GAAUxN,KAAKsK,MAAMsC,SAAStE,eAAAA,KAC5BkE,QAAQ3C,KAAK,UAMjBT,IAAAA,KAEE2B,IAAM9N,WAAW+C,KAAK4L,iBAAkBjB,GAAAA,KAExCwC,SAAS,CAAExC,UAAW,KAAMH,YAAa,IAAIlN,QAAAA,GAAAA,CAAAA,IAAAA,mBAAAA,MAStD,iBACoC0C,KAAKzB,MAA/BoM,EAAAA,EAAAA,UAAWH,EAAAA,EAAAA,WACX+B,EAAYvM,KAAKsK,MAAjBiC,QAAAA,GAGU,OAAd5B,EAAAA,OACKA,EAAY,EAAI,EAAIA,EAAAA,IAIvB8C,EAAWlB,IAAa,IAAIjP,KAAUkN,GAAAA,OACrCiD,EAAW,EAAI,EAAIA,CAAAA,GAAAA,CAAAA,IAAAA,iBAAAA,MAQ5B,eACUlD,EAAYvK,KAAKzB,MAAjBgM,QAAAA,OACC,IAAIjN,KAAUiN,CAAAA,GAAAA,CAAAA,IAAAA,kBAAAA,MAQzB,kBACuBvK,KAAKzB,MAAlBkM,QAAAA,GAAAA,CAAAA,IAAAA,mBAAAA,MASV,iBACuCzK,KAAKzB,MAAlC6K,EAAAA,EAAAA,KAAMqB,EAAAA,EAAAA,SAAUC,EAAAA,EAAAA,SAAAA,OACpBtB,GACQ,IAAI9L,KAAUmN,EAAYC,EAE7BA,CAAAA,GAAAA,CAAAA,IAAAA,oBAAAA,MASX,kBACyB1K,KAAKzB,MAApBiM,UAAAA,GAAAA,CAAAA,IAAAA,qBAAAA,MASV,kBACSxK,KAAK8L,iBAAmB9L,KAAKiM,kBAAAA,GAAAA,CAAAA,IAAAA,SAAAA,MAQtC,kBACmBjM,KAAKzB,MAAd6K,IAAAA,GAAAA,CAAAA,IAAAA,WAAAA,MASV,kBACSpJ,KAAKwM,SAAUxM,KAAKwM,QAAQ1G,UAAAA,KAAAA,CAAAA,CA9kBjCsE,GCAN,SAASsD,KAAAA,IAAAA,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,GAAAA,UAAAA,GAgBL,CAAC,EAADC,EAAAA,EAfFpB,QAAAA,OAAAA,IAAAA,EAAU,KAAAoB,EAAA7C,EAAAA,EACVgC,QAAAA,OAAAA,IAAAA,EAAUvQ,EAAAA,EAAAA,EAAAA,EACVwQ,OAAAA,OAAAA,IAAAA,EAAStQ,EAAAA,EAAAA,EAAAA,EACT6M,OAAAA,OAAAA,IAAAA,EAAS,aAAAsE,EAAAtR,EAAAA,EACTiN,SAAAA,OAAAA,IAAAA,EAAW,aAAAjN,EAAAuR,EAAAA,EACXxC,SAAAA,OAAAA,IAAAA,EAAW,aAAAwC,EAAAC,EAAAA,EACX5C,SAAAA,OAAAA,IAAAA,EAAW,EAAA4C,EAAAC,EAAAA,EACX5C,SAAAA,OAAAA,IAAAA,EAAW,EAAA4C,EAAAC,EAAAA,EACX1C,eAAAA,OAAAA,IAAAA,EAAiB,IAAA0C,EAAAC,EAAAA,EACjBvC,aAAAA,OAAAA,IAAAA,GAAAA,EAAAA,EAAAA,EACAC,cAAAA,OAAAA,IAAAA,GAAAA,EAAAA,EAAAA,EACA2B,WAAAA,OAAAA,IAAAA,GAAAA,EAAAA,EAAAA,EACAL,QAAAA,OAAAA,IAAAA,GAAAA,EAAAA,EAAAA,EACAD,QAAAA,OAAAA,IAAAA,GAAAA,EAAAA,EAAAA,EACAJ,SAAAA,OAAAA,IAAAA,GAAAA,EAEM5B,GAAckD,EAAAA,EAAAA,SAAAA,GACd9E,GAAO8E,EAAAA,EAAAA,SAAAA,GACP3D,GAAU2D,EAAAA,EAAAA,SAAQ,IAAI5Q,MACtBqN,GAAYuD,EAAAA,EAAAA,QAAO,MACnBtD,GAAQsD,EAAAA,EAAAA,QAAO,MACfrD,GAAQqD,EAAAA,EAAAA,QAAO,MACfnD,GAAMmD,EAAAA,EAAAA,QAAO,MACb1D,GAAa0D,EAAAA,EAAAA,QAAO,MACpBzD,GAAWyD,EAAAA,EAAAA,QAAO,MAClBxD,GAAWwD,EAAAA,EAAAA,QAAO,GAClBC,GAAYD,EAAAA,EAAAA,SAAAA,GACZE,GAAWF,EAAAA,EAAAA,QAAO3B,GAClBC,GAAU0B,EAAAA,EAAAA,QAAO,MAGnBtB,KAAAA,IACEA,IAAmBA,EAAW,CAAC,GACnCA,EAAWnD,OAAOoD,OAAO,CACvBvO,YAAa,aACbwJ,iBAAkB,IAClBd,aAAc,IACdrF,cAAe,IACf2G,eAAe,GACdsE,IAAAA,IAICyB,GAAaH,EAAAA,EAAAA,QAAO5E,GACpBgF,GAAeJ,EAAAA,EAAAA,QAAO3E,GACtBgF,IAAeL,EAAAA,EAAAA,QAAO7C,IAE5BmD,EAAAA,EAAAA,YAAU,WACRH,EAAWI,QAAUnF,CAAAA,GACpB,CAACA,KAEJkF,EAAAA,EAAAA,YAAU,WACRF,EAAaG,QAAUlF,CAAAA,GACtB,CAACA,KAEJiF,EAAAA,EAAAA,YAAU,WACRD,GAAaE,QAAUpD,CAAAA,GACtB,CAACA,IAAAA,IAEEqD,IAAuBC,EAAAA,EAAAA,UAAQ,oBAC1BC,EAAclP,GACrB6O,GAAaE,QAAQ/O,EAAAA,CAAAA,OAInBkP,EAAa1R,QAAQ0R,EAAa1R,SAGlCgO,EAAW,EACNxO,EAAUkS,EAAc1D,GAGtBC,EAAW,EACbhO,EAAUyR,EAAczD,GAIxByD,CAAAA,GAER,CAACzD,EAAUD,IAORU,GAAmB,SAAAlM,GAAAA,IACjBmP,GAAYzF,EAAKqF,QACvBrF,EAAKqF,QAAUI,EACXA,GACEvB,IAEFtQ,aAAa+N,EAAI0D,SACjB1D,EAAI0D,QAAU,KAEdnC,MAEF7B,EAASgE,SAAY,IAAInR,KAAU8Q,EAASK,QACxCjC,EAAQiC,QAEVjC,EAAQiC,QAAQrF,OAEhBiF,EAAWI,QAAQ/O,KAGrBgL,EAAS+D,UAAa,IAAInR,KAAUmN,EAASgE,QAC7CrC,KACII,EAAQiC,QAEVjC,EAAQiC,QAAQpF,SAEhBiF,EAAaG,QAAQ/O,GAAAA,EASrB8L,GAAe,SAAA9L,GAAAA,GAEnBgP,GAAqBhP,IAGjBiL,EAAU8D,QAAAA,CAAAA,GAIC,cAAX/O,EAAEJ,KAAsB,IAEtBI,EAAEkL,QAAUA,GAASlL,EAAEmL,QAAUA,EAAAA,OAAAA,QAAAA,IAI1BnL,EAAEkL,YAAAA,IAAgClL,EAAEmL,MAAAA,OAAAA,GAK/BiB,KACF,UAMhB9O,CAAAA,aAAa+N,EAAI0D,SACjB1D,EAAI0D,QAAU,SAGRlB,GAA8B,IAAIjQ,KAASyO,MAI9C3C,EAAKqF,UAAYnB,IAChBlE,EAAKqF,SAAWlB,EAA6Ba,EAASK,UAExD7C,GAAiBlM,GAKnB8K,EAAWiE,SAAW,IAAInR,KAC1BsN,EAAM6D,QAAU/O,EAAEkL,MAClBC,EAAM4D,QAAU/O,EAAEmL,MAGbzB,EAAKqF,UACR1D,EAAI0D,QAAUxR,WAAW2O,GAAkBwC,EAASK,SAAAA,CAAAA,EAQlDlD,IAAc2C,EAAAA,EAAAA,QAAO1C,IAMrBY,GAAc,WAGbhQ,IAGA4O,EAAYyD,UACf1B,EAAO/J,SAAQ,SAAAtD,GACboN,EAAQ3L,iBAAiBzB,EAAG6L,GAAYkD,QAAS,CAC/CxB,QAAAA,EACAD,QAAAA,GAAAA,IAGJhC,EAAYyD,SAAAA,GAAU,EAQpBnC,GAAgB,eAACY,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,IAAAA,UAAAA,GAGhB9Q,IAED4O,EAAYyD,SAAWvB,KACzBH,EAAO/J,SAAQ,SAAAtD,GACboN,EAAQ/K,oBAAoBrC,EAAG6L,GAAYkD,QAAS,CAClDxB,QAAAA,EACAD,QAAAA,GAAAA,IAGJhC,EAAYyD,SAAAA,EAAU,EASpB5C,GAAmB,cAEG,OAAtBlB,EAAU8D,QAAAA,OACL9D,EAAU8D,QAAU,EAAI,EAAI9D,EAAU8D,QAAAA,IAIzChB,EAAWW,EAASK,UAAa,IAAInR,KAAUkN,EAAWiE,SAAAA,OACzDhB,EAAW,EAAI,EAAIA,CAAAA,EAQtB3B,GAAiB,kBAAQ,IAAIxO,KAAUiN,EAAQkE,OAAAA,EAO/CzC,GAAkB,kBAAMvB,EAASgE,OAAAA,EAOjCxC,GAAmB,kBACnB7C,EAAKqF,SACG,IAAInR,KAAUmN,EAASgE,QAAW/D,EAAS+D,QAE9C/D,EAAS+D,OAAAA,EASd1C,GAAoB,kBAAMvB,EAAWiE,OAAAA,EAOrCvC,GAAqB,kBAAMJ,KAAmBG,IAAAA,EAO9CzC,GAAS,kBAAMJ,EAAKqF,OAAAA,EAMpB3I,GAAW,kBAAM0G,EAAQiC,SAAUjC,EAAQiC,QAAQ3I,UAAAA,EAMnD0C,GAAQ,eAACgF,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,IAAAA,UAAAA,GAEbxQ,aAAa+N,EAAI0D,SACjB1D,EAAI0D,QAAU,KAGdrC,KAGAhD,EAAKqF,SAAAA,EACLlE,EAAQkE,SAAW,IAAInR,KACvBkN,EAAWiE,SAAW,IAAInR,KAC1BqN,EAAU8D,QAAU,KAEhBjC,EAAQiC,UAEVjC,EAAQiC,QAAQvE,YAAAA,IAEXsD,GAAUZ,EAAStE,eACtBkE,EAAQiC,QAAQ5E,KAAK,UAKzBkB,EAAI0D,QAAUxR,WAAW2O,GAAkBwC,EAASK,QAAAA,EAOhDhG,GAAQ,eAAC+E,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,IAAAA,UAAAA,GAEbxQ,aAAa+N,EAAI0D,SACjB1D,EAAI0D,QAAU,KAGdrC,KAGIhD,EAAKqF,UACHjC,EAAQiC,QAEVjC,EAAQiC,QAAQpF,SAEhBiF,EAAaG,WAKjBrF,EAAKqF,SAAAA,EACLlE,EAAQkE,SAAW,IAAInR,KACvBkN,EAAWiE,SAAW,IAAInR,KAC1BqN,EAAU8D,QAAU,KAEhBjC,EAAQiC,UAEVjC,EAAQiC,QAAQvE,YAAAA,IAEXsD,GAAUZ,EAAStE,eACtBkE,EAAQiC,QAAQ5E,KAAK,UAKzBkB,EAAI0D,QAAUxR,WAAW2O,GAAkBwC,EAASK,QAAAA,EAOhD/F,GAAQ,eAAC8E,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,IAAAA,UAAAA,GAEa,OAAtB7C,EAAU8D,UAGdnC,KAGAtP,aAAa+N,EAAI0D,SACjB1D,EAAI0D,QAAU,KAGd9D,EAAU8D,QAAU5C,KAEhBW,EAAQiC,UAELjB,GAAUZ,EAAStE,eACtBkE,EAAQiC,QAAQ5E,KAAK,WASrBlB,GAAS,eAAC6E,EAAAA,UAAAA,OAAAA,QAAAA,IAAAA,UAAAA,IAAAA,UAAAA,GAEY,OAAtB7C,EAAU8D,UAGdrC,KAIKhD,EAAKqF,UAER1D,EAAI0D,QAAUxR,WAAW2O,GAAkBjB,EAAU8D,SAErD9D,EAAU8D,QAAU,KACpBjE,EAAWiE,SAAW,IAAInR,MAGxBkP,EAAQiC,UAELjB,GAAUZ,EAAStE,eACtBkE,EAAQiC,QAAQ5E,KAAK,mBAQ3B2E,EAAAA,EAAAA,YAAU,cAEJtD,EAAW,GAAKC,EAAW,QACvB,IAAI3J,MAAM,mEAKdoL,IACFJ,EAAQiC,QAAUpG,GAAW,CAC3B/I,KAAMsN,EAAStN,KACfhB,YAAasO,EAAStO,YACtBwJ,iBAAkB8E,EAAS9E,iBAC3Bd,aAAc4F,EAAS5F,aACvBsB,cAAesE,EAAStE,cACxBC,UAAW,CACTe,OAAQ+E,EAAWI,QACnBlF,SAAU+E,EAAaG,SAEzBjG,MAAAA,GACAC,MAAAA,GACAC,MAAAA,GACAC,OAAAA,MAKAgD,GAAAA,EAAAA,EAAAA,GAAAA,IAAAA,MACK,iFACL3O,aAAa+N,EAAI0D,SACjBnC,IAAAA,IACIM,EAAAA,CAAAA,EAAAA,KAAAA,EAAAA,KAAAA,CAAAA,OAAAA,EAAAA,KAAAA,EAAgBJ,EAAQiC,QAAQ3P,QAAAA,KAAAA,EAAAA,IAAAA,MAAAA,OAAAA,EAAAA,OAAAA,GAAAA,EAAAA,MAIpC4M,EACFlD,KAEA4D,MAAAA,EAAAA,EAAAA,GAAAA,IAAAA,MAIK,iFACLpP,aAAa+N,EAAI0D,SACjBnC,IAAAA,GACIoC,GAAqBxR,QAAQwR,GAAqBxR,UAClD0P,EAAAA,CAAAA,EAAAA,KAAAA,EAAAA,KAAAA,CAAAA,OAAAA,EAAAA,KAAAA,EAAgBJ,EAAQiC,QAAQ3P,QAAAA,KAAAA,EAAAA,IAAAA,MAAAA,OAAAA,EAAAA,OAAAA,GAAAA,EAAAA,KAAAA,GAErC,KAEH0P,EAAAA,EAAAA,YAAU,eACFM,EAAkB9D,EAAYyD,QAChCK,GAAiBxC,KAEnBf,GAAYkD,QADVnD,EAAiB,EACGnO,EAAUqO,GAAcF,GAExBE,GAEpBsD,GAAiB1C,IAAAA,GACpB,CAACd,KAEJkD,EAAAA,EAAAA,YAAU,WACRJ,EAASK,QAAUlC,GACd4B,EAAUM,SAAWrF,EAAKqF,SAC7BhG,KAEF0F,EAAUM,SAAAA,CAAU,GACnB,CAAClC,IAEG,CACL/C,OAAAA,GACA1D,SAAAA,GACA0C,MAAAA,GACAE,MAAAA,GACAD,MAAAA,GACAE,OAAAA,GACAqD,gBAAAA,GACAC,iBAAAA,GACAF,kBAAAA,GACAG,mBAAAA,GACAJ,eAAAA,GACAD,iBAAAA,GDiGJzB,CAAAA,GAAU2E,UAAY,CAMpBxC,QAASyC,IAAAA,OAMTjC,OAAQiC,IAAAA,QAAkBA,IAAAA,QAM1B1F,OAAQ0F,IAAAA,KAMRzF,SAAUyF,IAAAA,KAMV3D,SAAU2D,IAAAA,KAMV9D,SAAU8D,IAAAA,OAMV7D,SAAU6D,IAAAA,OAMV1D,eAAgB0D,IAAAA,OAMhBlC,QAASkC,IAAAA,UAAoB,CAACA,IAAAA,OAAkBA,IAAAA,UAMhDtD,aAAcsD,IAAAA,KAMdrD,cAAeqD,IAAAA,KAQf1B,WAAY0B,IAAAA,KAMZhC,QAASgC,IAAAA,KAMT/B,QAAS+B,IAAAA,KAMTpC,SAAUoC,IAAAA,UAAoB,CAC5BA,IAAAA,KACAA,IAAAA,MAAgB,CACd1P,KAAM0P,IAAAA,MAAgB,CAAC,mBAAoB,eAAgB,aAC3D1Q,YAAa0Q,IAAAA,OACblH,iBAAkBkH,IAAAA,OAClBhI,aAAcgI,IAAAA,OACdrN,cAAeqN,IAAAA,OACf1G,cAAe0G,IAAAA,UAUrB5E,GAAU6E,aAAe,CACvB1C,QAAS,KACTO,QAASvQ,EACTwQ,OAAQtQ,EACR6M,OAAQ,aACRC,SAAU,aACV8B,SAAU,aACVH,SAAU,EACVC,SAAU,EACVG,eAAgB,IAChBI,cAAc,EACdC,eAAe,EACf2B,YAAY,EACZL,SAAS,EACTD,SAAS,EACTJ,UAAU,GCrNZc,GAAaqB,UAAY,CAMvBxC,QAASyC,IAAAA,OAMTjC,OAAQiC,IAAAA,QAAkBA,IAAAA,QAM1B1F,OAAQ0F,IAAAA,KAMRzF,SAAUyF,IAAAA,KAMV3D,SAAU2D,IAAAA,KAMV9D,SAAU8D,IAAAA,OAMV7D,SAAU6D,IAAAA,OAMV1D,eAAgB0D,IAAAA,OAMhBlC,QAASkC,IAAAA,UAAoB,CAACA,IAAAA,OAAkBA,IAAAA,UAMhDtD,aAAcsD,IAAAA,KAMdrD,cAAeqD,IAAAA,KAQf1B,WAAY0B,IAAAA,KAMZhC,QAASgC,IAAAA,KAMT/B,QAAS+B,IAAAA,KAMTpC,SAAUoC,IAAAA,UAAoB,CAC5BA,IAAAA,KACAA,IAAAA,MAAgB,CACd1P,KAAM0P,IAAAA,MAAgB,CAAC,mBAAoB,eAAgB,aAC3D1Q,YAAa0Q,IAAAA,OACblH,iBAAkBkH,IAAAA,OAClBhI,aAAcgI,IAAAA,OACdrN,cAAeqN,IAAAA,OACf1G,cAAe0G,IAAAA,UAUrBtB,GAAauB,aAAe,CAC1B1C,QAAS,KACTO,QAASvQ,EACTwQ,OAAQtQ,EACR6M,OAAQ,aACRC,SAAU,aACV8B,SAAU,aACVH,SAAU,EACVC,SAAU,EACVG,eAAgB,IAChBI,cAAc,EACdC,eAAe,EACf2B,YAAY,EACZL,SAAS,EACTD,SAAS,EACTJ,UAAU,a,6CCxmBZ,OAnCA,WACI,IAAMsC,GAAUC,EAAAA,EAAAA,cACVC,GAAelB,EAAAA,EAAAA,UACrB,GAAoCmB,EAAAA,EAAAA,WAAS,GAA7C,eAAOC,EAAP,KAAmBC,EAAnB,KACA,GAA8CF,EAAAA,EAAAA,WAAS,GAAvD,eAqBA,OArBA,WAsBI,UAAC,GAAD,CACIG,IAAKJ,EACL7C,QAASkD,SAASC,UAClBpG,OAvBa,SAAAqG,IAC0C,IAAvDtT,OAAOuT,SAASC,SAASC,QAAQ,kBAAwD,SAA7BzT,OAAOuT,SAASC,WACf,IAA7DxT,OAAOuT,SAASC,SAAStN,cAAcuN,QAAQ,WAC1CR,KACDS,EAAAA,GAAAA,MACAb,EAAQ5J,KAAK,cACbiK,GAAc,IAGzB,EAeOlE,SAba,YAC0C,IAAvDhP,OAAOuT,SAASC,SAASC,QAAQ,kBAAwD,SAA7BzT,OAAOuT,SAASC,WACf,IAA7DxT,OAAOuT,SAASC,SAAStN,cAAcuN,QAAQ,WAC/CV,EAAaX,QAAQhG,QACrB8G,GAAc,GAErB,GAUJ,ECVD,OAhBA,WACI,OACI,UAACS,EAAA,EAAD,WACI,UAAC,EAAAC,SAAD,CAAUC,UAAU,oBAApB,UACI,WAAC,KAAD,YACI,UAAC,EAAAC,OAAD,UACKC,EAAAA,KAAW,SAACC,EAAOC,GAAR,OACR,UAAC,EAAAC,MAAD,CAAmBC,OAAK,EAACvU,KAAMoU,EAAMpU,KAAMC,UAAWmU,EAAMnU,WAAhDoU,EADJ,OAIhB,UAAC,GAAD,UAKnB,C,8KCYD,MArCA,SAAmBhG,GACf,IAAQtG,EAAoBsG,EAApBtG,QAASyM,EAAWnG,EAAXmG,OACjB,GAAoCpB,EAAAA,EAAAA,WAAS,GAA7C,eAAOqB,EAAP,KAAmBC,EAAnB,KAEMC,EAAc,WAChBD,GAAeD,EAClB,EAGK5P,GAAW+P,EAAAA,EAAAA,cAAY,SAAClB,GAC1BgB,GAAc,EACjB,GAAE,IACGG,GAASC,EAAAA,EAAAA,IAAkBjQ,GAEjC,OACI,+BACI,iBAAKqI,GAAG,gBAAgB6H,MAAOP,EAAQjB,IAAKsB,EAAQG,QAASL,EAA7D,UACe,KAAV5M,IAAgB,cAAGkN,KAAK,IAAIC,UAAU,QAAQC,MAAM,2BAA2BH,QAASL,EAAxE,UAAqF,gBAAKS,IAAKC,MAC/GZ,GACG,iBACIS,UAAU,mBACVF,QAAS,SAACtB,GACNA,EAAM4B,iBACT,EAJL,WAMI,gBAAKJ,UAAU,0BAAf,yBACA,gBAAKA,UAAU,sBAAf,UACI,kBAAOA,UAAU,kBAAjB,SAAoCnN,UAIxC,4BAKvB,E,oBC0CD,MA1EA,SAAmBsG,GACf,IAAIkH,EAAY,GACZC,GAAmB,EACjBC,EAAcC,EAAAA,MAAkBrH,EAAMsF,SAASgC,OAAOrP,oBACpBsP,IAApCH,EAAW,mBACXD,GAAmB,GAEnBC,EAAW,YACXF,EAAWE,EAAW,WAE1B,OAAgDrC,EAAAA,EAAAA,UAASoC,GAAzD,eAAOK,EAAP,KACM5C,GADN,MACgBC,EAAAA,EAAAA,eAMhB,OAJAX,EAAAA,EAAAA,YAAU,YACNuB,EAAAA,EAAAA,KACH,GAAE,KAGC,+BACI,gBAAKoB,UAAU,4BAAf,UACI,gBAAKA,UAAU,YAAf,UACI,gBAAKA,UAAU,MAAf,UACI,iBAAKA,UAAU,YAAf,WACI,gBAAKA,UAAU,kBAOf,iBAAKA,UAAU,gBAAf,WACI,gBAAKA,UAAU,4BAAf,mBACCW,IAAoB,cAAGX,UAAU,+BAAb,wCACnBW,IACE,gBAAKX,UAAU,+BAAf,UACA,iBAAKA,UAAU,MAAf,oHAEA,SAAC,EAAD,CACInN,QAASwN,EACTf,OAAQ,CACJsB,WAAY,QACZC,UAAW,iBAMvB,gBAAIb,UAAU,UAAUH,MAAO,CAAEiB,mBAAoB,QAArD,WACI,2LACA,uGACA,iQACA,iKAEJ,mBACA,iBAAKjB,MAAO,CAAEiB,mBAAoB,QAAlC,wBAEQ,kBAFR,wCAKA,mBACA,gBAAKd,UAAU,cAAf,UACI,gBAAKA,UAAU,2BAA2BF,QAAS,WAAQ/B,EAAQ5J,KAAK4M,EAAAA,GAAoB,EAAElB,MAAO,CAAEmB,OAAQ,OAAQC,QAAS,aAAhI,sDAWnC,C,gJCxDM,SAASrB,EAAkBsB,GAChC,IAAM7C,GAAMtB,EAAAA,EAAAA,QAAO,MAqBnB,OAnBAM,EAAAA,EAAAA,YAAU,WACR,IAAM1N,EAAW,SAAA6O,GAEVH,EAAIf,UAAWe,EAAIf,QAAQ6D,SAAS3C,EAAM4C,SAI/CF,EAAQ1C,EACT,EAKD,OAHAnT,SAAS2E,iBAAiB,YAAaL,GACvCtE,SAAS2E,iBAAiB,aAAcL,GAEjC,WACLtE,SAASuF,oBAAoB,YAAajB,GAC1CtE,SAASuF,oBAAoB,aAAcjB,EAC5C,CACF,GAAE,CAACuR,IAEG7C,CACR,CAEM,SAASgD,EAAapB,IAE3B5C,EAAAA,EAAAA,YAAU,WACRhS,SAASiW,cAAc,SAASC,UAAYtB,CAC7C,GAAE,GAEJ,CAEM,SAASuB,IACd,OAA4BtD,EAAAA,EAAAA,WAAS,GAArC,eAAOhG,EAAP,KAAeuJ,EAAf,KAEMC,GAAY3E,EAAAA,EAAAA,QAAO,MAEzB,SAAS0C,EAAYlR,GACfmT,IAAcA,EAAUpE,QAAQ6D,SAAS5S,EAAE6S,SAC7CK,GAAU,EAEb,CAiBD,OAXApE,EAAAA,EAAAA,YAAU,WAMR,OALInF,EACF7M,SAAS2E,iBAAiB,YAAayP,GAGvCpU,SAASuF,oBAAoB,YAAa6O,GACrC,WACLpU,SAASuF,oBAAoB,YAAa6O,EAC3C,CACF,GAAE,CAACvH,IAEG,CAAEwJ,UAAAA,EAAWxJ,OAAAA,EAAQyJ,OAf5B,WACEF,GAAWvJ,EACZ,EAamCuJ,UAAAA,EACrC,C,2CClFD,IAAIG,EAAU,EAAQ,MAAR,GACdC,EAAOC,QAAUF,EAGjB,IACEG,mBAAqBH,CAOvB,CANE,MAAOI,GACmB,kBAAfC,WACTA,WAAWF,mBAAqBH,EAEhCM,SAAS,IAAK,yBAAdA,CAAwCN,EAE5C,C","sources":["cpRoutes.js","../node_modules/react-idle-timer/src/utils.js","../node_modules/react-idle-timer/src/MessageChannel/methods/broadcastChannel.js","../node_modules/react-idle-timer/src/MessageChannel/ObliviousSet.js","../node_modules/react-idle-timer/src/MessageChannel/methods/localStorage.js","../node_modules/react-idle-timer/src/MessageChannel/methods/simulate.js","../node_modules/react-idle-timer/src/MessageChannel/methodChooser.js","../node_modules/react-idle-timer/src/MessageChannel/MessageChannel.js","../node_modules/react-idle-timer/src/MessageChannel/leaderElection.js","../node_modules/react-idle-timer/src/TabManager.js","../node_modules/react-idle-timer/src/IdleTimer.js","../node_modules/react-idle-timer/src/useIdleTimer.js","shared/InactivityTimer.js","CPApp.js","shared/InfoPopUp.js","components/CustomerPortal/ErrorPage/ErrorPage.js","hooks/index.js","../node_modules/@babel/runtime/regenerator/index.js"],"sourcesContent":["import { React,lazy } from \"react\";\r\n\r\nconst Login = lazy(() => import(\"./components/CustomerPortal/Login/Login\"));\r\nconst CpLogin = lazy(() => import(\"./components/CustomerPortal/Login/CpLogin\"));\r\nconst Customer = lazy(() => import(\"./components/CustomerPortal/Customer/index\"));\r\nconst ErrorPage = lazy(() => import(\"./components/CustomerPortal/ErrorPage/ErrorPage\"));\r\nconst Dummy1 = lazy(() => import(\"./components/Blank/Dummy1\"));\r\nconst AddorEditUser=lazy(()=>import(\"./components/Users/AddOrEditUser/index\"))\r\nconst CustomerPortalApproval = lazy(() => import('./components/CustomerPortal/Customer/CustomerHome/CustomerApproval'))\r\nconst Proposals = lazy(()=>import(\"./components/CustomerPortal/Customer/CustomerHome/Proposals\"));\r\nconst PayWithSavedCards = lazy(() => import(\"./components/AR/PayWithSavedCards\"));\r\n\r\nconst routes = [\r\n {\r\n path: \"/\",\r\n component: Login,\r\n },\r\n {\r\n path: \"/CustomerLogin\",\r\n component: Login,\r\n },\r\n {\r\n path: \"/Customer/Proposals/View\",\r\n component: Proposals,\r\n },\r\n {\r\n path: \"/test\",\r\n component: Login,\r\n },\r\n {\r\n path: \"/cplogin\",\r\n component: CpLogin,\r\n },\r\n {\r\n path: \"/signup/:clientid\",\r\n component: Login,\r\n },\r\n {\r\n path: \"/Customer/:param\",\r\n component: Customer,\r\n },\r\n // {\r\n // path: \"/CustomerHome\",\r\n // component: Customer,\r\n // },\r\n // {\r\n // path: \"/CustomerList\",\r\n // component: Customer,\r\n // },\r\n {\r\n path: \"/ErrorPage\",\r\n component: ErrorPage,\r\n },\r\n {\r\n path: \"/Dummy1\",\r\n component: Dummy1,\r\n },\r\n {\r\n path:\"/Users/AddUsers\",\r\n component:AddorEditUser\r\n },\r\n // {\r\n // path: '**',\r\n // redirectTo: NotFoundComponent,\r\n // }\r\n // < Link to = \"/oops\" >\r\n // Let's go\r\n // \r\n {\r\n\t\tpath: \"/customerportalapproval\",\r\n\t\tcomponent: CustomerPortalApproval\r\n },\r\n {\r\n path: \"/customer/AR/PayWithSavedCards\",\r\n component: PayWithSavedCards,\r\n description: \"Pay With SavedCards\"\r\n },\r\n \r\n]\r\n\r\nexport default routes;","/**\n * Determine if we are in a browser\n * or a server environment\n * @type {Boolean}\n * @private\n */\nexport const IS_BROWSER =\n (typeof window === 'undefined' ? 'undefined' : typeof window) === 'object'\n\n/**\n * Default element to listen for events on\n * @type {Object}\n * @private\n */\nexport const DEFAULT_ELEMENT = IS_BROWSER ? document : {}\n\n/**\n * The default events to determine activity\n * @type {Array}\n * @private\n */\nexport const DEFAULT_EVENTS = [\n 'mousemove',\n 'keydown',\n 'wheel',\n 'DOMMouseScroll',\n 'mousewheel',\n 'mousedown',\n 'touchstart',\n 'touchmove',\n 'MSPointerDown',\n 'MSPointerMove',\n 'visibilitychange'\n]\n\n/**\n * Creates a debounced function that delays invoking func until\n * after delay milliseconds has elapsed since the last time the\n * debounced function was invoked.\n * @name debounced\n * @param {Function} fn Function to debounce\n * @param {Number} delay How long to wait\n * @return {Function} Executed Function\n * @private\n **/\nexport function debounced (fn, delay) {\n let timerId\n function result (...args) {\n if (timerId) {\n clearTimeout(timerId)\n }\n timerId = setTimeout(() => {\n fn(...args)\n timerId = null\n }, delay)\n }\n\n result.cancel = function () {\n clearTimeout(timerId)\n }\n\n return result\n}\n\n/**\n * Creates a throttled function that only invokes func at most\n * once per every wait milliseconds.\n * @name throttled\n * @param {Function} fn Function to debounce\n * @param {Number} delay How long to wait\n * @return {Function} Executed Function\n * @private\n **/\nexport function throttled (fn, delay) {\n let lastCall = 0\n return function (...args) {\n const now = new Date().getTime()\n if (now - lastCall < delay) {\n return\n }\n lastCall = now\n return fn(...args)\n }\n}\n\nlet lastMs = 0\nlet additional = 0\n\n/**\n * Returns current time in microseconds.\n *\n * @returns {Number} current time in microseconds\n * @private\n */\nexport function microSeconds () {\n const ms = new Date().getTime()\n if (ms === lastMs) {\n additional++\n return ms * 1000 + additional\n } else {\n lastMs = ms\n additional = 0\n return ms * 1000\n }\n}\n\n/**\n * Generate and return a random token.\n *\n * @returns {String} Random token.\n * @private\n */\nexport function randomToken () {\n return Math.random().toString(36).substring(2)\n}\n\n/**\n * Checks if a js object is a promise.\n *\n * @param {*} obj Any javascript object.\n * @returns {Boolean} Wether or not this object is a promise.\n */\nexport function isPromise (obj) {\n if (obj && typeof obj.then === 'function') {\n /* istanbul ignore next */\n return true\n } else {\n return false\n }\n}\n\n/**\n * Sleeps for x amount of milliseconds.\n *\n * @param {Number} time Amount of time in milliseconds.\n * @returns {Promise}\n * @private\n */\nexport function sleep (time = 0) {\n return new Promise(resolve => setTimeout(resolve, time))\n}\n\n/**\n * Get the current timestamp.\n *\n * @returns {Number}\n * @private\n */\nexport function now () {\n return new Date().getTime()\n}\n\n/**\n * Waits until the given function returns true\n * @param {function} fn\n * @return {Promise}\n */\nexport function waitUntil (fn, timeout = 0, interval = 20) {\n let timedOut = false\n let ok = false\n\n /* istanbul ignore next */\n if (timeout !== 0) {\n sleep(timeout).then(() => {\n timedOut = true\n })\n }\n\n return new Promise((resolve, reject) => {\n const runLoop = () => {\n if (ok) {\n resolve()\n return\n }\n /* istanbul ignore next */\n if (timedOut) {\n reject(new Error(`❌ waitUntil reached timeout of ${timeout}ms`))\n return\n }\n sleep(interval).then(() => {\n ok = fn()\n runLoop()\n })\n }\n runLoop()\n })\n}\n","/* eslint-env browser */\nimport { microSeconds } from '../../utils'\n\nexport const type = 'broadcastChannel'\n\nexport function create (channelName) {\n const state = {\n messagesCallback: null,\n bc: new BroadcastChannel(channelName)\n }\n\n state.bc.onmessage = msg => {\n if (state.messagesCallback) {\n state.messagesCallback(msg.data)\n }\n }\n\n return state\n}\n\nexport function close (channelState) {\n channelState.bc.close()\n}\n\nexport function postMessage (channelState, messageJson) {\n try {\n channelState.bc.postMessage(messageJson, false)\n return Promise.resolve()\n } catch (err) {\n /* istanbul ignore next */\n return Promise.reject(err)\n }\n}\n\nexport function onMessage (channelState, fn) {\n channelState.messagesCallback = fn\n}\n\nexport function canBeUsed () {\n if (typeof BroadcastChannel === 'function') {\n return true\n } else {\n /* istanbul ignore next */\n return false\n }\n}\n\nexport function averageResponseTime () {\n return 150\n}\n\nexport default {\n create,\n close,\n onMessage,\n postMessage,\n canBeUsed,\n type,\n averageResponseTime,\n microSeconds\n}\n","import { now } from '../utils'\n\nexport default class ObliviousSet {\n constructor (ttl = 1000 * 60) {\n this.ttl = ttl\n this.set = new Set()\n this.timeMap = new Map()\n }\n\n has (value) {\n return this.set.has(value)\n }\n\n add (value) {\n this.timeMap.set(value, now())\n this.set.add(value)\n this._removeTooOldValues()\n }\n\n clear () {\n this.set.clear()\n this.timeMap.clear()\n }\n\n _removeTooOldValues () {\n const olderThen = now() - this.ttl\n const iterator = this.set[Symbol.iterator]()\n\n while (true) {\n const value = iterator.next().value\n if (!value) return // no more elements\n const time = this.timeMap.get(value)\n if (time < olderThen) {\n this.timeMap.delete(value)\n this.set.delete(value)\n } else {\n // We reached a value that is not old enough\n return\n }\n }\n }\n}\n","import ObliviousSet from '../ObliviousSet'\n\nimport {\n randomToken,\n microSeconds\n} from '../../utils'\n\nexport const type = 'localStorage'\n\n/**\n * Returns local storage instance\n */\nexport function getLocalStorage () {\n let localStorage\n if (typeof window === 'undefined') return null\n try {\n localStorage = window.localStorage\n localStorage = window['ie8-eventlistener/storage'] || window.localStorage\n } catch (e) {\n // New versions of Firefox throw a Security exception\n // if cookies are disabled. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1028153\n }\n return localStorage\n}\n\nexport function storageKey (channelName) {\n return channelName\n}\n\n/**\n* writes the new message to the storage\n* and fires the storage-event so other readers can find it\n*/\nexport function postMessage (channelState, messageJson) {\n return new Promise(resolve => {\n const key = storageKey(channelState.channelName)\n const writeObj = {\n token: randomToken(),\n time: new Date().getTime(),\n data: messageJson,\n uuid: channelState.uuid\n }\n const value = JSON.stringify(writeObj)\n getLocalStorage().setItem(key, value)\n\n /**\n * StorageEvent does not fire the 'storage' event\n * in the window that changes the state of the local storage.\n * So we fire it manually\n */\n const ev = document.createEvent('Event')\n ev.initEvent('storage', true, true)\n ev.key = key\n ev.newValue = value\n window.dispatchEvent(ev)\n\n resolve()\n })\n}\n\nexport function addStorageEventListener (channelName, fn) {\n const key = storageKey(channelName)\n const listener = ev => {\n if (ev.key === key) {\n fn(JSON.parse(ev.newValue))\n }\n }\n window.addEventListener('storage', listener)\n return listener\n}\nexport function removeStorageEventListener (listener) {\n window.removeEventListener('storage', listener)\n}\n\nexport function create (channelName, options = {}) {\n if (!canBeUsed()) {\n /* istanbul ignore next */\n throw new Error('❌ localStorage cannot be used.')\n }\n\n const uuid = randomToken()\n\n /**\n * eMIs\n * contains all messages that have been emitted before\n * @type {ObliviousSet}\n */\n const eMIs = new ObliviousSet(options.removeTimeout)\n\n const state = {\n channelName,\n uuid,\n eMIs // emittedMessagesIds\n }\n\n state.listener = addStorageEventListener(\n channelName,\n (msgObj) => {\n if (!state.messagesCallback) return // no listener\n if (msgObj.uuid === uuid) return // own message\n if (!msgObj.token || eMIs.has(msgObj.token)) return // already emitted\n if (msgObj.data.time && msgObj.data.time < state.messagesCallbackTime) return // too old\n\n eMIs.add(msgObj.token)\n state.messagesCallback(msgObj.data)\n }\n )\n\n return state\n}\n\nexport function close (channelState) {\n removeStorageEventListener(channelState.listener)\n}\n\nexport function onMessage (channelState, fn, time) {\n channelState.messagesCallbackTime = time\n channelState.messagesCallback = fn\n}\n\nexport function canBeUsed () {\n const ls = getLocalStorage()\n\n if (!ls) return false\n\n try {\n const key = '__check'\n ls.setItem(key, 'works')\n ls.removeItem(key)\n } catch (e) {\n // Safari 10 in private mode will not allow write access to local\n // storage and fail with a QuotaExceededError. See\n // https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API#Private_Browsing_Incognito_modes\n\n /* istanbul ignore next */\n return false\n }\n\n return true\n}\n\n/* istanbul ignore next */\nexport function averageResponseTime () {\n const defaultTime = 120\n const userAgent = navigator.userAgent.toLowerCase()\n if (userAgent.includes('safari') && !userAgent.includes('chrome')) {\n // safari is much slower so this time is higher\n return defaultTime * 2\n }\n return defaultTime\n}\n\nexport default {\n create,\n close,\n onMessage,\n postMessage,\n canBeUsed,\n type,\n averageResponseTime,\n microSeconds\n}\n","import { microSeconds } from '../../utils'\n\nexport const type = 'simulate'\n\nconst SIMULATE_CHANNELS = new Set()\n\nexport function create (channelName) {\n const state = {\n name: channelName,\n messagesCallback: null\n }\n SIMULATE_CHANNELS.add(state)\n\n return state\n}\n\nexport function close (channelState) {\n SIMULATE_CHANNELS.delete(channelState)\n}\n\nexport function postMessage (channelState, messageJson) {\n return new Promise(resolve => setTimeout(() => {\n const channelArray = Array.from(SIMULATE_CHANNELS)\n channelArray\n .filter(channel => channel.name === channelState.name)\n .filter(channel => channel !== channelState)\n .filter(channel => !!channel.messagesCallback)\n .forEach(channel => channel.messagesCallback(messageJson))\n resolve()\n }, 5))\n}\n\nexport function onMessage (channelState, fn) {\n channelState.messagesCallback = fn\n}\n\n/* istanbul ignore next */\nexport function canBeUsed () {\n return true\n}\n\n/* istanbul ignore next */\nexport function averageResponseTime () {\n return 5\n}\n\nexport default {\n create,\n close,\n onMessage,\n postMessage,\n canBeUsed,\n type,\n averageResponseTime,\n microSeconds\n}\n","import BroadcastChannelMethod from './methods/broadcastChannel'\nimport LocalStorageMethod from './methods/localStorage'\nimport SimulateMethod from './methods/simulate'\n\n// Order is important\nconst METHODS = [\n BroadcastChannelMethod,\n LocalStorageMethod\n]\n\nexport function chooseMethod (options = {}) {\n if (options.type) {\n // For testing\n if (options.type === 'simulate') {\n return SimulateMethod\n }\n\n // Chosen type\n const method = METHODS.find(m => m.type === options.type)\n if (!method) throw new Error(`❌ Method ${options.type} is not supported.`)\n else return method\n }\n\n const useMethod = METHODS.find(method => method.canBeUsed())\n\n /* istanbul ignore next */\n if (!useMethod) {\n throw new Error(`❌ No method found ${JSON.stringify(METHODS.map(m => m.type))}`)\n }\n return useMethod\n}\n","import { chooseMethod } from './methodChooser'\nimport { isPromise } from '../utils'\n\nexport class MessageChannel {\n constructor (name, options = {}) {\n this.name = name\n this.options = options\n this.method = chooseMethod(this.options)\n this.closed = false\n\n // isListening\n this._isListening = false\n\n /**\n * _onMessageListener\n * setting onmessage twice,\n * will overwrite the first listener\n */\n this._onMessageListener = null\n\n /**\n * _addEventListeners\n */\n this._addEventListeners = {\n message: [],\n internal: []\n }\n\n /**\n * Un send message promises\n * where the sending is still in progress\n * @type {Set}\n */\n this._unSendMessagePromises = new Set()\n\n /**\n * _beforeClose\n * array of promises that will be awaited\n * before the channel is closed\n */\n this._beforeClose = []\n\n /**\n * _preparePromise\n */\n this._preparePromises = null\n _prepareChannel(this)\n }\n\n postMessage (msg) {\n if (this.closed) {\n throw new Error(\n '❌ Cannot post message after channel has closed'\n )\n }\n return _post(this, 'message', msg)\n }\n\n postInternal (msg) {\n return _post(this, 'internal', msg)\n }\n\n set onmessage (fn) {\n const time = this.method.microSeconds()\n const listenObj = {\n time,\n fn\n }\n _removeListenerObject(this, 'message', this._onMessageListener)\n if (fn && typeof fn === 'function') {\n this._onMessageListener = listenObj\n _addListenerObject(this, 'message', listenObj)\n } else {\n /* istanbul ignore next */\n this._onMessageListener = null\n }\n }\n\n /* istanbul ignore next */\n get onmessage () {\n return this._onMessageListener\n }\n\n addEventListener (type, fn) {\n const time = this.method.microSeconds()\n const listenObj = {\n time,\n fn\n }\n _addListenerObject(this, type, listenObj)\n }\n\n removeEventListener (type, fn) {\n const obj = this._addEventListeners[type].find(obj => obj.fn === fn)\n _removeListenerObject(this, type, obj)\n }\n\n close () {\n if (this.closed) {\n return\n }\n this.closed = true\n const awaitPrepare = this._preparePromises ? this._preparePromises : Promise.resolve()\n\n this._onMessageListener = null\n this._addEventListeners.message = []\n\n return awaitPrepare\n // Wait until all current sending are processed\n .then(() => Promise.all(Array.from(this._unSendMessagePromises)))\n // Run before-close hooks\n .then(() => Promise.all(this._beforeClose.map(fn => fn())))\n // Close the channel\n .then(() => this.method.close(this._state))\n }\n\n get type () {\n return this.method.type\n }\n\n isClosed () {\n return this.closed\n }\n}\n\nfunction _post (messageChannel, type, msg) {\n const time = messageChannel.method.microSeconds()\n const msgObj = {\n time,\n type,\n data: msg\n }\n\n const awaitPrepare = messageChannel._preparePromises ? messageChannel._preparePromises : Promise.resolve()\n return awaitPrepare.then(() => {\n const sendPromise = messageChannel.method.postMessage(\n messageChannel._state,\n msgObj\n )\n\n // add/remove to un-send messages list\n messageChannel._unSendMessagePromises.add(sendPromise)\n sendPromise\n .catch()\n .then(() => messageChannel._unSendMessagePromises.delete(sendPromise))\n\n return sendPromise\n })\n}\n\nfunction _prepareChannel (channel) {\n const maybePromise = channel.method.create(channel.name, channel.options)\n /* istanbul ignore next */\n if (isPromise(maybePromise)) {\n channel._preparePromises = maybePromise\n maybePromise.then(s => {\n channel._state = s\n })\n } else {\n channel._state = maybePromise\n }\n}\n\nfunction _hasMessageListeners (channel) {\n if (channel._addEventListeners.message.length > 0) return true\n if (channel._addEventListeners.internal.length > 0) return true\n return false\n}\n\nfunction _addListenerObject (channel, type, obj) {\n channel._addEventListeners[type].push(obj)\n _startListening(channel)\n}\n\nfunction _removeListenerObject (channel, type, obj) {\n channel._addEventListeners[type] = channel._addEventListeners[type].filter(o => o !== obj)\n _stopListening(channel)\n}\n\nfunction _startListening (channel) {\n if (!channel._isListening && _hasMessageListeners(channel)) {\n // someone is listening, start subscribing\n\n const listenerFn = msgObj => {\n channel._addEventListeners[msgObj.type].forEach(obj => {\n if (msgObj.time >= obj.time) {\n obj.fn(msgObj.data)\n }\n })\n }\n\n const time = channel.method.microSeconds()\n if (channel._preparePromises) {\n /* istanbul ignore next */\n channel._preparePromises.then(() => {\n channel._isListening = true\n channel.method.onMessage(\n channel._state,\n listenerFn,\n time\n )\n })\n } else {\n channel._isListening = true\n channel.method.onMessage(\n channel._state,\n listenerFn,\n time\n )\n }\n }\n}\n\nfunction _stopListening (channel) {\n if (channel._isListening && !_hasMessageListeners(channel)) {\n // no one is listening, stop subscribing\n channel._isListening = false\n const time = channel.method.microSeconds()\n channel.method.onMessage(\n channel._state,\n null,\n time\n )\n }\n}\n","import { IS_BROWSER, sleep, randomToken } from '../utils'\n\nclass LeaderElection {\n constructor (channel, options) {\n this._channel = channel\n this._options = options\n\n this.isLeader = false\n this.isDead = false\n this.token = randomToken()\n\n this._isApplying = false\n this._reApply = false\n\n // things to clean up\n this._unloadFns = []\n this._listeners = []\n this._intervals = []\n this._duplicateListeners = () => { }\n this._duplicateCalled = false\n this._onBeforeDie = async () => {}\n\n const unloadFn = async () => this.die()\n\n if (IS_BROWSER) {\n window.addEventListener('beforeUnload', unloadFn)\n window.addEventListener('unload', unloadFn)\n\n this._unloadFns.push(['beforeUnload', unloadFn])\n this._unloadFns.push(['unload', unloadFn])\n }\n }\n\n applyOnce () {\n if (this.isLeader) return Promise.resolve(false)\n if (this.isDead) return Promise.resolve(false)\n\n // do nothing if already running\n if (this._isApplying) {\n this._reApply = true\n return Promise.resolve(false)\n }\n this._isApplying = true\n\n let stopCriteria = false\n const received = []\n\n const handleMessage = (msg) => {\n if (msg.context === 'leader' && msg.token !== this.token) {\n received.push(msg)\n\n if (msg.action === 'apply') {\n // Other is applying\n if (msg.token > this.token) {\n // Other has higher token, stop applying\n stopCriteria = true\n }\n }\n\n if (msg.action === 'tell') {\n // Other is already leader\n stopCriteria = true\n }\n }\n }\n this._channel.addEventListener('internal', handleMessage)\n\n return _sendMessage(this, 'apply') // send out that this one is applying\n .then(() => sleep(this._options.responseTime)) // let others time to respond\n .then(() => {\n if (stopCriteria) return Promise.reject(new Error())\n else return _sendMessage(this, 'apply')\n })\n .then(() => sleep(this._options.responseTime)) // let others time to respond\n .then(() => {\n if (stopCriteria) return Promise.reject(new Error())\n else return _sendMessage(this)\n })\n .then(() => beLeader(this)) // no one disagreed -> this one is now leader\n .then(() => true)\n .catch(() => false) // apply not successful\n .then(success => {\n this._channel.removeEventListener('internal', handleMessage)\n this._isApplying = false\n if (!success && this._reApply) {\n this._reApply = false\n return this.applyOnce()\n } else return success\n })\n }\n\n awaitLeadership () {\n if (\n !this._awaitLeadershipPromise\n ) {\n this._awaitLeadershipPromise = _awaitLeadershipOnce(this)\n }\n return this._awaitLeadershipPromise\n }\n\n set onDuplicate (fn) {\n this._duplicateListeners = fn\n }\n\n /* istanbul ignore next */\n get onDuplicate () {\n return this._duplicateListeners\n }\n\n set onBeforeDie (fn) {\n this._onBeforeDie = fn\n }\n\n /* istanbul ignore next */\n get onBeforeDie () {\n return this._onBeforeDie\n }\n\n async die () {\n if (this.isDead) return\n this.isDead = true\n\n await this.onBeforeDie()\n this._listeners.forEach(listener => this._channel.removeEventListener('internal', listener))\n this._intervals.forEach(interval => clearInterval(interval))\n this._unloadFns.forEach(uFn => {\n if (IS_BROWSER) {\n window.removeEventListener(uFn[0], uFn[1])\n }\n })\n return _sendMessage(this, 'death')\n }\n}\n\nfunction _awaitLeadershipOnce (leaderElector) {\n if (leaderElector.isLeader) return Promise.resolve()\n\n return new Promise(resolve => {\n let resolved = false\n\n function finish () {\n /* istanbul ignore next */\n if (resolved) {\n return\n }\n resolved = true\n clearInterval(interval)\n leaderElector._channel.removeEventListener('internal', whenDeathListener)\n resolve(true)\n }\n\n // try once now\n leaderElector.applyOnce().then(() => {\n if (leaderElector.isLeader) {\n finish()\n }\n })\n\n // try on fallbackInterval\n const interval = setInterval(() => {\n /* istanbul ignore next */\n leaderElector.applyOnce().then(() => {\n if (leaderElector.isLeader) {\n finish()\n }\n })\n }, leaderElector._options.fallbackInterval)\n leaderElector._intervals.push(interval)\n\n // try when other leader dies\n const whenDeathListener = msg => {\n if (msg.context === 'leader' && msg.action === 'death') {\n leaderElector.applyOnce().then(() => {\n if (leaderElector.isLeader) finish()\n })\n }\n }\n leaderElector._channel.addEventListener('internal', whenDeathListener)\n leaderElector._listeners.push(whenDeathListener)\n })\n}\n\n/**\n * Sends and internal message over the broadcast-channel\n */\nfunction _sendMessage (leaderElector, action) {\n const msgJson = {\n context: 'leader',\n action,\n token: leaderElector.token\n }\n return leaderElector._channel.postInternal(msgJson)\n}\n\nexport function beLeader (leaderElector) {\n leaderElector.isLeader = true\n\n const isLeaderListener = msg => {\n if (msg.context === 'leader' && msg.action === 'apply') {\n _sendMessage(leaderElector, 'tell')\n }\n\n if (msg.context === 'leader' && msg.action === 'tell' && !leaderElector._duplicateCalled) {\n /**\n * Another instance is also leader!\n * This can happen on rare events\n * like when the CPU is at 100% for long time\n * or the tabs are open very long and the browser throttles them.\n */\n leaderElector._duplicateCalled = true\n leaderElector._duplicateListeners() // message the lib user so the app can handle the problem\n _sendMessage(leaderElector, 'tell') // ensure other leader also knows the problem\n }\n }\n leaderElector._channel.addEventListener('internal', isLeaderListener)\n leaderElector._listeners.push(isLeaderListener)\n return _sendMessage(leaderElector, 'tell')\n}\n\nexport function createLeaderElection (channel, options) {\n if (channel._leaderElector) {\n throw new Error('❌ MessageChannel already has a leader-elector')\n }\n\n const elector = new LeaderElection(channel, options)\n channel._beforeClose.push(async () => elector.die())\n\n channel._leaderElector = elector\n return elector\n}\n","import { MessageChannel, createLeaderElection } from './MessageChannel'\nexport const TabManager = ({\n type,\n channelName,\n fallbackInterval,\n responseTime,\n emitOnAllTabs,\n callbacks,\n start,\n reset,\n pause,\n resume\n}) => {\n const channel = new MessageChannel(channelName, { type })\n const elector = createLeaderElection(channel, { fallbackInterval, responseTime })\n const registry = {}\n\n // Register self\n registry[elector.token] = false\n\n let leader = false\n let allIdle = true\n\n const isLeader = () => leader\n\n elector.awaitLeadership().then(() => {\n leader = true\n })\n\n channel.addEventListener('message', ([type, id]) => {\n switch (type) {\n case 'register':\n registry[id] = false\n break\n case 'deregister':\n delete registry[id]\n break\n case 'idle':\n idle(id)\n break\n case 'active':\n active(id)\n break\n case 'emitIdle':\n callbacks.onIdle()\n break\n case 'emitActive':\n callbacks.onActive()\n break\n case 'start':\n start(true)\n break\n case 'reset':\n reset(true)\n break\n case 'pause':\n pause(true)\n break\n case 'resume':\n resume(true)\n break\n default:\n // no op\n }\n })\n\n const setAllIdle = bool => {\n allIdle = bool\n }\n\n const isAllIdle = () => allIdle\n\n const idle = (id = elector.token) => {\n registry[id] = true\n const isIdle = Object.values(registry).every(v => v)\n if (!allIdle && isIdle) {\n allIdle = true\n if (isLeader()) {\n callbacks.onIdle()\n if (emitOnAllTabs) send('emitIdle')\n } else {\n send('idle')\n }\n }\n }\n\n const active = (id = elector.token) => {\n registry[id] = false\n const isActive = Object.values(registry).some(v => !v)\n if (allIdle && isActive) {\n allIdle = false\n if (isLeader()) {\n callbacks.onActive()\n if (emitOnAllTabs) send('emitActive')\n } else {\n send('active')\n }\n }\n }\n\n /* istanbul ignore next */\n elector.onDuplicate = async () => await elector.die()\n elector.onBeforeDie = async () => await send('deregister')\n\n const send = async message => channel.postMessage([message, elector.token])\n\n const close = async () => {\n await elector.die()\n await channel.close()\n }\n\n // Register self with remote tabs\n send('register')\n\n return { close, send, isLeader, idle, active, isAllIdle, setAllIdle }\n}\n","/**\n * ___ _ _ _____ _\n * |_ _|__| | | __|_ _(_)_ __ ___ ___ _ __\n * | |/ _` | |/ _ \\| | | | '_ ` _ \\ / _ \\ '__|\n * | | (_| | | __/| | | | | | | | | __/ |\n * |___\\__,_|_|\\___||_| |_|_| |_| |_|\\___|_|\n *\n * @name IdleTimer\n * @author Randy Lebeau\n * @private\n */\n\nimport { Component } from 'react'\nimport PropTypes from 'prop-types'\nimport { TabManager } from './TabManager'\nimport { IS_BROWSER, DEFAULT_ELEMENT, DEFAULT_EVENTS, debounced, throttled } from './utils'\n\n/**\n * Detects when your user is idle\n * @class IdleTimer\n * @private\n */\nclass IdleTimer extends Component {\n /**\n * Creates an instance of IdleTimer\n * bind all of our internal events here\n * for best performance\n * @param {Object} props\n * @return {IdleTimer}\n * @private\n */\n constructor (props) {\n super(props)\n\n /**\n * Sets initial component state\n * @type {Object}\n * @private\n */\n this.state = {\n idle: false,\n oldDate: +new Date(),\n lastActive: +new Date(),\n lastIdle: null,\n idleTime: 0,\n remaining: null,\n pageX: null,\n pageY: null\n }\n\n /**\n * The timer instance\n * @type {Timeout}\n * @private\n */\n this.tId = null\n\n /**\n * Wether or not events are bound\n * @type {boolean}\n * @private\n */\n this.eventsBound = false\n\n this.callbackRefs = {}\n\n // Debounce and throttle can't both be set\n if (props.debounce > 0 && props.throttle > 0) {\n throw new Error('onAction can either be throttled or debounced (not both)')\n }\n\n // Create debounced action if applicable\n if (props.debounce > 0) {\n this._onAction = debounced(props.onAction, props.debounce)\n\n // Create throttled action if applicable\n } else if (props.throttle > 0) {\n this._onAction = throttled(props.onAction, props.throttle)\n\n // Set custom onAction\n } else {\n this._onAction = props.onAction\n }\n\n // Create a throttle event handler if applicable\n if (props.eventsThrottle > 0) {\n this.handleEvent = throttled(this._handleEvent.bind(this), props.eventsThrottle)\n } else {\n this.handleEvent = this._handleEvent.bind(this)\n }\n\n // If startOnMount is set, idle state defaults to true\n if (!props.startOnMount || props.startManually) {\n this.state.idle = true\n }\n\n // Bind all events to component scope, built for speed 🚀\n this._toggleIdleState = this._toggleIdleState.bind(this)\n this.start = this.start.bind(this)\n this.reset = this.reset.bind(this)\n this.pause = this.pause.bind(this)\n this.resume = this.resume.bind(this)\n this.isIdle = this.isIdle.bind(this)\n this.getRemainingTime = this.getRemainingTime.bind(this)\n this.getElapsedTime = this.getElapsedTime.bind(this)\n this.getLastActiveTime = this.getLastActiveTime.bind(this)\n this.getLastIdleTime = this.getLastIdleTime.bind(this)\n this.getTotalIdleTime = this.getTotalIdleTime.bind(this)\n this.getTotalActiveTime = this.getTotalActiveTime.bind(this)\n }\n\n /**\n * Runs once the component has mounted\n * here we handle automatically starting\n * the idletimer\n * @private\n */\n componentDidMount () {\n const { startOnMount, startManually } = this.props\n\n // Set up cross tab\n this._setupTabManager()\n\n if (startManually) return\n if (startOnMount) {\n this.start()\n } else {\n this._bindEvents()\n }\n }\n\n componentDidUpdate (prevProps) {\n // Update debounce function\n if ((prevProps.debounce !== this.props.debounce) && this.props.debounce > 0) {\n if (this._onAction.cancel) this._onAction.cancel()\n this._onAction = debounced(this.props.onAction, this.props.debounce)\n } else\n // Update throttle function\n if ((prevProps.throttle !== this.props.throttle) && this.props.throttle > 0) {\n if (this._onAction.cancel) this._onAction.cancel()\n this._onAction = throttled(this.props.onAction, this.props.throttle)\n } else\n // Remove throttle or debounce\n if (\n (prevProps.throttle && this.props.throttle === 0) ||\n (prevProps.debounce && this.props.debounce === 0)\n ) {\n if (this._onAction.cancel) this._onAction.cancel()\n this._onAction = this.props.onAction\n }\n\n // Update event throttle function\n if (prevProps.eventsThrottle !== this.props.eventsThrottle) {\n this._unbindEvents()\n this.handleEvent = throttled(this._handleEvent.bind(this), this.props.eventsThrottle)\n this._bindEvents()\n }\n // Update timeout value\n if (prevProps.timeout !== this.props.timeout) {\n if (this.state.idle) this.reset()\n }\n\n // Update callback refs\n if (prevProps.onActive !== this.props.onActive) this.callbackRefs.onActive = this.props.onActive\n if (prevProps.onIdle !== this.props.onIdle) this.callbackRefs.onIdle = this.props.onIdle\n }\n\n /**\n * Called before the component un-mounts\n * here we clear the timer and remove\n * all the event listeners\n * @private\n */\n componentWillUnmount () {\n // Clear timeout to prevent delayed state changes\n clearTimeout(this.tId)\n this._unbindEvents(true)\n // Cancel any debounced onAction handlers\n if (this._onAction.cancel) this._onAction.cancel()\n /* istanbul ignore next */\n if (this.manager) {\n this.manager.close().catch(console.error)\n }\n }\n\n /**\n * Render children if IdleTimer is used as a wrapper\n * @return {Component} children\n * @private\n */\n render () {\n const { children } = this.props\n return children || null\n }\n\n /**\n * Setup the Tab Manager.\n * @private\n */\n _setupTabManager () {\n const { crossTab, onIdle, onActive } = this.props\n this.callbackRefs = { onIdle, onActive }\n\n /* istanbul ignore next */\n if (crossTab) {\n const {\n type,\n channelName,\n fallbackInterval,\n responseTime,\n emitOnAllTabs\n } = Object.assign({\n channelName: 'idle-timer',\n fallbackInterval: 2000,\n responseTime: 100,\n removeTimeout: 1000 * 60,\n emitOnAllTabs: false\n }, crossTab === true ? {} : crossTab)\n\n this.manager = TabManager({\n type,\n channelName,\n fallbackInterval,\n responseTime,\n emitOnAllTabs,\n callbacks: this.callbackRefs,\n start: this.start,\n reset: this.reset,\n pause: this.pause,\n resume: this.resume\n })\n }\n }\n\n /**\n * Binds the specified events\n * @private\n */\n _bindEvents () {\n // Don't bind events if\n // we are not in a browser\n if (!IS_BROWSER) return\n // Otherwise we bind all the events\n // to the supplied element\n const { element, events, passive, capture } = this.props\n if (!this.eventsBound) {\n events.forEach(e => {\n element.addEventListener(e, this.handleEvent, {\n capture,\n passive\n })\n })\n this.eventsBound = true\n }\n }\n\n /**\n * Unbinds all the bound events\n * @private\n */\n _unbindEvents (force = false) {\n // If we are not in a browser\n // we don't need to unbind events\n if (!IS_BROWSER) return\n // Unbind all events\n const { element, events, passive, capture } = this.props\n if (this.eventsBound || force) {\n events.forEach(e => {\n element.removeEventListener(e, this.handleEvent, {\n capture,\n passive\n })\n })\n this.eventsBound = false\n }\n }\n\n /**\n * Toggles the idle state and calls\n * the correct action function\n * @private\n */\n _toggleIdleState (e) {\n // Fire the appropriate action\n // and pass the event through\n // Toggle the idle state\n this.setState((prevState) => ({\n idle: !prevState.idle,\n lastIdle: !prevState.idle ? (+new Date()) - this.props.timeout : prevState.lastIdle,\n idleTime: prevState.idle ? prevState.idleTime + (+new Date()) - prevState.lastIdle : prevState.idleTime\n }), () => {\n const { onActive, onIdle, stopOnIdle } = this.props\n const { idle } = this.state\n if (idle) {\n if (stopOnIdle) {\n // Clear any existing timeout\n clearTimeout(this.tId)\n this.tId = null\n // Unbind events\n this._unbindEvents()\n }\n\n if (this.manager) {\n /* istanbul ignore next */\n this.manager.idle()\n } else {\n onIdle(e)\n }\n } else {\n this._bindEvents()\n if (this.manager) {\n /* istanbul ignore next */\n this.manager.active()\n } else {\n onActive(e)\n }\n }\n })\n }\n\n /**\n * Event handler for supported event types\n * @param {Object} e event object\n * @private\n */\n _handleEvent (e) {\n const { remaining, pageX, pageY, idle } = this.state\n const { timeout, stopOnIdle } = this.props\n\n // Fire onAction event\n this._onAction(e)\n\n // Already active, ignore events\n if (remaining) return\n\n // Mousemove event\n if (e.type === 'mousemove') {\n // If coords are same, it didn't move\n /* istanbul ignore next */\n if (e.pageX === pageX && e.pageY === pageY) {\n return\n }\n // If coords don't exist how could it move\n if (typeof e.pageX === 'undefined' && typeof e.pageY === 'undefined') {\n return\n }\n // Under 200 ms is hard to do\n // continuous activity will bypass this\n /* istanbul ignore next */\n const elapsed = this.getElapsedTime()\n /* istanbul ignore next */\n if (elapsed < 200) {\n return\n }\n }\n\n // Clear any existing timeout\n clearTimeout(this.tId)\n this.tId = null\n\n // Determine last time User was active, as can't rely on setTimeout ticking at the correct interval\n const elapsedTimeSinceLastActive = +new Date() - this.getLastActiveTime()\n\n // If the user is idle or last active time is more than timeout, flip the idle state\n if ((idle && !stopOnIdle) || (!idle && elapsedTimeSinceLastActive > timeout)) {\n this._toggleIdleState(e)\n }\n\n // Store when the user was last active\n // and update the mouse coordinates\n this.setState({\n lastActive: +new Date(),\n pageX: e.pageX,\n pageY: e.pageY\n })\n\n // If the user is idle and stopOnIdle flag is not set\n // set a new timeout\n if (idle) {\n if (!stopOnIdle) {\n this.tId = setTimeout(this._toggleIdleState, timeout)\n }\n } else {\n this.tId = setTimeout(this._toggleIdleState, timeout)\n }\n }\n\n /**\n * Set initial state and start timer\n * @name start\n */\n start (remote = true) {\n // Clear timeout\n clearTimeout(this.tId)\n this.tId = null\n\n // Bind the events\n this._bindEvents()\n\n // Reset state\n this.setState({\n idle: false,\n oldDate: +new Date(),\n lastActive: +new Date(),\n remaining: null\n })\n\n if (this.manager) {\n /* istanbul ignore next */\n this.manager.setAllIdle(false)\n /* istanbul ignore next */\n if (!remote && this.props.crossTab.emitOnAllTabs) {\n this.manager.send('start')\n }\n }\n\n // Set new timeout\n const { timeout } = this.props\n this.tId = setTimeout(this._toggleIdleState, timeout)\n }\n\n /**\n * Restore initial state and restart timer, calling onActive\n * @name reset\n */\n reset (remote = false) {\n // Clear timeout\n clearTimeout(this.tId)\n this.tId = null\n\n // Bind the events\n this._bindEvents()\n\n if (this.state.idle) {\n if (this.manager) {\n /* istanbul ignore next */\n this.manager.active()\n } else {\n this.props.onActive()\n }\n }\n\n if (this.manager) {\n /* istanbul ignore next */\n this.manager.setAllIdle(false)\n /* istanbul ignore next */\n if (!remote && this.props.crossTab.emitOnAllTabs) {\n this.manager.send('reset')\n }\n }\n\n // Reset state\n this.setState({\n idle: false,\n oldDate: +new Date(),\n lastActive: +new Date(),\n remaining: null\n })\n\n // Set new timeout\n const { timeout } = this.props\n this.tId = setTimeout(this._toggleIdleState, timeout)\n }\n\n /**\n * Store remaining time and stop timer\n * @name pause\n */\n pause (remote = false) {\n // Timer is already paused\n const { remaining } = this.state\n if (remaining !== null) return\n\n // Unbind events\n this._unbindEvents()\n\n // Clear existing timeout\n clearTimeout(this.tId)\n this.tId = null\n\n // Send event to other tabs\n if (this.manager) {\n /* istanbul ignore next */\n if (!remote && this.props.crossTab.emitOnAllTabs) {\n this.manager.send('pause')\n }\n }\n\n // Define how much is left on the timer\n this.setState({\n remaining: this.getRemainingTime()\n })\n }\n\n /**\n * Resumes a paused timer\n * @name resume\n */\n resume (remote = false) {\n // Timer is not paused\n const { remaining, idle } = this.state\n if (remaining === null) return\n\n // Bind events\n this._bindEvents()\n\n // Send event to other tabs\n if (this.manager) {\n /* istanbul ignore next */\n if (!remote && this.props.crossTab.emitOnAllTabs) {\n this.manager.send('resume')\n }\n }\n\n // Start timer and clear remaining\n // if we are in the active state\n if (!idle) {\n // Set a new timeout\n this.tId = setTimeout(this._toggleIdleState, remaining)\n // Set new state\n this.setState({ remaining: null, lastActive: +new Date() })\n }\n }\n\n /**\n * Time remaining before idle\n * @name getRemainingTime\n * @return {number} Milliseconds remaining\n */\n getRemainingTime () {\n const { remaining, lastActive } = this.state\n const { timeout } = this.props\n\n // If idle there is no time remaining\n if (remaining !== null) {\n return remaining < 0 ? 0 : remaining\n }\n\n // Determine remaining, if negative idle didn't finish flipping, just return 0\n const timeLeft = timeout - ((+new Date()) - lastActive)\n return timeLeft < 0 ? 0 : timeLeft\n }\n\n /**\n * How much time has elapsed\n * @name getElapsedTime\n * @return {Timestamp}\n */\n getElapsedTime () {\n const { oldDate } = this.state\n return (+new Date()) - oldDate\n }\n\n /**\n * Last time the user was idle\n * @name getLastIdleTime\n * @return {Timestamp}\n */\n getLastIdleTime () {\n const { lastIdle } = this.state\n return lastIdle\n }\n\n /**\n * Total time the user was idle\n * @name getTotalIdleTime\n * @return {number}\n */\n getTotalIdleTime () {\n const { idle, lastIdle, idleTime } = this.state\n if (idle) {\n return ((+new Date()) - lastIdle) + idleTime\n } else {\n return idleTime\n }\n }\n\n /**\n * Last time the user was active\n * @name getLastActiveTime\n * @return {Timestamp}\n */\n getLastActiveTime () {\n const { lastActive } = this.state\n return lastActive\n }\n\n /**\n * Total time the user was active\n * @name getTotalActiveTime\n * @return {number}\n */\n getTotalActiveTime () {\n return this.getElapsedTime() - this.getTotalIdleTime()\n }\n\n /**\n * Returns wether or not the user is idle\n * @name isIdle\n * @return {boolean}\n */\n isIdle () {\n const { idle } = this.state\n return idle\n }\n\n /**\n * Returns wether or not this is the leader tab\n * @name isLeader\n * @return {boolean}\n */\n isLeader () {\n return this.manager ? this.manager.isLeader() : true\n }\n}\n\n/**\n * Type checks for every property\n * @type {Object}\n * @private\n */\nIdleTimer.propTypes = {\n /**\n * Activity Timeout in milliseconds\n * default: 1200000\n * @type {Number}\n */\n timeout: PropTypes.number,\n /**\n * DOM events to listen to\n * default: see [default events](https://github.com/SupremeTechnopriest/react-idle-timer#default-events)\n * @type {Array}\n */\n events: PropTypes.arrayOf(PropTypes.string),\n /**\n * Function to call when user is idle\n * default: () => {}\n * @type {Function}\n */\n onIdle: PropTypes.func,\n /**\n * Function to call when user becomes active\n * default: () => {}\n * @type {Function}\n */\n onActive: PropTypes.func,\n /**\n * Function to call on user actions\n * default: () => {}\n * @type {Function}\n */\n onAction: PropTypes.func,\n /**\n * Debounce the onAction function by setting delay in milliseconds\n * default: 0\n * @type {Number}\n */\n debounce: PropTypes.number,\n /**\n * Throttle the onAction function by setting delay in milliseconds\n * default: 0\n * @type {Number}\n */\n throttle: PropTypes.number,\n /**\n * Throttle the event handler function by setting delay in milliseconds\n * default: 200\n * @type {Number}\n */\n eventsThrottle: PropTypes.number,\n /**\n * Element reference to bind activity listeners to\n * default: document\n * @type {Object}\n */\n element: PropTypes.oneOfType([PropTypes.object, PropTypes.element]),\n /**\n * Start the timer on mount\n * default: true\n * @type {Boolean}\n */\n startOnMount: PropTypes.bool,\n /**\n * Require the timer to be started manually.\n * default: false\n * @type {Boolean}\n */\n startManually: PropTypes.bool,\n /**\n * Once the user goes idle the IdleTimer will not\n * reset on user input instead, reset() must be\n * called manually to restart the timer\n * default: false\n * @type {Boolean}\n */\n stopOnIdle: PropTypes.bool,\n /**\n * Bind events passively\n * default: true\n * @type {Boolean}\n */\n passive: PropTypes.bool,\n /**\n * Capture events\n * default: true\n * @type {Boolean}\n */\n capture: PropTypes.bool,\n /**\n * Cross Tab functionality.\n * default: false\n * @type {Boolean|Object}\n */\n crossTab: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n type: PropTypes.oneOf(['broadcastChannel', 'localStorage', 'simulate']),\n channelName: PropTypes.string,\n fallbackInterval: PropTypes.number,\n responseTime: PropTypes.number,\n removeTimeout: PropTypes.number,\n emitOnAllTabs: PropTypes.bool\n })\n ])\n}\n\n/**\n * Sets default property values\n * @type {Object}\n * @private\n */\nIdleTimer.defaultProps = {\n timeout: 1000 * 60 * 20,\n element: DEFAULT_ELEMENT,\n events: DEFAULT_EVENTS,\n onIdle: () => { },\n onActive: () => { },\n onAction: () => { },\n debounce: 0,\n throttle: 0,\n eventsThrottle: 200,\n startOnMount: true,\n startManually: false,\n stopOnIdle: false,\n capture: true,\n passive: true,\n crossTab: false\n}\n\nexport default IdleTimer\n","/**\n * ___ _ _ _____ _\n * |_ _|__| | | __|_ _(_)_ __ ___ ___ _ __\n * | |/ _` | |/ _ \\| | | | '_ ` _ \\ / _ \\ '__|\n * | | (_| | | __/| | | | | | | | | __/ |\n * |___\\__,_|_|\\___||_| |_|_| |_| |_|\\___|_|\n *\n * @name useIdleTimer\n * @author Randy Lebeau\n * @private\n */\n\nimport { useEffect, useRef, useMemo } from 'react'\nimport PropTypes from 'prop-types'\nimport { TabManager } from './TabManager'\nimport { IS_BROWSER, DEFAULT_ELEMENT, DEFAULT_EVENTS, debounced, throttled } from './utils'\n\n/**\n * Detects when your user is idle\n * @function useIdleTimer\n * @private\n */\nfunction useIdleTimer ({\n timeout = 1000 * 60 * 20,\n element = DEFAULT_ELEMENT,\n events = DEFAULT_EVENTS,\n onIdle = () => { },\n onActive = () => { },\n onAction = () => { },\n debounce = 0,\n throttle = 0,\n eventsThrottle = 200,\n startOnMount = true,\n startManually = false,\n stopOnIdle = false,\n capture = true,\n passive = true,\n crossTab = false\n} = {}) {\n const eventsBound = useRef(false)\n const idle = useRef(true)\n const oldDate = useRef(+new Date())\n const remaining = useRef(null)\n const pageX = useRef(null)\n const pageY = useRef(null)\n const tId = useRef(null)\n const lastActive = useRef(null)\n const lastIdle = useRef(null)\n const idleTime = useRef(0)\n const firstLoad = useRef(true)\n const _timeout = useRef(timeout)\n const manager = useRef(null)\n\n /* istanbul ignore next */\n if (crossTab) {\n if (crossTab === true) crossTab = {}\n crossTab = Object.assign({\n channelName: 'idle-timer',\n fallbackInterval: 2000,\n responseTime: 100,\n removeTimeout: 1000 * 60,\n emitOnAllTabs: false\n }, crossTab)\n }\n\n // Event emitters\n const emitOnIdle = useRef(onIdle)\n const emitOnActive = useRef(onActive)\n const emitOnAction = useRef(onAction)\n\n useEffect(() => {\n emitOnIdle.current = onIdle\n }, [onIdle])\n\n useEffect(() => {\n emitOnActive.current = onActive\n }, [onActive])\n\n useEffect(() => {\n emitOnAction.current = onAction\n }, [onAction])\n\n const intermediateOnAction = useMemo(() => {\n function callOnAction (e) {\n emitOnAction.current(e)\n }\n\n // Cancel any existing debounce timeouts\n if (callOnAction.cancel) callOnAction.cancel()\n\n // Create debounced action if applicable\n if (debounce > 0) {\n return debounced(callOnAction, debounce)\n\n // Create throttled action if applicable\n } else if (throttle > 0) {\n return throttled(callOnAction, throttle)\n\n // No throttle or debounce\n } else {\n return callOnAction\n }\n }, [throttle, debounce])\n\n /**\n * Toggles the idle state and calls\n * the correct action function\n * @private\n */\n const _toggleIdleState = e => {\n const nextIdle = !idle.current\n idle.current = nextIdle\n if (nextIdle) {\n if (stopOnIdle) {\n // Clear any existing timeout\n clearTimeout(tId.current)\n tId.current = null\n // Unbind events\n _unbindEvents()\n }\n lastIdle.current = (+new Date()) - _timeout.current\n if (manager.current) {\n /* istanbul ignore next */\n manager.current.idle()\n } else {\n emitOnIdle.current(e)\n }\n } else {\n idleTime.current += (+new Date()) - lastIdle.current\n _bindEvents()\n if (manager.current) {\n /* istanbul ignore next */\n manager.current.active()\n } else {\n emitOnActive.current(e)\n }\n }\n }\n\n /**\n * Event handler\n * @param {Event} e\n */\n const _handleEvent = e => {\n // Fire onAction event\n intermediateOnAction(e)\n\n // Already active, ignore events\n if (remaining.current) return\n\n // Mousemove event\n /* istanbul ignore next */\n if (e.type === 'mousemove') {\n // If coords are same, it didn't move\n if (e.pageX === pageX && e.pageY === pageY) {\n return\n }\n // If coords don't exist how could it move\n if (typeof e.pageX === 'undefined' && typeof e.pageY === 'undefined') {\n return\n }\n // Under 200 ms is hard to do\n // continuous activity will bypass this\n const elapsed = getElapsedTime()\n if (elapsed < 200) {\n return\n }\n }\n\n // Clear any existing timeout\n clearTimeout(tId.current)\n tId.current = null\n\n // Determine last time User was active, as can't rely on setTimeout ticking at the correct interval\n const elapsedTimeSinceLastActive = +new Date() - getLastActiveTime()\n\n // If the user is idle or last active time is more than timeout, flip the idle state\n if (\n (idle.current && !stopOnIdle) ||\n (!idle.current && elapsedTimeSinceLastActive > _timeout.current)\n ) {\n _toggleIdleState(e)\n }\n\n // Store when the user was last active\n // and update the mouse coordinates\n lastActive.current = +new Date()\n pageX.current = e.pageX\n pageY.current = e.pageY\n\n // If the user is active, set a new timeout\n if (!idle.current) {\n tId.current = setTimeout(_toggleIdleState, _timeout.current)\n }\n }\n\n /**\n * Reference to current handleEvent function.\n * @private\n */\n const handleEvent = useRef(_handleEvent)\n\n /**\n * Binds the specified events\n * @private\n */\n const _bindEvents = () => {\n // Don't bind events if\n // we are not in a browser\n if (!IS_BROWSER) return\n // Otherwise we bind all the events\n // to the supplied element\n if (!eventsBound.current) {\n events.forEach(e => {\n element.addEventListener(e, handleEvent.current, {\n capture,\n passive\n })\n })\n eventsBound.current = true\n }\n }\n\n /**\n * Unbinds all the bound events\n * @private\n */\n const _unbindEvents = (force = false) => {\n // If we are not in a browser\n // we don't need to unbind events\n if (!IS_BROWSER) return\n // Unbind all events\n if (eventsBound.current || force) {\n events.forEach(e => {\n element.removeEventListener(e, handleEvent.current, {\n capture,\n passive\n })\n })\n eventsBound.current = false\n }\n }\n\n /**\n * Time remaining before idle\n * @name getRemainingTime\n * @return {number} Milliseconds remaining\n */\n const getRemainingTime = () => {\n // If idle there is no time remaining\n if (remaining.current !== null) {\n return remaining.current < 0 ? 0 : remaining.current\n }\n\n // Determine remaining, if negative idle didn't finish flipping, just return 0\n const timeLeft = _timeout.current - ((+new Date()) - lastActive.current)\n return timeLeft < 0 ? 0 : timeLeft\n }\n\n /**\n * How much time has elapsed\n * @name getElapsedTime\n * @return {Timestamp}\n */\n const getElapsedTime = () => (+new Date()) - oldDate.current\n\n /**\n * Last time the user was idle\n * @name getLastIdleTime\n * @return {Timestamp}\n */\n const getLastIdleTime = () => lastIdle.current\n\n /**\n * Get the total time user is idle\n * @name getTotalIdleTime\n * @return {number} Milliseconds idle\n */\n const getTotalIdleTime = () => {\n if (idle.current) {\n return ((+new Date()) - lastIdle.current) + idleTime.current\n } else {\n return idleTime.current\n }\n }\n\n /**\n * Last time the user was active\n * @name getLastActiveTime\n * @return {Timestamp}\n */\n const getLastActiveTime = () => lastActive.current\n\n /**\n * Get the total time user is active\n * @name getTotalActiveTime\n * @return {number} Milliseconds active\n */\n const getTotalActiveTime = () => getElapsedTime() - getTotalIdleTime()\n\n /**\n * Returns wether or not the user is idle\n * @name isIdle\n * @return {Boolean}\n */\n const isIdle = () => idle.current\n\n /**\n * Returns wether or not this is the leader tab\n * @returns {Boolean}\n */\n const isLeader = () => manager.current ? manager.current.isLeader() : true\n\n /**\n * Set initial state and start timer\n * @name reset\n */\n const start = (remote = false) => {\n // Clear timeout\n clearTimeout(tId.current)\n tId.current = null\n\n // Bind the events\n _bindEvents()\n\n // Set state\n idle.current = false\n oldDate.current = +new Date()\n lastActive.current = +new Date()\n remaining.current = null\n\n if (manager.current) {\n /* istanbul ignore next */\n manager.current.setAllIdle(false)\n /* istanbul ignore next */\n if (!remote && crossTab.emitOnAllTabs) {\n manager.current.send('start')\n }\n }\n\n // Set new timeout\n tId.current = setTimeout(_toggleIdleState, _timeout.current)\n }\n\n /**\n * Restore initial state and restart timer, calling onActive\n * @name reset\n */\n const reset = (remote = false) => {\n // Clear timeout\n clearTimeout(tId.current)\n tId.current = null\n\n // Bind the events\n _bindEvents()\n\n // Emit active\n if (idle.current) {\n if (manager.current) {\n /* istanbul ignore next */\n manager.current.active()\n } else {\n emitOnActive.current()\n }\n }\n\n // Reset state\n idle.current = false\n oldDate.current = +new Date()\n lastActive.current = +new Date()\n remaining.current = null\n\n if (manager.current) {\n /* istanbul ignore next */\n manager.current.setAllIdle(false)\n /* istanbul ignore next */\n if (!remote && crossTab.emitOnAllTabs) {\n manager.current.send('reset')\n }\n }\n\n // Set new timeout\n tId.current = setTimeout(_toggleIdleState, _timeout.current)\n }\n\n /**\n * Store remaining time and stop timer\n * @name pause\n */\n const pause = (remote = false) => {\n // Timer is already paused\n if (remaining.current !== null) return\n\n // Unbind events\n _unbindEvents()\n\n // Clear existing timeout\n clearTimeout(tId.current)\n tId.current = null\n\n // Define how much is left on the timer\n remaining.current = getRemainingTime()\n\n if (manager.current) {\n /* istanbul ignore next */\n if (!remote && crossTab.emitOnAllTabs) {\n manager.current.send('pause')\n }\n }\n }\n\n /**\n * Resumes a paused timer\n * @name resume\n */\n const resume = (remote = false) => {\n // Timer is not paused\n if (remaining.current === null) return\n\n // Bind events\n _bindEvents()\n\n // Start timer and clear remaining\n // if we are in the idle state\n if (!idle.current) {\n // Set a new timeout\n tId.current = setTimeout(_toggleIdleState, remaining.current)\n // Set states\n remaining.current = null\n lastActive.current = +new Date()\n }\n\n if (manager.current) {\n /* istanbul ignore next */\n if (!remote && crossTab.emitOnAllTabs) {\n manager.current.send('resume')\n }\n }\n }\n\n /**\n * Hook lifecycle\n */\n useEffect(() => {\n // Debounce and throttle can't both be set\n if (debounce > 0 && throttle > 0) {\n throw new Error('onAction can either be throttled or debounced (not both)')\n }\n\n // Set up cross tab\n /* istanbul ignore next */\n if (crossTab) {\n manager.current = TabManager({\n type: crossTab.type,\n channelName: crossTab.channelName,\n fallbackInterval: crossTab.fallbackInterval,\n responseTime: crossTab.responseTime,\n emitOnAllTabs: crossTab.emitOnAllTabs,\n callbacks: {\n onIdle: emitOnIdle.current,\n onActive: emitOnActive.current\n },\n start,\n reset,\n pause,\n resume\n })\n }\n\n // If startOnMount is enabled, start the timer\n if (startManually) {\n return async () => {\n clearTimeout(tId.current)\n _unbindEvents(true)\n if (crossTab) await manager.current.close()\n }\n }\n\n if (startOnMount) {\n start()\n } else {\n _bindEvents()\n }\n\n // Clear and unbind on unmount\n return async () => {\n clearTimeout(tId.current)\n _unbindEvents(true)\n if (intermediateOnAction.cancel) intermediateOnAction.cancel()\n if (crossTab) await manager.current.close()\n }\n }, [])\n\n useEffect(() => {\n const eventsWereBound = eventsBound.current\n if (eventsWereBound) _unbindEvents()\n if (eventsThrottle > 0) {\n handleEvent.current = throttled(_handleEvent, eventsThrottle)\n } else {\n handleEvent.current = _handleEvent\n }\n if (eventsWereBound) _bindEvents()\n }, [eventsThrottle])\n\n useEffect(() => {\n _timeout.current = timeout\n if (!firstLoad.current && idle.current) {\n reset()\n }\n firstLoad.current = false\n }, [timeout])\n\n return {\n isIdle,\n isLeader,\n start,\n pause,\n reset,\n resume,\n getLastIdleTime,\n getTotalIdleTime,\n getLastActiveTime,\n getTotalActiveTime,\n getElapsedTime,\n getRemainingTime\n }\n}\n\n/**\n * Type checks for every property\n * @type {Object}\n * @private\n */\nuseIdleTimer.propTypes = {\n /**\n * Activity Timeout in milliseconds\n * default: 1200000\n * @type {number}\n */\n timeout: PropTypes.number,\n /**\n * DOM events to listen to\n * default: see [default events](https://github.com/SupremeTechnopriest/react-idle-timer#default-events)\n * @type {Array}\n */\n events: PropTypes.arrayOf(PropTypes.string),\n /**\n * Function to call when user is idle.\n * default: () => {}\n * @type {Function}\n */\n onIdle: PropTypes.func,\n /**\n * Function to call when user becomes active.\n * default: () => {}\n * @type {Function}\n */\n onActive: PropTypes.func,\n /**\n * Function to call on user actions.\n * default: () => {}\n * @type {Function}\n */\n onAction: PropTypes.func,\n /**\n * Debounce the onAction function by setting delay in milliseconds.\n * default: 0\n * @type {number}\n */\n debounce: PropTypes.number,\n /**\n * Throttle the onAction function by setting delay in milliseconds.\n * default: 0\n * @type {number}\n */\n throttle: PropTypes.number,\n /**\n * Throttle the event handler function by setting delay in milliseconds.\n * default: 200\n * @type {number}\n */\n eventsThrottle: PropTypes.number,\n /**\n * Element reference to bind activity listeners to.\n * default: document\n * @type {Object}\n */\n element: PropTypes.oneOfType([PropTypes.object, PropTypes.element]),\n /**\n * Start the timer on mount.\n * default: true\n * @type {Boolean}\n */\n startOnMount: PropTypes.bool,\n /**\n * Require the timer to be started manually.\n * default: false\n * @type {Boolean}\n */\n startManually: PropTypes.bool,\n /**\n * Once the user goes idle the IdleTimer will not\n * reset on user input instead, start() or reset() must be\n * called manually to restart the timer.\n * default: false\n * @type {Boolean}\n */\n stopOnIdle: PropTypes.bool,\n /**\n * Bind events passively.\n * default: true\n * @type {Boolean}\n */\n passive: PropTypes.bool,\n /**\n * Capture events.\n * default: true\n * @type {Boolean}\n */\n capture: PropTypes.bool,\n /**\n * Cross Tab functionality.\n * default: false\n * @type {Boolean|Object}\n */\n crossTab: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n type: PropTypes.oneOf(['broadcastChannel', 'localStorage', 'simulate']),\n channelName: PropTypes.string,\n fallbackInterval: PropTypes.number,\n responseTime: PropTypes.number,\n removeTimeout: PropTypes.number,\n emitOnAllTabs: PropTypes.bool\n })\n ])\n}\n\n/**\n * Sets default property values\n * @type {Object}\n * @private\n */\nuseIdleTimer.defaultProps = {\n timeout: 1000 * 60 * 20,\n element: DEFAULT_ELEMENT,\n events: DEFAULT_EVENTS,\n onIdle: () => { },\n onActive: () => { },\n onAction: () => { },\n debounce: 0,\n throttle: 0,\n eventsThrottle: 200,\n startOnMount: true,\n startManually: false,\n stopOnIdle: false,\n capture: true,\n passive: true,\n crossTab: false\n}\n\nexport default useIdleTimer\n","import React, { useRef, useState } from \"react\";\r\nimport IdleTimer, { useIdleTimer } from \"react-idle-timer\";\r\nimport { showAlert } from \"./ConfirmPopup\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { resetSession } from \"../utilities/sessionHelpers\";\r\nimport ErrorPage from \"../components/CustomerPortal/ErrorPage/ErrorPage\";\r\n\r\nfunction InactivityTimer() {\r\n const history = useHistory();\r\n const idleTimerRef = useRef();\r\n const [isTimedOut, setIsTimedOut] = useState(false);\r\n const [redirectToLogin, setRedirectToLogin] = useState(false);\r\n \r\n const handleOnIdle = event => {\r\n if (window.location.pathname.indexOf(\"/ui/ErrorPage\") === -1 && window.location.pathname !== \"/ui/\" &&\r\n window.location.pathname.toLowerCase().indexOf(\"login\") === -1) {\r\n if (!isTimedOut) {\r\n resetSession();\r\n history.push(\"/ErrorPage\");\r\n setIsTimedOut(true);\r\n }\r\n }\r\n }\r\n\r\n const handleAction = () => {\r\n if (window.location.pathname.indexOf(\"/ui/ErrorPage\") === -1 && window.location.pathname !== \"/ui/\" &&\r\n window.location.pathname.toLowerCase().indexOf(\"login\") === -1) {\r\n idleTimerRef.current.reset();\r\n setIsTimedOut(false);\r\n }\r\n }\r\n\r\n return (\r\n \r\n )\r\n}\r\n\r\nexport default InactivityTimer;","import React, { Suspense, useLayoutEffect, useEffect } from \"react\";\r\nimport { BrowserRouter, Switch, Route } from \"react-router-dom\";\r\nimport ErrorBoundary from \"./shared/ErrorBoundary\";\r\nimport routes from \"./cpRoutes\";\r\n\r\n// import \"./components/CustomerPortal/css/bootstrap.min.css\";\r\nimport \"./components/CustomerPortal/css/custom.scss\";\r\nimport \"./components/CustomerPortal/css/login.scss\";\r\nimport \"./components/CustomerPortal/css/site.css\";\r\n// import \"./components/CustomerPortal/css/bootstrap.css\";\r\nimport \"./components/CustomerPortal/css/Customer.scss\";\r\nimport \"./components/CustomerPortal/css/ApiUsers.scss\";\r\nimport InactivityTimer from \"./shared/InactivityTimer\";\r\n\r\nfunction CPApp() {\r\n return (\r\n \r\n }>\r\n \r\n \r\n {routes.map((route, index) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\nexport default CPApp;\r\n","import React, { useState, useCallback } from \"react\";\r\nimport { useOnClickOutside } from \"../hooks\";\r\nimport infoIcon from \"../images/icon-info.png\";\r\n\r\nfunction InfoPopUp(props) {\r\n const { message, styles } = props;\r\n const [isSelected, setIsSelected] = useState(false);\r\n\r\n const handleClick = function () {\r\n setIsSelected(!isSelected);\r\n };\r\n\r\n // close the div on click anywhere outside\r\n const listener = useCallback((event) => {\r\n setIsSelected(false);\r\n }, []);\r\n const divRef = useOnClickOutside(listener);\r\n\r\n return (\r\n <>\r\n
\r\n {message!==\"\" && }\r\n {isSelected ? (\r\n {\r\n event.stopPropagation();\r\n }}\r\n >\r\n
error info
\r\n
\r\n \r\n
\r\n
\r\n ) : (\r\n <>\r\n )}\r\n \r\n \r\n );\r\n}\r\nexport default InfoPopUp;\r\n","import React, { useState, useCallback, useEffect } from \"react\";\r\nimport { format } from \"date-fns\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { CustomerLoginURL } from \"../../../services/cpServices/cpServices\";\r\nimport InfoPopUp from \"../../../shared/InfoPopUp\"\r\nimport queryString from \"query-string\";\r\nimport { resetSession } from \"../../../utilities/sessionHelpers\";\r\n\r\nfunction ErrorPage(props) {\r\n let errorInfo = \"\"\r\n let isSessionTimeOut = true;\r\n const queryValues = queryString.parse(props.location.search.toLowerCase());\r\n if (queryValues[\"issessiontimeout\"] !== undefined) {\r\n isSessionTimeOut = false;\r\n }\r\n if (queryValues[\"errorinfo\"]) {\r\n errorInfo= queryValues[\"errorinfo\"];\r\n }\r\n const [isSessionExpired, setIsSessionExpired] = useState(isSessionTimeOut);\r\n const history = useHistory();\r\n\r\n useEffect(() => {\r\n resetSession();\r\n }, [])\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
Oops!
\r\n {isSessionExpired &&

Your session has expired.

}\r\n {!isSessionExpired && \r\n
\r\n
\r\n An error has occured while processing your request and the same has been raised with the support team.\r\n \r\n
\r\n
\r\n }\r\n
    \r\n
  • Please provide the navigation information (so we can get to the correct page and can replicate the exact issue) and any other details you feel are necessary.
  • \r\n
  • You can try to reset your session by loggin out and then logging back in.
  • \r\n
  • For conection or timeout issues, try a trace route from your computer to the server. Please provide trace route details in the ticket. For information on how to use the trace route function click here for PCs and here for Macs.
  • \r\n
  • You may want to check the help manual for this page to see if there is any information, videos or tips that may solve the issue.
  • \r\n
\r\n
\r\n
\r\n Thank You,\r\n
\r\n Mirabel Technologies Support Team\r\n
\r\n
\r\n
\r\n
{ history.push(CustomerLoginURL); }} style={{ height: \"auto\", padding: \"10px 24px\"}}>\r\n Click here to login again\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n )\r\n}\r\n\r\nexport default ErrorPage;","import { useState, useEffect, useRef } from \"react\";\r\n\r\nexport function useWindowResize() {\r\n function getSize() {\r\n return {\r\n width: window.innerWidth,\r\n height: window.innerHeight\r\n };\r\n }\r\n\r\n const [windowSize, setWindowSize] = useState(getSize);\r\n\r\n useEffect(() => {\r\n function handleResize() {\r\n setWindowSize(getSize());\r\n }\r\n\r\n window.addEventListener(\"resize\", handleResize);\r\n return () => window.removeEventListener(\"resize\", handleResize);\r\n }, []);\r\n\r\n return windowSize;\r\n}\r\n\r\nexport function useOnClickOutside(handler) {\r\n const ref = useRef(null);\r\n\r\n useEffect(() => {\r\n const listener = event => {\r\n // Do nothing if clicking ref's element or descendent elements\r\n if (!ref.current || ref.current.contains(event.target)) {\r\n return;\r\n }\r\n\r\n handler(event);\r\n };\r\n\r\n document.addEventListener(\"mousedown\", listener);\r\n document.addEventListener(\"touchstart\", listener);\r\n\r\n return () => {\r\n document.removeEventListener(\"mousedown\", listener);\r\n document.removeEventListener(\"touchstart\", listener);\r\n };\r\n }, [handler]);\r\n\r\n return ref;\r\n}\r\n\r\nexport function usePageTitle(title) {\r\n \r\n useEffect(() => {\r\n document.querySelector(\"title\").innerText = title;\r\n }, []);\r\n\r\n}\r\n\r\nexport function useToggleClick() {\r\n const [active, setActive] = useState(false)\r\n\r\n const toggleRef = useRef(null)\r\n\r\n function handleClick(e) {\r\n if (toggleRef && !toggleRef.current.contains(e.target)) {\r\n setActive(false)\r\n }\r\n }\r\n\r\n function toggle() {\r\n setActive(!active)\r\n }\r\n\r\n useEffect(() => {\r\n if (active) {\r\n document.addEventListener('mousedown', handleClick)\r\n }\r\n else\r\n document.removeEventListener('mousedown', handleClick)\r\n return () => {\r\n document.removeEventListener('mousedown', handleClick)\r\n }\r\n }, [active])\r\n\r\n return { toggleRef, active, toggle, setActive }\r\n}","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n"],"names":["Login","lazy","CpLogin","Customer","ErrorPage","Dummy1","AddorEditUser","CustomerPortalApproval","path","component","description","IS_BROWSER","window","p","DEFAULT_ELEMENT","document","DEFAULT_EVENTS","debounced","fn","delay","timerId","result","args","clearTimeout","setTimeout","cancel","throttled","lastCall","now","Date","getTime","lastMs","additional","microSeconds","ms","randomToken","Math","random","toString","substring","sleep","time","Promise","resolve","create","channelName","state","messagesCallback","bc","BroadcastChannel","onmessage","msg","data","close","channelState","onMessage","postMessage","messageJson","err","reject","canBeUsed","type","averageResponseTime","ObliviousSet","ttl","e","set","Set","timeMap","Map","value","this","has","add","_removeTooOldValues","clear","olderThen","iterator","Symbol","next","get","getLocalStorage","localStorage","addStorageEventListener","key","listener","ev","JSON","parse","newValue","addEventListener","ls","setItem","removeItem","options","Error","uuid","eMIs","removeTimeout","msgObj","token","messagesCallbackTime","removeEventListener","writeObj","stringify","createEvent","initEvent","dispatchEvent","userAgent","navigator","toLowerCase","includes","defaultTime","SIMULATE_CHANNELS","name","Array","from","filter","channel","forEach","METHODS","BroadcastChannelMethod","LocalStorageMethod","chooseMethod","SimulateMethod","method","find","m","useMethod","map","MessageChannel","closed","_isListening","_onMessageListener","_addEventListeners","message","internal","_unSendMessagePromises","_beforeClose","_preparePromises","_prepareChannel","_post","listenObj","_removeListenerObject","_addListenerObject","obj","awaitPrepare","then","all","_this","_state","messageChannel","sendPromise","maybePromise","s","_hasMessageListeners","length","push","listenerFn","_startListening","o","_stopListening","LeaderElection","_channel","_options","isLeader","isDead","_isApplying","_reApply","_unloadFns","_listeners","_intervals","_duplicateListeners","_duplicateCalled","_onBeforeDie","unloadFn","die","stopCriteria","handleMessage","context","_this2","action","_sendMessage","responseTime","leaderElector","isLeaderListener","beLeader","catch","success","applyOnce","_awaitLeadershipPromise","resolved","finish","clearInterval","interval","whenDeathListener","setInterval","fallbackInterval","onBeforeDie","_this3","uFn","n","msgJson","postInternal","TabManager","emitOnAllTabs","callbacks","start","reset","pause","resume","elector","_leaderElector","createLeaderElection","registry","leader","allIdle","awaitLeadership","id","idle","active","onIdle","onActive","isIdle","Object","values","every","v","send","isActive","some","onDuplicate","isAllIdle","setAllIdle","bool","IdleTimer","Component","props","oldDate","lastActive","lastIdle","idleTime","remaining","pageX","pageY","r","tId","eventsBound","callbackRefs","debounce","throttle","_onAction","onAction","eventsThrottle","handleEvent","_handleEvent","bind","startOnMount","startManually","_toggleIdleState","getRemainingTime","getElapsedTime","getLastActiveTime","getLastIdleTime","getTotalIdleTime","getTotalActiveTime","_setupTabManager","_bindEvents","prevProps","_unbindEvents","timeout","manager","console","error","children","crossTab","assign","element","events","passive","capture","force","setState","prevState","_this4","stopOnIdle","elapsedTimeSinceLastActive","remote","timeLeft","useIdleTimer","t","l","y","k","I","L","M","useRef","firstLoad","_timeout","emitOnIdle","emitOnActive","emitOnAction","useEffect","current","intermediateOnAction","useMemo","callOnAction","nextIdle","eventsWereBound","propTypes","PropTypes","defaultProps","history","useHistory","idleTimerRef","useState","isTimedOut","setIsTimedOut","ref","parseInt","process","event","location","pathname","indexOf","resetSession","ErrorBoundary","Suspense","fallback","Switch","routes","route","index","Route","exact","styles","isSelected","setIsSelected","handleClick","useCallback","divRef","useOnClickOutside","style","onClick","href","className","title","src","infoIcon","stopPropagation","errorInfo","isSessionTimeOut","queryValues","queryString","search","undefined","isSessionExpired","marginLeft","marginTop","paddingInlineStart","CustomerLoginURL","height","padding","handler","contains","target","usePageTitle","querySelector","innerText","useToggleClick","setActive","toggleRef","toggle","runtime","module","exports","regeneratorRuntime","accidentalStrictMode","globalThis","Function"],"sourceRoot":""}