{"version":3,"file":"assets/js/chunks/1667.f5fdce2a9425a529aa1b.js","mappings":"yLA2BA,KAAeA,EAAAA,EAAAA,KAnBSC,IAAyB,IAAxB,KAAEC,EAAOC,EAAAA,IAAUF,EAC1C,MAAM,OAAEG,EAAM,SAAEC,IAAaC,EAAAA,EAAAA,MACvBC,GAAgBC,EAAAA,EAAAA,IAAYC,EAAAA,IAElC,IAAKL,EAAQ,OAAOM,EAAAA,cAAAA,EAAAA,SAAA,MAEpB,MAAMC,EAAWN,EAASO,eAAe,CAAEC,YAAc,GAAEC,SAASC,SAASR,MAE7E,OACEG,EAAAA,cAACM,EAAAA,GAAqB,CACpBC,QAAS,CAAEC,KAAMC,EAAAA,IACjBC,UAAQ,EACRlB,KAAMA,EACNmB,MAAM,0BACNC,KAAMX,GACN,G,4HCCN,EAjBoBV,IAAkE,IAAjE,iBAAEsB,EAAgB,qBAAEC,EAAoB,iBAAEC,GAAkBxB,EAC/E,MAAMyB,GAAYlB,EAAAA,EAAAA,IAAYmB,EAAAA,IACxBC,GAAUpB,EAAAA,EAAAA,IAAYqB,EAAAA,IACtBC,EAAuBJ,GAAaE,EAE1C,OACElB,EAAAA,cAAA,OAAKqB,UAAWC,ICZG,QDYgBT,IACjCb,EAAAA,cAAA,OAAKqB,UAAWC,ICbkB,QDaGN,GCbuC,UDc1EhB,EAAAA,cAACuB,EAAAA,EAAO,CAACF,UAAWC,ICdkC,QDcRR,GAAuBU,KAAM,gBAC1EJ,GACCpB,EAAAA,cAAA,OAAKqB,UAAWC,IChB0E,QDgBpDP,GAAmBU,MAAO,CAAEC,gBAAkB,QAAOR,UAG3F,C,uEEAV,IAd0B3B,IAA+B,IAA9B,UAAEoC,EAAY,GAAE,MAAEC,GAAOrC,EAClD,MAAOsC,EAAMC,IAAWC,EAAAA,EAAAA,aACjBC,EAASC,IAAcC,EAAAA,EAAAA,KAS9B,OAPAC,EAAAA,EAAAA,YAAU,KACJP,IACFE,GAAQF,aAAK,EAALA,EAAOQ,OAAQ,SACvBH,GAAW,GACb,GACC,CAACL,IAEG5B,EAAAA,cAACqC,EAAAA,EAAa,CAACC,SAASC,EAAAA,EAAAA,IAAKV,GAAOG,QAASA,GAAW,C,wDCjB1D,MAAMQ,EAAiB,CAC5BC,qBAAsB,uBACtBC,4BAA6B,8BAC7BC,wBAAyB,0BACzBC,cAAe,gB,sKCKV,MAAMC,EAAoBC,GAAaC,IAGxBjD,EAAAA,EAAAA,IAAYmB,EAAAA,IAEXjB,EAAAA,cAAC8C,EAAcC,GAAY,KAIrCC,EAAuBF,GAAaC,IAGxBjD,EAAAA,EAAAA,IAAYmD,EAAAA,IAEXjD,EAAAA,cAAC8C,EAAcC,GAAY,KAGxCzD,EAAgBwD,GAAaC,IAGxBjD,EAAAA,EAAAA,IAAYoD,EAAAA,IAEXlD,EAAAA,cAAC8C,EAAcC,GAAY,KAGjCI,EAAkBL,GAAaC,IAG1BjD,EAAAA,EAAAA,IAAYoD,EAAAA,IAEiB,KAA3BlD,EAAAA,cAAC8C,EAAcC,E,8LC3BnC,MAAMK,EAAIC,IAAM,YAMhB,IAAI1D,EAEG,MAIDC,EAAcA,KAClB,MAAOF,EAAQ4D,IAAavB,EAAAA,EAAAA,UAASwB,QAAQ5D,IA4B7C,OA1BAwC,EAAAA,EAAAA,YAAU,KACJxC,EACF2D,GAAU,IAEV3D,EAAW,IAAI6D,EAAAA,EAAW,CACxBC,KAAKC,EAAAA,EAAAA,IAAWC,EAAAA,EAASC,UAAUH,IACnCI,MAAO,QACPC,SAAU,cAEZnE,EACGoE,KAAK,CACJC,OAAQ,YACRC,aAAc,QACdC,wBAAwB,EACxBC,0BAA2BC,OAAOhE,SAASC,OAAS,2BAErDgE,MAAKC,IACJhB,GAAU,GACVF,EAAG,YAAUkB,EAAgB,gBAAkB,qBAAsB,IAEtEC,OAAM3C,IACL4C,QAAQ5C,MAAM,gCAAiCA,EAAM,IAE3D,GACC,IAEI,CAAElC,SAAQC,WAAU,EAGhB8E,EAAoBA,KAC/B,MAAM,OAAE/E,EAAM,SAAEC,GAAaC,IACvB8E,GAAaC,EAAAA,EAAAA,UAEbC,GAAuBC,EAAAA,EAAAA,IAAUC,EAAAA,IACjCC,GAA0BF,EAAAA,EAAAA,IAAUG,EAAAA,IACpCC,GAAoBJ,EAAAA,EAAAA,IAAUK,EAAAA,IAC9BC,GAAeN,EAAAA,EAAAA,IAAUO,EAAAA,KAE/BjD,EAAAA,EAAAA,YAAU,KACR,GAAIzC,EAAQ,CACV,IAAgC,KAA5BC,aAAQ,EAARA,EAAU2E,eAAwB,CACpC,MAAMe,EAAQ1F,EAAS0F,MACvBjC,EAAE,yBAA0BzD,EAAS2F,eACrC,MAAMC,GAAWC,EAAAA,EAAAA,IAAK7F,EAAS2F,cAAe,CAAC,OAAQ,UAAW,QAASG,EAAAA,GAAgBC,EAAAA,KAC3FtC,EAAE,mBAAoBiC,EAAO,gBAAiB1F,EAAS2F,eACvDV,EAAqB,CAAES,QAAOE,YAChC,MAAsC,IAA3B5F,EAAS2E,gBAClBlB,EAAE,iBACF2B,KAEFE,EAAkBU,EAAAA,GAAaC,QACjC,IACC,CAAClG,EAAQC,aAAQ,EAARA,EAAU2E,gBAEtB,MAAMuB,GAAqBC,EAAAA,EAAAA,cACzB,IACEpG,GACAC,EACGoG,YArEyB,IAsEzB1B,MAAK2B,IACJ5C,EAAE,sCAAuC4C,EAAuB,YAAarG,EAAS0F,OACtFF,EAAaxF,EAAS0F,MAAM,IAE7Bd,OAAM0B,IACL7C,EAAE,uCAAwC6C,GAC1ClB,GAAyB,KAE/B,CAACrF,EAAQC,KAGXwC,EAAAA,EAAAA,YAAU,KACR,MAAM+D,EAAyBA,KACzBxG,SAAUC,GAAAA,EAAU2E,gBACtBlB,EAAE,0BACEzD,EAASwG,eArFa,MAsFxB/C,EAAE,uBACFyC,KAEFnB,EAAW0B,QAAUC,WAAWH,EAAwBI,KAC1D,EAKF,OAHI5G,SAAUC,GAAAA,EAAU2E,gBACtBI,EAAW0B,QAAUC,WAAWH,EAAwBI,MAEnD,KACLC,aAAa7B,EAAW,CACzB,GACA,CAAChF,EAAQC,aAAQ,EAARA,EAAU2E,cAAeI,KAErCvC,EAAAA,EAAAA,YAAU,KACJzC,GAAUC,IACZA,EAAS6G,eAAiB,KACxBpD,EAAE,iBACFyC,GAAoB,EAExB,GACC,CAACnG,EAAQC,GAAU,EAGxB,M,yMCjHO,MAAM8G,EAAiB,iBACjBC,EAAoB,oBACpBC,EAAmB,mBA8DnBC,EAAeC,IAAgE,IAA/D,OAAEC,EAAM,UAAEzF,EAAS,iBAAE0F,EAAgB,SAAEC,EAAQ,QAAEC,GAASJ,EACrF,MAAMK,GAASpH,EAAAA,EAAAA,IAAYqH,EAAAA,IACrBC,GAAOC,EAAAA,EAAAA,IAAgBP,EAAQI,GAIrC,MAlEkB3H,KAAwD,IAAvD,KAAE6H,EAAI,iBAAEL,EAAmBO,EAAAA,GAAI,QAAEL,GAAU,GAAO1H,EACrE,MAAOgI,EAAUC,IAAezF,EAAAA,EAAAA,UAAS0E,GACnCgB,GAAgB5C,EAAAA,EAAAA,IAAU6C,EAAAA,IAC1BC,GAAmB9C,EAAAA,EAAAA,IAAU+C,EAAAA,IAC7BC,GAAW/H,EAAAA,EAAAA,IAAYiH,IAE7B5E,EAAAA,EAAAA,YAAU,KAER,GAAiB,OAAb0F,GAAsBT,EAE1B,OAAQG,GACN,KAAKd,EACHe,EAAYd,GAEZoB,EAAAA,EAAUC,SAASX,GAChB/C,MAAK,IAAMyD,EAAAA,EAAUE,cAAcZ,EAAMS,KACzCxD,MAAK,IAAMyD,EAAAA,EAAUG,OAAOb,KAC5B/C,MAAK,IAAM4C,GAAWa,EAAAA,EAAUI,UAAUd,GAAM/C,MAAK8D,GAAQV,EAAcL,EAAMe,OACjF9D,MAAK,IAAMmD,EAAYb,KACvBpC,OAAM3C,GAAS4C,QAAQ5C,MAAM,yBAA0BA,KAC1D,MAGF,KAAK+E,EACHa,EAAYd,GACZiB,EAAiBP,GAEjBU,EAAAA,EAAUE,cAAcZ,EAAMS,GAC3BxD,MAAK,IAAMyD,EAAAA,EAAUM,SAAShB,KAC9B/C,MAAK,IAAM4C,GAAWa,EAAAA,EAAUI,UAAUd,GAAM/C,MAAK8D,GAAQV,EAAcL,EAAMe,OACjF9D,MAAK,IAAMmD,EAAYb,KACvBpC,OAAM3C,GAAS4C,QAAQ5C,MAAM,kBAAmBA,KAIvD,GACC,CAACyG,KAAKC,UAAUT,MAEnB1F,EAAAA,EAAAA,YAAU,KAER,IAAIoG,EAIJ,OAHIhB,IAAab,IACf6B,EAAYlC,YAAW,IAAMmB,EAAYb,IAAmB,EAAI6B,EAAAA,KAE3D,IAAMjC,aAAagC,EAAU,GACnC,CAAChB,KAEJpF,EAAAA,EAAAA,YACE,IAAM,KACAiF,IACFU,EAAAA,EAAUW,SAASrB,GAAM7C,OAAM3C,GAAS4C,QAAQ5C,MAAM,wBAAyBA,KAC/E+F,EAAiBP,GACnB,GAEF,GAGkC,EAOpCsB,CAAY,CAAEtB,OAAML,mBAAkBE,YAGpCjH,EAAAA,cAAAA,EAAAA,SAAA,KACGgH,EACDhH,EAAAA,cAAA,OAAK2I,GAAIvB,EAAM/F,UAAWC,IAAWD,EAAW4F,GCrF7B,WDsFlB,EAIP,OAAe2B,EAAAA,EAAAA,KAA+B,SAAiBC,GAA2B,IAA1B,OAAE/B,KAAWgC,GAAWD,EAGtF,OAFuB/I,EAAAA,EAAAA,KAAYiJ,IAASC,EAAAA,EAAAA,IAAwCD,EAAOjC,KAIpF9G,EAAAA,cAAC4G,GAAYqC,EAAAA,EAAAA,GAAA,CAACC,IAAKpC,EAAQA,OAAQA,GAAYgC,IAF1B9I,EAAAA,cAAAA,EAAAA,SAAA,KAG9B,G,+WEhGA,EAAiP,QAAjP,EAA0Q,Q,6DCiB1Q,MAAMmJ,EAAc5J,IAAkC,IAAjC,IAAEkE,EAAG,UAAEpC,EAAS,SAAE+H,GAAU7J,EAC/C,OACES,EAAAA,cAACqJ,EAAAA,EAAa,CACZhI,UAAWiI,IDpB8F,QCoBpEjI,GACrCT,KAAM6C,EACN/C,UAAU,EACV6I,aAAa,EACb/I,KAAMgJ,EAAAA,GACNC,QAAS,CAAEL,WAAUM,KAAMC,EAAAA,EAAmBC,UAAUF,KAAKG,QAC7D,EAsEN,MAlEyBC,KACvB,MAAM,UAAEC,IAAcC,EAAAA,EAAAA,GAASC,EAAAA,GAAUC,kBACnCC,GAAeC,EAAAA,EAAAA,GAAiBL,GAEtC,OACE/J,EAAAA,cAACqK,EAAAA,EAAK,CAACC,QAASL,EAAAA,GAAUC,kBACxBlK,EAAAA,cAAA,OAAKqB,UDpCqR,QCoC3PkJ,QAASJ,GACtCnK,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK+G,KAEhBxK,EAAAA,cAAA,OAAKqB,UDvCY,SCwCfrB,EAAAA,cAAA,OAAKqB,UDxC6B,SCyChCrB,EAAAA,cAAA,OAAKqB,UDzCmD,SC0CtDrB,EAAAA,cAAA,OAAKyK,IAAKC,KAEZ1K,EAAAA,cAAA,MAAIqB,UD5C2E,SC6C7ErB,EAAAA,cAAA,UACEA,EAAAA,cAAA,SAAG,sBAAsB,6CAE3BA,EAAAA,cAAA,UACEA,EAAAA,cAAA,SAAG,WAAW,gBAEhBA,EAAAA,cAAA,UACEA,EAAAA,cAAA,SAAG,eAAe,WAGtBA,EAAAA,cAAA,WACEA,EAAAA,cAACmJ,EAAW,CACV1F,IAAKkH,EAAAA,GACLtJ,UD1DyH,QC2DzH+H,SAAUO,EAAAA,EAAmBC,UAAUgB,OAAOC,UAEhD7K,EAAAA,cAACmJ,EAAW,CACV1F,IAAKqH,EAAAA,GACLzJ,UD/D6I,QCgE7I+H,SAAUO,EAAAA,EAAmBC,UAAUgB,OAAOG,QAIpD/K,EAAAA,cAAA,OAAKqB,UDpEkK,SCqErKrB,EAAAA,cAAA,OAAKqB,UDrEgL,SCqE5J,iEACzBrB,EAAAA,cAAA,MAAIqB,UDtE0M,SCuE5MrB,EAAAA,cAAA,MAAIqB,UAAW2J,GACbhL,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKwH,KAEhBjL,EAAAA,cAAA,WAAK,+BAEPA,EAAAA,cAAA,MAAIqB,UAAW2J,GACbhL,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKyH,KAEhBlL,EAAAA,cAAA,WAAK,8EAEPA,EAAAA,cAAA,MAAIqB,UAAW2J,GACbhL,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK0H,KAEhBnL,EAAAA,cAAA,WAAK,sDAKP,ECrDZ,GAAeoL,EAAAA,EAAAA,IA1Ba7L,IAAkC,IAAjC,KAAEC,EAAO6L,EAAAA,GAAW,KAAE3B,GAAMnK,EACvD,MAAM,aAAE+L,IAAiBtB,EAAAA,EAAAA,GAASC,EAAAA,GAAUC,kBAEtCqB,GAAgBC,EAAAA,EAAAA,GAAyBF,GAE/C,OACEtL,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACM,EAAAA,GAAqB,CACpBmL,QAASf,EACTgB,MAAOC,EAAAA,GACPhL,MAAM,kBACNnB,KAAMA,EACN+K,QAASgB,EACThL,QAAS,CACPC,KAAMgJ,EAAAA,GACNC,QAAS,CACPL,SAAUO,EAAAA,EAAmBC,UAAUgB,OAAOF,OAC9ChB,WAIN1J,EAAAA,cAAC8J,EAAgB,MAChB,G,sIC/BQ,SAAS8B,EAAe7I,GACrC,MAAM,SAAE8I,EAAQ,UAAEC,EAAS,IAAErI,EAAG,IAAEsI,GAAQhJ,EAC1C,OACE/C,EAAAA,cAAA,MAAIgM,SAAS,kBAAkBC,WAAW,EAAMC,SAAS,8BAA8B7K,UCP1D,SDQ1BoC,EACCzD,EAAAA,cAAA,KAAGqB,UCT+C,QDSlB2K,SAAS,OAAOpL,KAAM6C,GACpDzD,EAAAA,cAAA,QAAMgM,SAAS,QAAQH,GAAY7L,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAIkD,EAAUO,KAAMN,MAG5D9L,EAAAA,cAAA,QAAMgM,SAAS,QAAQH,GAAY7L,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAIkD,EAAUO,KAAMN,KAE5D9L,EAAAA,cAAA,QAAMgM,SAAS,WAAWK,QAASN,IAGzC,CAEAH,EAAeU,UAAY,CACzBT,SAAUU,EAAAA,OAAOC,WACjBV,WAAWW,EAAAA,EAAAA,SAAQF,EAAAA,QACnB9I,IAAK8I,EAAAA,OACLR,IAAKW,EAAAA,QELP,MAdoBC,KAClB,MAAMC,GAAc9M,EAAAA,EAAAA,IAAY+M,EAAAA,IAEhC,OACE7M,EAAAA,cAAA,OAAKqB,UCTiB,SDUpBrB,EAAAA,cAAA,MAAIiM,WAAW,EAAMC,SAAS,oCAAoC7K,UCVxB,UDWtCuL,GAAe,IAAIE,KAAI,CAAAvN,EAA+BwM,KAAG,IAAjC,SAAEF,EAAQ,UAAEC,EAAS,IAAErI,GAAKlE,EAAA,OACpDS,EAAAA,cAAC4L,EAAc,CAACC,SAAUA,EAAUC,UAAWA,EAAWrI,IAAKA,EAAKsI,IAAKA,EAAK7C,IAAK6C,GAAO,KAG1F,E,uLERK,SAASgB,EAAchK,GACpC,OACE/C,EAAAA,cAAA,OAAKqB,UAAW0B,EAAM1B,WACpBrB,EAAAA,cAACqJ,EAAAA,EAAa,CACZ7I,KAAMwM,EAAAA,GACNpM,KAAK,+BACLS,UCbe,QDcf4L,OAAO,SACPC,IAAI,gCAEJlN,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK0J,IACdnN,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,qBAIf,CEtBA,MAAqE,QAArE,EAAiK,QAAjK,EAAoM,QAApM,EAA4O,Q,0ECO5O,GAAeC,EAAAA,EAAAA,KAA+B,WAC5C,OACE5I,EAAAA,cAAA,OAAK2I,GAAG,gBAAgBtH,UCTI,QDSwBkJ,QAASA,IAAM6C,EAAAA,EAAWC,QAC5ErN,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK6J,IACdtN,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,mBAGb,I,kKEdA,GAAgB,kBAAoB,QAAQ,OAAS,QAAQ,SAAW,QAAQ,QAAU,QAAQ,KAAO,SCS1F,SAAS4E,EAAqBxK,GAC3C,OACE/C,EAAAA,cAAA,MAAIqB,UAAW2J,EAAEwC,mBACfxN,EAAAA,cAAA,UACEA,EAAAA,cAACyN,EAAc,OAEjBzN,EAAAA,cAAA,UACEA,EAAAA,cAAC0N,EAAa,OAEhB1N,EAAAA,cAAA,UACEA,EAAAA,cAAC2N,EAAU,OAInB,CAEO,SAASF,EAAe1K,GAC7B,OACE/C,EAAAA,cAACqJ,EAAAA,EAAa,CACZhI,UAAWiI,IAAW0B,EAAE4C,OAAQ5C,EAAE6C,UAClCjN,KAAK,yCACLF,UAAU,EACV6I,aAAa,EACbuE,MAAM,qBACNtN,KAAMuN,EAAAA,GACNtE,QAAS,CAAEwD,OAAQ,mBAEnBjN,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKoK,EAAUG,UAAU,IAGxC,CAEO,SAASN,EAAc3K,GAC5B,OACE/C,EAAAA,cAACqJ,EAAAA,EAAa,CACZhI,UAAWiI,IAAW0B,EAAE4C,OAAQ5C,EAAEiD,SAClCrN,KAAK,4BACLF,UAAU,EACV6I,aAAa,EACbuE,MAAM,oBACNtN,KAAMuN,EAAAA,GACNtE,QAAS,CAAEwD,OAAQ,kBAEnBjN,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKwK,EAASD,UAAU,IAGvC,CAEO,SAASL,EAAW5K,GACzB,OACE/C,EAAAA,cAACqJ,EAAAA,EAAa,CACZhI,UAAWiI,IAAW0B,EAAE4C,OAAQ5C,EAAEkD,MAClCtN,KAAK,yBACLkN,MAAM,aACNK,mBAAmB,EACnB5E,aAAa,EACb/I,KAAMuN,EAAAA,GACNtE,QAAS,CAAEwD,OAAQ,eAEnBjN,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK2K,EAAKJ,UAAU,IAGnC,C,gQCsNA,EA5BoBzO,IAAwB,IAAvB,QAAE8O,GAAU,GAAM9O,EACrC,MAAM+O,GAAOxO,EAAAA,EAAAA,IAAYyO,EAAAA,IACzB,OACEvO,EAAAA,cAACwO,EAAAA,EAAO,CACNC,QACEzO,EAAAA,cAAA,QAAMqB,ULtQY,SKuQhBrB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKiL,IACd1O,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,kBAGXgG,QAAS,CL3QsC,SK4Q/CC,cAAe,CL5QkE,UK8QjF5O,EAAAA,cAAA,OAAKqB,UL9Q8F,SK+QjGrB,EAAAA,cAAA,OAAKqB,UAAW2J,GACbqD,GAAWrO,EAAAA,cAAC6O,EAAa,MAC1B7O,EAAAA,cAAC+M,EAAa,OAEfuB,GA1BLtO,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAA,OAAKqB,UAAW2J,GAAS,aAAe,yBAExChL,EAAAA,cAACuN,EAAoB,OAwBlBe,GA9GLtO,EAAAA,cAAA,WACEA,EAAAA,cAAA,OAAKqB,UAAW2J,GAAS,aACzBhL,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAEEA,EAAAA,cAAA,KAAGiN,OAAO,SAASrM,KAAK,6DAA6DsM,IAAI,qBAAoB,QAI/GlN,EAAAA,cAAA,UAEEA,EAAAA,cAAA,KAAGiN,OAAO,SAASrM,KAAK,kDAAkDsM,IAAI,qBAAoB,uBAoCxGlN,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,wBAET3I,EAAAA,cAAA,UACEA,EAAAA,cAAA,UACEA,EAAAA,cAAA,KAAGY,KAAK,yBACNZ,EAAAA,cAAA,QAAMqB,UAAWiI,IAAW0B,EL5N0I,WK4NrH,WAIrDhL,EAAAA,cAAA,UACEA,EAAAA,cAAA,KAAGY,KAAK,4BACNZ,EAAAA,cAAA,QAAMqB,UAAWiI,IAAW0B,EAAQA,KAAc,wBAItDhL,EAAAA,cAAA,UACEA,EAAAA,cAAA,KAAGY,KAAK,4BACNZ,EAAAA,cAAA,QAAMqB,UAAWiI,IAAW0B,EAAQA,KAAc,wBAItDhL,EAAAA,cAAA,UACEA,EAAAA,cAAA,KAAGY,KAAK,yBACNZ,EAAAA,cAAA,QAAMqB,UAAWiI,IAAW0B,EL9OoL,WK8OxJ,qBAwC3DsD,EAnQLtO,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,wBAET3I,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAEEA,EAAAA,cAAA,KAAGiN,OAAO,SAASrM,KAAK,qCAAqCsM,IAAI,qBAC/DlN,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,2BAGX3I,EAAAA,cAAA,UAEEA,EAAAA,cAAA,KACEiN,OAAO,SACPrM,KAAK,kKACLsM,IAAI,qBACL,gBAIHlN,EAAAA,cAAA,UAEEA,EAAAA,cAAA,KAAGiN,OAAO,SAASrM,KAAK,0BAA0BsM,IAAI,YAAW,eAInElN,EAAAA,cAAA,UAEEA,EAAAA,cAAA,KAAGiN,OAAO,SAASrM,KAAK,kDAAkDsM,IAAI,qBAAoB,UAGjG,MAEDlN,EAAAA,cAAA,KAAGiN,OAAO,SAASrM,KAAK,0CAA0CsM,IAAI,qBAAoB,kBAMhGlN,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAA,OAAKqB,UAAW2J,GAAS,iBACzBhL,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAEEA,EAAAA,cAAA,KACEiN,OAAO,SACPrM,KAAK,8DACLsM,IAAI,qBAEJlN,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,8BAER,MACD3I,EAAAA,cAAA,KACEiN,OAAO,SACPrM,KAAK,yEACLsM,IAAI,qBACL,cAGA,MACDlN,EAAAA,cAAA,KACEiN,OAAO,SACPrM,KAAK,sEACLsM,IAAI,qBAEJlN,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,0BAIX3I,EAAAA,cAAA,UACEA,EAAAA,cAAA,KAAGiN,OAAO,SAASrM,KAAK,+BAA+BsM,IAAI,gCAA+B,yBAI5FlN,EAAAA,cAAA,UAEEA,EAAAA,cAAA,KACEiN,OAAO,SACPrM,KAAK,6DACLsM,IAAI,qBACL,oCAKHlN,EAAAA,cAAA,UAEEA,EAAAA,cAAA,KAAGiN,OAAO,SAASrM,KAAK,yDAAyDsM,IAAI,qBAAoB,sCAajHlN,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,wBAET3I,EAAAA,cAAA,UACEA,EAAAA,cAAA,UAEEA,EAAAA,cAAA,KAAGiN,OAAO,SAASrM,KAAK,qCAAqCsM,IAAI,qBAC/DlN,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,2BAGX3I,EAAAA,cAAA,UAEEA,EAAAA,cAAA,KACEiN,OAAO,SACPrM,KAAK,8DACLsM,IAAI,qBAEJlN,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,8BACJ,KAEP3I,EAAAA,cAAA,UAEEA,EAAAA,cAAA,KACEiN,OAAO,SACPrM,KAAK,sEACLsM,IAAI,qBAEJlN,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,0BAGX3I,EAAAA,cAAA,UACEA,EAAAA,cAAA,KAAGiN,OAAO,SAASrM,KAAK,+BAA+BsM,IAAI,gCACzDlN,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,6BA+BI2F,IAErBtO,EAAAA,cAAA,OAAKqB,UL5LqH,SK6LxHrB,EAAAA,cAAA,KAAGiN,OAAO,SAASrM,KAAK,+BAA+BsM,IAAI,uBACzDlN,EAAAA,cAAA,OAAKyK,IAAKqE,EAAaC,MAAM,KAAKC,OAAO,KAAKC,QAAQ,OAAOC,IAAI,kBAEnElP,EAAAA,cAAA,KAAGqB,ULhMyI,QKgMjH4L,OAAO,SAASrM,KAAK,yBAAyBsM,IAAI,uBAC3ElN,EAAAA,cAAA,OAAKyK,IAAK0E,EAAWJ,MAAM,KAAKC,OAAO,KAAKC,QAAQ,OAAOC,IAAI,WAEjElP,EAAAA,cAAA,KAAGiN,OAAO,SAASrM,KAAK,kCAAkCsM,IAAI,uBAC5DlN,EAAAA,cAAA,OACEyK,IAAK6D,EAAOc,EAAaC,EACzBN,MAAM,KACNC,OAAO,KACPC,QAAQ,OACRC,IAAKZ,EAAO,cAAgB,gBAGhCtO,EAAAA,cAAA,KAAGiN,OAAO,SAASrM,KAAK,oCAAoCsM,IAAI,uBAC9DlN,EAAAA,cAAA,OAAKyK,IAAK6E,EAASP,MAAM,MAAMC,OAAO,KAAKC,QAAQ,OAAOC,IAAI,yBA0E7DK,CAAiBjB,IAEZ,E,gECzRd,G,kBAAA,CAAgB,MAAQ,U,WCOxB,MAAMkB,EAAK,iBA6BX,MA3B8BC,MACL3P,EAAAA,EAAAA,IAAY4P,EAAAA,KACR5P,EAAAA,EAAAA,IAAY6P,EAAAA,IAEtB,CACf,MAAMC,EAAUC,SAASC,eAAeN,GACxC,OAAOI,EACL5P,EAAAA,cAAA,OAAK2I,GAAI6G,EAAIO,wBAAyB,CAAEC,OAAQJ,EAAQK,WAAa5O,UAAW2J,EAAEkF,OAChF,IACN,CAcQ,E,WCRV,GAAeC,EAAAA,EAAAA,IAAwBC,EAAAA,GAAvC,EAf+BC,IAC7BrQ,EAAAA,cAACwO,EAAAA,EAAO,CACNC,QACEzO,EAAAA,cAAA,QAAMqB,UCZgB,SDapBrB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK6M,IACdtQ,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,uBAGXgG,QAAS,CCjBwC,SDkBjDC,cAAe,CClBoD,UDoBnE5O,EAAAA,cAACyP,EAAc,S,2DEJnB,EAXuBc,IAEnBvQ,EAAAA,cAAA,OAAKqB,UCPkB,SDQrBrB,EAAAA,cAAA,OAAKqB,UCRqC,SDSxCrB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK+M,KAEhBxQ,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,qB,yLEiCb,IAAe8H,EAAAA,EAAAA,KAAWrF,EAAAA,EAAAA,IAhCA7L,IAAmB,IAAlB,UAAE8B,GAAW9B,EACtC,OACES,EAAAA,cAAA,OAAKqB,UAAWC,ICdM,QDcgBD,IACpCrB,EAAAA,cAAA,OAAKqB,UCf+B,SDgBlCrB,EAAAA,cAAA,eACEA,EAAAA,cAAA,UAAQQ,KAAK,aAAakQ,OAAQC,KAClC3Q,EAAAA,cAAA,OAAKyK,IAAKmG,EAAoB7B,MAAM,MAAMC,OAAO,MAAMC,QAAQ,UAEjEjP,EAAAA,cAAA,OAAKqB,UCpB+C,SDqBlDrB,EAAAA,cAAA,OAAKqB,UCrBqE,SDsBxErB,EAAAA,cAAA,QAAMqB,UCtBkF,SDsB7D,yDAC3BrB,EAAAA,cAAA,QAAMqB,UCvBiG,SDuB7E,8CAE5BrB,EAAAA,cAAA,WACEA,EAAAA,cAACqJ,EAAAA,EAAa,CACZzI,KAAMiQ,GAAAA,GACNnQ,UAAU,EACV6I,aAAa,EACb/I,KAAMgJ,EAAAA,GACNC,QAAS,CACPC,KAAMC,GAAAA,EAAmBC,UAAUF,KAAKoH,OAG1C9Q,EAAAA,cAACM,GAAAA,GAAqB,CAACK,MAAO,kBAAmB+K,MAAOqF,GAAAA,GAAavR,KAAM6L,GAAAA,SAK/E,K,wBEXV,GAjBe9L,IAAiB,IAAhB,QAAE8O,GAAS9O,EACzB,MAAMyR,GAAelR,EAAAA,EAAAA,IAAYmR,GAAAA,IAC3BC,GAA6BpR,EAAAA,EAAAA,IAAYqR,GAAAA,IAE/C,OACEnR,EAAAA,cAAA,OAAKqB,UAAWiI,ICjBK,QDiBgB0H,GAAgBE,GCjBJ,UDkB/ClR,EAAAA,cAACoR,GAAiB,MAClBpR,EAAAA,cAAA,OAAKqB,UAAWiI,ICnByI,QAAvB,UDoBhItJ,EAAAA,cAAC2M,EAAW,MACZ3M,EAAAA,cAACqQ,EAAe,MAChBrQ,EAAAA,cAACqR,EAAW,CAAChD,QAASA,KAExBrO,EAAAA,cAACuQ,EAAc,MACX,C,kFEpBV,GAAeE,EAAAA,EAAAA,KAFAa,IAAMtR,EAAAA,cAAA,OAAKqB,UCHD,W,0MCWzB,MAAMkQ,EAAmBhS,IAA2B,IAA1B,UAAE8B,EAAS,OAAEmQ,GAAQjS,EAC7C,MAAMkS,GAAmB5M,EAAAA,EAAAA,IAAU6M,EAAAA,IAC7BC,GAAkB7L,EAAAA,EAAAA,cAAY,IAAM2L,KAAoB,IAE9D,OAAKD,EAQHxR,EAAAA,cAAC4R,EAAAA,EAAe,CAACpR,KAAMqR,EAAAA,GAAUC,YAAU,EAACvH,QAASoH,GACnD3R,EAAAA,cAAC+R,EAAc,CAAC1Q,UAAWA,KAP3BrB,EAAAA,cAAA,OAAKuK,QAASoH,GACZ3R,EAAAA,cAAC+R,EAAc,CAAC1Q,UAAWA,IAOb,EAIhB0Q,EAAiBlL,IAAA,IAAC,UAAExF,GAAWwF,EAAA,OACnC7G,EAAAA,cAAA,OAAKqB,UAAWC,IC9BY,QD8BcD,IACxCrB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK+G,IACV,EAGKwH,GAAqBC,EAAAA,EAAAA,KAAWrJ,EAAAA,EAAAA,IAA+B2I,IAE5E,OAAe3I,EAAAA,EAAAA,IAA+B2I,E,iHErC9C,GAAgB,QAAU,QAAQ,QAAU,QAAQ,QAAU,QAAQ,QAAU,S,WCMjE,SAAS/C,EAAOjP,GAA0D,IAAzD,QAAEkP,EAAO,QAAEE,EAAU,GAAE,cAAEC,EAAgB,GAAE,SAAE5H,GAAUzH,EACrF,MAAO8N,EAAM9C,IAAW2H,EAAAA,EAAAA,KAExB,OACElS,EAAAA,cAAA,WAASqN,KAAMA,EAAMhM,UAAWiI,IAAW0B,EAAEwD,WAAYG,IACvD3O,EAAAA,cAAA,WAASqB,UAAW2J,EAAEmH,QAAS5H,QAASA,GACrCkE,EACDzO,EAAAA,cAAA,QAAMqB,UAAWiI,IAAW0B,EAAEoH,WAAYxD,IACxC5O,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK4O,MAGlBrS,EAAAA,cAAA,OAAKqB,UAAW2J,EAAEsH,SAAUtL,GAGlC,C,sGChBA,MAAMuL,EAAevS,EAAAA,YAAiB,CAAC+C,EAAOyP,IAE1CxS,EAAAA,cAACyS,KAAaxJ,EAAAA,EAAAA,GAAA,CACZuJ,IAAKA,EACLE,UAAQ,EACRC,SAAS,EACTC,gBAAgB,EAChBC,sBAAsB,EACtBC,gBAAgB,GACZ/P,MAKVwP,EAAaQ,YAAc,eAE3B,O,8LCTA,MAAMC,EACK,CACPC,OAAQ,IACRC,gBAAiB,6BAHfF,EAKK,CACPG,IAAK,MACLC,KAAM,MACNC,YAAa,OACbC,UAAW,wBACXC,MAAO,OACPC,OAAQ,OACRC,QAAS,EACTC,SAAU,OACVR,gBAAiB,QACjBS,aAAc,OACdC,OAAQ,gCAsDZ,OAAehL,EAAAA,EAAAA,KAlDDrJ,IASR,IATS,QACb+K,EAAO,SACPtD,EAAQ,aACR6M,EAAe,CAAC,EAAC,MACjBpS,EAAQ,CAAC,EAAC,gBACVqS,EAAe,OACftC,GAAS,EAAI,mBACbuC,GAAqB,KAClBC,GACJzU,EACC,MAAM,UAAEwK,EAAS,iBAAEkK,IAAqBjK,EAAAA,EAAAA,GAASM,GAC3C4J,GAAcrP,EAAAA,EAAAA,IAAU6M,EAAAA,IAC9ByC,IAAAA,cAAsB,IAAGC,EAAAA,KAEzB,MAAMC,GAAyBjK,EAAAA,EAAAA,IAAiB,SAE1CkK,GAAiBlK,EAAAA,EAAAA,IAAiB,KAClC2J,EACFG,IAEAnK,GACF,GACC,CAACgK,EAAoBhK,IAExB,OACE/J,EAAAA,cAAA,QAAMqB,UCxDuB,QDwDMkJ,QAAS8J,GAC1CrU,EAAAA,cAACmU,KAAMlL,EAAAA,EAAAA,GAAA,CACLxH,MAAO,CACL8S,QAAS,IACJvB,KACAa,GAELxH,QAAS,IACJ2G,KACAvR,IAGP+S,2BAA2BC,EAAAA,EAAAA,MAC3BH,eAAgBA,EAChBI,OAAQT,GACJD,GAEHF,GAAmB9T,EAAAA,cAACuR,EAAAA,EAAgB,CAAClQ,UCzES,QDyEiBmQ,OAAQA,IACvExK,GAEE,G,4DE1EX,MAAM2N,EAA6B,4BA6CnC,IA3C4B5R,IAC1B,MAAM,MAAE6R,EAAK,SAAEC,EAAQ,OAAEC,GAAW/R,GAE7BgS,EAAYC,IAAiBjT,EAAAA,EAAAA,UAAS6S,GA4B7C,OA1BAzS,EAAAA,EAAAA,YAAU,KACR6S,EAAcJ,EAAM,GACnB,CAACA,IAyBF5U,EAAAA,cAAA,SAAAiJ,EAAAA,EAAAA,GAAA,GACMlG,EAAK,CACT6R,MAAOG,EACPvU,KAAK,SACL+J,QAhBgB0K,GAASA,EAAMhI,OAAOiI,QAiBtCL,SA5BiBI,IACnB,MACEhI,QAAU2H,MAAOO,IACfF,EAECE,IAAeR,EAA2BS,KAAKD,IAClDH,EAAcG,GAEhBN,GAAYA,EAASI,EAAM,EAqBzBH,OAhBeO,KACjB,MAAMJ,EAAQ,CACZhI,OAAQ,CACN2H,OAAOU,EAAAA,EAAAA,IAAoBP,EAAY,KAG3CD,GAAUA,EAAOG,EAAM,IAWrB,C,2OCzBN,EAX4BM,KAC1B,MAAM9D,GAAmB5M,EAAAA,EAAAA,IAAU6M,EAAAA,IAC7B8D,GAAUpL,EAAAA,EAAAA,GAAiBqH,GAEjC,OACEzR,EAAAA,cAAA,OAAKqB,UCZkB,QDYKkJ,QAASiL,GACnCxV,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK+G,IACV,E,qGETV,EAFqBiL,IAAMzV,EAAAA,cAAA,OAAKqB,UCHT,QDG4B0N,MAAM,KAAKC,OAAO,KAAKvE,IAAKiL,EAAWxG,IAAI,QAAQD,QAAQ,SEyB9G,GAAejM,EAAAA,EAAAA,KArBW2S,IACxB3V,EAAAA,cAAA,OAAKqB,UCRgB,SDSnBrB,EAAAA,cAACuV,EAAmB,MACpBvV,EAAAA,cAAA,OAAKqB,UCVgC,SDWnCrB,EAAAA,cAAA,OAAKqB,UCXsD,SDYzDrB,EAAAA,cAAA,OAAKyK,IAAKmL,EAAoB7G,MAAM,MAAMC,OAAO,MAAMC,QAAQ,SAC/DjP,EAAAA,cAAA,KAAGqB,UCbuE,SDalD,aACZrB,EAAAA,cAACyV,EAAY,OAEzBzV,EAAAA,cAAA,KAAGqB,UChBwF,SDgBnE,mBACxBrB,EAAAA,cAAA,MAAIqB,UCjBsG,SDkBxGrB,EAAAA,cAAA,UAAI,iCACJA,EAAAA,cAAA,UAAI,yCACJA,EAAAA,cAAA,UAAI,kDAENA,EAAAA,cAAC6V,EAAAA,EAAe,W,2CEjBxB,EAF0BtW,IAAA,IAAC,SAAEyH,GAAUzH,EAAA,OAAKS,EAAAA,cAAA,OAAKqB,UAAWiI,ICHrC,UDG0DtC,EAAe,E,sBE6BhG,EArByBzH,IAAgD,IAA/C,SAAEyH,EAAQ,cAAE8O,EAAa,MAAEC,GAAQ,GAAOxW,EAClE,MAAMyW,GAAkBlW,EAAAA,EAAAA,IAAYmW,EAAAA,IAC9BC,GAAsBrR,EAAAA,EAAAA,IAAUK,EAAAA,IAEhCiR,GAAS/L,EAAAA,EAAAA,IAAiB,IAAM8L,EAAoBvQ,EAAAA,GAAaC,WAEvE,OACE5F,EAAAA,cAAA,OAAKqB,UAAWiI,IClBG,QDkBgByM,GClBA,UDmBjC/V,EAAAA,cAAA,OAAKqB,UCnB2C,UDoB5C2U,GACAhW,EAAAA,cAAA,OAAKqB,UCrBsF,QDqBnEkJ,QAAS4L,GAC/BnW,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK2S,MAIpBpW,EAAAA,cAAA,OAAKqB,UAAY,SAAc2F,GAC/BhH,EAAAA,cAAA,OAAKqB,UC3B2D,SD2BtCyU,GACtB,EE5BV,GAAgB,KAAO,QAAQ,QAAU,QAAQ,OAAS,QAAQ,QAAU,QAAQ,aAAe,QAAQ,QAAU,QAAQ,iBAAmB,QAAQ,MAAQ,QAAQ,QAAU,QAAQ,SAAW,S,uDCarM,MAAMO,EAAkB9W,IAAiC,IAAhC,MAAEoB,EAAK,QAAE2V,EAAO,QAAE/V,GAAShB,EAClD,OACES,EAAAA,cAAC4R,EAAAA,GAAe3I,EAAAA,EAAAA,GAAA,CAAC5H,UAAW2J,EAAEqB,SAAa9L,GACxCI,EACCX,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKqB,UAAW2J,EAAErK,OAAQA,GAC1BX,EAAAA,cAAA,OAAKqB,UAAW2J,EAAEsL,SAAUA,IAG9BtW,EAAAA,cAAA,OAAKqB,UAAW2J,EAAErK,OAAQ2V,GAEZ,EA4DtB,MAxDgCzP,IAW1B,IAX2B,MAC/B0P,EAAK,KACLC,EAAI,MACJ7V,EAAK,QACL2V,EAAO,QACPG,EAAO,OACPC,EAAM,WACNC,EAAU,WACVC,GAAa,EAAK,YAClBC,EAAW,YACXC,GACDjQ,EACC,MAAMkQ,GAAYH,IAAeJ,EAC3BQ,GAAiBnS,EAAAA,EAAAA,IAAUoS,EAAAA,IAC3BC,GAAuBrS,EAAAA,EAAAA,IAAUsS,EAAAA,IACjCC,GAAuBvS,EAAAA,EAAAA,IAAUwS,EAAAA,IAEjCC,GAAclN,EAAAA,EAAAA,IAAiB,KAC9BoM,GAGHY,IACIb,EACFS,EAAe,CAAEO,MAAOC,EAAAA,GAAqBC,aAAc,CAAEC,YAAanB,MAE1EW,EAAqBZ,GACrBU,EAAe,CAAEO,MAAOI,EAAAA,GAAeF,aAAc,CAAErX,SAAUkW,OAPnEI,GASF,GACC,CAACF,EAAM7V,EAAO2V,EAASC,IAEpBhL,GAAgBnB,EAAAA,EAAAA,IAAiB,KACrCsM,EAAOF,EAAK,IAGd,OACExW,EAAAA,cAAA,OAAKqB,UAAWC,IAAW0J,EAAEkF,KAAMlF,EAAE4M,iBAAkBb,GAAY/L,EAAE+L,UAAWxM,QAAS+M,GACvFtX,EAAAA,cAAA,OAAKqB,UAAWC,IAAW0J,EAAEyL,QAASzL,EAAEyL,KACtCzW,EAAAA,cAACuB,EAAAA,EAAO,CAACC,KAAMiV,KAEjBzW,EAAAA,cAACqW,EAAe,CAAC1V,MAAOA,EAAO2V,QAASA,EAAS/V,QAASuW,IAC1D9W,EAAAA,cAAA,OAAKqB,UAAW2J,EAAE6M,SACfd,EACC/W,EAAAA,cAAC8X,EAAAA,EAAQ,MAETtB,GACExW,EAAAA,cAAC+X,EAAAA,EAAY,CAAC1W,UAAW2J,EAAEgN,aAAczX,QAASsW,EAAatM,QAASgB,GACtEvL,EAAAA,cAACuB,EAAAA,EAAO,CAACC,KAAMmV,MAKnB,E,uFCtDV,MAAMsB,EAAeA,CAACzX,EAAMkW,KAAW,CACrClW,KAAM0X,EAAAA,GACNzO,QAAS,CAAE,CAAC0O,EAAAA,IAASzB,EAAQ,CAAC0B,EAAAA,IAAO5X,KAsGvC,MAnGsB6X,KACpB,MAAM,KAAEC,EAAI,KAAEC,EAAI,OAAEC,IAAW1Y,EAAAA,EAAAA,IAAY2Y,EAAAA,KAAwB,CAAC,EAC9DC,GAAqB7T,EAAAA,EAAAA,IAAU8T,EAAAA,IAC/BzC,GAAsBrR,EAAAA,EAAAA,IAAUK,EAAAA,KAC/BlD,EAASC,IAAcC,EAAAA,EAAAA,MACvB0W,EAAeC,IAAoB9W,EAAAA,EAAAA,YAEpC+W,EAAiBtY,GAAQ0V,EAAoBvQ,EAAAA,GAAamT,eAAgB,CAAEtY,SAC5EuY,GAAiBjT,EAAAA,EAAAA,cAAYkT,UACjC,MAAMC,QAA6BP,EAAmB,CAAElC,SAEpDyC,SAAAA,EAAsBrX,QACxBK,GAAW,GACX4W,EAAiBI,EAAqBrX,OACxC,GACC,IAEGsX,GAAsBpZ,EAAAA,EAAAA,IAAYqZ,EAAAA,IAElCC,GAAetT,EAAAA,EAAAA,cAAY,KAC/B,GAAIoT,EACF,OACElZ,EAAAA,cAACM,EAAAA,GAAqB,CACpBK,MAAM,UACN+K,MAAO2N,EAAAA,GACP7Z,KAAM6L,EAAAA,GACNd,QAASA,IAAMuO,EAAeQ,EAAAA,GAAeC,OAC7ChZ,QAAS0X,EACPtO,EAAAA,EAAmB6P,KAAKC,UAAUjZ,KAAKkZ,MACvC/P,EAAAA,EAAmB6P,KAAKC,UAAU/C,OAAOiD,UAIjD,GACC,CAACb,IAEJ,OACE9Y,EAAAA,cAAAA,EAAAA,SAAA,KACGgC,GAAWhC,EAAAA,cAAA,OAAKqB,UAAW2J,EAAAA,EAAE4O,cAAehB,GAC7C5Y,EAAAA,cAAC6Z,EAAgB,CAAC/D,cAAesD,KAAiB,qBAClDpZ,EAAAA,cAAC8Z,EAAAA,EAAiB,CAACnY,WAAY,KAC/B3B,EAAAA,cAAC+Z,EAAiB,KAChB/Z,EAAAA,cAACga,GAAgB/Q,EAAAA,EAAAA,GAAA,CACfC,IAAKoP,aAAI,EAAJA,EAAM9B,KACXF,SAAS/T,EAAAA,EAAAA,IAAK,0CACdkU,QAASwD,EAAAA,IACL3B,EAAI,CACR5B,OAAQA,IAAMoC,EAAeQ,EAAAA,GAAeY,MAC5CvZ,OAAO4B,EAAAA,EAAAA,IAAK,6BACZoU,WAAY,YACZC,YAAU,EACVC,YAAaoB,EACXtO,EAAAA,EAAmB6P,KAAKC,UAAUjZ,KAAK8X,KACvC3O,EAAAA,EAAmB6P,KAAKC,UAAU/C,OAAOyD,UAE3CrD,YAAamB,EACXtO,EAAAA,EAAmB6P,KAAKC,UAAUjZ,KAAK8X,KACvC3O,EAAAA,EAAmB6P,KAAKC,UAAU/C,OAAO0D,aAG7Cpa,EAAAA,cAACga,GAAgB/Q,EAAAA,EAAAA,GAAA,CACfC,IAAKqP,aAAI,EAAJA,EAAM/B,KACXF,SAAS/T,EAAAA,EAAAA,IAAK,0CACdkU,QAAS4D,EAAAA,IACL9B,EAAI,CACR7B,OAAQA,IAAMoC,EAAeQ,EAAAA,GAAegB,MAC5C3Z,OAAO4B,EAAAA,EAAAA,IAAK,6BACZoU,WAAY,YACZC,YAAU,EACVC,YAAaoB,EACXtO,EAAAA,EAAmB6P,KAAKC,UAAUjZ,KAAK+X,KACvC5O,EAAAA,EAAmB6P,KAAKC,UAAU/C,OAAOyD,UAE3CrD,YAAamB,EACXtO,EAAAA,EAAmB6P,KAAKC,UAAUjZ,KAAK+X,KACvC5O,EAAAA,EAAmB6P,KAAKC,UAAU/C,OAAO0D,cAG3C5B,GAAU,IAAI1L,KAAI,CAAC4M,EAAO3N,IAC1B/L,EAAAA,cAACga,GAAgB/Q,EAAAA,EAAAA,GAAA,CACfC,IAAKwQ,EAAMlD,MAAQzK,GACf2N,EAAK,CACThD,OAAQqC,EACRpC,WAAY,WACZE,YAAaoB,EACXtO,EAAAA,EAAmB6P,KAAKC,UAAUjZ,KAAKkZ,MACvC/P,EAAAA,EAAmB6P,KAAKC,UAAU/C,OAAO6D,YAE3CzD,YAAamB,EACXtO,EAAAA,EAAmB6P,KAAKC,UAAUjZ,KAAKkZ,MACvC/P,EAAAA,EAAmB6P,KAAKC,UAAU/C,OAAO0D,gBAKhD,E,kCCnFP,IAAexR,EAAAA,EAAAA,KA/BW4R,KACxB,MAAMC,GAA+B5V,EAAAA,EAAAA,IAAU6V,EAAAA,IACzCxE,GAAsBrR,EAAAA,EAAAA,IAAUK,EAAAA,KAEtC/C,EAAAA,EAAAA,YAAU,KACRsY,GAA8B,GAC7B,IAEH,MAAME,GAAavQ,EAAAA,EAAAA,IAAiB,IAAM8L,EAAoBvQ,EAAAA,GAAaC,WAE3E,OACE5F,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC6Z,EAAgB,KAAE,8BACnB7Z,EAAAA,cAAC+Z,EAAiB,KAChB/Z,EAAAA,cAAA,OAAKqB,UC1BoB,SD2BvBrB,EAAAA,cAAC4a,GAAAA,EAAa,MACd5a,EAAAA,cAAA,OAAKqB,UC5ByC,SD6B5CrB,EAAAA,cAACM,EAAAA,GAAqB,CACpBiK,QAASoQ,EACTnb,KAAMC,EAAAA,GACNiM,MAAOqF,EAAAA,GACP1P,UCjCmE,QDkCnEV,MAAM,kCAKb,I,yJEfP,GAjBmBpB,IAAkB,IAAjB,SAAEyH,GAAUzH,EAC9B,MAAM,OAAEG,EAAM,SAAEC,IAAaC,EAAAA,GAAAA,MACvBC,GAAgBC,EAAAA,EAAAA,IAAYC,GAAAA,IAE5B8a,GAAWzQ,EAAAA,EAAAA,IAAiB,KAChCzK,SAAAA,EAAUmb,OAAO,CAAE3a,YAAc,GAAEC,SAASC,SAASR,KAAkB,GACtE,CAACH,EAAQC,EAAUE,IAEtB,OAAKH,EAGHM,EAAAA,cAAC4R,EAAAA,EAAe,CAACpR,KAAMua,EAAAA,GAA8BxQ,QAASsQ,EAAU/I,YAAU,GAC/E9K,GAJehH,EAAAA,cAAAA,EAAAA,SAAA,KAKA,ECpBtB,GAA0N,QCuB1N,MAAMgb,GAAezb,IAAA,IAAC,OAAEmX,EAASpP,GAAAA,GAAI,KAAE9F,EAAI,MAAEb,GAAOpB,EAAA,OAClDS,EAAAA,cAAA,MAAIuK,QAASmM,EAAQrV,UDxB0I,SCyB7JrB,EAAAA,cAACuB,EAAAA,EAAO,CAACC,KAAMA,EAAMH,UAAW2J,KAChChL,EAAAA,cAAA,OAAKqB,UD1B6O,SC0B5MV,GACtCX,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKwX,GAAY5Z,UD3BoP,UC4B3Q,EAGD6Z,GAAkBrU,IAAA,IAAC,IAAEpD,EAAG,MAAE9C,EAAK,QAAEwa,GAAStU,EAAA,OAC9C7G,EAAAA,cAACqJ,GAAAA,EAAa,CAAC7I,KAAM2a,EAASva,KAAM6C,EAAKpC,UDhCoJ,SCiC1LV,EACa,EA4ElB,OAzEiBya,KACf,MAAMC,GAAWvb,EAAAA,EAAAA,IAAYwb,EAAAA,IACvBpF,GAAsBrR,EAAAA,EAAAA,IAAUK,EAAAA,IAChCqW,GAAoB1W,EAAAA,EAAAA,IAAU2W,EAAAA,IAC9BC,GAAwB5W,EAAAA,EAAAA,IAAU6W,EAAAA,KAClC,OAAEhc,EAAM,SAAEC,IAAaC,EAAAA,GAAAA,OACtBoC,EAASC,IAAcC,EAAAA,EAAAA,MACvByZ,EAAeC,IAAoB7Z,EAAAA,EAAAA,YAEpC8Z,GAAanY,EAAAA,GAAAA,IACjBC,GAAAA,EAASC,SACR,wDACCjE,aAAQ,EAARA,EAAU0F,gDAC+ByW,mBACzC1X,OAAOhE,SAASQ,6BACOkb,mBAAmB1X,OAAOhE,SAASC,WAC5DoD,IAEIsY,GAA0BjW,EAAAA,EAAAA,cAAYkT,UAC1C,MAAMgD,QAAgCP,IAOtC,OALIO,SAAAA,EAAyBpa,QAC3BK,GAAW,GACX2Z,EAAiBI,EAAwBpa,QAGpCsU,EAAoBvQ,EAAAA,GAAasW,cAAc,GACrD,IAEGC,GAAsBpW,EAAAA,EAAAA,cAAYkT,UACtC,MAAMmD,QAA4BZ,IAOlC,OALIY,SAAAA,EAAqBva,QACvBK,GAAW,GACX2Z,EAAiBO,EAAoBva,QAGhCsU,EAAoBvQ,EAAAA,GAAa8T,UAAU,GACjD,IAEH,OAAK/Z,EAGHM,EAAAA,cAAA,OAAKqB,UDhFc,SCiFhBW,GAAWhC,EAAAA,cAAA,OAAKqB,UAAW+a,EAAAA,EAAoBxC,cAAe+B,GAC/D3b,EAAAA,cAACuV,EAAmB,MACpBvV,EAAAA,cAAC+Z,EAAiB,KAChB/Z,EAAAA,cAAA,OAAKqB,UDpF4B,SCqF/BrB,EAAAA,cAAA,OAAKqB,UDrF2C,SCsF9CrB,EAAAA,cAACqc,GAAAA,EAAW,OAEdrc,EAAAA,cAAA,OAAKqB,UDxF8D,SCwFtCga,GAC7Brb,EAAAA,cAAA,MAAIqB,UDzFmG,SC0FrGrB,EAAAA,cAACgb,GAAY,CAACra,MAAO,oBAAqBa,KAAM,QAASkV,OAAQwF,IACjElc,EAAAA,cAACgb,GAAY,CAACra,MAAO,6BAA8Ba,KAAM,SAAUkV,OAAQqF,KAE7E/b,EAAAA,cAAA,OAAKqB,UD7F2H,SC8F9HrB,EAAAA,cAACkb,GAAe,CAACva,MAAO,mBAAoB8C,IAAKoY,EAAYV,QAASmB,EAAAA,KACtEtc,EAAAA,cAACuc,GAAU,KACTvc,EAAAA,cAAA,OAAKqB,UDhG2E,SCiG9ErB,EAAAA,cAAA,QAAMqB,UDjGyR,SCkG7RrB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK+Y,GAAUnb,UAAW2J,MAC9B,uBAtBDhL,EAAAA,cAAAA,EAAAA,SAAA,KA6BZ,E,qECnGV,MAAMyc,IAAgBC,EAAAA,EAAAA,aAAW,CAAC3Z,EAAOyP,KACvC,MAAM,MAAEoC,EAAK,SAAEC,EAAQ,UAAExT,EAAS,YAAEsb,GAAgB5Z,EAE9C6Z,EAAoBC,GAAAA,EAAkBC,OAAOC,OAC7CC,GAAcnY,EAAAA,EAAAA,IAAUoY,GAAAA,IACxBC,GAAoBrY,EAAAA,EAAAA,IAAUsY,GAAAA,KAC7BC,EAAeC,IAAoBtb,EAAAA,EAAAA,WAAS,GAC7Cub,GAAW3Y,EAAAA,EAAAA,UACX4Y,GAAiBC,EAAAA,GAAAA,GAAY5I,EAAO,KACpC6I,GAA8B9Y,EAAAA,EAAAA,SAAO,GAErC+Y,GAAW5X,EAAAA,EAAAA,cAAY,KAC3BoX,EAAkBtI,GAClByI,GAAiB,GACVM,QAAQC,UAAUvZ,MAAK,IAAMwZ,QACnC,CAACjJ,KAEJkJ,EAAAA,EAAAA,qBAAoBtL,GAAK,KAChB,CAAEkL,eAGX,MAAMK,EAAYC,GACZZ,GACFC,GAAiB,GACVM,QAAQC,YAEjBV,EAAkBc,GACXhB,EAAY,CAAEiB,MAAOD,EAAKpB,wBAGnCza,EAAAA,EAAAA,YAAU,KACJsb,EAA4BrX,SAC9B2X,EAAUR,GAEZE,EAA4BrX,SAAU,CAAI,GACzC,CAACmX,IAEJ,MASMM,EAAOA,IAAMP,GAAYA,EAASlX,QAAQyX,OAEhD,OACE7d,EAAAA,cAAA,OAAKqB,UAAWiI,ICxDQ,QDwDgBjI,IACtCrB,EAAAA,cAAA,SACEwS,IAAK8K,EACL9c,KAAK,OACLmI,GAAG,gBACHiM,MAAOA,EACPvT,UC9DoC,QD+DpCsb,YAAaA,EACbuB,QAhBcjY,IAClBA,EAAEgH,OAAOkR,SACTJ,EAAUnJ,EAAM,EAeZC,SArBeI,IACnBJ,GAAYA,EAAS,CAAED,MAAOK,EAAMhI,OAAO2H,OAAQ,EAqB/CwJ,aAAa,MACbC,WAAS,IAEP,IAIV5B,GAAc1J,YAAc,gBAC5B,UEoBA,GA7E2BuL,KAAM,IAAAC,EAC/B,MAAMrI,GAAsBrR,EAAAA,EAAAA,IAAUK,EAAAA,IAChCwM,EAAeA,IAAMwE,EAAoBvQ,EAAAA,GAAa8T,YACtD,KAAEjZ,IAASV,EAAAA,EAAAA,IAAY0e,EAAAA,IACvB/E,GAAY3Z,EAAAA,EAAAA,IAAY2Y,EAAAA,IACxBgG,GAAY5Z,EAAAA,EAAAA,IAAU6Z,EAAAA,IACtBC,GAAiB9Z,EAAAA,EAAAA,IAAU+Z,EAAAA,IAC3BC,GAAepF,SAAiB,QAAR8E,EAAT9E,EAAYjZ,UAAK,IAAA+d,OAAA,EAAjBA,EAAmBjI,UAAW,IAC5C1B,EAAOkK,IAAY/c,EAAAA,EAAAA,UAAS8c,IAC5B7c,EAASC,IAAcC,EAAAA,EAAAA,MACvB0W,EAAeC,IAAoB9W,EAAAA,EAAAA,YAEpC4a,GAAc7c,EAAAA,EAAAA,IAAYif,EAAAA,IAE1BC,GAAmBlZ,EAAAA,EAAAA,cACvBkT,UACE,MAAMiG,EAA4B,QAApBC,EAAW1e,KACnB8V,GAAU6I,EAAAA,GAAAA,IAAyBF,EAAQC,EAAWE,OAAO,GAAKF,EAAWE,OAAOC,KAAK,MAE/F,IAAIC,EAAAA,GAAAA,IAAiB9e,EAAM8Y,EAAAA,GAAeC,OAAQ,CAChD,MAAMgG,EAAW,IACXN,EAAQ,CAAEte,OAAOwe,EAAAA,GAAAA,IAAyBD,EAAWE,OAAO,KAAQ,CAAC,EACzE9I,UACA9V,QAGIgf,QAAwBf,EAAUc,GAExC,GAAIC,SAAAA,EAAiB5d,MAInB,OAHAK,GAAW,QACX4W,EAAiB2G,EAAgB5d,MAIrC,KAAO,CACL,MAAM2d,EAAW,KACZ/Z,EAAAA,GAAAA,KAAKiU,aAAS,EAATA,EAAYjZ,KAAS,CAAC,EAAG,CAAC,OAAQ,aAC1C8V,UACA9V,QAGIif,QAA6Bd,EAAeY,GAElD,GAAIE,SAAAA,EAAsB7d,MAIxB,OAHAK,GAAW,QACX4W,EAAiB4G,EAAqB7d,MAI1C,CACA8P,GAAc,GAEhB,CAACzP,EAAY4W,EAAkB8F,IAOjC,OACE3e,EAAAA,cAAA,OAAKqB,UAAW2J,EAAAA,EAAEkF,MACflO,GAAWhC,EAAAA,cAAA,OAAKqB,UAAW2J,EAAAA,EAAE4O,cAAehB,GAC7C5Y,EAAAA,cAAA,OAAKqB,UAAW2J,EAAAA,EAAE0U,QAChB1f,EAAAA,cAAA,OAAKqB,UAAW2J,EAAAA,EAAE2U,KAAMpV,QAASmH,GAC/B1R,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK2S,KAEhBpW,EAAAA,cAAA,QAAMqB,UAAW2J,EAAAA,EAAE4U,KAAMlC,SAAUzX,GAAKA,EAAE4Z,kBACxC7f,EAAAA,cAACyc,GAAa,CAACE,YAAaA,EAAa/H,MAAOA,EAAOC,SAZ9CtV,IAAoB,IAAjBqV,MAAOoJ,GAAKze,EAC9Buf,EAASd,EAAI,MAcXhe,EAAAA,cAAA,OAAKqB,UAAW2J,EAAAA,EAAEiS,SAChBjd,EAAAA,cAAC8f,GAAAA,EAAc,CAACvV,QAASyU,EAAkBe,kBAAgB,KAEzD,ECjEV,IAAeld,EAAAA,EAAAA,KAhBWmd,KAGxB,QAFelgB,EAAAA,EAAAA,IAAYmgB,EAAAA,KAGzB,KAAKta,EAAAA,GAAa8T,UAChB,OAAOzZ,EAAAA,cAACqY,EAAa,MACvB,KAAK1S,EAAAA,GAAamT,eAChB,OAAO9Y,EAAAA,cAACse,GAAkB,MAC5B,KAAK3Y,EAAAA,GAAasW,cAChB,OAAOjc,EAAAA,cAACwa,GAAiB,MAC3B,KAAK7U,EAAAA,GAAaC,QAClB,QACE,OAAO5F,EAAAA,cAACob,GAAQ,MACpB,I,YCWF,IAAejY,EAAAA,EAAAA,KA7Ba+c,IAExBlgB,EAAAA,cAAA,WACEA,EAAAA,cAACuV,EAAmB,MACpBvV,EAAAA,cAACmgB,GAAAA,GAAa,CACZC,MAAO,EACPrR,MAAO,IACPC,OAAQ,IACRqR,QAAQ,cACRnN,gBAAgB,UAChBoN,gBAAgB,WAEhBtgB,EAAAA,cAAA,QAAMugB,EAAE,MAAMC,EAAE,MAAMC,GAAG,IAAIC,GAAG,IAAI3R,MAAM,KAAKC,OAAO,OACtDhP,EAAAA,cAAA,QAAMugB,EAAE,KAAKC,EAAE,MAAMC,GAAG,IAAIC,GAAG,IAAI3R,MAAM,MAAMC,OAAO,OACtDhP,EAAAA,cAAA,QAAMugB,EAAE,KAAKC,EAAE,MAAMC,GAAG,IAAIC,GAAG,IAAI3R,MAAM,MAAMC,OAAO,MACtDhP,EAAAA,cAAA,UAAQ2gB,GAAG,MAAMC,GAAG,KAAKC,EAAE,OAC3B7gB,EAAAA,cAAA,QAAMugB,EAAE,KAAKC,EAAE,MAAMC,GAAG,IAAIC,GAAG,IAAI3R,MAAM,MAAMC,OAAO,MACtDhP,EAAAA,cAAA,QAAMugB,EAAE,KAAKC,EAAE,MAAMC,GAAG,IAAIC,GAAG,IAAI3R,MAAM,MAAMC,OAAO,MACtDhP,EAAAA,cAAA,UAAQ2gB,GAAG,KAAKC,GAAG,MAAMC,EAAE,MAC3B7gB,EAAAA,cAAA,QAAMugB,EAAE,KAAKC,EAAE,MAAMC,GAAG,IAAIC,GAAG,IAAI3R,MAAM,KAAKC,OAAO,OACrDhP,EAAAA,cAAA,QAAMugB,EAAE,KAAKC,EAAE,MAAMC,GAAG,IAAIC,GAAG,IAAI3R,MAAM,MAAMC,OAAO,MACtDhP,EAAAA,cAAA,QAAMugB,EAAE,KAAKC,EAAE,MAAMC,GAAG,IAAIC,GAAG,IAAI3R,MAAM,MAAMC,OAAO,OACtDhP,EAAAA,cAAA,UAAQ2gB,GAAG,KAAKC,GAAG,MAAMC,EAAE,MAC3B7gB,EAAAA,cAAA,QAAMugB,EAAE,KAAKC,EAAE,MAAMC,GAAG,IAAIC,GAAG,IAAI3R,MAAM,MAAMC,OAAO,WCI9D,IAAemB,EAAAA,EAAAA,IAAwB2Q,EAAAA,GAAvC,EAlBiBC,KACf,MAAM,cAAEC,IAAkBC,EAAAA,EAAAA,GAAaC,EAAAA,GAAYC,MAGnD,OAFA1c,EAAAA,GAAAA,MAGEzE,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACohB,EAAAA,EAAM,KACLphB,EAAAA,cAAA,QAAMqB,UAAWiI,IAAW0X,GAAiB,mBAE/ChhB,EAAAA,cAAA,OAAKqB,UAAWiI,ICtBC,QDsBkB0X,GCtBE,UDuBnChhB,EAAAA,cAACkgB,GAAmB,MACpBlgB,EAAAA,cAAC2V,EAAiB,MAClB3V,EAAAA,cAACggB,GAAiB,OAEnB,I,mLE3BP,GAAkE,QAAlE,GAAyF,QAAzF,GAA6G,QAA7G,GAAiI,QAAjI,GAAgJ,QAAhJ,GAAiP,QAAjP,GAAoQ,Q,mXCiBpQ,MAAMqB,GAAY,CAChB,CACEnS,IAAK,uBACLoS,S,wDACA5Q,OAAQ,C,2DAEV,CACExB,IAAK,yBACLoS,SAAUC,GACV7Q,OAAQ,CAAC8Q,KAEX,CACEtS,IAAK,6BACLoS,SAAUG,GACV/Q,OAAQ,CAACgR,KAEX,CACExS,IAAK,cACLoS,SAAUK,GACVjR,OAAQ,CAACkR,MAIAC,IAAgC5P,EAAAA,GAAAA,KAAW,KACtD,MAAO6P,EAAWC,IAAgBhgB,EAAAA,EAAAA,UAAS,GACrCigB,GAAard,EAAAA,EAAAA,UAsBbsd,EAAsBC,GAAgBJ,IAAcI,EDhEiI,QAA5B,QCkE/J,OACEliB,EAAAA,cAAA,OAAKqB,UDnE0B,SCoE7BrB,EAAAA,cAAA,OAAKqB,UDpEkR,SCqErRrB,EAAAA,cAAA,OAAKqB,UAAW2J,GAAkBT,QAjBd4X,KACxBH,EAAW5b,QAAQgc,QACnBJ,EAAW5b,QAAQic,aAAaL,EAAW5b,QAAQkc,kBAAoB,GACvEN,EAAW5b,QAAQmc,MAAM,GAenBviB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK2S,EAAW/U,UAAW2J,MAEtChL,EAAAA,cAAA,OAAKqB,UDxEyS,SCyE5SrB,EAAAA,cAACuS,GAAAA,EAAY,CACXC,IAAKwP,EACLQ,MAAOnB,GACPoB,cAhCYC,IACpBX,EAAaW,EAAU,EAgCfC,UAAQ,EACRC,cAAe,OAGnB5iB,EAAAA,cAAA,OAAKqB,UAAW2J,GAAkBT,QAvBlBsY,KACpBb,EAAW5b,QAAQgc,QACnBJ,EAAW5b,QAAQic,aAAaL,EAAW5b,QAAQkc,kBAAoB,GACvEN,EAAW5b,QAAQmc,MAAM,GAqBnBviB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKwX,GAAY5Z,UAAW2J,OAG1B,IAAd8W,GACC9hB,EAAAA,cAAA,OAAKqB,UAAW2J,IACdhL,EAAAA,cAAA,MAAIqB,UAAW2J,IAAgB,2CAC/BhL,EAAAA,cAAA,MAAIqB,UAAW2J,IACbhL,EAAAA,cAAA,MAAIqB,UAAW2J,IACbhL,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKqf,GAAMzhB,UAAW2J,KAAU,mCAG3ChL,EAAAA,cAAA,MAAIqB,UAAW2J,IACbhL,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKqf,GAAMzhB,UAAW2J,KAAU,+BAMlC,IAAd8W,GACC9hB,EAAAA,cAAA,OAAKqB,UAAW2J,IACdhL,EAAAA,cAAA,MAAIqB,UAAW2J,IAAgB,+CAC/BhL,EAAAA,cAAA,MAAIqB,UAAW2J,IACbhL,EAAAA,cAAA,MAAIqB,UAAW2J,IACbhL,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKqf,GAAMzhB,UAAW2J,KAAU,UAG3ChL,EAAAA,cAAA,MAAIqB,UAAW2J,IACbhL,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKqf,GAAMzhB,UAAW2J,KAAU,WAG3ChL,EAAAA,cAAA,MAAIqB,UAAW2J,IACbhL,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKqf,GAAMzhB,UAAW2J,KAAU,sBAMlC,IAAd8W,GACC9hB,EAAAA,cAAA,OAAKqB,UAAW2J,IACdhL,EAAAA,cAAA,MAAIqB,UAAW2J,IAAgB,yDAC/BhL,EAAAA,cAAA,MAAIqB,UAAW2J,IACbhL,EAAAA,cAAA,MAAIqB,UAAW2J,IACbhL,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKqf,GAAMzhB,UAAW2J,KAAU,oBAG3ChL,EAAAA,cAAA,MAAIqB,UAAW2J,IACbhL,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKqf,GAAMzhB,UAAW2J,KAAU,qBAG3ChL,EAAAA,cAAA,MAAIqB,UAAW2J,IACbhL,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKqf,GAAMzhB,UAAW2J,KAAU,iCAMlC,IAAd8W,GACC9hB,EAAAA,cAAA,OAAKqB,UAAW2J,IACdhL,EAAAA,cAAA,MAAIqB,UAAW2J,IAAgB,2CAC/BhL,EAAAA,cAAA,MAAIqB,UAAW2J,IACbhL,EAAAA,cAAA,MAAIqB,UAAW2J,IAAa,uDAIlChL,EAAAA,cAAA,OAAKqB,UDlJ6M,SCmJhNrB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKsf,GAAO1hB,UAAW4gB,EAAoB,KACpDjiB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKsf,GAAO1hB,UAAW4gB,EAAoB,KACpDjiB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKsf,GAAO1hB,UAAW4gB,EAAoB,KACpDjiB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKsf,GAAO1hB,UAAW4gB,EAAoB,MAElD,ICxJV,I,YCsBA,MA4CMe,IAAkBvS,EAAAA,GAAAA,KAAW,IAE/BzQ,EAAAA,cAAA,MAAIqB,UDpEqH,SCqEvHrB,EAAAA,cAAA,UAAI,iCACJA,EAAAA,cAAA,UAAI,yCACJA,EAAAA,cAAA,UAAI,oDAKV,QAAegD,EAAAA,EAAAA,KAtDmBigB,KAChC,MAAMC,GAAqBpjB,EAAAA,EAAAA,IAAYqjB,EAAAA,KACjC,aAAE7X,EAAY,UAAEvB,EAAS,iBAAEkK,IAAqBjK,EAAAA,GAAAA,GAASC,EAAAA,GAAUmZ,8BACnEC,GAAkBxe,EAAAA,EAAAA,IAAUye,GAAAA,IAE5BnZ,GAAeC,EAAAA,EAAAA,GAAiBL,GAkBtC,OAhBA5H,EAAAA,EAAAA,YAAU,KACJ+gB,GACF5X,GACF,GACC,CAAC4X,KAEJ/gB,EAAAA,EAAAA,YAAU,KACH8R,GAELoP,EAAgB,CACd7iB,KAAM+iB,EAAAA,GACN9Z,QAAS,CAAE+Z,IAAKC,GAAAA,GAAQC,4BAA6BC,WAAYnhB,GAAAA,EAAeC,sBAChFmhB,cAAc,GACd,GACD,CAAC3P,IAGFjU,EAAAA,cAACqK,GAAAA,EAAK,CAACC,QAASL,EAAAA,GAAUmZ,8BACxBpjB,EAAAA,cAAA,OAAKqB,UD/Ca,SCgDhBrB,EAAAA,cAAA,OAAKqB,UDhDuC,UCiDzCwiB,EAAAA,GAAAA,OAAU7jB,EAAAA,cAAA,OAAKqB,UDjDmI,QCiD/FoJ,IAAKqZ,IACzD9jB,EAAAA,cAAA,KAAGqB,UDlDwD,SCkDnC,aACZrB,EAAAA,cAACyV,EAAY,OAEzBzV,EAAAA,cAAA,KAAGqB,UDrDyE,SCqDpD,mBACxBrB,EAAAA,cAACgjB,GAAe,MAChBhjB,EAAAA,cAAC6V,EAAAA,EAAe,OAElB7V,EAAAA,cAAA,OAAKqB,UDzDiG,QCyDrEkJ,QAASJ,GACxCnK,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK+G,KAEhBxK,EAAAA,cAAC6hB,GAA6B,OAE1B,I,4DC3DL,MAAMkC,GAAkBC,GAAW,CAACC,EAAUC,MAC9CC,EAAAA,GAAAA,IAAQC,EAAAA,GAAAA,IAAiBF,KAAaF,IACzCC,EAAS,CACPzjB,KAAM6jB,GAAAA,EACNC,QAASN,GAEb,ECFF,QAAepb,EAAAA,EAAAA,KAA+B,WAC5C,MAAM2b,GAAsB1f,EAAAA,EAAAA,IAAUkf,IAEtC,OACE/jB,EAAAA,cAACwkB,GAAAA,EAAS,CACRC,WAAY,EACZC,OAAQtX,GAAAA,EAAWuX,YAAYD,OAC/BE,SAAUxX,GAAAA,EAAWuX,YAAYC,SACjCC,QAASC,IACP1X,GAAAA,EAAW2X,OAAOD,EAAU,EAE9BE,iBAAkBA,IAAMT,EAAoBnX,GAAAA,EAAW6X,gBAG7D,ICrBA,GAA4B,Q,iICW5B,MAAMne,GAAS,YA+Bf,OA7BevH,IAAoB,IAAnB,WAAE2lB,GAAY3lB,EAC5B,MAAM4lB,GAAUC,EAAAA,EAAAA,IAAqBC,GAAAA,GAAmC,CAAE1c,GAAIuc,IACxEhe,GAASpH,EAAAA,EAAAA,IAAYqH,GAAAA,IACrBC,GAAOC,EAAAA,GAAAA,IAAgBP,GAAQI,GAC/Boe,GAASF,EAAAA,EAAAA,IAAqBG,GAAAA,GAAoB,CAAEne,UACpD,UAAEoe,GAAcF,GAAU,CAAC,GAC3B,MAAExX,EAAK,KAAEjM,EAAI,UAAE4jB,EAAS,OAAEC,EAAM,QAAEC,GAAYH,GAAa,CAAC,EAGlE,OACExlB,EAAAA,cAAC4lB,GAAAA,EAAc,CAAC1c,IAAM,kBAAiBgc,IAAcW,MAAO,KAC1D7lB,EAAAA,cAAC8lB,GAAAA,GAAQ,CAAC5c,IAAM,YAAWgc,IAAcpe,OAAQA,GAAQG,SAAO,EAACF,iBAJ5Cgf,KAAA,CAASZ,aAK5BnlB,EAAAA,cAAA,OAAKqB,UAAWC,ICzBI,SDyBoB0kB,EAAAA,GAAAA,IAAWV,ICzByE,YD0BxHU,EAAAA,GAAAA,IAAWV,IACXtlB,EAAAA,cAAA,KAAGqB,UC3BmC,QD2BTT,KAAM+kB,EAAS1Y,OAAO,SAASC,IAAI,gCAC9DlN,EAAAA,cAAA,OAAKqB,UC5B8C,QD4B3BoJ,IAAKib,IAE7B1lB,EAAAA,cAAA,OAAKqB,UC9BgF,SD+BnFrB,EAAAA,cAAA,OAAKqB,UC/B4D,SD+BvCyM,GACzBjM,EAAK,IAAC7B,EAAAA,cAAA,QAAMqB,UChCsF,SDgCjEokB,OAM7B,EEqBrB,GAhD4BlmB,IAAsC,IAArC,WAAE2lB,EAAU,iBAAEe,GAAkB1mB,EAC3D,MAAM,cAAE2mB,EAAa,KAAEC,EAAI,MAAEza,IAAU0Z,EAAAA,EAAAA,IAAqBgB,GAAAA,GAAyB,CAAEzd,GAAIuc,KACpFmB,EAAqBC,IAAyBC,EAAAA,GAAAA,GAAW,KAIhE,IAFAC,EAAAA,GAAAA,GAA8BtB,IAEzBA,EAAY,OAAOllB,EAAAA,cAAAA,EAAAA,SAAA,MAExB,MAEMymB,EAAaA,IAAMJ,GAAoB,IAAMJ,MAE7CS,EAAc,EAAIC,OAAOT,EAAcU,OAAS,GAAKD,OAAOR,EAAKS,OAAS,GAEhF,OACE5mB,EAAAA,cAAA,OAAKqB,UC1BmB,QD0BKwlB,YAPXA,IAAMP,IAO+BG,WAAYA,GACjEzmB,EAAAA,cAAA,OAAKqB,UAAWiI,IC3B6B,QD2BD,QAAOod,MACjD1mB,EAAAA,cAAA,MAAIqB,UC5BuD,SD6BxD6kB,EAAcpZ,KAAIjG,IAAA,IAAC,GAAE8B,EAAE,OAAEme,EAAM,MAAEnmB,EAAK,UAAEomB,GAAWlgB,EAAA,OAClD7G,EAAAA,cAACgnB,GAAAA,EAAmB,CAClB9d,IAAM,eAAcP,IACpBA,GAAIA,EACJme,OAAQA,EACRnmB,MAAOA,EACPomB,UAAWA,EACX7B,WAAYA,EACZ3a,QAASkc,GACT,IAEJzmB,EAAAA,cAAA,MAAIqB,UCxC2E,UDyC9E8kB,EAAKrZ,KAAIjE,IAAA,IAAC,GAAEF,EAAE,KAAEvG,EAAI,eAAE6kB,GAAgBpe,EAAA,OACrC7I,EAAAA,cAACknB,GAAAA,EAAmB,CAClBhe,IAAM,OAAMP,IACZA,GAAIA,EACJwe,KAAMF,EACN7kB,KAAMA,EACN8iB,WAAYA,EACZ3a,QAASkc,GACT,KAGNzmB,EAAAA,cAAConB,GAAAA,GAAoB,CAAC1b,MAAOA,KAE/B1L,EAAAA,cAACqnB,GAAM,CAACnC,WAAYA,IAChB,E,oCEqCV,IAAetc,EAAAA,EAAAA,KAA+BwC,EAAAA,GAAAA,IAAe6G,EAAAA,GAAAA,KAvE7BqV,KAC9B,MAAOpC,EAAYqC,IAAiBxlB,EAAAA,EAAAA,YAC9BylB,GAAiC3iB,EAAAA,EAAAA,IAAU4iB,GAAAA,IAC3CC,GAA8B7iB,EAAAA,EAAAA,IAAU8iB,EAAAA,KAE9CxlB,EAAAA,EAAAA,YAAU,KACRqlB,GAAgC,GAC/B,CAACA,IAEJ,MAAMI,GAAa9nB,EAAAA,EAAAA,IAAY+nB,GAAAA,IACzBC,GAAgChoB,EAAAA,EAAAA,IAAYioB,GAAAA,KAC3C1B,EAAqB2B,IAAyBzB,EAAAA,GAAAA,GAAW,KAE1DM,EAAc3B,GAAc,IAAMqC,EAAcrC,GAIhD+C,EAAmBA,IAAMV,EAAc,MAMvClE,GAAkBxe,EAAAA,EAAAA,IAAUye,GAAAA,IAC5B4E,GAAiCrjB,EAAAA,EAAAA,IAAUsjB,EAAAA,GAkBjD,OAAOP,SAAAA,EAAYhB,OACjB5mB,EAAAA,cAAA,OACEqB,UAAW6jB,EAAa5b,IAAW0B,GLjEQ,SKiEqBA,GAChE6b,YA1BoBuB,IAAMJ,IA2B1BvB,WAzBmB4B,IAAMhC,EAAoB4B,IA2B7CjoB,EAAAA,cAAA,MAAIqB,ULrE4D,SKsE7DumB,EAAW9a,KAAIvN,IAAA,IAAC,GAAEoJ,EAAE,WAAE2f,EAAU,OAAExB,EAAM,MAAEpb,GAAOnM,EAAA,OAChDS,EAAAA,cAACuoB,GAAAA,EAAgB,CACfrf,IAAM,YAAWP,IACjBA,GAAIA,EACJ2f,WAAYA,EACZxB,OAAQA,EACRpb,MAAOA,EACP8c,SAAUtD,IAAevc,EACzB8f,QAASvD,EACT2B,YAAaA,EAAYle,GACzB+f,iBAjCcC,EAiCmBhgB,EAjCV1C,IAC/Bod,EAAgB,CACd7iB,KAAMooB,EAAAA,GACNnf,QAAS,CACP,CAACof,EAAAA,IAASF,EACV,CAACG,EAAAA,IAAmB,SAIpBhB,EACFJ,EAA4BiB,GAE5BT,EAA+BS,GAEjCV,GAAkB,KAdIU,KAkCd,KAGLzD,GAAcllB,EAAAA,cAAC+oB,GAAmB,CAAC7D,WAAYA,EAAYe,iBAhD7CQ,IAAMJ,EAAoB4B,KAiDzCjoB,EAAAA,cAAA,OAAKqB,ULrFqF,SKsFxFrB,EAAAA,cAACgpB,GAAAA,EAAmB,CAACtf,KAAMC,EAAAA,EAAmBC,UAAUF,KAAKuf,WAG/D,IAAI,M,kCCIV,IAAergB,EAAAA,EAAAA,KA1ECsgB,KACd,MAAMC,GAAUxkB,EAAAA,EAAAA,UACVykB,GAAOzkB,EAAAA,EAAAA,WACNjF,EAAQ4D,IAAavB,EAAAA,EAAAA,WAAS,GAE/BsnB,GAAqBvpB,EAAAA,EAAAA,IAAYwpB,GAAAA,IACjCC,GAAqBzpB,EAAAA,EAAAA,IAAY0pB,GAAAA,IACjCC,GAA2B3pB,EAAAA,EAAAA,IAAY4pB,GAAAA,IACvCC,GAAS7pB,EAAAA,EAAAA,IAAY8pB,GAAAA,IACrBnY,GAAmB5M,EAAAA,EAAAA,IAAU6M,EAAAA,IAQ7BmY,GAAkBzf,EAAAA,EAAAA,IAAiB6K,IAChB,IAAA6U,EAAL,MAAd7U,EAAM/L,MACI,QAAZ4gB,EAAAV,EAAKhjB,eAAO,IAAA0jB,GAAZA,EAAcC,cAChB,GACC,IAIGC,EAA2BA,IAAMna,SAASoa,KAAKC,oBAAoB,UAAWL,GAE9EM,EAAOA,KACX1Y,IACAnO,GAAU,EAAM,GAGlBnB,EAAAA,EAAAA,YAAU,KACR,GAAKzC,EAEL,OAZ8BmQ,SAASoa,KAAKG,iBAAiB,UAAWP,GAYjEG,CAAwB,GAC9B,CAACtqB,IAEJ,MAAM2qB,EAAoBA,KACxB,MAAM,IAAEC,EAAG,IAAEC,GAAQd,EACrBL,EAAKhjB,QAAU,IAAIhC,OAAOomB,aAAaC,KAAKtB,EAAQ/iB,QAASmjB,EAAoB,CAC/EmB,QAAQC,EAAAA,GAAAA,MACRC,OAAS,IAAEC,EAAAA,GAAAA,YACXC,QAAU,WAAU1mB,OAAO2mB,0BAC3BpB,QAAQqB,EAAAA,GAAAA,IAAqBrB,KAE/BP,EAAKhjB,QAAQ6kB,OAAO,CAAEX,MAAKY,IAAKX,GAAM,EAexC,OAZApoB,EAAAA,EAAAA,YAAU,KACJknB,GAtCJ,qCAwCKhlB,KAAKgmB,GACLhmB,MAAK,IAAMf,GAAU,IAC1B,GACC,CAAC+lB,KAEJlnB,EAAAA,EAAAA,YAAU,IACD,IAAMgoB,GACZ,IAEEd,EAGHrpB,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKwS,IAAK2W,EAAS9nB,UAAWiI,ICpFb,QDoFgC+f,GCpFf,WDqFlCrpB,EAAAA,cAAA,OAAKqB,UCrFgD,QDqFzBkJ,QAAS4f,GACnCnqB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK+G,MANYxK,EAAAA,cAAAA,EAAAA,SAAA,KAQ3B,I,YE1EP,MAAMmrB,GAA4BA,CAACC,EAAOroB,KAAK,IAAAsoB,EAAA,OAAKtoB,SAAuB,QAAlBsoB,EAALtoB,EAAOuoB,wBAAgB,IAAAD,OAAA,EAAvBA,EAAAE,KAAAxoB,EAA0BqoB,EAAOroB,KAAU,EAAE,EAE3FyoB,IAAsBC,EAAAA,GAAAA,GAC1BC,EAAAA,IACAC,EAAAA,EAAAA,IAAqBzK,EAAAA,GAAY0K,QACjCD,EAAAA,EAAAA,IAAqBzK,EAAAA,GAAY2K,UACjCF,EAAAA,EAAAA,IAAqBzK,EAAAA,GAAY4K,UACjCH,EAAAA,EAAAA,IAAqBzK,EAAAA,GAAY6K,cACjCC,EAAAA,IACA,CAACC,EAAiBC,EAAkBC,EAAoBC,EAAmBC,EAAuBC,IAAkB,CAClHL,GAAmBM,EAAAA,EAAaC,kBAChCN,GAAoBK,EAAAA,EAAaE,WACjCN,GAAsBI,EAAAA,EAAaG,YACnCN,GAAqBG,EAAAA,EAAaI,oBAClCN,GAAyBE,EAAAA,EAAaK,wBACtCN,GAAiBC,EAAAA,EAAaM,yBAInB,SAASC,GAAIvtB,GAA0C,IAAzC,WAAEwtB,EAAa,GAAE,SAAE/lB,KAAajE,GAAOxD,EAClE,MAAMytB,GAAgB5H,EAAAA,EAAAA,IAAqBoG,GAAqBzoB,GAC1DkqB,GAAsB7H,EAAAA,EAAAA,IAAqB+F,GAA2BpoB,GACtE1B,EAAYiI,OAAcyjB,KAAeC,KAAkBC,GAEjE,OACEjtB,EAAAA,cAAA,OAAKqB,UAAWA,GACdrB,EAAAA,cAACktB,GAAc,CAAChkB,IAAI,mBACpBlJ,EAAAA,cAACkpB,GAAO,MACRlpB,EAAAA,cAACsnB,GAAgB,MACjBtnB,EAAAA,cAAC+gB,GAAQ,MACT/gB,EAAAA,cAACijB,GAAyB,MACzBjc,EAGP,C,mIC7CO,MAAMmmB,EAAgBntB,EAAAA,gBAEhBotB,EAAmBA,KAAMC,EAAAA,EAAAA,YAAWF,GA6FjD,MAzFoC5tB,IAAkB,IAAjB,SAAEyH,GAAUzH,EAC/C,MAAM+tB,GAAuB3oB,EAAAA,EAAAA,UAEvB4oB,GAAiBznB,EAAAA,EAAAA,cAAY,KAAM,IAAA0nB,EACvC,OAAO/Y,EAAAA,EAAAA,OAAS6Y,SAA6B,QAATE,EAApBF,EAAsBlnB,eAAO,IAAAonB,OAAA,EAA7BA,EAA+BC,YANvC,EAM0D5d,SAAS6d,cAAc,QAAQD,SAAS,GACzG,IAEGE,GAAiB7nB,EAAAA,EAAAA,cAAY8O,KAC7BH,EAAAA,EAAAA,MACE6Y,SAAAA,EAAsBlnB,UACxBknB,EAAqBlnB,QAAQqnB,UAAY7Y,IAG3C/E,SAAS6d,cAAc,QAAQD,UAAY7Y,EAC3C/E,SAAS6d,cAAc,QAAQD,UAAY7Y,EAC7C,GACC,IAEGgZ,GAAW9nB,EAAAA,EAAAA,cAAY,SAAC+nB,GAC5B,KAD+CC,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,IAAAA,UAAA,IACjC,OAAOH,EAAeE,GAEpC,IAAIG,EAAO,KACX,MAAMC,EAAUV,IACVW,EAAcL,EAAaI,EAE3BE,EAAOC,IACE,OAATJ,IAAeA,EAAOI,GAC1B,MAAMC,EAAID,EAAMJ,EACVM,EAAYL,EAAUC,EAAcK,KAAKC,IAAMD,KAAKE,GAAK,EAAKJ,EAJrD,KAKXA,EALW,KAMbV,EAAeW,GACfI,sBAAsBP,IAEtBR,EAAeE,EACjB,EAEFa,sBAAsBP,EACxB,GAAG,IAEGV,GAAY3nB,EAAAA,EAAAA,cAChB6oB,IACEf,EA3CM,EA2CQe,EAAQ,GAExB,CAACf,KAGHzrB,EAAAA,EAAAA,YAAU,KACRsrB,IACO,IAAMA,MACZ,IAEH,MAAMmB,GAAoB9oB,EAAAA,EAAAA,cAAY+oB,IACpC,MAAMC,GAAKra,EAAAA,EAAAA,MAAS6Y,aAAoB,EAApBA,EAAsBlnB,QAAUyJ,SAChDif,GAAIA,EAAG1E,iBAAiB,SAAUyE,EAAG,GACxC,IAEGE,GAAuBjpB,EAAAA,EAAAA,cAAY+oB,IACvC,MAAMC,GAAKra,EAAAA,EAAAA,MAAS6Y,aAAoB,EAApBA,EAAsBlnB,QAAUyJ,SAChDif,GAAIA,EAAG5E,oBAAoB,SAAU2E,EAAG,GAC3C,IAEGG,GAAyBlpB,EAAAA,EAAAA,cAAY,CAACmpB,EAAQC,KAClD,IAAKD,IAAWC,EAAO,OAAO,EAE9B,MAAMC,EAAYD,EAAME,UAClBC,GAAoB5a,EAAAA,EAAAA,MAASwa,EAAOK,aAAaC,aAAenrB,OAAOorB,YACvEC,EAAclC,IAIpB,OAFuB4B,EAAYE,GACPI,EAAcN,EAAYE,CACV,GAC3C,IAEGK,EAAgB,CACpBjC,YACAG,WACAL,iBACAqB,oBACAG,uBACAC,0BAGF,OACEhvB,EAAAA,cAAA,OAAKwS,IAAK8a,EAAsBjsB,UC5FU,UD6FxCrB,EAAAA,cAACmtB,EAAcwC,SAAQ,CAAC/a,MAAO8a,GAAgB1oB,GAC3C,C,2FEnFV,EARsBzH,IAA6C,IAA5C,QAAE+C,EAAO,QAAEN,GAAU,EAAK,UAAEX,GAAW9B,EAC5D,OACES,EAAAA,cAAA,OAAKqB,UAAWC,ICLK,QDKgBU,GCLQ,QDKoBX,IAC/DrB,EAAAA,cAAA,QAAMqB,UCN0D,SDMhCiB,GAC5B,C,kFELH,SAASJ,IAAoC,IAAhB0tB,EAAO9B,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,GAAAA,UAAA,GAAG,IAC5C,MAAO9rB,EAASC,IAAcF,EAAAA,EAAAA,aAEvB8tB,EAAWC,IAASvJ,EAAAA,EAAAA,GAAWqJ,GAWtC,OATAztB,EAAAA,EAAAA,YAAU,KACJH,IACF8tB,IACAD,GAAU,KACR5tB,GAAW,EAAM,IAErB,GACC,CAACD,IAEG,CAACA,EAASC,EACnB,C,wICMA,IAdmB1C,IAAgB,IAAf,OAAEiS,GAAQjS,EAC5B,MAAMkS,GAAmB5M,EAAAA,EAAAA,IAAU6M,EAAAA,IAEnC,OAAOF,EACLxR,EAAAA,cAAC4R,EAAAA,EAAe,CAACpR,KAAMqR,EAAAA,GAAUxQ,UAAWiI,IAAW0B,EAAAA,EAAE+kB,WAAY,QAASxlB,QAASA,IAAMkH,KAC3FzR,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK2S,KAGhBpW,EAAAA,cAAA,OAAKqB,UAAWiI,IAAW0B,EAAAA,EAAE+kB,WAAY,QAASxlB,QAASA,IAAMkH,KAC/DzR,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK2S,IAEjB,C,8SCWH,EApBmB4Z,KACjB,MAAMhZ,GAAiBnS,EAAAA,EAAAA,IAAUoS,EAAAA,IAC3B1M,GAAUH,EAAAA,EAAAA,IAAiB,KAC/B4M,EAAe,CACbO,MAAO0Y,EAAAA,IACP,IAGJ,OACEjwB,EAAAA,cAAC4R,EAAAA,EAAe,CAACpR,KAAM0vB,EAAAA,GAAuB7uB,UCpB3B,QDoB8CkJ,QAASA,EAASuH,YAAU,GAC3F9R,EAAAA,cAAA,OAAKqB,UCrB4C,SDsB/CrB,EAAAA,cAACqc,EAAAA,EAAW,OAEdrc,EAAAA,cAAA,OAAKqB,UCxB2B,SDyB9BrB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK0sB,KAEA,E,6GErBP,SAASC,EAAertB,GACrC,MAAM,IAAEU,EAAG,KAAE5B,EAAI,OAAE4mB,EAAM,KAAE4H,EAAI,MAAE9Y,EAAK,aAAEE,EAAY,QAAElN,GAAYxH,EAE5DiU,GAAiBnS,EAAAA,EAAAA,IAAUoS,EAAAA,IAE3B1L,GAAgBzF,EAAAA,EAAAA,cACpBG,IACEA,EAAE4Z,iBACF7I,EAAe,CAAEO,QAAOE,gBAAe,GAEzC,CAACT,EAAgBO,EAAOE,IAG1B,OACEzX,EAAAA,cAAA,KAAGY,KAAMyvB,EAAMhvB,UAAWiI,ICpBP,QDoB0Bmf,GCpBQ,SDoBale,QAASA,GAAYgN,GAAShM,GAC9FvL,EAAAA,cAAA,OAAKqB,UCrB6B,SDsBhCrB,EAAAA,cAACuB,EAAAA,EAAO,CAACyM,UAAUsiB,EAAY7sB,IAAKA,KAEtCzD,EAAAA,cAAA,OAAKqB,UCxB6D,SDwBzCQ,GAG/B,CE0BA,MAtCyB0uB,KACvB,MAAMC,GAAW1wB,EAAAA,EAAAA,IAAY2wB,EAAAA,IACvBC,GAAmB5wB,EAAAA,EAAAA,IAAY6wB,EAAAA,GAE/B1E,GAAkBnsB,EAAAA,EAAAA,IAAY4rB,EAAAA,IAE9BkF,GAAyB/rB,EAAAA,EAAAA,IAAUgsB,EAAAA,IACnCC,GAAoBhrB,EAAAA,EAAAA,cACxBG,IACEA,EAAE4Z,iBACF+Q,GAAwB,GAE1B,CAACA,IAGGG,GAA2BjxB,EAAAA,EAAAA,IAAYghB,EAAAA,IAE7C,OACE9gB,EAAAA,cAAA,OAAKqB,UCjCc,SDkCD0vB,IAA6B9E,GAAmBjsB,EAAAA,cAACgwB,EAAU,MAC3EhwB,EAAAA,cAAA,KAAGY,KAAK,IAAIS,UCnCoB,QDmCDyM,MAAM,QAAQvD,QAASumB,GAAmB,UAGvE7E,GACAjsB,EAAAA,cAAA,OAAKqB,UCvCmD,SDwCtDrB,EAAAA,cAACowB,GAAcnnB,EAAAA,EAAAA,GAAA,CACbxF,IAAKutB,EACLnvB,KAAM7B,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAG,0BACZ8f,OAAQ+H,EACRH,MAAMY,EAAAA,EAAAA,IAAkBC,EAAAA,KACpBR,KAIN,E,sBEtCV,EANkBnxB,IAAkB,IAAjB,SAAEyH,GAAUzH,EAC7B,MAAM4xB,GAAuBrxB,EAAAA,EAAAA,IAAYsxB,EAAAA,IAEzC,OAAOpxB,EAAAA,cAAA,OAAKqB,UAAWC,ICRG,QDQqB6vB,GCRA,UDQwCnqB,EAAe,EEyDxG,EAlDsBzH,IAMhB,IANiB,UACrB8xB,EAAS,6BACTC,EAA+BA,MAAM,GAAI,aACzCC,EAAY,SACZvqB,EAAQ,iBACRwqB,GACDjyB,EACC,MAAQyhB,cAAeyQ,IAAqBxQ,EAAAA,EAAAA,GAAaC,EAAAA,GAAY2K,UAC7D7K,cAAe0Q,IAA0BzQ,EAAAA,EAAAA,GAAaC,EAAAA,GAAYyQ,eACpEC,GAAsB9xB,EAAAA,EAAAA,IAAY+xB,EAAAA,IAClCC,GAAehyB,EAAAA,EAAAA,IAAYiyB,EAAAA,IAG3BC,GADkClyB,EAAAA,EAAAA,IAAYwxB,IACUD,EAExDY,GAAqBnyB,EAAAA,EAAAA,IAAYghB,EAAAA,IACjCiQ,GAA0ClN,EAAAA,EAAAA,OAAUoO,IAAuBL,EAE3EM,EAAgCV,IAAqBC,IAAqBC,EAE1ES,GAAuBC,EAAAA,EAAAA,GAAwBZ,EAAkBQ,GAEvE,OACEhyB,EAAAA,cAAA,UAAQqB,UAAW2J,EAAAA,EAAEkF,KAAMzO,MAAO,CAAEuN,OAAQmjB,IAC1CnyB,EAAAA,cAAA,OACEqB,UAAWiI,IACT0B,EAAAA,EAAEqnB,UACFT,GAAuBrF,EAAAA,EAAa+F,gBACnCb,GAAoBF,GAAgBhF,EAAAA,EAAagG,iBAClDxB,GAA4BxE,EAAAA,EAAaiG,uBAE3C/wB,MAAO,CACLuN,OAAQ8iB,IAGTf,GAA4B/wB,EAAAA,cAACgwB,EAAU,MACvChpB,GACCyqB,GAAoBF,GAExBvxB,EAAAA,cAACyyB,EAAS,CAACvpB,IAAI,aAAa8oB,GAC5BhyB,EAAAA,cAACuwB,EAAgB,CAACrnB,IAAK,uBACtBgpB,GACClyB,EAAAA,cAAA,OAAKqB,UAAW2J,EAAAA,EAAEwmB,kBAChBxxB,EAAAA,cAAC0yB,EAAAA,EAAgB,OAGd,C,uJCxDN,MAAMtnB,EAAiBtI,GAAaC,IACzC,MAAM4mB,GAAS7pB,EAAAA,EAAAA,IAAY8pB,EAAAA,IAE3B,OAAO+I,EAAAA,EAAAA,IAAsBhJ,GAAU3pB,EAAAA,cAAC8C,EAAcC,GAAY/C,EAAAA,cAAAA,EAAAA,SAAA,KAAK,EAG5D4yB,EAAqB9vB,GAAaC,IAC7C,MAAM4mB,GAAS7pB,EAAAA,EAAAA,IAAY8pB,EAAAA,IAE3B,OAAOiJ,EAAAA,EAAAA,IAAuBlJ,GAAU3pB,EAAAA,cAAC8C,EAAcC,GAAY/C,EAAAA,cAAAA,EAAAA,SAAA,KAAK,EAG7D8yB,EAAqBhwB,GAAaC,IAC7C,MAAM4mB,GAAS7pB,EAAAA,EAAAA,IAAY8pB,EAAAA,IAE3B,OAAQmJ,EAAAA,EAAAA,IAAkBpJ,GAAqC3pB,EAAAA,cAAAA,EAAAA,SAAA,MAA3BA,EAAAA,cAAC8C,EAAcC,EAAiB,C,sGCAtE,EAhBiBxD,IAA8F,IAA7F,MAAEoB,EAAQ,GAAE,SAAE6nB,GAAW,EAAK,KAAEhnB,EAAI,YAAEwxB,EAAW,QAAEzoB,EAAO,oBAAE0oB,GAAsB,GAAM1zB,EACxG,OACES,EAAAA,cAAA,OACEqB,UAAWiI,ICPM,QDOakf,GCPM,QDOkByK,ECP+B,QAA2B,SDQhH1oB,QAASA,EACTuD,MAAOnN,GAEPX,EAAAA,cAAA,QAAMqB,UAAWiI,IAAW,OCXuB,UDYjDtJ,EAAAA,cAACuB,EAAAA,EAAO,CAACC,KAAMA,KAEjBxB,EAAAA,cAAA,QAAMqB,UCd6D,SDcxC2xB,GAC1BC,GAAuBjzB,EAAAA,cAAA,OAAKqB,UAAWiI,ICfsF,QDepEkf,GCf6F,WDgBnJ,C,uEEhBV,GAAgB,SAAW,QAAQ,KAAO,S,wDCG3B,SAAS1Q,IACtB,OACE9X,EAAAA,cAAA,OAAKqB,UAAW2J,EAAE8M,UAChB9X,EAAAA,cAAA,OAAKyK,IAAKyoB,IAGhB,C,wKCwCA,EAtCa3zB,IAAuD,IAAA4zB,EAAA,IAAtD,SAAEnsB,EAAQ,UAAE3F,EAAS,iBAAE+xB,EAAgB,OAAEC,GAAQ9zB,EAC7D,MAAMuyB,GAAehyB,EAAAA,EAAAA,IAAYiyB,EAAAA,KAC3B,KAAEuB,EAAI,UAAEC,GAAcC,EAAAA,GACtBC,GAAkB3zB,EAAAA,EAAAA,IAAY4zB,EAAAA,IAC9BC,GAAqB,QAANR,EAAAS,EAAAA,SAAM,IAAAT,GAAQ,QAARA,EAANA,EAAQ/uB,cAAM,IAAA+uB,OAAA,EAAdA,EAAgB3D,cAAe,EAE9CqE,GAAW/tB,EAAAA,EAAAA,cAAY,KAG3B,MAAMguB,EAA4BhC,GAAgBsB,EAAmB,EAAIW,EAAAA,IACzE,IAAItf,EAAAA,EAAAA,MAAQ,CACV,MAAMtB,EAAM6gB,EAAAA,GAAmBF,EAE/B,MAAO,CAAE3gB,MAAKnE,OADE,gBAAemE,OAEjC,CAEA,MAAM8gB,EAASH,EAA4BI,EAAAA,GAQ3C,MAAO,CACL/gB,IAPAsgB,IAAoBF,EAChBO,EAA4B,EAC5BL,IAAoBH,EACpBW,EACA1F,KAAK4F,IAAIF,EAAQN,EAAeS,EAAAA,GAAeX,IAInDzkB,OAAQ,KACT,GACA,CAAC8iB,EAAc2B,EAAiBL,EAAkBO,IAErD,OACE3zB,EAAAA,cAAA,QAAMqB,UAAWiI,IC1CE,QAA+C,QD0CZjI,EAAWgyB,GC1CxB,SD0CkD5xB,MAAOoyB,KAChG7zB,EAAAA,cAACsR,EAAAA,EAAM,MACPtR,EAAAA,cAACq0B,EAAAA,GAA2B,KAAErtB,GACzB,C,2KERX,GAAestB,EAAAA,EAAAA,KA1BOC,KACpB,MAAMC,GAAoB10B,EAAAA,EAAAA,IAAY20B,EAAAA,IAChCC,GAA4B50B,EAAAA,EAAAA,IAAY60B,EAAAA,IACxCC,GAA6B/vB,EAAAA,EAAAA,IAAUgwB,EAAAA,IAEvCtqB,GAAUH,EAAAA,EAAAA,GAAiBwqB,EAA4B,CAACA,IAE9D,IAAKJ,IAAsBE,EAA2B,OAAO10B,EAAAA,cAAAA,EAAAA,SAAA,MAE7D,MAAM,MAAE8N,EAAK,YAAEklB,EAAW,WAAE8B,EAAU,YAAEC,GAAgBP,EAExD,OACEx0B,EAAAA,cAAA,OAAKqB,UCvBmB,SDwBtBrB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKqxB,EAAYzzB,UCxBgG,UDyB1HrB,EAAAA,cAAA,OAAKqB,UCzByC,SD0B5CrB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKsxB,EAAa1zB,UC1B4G,UD2BvIrB,EAAAA,cAAA,QAAMqB,UC3BsD,SD2BjCyM,GAC3B9N,EAAAA,cAAA,QAAMqB,UC5B4E,SD4BjD2xB,IAEnChzB,EAAAA,cAAA,OAAKqB,UC9BqG,QD8B3EkJ,QAASA,GACtCvK,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK+G,KAEZ,I,wJE0HV,GAAe8pB,EAAAA,EAAAA,KAvGHU,KACV,MAAM,IAAEloB,IAAQmoB,EAAAA,EAAAA,MACVC,GAAcp1B,EAAAA,EAAAA,IAAYq1B,EAAAA,IAC1BlJ,GAAkBnsB,EAAAA,EAAAA,IAAY4rB,EAAAA,IAC9B1U,GAAiBnS,EAAAA,EAAAA,IAAUoS,EAAAA,IAC3Bme,EAAUnJ,EAAkB,EArCf,IAsCbtC,GAAS7pB,EAAAA,EAAAA,IAAY8pB,EAAAA,IAErByL,GAAa1wB,EAAAA,EAAAA,WACZ2wB,EAAQC,IAAaxzB,EAAAA,EAAAA,aACrByzB,EAAmBC,IAAuBlP,EAAAA,EAAAA,GA3C7B,MA4Cd,eAAEmP,EAAc,aAAEC,GAxCKC,MAC7B,MAAMC,GAAqBhxB,EAAAA,EAAAA,IAAUixB,EAAAA,IAC/BC,GAAmBlxB,EAAAA,EAAAA,IAAUmxB,EAAAA,IAC7BC,GAAgBpxB,EAAAA,EAAAA,IAAUqxB,EAAAA,IAC1BvM,GAAS7pB,EAAAA,EAAAA,IAAY8pB,EAAAA,IAmB3B,MAAO,CACL8L,gBAlBqB5vB,EAAAA,EAAAA,cACrBwvB,KACEa,EAAAA,EAAAA,IAAUb,EAAQ3L,GACfplB,OAAM,IAAMC,QAAQnB,MAAM,cAAeiyB,KACzCjxB,MAAK+xB,IACJP,EAAmB,IAAKO,KAAad,EAAQe,OAAQC,EAAAA,KACrDP,EAAiBQ,EAAAA,GAAgB,GACjC,GAEN,CAAC5M,IAUDgM,cAPmB7vB,EAAAA,EAAAA,cAAY,KAC/BmwB,IACAJ,EAAmB,CAAEQ,OAAQC,EAAAA,IAAwB,GACpD,IAKF,EAcwCV,IAEzCzzB,EAAAA,EAAAA,YAAU,KACJ+yB,EACFsB,IAEAC,GACF,GACC,CAACvB,KAEJ/yB,EAAAA,EAAAA,YAAU,KACJmzB,IACFK,IACAF,IACAD,GAAkB,IAAME,EAAeJ,KACzC,GACC,CAACA,IAEJ,MAAMkB,EAASA,KACb1pB,EAAI4pB,GAAG,QAASC,GAChB7pB,EAAI4pB,GAAG,YAAaE,GACpB9pB,EAAI+pB,YAAYp1B,MAAMq1B,OAAS,UAC/BjnB,SAAS6d,cAAc,QAAQtD,iBAAiB,YAAa2M,EAAc,EAGvEN,EAAWA,KACf3pB,EAAIkqB,IAAI,QAASL,GACjB7pB,EAAIkqB,IAAI,YAAaJ,GACrB9pB,EAAI+pB,YAAYp1B,MAAMq1B,OAAS,GAC/BjnB,SAAS6d,cAAc,QAAQxD,oBAAoB,YAAa6M,GAChEtB,GAAqB,EAGjBwB,EAAgB3B,IACpBK,IACAc,KACAN,EAAAA,EAAAA,IAAUb,EAAQ3L,GACftlB,MAAK+xB,IACAA,SAAAA,EAAUc,aACZlgB,EAAe,CACbO,MAAO4f,EAAAA,GACP1f,aAAc,CAAEyf,YAAad,EAASc,cAE1C,IAED3yB,OAAM,KACLiyB,IACAd,EAAeJ,EAAO,GACtB,EAOAqB,EAAa1hB,IACjBgiB,EAAchiB,EAAMmiB,OAAO,EAGvBR,GAAe9wB,EAAAA,EAAAA,cACnBmP,IACEsgB,EAAUtgB,EAAMmiB,OAAO,GAEzB,CAAC7B,IAGG8B,GAAcvxB,EAAAA,EAAAA,cAClBvG,IAAc,IAAb,EAAEghB,EAAC,EAAEC,GAAGjhB,EACF81B,EAAWjvB,UAChBivB,EAAWjvB,QAAQ3E,MAAM0R,IAASqN,EAlHvB,GAkHsC,EAAjB,KAChC6U,EAAWjvB,QAAQ3E,MAAM2R,KAAUmN,EAAI+W,GAAN,KAAsB,GAEzD,CAACjC,EAAWjvB,UAGR2wB,GAAgBjxB,EAAAA,EAAAA,cACpBmP,IACE,MAAM,QAAEsiB,EAAO,QAAEC,GAAYviB,EAC7BoiB,EAAY,CAAE9W,EAAGgX,EAAUnC,EAAS5U,EAAGgX,EAxHxB,IAwHiD,GAElE,CAACH,EAAajC,IAGhB,OAAKF,EAGHl1B,EAAAA,cAAA,OAAKwS,IAAK6iB,EAAYh0B,UCrJH,QDqJsBkJ,QAnCzBktB,KAChBR,EAAc3B,EAAO,GAmCnBt1B,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKi0B,KAJO13B,EAAAA,cAAAA,EAAAA,SAAA,KAKjB,I,iCE3GV,GAAes0B,EAAAA,EAAAA,KA7Bf,WACE,MAAM+B,GAASv2B,EAAAA,EAAAA,IAAY63B,EAAAA,IACrBC,GAA2B/yB,EAAAA,EAAAA,IAAUgzB,EAAAA,IAErCC,GAAYhyB,EAAAA,EAAAA,cAChBmP,IACE,MAAM8iB,EAAiB1B,IAAW2B,EAAAA,GAC5BC,GAAgBhjB,EAAMijB,eAAiBjjB,EAAMzU,OAAS23B,EAAAA,GACxDJ,GAAkBE,GACpBL,EAAyBQ,EAAAA,GAC3B,GAEF,CAAC/B,EAAQwB,EAAAA,KAGLQ,GAAmBC,EAAAA,EAAAA,IAASR,EAAWS,EAAAA,IAW7C,OATAC,EAAAA,EAAAA,KAAwB1rB,IACtBA,EAAI4pB,GAAGyB,EAAAA,GAAqBE,GAC5BvrB,EAAI4pB,GAAG+B,EAAAA,GAAqBJ,GACrB,KACLvrB,EAAIkqB,IAAImB,EAAAA,GAAqBE,GAC7BvrB,EAAIkqB,IAAIyB,EAAAA,GAAqBJ,EAAiB,IAE/C,IAEI,IACT,I,yEC3Ce,MAAMK,UAAwBC,MAC3ChU,WAAAA,CAAY1e,GACV2yB,MAAM3yB,GACN4yB,KAAKC,cAAgB7yB,EACrB4yB,KAAKz2B,KAAO,iBACd,E,2DCFF,IAAI22B,EACAC,EAAU,EAMP,MCmCD51B,EAAIC,IAAM,OAEV41B,EAA2Br3B,IAC/B,MAAMs3B,EAAkB,IAAIR,EAAgB92B,GAC5Cu3B,EAAAA,EAAcC,iBAAiBF,IAC/BG,EAAAA,EAAAA,IAAuB,wBAAwB,EAuOjD,MAnOoB95B,IAAkB,IAAjB,SAAEyH,GAAUzH,EAE/B,MAAM+5B,GAAiB30B,EAAAA,EAAAA,QAAO,MACxB40B,GAAkB50B,EAAAA,EAAAA,WACjB60B,EAAcC,IAAmB13B,EAAAA,EAAAA,UAAS,IAG3C23B,GAAeC,EAAAA,EAAAA,GAAmBC,EAAAA,IAClCC,GAAkB/5B,EAAAA,EAAAA,IAAYg6B,EAAAA,IAC9B7N,GAAkBnsB,EAAAA,EAAAA,IAAY4rB,EAAAA,IAC9BqO,GAAaj6B,EAAAA,EAAAA,IAAYk6B,EAAAA,IACzBC,GAAUn6B,EAAAA,EAAAA,IAAYo6B,EAAAA,IACtBC,GAAYr6B,EAAAA,EAAAA,IAAYs6B,EAAAA,GACxBzQ,GAAS7pB,EAAAA,EAAAA,IAAY8pB,EAAAA,IAGrByQ,GAAax1B,EAAAA,EAAAA,IAAUy1B,EAAAA,IACvBC,GAAmB11B,EAAAA,EAAAA,IAAU21B,EAAAA,IAC7BC,GAAmB51B,EAAAA,EAAAA,IAAU61B,EAAAA,IAC7BC,GAAiB91B,EAAAA,EAAAA,IAAU+1B,EAAAA,IAC3BC,GAAuBh2B,EAAAA,EAAAA,IAAUi2B,EAAAA,IAEjCC,GAAsBj1B,EAAAA,EAAAA,cAAY,KACtC,GAAI8tB,EAAAA,EAAOoH,MAAO,CAChB,MAAM,IAAE1Q,EAAG,IAAEC,GAAQqJ,EAAAA,EAAOoH,aACrBpH,EAAAA,EAAOoH,MACd,MAAMC,EAAgB,CACpBC,OAAQ,CAAC3Q,EAAKD,GACd6Q,KAAM,IAGR,OADI/3B,EAAEg4B,SAASh4B,EAAE,+BAAgCiF,KAAKC,UAAU2yB,IACzDA,CACT,CACA,MAAMA,EAAgB,CACpBI,OAAQ3B,EAAatzB,SAGvB,OADIhD,EAAEg4B,SAASh4B,EAAE,uBAAwBiF,KAAKC,UAAU2yB,IACjDA,CAAa,GACnB,IAEGK,GAAqBx1B,EAAAA,EAAAA,cACzB,KAAM,CACJy1B,KAAMjC,EAAelzB,QAAQo1B,YAAYC,UACzCN,KAAM7B,EAAelzB,QAAQs1B,aAE/B,IAGIC,GAAW71B,EAAAA,EAAAA,cAAY,WAAgB,IAAfmP,EAAK6Y,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACrC,MAAM,cAAEoK,GAAkBjjB,GACpB,KAAEsmB,EAAI,KAAEJ,GAASG,IACjBM,GAAaC,EAAAA,EAAAA,IAAqBvC,EAAelzB,SACjD01B,GAAaC,EAAAA,EAAAA,IAAkBzC,EAAelzB,SAC9C41B,GAA6BC,EAAAA,EAAAA,IACjC3C,EAAelzB,QACfm1B,EACA7B,EAAatzB,SAGXhD,EAAEg4B,SACJh4B,EAAE,wCAAyC44B,EAA4B,QAAST,GAGlFlB,EAAW,CACTkB,OACAJ,OACAS,aACAE,aACA5D,gBACA8D,8BAEJ,GAAG,KAkBH75B,EAAAA,EAAAA,YAAU,KACHm3B,EAAelzB,UACpBu0B,IACArB,EAAelzB,QAAQ81B,SAASnC,EAAWt2B,KAAI,GAC9C,CAACs2B,EAAWt2B,MAEf,MAAM04B,GAA0Br2B,EAAAA,EAAAA,cAAY,KAC1C,GAAIq0B,IAAciC,EAAAA,IACd9C,EAAelzB,QAAQi2B,gBAAiB,CAC1C,MAAM,KAAEj6B,GAASk3B,EAAelzB,QAAQytB,WACpC2F,IAAiBp3B,IACnBq3B,EAAgBr3B,GAChBm4B,EAAiB6B,EAAAA,IAErB,IACC,CAACjC,EAAWX,KAEfr3B,EAAAA,EAAAA,YAAU,KACJg4B,IAAcmC,EAAAA,IAChB7C,EAAgB,GAClB,GACC,CAACU,KAEJh4B,EAAAA,EAAAA,YAAU,KACHm3B,EAAelzB,SACpBkzB,EAAelzB,QAAQm2B,QAAQ,GAC9B,CAACtQ,KAEJ9pB,EAAAA,EAAAA,YAAU,KACR,KAAKq6B,EAAAA,EAAAA,MAEH,YADAvD,EAAyB,oBAI3B,MAAQx1B,IAAKhC,EAAK,OAAEipB,GAAWqP,EACzB0C,GAAYC,EAAAA,EAAAA,MAElB,IACEpD,EAAelzB,QAAU,IAAIu2B,EAAAA,IAAY,CACvCtK,UAAWkH,EAAgBnzB,QAC3B3E,QACAm7B,iBAAiB,EACjBC,YAAY,EACZ5C,UACA6C,QAASC,EAAAA,GACTC,iBAAiBvoB,EAAAA,EAAAA,MACjBwoB,UAAU,EACVC,oBAAoB,KACjBnC,IACHoC,iBAAkB15B,IAChB,MAAM25B,EAAS,CAAEX,aAEjB,OADI/R,IAAQ0S,EAAO1S,OAASA,GACrB,CAAEjnB,KAAK45B,EAAAA,EAAAA,IAAe55B,EAAK25B,GAASE,QAAS,CAAE,kBAAmB3T,GAAU,IDjK3C4T,KAChD,IAAI9oB,EAAAA,EAAAA,MAAQ,OAEZ,IAAIskB,EAEJwE,EAAY7G,GAAG,cAAczwB,IAAK,IAAAu3B,GACb,QAAfA,EAAAv3B,EAAEw3B,qBAAa,IAAAD,GAAS,QAATA,EAAfA,EAAiBE,eAAO,IAAAF,OAAA,EAAxBA,EAA0B5W,QAAS,EACrCrgB,aAAawyB,GAGfA,EAAc1yB,YACZ,IAAMk3B,EAAYI,KAAK,IAAK13B,EAAGzF,KAAM,iBACrCo9B,EAAAA,GACD,IAEHL,EAAY7G,GAAG,aAAa,IAAMnwB,aAAawyB,KAC/CwE,EAAY7G,GAAG,YAAY,IAAMnwB,aAAawyB,IAAa,ECoJvD8E,CAAmCvE,EAAelzB,SAElDkzB,EAAelzB,QAAQ03B,gBAAgBC,kBAEvCxD,EAAiB+B,EAAAA,IAEjB,MAAM0B,EA7EeC,MACvB,MAAMC,GAAgB5F,EAAAA,EAAAA,IAASqD,EAAUpD,EAAAA,IACzC,OAAO,WAAgB,IAAftjB,EAAK6Y,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACf,MAAM,cAAEoK,GAAkBjjB,EACtBijB,IAAkBiG,EAAAA,GACpBxC,EAAS1mB,GAETipB,EAAcjpB,EAElB,CAAC,EAoEuBgpB,GAsBtB,OArBA3E,EAAelzB,QAAQswB,GAAGyB,EAAAA,GAAqB6F,GAC/C1E,EAAelzB,QAAQswB,GAAG+B,EAAAA,GAAqBuF,GAE/C1E,EAAelzB,QAAQg4B,KAAK,UAAU,KACpC,MAAM,KAAE7C,EAAI,KAAEJ,GAASG,IACjBM,GAAaC,EAAAA,EAAAA,IAAqBvC,EAAelzB,SACjD01B,GAAaC,EAAAA,EAAAA,IAAkBzC,EAAelzB,SAEhDhD,EAAEg4B,SACJh4B,EAAE,yBAA0Bm4B,GAG9BlB,EAAW,CACTkB,OACAJ,OACAS,aACAE,aACA5D,cAAemG,EAAAA,IACf,IAGG,KACL/E,EAAelzB,QAAQ4wB,IAAI,SAAUmF,GACrC7C,EAAelzB,QAAQk4B,SACvB7D,GAAkB,CAEtB,CAAE,MAAOx0B,GACPgzB,EAAyBhzB,EAC3B,IACC,KAEH9D,EAAAA,EAAAA,YAAU,KACR,MAAMo8B,GAA0BC,EAAAA,EAAAA,IAASrC,EAAyB,KAClE,GAAI7C,EAAelzB,QAEjB,OADAkzB,EAAelzB,QAAQswB,GAAG,SAAU6H,GAC7B,KACLjF,EAAelzB,QAAQ4wB,IAAI,SAAUuH,EAAwB,CAEjE,GACC,CAACpC,IAEJ,MAAMsC,GAAkBjzB,EAAAA,EAAAA,IACtBvF,IACOA,EAAEy4B,UAAW7E,IAAoB8E,EAAAA,EAAAA,IAAwBrF,EAAelzB,QAASH,KACpFA,EAAEy4B,SAAU,EACZ7D,IACF,GAEF,CAAChB,EAAiB8E,EAAAA,KAGdC,GAAmBpzB,EAAAA,EAAAA,IACvBvF,IDvP2B44B,EAAC54B,EAAGs3B,EAAauB,EAAOv/B,KAAkB,IAAhB,QAAE06B,GAAS16B,EAElE,GADAy5B,KACKD,EAAa,CAChB,MAAMgG,EAAcxB,EAAY7B,UAChC3C,EAAc1yB,YAAW,KACvB,GAAgB,IAAZ2yB,EACF8F,EAAQ74B,QACH,GAAgB,IAAZ+yB,GAAiB+F,EAAc9E,EAAS,CACjD,MAAM+E,EAAQ,CACZ9D,OAAQj1B,EAAEmxB,OACV+D,KAAM4D,EAAc,GAEtBxB,EAAY0B,MAAMD,EACpB,CACAE,cAAcnG,GACdA,OAAchL,EACdiL,EAAU,CAAC,GACVmG,EAAAA,GACL,GCsOIN,CAAgB54B,EAAGqzB,EAAelzB,QAASq4B,EAAiB,CAAExE,WAAU,GAE1E,CAACwE,IAYH,OATAt8B,EAAAA,EAAAA,YAAU,KACR,GAAKm3B,EAAelzB,WAAWqO,EAAAA,EAAAA,MAG/B,OADA6kB,EAAelzB,QAAQswB,GAAG,QAASkI,GAC5B,KACLtF,EAAelzB,QAAQ4wB,IAAI,QAAS4H,EAAiB,CACtD,GACA,CAACA,EAAkBtF,EAAelzB,UAGnCpG,EAAAA,cAACo/B,EAAAA,GAAWzP,SAAQ,CAAC/a,MAAO,CAAE9H,IAAKwsB,EAAelzB,UAChDpG,EAAAA,cAAA,OAAKqB,UCjRkB,QDiROmR,IAAK+mB,GAChCvyB,GAEiB,E,4CExP1B,EAtBwBzH,IAAuC,IAAtC,UAAE8/B,EAAS,MAAE1+B,EAAK,YAAE2+B,GAAa//B,EACxD,MAAM,MAAEwjB,GAAUwc,KAEZC,GAAe15B,EAAAA,EAAAA,cAAY,KAE/Bw5B,EAAYvc,EAAM,GACjB,CAACA,IAEJ,OACE/iB,EAAAA,cAAC4R,EAAAA,EAAe,CACdpR,KAAMi/B,EAAAA,GACNh2B,QAAS,CACP,CAAC0O,EAAAA,IAASknB,GAEZh+B,UCpBgC,QDqBhCkJ,QAASi1B,GAER7+B,EACe,E,oBEXtB,EAPmC++B,KACjC,MAAM/+B,GAAQ4B,EAAAA,EAAAA,IAAK,iCACbo9B,GAA+B96B,EAAAA,EAAAA,IAAU+6B,EAAAA,IAE/C,OAAO5/B,EAAAA,cAAC6/B,EAAe,CAACR,UCVM,qBDUuB1+B,MAAOA,EAAO2+B,YAAaK,GAAgC,E,uBET3G,MAAMG,GAAuBxb,IAClCyb,EAAAA,GAAAA,IAA0Bzb,GAASjgB,MAAK9E,IAAmB,IAAlB,UAAEygC,GAAWzgC,EACpD,OAAIygC,EAAUpZ,OAAS,EAAUjJ,QAAQsiB,OAAO,IAAItH,MAAM,qCACnDqH,EAAU,EAAE,ICuCvB,OA/BmCE,KACjC,MAAMv/B,GAAQ4B,EAAAA,EAAAA,IAAK,oCACb49B,GAA0Bt7B,EAAAA,EAAAA,IAAUu7B,GAAAA,IACpCC,GAAoBvgC,EAAAA,EAAAA,IAAYwgC,EAAAA,IAChCC,GAAmB17B,EAAAA,EAAAA,IAAUoS,EAAAA,IAC7B0S,GAAS7pB,EAAAA,EAAAA,IAAY8pB,EAAAA,IAuB3B,OAAO5pB,EAAAA,cAAC6/B,EAAe,CAACR,UFnCK,0BEmCuB1+B,MAAOA,EAAO2+B,YAV5Cvc,IAChBsd,EACFF,EAAwBpd,GAAOxe,OAAM0B,GAAKzB,QAAQ5C,MAAMqE,KAExD65B,GAAqB,IAAK/c,EAAO4G,WAC9BtlB,MAAKiS,GAhBkBA,KAC5BiqB,EAAiB,CACfhpB,MAAOipB,EAAAA,GACP/oB,aAAc,CACZgpB,GAAInqB,EAAQ3V,MACZ+/B,UAAWpqB,EACXqqB,YAAY,IAEd,EAQmBC,CAAsBtqB,KACtC/R,OAAM0B,GAAKzB,QAAQ5C,MAAMqE,IAC9B,GAG8F,ECtBlG,IAAekK,EAAAA,EAAAA,IAAwBmwB,EAAAA,GAAvC,EAXqCO,KACnC,MAAMlgC,GAAQ4B,EAAAA,EAAAA,IAAK,sCACbu+B,GAA4Bj8B,EAAAA,EAAAA,IAAUk8B,GAAAA,IAM5C,OAAO/gC,EAAAA,cAAC6/B,EAAe,CAACR,UHXO,4BGWuB1+B,MAAOA,EAAO2+B,YAJ5Cvc,IACtB+d,EAA0B/d,GAAOxe,OAAM0B,GAAKzB,QAAQ5C,MAAMqE,IAAG,GAGqC,I,YCiBtG,IAAekK,EAAAA,EAAAA,IAAwB6wB,EAAAA,GAAvC,EArBwCC,KACtC,MAAMtgC,GAAQ4B,EAAAA,EAAAA,IAAK,uCACb2+B,GAAcr8B,EAAAA,EAAAA,IAAUs8B,GAAAA,IACxBC,GAAiBv8B,EAAAA,EAAAA,IAAUw8B,GAAAA,IAC3BC,GAAyBz8B,EAAAA,EAAAA,IAAU08B,GAAAA,IACnCC,GAAc1hC,EAAAA,EAAAA,IAAY2hC,GAAAA,IAC1B9X,GAAS7pB,EAAAA,EAAAA,IAAY8pB,EAAAA,IAY3B,OAAO5pB,EAAAA,cAAC6/B,EAAe,CAACR,UJvBG,wBIuBuB1+B,MAAOA,EAAO2+B,YAV9Cvc,IAChB+c,GAAqB,IAAK/c,EAAO4G,WAC9BtlB,MAAKiS,IACJ4qB,IACAE,EAAe,CAAEr1B,IAAKy1B,EAAc,IACpCF,EAAuBhrB,EAAQ,IAEhC/R,OAAM0B,GAAKzB,QAAQ5C,MAAMqE,IAAG,GAGyD,ICf5F,IAAekK,EAAAA,EAAAA,IAAwBuxB,EAAAA,GAAvC,EAPgCC,KAC9B,MAAMhhC,GAAQ4B,EAAAA,EAAAA,IAAK,8BACbq/B,GAAqB/8B,EAAAA,EAAAA,IAAUg9B,EAAAA,IAErC,OAAO7hC,EAAAA,cAAC6/B,EAAe,CAACR,ULVI,oBKUuB1+B,MAAOA,EAAO2+B,YAAasC,GAAsB,ICGtG,IAAezxB,EAAAA,EAAAA,IAAwBuxB,EAAAA,GAAvC,EAPgCC,KAC9B,MAAMhhC,GAAQ4B,EAAAA,EAAAA,IAAK,oCACbq/B,GAAqB/8B,EAAAA,EAAAA,IAAUi9B,EAAAA,IAErC,OAAO9hC,EAAAA,cAAC6/B,EAAe,CAACR,UNTU,0BMSuB1+B,MAAOA,EAAO2+B,YAAasC,GAAsB,ICG5G,IAAezxB,EAAAA,EAAAA,IAAwBuxB,EAAAA,GAAvC,EAPgCC,KAC9B,MAAMhhC,GAAQ4B,EAAAA,EAAAA,IAAK,gCACbq/B,GAAqB/8B,EAAAA,EAAAA,IAAUk9B,EAAAA,IAErC,OAAO/hC,EAAAA,cAAC6/B,EAAe,CAACR,UPRK,qBOQuB1+B,MAAOA,EAAO2+B,YAAasC,GAAsB,I,YCSvG,MAAMI,GAAehiC,EAAAA,cAAoB,CAAE+iB,MAAO,OAErCwc,GAAiBA,KAAMlS,EAAAA,EAAAA,YAAW2U,IAExC,SAASnO,GAAS5e,EAAOgtB,GAC9B,MAAQC,YAAaC,EAAa5S,aAAc6S,GAAiBH,EAI3D9uB,EAAM8B,EAAM8N,MAAMvC,EAClBpN,EAAO6B,EAAM8N,MAAMxC,EACzB,MAAO,CACLpN,IAAKA,EAJQ,GAIOivB,EAAejvB,EAJtB,GAIqCA,EAClDC,KAAMA,EANM,IAMS+uB,EAAc/uB,EANvB,IAMsCA,EAClDrE,MAPY,IAShB,CAsDA,QAAeulB,EAAAA,EAAAA,KApDR,WACL,MAAM,IAAExnB,IAAQmoB,EAAAA,EAAAA,MACVoN,GAAeviC,EAAAA,EAAAA,IAAYwiC,EAAAA,IAC3B/G,GAAOz7B,EAAAA,EAAAA,IAAY85B,EAAAA,KAClB3kB,EAAOstB,IAAYxgC,EAAAA,EAAAA,YACpBygC,GAAgB1iC,EAAAA,EAAAA,IAAY2iC,GAAAA,IAE5BC,GAAmB58B,EAAAA,EAAAA,cAAY,KACnCy8B,EAAS,KAAK,GACb,IAEGI,GAAgB78B,EAAAA,EAAAA,cACpBmP,IACEstB,EAASttB,GACTnI,EAAIsxB,KAAK,QAASsE,EAAiB,GAErC,CAACH,EAAUG,KAGblK,EAAAA,EAAAA,KACE1rB,IACEA,EAAI4pB,GAAG,cAAeiM,GAEf,KACL71B,EAAIkqB,IAAI,cAAe2L,EAAc,IAGzC,CAACA,KAGHxgC,EAAAA,EAAAA,YAAU,IAAMugC,GAAkB,CAACL,EAAc9G,EAAMmH,ICjEhCE,EAACC,EAAStjC,KAAwB,IAAtB,KAAEiB,EAAI,QAAEiJ,GAASlK,EACpD,MAAM8jB,GAAkBxe,EAAAA,EAAAA,IAAUye,EAAAA,KAElCnhB,EAAAA,EAAAA,YAAU,KACJ0gC,GACFxf,EAAgB,CACd7iB,OACAiJ,UACAma,cAAc,GAElB,GACC,CAACif,GAAW,EDuDfD,CAAiB3tB,EAAO,CAAEzU,KAAMi/B,EAAAA,GAAwBh2B,QAAS,CAAE,CAAC0O,EAAAA,IRtE5C,gBQwExB,MAAM2qB,GAAmB14B,EAAAA,EAAAA,GAAiBs4B,EAAkB,CAACA,IAE7D,OAAKztB,GAAUutB,EAGbxiC,EAAAA,cAAA,OAAKqB,UV5Ec,QU4EKI,MAAOoyB,GAAS5e,EAAOnI,EAAI+pB,aAActsB,QAASu4B,GACxE9iC,EAAAA,cAACgiC,GAAarS,SAAQ,CAAC/a,MAAO,CAAEmO,MAAO9N,aAAK,EAALA,EAAOmiB,SAC5Cp3B,EAAAA,cAAC0/B,EAA0B,MAC3B1/B,EAAAA,cAAC2hC,GAAuB,MACxB3hC,EAAAA,cAAC+iC,GAA6B,MAC9B/iC,EAAAA,cAACgjC,GAAyB,MAC1BhjC,EAAAA,cAAC6gC,GAA4B,MAC7B7gC,EAAAA,cAACkgC,GAA0B,MAC3BlgC,EAAAA,cAACihC,GAA+B,QAXDjhC,EAAAA,cAAAA,EAAAA,SAAA,KAevC,I,YEtFA,SAASouB,KACP,OAAQ6U,aAAeC,MAAW,KACpC,CAEA,MAAMC,WAAYnjC,EAAAA,UAChB2kB,WAAAA,CAAY5hB,GACV61B,MAAM71B,GACN81B,KAAK9vB,MAAQ,IAAKhG,EAAOqgC,IAAK,GAAIC,MAAM,EAC1C,CAEAC,iBAAAA,GACEzK,KAAK0K,SACP,CAEAC,oBAAAA,GACE3K,KAAK4K,SAAS,CAAEJ,MAAM,IACtBnE,cAAcrG,KAAK6K,UACrB,CAEAH,OAAAA,GACE1K,KAAK8K,MAAQ,EACb9K,KAAKx0B,KAAO+pB,KASZM,sBAPA,SAASiV,IACH9K,KAAK9vB,MAAMs6B,OACfxK,KAAK8K,QAELjV,sBAAsBiV,EAAMC,KAAK/K,OACnC,EAE4B+K,KAAK/K,OAEjCA,KAAK6K,UAAYG,YAAYhL,KAAKiL,eAAeF,KAAK/K,MAAO,IAC/D,CAEAiL,cAAAA,GACE,MAAMC,EAAY3V,KAAQyK,KAAKx0B,KACzB++B,EAAMvK,KAAK8K,OAAqB,KAAZI,GAE1BlL,KAAK4K,SAAS,CAAEL,IAAKA,EAAIY,QAAQ,GAAK,SAEtCnL,KAAKx0B,KAAO+pB,KACZyK,KAAK8K,MAAQ,CACf,CAEAM,MAAAA,GACE,OAAOjkC,EAAAA,cAAA,OAAKqB,UChDO,SDgDaw3B,KAAK9vB,MAAMq6B,IAC7C,EAGF,U,gDErCA,MAAMc,GAAe3kC,IAAsC,IAArC,KAAEg8B,EAAI,GAAE5yB,EAAE,UAAEw7B,EAAY,QAAQ5kC,EACpD,MAAM,IAAEuN,IAAQmoB,EAAAA,EAAAA,MACVmP,GAAatkC,EAAAA,EAAAA,IAAYukC,EAAAA,IAqD/B,OAnDAliC,EAAAA,EAAAA,YAAU,KACR,KAAK2K,GAAQs3B,GAAe7I,GAAS5yB,GAAI,OAEzC,MAAM27B,EAAW,GAAE37B,eAEX47B,EAAIC,IAAMC,EAAIC,IAAOnJ,EACvBoJ,EAAK,CAACpW,KAAKqW,IAAIL,EAAIE,GAAKlW,KAAKqW,IAAIJ,EAAIE,IAKrCv8B,EAAO,CACX3H,KAAM,UACNqkC,SAAU,CACRrkC,KAAM,UACNskC,YAAa,CAAC,CAACH,EARR,CAACpW,KAAK4F,IAAIoQ,EAAIE,GAAKlW,KAAKqW,IAAIJ,EAAIE,IAChC,CAACnW,KAAK4F,IAAIoQ,EAAIE,GAAKlW,KAAK4F,IAAIqQ,EAAIE,IAChC,CAACnW,KAAKqW,IAAIL,EAAIE,GAAKlW,KAAK4F,IAAIqQ,EAAIE,IAMRC,MAGnC,KACOI,EAAAA,GAAAA,GAAQj4B,EAAIk4B,SAASV,IAGxBx3B,EAAIm4B,SAAS,CACXt8B,GAAI27B,EACJ9jC,KAAM,OACN0kC,OAAQ,CACN1kC,KAAM,UACN2H,QAEFg9B,MAAO,CACL,aAAchB,EACd,eAAgB,MAXpBr3B,EAAIs4B,UAAUd,GAASe,QAAQl9B,EAenC,CAAE,MAAOvG,GACP4C,QAAQ5C,MAAM,qBAAsBA,EACtC,CAEA,MAAO,KACL,IACMkL,EAAIk4B,SAASV,KACfx3B,EAAIw4B,YAAYhB,GAChBx3B,EAAIy4B,aAAajB,GAErB,CAAE,MAAO1iC,GACP4C,QAAQ5C,MAAM,qBAAsBA,EACtC,EACD,GACA,CAACkL,EAAKyuB,aAAI,EAAJA,EAAMiK,WAAY78B,EAAIy7B,IAExBpkC,EAAAA,cAAAA,EAAAA,SAAA,KAAK,EAGDylC,GAAmBA,KAC9B,MAAMlK,GAAOmK,EAAAA,GAAAA,KAAsB5lC,EAAAA,EAAAA,IAAY6lC,GAAAA,KAC/C,OAAO3lC,EAAAA,cAACkkC,GAAY,CAAC3I,KAAMA,EAAM5yB,GAAI,WAAYw7B,UAAW,QAAU,EAG3DyB,GAAkBA,KAC7B,MAAMrK,GAAOz7B,EAAAA,EAAAA,IAAY85B,EAAAA,IACzB,OAAO55B,EAAAA,cAACkkC,GAAY,CAAC3I,KAAMA,EAAM5yB,GAAI,UAAWw7B,UAAW,QAAU,EAG1D0B,GAAqBA,KAChC,MAAMtK,GAAOz7B,EAAAA,EAAAA,IAAYgmC,EAAAA,IACzB,OAAO9lC,EAAAA,cAACkkC,GAAY,CAAC3I,KAAMA,EAAM5yB,GAAI,gBAAiBw7B,UAAW,QAAU,EAGhE4B,GAAqBA,KAChC,MAAMxK,GAAOz7B,EAAAA,EAAAA,IAAYkmC,EAAAA,IACzB,OAAOhmC,EAAAA,cAACkkC,GAAY,CAAC3I,KAAMA,EAAM5yB,GAAI,gBAAiBw7B,UAAW,QAAU,EAGhE8B,GAAgBA,KAC3B,MAAM,UAAEC,EAAS,QAAEC,IAAYrmC,EAAAA,EAAAA,IAAYsmC,GAAAA,IACrC7K,EAAO2K,GAAaC,GAAUE,EAAAA,EAAAA,IAAwB,CAACH,EAAWC,IAAY,KACpF,OAAOnmC,EAAAA,cAACkkC,GAAY,CAAC3I,KAAMA,EAAM5yB,GAAI,QAASw7B,UAAW,QAAU,EAGxDmC,GAAmBA,KAC9B,MAAM/K,GAAOz7B,EAAAA,EAAAA,IAAYymC,GAAAA,IACzB,OAAOvmC,EAAAA,cAACkkC,GAAY,CAAC3I,KAAMA,EAAM5yB,GAAI,WAAYw7B,UAAW,WAAa,EClG5D,SAASqC,KAAe,IAAAC,EAAAC,EACrC,MACMC,GAAwB,QAAdF,GADGxR,EAAAA,EAAAA,MACQnoB,WAAG,IAAA25B,GAAS,QAATC,EAAdD,EAAgB/K,eAAO,IAAAgL,OAAA,EAAvBA,EAAAnb,KAAAkb,KAA+B,EACzCtL,EAAO5M,KAAKqY,MAAgB,IAAVD,GAAkB,IAE1C,OAAO3mC,EAAAA,cAAA,OAAKqB,UCRmK,SDQxI,SAAO85B,EAChD,CEQA,MAAM0L,GAAiB,CACrB/5B,IAAK,KACLg6B,GAAI,CACF3L,MAAM,EACN4L,UAAU,EACVxL,MAAM,EACNyL,OAAO,EACPC,UAAU,EACVC,YAAY,EACZC,YAAY,EACZ/D,KAAK,IAIHgE,GAAkB,uBAElBC,GAAuBA,MAC3BllC,EAAAA,EAAAA,YAAU,KACRiC,OAAOkjC,YAAcT,GACrBA,GAAeU,UAAY,CAACC,EAAMC,KAChCZ,GAAeC,GAAGU,GAAQC,GAC1BC,EAAAA,GAAAA,IAAuBN,GAAiB,CAAEN,GAAID,GAAeC,IAAK,EAEpED,GAAeY,KAAOD,GAAQX,GAAeU,UAAUC,GAAM,GAC7DX,GAAe1c,KAAOqd,GAAQX,GAAeU,UAAUC,GAAM,GAC7D,MAAMG,GAAcC,EAAAA,GAAAA,IAAyBR,IAE7C,OADIO,GAAeA,EAAYb,KAAID,GAAeC,GAAKa,EAAYb,IAC5D,YACE1iC,OAAOkjC,WAAW,CAC1B,GACA,KAEH9O,EAAAA,EAAAA,KAAwB1rB,IACtB+5B,GAAe/5B,IAAMA,CAAG,GACvB,IAEH,MAAM,GAAEg6B,GAAOD,GAEf,OACE7mC,EAAAA,cAAAA,EAAAA,SAAA,KACG8mC,EAAG3L,MAAQn7B,EAAAA,cAACwmC,GAAY,MACxBM,EAAGC,UAAY/mC,EAAAA,cAACylC,GAAgB,MAChCqB,EAAGvL,MAAQv7B,EAAAA,cAAC4lC,GAAe,MAC3BkB,EAAGI,YAAclnC,EAAAA,cAAC6lC,GAAkB,MACpCiB,EAAGK,YAAcnnC,EAAAA,cAAC+lC,GAAkB,MACpCe,EAAGE,OAAShnC,EAAAA,cAACimC,GAAa,MAC1Ba,EAAGG,UAAYjnC,EAAAA,cAACsmC,GAAgB,MAChCQ,EAAG1D,KAAOpjC,EAAAA,cAACmjC,GAAG,MACd,EAIQ,SAAS0E,KACtB,OAAOC,EAAAA,GAAAA,IAAoB,YAAc9nC,EAAAA,cAACqnC,GAAoB,MAAM,IACtE,C,wCCjEA,IAAe/S,EAAAA,EAAAA,KAAa,SAAsB/0B,GAA2B,IAA1B,YAAEulC,EAAW,QAAEv6B,GAAShL,EACzE,OACES,EAAAA,cAAC+nC,GAAAA,EAAM,CACLjD,YAAaA,EACbr6B,IAAKu9B,GACLxnC,KAAMynC,GAAAA,GACNl5B,MAAOm5B,GAAAA,GACPl5B,OAAQm5B,GAAAA,GACR59B,QAASA,EACTwiB,WCf0B,SDkBhC,IEfO,MAAMqb,GAAsB9xB,GAAW,CAAC2N,EAAUC,KAC9Boc,EAAAA,EAAAA,IAA0Bpc,MAG/Cqd,EAAAA,GAAAA,IAAmBjrB,EAAnBirB,CAA4Btd,EAAUC,IACtCmkB,EAAAA,EAAAA,IAAiB/xB,EAAjB+xB,CAA0BpkB,EAAUC,GCgC1C,OA/BgCokB,KAC9B,MAAMtI,GAAYlgC,EAAAA,EAAAA,IAAYyoC,GAAAA,IACxBC,GAAY1oC,EAAAA,EAAAA,IAAY2oC,EAAAA,IACxBxS,GAAgBpxB,EAAAA,EAAAA,IAAUqxB,EAAAA,IAC1BwS,GAA0B7jC,EAAAA,EAAAA,IAAUmxB,EAAAA,IACpC2S,GAA0B9jC,EAAAA,EAAAA,IAAUujC,IAEpCQ,EAAoBtyB,GAAW,KAC/B0pB,EAAUpZ,OAAS,EACrB+hB,EAAwBryB,GAExBkyB,IAAcK,EAAAA,GAAqB5S,IAAkByS,EAAwBG,EAAAA,GAC/E,EAGIC,GAAUhpC,EAAAA,EAAAA,IAAYipC,GAAAA,IAE5B,OAAK/I,UAAAA,EAAWpZ,QAAUkiB,EAAgB9oC,EAAAA,cAAAA,EAAAA,SAAA,MAGxCA,EAAAA,cAAA,WACGggC,EAAUlzB,KAAIwJ,IACb,MACEwuB,aAAa,IAAExa,EAAG,IAAEC,IAClBjU,EACJ,OAAOtW,EAAAA,cAACgpC,GAAa,CAAC9/B,IAAM,GAAEqhB,KAAOD,IAAOwa,YAAa,CAAExa,MAAKC,OAAOhgB,QAASq+B,EAAkBtyB,IAAY,IAE5G,E,kFC2BV,IAAe1N,EAAAA,GAAAA,KAA+B0rB,EAAAA,EAAAA,KApD9C,WACE,MAAM,IAAExnB,IAAQmoB,EAAAA,EAAAA,MAEVgU,GAAWnpC,EAAAA,EAAAA,IAAYopC,EAAAA,IACvBC,GAAgBrpC,EAAAA,EAAAA,IAAYspC,EAAAA,KAE3B9T,EAAQC,IAAaxzB,EAAAA,EAAAA,UAAS,OAC9BsnC,EAAQC,IAAavnC,EAAAA,EAAAA,UAAS,MAE/BwnC,ECJD,SAAoBC,GACzB,MAAMC,GAAW3pC,EAAAA,EAAAA,IAAYukC,EAAAA,KACtBkF,EAAUG,IAAe3nC,EAAAA,EAAAA,UAAS,GAEnC4nC,GAAiB7jC,EAAAA,EAAAA,cAAYG,IAC5BA,EAAE2jC,UACPF,IAAczjC,EAAE4jC,OAAS,GAAG7F,QAAQ,GAAG,GACtC,IAWH,OATA7hC,EAAAA,EAAAA,YAAU,KACR,GAAIsnC,GAAYD,EAAW,CACzB,MAAMM,EAAY,4BAElB,OADA1lC,OAAOgmB,iBAAiB0f,EAAWH,GAAgB,GAC5C,KACLvlC,OAAO8lB,oBAAoB4f,EAAWH,EAAe,CAEzD,IACC,CAACF,EAAUD,EAAWG,IAClBJ,CACT,CDfmBQ,CAAWZ,GAEtBa,GAASrlC,EAAAA,EAAAA,UA6Bf,OA3BAxC,EAAAA,EAAAA,YAAU,KACJgnC,GAAiBF,GAAYI,KAAWllB,EAAAA,GAAAA,GAAQmR,EAAQ2T,KAC1DI,EAAOY,UAAUhB,GACjB1T,EAAU0T,GACZ,GACC,CAACE,EAAeF,KAEnB9mC,EAAAA,EAAAA,YAAU,KACR,GAAIgnC,IAAkBE,GAAUJ,EAAU,CACxC,MAAMiB,EAAI,IAAIC,EAAAA,OAAe,CAC3Bv6B,QAASo6B,EAAO5jC,QAChBgkC,OAAQ,WAEPH,UAAUhB,GACVoB,MAAMv9B,GAETw8B,EAAUY,EACZ,IACC,CAACf,EAAeF,KAEnB9mC,EAAAA,EAAAA,YACE,IAAM,KACAknC,GAAQA,EAAO/K,QAAQ,GAE7B,CAAC+K,IAGEF,GAAkBF,EAGrBjpC,EAAAA,cAAA,WAEEA,EAAAA,cAAA,OAAKwS,IAAKw3B,GACRhqC,EAAAA,cAAA,OAAKqB,UEzDe,QFyDSoJ,IAAKyoB,GAAKzxB,MAAO,CAAE6R,UAAY,WAAUi2B,aANpCvpC,EAAAA,cAAAA,EAAAA,SAAA,KAU1C,K,gDGtCA,MAeMsqC,GAAW,kBAgDXC,GAAc1jC,IAAkB,IAAjB,SAAEG,GAAUH,EAC/B,MAAM2jC,EA/CiBC,MACvB,MAAMC,GAAY5qC,EAAAA,EAAAA,IAAY6qC,EAAAA,IACxBC,EAnBqBrrC,KAAA,IAAC,OAAEsrC,EAAM,OAAEvV,EAAM,KAAE90B,GAAMjB,EAAA,OAAKiB,GAAQqqC,GAAUvV,GAAUA,EAAOhL,KAAOgL,EAAO/K,GAAG,EAmBrFugB,CAAqBJ,IACtCK,EAAUC,IAAejpC,EAAAA,EAAAA,UAAS,IACnC,KAAEvB,EAAI,OAAE80B,EAAM,OAAEuV,EAAM,OAAET,EAAM,SAAEa,EAAQ,iBAAEC,GAAqBR,GAC/D,IAAE59B,IAAQmoB,EAAAA,EAAAA,MACVgB,GAAgBpxB,EAAAA,EAAAA,IAAUqxB,EAAAA,IAqChC,OAnCA/zB,EAAAA,EAAAA,YAAU,KACR,IAAKyoC,EAAiB,OAEtB,MAAMO,EAAkB,UAAS3qC,IAC3B4qC,EAAwBF,EAAmB,qBAAuB,GAElEG,EAAgB,IAAIC,EAAAA,MAAc,CACtCT,SACAU,aAAa,EACblqC,UAAY,QAAY8pC,IAAiBC,IACzChB,SACAa,aAOF,OAJAI,EAAcpB,UAAU3U,GAAQkW,QAAS,YAAWlB,cAAoBD,MAAMv9B,GAE9Ek+B,EAAY9H,KAAK9U,OAEV,KACLid,EAAc/M,SACd0M,EAAY,EAAE,CACf,GACA,CAACJ,KAEJzoC,EAAAA,EAAAA,YAAU,KACR,MAAMq9B,EAAeA,KACnBvJ,GAAe,EAIjB,OAFAnpB,EAAI4pB,GAAG,QAAS8I,GAET,KACL1yB,EAAIkqB,IAAI,QAASwI,EAAa,CAC/B,GACA,CAACvJ,IAEG8U,GAAYT,EAAQ,EAIXG,GAEhB,IAAKD,EAAS,OAAOxqC,EAAAA,cAAAA,EAAAA,SAAA,MAErB,MAAMyrC,EAAU57B,SAAS6d,cAAe,IAAG8c,KAC3C,OAAKiB,EACEC,GAAAA,aAAsB1kC,EAAUykC,GADlBzrC,EAAAA,cAAAA,EAAAA,SAAA,KAC0B,EAcjD,QAAe4I,EAAAA,GAAAA,KAA+B0rB,EAAAA,EAAAA,KAXhCqX,KACZ,MAAM,KAAEnrC,IAASV,EAAAA,EAAAA,IAAY6qC,EAAAA,IACvBzb,EAzES1uB,KACf,OAAQA,GACN,KAAK+1B,EAAAA,GACH,OAAOv2B,EAAAA,cAAC4rC,GAAAA,EAAS,MACnB,KAAKC,EAAAA,GACH,OAAO7rC,EAAAA,cAAC8rC,GAAAA,GAAQ,MAClB,KAAKjD,EAAAA,GACH,OAAO7oC,EAAAA,cAAC+rC,GAAAA,GAAY,MACtB,QACE,OAAO,KACX,EA+DcC,CAASxrC,GAGvB,OAF2BV,EAAAA,EAAAA,IAAYmsC,EAAAA,KAEX/c,GACxBrL,EAAAA,EAAAA,OAAUrjB,IAASqoC,EAAAA,GAA2B7oC,EAAAA,cAAAA,EAAAA,SAAA,OAE3C6jB,EAAAA,EAAAA,MAAS7jB,EAAAA,cAAA,OAAKqB,UCxGmB,SDwGI6tB,GAAelvB,EAAAA,cAACuqC,GAAW,KAAErb,GAH/BlvB,EAAAA,cAAAA,EAAAA,SAAA,KAGmD,KEhG/F,MAAMksC,IAAgBz3B,EAAAA,EAAAA,MAAS,GAAM,GAC/B03B,GAAenuB,GAAQA,EAAMuQ,KAAKqY,MAAM5oB,GAAOkuB,GAAgB3d,KAAK6d,MAAMpuB,GAAOuQ,KAAKqY,MAAM5oB,GCHnF,SAASquB,KACtB,MAAM,WAAEC,IAAexsC,EAAAA,EAAAA,IAAYysC,EAAAA,KAC7B,IAAEz/B,IAAQmoB,EAAAA,EAAAA,MACVuX,GAAsB3nC,EAAAA,EAAAA,IAAU4nC,EAAAA,KAEtCtqC,EAAAA,EAAAA,YAAU,KACH2K,GAAQw/B,IAEbE,IAEA1/B,EAAI4/B,OAAOJ,GAAW,GACrB,CAACx/B,EAAKw/B,GACX,C,gBCVA,MAAMlpC,GAAIC,IAAM,OAiChB,OA/B0BspC,KACxB,MAAMC,GAAY9sC,EAAAA,EAAAA,IAAY+sC,EAAAA,IACxBC,GAAuBjoC,EAAAA,EAAAA,IAAUkoC,EAAAA,KAEvCvU,EAAAA,EAAAA,KAAwB1rB,KACtBkgC,EAAAA,GAAAA,IAAO,UAAWJ,EAAY,SAAW,UAEzC,MAAMK,GAAoBzQ,EAAAA,EAAAA,MACtBp5B,GAAEg4B,SAASh4B,GAAE,cAAe6pC,IAChCD,EAAAA,GAAAA,IAAO,iBAAkBE,OAAOD,IAEhC,MAAME,GAAcC,EAAAA,GAAAA,IAAiB,CAAEhrC,KAAM,SAC7CirC,EAAAA,GAAAA,KAAeC,GAASA,EAAMC,mBAAmB,SAEjD,MAAMC,EAAYL,EAAYM,WAAW,CAAEC,GAAI,UACzCC,EAAWR,EAAYM,WAAW,CAAEC,GAAI,SAC9C5gC,EAAIsxB,KAAK,aAAa,KACpBoP,EAAUI,QAAQ,IAEpB9gC,EAAIsxB,KAAK,QAAQ,KACfuP,EAASC,SACTT,EAAYS,SAEZ,MAAM,eAAEC,EAAiB,EAAC,aAAEC,EAAe,GAAMH,EAC3CI,EAAWD,EAAeD,EAC5BzqC,GAAEg4B,SAASh4B,GAAE,YAAa2qC,GAC9BjB,EAAqB,CAAEiB,WAAUd,qBAAoB,GACrD,GACD,GAAG,EC5BR,MAAM7pC,GAAIC,IAAM,OAsDhB,OApD0B2qC,KACxB,MAAM,WAAEC,EAAU,aAAEC,EAAY,cAAEC,EAAgB,CAAC,IAAMruC,EAAAA,EAAAA,IAAYysC,EAAAA,KAC/D,IAAEz/B,IAAQmoB,EAAAA,EAAAA,MACVmZ,GAAsBvpC,EAAAA,EAAAA,IAAUwpC,EAAAA,IAChC5E,GAAW3pC,EAAAA,EAAAA,IAAYukC,EAAAA,KAE7BliC,EAAAA,EAAAA,YAAU,KACR,IAAK2K,IAASmhC,IAAeC,EAAe,OAI5C,IAAII,EAFJF,IAGA,MAAMG,EAAU,IACXJ,EACHxf,SAAUwf,EAAcK,kBACpBL,EAAcM,kBACd,CACEC,OAAQrgB,GAAK,EAAIE,KAAKogB,IAAI,EAAItgB,EAAG,KAEnC,CAAC,GAGDugB,EAAYT,EAAcU,OAASC,EAAAA,GAA2B,CAAC,EAAI,CAAE5W,cAAemG,EAAAA,IAEtFj7B,GAAEg4B,UACA6S,GAAY7qC,GAAE,aAAc6qC,EAAY,eAAec,EAAAA,EAAAA,IAAYd,IACnEC,GAAc9qC,GAAE,eAAgB8qC,IAGlCD,IAAcc,EAAAA,EAAAA,IAAYd,GAC5BK,EAAOA,KACL,IACExhC,EAAIkiC,UAAUf,EAAYM,EAASK,EACrC,CAAE,MAAO3oC,GACPkzB,EAAAA,EAAc8V,cAAc,MAAQ,iBAAgB5mC,KAAKC,UAAU2lC,MACnE9U,EAAAA,EAAcC,iBAAiBnzB,EACjC,GAEOioC,IACTI,EAAOA,KACL,IACExhC,EAAIoiC,OAAO,IAAKX,EAASrT,OAAQgT,GAAgBU,EACnD,CAAE,MAAO3oC,GACPkzB,EAAAA,EAAc8V,cAAc,MAAQ,mBAAkB5mC,KAAKC,UAAU4lC,MACrE/U,EAAAA,EAAcC,iBAAiBnzB,EACjC,IAGJwjC,EAAWpjC,WAAWioC,EAAM,GAAKxhC,EAAIsxB,KAAK,OAAQkQ,EAAK,GACtD,CAACxhC,EAAKmhC,EAAYC,EAAczE,GAAU,E,YCtC/C,GAlB6B0F,KAC3B,MAAMC,GAAaC,EAAAA,GAAAA,MAEbC,GAAaC,EAAAA,EAAAA,KACjBziC,IACE,MAAM2G,EAAU27B,KACXjrB,EAAAA,GAAAA,GAAQrX,EAAIsiC,aAAc37B,IAC7B3G,EAAIwiC,WAAW77B,EAAS,CAAEykB,cAAeiG,EAAAA,IAC3C,GAEF,CAACiR,KAGHjtC,EAAAA,EAAAA,YAAU,KACRmtC,GAAY,GACX,CAACA,GAAY,E,0ICDlB,GAhBmBE,KACjB,MAAOC,EAASC,IAAc3tC,EAAAA,EAAAA,WAAS,GAEjC4tC,GAAcvlC,EAAAA,EAAAA,IAAiB,IAAMslC,GAAW,IAAO,CAACA,IACxDE,GAAcxlC,EAAAA,EAAAA,IAAiB,IAAMslC,GAAW,IAAQ,CAACA,IAEzDG,GAAiBp7B,EAAAA,EAAAA,MACnB,CACEoS,YAAa8oB,EACblpB,WAAYmpB,GAEd,CAAC,EAEL,MAAO,CAAEH,UAASC,aAAYG,iBAAgB,ECMhD,GAjBkBtwC,IAAA,IAAC,QAAEgL,GAAShL,EAAA,OAC5BS,EAAAA,cAAA,OAAKqB,UCNgB,QDMGkJ,QAASA,GAC/BvK,EAAAA,cAAA,OAAKqB,UCPsE,SDQzErB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK+G,KAEhBxK,EAAAA,cAAA,KAAGqB,UCVgC,SDWjCrB,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,6CAET3I,EAAAA,cAAA,KACEqB,UCdmD,QDenD0O,wBAAyB,CACvBC,QAAQzN,EAAAA,EAAAA,IAAK,6CAGb,EEbR,GAJwBhD,IAAA,IAAC,IAAE4T,EAAG,KAAEC,EAAI,KAAE5T,EAAO,GAAGD,EAAA,OAC9CS,EAAAA,cAAA,QAAMqB,UCHc,QDGII,MAAO,CAAE0R,MAAKC,OAAMO,aAAcnU,EAAO,EAAGuP,MAAOvP,EAAMwP,OAAQxP,IAAe,E,WEA1G,MAAMswC,GAAYl7B,GAASrR,SAASqR,GAEvBm7B,GAAgBn7B,GAASsuB,KAAK9U,MAAQ4hB,SAASp7B,GAAS,IAAK,IAAMq7B,GAAAA,GAchF,OAZ8B,SAAC/mC,GAC7B,MAAMH,GADmC+kB,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,GAAAA,UAAA,GAAGgiB,KACtBhI,EAAAA,GAAAA,IAAoB5+B,KACnCgnC,EAAoBC,IAAyBpuC,EAAAA,EAAAA,UAASgH,GAO7D,MAAO,CAAEmnC,qBAAoBE,qBALDtqC,EAAAA,EAAAA,cAAY,KACtCqqC,GAAsB,IACtBE,EAAAA,GAAAA,IAAmBnnC,EAAKg6B,KAAK9U,MAAM,GAClC,IAGL,ECjBA,GAA8B,QAA9B,GAAmD,QAAnD,GAAmE,QAAnE,GAAwF,QAAxF,GAAsH,QAAtH,GAA8I,QAA9I,GAAqK,QCc9J,MAAMkiB,GAA0B/wC,IASjC,IAAAgxC,EAAA,IATkC,GACtC5nC,EAAE,SACF6nC,EAAQ,OACR/nB,EAAM,KACNjnB,EAAI,MACJb,EAAK,UACL8vC,EAAS,aACTC,EAAY,YACZpR,GACD//B,EACC,MAAM,mBAAE2wC,EAAkB,oBAAEE,GAAwBO,GAAsBhoC,GAEpE4B,GAAUH,EAAAA,EAAAA,IAAiB,KAC/BgmC,IACA9Q,GAAa,GACZ,CAACA,EAAa8Q,IAEXQ,EAA2C,QAA7BL,GAAGzwC,EAAAA,EAAAA,IAAY+wC,EAAAA,WAAc,IAAAN,OAAA,EAA1BA,EAA4BO,KAC7CC,GAA6BC,EAAAA,IAAyBJ,IAAmBK,EAAAA,GAE/E,OACEjxC,EAAAA,cAAA,OACEuK,QAASA,EACTlJ,UAAWiI,KAAW0B,GAAeA,GAAcyd,GAAUzd,GAAgBwlC,GAAYxlC,KAEzFhL,EAAAA,cAAA,OAAKqB,UAAU,QACbrB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKjC,EAAMH,UAAWiI,KAAWknC,GAAYxlC,MACrD+lC,GAA6Bb,GAC5BlwC,EAAAA,cAACkxC,GAAe,CAAC/9B,KAAKsB,EAAAA,EAAAA,MAAS,EAAI,EAAGrB,MAAMqB,EAAAA,EAAAA,MAAS,GAAK,MAG9DzU,EAAAA,cAAA,QAAMqB,UAAWiI,KAAW0B,GAASwlC,GAAYxlC,IAAkB,aAAYylC,EAAW3iC,MAAO4iC,GAC9F/vC,GAEC,EAIGwwC,GAAkBtqC,IAUzB,IAV0B,KAC9BrF,EAAI,WACJ4vC,EAAU,UACVC,EAAS,GACT1oC,EAAE,SACF6nC,EAAQ,YACRc,EAAW,MACX3wC,EAAK,UACL8vC,EAAS,aACTC,GACD7pC,EACC,MAAM0qC,GAAc1sC,EAAAA,EAAAA,IAAU2sC,EAAAA,IACxB/oB,EAAS9f,KAAO7I,EAAAA,EAAAA,IAAY+wC,EAAAA,IAAeC,KAE7CroB,GAAU+nB,GAAUe,EAAYE,EAAAA,GAAUC,SAE9C,MAAMpS,GAAcx5B,EAAAA,EAAAA,cAAY,IAAMyrC,EAAY9oB,EAASgpB,EAAAA,GAAUC,QAAU/oC,IAAK,CAAC4oC,EAAa9oB,EAAQ9f,IAEpG4B,GAAUH,EAAAA,EAAAA,IAAiB,IAAMk1B,KAAe,CAACA,IAEvD,OAAIgS,EAEAtxC,EAAAA,cAACswC,GAAuB,CACtB3nC,GAAIA,EACJ6nC,SAAUA,EACV/nB,OAAQA,EACRjnB,KAAMA,EACNb,MAAOA,EACP8vC,UAAWA,EACXC,aAAcA,EACdpR,YAAaA,IAKjBt/B,EAAAA,cAAA,OACEuK,QAASA,EACTlJ,UAAWiI,KAAW0B,GAAeA,GAAcyd,GAAUzd,GAAgBwlC,GAAYxlC,KAEzFhL,EAAAA,cAAA,OAAKqB,UAAU,QACbrB,EAAAA,cAACuB,EAAAA,EAAO,CAACC,KAAMA,EAAMH,UAAWiI,KAAWknC,GAAYxlC,OAEzDhL,EAAAA,cAAA,QAAMqB,UAAWiI,KAAW0B,GAASwlC,GAAYxlC,KAC/ChL,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAK,oBAAmBA,OAEzB,EAIGgpC,GAAmB9oC,IAA4B,IAA3B,KAAErH,EAAI,GAAEmH,EAAE,SAAE6nC,GAAU3nC,EACrD,MAAM+oC,GAAe/sC,EAAAA,EAAAA,IAAUgtC,EAAAA,IACzBppB,EAAS9f,KAAO7I,EAAAA,EAAAA,IAAYgyC,EAAAA,IAE9BrpB,GAAU+nB,GAAUoB,EAAaG,EAAAA,GAAWC,QAEhD,MAAMznC,GAAUH,EAAAA,EAAAA,IAAiB,IAAMwnC,EAAanpB,EAASspB,EAAAA,GAAWC,OAASrpC,IAAK,CAACipC,EAAcnpB,EAAQ9f,IAE7G,OACE3I,EAAAA,cAAA,OACEuK,QAASA,EACTlJ,UAAWiI,KAAW0B,GAAeyd,GAAUzd,GAAgBwlC,GAAYxlC,KAE3EhL,EAAAA,cAAA,OAAKqB,UAAU,QACbrB,EAAAA,cAAA,OAAKyK,IAAKjJ,EAAMH,UAAWiI,KAAWknC,GAAYxlC,OAEpDhL,EAAAA,cAAA,QAAMqB,UAAWiI,KAAW0B,GAASwlC,GAAYxlC,KAC/ChL,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAK,oBAAmBA,OAEzB,ECxHV,OAAkG,QAAlG,GAAoH,QAApH,GAAmK,QAAnK,GAAyL,QAAzL,GAA2N,Q,gXCS3N,MAAMspC,GAAe,CACnB,CACE/oC,IAAK6oC,EAAAA,GAAWC,OAChBxwC,KAAM0wC,GACN1xC,KAAM2xC,EAAAA,GACNC,mBAAmB,GAErB,CACElpC,IAAK6oC,EAAAA,GAAWM,OAChB7wC,KAAM8wC,GACN9xC,KAAM2xC,EAAAA,GACNC,mBAAmB,GAErB,CACElpC,IAAK6oC,EAAAA,GAAWQ,OAChB/wC,KAAMgxC,GACNhyC,KAAM2xC,EAAAA,GACNC,mBAAmB,GAErB,CACElpC,IAAK6oC,EAAAA,GAAWU,UAChBjxC,KAAMkxC,GACNlyC,KAAM2xC,EAAAA,GACNC,mBAAmB,GAErB,CACElpC,IAAK6oC,EAAAA,GAAWY,KAChBnxC,KAAMoxC,GACNpyC,KAAM2xC,EAAAA,GACNC,mBAAmB,IAGjBS,GAAc,CAClB,CACE3pC,IAAKuoC,EAAAA,GAAUC,QACflwC,KAAM,UACNhB,KAAMsyC,EAAAA,GACNV,mBAAmB,GAErB,CACElpC,IAAKuoC,EAAAA,GAAUsB,QACfvxC,KAAM,kBACNhB,KAAMsyC,EAAAA,GACNV,mBAAmB,GAErB,CACElpC,IAAKuoC,EAAAA,GAAUuB,IACfxxC,KAAM,kBACNhB,KAAMsyC,EAAAA,GACNV,mBAAmB,GAErB,CACElpC,IAAKuoC,EAAAA,GAAUwB,QACfzxC,KAAM,eACNhB,KAAMsyC,EAAAA,GACNV,mBAAmB,GAErB,CACElpC,IAAKuoC,EAAAA,GAAUyB,GACf1xC,KAAM,iBACNhB,KAAMsyC,EAAAA,GACNV,mBAAmB,IAIVe,GAAqBA,IAAMlB,GAE3BmB,GAAoBA,KAC/B,MAAMC,GAAkBvzC,EAAAA,EAAAA,IAAYwzC,EAAAA,KAE7BC,EAASC,IAAczxC,EAAAA,EAAAA,UAAS8wC,IAOvC,OANA1wC,EAAAA,EAAAA,YAAU,KACR,MAAMoxC,EAAU,IAAIV,IACpBU,EAAQE,OAAO,EAAG,KAAMJ,GACxBG,EAAWD,EAAQ,GAClB,CAACF,IAEGE,CAAO,EC9ET,MAAMG,GAAsC,kBA6BnD,OA3BwBC,KACtB,MAAMN,GAAkBvzC,EAAAA,EAAAA,IAAYwzC,EAAAA,KAC9B,mBAAEpD,EAAkB,oBAAEE,GAAwBO,GAClD+C,GACA3D,IAGIv6B,GAAUpL,EAAAA,EAAAA,IAAiB,KAC/BgmC,GAAqB,GACpB,CAACA,IAEJ,IAAKiD,EAAgBzsB,SAAWspB,EAAoB,OAAOlwC,EAAAA,cAAAA,EAAAA,SAAA,MAE3D,MAAM,IAAEkJ,EAAG,aAAEwnC,GAAiB2C,EAAgB,GAE9C,OACErzC,EAAAA,cAAA,OAAKqB,UC1Bc,SD2BjBrB,EAAAA,cAAA,OAAKqB,UC3B8B,SD4BjCrB,EAAAA,cAAA,KAAGkJ,IAAKA,GAAMwnC,IAEhB1wC,EAAAA,cAAA,OAAKqB,UC9BkD,QD8B1BkJ,QAASiL,GACpCxV,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK+G,KAEhBxK,EAAAA,cAAA,OAAKqB,UCjCkE,UDkCnE,E,4REEV,MAAMuyC,GAAUr0C,IAAyC,IAAxC,SAAEs0C,EAAQ,UAAEC,EAAS,WAAEC,GAAYx0C,EAClD,MAAMy0C,GAAUl0C,EAAAA,EAAAA,IAAY+sC,EAAAA,KAEpB4C,QAASwE,EAAoBvE,WAAYwE,GAAiB1E,KAC5DnsB,GAAkBxe,EAAAA,EAAAA,IAAUye,EAAAA,IAC5B6wB,GAAoBtvC,EAAAA,EAAAA,IAAUuvC,EAAAA,IAE9BC,GAAkBjqC,EAAAA,EAAAA,IAAiB,IAAM8pC,GAAcD,IAAqB,CAACC,EAAcD,IAE3FK,GAAmBxuC,EAAAA,EAAAA,cAAY,KACnCquC,IACA9wB,EAAgB,CACd7iB,KAAM+zC,EAAAA,GACN9qC,QAAS,CAAE+Z,IAAKgxB,EAAAA,GAAUC,iBAAkB,CAACt8B,EAAAA,IAAS67B,EAAU,SAAW,UAC3E,GACD,CAACG,EAAmB9wB,IAEjB4uB,EAAekB,KACfN,EAAcO,KAEpB,OACEpzC,EAAAA,cAAA,OAAKqB,UAAWiI,KJzDuL,QIyDjKuqC,GAAY7oC,GAAU8oC,GAAa9oC,KACvEhL,EAAAA,cAAA,OAAKqB,UJ1DgC,SI2DnCrB,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,8BAET3I,EAAAA,cAAA,OAAKqB,UAAWiI,KJ7DoH,SI6DzFiB,QAASA,IAAMwpC,KACxD/zC,EAAAA,cAAA,OAAKqB,UAAU,QACbrB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK+G,OAGjBiK,EAAAA,EAAAA,OACCzU,EAAAA,cAAA,OAAKqB,UAAW2J,IACdhL,EAAAA,cAAA,OAAKqB,UJpEgP,SIqEnPrB,EAAAA,cAAA,OAAKqB,UJrEsQ,SIsEzQrB,EAAAA,cAAC00C,GAAAA,EAAW,CAACC,aAAcX,EAASn/B,SAAUy/B,IAC9Ct0C,EAAAA,cAAA,KAAGqB,UJvE6R,SIwE9RrB,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,qCAGX3I,EAAAA,cAAA,OAAKyK,IAAKmqC,GAAgBvzC,UJ3EkS,QI2EpQkJ,QAAS8pC,IAChEJ,GAAsBj0C,EAAAA,cAAC60C,GAAS,CAACtqC,QAAS8pC,MAIjDr0C,EAAAA,cAAA,OAAKqB,UAAW2J,IACdhL,EAAAA,cAAA,OAAKqB,UAAW2J,IACdhL,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,4BAET3I,EAAAA,cAAA,OAAKqB,UAAW2J,IACbinC,EAAanlC,KAAIjG,IAAA,IAAC,KAAErG,EAAI,IAAE0I,EAAG,KAAE1H,EAAI,kBAAE4wC,GAAmBvrC,EAAA,OACvD7G,EAAAA,cAAC2xC,GAAgB,CAACzoC,IAAKA,EAAKP,GAAIO,EAAK1H,KAAMA,EAAMgvC,UAAWwD,IAAY5B,GAAqB,MAInGpyC,EAAAA,cAAA,OAAKqB,UAAW2J,IACdhL,EAAAA,cAAA,OAAKqB,UAAW2J,IACdhL,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,2BAET3I,EAAAA,cAAA,OAAKqB,UAAW2J,IACb6nC,EAAY/lC,KAAIjE,IAAA,IAAC,IAAEK,EAAG,KAAE1H,EAAI,YAAE8vC,EAAW,kBAAEc,EAAiB,MAAEzxC,EAAK,UAAE8vC,EAAS,aAAEC,GAAc7nC,EAAA,OAC7F7I,EAAAA,cAACmxC,GAAe,CACdjoC,IAAKA,EACLP,GAAIO,EACJ1H,KAAMA,EACNb,MAAOA,EACP8vC,UAAWA,EACXC,aAAcA,EACdF,UAAWwD,IAAY5B,EACvBd,YAAaA,GACb,MAIJ,EA4FV,QAAenhC,EAAAA,EAAAA,IAAwB2kC,GAAAA,GAAvC,EAxFsBC,KAAM,IAAAxE,EAC1B,MAAOyE,EAASC,IAAclzC,EAAAA,EAAAA,UAAS,UAEjC,QAAE0tC,EAAO,WAAEC,EAAU,eAAEG,GAAmBL,KAC1CqE,EAAuB,WAAZmB,EACXlB,EAAwB,YAAZkB,GACZ,OAAEE,EAAM,OAAEC,IAAWl0B,EAAAA,GAAAA,GAAaC,GAAAA,GAAY6K,cAC9CqpB,GAA4BvwC,EAAAA,EAAAA,IAAUwwC,EAAAA,KACtC,mBAAEnF,EAAoBE,oBAAqBkF,GAA8B3E,GAAsB,WAC7FP,oBAAqBmF,GAAuC5E,GAClE+C,IAGIK,GAAajuC,EAAAA,EAAAA,cAAY,KAC7BmvC,EAAW,WACXA,EAAW,UACXE,GAAQ,GACP,CAACF,EAAYE,IAEVK,GAAc1vC,EAAAA,EAAAA,cAAY,KAC9BmvC,EAAW,UACXvF,GAAW,GACXwF,IACAE,IACAE,IACAC,GAAoC,GACnC,CAACN,EAAYvF,EAAYwF,EAAQE,EAA2BE,IAEzDG,GAAsD,QAAlClF,GAAAzwC,EAAAA,EAAAA,IAAYwzC,EAAAA,WAAsB,IAAA/C,OAAA,EAAlCA,EAAoC3pB,QAAS,EACjEgqB,GAAiB9wC,EAAAA,EAAAA,IAAY+wC,EAAAA,IAC7B6E,GAAoB9E,aAAc,EAAdA,EAAgBE,QAASG,EAAAA,GAC7C0E,EAAYD,EAAoBE,GAAoBC,GACpDC,EAAiBJ,EAAoBK,GAAyBC,GAE9DjF,GAA6BC,EAAAA,KAA0B0E,EAE7D,OACE11C,EAAAA,cAAA,OAAKqB,UAAWiI,KJtJG,QIsJgBuqC,GAAY7oC,GAAU8oC,GAAa9oC,MACnEyJ,EAAAA,EAAAA,MACCzU,EAAAA,cAAC4zC,GAAO,CAACG,WAAYA,EAAYD,UAAWA,EAAWD,SAAUA,IAEjE7zC,EAAAA,cAACqK,GAAAA,EAAK,CACJC,QAAS4W,GAAAA,GAAY6K,aACrBrX,OAAQm/B,EACRpyC,MAAO,CACL+R,OAAQ,IACRL,IAAK,OACLpE,MAAO,OACPuE,UAAW,sBACX2iC,wBAAyB,IACzBC,uBAAwB,KAE1BriC,aAAc,CACZZ,OAAQ,IACRC,gBAAiB,oBAEnBoB,eAAgBy/B,EAChBv/B,2BAAyB,GAEzBxU,EAAAA,cAAC4zC,GAAO,CAACG,WAAYA,EAAYD,UAAWA,EAAWD,SAAUA,KAGpE4B,EACCz1C,EAAAA,cAAA,OAAAiJ,EAAAA,GAAAA,GAAA,CAAK5H,UAAWiI,KJhLgW,QAA+C,SIgLjWiB,QAASirC,GAAiB3F,GACtF7vC,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKkyC,EAAWt0C,UJjL0W,UIkLnYrB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKqyC,EAAgBz0C,UJlL0T,UImLvV0vC,GACC/wC,EAAAA,cAAAA,EAAAA,SAAA,KACGkwC,GAAsBlwC,EAAAA,cAACkxC,GAAe,CAAC/9B,IAAK,EAAGC,KAAM,GAAI5T,KAAM,MAC9Dq0C,GAAY7zC,EAAAA,cAAC2zC,GAAe,QAKpC3zC,EAAAA,cAAA,OAAAiJ,EAAAA,GAAAA,GAAA,CAAK5H,UAAWiI,KJ3LoC,QAAqB,SI2LrBiB,QAASirC,GAAiB3F,GAC5E7vC,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,0BACP3I,EAAAA,cAAA,OAAKqB,UAAU,QACbrB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK0yC,OAIpBn2C,EAAAA,cAAA,QAAMqB,UAAWiI,KJlMsN,QIkMhMmmC,GAAW,WAChDzvC,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,8BAEL,IC9KV,GAfkBytC,KCAOC,MACvB,MAAM,IAAEvpC,IAAQmoB,EAAAA,EAAAA,OACTqhB,EAAyBC,IAA8Bx0C,EAAAA,EAAAA,UAAS,IACjEs0B,GAASv2B,EAAAA,EAAAA,IAAYs6B,EAAAA,GACrBoc,GAAU12C,EAAAA,EAAAA,IAAY+wC,EAAAA,IAAeC,KACrC2F,GAAW32C,EAAAA,EAAAA,IAAYgyC,EAAAA,KAE7B3vC,EAAAA,EAAAA,YAAU,KACR,IAAK2K,GAAOupB,IAAW+F,EAAAA,GAAmB,OAE1CtvB,EAAI4pC,kBAAkB,uBAAwB,cAAeC,EAAAA,EAAAA,MAAyB,OAAZ,WAC1E7pC,EAAI4pC,kBAAkB,sBAAuB,cAAcC,EAAAA,EAAAA,MAAa,UAAY,QAEpF,MAAMC,EAAe9pC,EAClB+mB,WACAsiB,OAAOr5B,QAAO+5B,GAASA,EAAMC,QAAUD,EAAMC,OAAOC,aACpDjqC,KAAIvN,IAAA,IAAC,GAAEoJ,EAAE,OAAEmuC,GAAQv3C,EAAA,MAAM,CAAEoJ,KAAIouC,WAAYD,EAAOC,WAAY,IAEjER,EAA2BK,EAAa,GACvC,CAAC9pC,EAAKupB,KAETl0B,EAAAA,EAAAA,YAAU,KACH2K,GAA0C,IAAnCwpC,EAAwB1vB,QACpC0vB,EAAwBU,SAAQH,IAC9B,IAAIE,EAAaF,EAAME,WACnBN,IAAa1E,EAAAA,GAAWU,WAAaoE,EAAMluC,GAAGsuC,MAAM,YAE7CT,IAAY/E,EAAAA,GAAUyB,IAAM2D,EAAMluC,GAAGsuC,MAAM,qBAE3CT,IAAY/E,EAAAA,GAAUsB,SAAW8D,EAAMluC,GAAGsuC,MAAM,oBAEhDT,IAAY/E,EAAAA,GAAUwB,SAAW4D,EAAMluC,GAAGsuC,MAjCf,IAAIC,OAAQ,YAAQziC,EAAAA,EAAAA,MAAS,GAAK,WA4BtEsiC,EAAa,UAOJN,IAAa1E,EAAAA,GAAWU,YACjCsE,EAAa,QAEfjqC,EAAI4pC,kBAAkBG,EAAMluC,GAAI,aAAcouC,EAAW,GACzD,GACD,CAACjqC,EAAKwpC,EAAyBE,EAASC,GAAU,EDrCrDJ,GlBmBa,WACb,MAAMc,GAAkBtyC,EAAAA,EAAAA,IAAUuyC,EAAAA,KAC3BC,EAAiBC,EAAmBC,IAAyBhxB,EAAAA,EAAAA,GAAW,KAEzEmmB,GAAS6C,EAAAA,EAAAA,KAA0B,SAACziC,EAAK0qC,GAAoB,IAAjBjJ,EAAOzgB,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EACtDygB,EAAQkJ,WAAUlJ,EAAQkJ,SAAW,KACzBD,EAAI1qC,EAAI4uB,WAEvB8b,EAAIjpB,KAAKmpB,KAAKF,IACNG,EAAAA,KAAqBH,EAAIG,EAAAA,KAEjCH,EAAIjpB,KAAKqY,MAAM4Q,IACPza,EAAAA,KAAcya,EAAIza,EAAAA,IAE5BjwB,EAAI4/B,OAAO8K,EAAGjJ,EAChB,IAEMqJ,GAAgBrI,EAAAA,EAAAA,KAA0B,CAACziC,EAAKmI,KAAU,IAAA4iC,EAAAC,EAC9D,MAAMrkC,EAAU3G,EAAIsiC,cACd,MAAErgC,EAAK,OAAEC,IAAW+oC,EAAAA,EAAAA,IAAuBjrC,GAC3CkrC,EAAUjpC,EAAQ,EAAI0E,EAAQL,KAC9B6kC,EAAUjpC,EAAS,EAAIyE,EAAQN,IAGrC,MAAO,GAFG8B,SAAoB,QAAf4iC,EAAL5iC,EAAOwoB,qBAAa,IAAAoa,OAAA,EAApBA,EAAsBK,SAAUF,GAE9BA,IADF/iC,SAAoB,QAAf6iC,EAAL7iC,EAAOwoB,qBAAa,IAAAqa,OAAA,EAApBA,EAAsBK,SAAUF,GACjBA,EAAQ,GAChC,IAEGG,GAAoB7I,EAAAA,EAAAA,KAA0BziC,IAClD,MAAMquB,EAAOgR,GAAar/B,EAAI4uB,WAC9Byb,EAAgB,CAAEhc,QAAO,IAGrBkd,GAAc9I,EAAAA,EAAAA,KAClB,CAACziC,EAAKmI,KACJ,IAAIqjC,EAAQC,EAAAA,GACRtjC,EAAMwoB,cAAc+a,OAAS,IAAGF,IAAU,GAC9C,MAAMd,EAAI1qC,EAAI4uB,UAAY4c,EAC1B5L,EAAO8K,EAAG,CAAE3M,OAAQ+M,EAAc3iC,IAAS,GAE7C,CAAC2iC,IAGGa,GAAiBlJ,EAAAA,EAAAA,KAA0B,CAACziC,EAAKmI,KACrD,IAAIqjC,EAAQC,EAAAA,GACRtjC,EAAMwoB,cAAcib,WAAUJ,IAAU,GAC5C5L,EAAO5/B,EAAI4uB,UAAY4c,EAAO,CAAEK,OAAQ1jC,EAAMmiB,QAAS,IAGnDwhB,GAAcrJ,EAAAA,EAAAA,KAClB,CAACziC,EAAKmI,KACCsiC,KAILD,IACAmB,EAAexjC,IAJboiC,EAAgB/vC,EAAAA,GAIG,GAEvB,CAACiwC,KAGH/e,EAAAA,EAAAA,KAAwB1rB,IA7EIA,KACF,CAAC,QAAS,SAAU,SAAU,SAAU,WAChDkqC,SAAQ6B,IACxB,MAAMC,EAAiBhsC,EAAI+rC,GAC3B/rC,EAAK,WAAU+rC,KAAgBC,EAC/BhsC,EAAI+rC,GAAc,WAAa,QAAAE,EAAAjrB,UAAAlH,OAATxa,EAAI,IAAA4sC,MAAAD,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJ7sC,EAAI6sC,GAAAnrB,UAAAmrB,GAOxB,MAN0C,iBAAZ7sC,EAAK,GAEjCA,EAAK,GAAK+/B,GAAa//B,EAAK,IACnBA,EAAK,GAAG+uB,MAAgC,iBAAjB/uB,EAAK,GAAG+uB,OACxC/uB,EAAK,GAAG+uB,KAAOgR,GAAa//B,EAAK,GAAG+uB,OAE/B2d,EAAeI,MAAMpsC,EAAKV,EACnC,CAAC,GACD,EAgEA+sC,CAAersC,GACfA,EAAIsxB,KAAK,YAAaga,GACtBtrC,EAAI4pB,GAAG,SAASzhB,GAASojC,EAAYpjC,KACrCnI,EAAI4pB,GAAG,SAASzhB,GAAS2jC,EAAY3jC,KACrCnI,EAAIssC,WAAWC,UACfvsC,EAAIkwB,gBAAgBqc,WAChB5kC,EAAAA,EAAAA,OAAQ3H,EAAI4pB,GAAG,YAAYzhB,GAASwjC,EAAexjC,IAAO,GAC7D,GAGL,CkBzFEqkC,GACAtL,KACA3B,KACA8C,KACAxC,KAGE3sC,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC+0C,GAAa,Q,YEXpB,MAAMwE,GAAiB,sBACjBC,GAAkB,uBAClBC,GAAgB,kBAChBC,GAAiB,mBACjBC,GAAgB,UAwBhBC,GAAgB/U,IAAY,CAChCrkC,KAAM,UACN2H,KAAM,CACJ3H,KAAM,oBACNq5C,SAAU,CACR,CACEr5C,KAAM,UACNs5C,WAAY,CAAC,EACbjV,gBAoDR,QAAe10B,EAAAA,EAAAA,IAAwB44B,GAAAA,GAAvC,EA9C0BxpC,IAAwB,IAAvB,QAAEw6C,GAAU,GAAMx6C,EAC3C,MAAM,IAAEuN,IAAQmoB,EAAAA,EAAAA,MACV6T,GAAUhpC,EAAAA,EAAAA,IAAYipC,GAAAA,IACtBiR,GAAQC,EAAAA,EAAAA,UAAQ,IAAOnR,GAAWiR,GAAUG,EAAAA,GAAAA,IAAapR,GAAWA,GAAU,CAACiR,EAASjR,IACxF1E,GAAatkC,EAAAA,EAAAA,IAAYukC,EAAAA,IAuC/B,OAZAliC,EAAAA,EAAAA,YAAU,KACHiiC,GAAe4V,GAdJG,MAChB,GAAKH,EAEL,IACEltC,EAAIstC,UAAUb,GAAgBK,GAAcI,IAC5CltC,EAAIstC,UAAUZ,GAAiBI,GAAc9Q,IAC7Ch8B,EAAIm4B,SA5Dc,CACtBt8B,GAAI8wC,GACJj5C,KAAM,OACN0kC,OAAQqU,GACRpU,MAAO,CACL,eAAgB,IAChB,aAAcwU,MAuDZ7sC,EAAIm4B,SAnDW,CACnBt8B,GAAI+wC,GACJl5C,KAAM,OACN0kC,OAAQsU,GACRrU,MAAO,CACL,eAAgB,GAChB,aAAc,EACd,aAAcwU,GACd,iBAAkB,CAAC,EAAG,KA4CtB,CAAE,MAAO1zC,GACPzB,QAAQ5C,MAAMqE,EAChB,GAKAk0C,EAAW,GACV,CAACH,EAAO5V,KAEXjiC,EAAAA,EAAAA,YACE,IAAM,KA/BWk4C,MACjB,IACE,IAAKvtC,EAAIk4B,SAASyU,IAAgB,OAClC3sC,EAAIw4B,YAAYmU,IAChB3sC,EAAIw4B,YAAYoU,IAChB5sC,EAAIy4B,aAAagU,IACjBzsC,EAAIy4B,aAAaiU,GACnB,CAAE,MAAO53C,GACP4C,QAAQ5C,MAAM,uBAAwBA,EACxC,GAuBEy4C,EAAY,GAEd,IAGKr6C,EAAAA,cAAAA,EAAAA,SAAA,KAAK,IC5Fd,I,SAA6B,S,WCO7B,MAAMs6C,GAAoB,UA0C1B,OAxCmBC,KACjB,MAAM,IAAEztC,IAAQmoB,EAAAA,EAAAA,OACTulB,EAAYC,IAAiB14C,EAAAA,EAAAA,UAASu4C,IAEvCI,GAAmB/1C,EAAAA,EAAAA,SAAO,IAEhCxC,EAAAA,EAAAA,YAAU,MACHu4C,EAAiBt0C,SAAW0G,IAC/BA,EAAI4pB,GACF,UACA8H,EAAAA,EAAAA,KAAS,IAAMic,EAAcE,MAAiB,MAGhDD,EAAiBt0C,SAAU,EAC7B,GACC,CAACs0C,EAAkB5tC,IAEtB,MAQM6tC,EAAeA,KACnB,IAAIH,EAAa,GAEjB,IACEA,GANFI,EAAAA,GAAAA,IALA9tC,EACG+tC,wBACA/9B,QAAOg+B,IAAYA,EAAQjE,MAAMluC,IAAM,IAAIoyC,SAAS,gBAAkBD,EAAQhB,WAAWU,aAG/DQ,SAAQF,GAAWzyC,KAAK4yC,MAAMH,EAAQhB,WAAWU,cAO9E,CAAE,MAAOU,GACP12C,QAAQ5C,MAAMs5C,EAChB,CAEA,MAAO,CAACZ,MAAsBE,GAAYn7B,KAAK,MAAM,EAGvD,OAAOrf,EAAAA,cAAA,OAAKqB,UAAWC,KAAW0J,KAAeyJ,EAAAA,EAAAA,OD9CP,UC8C2B+lC,EAAiB,E,YC9CxF,GAAgF,QC4FhF,IAAerqC,EAAAA,EAAAA,IAAwB2kC,GAAAA,GAAvC,EArEqBqG,KAAM,IAAA5K,EACzB,MAAMla,GAASv2B,EAAAA,EAAAA,IAAY63B,EAAAA,KACpByjB,EAAkBC,IAAuBt5C,EAAAA,EAAAA,UAAS,MACnD61B,GAA2B/yB,EAAAA,EAAAA,IAAUgzB,EAAAA,KACpCyjB,EAAcC,IAAmBx5C,EAAAA,EAAAA,WAAS,IAC1Cy5C,EAAYC,IAAgBl1B,EAAAA,EAAAA,GAAW,KACxCm1B,EAAiBrlB,IAAW2B,EAAAA,GAC5B2jB,EAAgBtlB,IAAWulB,EAAAA,IAA8BvlB,IAAWwlB,EAAAA,IACpE,QAAEpM,EAAO,eAAEI,GAAmBL,KAE9BiG,GAAsD,QAAlClF,GAAAzwC,EAAAA,EAAAA,IAAYwzC,EAAAA,WAAsB,IAAA/C,OAAA,EAAlCA,EAAoC3pB,QAAS,EA8BvE,OA5BAzkB,EAAAA,EAAAA,YAAU,KACJi5C,IACE/kB,IAAWylB,EAAAA,KACbP,GAAgB,GAChBC,GAAW,IAAMD,GAAgB,MAE/BllB,IAAW+kB,GACbC,EAAoB,MAExB,GACC,CAACG,EAAYnlB,EAAQ+kB,KAExBj5C,EAAAA,EAAAA,YAAU,IACD,KACLs5C,GAAc,GAEf,CAACA,IAaFz7C,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC4R,EAAAA,GAAe3I,EAAAA,GAAAA,GAAA,CACdzI,KAAMu7C,EAAAA,GACN16C,UAAWiI,KDnEM,QCmEemsC,GDnEQ,SCoExClrC,QAfUA,KACd,MAAMyxC,EAAYC,EAAAA,GAA8B5lB,GAC5C2lB,IAAcE,EAAAA,IAChBb,EAAoBW,GACpBpkB,EAAyBokB,EAAW,CAAEG,SAAS,KAE/CvkB,EAAyBokB,EAC3B,EASIlqC,YAAU,GACN+9B,GAEJ7vC,EAAAA,cAAA,OAAKqB,UAAWiI,KDxEyC,QCwEpBoyC,EDxEoD,QAAiB,UCyExG17C,EAAAA,cAAA,OAAKqB,UAAWiI,KAAW,OAAQ0B,KACjChL,EAAAA,cAAA,OAAKqB,UAAWiI,KAAW0B,GAAQ2wC,GD1EmF,UC2EpH37C,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK24C,QAIpBp8C,EAAAA,cAAA,QAAMqB,UAAWiI,KD/EiL,QC+E3JmmC,GAAW,WAChDzvC,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,+BAGV2yC,GACCt7C,EAAAA,cAAA,OAAKqB,UDpF2K,SCqF5K,4EAGL,I,oEC3EP,IAAe8O,EAAAA,EAAAA,IAAwB2kC,GAAAA,GAAvC,EANauH,IACXr8C,EAAAA,cAAA,OAAKqB,UAAWC,KCRK,SDQcmT,EAAAA,EAAAA,MCRe,QDQiB,6BACjEzU,EAAAA,cAAA,OAAKyK,IAAK0E,GAAWJ,MAAM,KAAKC,OAAO,U,wJE2C3C,GAnCsBstC,KAAM,IAAA/L,EAC1B,MAAMgM,GAAiBz8C,EAAAA,EAAAA,IAAYq1B,EAAAA,IAC7BU,GAAqBhxB,EAAAA,EAAAA,IAAUixB,EAAAA,IAC/B0mB,GAAkB33C,EAAAA,EAAAA,IAAU43C,EAAAA,KAC5B,QAAEhN,EAAO,WAAEC,EAAU,eAAEG,GAAmBL,KAE1CiG,GAAsD,QAAlClF,GAAAzwC,EAAAA,EAAAA,IAAYwzC,EAAAA,WAAsB,IAAA/C,OAAA,EAAlCA,EAAoC3pB,QAAS,EAEjErb,GAAgBnB,EAAAA,EAAAA,IAAiB,KACrCslC,GAAW,GACP6M,EACFC,IAEA3mB,EAAmB,CAAEQ,OAAQC,EAAAA,IAC/B,GACC,CAACimB,EAAgBC,EAAiB3mB,IAErC,OACE71B,EAAAA,cAAA,OAAKqB,UAAWiI,KCnCG,QDmCgBmsC,GCnCO,UDoCxCz1C,EAAAA,cAAC4R,EAAAA,GAAe3I,EAAAA,GAAAA,GAAA,CACdzI,KAAMk8C,EAAAA,GACNr7C,UAAWiI,KCtC4C,QDsCvBizC,GAAkB,UAClDhyC,QAASgB,GACLskC,GAEJ7vC,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKk5C,KACd38C,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKm5C,MAEhB58C,EAAAA,cAAA,QAAMqB,UAAWiI,KC7CgE,QD6CpCmmC,GAAW,WACtDzvC,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,2BAEL,EEVV,IAAewH,EAAAA,EAAAA,IAAwB2kC,GAAAA,GAAvC,EA/Bc+H,KACZ,MAAMC,GAAWn4C,EAAAA,EAAAA,UAEXo4C,GAAaxN,EAAAA,EAAAA,KAA0BziC,IAC3C,GAAIgwC,EAAS12C,QAAS,OAEtB02C,EAAS12C,QAAU,IAAI42C,EAAAA,aAAqB,CAC1C/R,SAAU,IACVgS,KAAM,WAER,MAAMhU,GAAWx0B,EAAAA,EAAAA,MAAS,eAAiB,cAC3C3H,EAAIiwC,WAAWD,EAAS12C,QAAS6iC,EAAS,IAGtCiU,GAAgB3N,EAAAA,EAAAA,KAA0BziC,IAC9C,IACMgwC,EAAS12C,SAAS0G,EAAIowC,cAAcJ,EAAS12C,QACnD,CAAE,MAAOH,GAAI,CACb62C,EAAS12C,aAAU2nB,CAAS,IAU9B,OAPA5rB,EAAAA,EAAAA,YAAU,KACR46C,IACO,KACDD,EAAS12C,SAAS82C,GAAe,IAEtC,CAACH,EAAYG,IAET,IAAI,I,gECDb,IAAejrC,EAAAA,EAAAA,KACb9B,EAAAA,EAAAA,IAAwBgtC,EAAAA,GAAxBhtC,EArB+BitC,KAC/B,MAAMC,GAAuBx4C,EAAAA,EAAAA,IAAUi2B,EAAAA,IACjC7O,GAAkBnsB,EAAAA,EAAAA,IAAY4rB,EAAAA,IAE9BnhB,GAAUH,EAAAA,EAAAA,IAAiB,KAC/BizC,GAAsB,GACrB,CAACA,IAEJ,OACEr9C,EAAAA,cAAC4R,EAAAA,EAAe,CACdvQ,UCxBsB,QDyBtBb,KAAM88C,EAAAA,GACN7zC,QAAS,CAAE,CAAC0O,EAAAA,IAAS8T,EAAkB,SAAW,UAClD1hB,QAASA,GAETvK,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK85C,GAAgBl8C,UAAWC,KC7BJ,QD6BuB2qB,EC7BN,aD6BmC8B,KACzE,K,6DERtB,IAAetd,EAAAA,EAAAA,KAAWN,EAAAA,EAAAA,IAAwBub,EAAAA,GAAxBvb,EAZOqtC,KAC/B,MAAM3iB,GAAuBh2B,EAAAA,EAAAA,IAAUi2B,EAAAA,IAEjCvwB,GAAUH,EAAAA,EAAAA,IAAiB,IAAMywB,KAAwB,CAACA,IAEhE,OACE76B,EAAAA,cAAA,OAAKqB,UAAWiI,KAAW,OChBU,SDgByBiB,QAASA,GACrEvK,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKg6C,KACV,KE0CV,IA9CsBxrC,EAAAA,EAAAA,KAAW,KAC/B,MAAMukC,GAAU12C,EAAAA,EAAAA,IAAY+wC,EAAAA,IAAeC,KACrC4M,GAAc/4C,EAAAA,EAAAA,WACbg5C,EAAYC,IAAiB77C,EAAAA,EAAAA,UAAS,IAAImhC,MAejD,OAbA/gC,EAAAA,EAAAA,YAAU,KACJq0C,IAAY/E,EAAAA,GAAUsB,QACxB2K,EAAYt3C,QAAUy9B,aAAY,KAChC+Z,EAAc,IAAI1a,KAAO,GACxB,EAAI2a,GAAAA,IAEP3e,cAAcwe,EAAYt3C,SAErB,KACL84B,cAAcwe,EAAYt3C,QAAQ,IAEnC,CAACowC,IAEAA,IAAY/E,EAAAA,GAAUsB,QAAgB/yC,EAAAA,cAAAA,EAAAA,SAAA,MAGxCA,EAAAA,cAAA,OAAKqB,UCnCuB,SDoC1BrB,EAAAA,cAAA,KAAGqB,UCpCuC,SDqCxCrB,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,oCAAqC,IA7BlBm1C,KAChC,MAAMC,EAAOD,EAAKE,aACZC,EAAQH,EAAKI,WACnB,OAAOC,EAAAA,GAAAA,IAAIF,GAAS,KAAME,EAAAA,GAAAA,IAAIJ,EAAK,EA4B5BK,CAAmBT,IAEtB39C,EAAAA,cAAA,UACEA,EAAAA,cAAA,MAAIqB,UC1CqD,UD2CzDrB,EAAAA,cAAA,MAAIqB,UC3CsE,UD4C1ErB,EAAAA,cAAA,MAAIqB,UC5CoF,UD6CxFrB,EAAAA,cAAA,MAAIqB,UC7CsG,UD8C1GrB,EAAAA,cAAA,MAAIqB,UC9CsH,WDgD5HrB,EAAAA,cAAA,SACEA,EAAAA,cAAA,QAAMqB,UCjDmI,SDkDvIrB,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,mCAET3I,EAAAA,cAAA,QAAMqB,UCpDmJ,SDqDvJrB,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,yCAGP,IE5CV,MAAM01C,GAAa9+C,IAAwD,IAAvD,QAAEgL,EAAO,KAAE/I,EAAI,UAAEH,EAAS,MAAEV,KAAU29C,GAAY/+C,EACpE,MAAM,QAAEkwC,EAAO,eAAEI,GAAmBL,KAEpC,OACExvC,EAAAA,cAAA,OAAKqB,U/ChBc,S+CiBjBrB,EAAAA,cAAA,UAAAiJ,EAAAA,GAAAA,GAAA,GACMq1C,EAAU,CACdj9C,UAAWiI,K/CnBsE,Q+CmB7CjI,GACpCb,KAAK,SACL+J,QAASA,GACLslC,GAEJ7vC,EAAAA,cAACuB,EAAAA,EAAO,CAACC,KAAMA,KAEjBxB,EAAAA,cAAA,QAAMqB,UAAWiI,K/C1BmI,Q+C0B7GmmC,GAAW,WAChDzvC,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAK,kBAAiBhI,eAEvB,EAIJ49C,GAAex7C,GACnB/C,EAAAA,cAACq+C,IAAUp1C,EAAAA,GAAAA,GAAA,GAAKlG,EAAK,CAAEvB,KAAM,OAAQ,aAAW,UAAUb,MAAO,KAAMU,U/ClCuC,W+CqC1Gm9C,GAAgBz7C,GACpB/C,EAAAA,cAACq+C,IAAUp1C,EAAAA,GAAAA,GAAA,GAAKlG,EAAK,CAAEvB,KAAM,QAAS,aAAW,WAAWb,MAAO,MAAOU,U/CtC4D,W+C2ExI,QAAe4Q,EAAAA,EAAAA,KAlCYwsC,KAAM,IAAAlO,EAC/B,MAAM4G,GAAkBtyC,EAAAA,EAAAA,IAAUuyC,EAAAA,IAC5BsH,GAAgB5+C,EAAAA,EAAAA,IAAY6+C,EAAAA,IAC5B1kB,GAAUn6B,EAAAA,EAAAA,IAAYo6B,EAAAA,KAGrBiB,EAAMyjB,IAAW78C,EAAAA,EAAAA,YAElB0zC,GAAsD,QAAlClF,GAAAzwC,EAAAA,EAAAA,IAAYwzC,EAAAA,WAAsB,IAAA/C,OAAA,EAAlCA,EAAoC3pB,QAAS,GAEvEzkB,EAAAA,EAAAA,YAAU,KACRy8C,EAAQF,EAAc,GACrB,CAACA,IAEJ,MAAMG,GAAa/4C,EAAAA,EAAAA,cACjBwyC,IACE,IAAIhM,EAAanR,EAAOmd,EACpBhM,EAAarS,IAASqS,EAAarS,GACnCqS,EAAavP,EAAAA,KAAcuP,EAAavP,EAAAA,IAE5Coa,EAAgB,CAAEhc,KAAMmR,IACxBsS,EAAQtS,EAAW,GAErB,CAACnR,EAAMlB,IAGT,OACEj6B,EAAAA,cAAA,OAAKqB,UAAWiI,K/CpEyB,Q+CoECmsC,G/CpEsB,U+CqE9Dz1C,EAAAA,cAACu+C,GAAY,CAACh0C,QAASA,IAAMs0C,EAAWtG,EAAAA,MACxCv4C,EAAAA,cAACw+C,GAAa,CAACj0C,QAASA,IAAMs0C,GAAYtG,EAAAA,MACtC,I,wBCpBV,IAAetmC,EAAAA,EAAAA,KAAW9B,EAAAA,EAAAA,IAAwB2uC,GAAAA,GAAxB3uC,EArCA4uC,KACxB,MAAM3J,GAA4BvwC,EAAAA,EAAAA,IAAUwwC,EAAAA,IACtC2J,GAAiCn6C,EAAAA,EAAAA,IAAUo6C,EAAAA,KAC1Cj9C,EAASC,IAAcF,EAAAA,EAAAA,WAAS,GAEjCm9C,GAAe90C,EAAAA,EAAAA,IAAiB,KACpCgrC,GAA2B,GAC1B,CAACA,IAEE/xB,GAAkBxe,EAAAA,EAAAA,IAAUye,EAAAA,IAYlC,OAVAnhB,EAAAA,EAAAA,YAAU,KACRkhB,EAAgB,CACd7iB,KAAM+iB,EAAAA,GACN9Z,QAAS,CAAE+Z,IAAKC,GAAAA,GAAQ07B,6BACxBv7B,cAAc,IAEhBo7B,IACA34C,YAAW,IAAMpE,GAAW,IAAQ,IAAK,GACxC,IAGDjC,EAAAA,cAAA,OAAKqB,UAAWiI,KCpCG,QDoCiBtH,EAAmB,GCpCrB,SDoC0BuI,QAAS20C,GACnEl/C,EAAAA,cAAA,OAAKqB,UCrC6C,SDsChDrB,EAAAA,cAAA,SACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,mCAET3I,EAAAA,cAAA,SACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,mCAGX3I,EAAAA,cAAA,OAAKqB,UC7CmE,SD8CtErB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK+G,KAEZ,K,YEjBV,GAnBkB40C,KCDUC,MAC1B,MAAMhpB,GAASv2B,EAAAA,EAAAA,IAAYs6B,EAAAA,GACrBpjB,GAAiBnS,EAAAA,EAAAA,IAAUoS,EAAAA,IAC3BoM,GAAkBxe,EAAAA,EAAAA,IAAUye,EAAAA,IAC5BlM,GAAuBvS,EAAAA,EAAAA,IAAUwS,GAAAA,IACjCioC,GAAex/C,EAAAA,EAAAA,IAAYyO,EAAAA,IAiB3BgxC,EAAct5C,IACdA,EAAEy4B,UACNz4B,EAAEy4B,SAAU,EAjBQn/B,KAAsB,IAArB,GAAEoJ,EAAE,SAAE62C,GAAUjgD,EACrC8jB,EAAgB,CACd7iB,KAAMi/C,EAAAA,GACNh2C,QAAS,CACPkf,MAAO62B,KAIXpoC,IACAJ,EAAe,CACbO,MAAOC,EAAAA,GACPC,aAAc,CAAEC,YAAa/O,IAC7B,EASF+2C,CAAc,CAAE/2C,GAHL1C,EAAE4zC,SAAS,GAAGC,WAAW6F,aAGhBH,SAFHv5C,EAAE4zC,SAAS,GAAGC,WAAW8F,uBAEX,GAGjCpnB,EAAAA,EAAAA,KACE1rB,IACE,GAAKA,EAAI+mB,YAAcwC,IAAW+F,EAAAA,GAclC,OAZAtvB,EACG+mB,WACAsiB,OAAOr5B,QAAO+5B,IAAK,IAAAgJ,EAAA,OAAgB,QAAhBA,EAAIhJ,EAAMC,cAAM,IAAA+I,OAAA,EAAZA,EAAc9I,UAAU,IAC/CC,SAAQnwC,IAAY,IAAX,GAAE8B,GAAI9B,EACV8B,EAAGsuC,MAAM6I,EAAAA,MACXhzC,EAAI4pC,kBAAkB/tC,EAAI,aAAc,WACpC22C,GACFxyC,EAAI4pB,GAAG,QAAS/tB,EAAI42C,GAExB,IAGG,KACDzyC,SAAAA,EAAK+mB,YACP/mB,EACG+mB,WACAsiB,OAAOr5B,QAAO+5B,IAAK,IAAAkJ,EAAA,OAAgB,QAAhBA,EAAIlJ,EAAMC,cAAM,IAAAiJ,OAAA,EAAZA,EAAchJ,UAAU,IAC/CC,SAAQnuC,IAAY,IAAX,GAAEF,GAAIE,EACVy2C,GACFxyC,EAAIkqB,IAAI,QAASruB,EAAI42C,EACvB,GAEN,CACD,GAEH,CAAClpB,EAAQipB,GACV,ED3DDD,GEH2BW,MAC3B,MAAM,IAAElzC,IAAQmoB,EAAAA,EAAAA,MACVwU,GAAW3pC,EAAAA,EAAAA,IAAYukC,EAAAA,IACvBib,GAAex/C,EAAAA,EAAAA,IAAYyO,EAAAA,IAC3B0xC,GAAsBngD,EAAAA,EAAAA,IAAYogD,GAAAA,IAElCC,GADkBrgD,EAAAA,EAAAA,IAAYwzC,EAAAA,IACExmC,KAAIvN,IAAA,IAAC,IAAE2J,GAAK3J,EAAA,OAAK2J,CAAG,IAEpDk3C,GAA6C50C,EAAAA,EAAAA,IACjDyJ,GACEnI,EAAI+tC,uBAAsBwF,EAAAA,EAAAA,IAAqBprC,IAAQqrC,MAAKxF,IAAW,IAAAyF,EACrE,MAAMC,GAAuB,QAAbD,EAAAzF,EAAQjE,aAAK,IAAA0J,OAAA,EAAbA,EAAe53C,KAAM,GAC/Bs+B,EAAWwZ,EAAAA,GAAkBrrC,KAAKorC,GAClCE,IAAMpB,GAAeQ,EAAAA,GAAa1qC,KAAKorC,GACvCG,EAAaR,EAAcG,MAAKp3C,GAAOs3C,EAAQzF,SAAS7xC,KAC9D,OAAO+9B,GAAYyZ,GAAOC,CAAU,KAExC,CAAC7zC,EAAKwyC,EAAca,IAGhBS,GAAkBp1C,EAAAA,EAAAA,IACtBvF,IACE,MAAM46C,EAAuBT,EAA2Cn6C,GAEtE6G,EAAI+pB,YAAYp1B,MAAMq1B,OADpB+pB,EAC6B,UACtBZ,EACsB,YAEA,EACjC,GAEF,CAACnzC,EAAKszC,EAA4CH,KAGpD99C,EAAAA,EAAAA,YAAU,KACR,IAAIsS,EAAAA,EAAAA,MAEF,OADI3H,GAAO28B,GAAU38B,EAAI4pB,GAAG,YAAakqB,GAClC,KACD9zC,GAAKA,EAAIkqB,IAAI,YAAa4pB,EAAgB,CAElD,GACC,CAAC9zC,EAAK28B,EAAUmX,GAAiB,EFrCpCZ,GGH+Bc,MAC/B,MAAMzqB,GAASv2B,EAAAA,EAAAA,IAAYs6B,EAAAA,GACrB2mB,GAAgBl8C,EAAAA,EAAAA,IAAUm8C,EAAAA,IAC1B3N,GAAkBvzC,EAAAA,EAAAA,IAAYwzC,EAAAA,IAC9B2N,GAA6BnhD,EAAAA,EAAAA,IAAY60B,EAAAA,IAEzC4qB,GAAc/zC,EAAAA,EAAAA,IAAyBvF,IAAK,IAAAi7C,EAChD,GAAIj7C,EAAEy4B,QAAS,OACfz4B,EAAEy4B,SAAU,EACZ,MAAMoc,EAAU70C,SAAW,QAAVi7C,EAADj7C,EAAG4zC,gBAAQ,IAAAqH,OAAA,EAAXA,EAAc,GAC1BpG,GACFiG,EAAcjG,EAAQhB,WACxB,KAGFthB,EAAAA,EAAAA,KACE1rB,IACE,GAAKA,EAAI+mB,YAAcwC,IAAW+F,EAAAA,IAAsB6kB,EAaxD,OAXAn0C,EACG+mB,WACAsiB,OAAOr5B,QAAO+5B,GAASA,EAAMC,SAC7BE,SAAQz3C,IAAY,IAAX,GAAEoJ,GAAIpJ,EACd8zC,EAAgB2D,SAAQmK,IAClBx4C,EAAGoyC,SAASoG,EAASj4C,MACvB4D,EAAI4pB,GAAG,QAAS/tB,EAAI42C,EACtB,GACA,IAGC,KACDzyC,EAAI+mB,YACN/mB,EACG+mB,WACAsiB,OAAOr5B,QAAO+5B,GAASA,EAAMC,SAC7BE,SAAQnwC,IAAY,IAAX,GAAE8B,GAAI9B,EACdiG,EAAIkqB,IAAI,QAASruB,EAAI42C,EAAY,GAEvC,CACD,GAEH,CAAClpB,EAAQ4qB,GACV,EHtCDH,GACA9S,KACA3B,KACA8C,KACAxC,MAEqC7sC,EAAAA,EAAAA,IAAYshD,EAAAA,IAEX,KACpCphD,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAC++C,GAAiB,MAClB/+C,EAAAA,cAAC+0C,GAAa,QI+BpB,GA/BmBx1C,IAAkB,IAAjB,SAAEyH,GAAUzH,EAC9B,MAAM8hD,GAAavhD,EAAAA,EAAAA,IAAYwhD,EAAAA,IACzB1U,GAAY9sC,EAAAA,EAAAA,IAAY+sC,EAAAA,IAE9B,OACE7sC,EAAAA,cAACuhD,EAAW,KAEVvhD,EAAAA,cAACwhD,GAAY,MACbxhD,EAAAA,cAACm7C,GAAY,MACbn7C,EAAAA,cAACyhD,EAAW,MACZzhD,EAAAA,cAAC68C,GAAK,MACN78C,EAAAA,cAACq8C,GAAI,MACLr8C,EAAAA,cAACu6C,GAAU,MACXv6C,EAAAA,cAACy+C,GAAW,OACV4C,GAAcrhD,EAAAA,cAACs8C,GAAa,MAC9Bt8C,EAAAA,cAAC0hD,GAAa,MACd1hD,EAAAA,cAACo9C,GAAwB,MACzBp9C,EAAAA,cAACw9C,GAAwB,MACzBx9C,EAAAA,cAACg1B,EAAG,MACJh1B,EAAAA,cAAC2rC,GAAK,MACN3rC,EAAAA,cAACu0B,EAAa,MACdv0B,EAAAA,cAAC2hD,GAAW,MACZ3hD,EAAAA,cAAC4hD,GAAiB,MAClB5hD,EAAAA,cAACsoC,GAAuB,MACxBtoC,EAAAA,cAAC6nC,GAAW,MACX+E,EAAY5sC,EAAAA,cAACo/C,GAAS,MAAMp/C,EAAAA,cAACo2C,GAAS,MACtCpvC,EACW,ECrDD,SAAS,KACtB,OAAO,IACT,C,mDCYF,MAAM5D,GAAIC,IAAM,UAEVw+C,GAA8B,iBAAlBzhD,SAAS0hD,KAErBC,GAAuBF,GAAY,GAAKr5C,GAAAA,GAAgB,EAAIynC,GAAAA,GAE9D7sC,GAAEg4B,SACJh4B,GAAE,uBAAwB2+C,IAyD5B,QAAeC,EAAAA,EAAAA,KA7CMC,KACnB,MAAOC,EAASC,IAAcpgD,EAAAA,EAAAA,UAAS6xB,EAAAA,EAAO7I,iBACxCq3B,EAAgBxuB,EAAAA,EAAO7I,kBAAoBm3B,EAC3Cv4B,GAAS7pB,EAAAA,EAAAA,IAAY8pB,EAAAA,IACrByE,GAAIg0B,EAAAA,EAAAA,IAAU14B,GAEhBvmB,GAAEg4B,SACJh4B,GAAE,WAAY8+C,EAAS,iBAAkBE,GAG3C,MAAMtwB,GAAehyB,EAAAA,EAAAA,IAAYiyB,GAAAA,IAC3B/iB,GAAS6U,EAAAA,EAAAA,MAASiO,EAAeiC,GAAAA,GAA0B,GAAK,GAEhEuuB,GAAcx8C,EAAAA,EAAAA,cAAYkT,UAC9B,MAAMupC,OAvBkBC,MAC1B,MAAMC,GAAa/+C,EAAAA,GAAAA,IAAWC,GAAAA,EAAS++C,aACvC,OAAOC,GAAAA,GACJC,IAAIH,EAAY,CAAEI,QAAQ,IAC1Bx+C,MAAK9E,IAAA,IAAC,KAAE4I,GAAM5I,EAAA,OAAK4I,CAAI,IACvB5D,OAAM0B,GAAKzB,QAAQs+C,KAAK,+BAAgC78C,IAAG,EAkBnCu8C,GACrBp/C,GAAEg4B,SACJh4B,GAAE,oBAAqBm/C,EAAY,MAAOL,GAExCK,GACFJ,EAAWN,GAAY,KAAOU,EAChC,GACC,CAACJ,KAEJhgD,EAAAA,EAAAA,YAAU,KACR,IAAKigD,EAAe,OACpB,MAAMW,EAAalf,aAAY,KAC7Bye,GAAa,GACZP,IACH,MAAO,IAAM7iB,cAAc6jB,EAAW,GACrC,CAACX,EAAeE,IAEnB,MAAMU,GAAS54C,EAAAA,EAAAA,IAAiB,IAAMhK,SAAS4iD,UAAU,IAEzD,OAAIZ,EAAsBpiD,EAAAA,cAAAA,EAAAA,SAAA,MAGxBA,EAAAA,cAAA,OAAKqB,UCrEc,QDqEKI,MAAO,CAAE0R,IAAM,GAAEnE,QACtCqf,EAAE,cACHruB,EAAAA,cAAA,KAAGY,KAAK,IAAIS,UCvEuB,QDuEDkJ,QAASy4C,GACxC30B,EAAE,mBAED,IErEK,SAAS40B,GAAIlgD,GAC1B,OACE/C,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAACkjD,GAAS,KAAEngD,EAAMogD,WAClBnjD,EAAAA,cAACojD,GAAergD,GAChB/C,EAAAA,cAACiiD,GAAY,MAGnB,C,gJCZO,MAAM7iB,EAAap/B,EAAAA,mBAAoB+tB,GAEjCkH,EAAgBA,KAAM5H,EAAAA,EAAAA,YAAW+R,GAEjC5G,EAA0BA,CAAC3J,EAAIw0B,KAC1C,MAAM,IAAEv2C,GAAQmoB,KAEhB9yB,EAAAA,EAAAA,YAAU,IAAO2K,EAAM+hB,EAAG/hB,QAAOihB,GAAY,CAACjhB,KAAQu2C,GAAM,EAGjD9T,EAA4B,SAAC1gB,GAAkB,IAAdw0B,EAAIv1B,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,GAAAA,UAAA,GAAG,GACnD,MAAM,IAAEhhB,GAAQmoB,IAChB,OAAOnvB,EAAAA,EAAAA,cACL,WACE,GAAKgH,EAAL,CAAgB,QAAAisC,EAAAjrB,UAAAlH,OADdxa,EAAI,IAAA4sC,MAAAD,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJ7sC,EAAI6sC,GAAAnrB,UAAAmrB,GAEN,OAAOpqB,EAAG/hB,KAAQV,EADF,CAElB,GACA,CAACU,KAAQu2C,GAEb,C,uCCPA,IAZoB9jD,IAA4B,IAA3B,IAAEkL,EAAG,OAAEuE,EAAM,MAAED,GAAOxP,EACzC,IAAKkL,IAAQuE,IAAWD,EAAO,OAAO/O,EAAAA,cAAAA,EAAAA,SAAA,MAEtC,MAAMsjD,EAAW,CACfC,eAAgB,QAChBx0C,MAAOA,EAAQ,KACfC,OAAQA,EAAS,MAGnB,OAAOhP,EAAAA,cAAA,OAAKyB,MAAO6hD,EAAU74C,IAAKA,GAAO,C,wGCP5B,SAAS+4C,EAAUjkD,GAAuC,IAAtC,KAAEiC,EAAI,MAAEkK,EAAK,KAAElM,EAAI,cAAEikD,GAAelkD,EACrE,OACES,EAAAA,cAAA,OACEqB,UCNuB,QDOvBI,MAAO,CACLiiD,WAAYh4C,EACZqD,MAAOvP,EACPwP,OAAQxP,EACRmU,aAAqB,EAAPnU,IAGhBQ,EAAAA,cAAA,OAAKyB,MAAO,CAAEsN,MAAO00C,EAAez0C,OAAQy0C,IAC1CzjD,EAAAA,cAACuB,EAAAA,EAAO,CAACC,KAAMA,KAIvB,C,eElBe,SAASmiD,EAAYpkD,GAAuB,IAAtB,UAAE8B,EAAS,MAAEqK,GAAOnM,EACvD,OACES,EAAAA,cAAA,QACEqB,UAAWA,EACXI,MAAO,CAAEmiD,KAAMl4C,GACfqE,wBAAyB,CACvBC,OAAS,saAOjB,C,yDCFA,MAAM6zC,EAAatkD,IAAA,IAAC,KAAEukD,GAAMvkD,EAAA,OAAKukD,CAAI,EA6IrC,MA1Ie/gD,IACb,MAAM,UACJghD,EAAS,KACTvjD,EAAI,MACJkL,EACAo5B,aAAa,IAAEva,EAAG,IAAED,GAAK,eACzB05B,EAAiB,SAAQ,cACzBP,EAAa,KACbjiD,EAAI,IACJiJ,EAAG,KACHjL,EAAI,OACJwP,EAAM,MACND,EAAK,YACLk1C,EAAW,KACXH,EAAI,SACJ98C,GACEjE,GACE,IAAE+J,IAAQmoB,EAAAA,EAAAA,MACVivB,GAAmBv/C,EAAAA,EAAAA,UACnBw/C,GAAoBx/C,EAAAA,EAAAA,UACpBy/C,EAAcH,GAAeA,EAAYI,UAEzC95C,EAAUtE,IAAK,IAAAq+C,EACnBr+C,EAAE4Z,iBACF5Z,EAAEs+C,kBACW,QAAbD,EAAAvhD,EAAMwH,eAAO,IAAA+5C,GAAbA,EAAA/4B,KAAAxoB,EAAgBkD,EAAE,EAGdu+C,EAAWv+C,IAAK,IAAAw+C,EACpBx+C,EAAE4Z,iBACF5Z,EAAEs+C,kBACY,QAAdE,EAAA1hD,EAAMyhD,gBAAQ,IAAAC,GAAdA,EAAAl5B,KAAAxoB,EAAiBkD,EAAE,EAGfy+C,EAAaz+C,IAAK,IAAA0+C,EACtB1+C,EAAE4Z,iBACF5Z,EAAEs+C,kBACc,QAAhBI,EAAA5hD,EAAM2hD,kBAAU,IAAAC,GAAhBA,EAAAp5B,KAAAxoB,EAAmBkD,EAAE,EAGjB2+C,GAAep5C,EAAAA,EAAAA,IACnBq5C,IAAU,IAAAC,EACR,GAAIX,SAA0B,QAATW,EAAjBX,EAAmB/9C,eAAO,IAAA0+C,GAA1BA,EAA4BC,WAAY,CAC1C,MAAMC,EAAYb,EAAkB/9C,QAAQ2+C,cACxCE,EAAAA,EAAAA,MACFD,EAAUH,GAAQ,QAASt6C,IAE3By6C,EAAUH,GAAQ,aAAcL,GAChCQ,EAAUH,GAAQ,aAAcH,GAC5B3hD,EAAMwH,SAASy6C,EAAUH,GAAQ,QAASt6C,GAElD,IAEF,CAACA,EAASi6C,EAAUE,IAGhBQ,GAAe15C,EAAAA,EAAAA,IAAyB,KAC5Co5C,EAAa,oBACTR,GAAeD,EAAkB/9C,SACnC+9C,EAAkB/9C,QAAQswB,GAAG,UAAWutB,EAAYI,UACtD,GACC,CAACO,IAEEO,GAAiB35C,EAAAA,EAAAA,IAAyB,KAC9Co5C,EAAa,uBACTR,GAAeD,EAAkB/9C,SACnC+9C,EAAkB/9C,QAAQ4wB,IAAI,UAAWitB,EAAYI,UACvD,GACC,CAACO,IAgDJ,OA/BAziD,EAAAA,EAAAA,YAAU,KACHgiD,EAAkB/9C,SAhBLg/C,MAClB,MACEh/C,SAAS,WAAEi/C,IACTnB,EACCp3C,GAAQyd,GAAQD,IAErB65B,EAAkB/9C,QAAU,IAAI+jC,EAAAA,OAAe,CAC7Cv6B,QAASy1C,EACTjb,OAAQ4Z,EACRsB,UAAW/hD,QAAQ0gD,KAElBha,UAAU,CAAC1f,EAAKD,IAChB+f,MAAMv9B,GAAI,EAKXs4C,GAGK,KACDjB,EAAkB/9C,UACpB+9C,EAAkB/9C,QAAQk4B,SAC1B6lB,EAAkB/9C,QAAU,KAC9B,IAED,KAEHjE,EAAAA,EAAAA,YAAU,KACR+iD,IACO,KACLC,GAAgB,IAEjB,CAACD,EAAcC,IAchBnlD,EAAAA,cAAA,OAAKwS,IAAK0xC,GACRlkD,EAAAA,cAAA,OAAKqB,UAAWiI,IAAWy6C,ECrIe,QAAvB,QDqI+CA,GAAa,iBAC5EA,GAAavjD,IAASynC,EAAAA,IACrBjoC,EAAAA,cAAA,OAAKqB,UCvIsD,QDuI7BI,MAAO,CAAEmiD,KAAMl4C,IAC3C1L,EAAAA,cAAC2jD,EAAY,OAGjB3jD,EAAAA,cAAA,OACEqB,UAAWiI,IACTy6C,GAAavjD,IAASynC,EAAAA,IC7IiE,QD8IvF8b,GAAavjD,IAASynC,EAAAA,IC9IoG,UDiJ3HjhC,EAzBgBu+C,MACvB,OAAQ/kD,GACN,KAAKynC,EAAAA,GACH,OAAOjoC,EAAAA,cAACwlD,EAAAA,EAAW,CAAO/6C,MAAKuE,SAAQD,UACzC,KAAK02C,EAAAA,GACH,OAAOzlD,EAAAA,cAAC6jD,EAAU,CAACC,KAAMA,IAC3B,QACE,OAAO9jD,EAAAA,cAACwjD,EAAU,CAAOhiD,OAAMkK,QAAOlM,OAAMikD,kBAChD,EAkBO8B,KAGD,C,2GEnJH,MAAMG,EAAgB,kBAChBC,EAAgB,sBAe7B,KAb6BpmD,IAAe,IAAd,MAAEmM,GAAOnM,EACrC,MAAMqmD,GAAiBC,EAAAA,EAAAA,IAA0Bn6C,GAC3Co6C,GAAmBD,EAAAA,EAAAA,IAA0B,SAEnD,OACE7lD,EAAAA,cAAA,aACI,IAAG0lD,WAAuBE,KAC1B,IAAGD,KAAiBC,KACpB,IAAGF,YAAwBC,KAAiBG,qBAAoCp6C,MAC5E,C,8JC+BZ,IAlC4BnM,IAA6C,IAA5C,GAAEoJ,EAAE,KAAEwe,EAAI,KAAE/kB,EAAI,WAAE8iB,EAAU,QAAE3a,GAAShL,EAClE,MAAMwmD,GAAyBlhD,EAAAA,EAAAA,IAAUmhD,EAAAA,IACnC3iC,GAAkBxe,EAAAA,EAAAA,IAAUye,EAAAA,IAC5B2iC,GAA4BphD,EAAAA,EAAAA,IAAUqhD,EAAAA,IAEtCp+B,GAAgChoB,EAAAA,EAAAA,IAAYioB,EAAAA,IAmBlD,OACE/nB,EAAAA,cAAA,MAAIqB,UAAWC,IAAW0J,EAAAA,EAAEkF,KAAMw1C,EAAAA,IAAgBn7C,QAlBzB47C,EAACjhC,EAAY9Q,IAAUnO,IAChDod,EAAgB,CACd7iB,KAAMooB,EAAAA,GACNnf,QAAS,CACP,CAACof,EAAAA,IAAS3D,EACV,CAAC4D,EAAAA,IAAmB1U,KAIpB0T,EACFi+B,EAAuBp9C,GAEvBs9C,EAA0B7xC,GAE5B7J,GAAS,EAIkD47C,CAAmBjhC,EAAYvc,IACxF3I,EAAAA,cAAA,QAAMqB,UAAW2J,EAAAA,EAAEo7C,aACjBpmD,EAAAA,cAAA,OAAKyK,IAAK0c,EAAM9lB,UAAW2J,EAAAA,EAAEmc,QAE/BnnB,EAAAA,cAAA,QAAMqB,UAAW2J,EAAAA,EAAErK,OAAQyB,GACxB,C,qLCzCT,EAAoH,Q,sBC0DpH,EAhD4B7C,IAAsC,IAArC,WAAE2lB,EAAU,iBAAEe,GAAkB1mB,EAC3D,MAAM,cAAE2mB,EAAa,KAAEC,EAAI,MAAEza,IAAU0Z,EAAAA,EAAAA,IAAqBgB,EAAAA,GAAyB,CAAEzd,GAAIuc,KACrF,MAAEvkB,IAAUykB,EAAAA,EAAAA,IAAqBihC,EAAAA,GAA0B,CAAE19C,GAAIuc,IAIvE,OAFAsB,EAAAA,EAAAA,GAA8BtB,GAEzBA,EAGHllB,EAAAA,cAAA,OAAKqB,UDnBmB,SCoBtBrB,EAAAA,cAAA,OAAKqB,UDpBkC,SCqBrCrB,EAAAA,cAAA,OAAKqB,UDrBgE,QCqB5CkJ,QAAS0b,GAChCjmB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAK+G,KAEhBxK,EAAAA,cAAA,MAAIqB,UDxBiD,SCwB5BV,IAE3BX,EAAAA,cAAA,OAAKqB,UD1ByF,SC2B5FrB,EAAAA,cAAA,MAAIqB,UAAW2J,GACZkb,EAAcpZ,KAAIjG,IAAA,IAAC,GAAE8B,EAAE,OAAEme,EAAM,MAAEnmB,EAAK,UAAEomB,GAAWlgB,EAAA,OAClD7G,EAAAA,cAACgnB,EAAAA,EAAmB,CAClB9d,IAAM,eAAcP,IACpBA,GAAIA,EACJme,OAAQA,EACRnmB,MAAOA,EACPomB,UAAWA,EACX7B,WAAYA,EACZ3a,QAAS0b,GACT,KAGNjmB,EAAAA,cAAA,MAAIqB,UAAW2J,GACZmb,EAAKrZ,KAAIjE,IAAA,IAAC,GAAEF,EAAE,eAAEse,EAAc,KAAE7kB,GAAMyG,EAAA,OACrC7I,EAAAA,cAACknB,EAAAA,EAAmB,CAClBhe,IAAM,OAAMP,IACZA,GAAIA,EACJwe,KAAMF,EACN7kB,KAAMA,EACN8iB,WAAYA,EACZ3a,QAAS0b,GACT,KAGNjmB,EAAAA,cAAConB,EAAAA,GAAoB,CAAC1b,MAAOA,MApCX1L,EAAAA,cAAAA,EAAAA,SAAA,KAsChB,E,kECzCV,MAqCasmD,EAA8BpiC,IAAYL,EAAAA,EAAAA,QAAUtV,EAAAA,EAAAA,IAAmB2V,KAEpF,OAAetb,EAAAA,EAAAA,KAvCU8pB,KACvB,MAAOxN,EAAYqC,IAAiBxlB,EAAAA,EAAAA,YAC9BylB,GAAiC3iB,EAAAA,EAAAA,IAAU4iB,EAAAA,KACjDtlB,EAAAA,EAAAA,YAAU,KACRqlB,GAAgC,GAC/B,CAACA,IACJ,MAAMI,GAAa9nB,EAAAA,EAAAA,IAAY+nB,EAAAA,KACzB,OAAEqtB,EAAM,OAAEC,IAAWl0B,EAAAA,EAAAA,GAAaC,EAAAA,GAAY4K,SAE9Cy6B,EAAQ59C,GAAM1C,IAClB,MAAMugD,EAAathC,IAAevc,EAClC4e,EAAci/B,EAAa,KAAO79C,GAClC69C,EAAarR,IAAWD,GAAQ,EAElC,OAAKttB,GAAeA,EAAWhB,OAG7B5mB,EAAAA,cAAA,OAAKqB,UC9BmB,SD+BtBrB,EAAAA,cAAA,MAAIqB,UC/BuC,SDgCxCumB,EAAW9a,KAAIvN,IAAA,IAAC,GAAEoJ,EAAE,WAAE2f,EAAU,OAAExB,EAAM,MAAEpb,GAAOnM,EAAA,OAChDS,EAAAA,cAACuoB,EAAAA,EAAgB,CACfrf,IAAM,YAAWP,IACjBA,GAAIA,EACJ2f,WAAYA,EACZ5c,MAAOA,EACPob,OAAQA,EACR0B,SAAUtD,IAAevc,EACzB8f,QAASvD,EACTwD,gBAAiB69B,EAAM59C,IACvB,KAGLuc,GAAcllB,EAAAA,cAACymD,EAAmB,CAACvhC,WAAYA,EAAYe,iBAAkBsgC,EAAMrhC,MAlB1CllB,EAAAA,cAAAA,EAAAA,SAAA,KAmBtC,G,6FEdV,EA5ByBT,IAAuF,IAAtF,GAAEoJ,EAAE,WAAE2f,EAAU,OAAExB,EAAM,MAAEpb,EAAK,SAAE8c,EAAQ,OAAEC,EAAM,YAAE5B,EAAW,gBAAE6B,GAAiBnpB,EACzG,MAAMmnD,EAAa,CAAC,EACdC,EAAY,CAAC,EAYnB,OAVIn+B,GACFm+B,EAAUC,YAAcl7C,EACxBi7C,EAAUzzC,gBAAkBxH,EAC5Bi7C,EAAU/C,KAAO,QACjB8C,EAAWh7C,MAAQA,GACV+c,IACTk+B,EAAUC,aAAcC,EAAAA,EAAAA,IAASn7C,EAAO,IACxCi7C,EAAU/C,KAAOl4C,GAIjB1L,EAAAA,cAAA,MAAIkJ,IAAKP,EAAItH,UCnBU,QDmBakJ,QAASme,GAC3C1oB,EAAAA,cAAA,OAAKqB,UCpBuC,SDqB1CrB,EAAAA,cAAA,QAAMqB,UCrBmF,QDqBxDwlB,YAAaA,EAAaplB,OAAOqlD,EAAAA,EAAAA,IAAqBH,IACrE3mD,EAAAA,cAACuB,EAAAA,EAAO,CAACC,KAAMslB,KAEjC9mB,EAAAA,cAAA,QAAMqB,UCxB4D,QDwBhCI,OAAOqlD,EAAAA,EAAAA,IAAqBJ,IAC3Dp+B,IAGF,C,yKEkBT,IAlC4B/oB,IAAgD,IAA/C,GAAEoJ,EAAE,WAAEuc,EAAU,OAAE4B,EAAM,MAAEnmB,EAAK,QAAE4J,GAAShL,EACrE,MAAMwnD,GAAiCliD,EAAAA,EAAAA,IAAUmiD,EAAAA,IAC3C3jC,GAAkBxe,EAAAA,EAAAA,IAAUye,EAAAA,IAC5B2jC,GAAoCpiD,EAAAA,EAAAA,IAAUqiD,EAAAA,IAE9Cp/B,GAAgChoB,EAAAA,EAAAA,IAAYioB,EAAAA,IAmBlD,OACE/nB,EAAAA,cAAA,MAAIqB,UAAWC,IAAW0J,EAAAA,EAAEkF,KAAMw1C,EAAAA,IAAgBn7C,QAlBnBtE,IAC/Bod,EAAgB,CACd7iB,KAAMooB,EAAAA,GACNnf,QAAS,CACP,CAACof,EAAAA,IAAS3D,EACV,CAAC4D,EAAAA,IAAmBngB,KAIpBmf,EACFi/B,EAA+Bp+C,GAE/Bs+C,EAAkCt+C,GAEpC4B,GAAS,GAKPvK,EAAAA,cAAA,QAAMqB,UAAWC,IAAW0J,EAAAA,EAAEm8C,gBAAiBxB,EAAAA,KAC7C3lD,EAAAA,cAACuB,EAAAA,EAAO,CAACC,KAAMslB,KAEjB9mB,EAAAA,cAAA,QAAMqB,UAAW2J,EAAAA,EAAErK,OAAQA,GACxB,C,8HCpCM,SAAS6lB,EAA8BtB,GACpD,MAAM7B,GAAkBxe,EAAAA,EAAAA,IAAUye,EAAAA,KAC3B8jC,EAAwBC,IAA4B9gC,EAAAA,EAAAA,GAAW,MAEtEpkB,EAAAA,EAAAA,YAAU,KACRilD,GAAuB,IACrB/jC,EAAgB,CACd7iB,KAAM+iB,EAAAA,GACN9Z,QAAS,CAAE+Z,IAAKC,EAAAA,GAAQ6jC,6BAA8B3+B,MAAOzD,GAC7DtB,cAAc,MAGXyjC,IACN,CAACniC,GACN,C,+HCgCO,MAAMvV,GAAoC8b,EAAAA,EAAAA,GAC/C6W,EAAAA,IACA/qB,GAASA,IAAUgwC,EAAAA,IAAuBhwC,IAAUiwC,EAAAA,MAGL/7B,EAAAA,EAAAA,GAAqB6W,EAAAA,IAA2B/qB,IAC/F,OAAQA,GACN,KAAKkwC,EAAAA,GACL,KAAKjwC,EAAAA,GACH,MAAO,GACT,KAAKkwC,EAAAA,GACH,MAAO,SACT,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACH,MAAO,WACT,KAAKC,EAAAA,GACL,KAAKX,EAAAA,GACH,MAAO,oBACT,KAAKY,EAAAA,GACH,MAAO,qBACT,KAAKC,EAAAA,GACH,MAAO,oBACT,KAAKn3B,EAAAA,GACL,KAAKq2B,EAAAA,GACL,QACE,MAAO,aACX,KAG6C97B,EAAAA,EAAAA,GAAqB6W,EAAAA,IAA2B/qB,IAC7F,OAAQA,GACN,KAAK6wC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACH,MAAO,4BACT,QACE,MAAO,gCACX,KAGyC98B,EAAAA,EAAAA,GACzC6W,EAAAA,GACAkmB,EAAAA,GACAC,EAAAA,IACA,CAAClxC,EAAOmxC,EAAcC,KACpB,OAAQpxC,GACN,KAAKowC,EAAAA,GACH,MAAO,CAAExzB,IAAK,GAAIy0B,YAAa,6BAEjC,KAAKhB,EAAAA,GACL,KAAKF,EAAAA,GACL,KAAKK,EAAAA,GACL,KAAKc,EAAAA,GACL,KAAKb,EAAAA,GACL,KAAKc,EAAAA,GACH,MAAO,CAAEC,KAAKC,EAAAA,EAAAA,IAAyCN,aAAY,EAAZA,EAAcO,WAEvE,KAAKzxC,EAAAA,GACH,MAAO,CAAEuxC,KAAKC,EAAAA,EAAAA,IAAyCL,aAAiB,EAAjBA,EAAmBM,WAE5E,KAAKb,EAAAA,GACH,MAAO,CAAExjB,IAAK,GAAIzQ,IAAK,KAEzB,KAAK0zB,EAAAA,GACH,MAAO,CAAE1zB,IAAK,IAEhB,KAAKszB,EAAAA,GACL,KAAKK,EAAAA,GACL,KAAKG,EAAAA,GACL,QACE,MAAO,CAAE9zB,IAAK,IAClB,KAImC1I,EAAAA,EAAAA,GACrC6W,EAAAA,GACAkmB,EAAAA,GACAC,EAAAA,IACA,CAAClxC,EAAOmxC,EAAcC,KACpB,OAAQpxC,GACN,KAAKwwC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKc,EAAAA,GACL,KAAKlB,EAAAA,GACH,MAAO,CACLsB,WAAY,yBACZH,KAAKC,EAAAA,EAAAA,IAAyCN,aAAY,EAAZA,EAAcO,WAGhE,KAAKvB,EAAAA,GACL,KAAKmB,EAAAA,GACH,MAAO,CACLD,YAAa,mBACbG,KAAKC,EAAAA,EAAAA,IAAyCN,aAAY,EAAZA,EAAcO,WAGhE,KAAKzxC,EAAAA,GACH,MAAO,CACLoxC,YAAa,mBACbG,KAAKC,EAAAA,EAAAA,IAAyCL,aAAiB,EAAjBA,EAAmBM,WAGrE,KAAKE,EAAAA,GACL,KAAKC,EAAAA,GACH,MAAO,CACLR,YAAa,oBAGjB,KAAKP,EAAAA,GACH,MAAO,CAAEzjB,IAAK,GAAIzQ,IAAK,KAEzB,KAAK2zB,EAAAA,GACH,MAAO,CAAE3zB,IAAK,IAEhB,KAAKszB,EAAAA,GACL,KAAKE,EAAAA,GACL,KAAKE,EAAAA,GACL,KAAKI,EAAAA,GACL,QACE,MAAO,CAAE9zB,IAAK,IAClB,KAI+B1I,EAAAA,EAAAA,GACjC6W,EAAAA,GACAkmB,EAAAA,GACAC,EAAAA,IACA,CAAClxC,EAAOmxC,EAAcC,KACpB,OAAQpxC,GACN,KAAKkwC,EAAAA,GACH,MAAO,CACLmB,YAAa,iCACbz0B,IAAK,GACLrmB,MAAO,6CAEX,KAAK65C,EAAAA,GACH,MAAO,CACLiB,YAAa,wBACbM,WAAY,WACZ/0B,IAAK,IAET,KAAK3c,EAAAA,GACH,MAAO,CACLoxC,YAAa,iBACbG,KAAKC,EAAAA,EAAAA,IAAyCL,aAAiB,EAAjBA,EAAmBM,WAErE,KAAKrB,EAAAA,GACL,KAAKG,EAAAA,GACL,KAAKc,EAAAA,GACL,KAAKb,EAAAA,GACL,KAAKc,EAAAA,GACH,MAAO,CACLF,YAAa,iBACbG,KAAKC,EAAAA,EAAAA,IAAyCN,aAAY,EAAZA,EAAcO,UAC5DC,WAAY,YAEhB,KAAKxB,EAAAA,GACH,MAAO,CACLkB,YAAa,gBACbG,KAAKC,EAAAA,EAAAA,IAAyCN,aAAY,EAAZA,EAAcO,UAC5DC,WAAY,yBAEhB,KAAKZ,EAAAA,GACH,MAAO,CAAEM,YAAa,0BAA2BhkB,IAAK,GAAIzQ,IAAK,KACjE,KAAK0zB,EAAAA,GACL,KAAKK,EAAAA,GACH,MAAO,CAAEU,YAAa,eAAgBz0B,IAAK,IAC7C,KAAK2zB,EAAAA,GACH,MAAO,CAAEc,YAAa,iCAAkCz0B,IAAK,IAC/D,KAAK8zB,EAAAA,GACH,MAAO,CACLW,YAAa,iCACbz0B,IAAK,GACLrmB,MAAO,6CAEX,QACE,MAAO,CAAEqmB,IAAK,IAClB,KAIuC1I,EAAAA,EAAAA,GACzC6W,EAAAA,GACAkmB,EAAAA,GACAC,EAAAA,IACA,CAAClxC,EAAOmxC,EAAcC,IACZpxC,IACDgxC,EAAAA,GACI,CACLK,YAAa,kDACbhkB,IAAK,GACLzQ,IAAK,IACL+0B,WAAY,+BAGP,CACLN,YAAa,kCAMen9B,EAAAA,EAAAA,GAAqB6W,EAAAA,IAA2B/qB,IACpF,OAAQA,GACN,KAAK8xC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACH,MAAO,mBACT,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACH,MAAO,8BACT,QACE,MAAO,uBACX,KAGsCv+B,EAAAA,EAAAA,GAAqB6W,EAAAA,IAA2B/qB,IACtF,OAAQA,GACN,KAAK6wC,EAAAA,GACL,KAAKyB,EAAAA,GACL,KAAKC,EAAAA,GACH,MAAO,CAAE9nD,SAAS,GACpB,KAAKqmD,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAK0B,EAAAA,EACH,MAAO,CAAEjoD,SAAS,EAAM4iC,IAAK,EAAGzQ,IAAK,EAAGy0B,YAAa,6BACvD,KAAKS,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKH,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKc,EAAAA,GACL,KAAKC,EAAAA,GACH,MAAO,CAAEnoD,SAAS,EAAM4mD,YAAa,0BACvC,QACE,MAAO,CAAE5mD,SAAS,EAAM4iC,IAAK,EAAGzQ,IAAK,GACzC,KAGsC1I,EAAAA,EAAAA,GAAqB6W,EAAAA,IAA2B/qB,IACtF,OAAQA,GACN,KAAK8wC,EAAAA,GACL,KAAKc,EAAAA,GACL,KAAKC,EAAAA,GACH,MAAO,CAAEpnD,SAAS,GACpB,KAAKomD,EAAAA,GACL,KAAKG,EAAAA,GACL,KAAKD,EAAAA,GACH,MAAO,CAAEtmD,SAAS,GACpB,KAAKqnD,EAAAA,GACL,KAAKC,EAAAA,GACH,MAAO,CAAEtnD,SAAS,EAAM4mD,YAAa,6BACvC,KAAKqB,EAAAA,EACL,KAAKJ,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKI,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKJ,EAAAA,GACL,KAAKC,EAAAA,GACH,MAAO,CAAEhoD,SAAS,EAAM4mD,YAAa,8BACvC,QACE,MAAO,CAAE5mD,SAAS,EAAM4mD,YAAa,oBACzC,KAGkCn9B,EAAAA,EAAAA,GAAqB6W,EAAAA,IAA2B/qB,IAClF,OAAQA,GACN,KAAK2Z,EAAAA,GACL,KAAKi3B,EAAAA,GACL,KAAK3nB,EAAAA,GACL,KAAK4pB,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKlD,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKyC,EAAAA,EACH,MAAO,CAAEjoD,SAAS,EAAM4mD,YAAa,yBACvC,KAAKa,EAAAA,GACL,KAAKD,EAAAA,GACH,MAAO,CAAExnD,SAAS,EAAM4mD,YAAa,aACvC,KAAKP,EAAAA,GACL,KAAKE,EAAAA,GACH,MAAO,CAAEvmD,SAAS,EAAM4mD,YAAa,2BACvC,KAAKW,EAAAA,GACL,KAAKnB,EAAAA,GACL,KAAKsB,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKC,EAAAA,GACH,MAAO,CAAE5nD,SAAS,EAAM4mD,YAAa,iBACvC,KAAKU,EAAAA,GACL,KAAKD,EAAAA,GACH,MAAO,CAAErnD,SAAS,EAAM4mD,YAAa,0BACvC,KAAKiB,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKX,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKW,EAAAA,GACL,KAAKC,EAAAA,GACH,MAAO,CAAEhoD,SAAS,EAAM4mD,YAAa,gBACvC,QACE,MAAO,CAAE5mD,SAAS,GACtB,KAG0CypB,EAAAA,EAAAA,GAAqB6W,EAAAA,IAA2B/qB,IAC1F,OAAQA,GACN,KAAK6wC,EAAAA,GACL,KAAK6B,EAAAA,EACL,KAAKR,EAAAA,GACL,KAAKD,EAAAA,GACL,KAAKD,EAAAA,GACL,KAAKI,EAAAA,GACH,MAAO,CAAE3nD,SAAS,EAAM4mD,YAAa,6CACvC,KAAKP,EAAAA,GACL,KAAKF,EAAAA,GACL,KAAKj3B,EAAAA,GACL,KAAKs2B,EAAAA,GACL,KAAKD,EAAAA,GACL,KAAKqC,EAAAA,GACH,MAAO,CAAE5nD,SAAS,EAAM4mD,YAAa,+BACvC,KAAKN,EAAAA,GACL,KAAK6B,EAAAA,GACL,KAAKD,EAAAA,GACL,KAAKJ,EAAAA,GACL,KAAKD,EAAAA,GACL,KAAKT,EAAAA,GACL,KAAKD,EAAAA,GACL,KAAKE,EAAAA,GACL,KAAKC,EAAAA,GACL,KAAKI,EAAAA,GACH,MAAO,CAAE1nD,SAAS,EAAM4mD,YAAa,yCACvC,QACE,MAAO,CAAE5mD,SAAS,GACtB,KAG8CypB,EAAAA,EAAAA,GAAqB6W,EAAAA,IAA2B/qB,GACtFA,IACDwwC,EAAAA,GACI,oCAEA,oBAIsCt8B,EAAAA,EAAAA,GAAqB6W,EAAAA,IAA2B/qB,IACjG,OAAQA,GACN,KAAKsxC,EAAAA,GACL,KAAKd,EAAAA,GACH,MAAO,6CACT,QACE,MAAO,6BACX,KAGsCt8B,EAAAA,EAAAA,GAAqB6W,EAAAA,IAA2B/qB,IACtF,OAAQA,GACN,KAAKmyC,EAAAA,GACL,KAAKO,EAAAA,EACH,MAAO,0DACT,QACE,MAAO,kCACX,G,0FClbK,MAAMS,EACL,YADKA,EAEP,UAFOA,EAGJ,QAHIA,EAIN,M,oCCHP,EAAwD,Q,WCqCxD,EA7BgCnrD,IAAiF,IAAhF,qBAAEorD,EAAoB,WAAEC,EAAU,WAAEC,EAAU,iBAAEC,EAAgB,QAAEvgD,GAAShL,EAC1G,MAAMwrD,GAAoBjrD,EAAAA,EAAAA,IAAYkrD,EAAAA,IAChCC,GAAcnrD,EAAAA,EAAAA,IAAYmB,EAAAA,IAC1BiqD,GAAyBprD,EAAAA,EAAAA,IAAYghB,EAAAA,IACrCqqC,EAAuBF,IAAwClmB,EAAAA,EAAAA,GAAQ4lB,GAAlCO,EAE3C,OAAKA,EAGHlrD,EAAAA,cAAAA,EAAAA,SAAA,KACGmrD,GAAuBJ,GACtB/qD,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAA,YACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,qCAKb3I,EAAAA,cAACorD,EAAAA,EAAkB,CACjBC,YAAaV,EACbC,WAAYA,EACZrgD,QAASA,EACTsgD,WAAYA,EACZC,iBAAkBA,KAjBY9qD,EAAAA,cAAAA,EAAAA,SAAA,KAmB/B,ECIP,EA9BoCT,IAM9B,IAN+B,yBACnC+rD,EAAwB,WACxBV,EAAU,WACVC,EAAU,iBACVC,EAAgB,QAChBvgD,GACDhL,EACC,MAAMwrD,GAAoBjrD,EAAAA,EAAAA,IAAYkrD,EAAAA,IAChCO,IAA4BxmB,EAAAA,EAAAA,GAAQumB,GAE1C,OACEtrD,EAAAA,cAAAA,EAAAA,SAAA,KACGurD,GAA4BR,GAC3B/qD,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAA,YACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,oCAKb3I,EAAAA,cAACorD,EAAAA,EAAkB,CACjBC,YAAaC,EACbV,WAAYA,EACZrgD,QAASA,EACTsgD,WAAYA,EACZC,iBAAkBA,IAEnB,ECnBP,EAZ8BvrD,IAA+E,IAA9E,mBAAEisD,EAAkB,WAAEZ,EAAU,WAAEC,EAAU,iBAAEC,EAAgB,QAAEvgD,GAAShL,EACtG,OAAIwlC,EAAAA,EAAAA,GAAQymB,GAA4BxrD,EAAAA,cAAAA,EAAAA,SAAA,MAEtCA,EAAAA,cAACorD,EAAAA,EAAkB,CACjBC,YAAaG,EACbZ,WAAYA,EACZrgD,QAASA,EACTsgD,WAAYA,EACZC,iBAAkBA,GAClB,E,iCCaN,EAlB4BvrD,IAAkC,IAAjC,yBAAE+rD,GAA0B/rD,EACvD,MAAMgsD,IAA4BxmB,EAAAA,EAAAA,GAAQumB,GACpCG,GAAyB5mD,EAAAA,EAAAA,IAAU6mD,EAAAA,GAEnCC,GAAwBvhD,EAAAA,EAAAA,IAAiB,KAC7CqhD,GAAwB,GACvB,IAEH,OAAKF,EAEHvrD,EAAAA,cAAA,OAAKqB,UCjB6B,SDkBhCrB,EAAAA,cAAA,QAAMuK,QAASohD,GACb3rD,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,4BAJyB3I,EAAAA,cAAAA,EAAAA,SAAA,KAM9B,E,WEJV,EAX4BT,IAA4B,IAA3B,YAAEqsD,EAAW,MAAEhqD,GAAOrC,EACjD,MAAMwrD,GAAoBjrD,EAAAA,EAAAA,IAAYkrD,EAAAA,IACtC,OAAIY,GAAeb,EAA0B/qD,EAAAA,cAAAA,EAAAA,SAAA,MAG3CA,EAAAA,cAAA,OAAKqB,UCXsB,SDYzBrB,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,IAAI/G,aAAK,EAALA,EAAOQ,OAAQ,sBAClB,E,WE4JV,EAzJuB7C,IAA8D,IAA7D,QAAEgL,EAAO,kBAAEshD,EAAiB,iBAAE9rC,GAAmB,GAAOxgB,EAC9E,MAAM,YAAE8rD,EAAW,MAAEzpD,IAAU9B,EAAAA,EAAAA,KAAYgsD,EAAAA,EAAAA,IAAqB/rC,IAC1DmrC,GAAyBprD,EAAAA,EAAAA,IAAYghB,EAAAA,IACrCmqC,GAAcnrD,EAAAA,EAAAA,IAAYmB,EAAAA,KACzB4pD,EAAYkB,IAAiBhqD,EAAAA,EAAAA,UAAS,OACtCiqD,EAAWC,IAAgBlqD,EAAAA,EAAAA,UAAS,MACrCopD,EAAuBF,IAAwClmB,EAAAA,EAAAA,GAAQsmB,EAAY5xC,WAA9CyxC,EACrCK,IAA4BxmB,EAAAA,EAAAA,GAAQsmB,EAAYa,eAChDC,IAAsBpnB,EAAAA,EAAAA,GAAQsmB,EAAYe,SAC1CR,EAAcT,GAAuBI,GAA4BY,EACjEE,GAAW1nD,EAAAA,EAAAA,QAAO,CACtB2nD,YAAajB,EACbkB,SAAU3qD,EACV4qD,cAAe3B,EACf4B,aAAcT,IAGVU,GAA2B5mD,EAAAA,EAAAA,cAAY,IACvCmlD,EAAoBjrD,EAAAA,cAAAA,EAAAA,SAAA,MACjB,CAAEQ,KAAMmsD,EAAAA,KACd,CAAC1B,KAEE,iBAAE2B,IAAqBC,EAAAA,EAAAA,GAAkB,CAAEtiD,UAASmiD,8BAE1DvqD,EAAAA,EAAAA,YAAU,KAER0N,SAASua,iBAAiB,UAAW0iC,GAAqB,GAEnD,KACLj9C,SAASqa,oBAAoB,UAAW4iC,GAAqB,EAAM,IAEpE,KAEH3qD,EAAAA,EAAAA,YAAU,KACRkqD,EAASjmD,QAAU,IACdimD,EAASjmD,QACZkmD,YAAajB,EACbkB,SAAU3qD,EACX,GACA,CAACypD,EAAazpD,IAEjB,MAAMkpD,EAAmB/+C,IACvB,MAAMqiB,EAAM8U,KAAK9U,MACjB29B,EAAchgD,GACdkgD,EAAa79B,GACbi+B,EAASjmD,QAAU,IACdimD,EAASjmD,QACZomD,cAAezgD,EACf0gD,aAAcr+B,EACf,EAWG0+B,EAAsB7mD,IAC1B,MAAM,YAAEqmD,EAAW,SAAEC,EAAQ,cAAEC,EAAa,aAAEC,GAAiBJ,EAASjmD,QAExE,GAAImmD,EACF,OAGF,MAAMQ,EAAoBP,EACpBQ,EAAmBP,EACzB,IAAIQ,EACAC,EAAehqB,KAAK9U,MACxB,MAAM++B,EAAeb,EAAY7yC,UAAUmN,OAAS0lC,EAAYF,QAAQxlC,OAAS0lC,EAAYJ,cAActlC,OACrGwmC,EAAYnnD,EAAEiD,MAAQwhD,IAAezkD,EAAEyyC,UAAYzyC,EAAEiD,MAAQwhD,EAC7D2C,EAAUpnD,EAAEiD,MAAQwhD,GAAYzkD,EAAEyyC,UAAYzyC,EAAEiD,MAAQwhD,EACxD4C,EAAarnD,EAAEiD,MAAQwhD,EAG7B,GAzBiC6C,EAACP,EAAkBE,EAAchkD,IAEhE8jD,GACAE,EAAeF,EAzDK,MA0DnB9jD,IAAQwhD,GAAaxhD,IAAQwhD,GAAWxhD,IAAQwhD,GAAcxhD,IAAQwhD,GAqBrE6C,CAA2BP,EAAkBE,EAAcjnD,EAAEiD,KAC/D,OAAOjD,EAAE4Z,iBAGX,GAAIutC,EACFnnD,EAAE4Z,iBACFotC,EAAsC,OAAtBF,GAA8BA,EAAoB,GAAKI,EAAe,OACjF,GAAIE,EACTpnD,EAAE4Z,iBACFotC,EACwB,OAAtBF,GACIA,EAAoB,GAAK,EACvBA,EAAoB,EAEtBI,EAAe,MAChB,IAAIG,GAAoC,OAAtBP,EAA4B,CACnD9mD,EAAE4Z,iBACF5Z,EAAEs+C,kBACF0I,EAAgB,KAChB,MACMhwC,EADc,IAAIqvC,EAAY7yC,aAAc6yC,EAAYJ,iBAAkBI,EAAYF,SAChEW,GAC5B,OAAOH,EAAiB3vC,EAC1B,CAAWhX,EAAEyyC,UT/GR,US+GoBzyC,EAAEiD,KAEzBjD,EAAE4Z,iBACFotC,EAAgBF,EAChBG,EAAeF,IAEfE,EAAe,KACfD,EAAgB,KAClB,CAEAlB,EAAckB,GACdhB,EAAaiB,GACbb,EAASjmD,QAAU,IACdimD,EAASjmD,QACZomD,cAAeS,EACfR,aAAcS,EACf,EAGH,OACEltD,EAAAA,cAAA,OAAKqB,URvIwB,SQwI1BwqD,EAED7rD,EAAAA,cAACwtD,EAAuB,CACtB7C,qBAAsBU,EAAY5xC,UAClCmxC,WAAY,EACZC,WAAYA,EACZC,iBAAkBA,EAClBvgD,QAASqiD,IAGX5sD,EAAAA,cAACytD,EAA2B,CAC1BnC,yBAA0BD,EAAYa,cACtCtB,WAAYS,EAAY5xC,UAAUmN,OAClCikC,WAAYA,EACZC,iBAAkBA,EAClBvgD,QAASA,IAGXvK,EAAAA,cAAC0tD,EAAqB,CACpBlC,mBAAoBH,EAAYe,QAChCxB,WAAYS,EAAY5xC,UAAUmN,OAASykC,EAAYa,cAActlC,OACrEikC,WAAYA,EACZC,iBAAkBA,EAClBvgD,QAASA,IAGXvK,EAAAA,cAAC2tD,EAAmB,CAACrC,yBAA0BD,EAAYa,gBAE3DlsD,EAAAA,cAAC4tD,EAAmB,CAAChC,YAAaA,EAAahqD,MAAOA,IAClD,C,4FCrKV,GAAgB,iBAAmB,QAAQ,sBAAwB,QAAQ,iBAAmB,QAAQ,SAAW,QAAQ,sBAAwB,QAAQ,uBAAyB,QAAQ,iBAAmB,QAAQ,2BAA6B,QAAQ,KAAO,QAAQ,OAAS,QAAQ,OAAS,QAAQ,QAAU,QAAQ,UAAY,S,q9bC2IzU,MAqRaisD,GAAkBtuD,IAAkB,IAAjB,SAAEuuD,GAAUvuD,EAC1C,MAAMiC,EAtReusD,KACrB,OAAQA,GACN,IAAK,gBACH,OAAOC,GACT,IAAK,gBACH,OAAOC,EACT,IAAK,gBACH,OAAOC,EACT,IAAK,2BACH,OAAOC,EACT,IAAK,2BACH,OAAOC,EACT,IAAK,yBACH,OAAOC,EACT,IAAK,yBACH,OAAOC,EACT,IAAK,kBACH,OAAOC,EACT,IAAK,kBACH,OAAOC,EACT,IAAK,qBACH,OAAOC,EACT,IAAK,qBACH,OAAOC,EACT,IAAK,kBACH,OAAOC,EACT,IAAK,kBACH,OAAOC,EACT,IAAK,kBACH,OAAOC,EACT,IAAK,kBACH,OAAOC,EACT,IAAK,sBACH,OAAOC,EACT,IAAK,sBACH,OAAOC,EACT,IAAK,mBACH,OAAOC,EACT,IAAK,mBACH,OAAOC,EACT,IAAK,wBACH,OAAOC,EACT,IAAK,wBACH,OAAOC,EACT,IAAK,sBACH,OAAOC,EACT,IAAK,sBACH,OAAOC,EACT,IAAK,eACH,OAAOC,EACT,IAAK,eACH,OAAOC,EACT,IAAK,eACH,OAAOC,EACT,IAAK,eACH,OAAOC,EACT,IAAK,iBACH,OAAOC,EACT,IAAK,iBACH,OAAOC,EACT,IAAK,oBACH,OAAOC,EACT,IAAK,oBACH,OAAOC,EACT,IAAK,oBACH,OAAOC,EACT,IAAK,oBACH,OAAOC,EACT,IAAK,qBACH,OAAOC,EACT,IAAK,qBACH,OAAOC,EACT,IAAK,eACH,OAAOC,EACT,IAAK,eACH,OAAOC,EACT,IAAK,mBACH,OAAOC,EACT,IAAK,mBACH,OAAOC,EACT,IAAK,gBACH,OAAOC,EACT,IAAK,gBACH,OAAOC,EACT,IAAK,iBACH,OAAOC,GACT,IAAK,iBACH,OAAOC,GACT,IAAK,iBACH,OAAOC,GACT,IAAK,iBACH,OAAOC,GACT,IAAK,aACH,OAAOC,GACT,IAAK,aACH,OAAOC,GACT,IAAK,iBACH,OAAOC,GACT,IAAK,iBACH,OAAOC,GACT,IAAK,eACH,OAAOC,GACT,IAAK,eACH,OAAOC,GACT,IAAK,aACH,OAAOC,GACT,IAAK,aACH,OAAOC,GACT,IAAK,yBACH,OAAOC,GACT,IAAK,yBACH,OAAOC,GACT,IAAK,yBACH,OAAOC,GACT,IAAK,yBACH,OAAOC,GACT,IAAK,qBACH,OAAOC,GACT,IAAK,qBACH,OAAOC,GACT,IAAK,oBACH,OAAOC,GACT,IAAK,oBACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,kBACH,OAAOC,GACT,IAAK,kBACH,OAAOC,GACT,IAAK,wBACH,OAAOC,GACT,IAAK,wBACH,OAAOC,GACT,IAAK,yBACH,OAAOC,GACT,IAAK,yBACH,OAAOC,GACT,IAAK,uBACH,OAAOC,GACT,IAAK,uBACH,OAAOC,GACT,IAAK,iBACH,OAAOC,GACT,IAAK,iBACH,OAAOC,GACT,IAAK,yBACH,OAAOC,GACT,IAAK,yBACH,OAAOC,GACT,IAAK,mBACH,OAAOC,GACT,IAAK,mBACH,OAAOC,GACT,IAAK,qBACH,OAAOC,GACT,IAAK,qBACH,OAAOC,GACT,IAAK,wBACH,OAAOC,GACT,IAAK,wBACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,2BACH,OAAOC,GACT,IAAK,2BACH,OAAOC,GACT,IAAK,oBACH,OAAOC,GACT,IAAK,oBACH,OAAOC,GACT,IAAK,eACH,OAAOC,GACT,IAAK,eACH,OAAOC,GACT,IAAK,cACH,OAAOC,GACT,IAAK,cACH,OAAOC,GACT,IAAK,gBACH,OAAOC,GACT,IAAK,gBACH,OAAOC,GACT,IAAK,0BACH,OAAOC,GACT,IAAK,0BACH,OAAOC,GACT,IAAK,iBACH,OAAOC,GACT,IAAK,iBACH,OAAOC,GACT,IAAK,0BACH,OAAOC,GACT,IAAK,0BACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,iBACH,OAAOC,GACT,IAAK,iBACH,OAAOC,GACT,IAAK,oBACH,OAAOC,GACT,IAAK,oBACH,OAAOC,GACT,IAAK,kBACH,OAAOC,GACT,IAAK,kBACH,OAAOC,GACT,IAAK,eACH,OAAOC,GACT,IAAK,eACH,OAAOC,GACT,IAAK,mBACH,OAAOC,GACT,IAAK,mBACH,OAAOC,GACT,IAAK,kBACH,OAAOC,GACT,IAAK,kBACH,OAAOC,GACT,IAAK,mBACH,OAAOC,GACT,IAAK,mBACH,OAAOC,GACT,IAAK,kBACH,OAAOC,GACT,IAAK,kBACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,sBACH,OAAOC,GACT,IAAK,6BACH,OAAOC,GACT,IAAK,6BACH,OAAOC,GACT,IAAK,0BACH,OAAOC,GACT,IAAK,0BACH,OAAOC,GACT,IAAK,wBACH,OAAOC,GACT,IAAK,wBACH,OAAOC,GACT,IAAK,yBACH,OAAOC,GACT,IAAK,yBACH,OAAOC,GACT,IAAK,kBACH,OAAOC,GACT,IAAK,kBACH,OAAOC,GACT,QACE,OAAO,KACX,EAIaC,CAAezI,GAC5B,OAAOtsD,EAAOxB,EAAAA,cAACuB,EAAAA,EAAO,CAACkC,IAAKjC,IAAWxB,EAAAA,cAAAA,EAAAA,SAAA,KAAK,E,oDChZ9C,MAAMw2D,GAAmBzzD,IACvB,MAAM,QAAEka,EAAU,CAAC,GAAMla,GACnB,OAAEqc,EAAM,aAAEq3C,GAAiBx5C,GAC1By5C,GAAct3C,EACrB,OACEpf,EAAAA,cAAAA,EAAAA,SAAA,KACGy2D,GACCz2D,EAAAA,cAAA,OAAKqB,UAAW2J,EAAE2rD,WAChB32D,EAAAA,cAAA,OAAKyK,IAAKgsD,KAGdz2D,EAAAA,cAAA,OAAKqB,UAAWiI,IAAW0B,EAAE4rD,iBAAkB5rD,EAAE6rD,WAC/C72D,EAAAA,cAAA,QAAMqB,UAAW2J,EAAE8rD,sBAAuB/mD,wBAAyB,CAAEC,OAAQ0mD,MAE9E,EAIDK,GAAiBh0D,IAAS,IAAAi0D,EAC9B,MAAM,QAAE/5C,GAAYla,GACb2zD,KAAeO,GAAeh6C,EAAQmC,OACvC5d,EAAOyb,SAAgB,QAAT+5C,EAAP/5C,EAASi6C,eAAO,IAAAF,OAAA,EAAhBA,EAAkBruD,GACzBwuD,GAAWl6C,aAAO,EAAPA,EAASk6C,YAAY,EAEtC,OACEn3D,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKqB,UAAWiI,IAAW0B,EAAExJ,KAAM,OAAQwJ,EAAExJ,KAC3CxB,EAAAA,cAACuB,EAAAA,EAAO,CAACC,KAAMA,KAEjBxB,EAAAA,cAAA,OAAKqB,UAAWiI,IAAW0B,EAAE4rD,iBAAyC,IAAvBK,EAAYrwC,QAAgB5b,EAAE6rD,WAC3E72D,EAAAA,cAAA,QAAMqB,UAAW2J,EAAE8rD,sBAAuB/mD,wBAAyB,CAAEC,OAAQ0mD,KAC5ES,GACCn3D,EAAAA,cAAA,YACGm3D,EAASrqD,KAAI,CAACrB,EAASM,IACf/L,EAAAA,cAAA,OAAKqB,UAAW2J,EAAEosD,iBAAkBluD,IAAM,GAAEwtD,KAAc3qD,IAAOtB,IAAKgB,QAIjF0rD,GACAn3D,EAAAA,cAAA,QAAMqB,UAAW2J,EAAEqsD,4BAChBJ,EAAYnqD,KAAI,CAACnM,EAAOgI,IACvB3I,EAAAA,cAAA,QAAMkJ,IAAKP,EAAIoH,wBAAyB,CAAEC,OAAQrP,SAKzD,EAID22D,GAAev0D,IAAS,IAAAw0D,EAAAC,EAAAC,EAC5B,MAAM,QAAEx6C,GAAYla,EACdvB,EAAOyb,SAAgB,QAATs6C,EAAPt6C,EAASi6C,eAAO,IAAAK,OAAA,EAAhBA,EAAkB5uD,GACzBghB,GAAS7pB,EAAAA,EAAAA,IAAY8pB,EAAAA,IACrB8tC,EAAe/tC,EAAOguC,WAAW,OAAShuC,EAAOguC,WAAW,MAAQC,EAAiBC,GACrF,mBAAEC,GAAuB76C,EACzBgsC,EAAW6O,SAA6B,QAAXN,EAAlBM,EAAoBC,iBAAS,IAAAP,OAAA,EAA7BA,EAAgC,GAC3CQ,EAAOF,SAAwB,QAANL,EAAlBK,EAAoBE,YAAI,IAAAP,OAAA,EAAxBA,EAA0B92D,MACjC2V,EAAU2yC,GAAY+O,EAAQ,GAAE/O,MAAa+O,SAASjqC,EACtDkqC,EAAYH,aAAkB,EAAlBA,EAAoBI,WAChCC,EAAcT,GAAaU,EAAAA,EAAAA,IAAQN,aAAkB,EAAlBA,EAAoB11D,OAE7D,OACEpC,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKqB,UAAWiI,IAAW0B,EAAExJ,KAAM,OAAQwJ,EAAExJ,KAC3CxB,EAAAA,cAACuB,EAAAA,EAAO,CAACC,KAAMA,KAEjBxB,EAAAA,cAAA,OAAKqB,UAAWiI,IAAW0B,EAAE4rD,mBAC3B52D,EAAAA,cAAA,QACEqB,UAAWiI,IAAW0B,EAAE8rD,sBAAuB9rD,EAAEqtD,wBACjDtoD,wBAAyB,CAAEC,OAAQiN,EAAQmC,OAAO,MAEnD64C,GACCj4D,EAAAA,cAAA,QAAMqB,UAAWiI,IAAW0B,EAAE8rD,sBAAuB9rD,EAAEqtD,yBAA0BJ,GAElF3hD,GACCtW,EAAAA,cAAA,QAAMqB,UAAWiI,IAAW0B,EAAEqsD,2BAA4BrsD,EAAEqtD,yBAC1Dr4D,EAAAA,cAAA,YAAOsW,IAIXtW,EAAAA,cAAA,WACEA,EAAAA,cAAC6tD,GAAe,CAACC,SAAU,kBAC1BqK,aAAW,EAAXA,EAAarrD,KAAIwrD,GAChBt4D,EAAAA,cAAC6tD,GAAe,CAAC3kD,IAAKovD,EAAOxK,SAAUwK,QAI5C,EAIDC,GAAqBh5D,IAAuC,IAAtC,KAAEiB,EAAI,QAAEyc,EAAO,eAAEu7C,GAAgBj5D,EAC3D,OAAIiB,IAASqc,EAAAA,EAAkBrc,KAAKi4D,YAC3Bz4D,EAAAA,cAACw2D,GAAgB,CAACv5C,QAASA,IACzBu7C,EACFx4D,EAAAA,cAACs3D,GAAY,CAACr6C,QAASA,IAEvBjd,EAAAA,cAAC+2D,GAAc,CAAC95C,QAASA,GAClC,EA8CF,OA3CoBla,IAAS,IAAA21D,EAAAC,EAAAC,EAC3B,MAAM,QAAE37C,EAAO,IAAElR,GAAQhJ,EAEnBy1D,GAAiBv7C,SAAgB,QAATy7C,EAAPz7C,EAASi6C,eAAO,IAAAwB,OAAA,EAAhBA,EAAkB/vD,MAAOkwD,GAAAA,KAAiB57C,SAAgB,QAAT07C,EAAP17C,EAASi6C,eAAO,IAAAyB,OAAA,EAAhBA,EAAkBhwD,MAAOmwD,GAAAA,GAEpFt4D,EAAOyc,aAAO,EAAPA,EAASzc,KAmBtB,OACER,EAAAA,cAAC4R,GAAAA,EAAe,CACdpR,KAAMu4D,GAAAA,GACNtvD,QAAS,CACP,CAACuvD,GAAAA,IAAW/7C,SAAgB,QAAT27C,EAAP37C,EAASi6C,eAAO,IAAA0B,OAAA,EAAhBA,EAAkBjwD,GAC9B,CAACswD,GAAAA,IAAeltD,EAAM,GAExB1K,UAAWiI,IAAW0B,EAAEkuD,iBAAkBV,GAAkBxtD,EAAEmuD,uBAE5D5uD,QA1BUtE,IACdA,EAAE4Z,iBACF5Z,EAAEs+C,kBACF,MAAM,QAAEh6C,EAAO,QAAE0S,GAAYla,EAC7BwH,GAAWA,EAAQ0S,EAAQ,EAuBvBm8C,aApBeA,KACnB,MAAM,IAAErtD,EAAG,iBAAE++C,GAAqB/nD,EAClC+nD,EAAiB/+C,EAAI,EAmBjBmS,QAhBUA,KACd,MAAM,IAAEnS,EAAG,iBAAE++C,GAAqB/nD,EAClC+nD,EAAiB/+C,EAAI,GAiBnB/L,EAAAA,cAACu4D,GAAkB,CAAC/3D,KAAMA,EAAMyc,QAASA,EAASu7C,eAAgBA,IAClD,ECvItB,GArB2Bj5D,IAAA,IAAC,YAC1B8rD,EAAc,GAAE,WAChBT,EAAa,EAAC,QACdrgD,EAAO,WACPsgD,GAAa,EAAE,iBACfC,EAAmBA,UACpBvrD,EAAA,OACCS,EAAAA,cAAA,OAAKqB,UCVuB,SDW1BrB,EAAAA,cAAA,UACGqrD,EAAYv+C,KAAI,CAACmQ,EAASo8C,KACzB,MAAMttD,EAAM6+C,EAAayO,EACzB,OACEr5D,EAAAA,cAAA,MAAIkJ,IAAK6C,EAAK1K,UAAWwpD,IAAe9+C,ECfD,QDeoB,IACzD/L,EAAAA,cAACs5D,GAAW,CAAOvtD,MAAKkR,UAAS1S,UAASugD,qBACvC,KAIP,C,+HEaR,IAzB0BvrD,IAA2C,IAA1C,QAAEgL,EAAO,yBAAEmiD,GAA0BntD,EAC9D,MAAM0rD,GAAcnrD,EAAAA,EAAAA,IAAYmB,EAAAA,KAC1B,aAAEqK,IAAiBtB,EAAAA,EAAAA,GAASC,EAAAA,GAAUmZ,8BACtCC,GAAkBxe,EAAAA,EAAAA,IAAUye,EAAAA,IAC5BtM,GAAiBnS,EAAAA,EAAAA,IAAUoS,EAAAA,IAC3Bf,GAAsBrR,EAAAA,EAAAA,IAAUK,EAAAA,IAiBtC,MAAO,CAAE0nD,iBAdgB3vC,IACvB,MAAM,UAAEs8C,EAAS,KAAE/4D,GAASyc,EACvBs8C,EAEMtO,GACT5nC,EAAgBqpC,EAAyBzvC,IAPtBzc,KAAQ0V,EAAoBvQ,EAAAA,GAAamT,eAAgB,CAAEtY,QAAO,EAQrFsY,CAAetY,GACfwW,EAAe,CAAEO,MAAO0Y,EAAAA,OAExB3kB,IACA+X,EAAgBqpC,EAAyBzvC,KAPzC1S,EAAQ0S,EAQV,EAGyB,C,oLCc7B,EAnCyBu8C,KACvB,MAAMC,GAAiB35D,EAAAA,EAAAA,IAAY45D,EAAAA,IAC7BC,GAAgB75D,EAAAA,EAAAA,IAAY85D,EAAAA,IAC5BC,GAAuBh1D,EAAAA,EAAAA,IAAUi1D,EAAAA,IACjCz2C,GAAkBxe,EAAAA,EAAAA,IAAUye,EAAAA,IAE5By2C,EAAepxD,GAAM,KACzB0a,EAAgB,CACd7iB,KAAMw5D,EAAAA,GACNvwD,QAAS,CACP,CAACwwD,EAAAA,IAAYtxD,KAGjBkxD,EAAqB,CAAEK,OAAQvxD,GAAK,EAGtC,OACE3I,EAAAA,cAAA,UACGy5D,EAAe3sD,KAAIvN,IAAyB,IAAxB,GAAEoJ,EAAE,MAAEhI,EAAK,KAAEa,GAAMjC,EACtC,OACES,EAAAA,cAAA,MAAIqB,UAAW84D,EAAAA,EAAcC,kBAAmBlxD,IAAKP,GACnD3I,EAAAA,cAACq6D,EAAAA,EAAQ,CACP7xC,SAAUmxC,IAAkBhxD,EAC5BnH,KAAMA,EACNwxB,YAAaryB,EACb4J,QAASwvD,EAAapxD,GACtBsqB,qBAAqB,IAEpB,IAGN,E,sBChCT,MAAMqnC,EAAYC,GAAS,2BAA0BA,IAEtC,SAASC,EAAoBj7D,GAA6B,IAA5B,OAAE26D,EAAM,eAAEO,GAAgBl7D,EACrE,MAAMm7D,GAAiB56D,EAAAA,EAAAA,KAAY66D,EAAAA,EAAAA,IAAqBT,IAClDU,GAAa96D,EAAAA,EAAAA,KAAY+6D,EAAAA,EAAAA,IAAiBX,IAC1CY,GAA6Bj2D,EAAAA,EAAAA,IAAUk2D,EAAAA,IACvCC,GAAeC,EAAAA,EAAAA,IAAqBC,EAAAA,GAAcpuD,IAAIwtD,IAEtDa,GAA2Br1D,EAAAA,EAAAA,cAAYmP,IAC3C,MAAML,EAAQK,EAAMhI,OAAO2H,MAC3BkmD,EAA2B,CACzBZ,SACA,CAACkB,EAAAA,IAAkBxmD,GACnB,GACD,IAEH,OACE5U,EAAAA,cAAA,WACGy6D,GACCz6D,EAAAA,cAAA,WACEA,EAAAA,cAACq7D,EAAAA,EAAoB,CACnBxvD,SAAW,yBAAwBquD,IACnCrlD,SAAUD,GACRkmD,EAA2B,CACzBZ,OAAQA,EACR,CAACoB,EAAAA,IAAc1mD,IAGnB+/B,aAAcimB,KAIpB56D,EAAAA,cAAA,OAAKqB,UCzCoB,SD0CvBrB,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI2xD,EAAU,aACjBt6D,EAAAA,cAAA,UAAQ6U,SAAUsmD,EAA0BvmD,MAAO8lD,GAChDQ,EAAAA,GAAcpuD,KAAI8H,GACjB5U,EAAAA,cAAA,UAAQkJ,IAAM,GAAEgxD,KAAUtlD,IAASA,MAAOA,GACvComD,EAAaV,EAAU1lD,IAAQ,KAAG2mD,EAAAA,GAA4BrB,GAAQtlD,GAAO,cAO5F,CErDA,MAA6B,QAA7B,EAAkD,Q,4CCiFlD,EAvEsBgG,KACpB,MAAM4gD,GAAwB32D,EAAAA,EAAAA,IAAU42D,EAAAA,KACjCz5D,EAASC,IAAcC,EAAAA,EAAAA,MACvBw5D,EAAoBC,IAAyB55D,EAAAA,EAAAA,YAapD,OAXAI,EAAAA,EAAAA,YAAU,IACD6W,UACL,MAAM4iD,QAAgCJ,IAElCI,SAAAA,EAAyBh6D,QAC3BK,GAAW,GACX05D,EAAsBC,EAAwBh6D,OAChD,GAED,IAGD5B,EAAAA,cAAAA,EAAAA,SAAA,KACGgC,GAAWhC,EAAAA,cAAA,OAAKqB,UAAWw6D,EAAAA,EAAqBjiD,cAAe8hD,GAChE17D,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAA,UACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,4CAET3I,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAACw5D,EAAgB,QAGrBx5D,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAA,UACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,iCAET3I,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAC87D,EAAAA,EAAkB,CAAC5B,OAAO,UAG/Bl6D,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAA,UACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,uCAET3I,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAC87D,EAAAA,EAAkB,CAAC5B,OAAO,YAAYO,gBAAc,MAGzDz6D,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAA,UACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,kCAET3I,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAACw6D,EAAoB,CAACN,OAAO,WAGjCl6D,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAA,UACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,kCAET3I,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAACw6D,EAAoB,CAACN,OAAO,OAAOO,gBAAc,MAGtDz6D,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAAA,UACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,yCAET3I,EAAAA,cAAA,OAAKqB,UAAW2J,GACdhL,EAAAA,cAACw6D,EAAoB,CAACN,OAAO,cAAcO,gBAAc,MAG5D,C,4FC9DP,EAX6Bl7D,IAA0C,IAAzC,SAAEsM,EAAQ,SAAEgJ,EAAQ,aAAE8/B,GAAcp1C,EAChE,OACES,EAAAA,cAAA,OAAKqB,UCNc,SDOjBrB,EAAAA,cAAA,WACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAIkD,KAET7L,EAAAA,cAAC00C,EAAAA,EAAW,CAAC7/B,SAAUA,EAAU8/B,aAAcA,IAC3C,C,uEEXV,GAAgB,mBAAqB,QAAQ,0BAA4B,QAAQ,YAAc,S,sHC0C/F,EAtCsBp1C,IAA0C,IAAzC,gBAAEw8D,EAAe,SAAEvX,EAAQ,MAAE5vC,GAAOrV,EACzD,MAAMy8D,GAAgBl2D,EAAAA,EAAAA,cACpB6C,GAAMszD,IACJA,EAAIp8C,iBACJ2kC,EAAS77C,EAAG,GAEd,IAEF,OACE3I,EAAAA,cAAA,OAAKqB,UCbc,SDcjBrB,EAAAA,cAAA,OAAKqB,UCd4B,SDe/BrB,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,qCAET3I,EAAAA,cAAA,UACG+7D,EAAgBjvD,KAAIovD,IACnB,MAAM,KAAE16D,EAAI,MAAEb,EAAK,GAAEgI,EAAE,YAAEqqB,GAAgBkpC,EACzC,OACEl8D,EAAAA,cAAA,MACEuK,QAASyxD,EAAcrzD,GACvBO,IAAM,WAAUP,IAChBtH,UAAWC,ICxBgC,QDwBVsT,IAAUjM,GCxBmB,UD0B9D3I,EAAAA,cAAA,OAAKqB,UC1B+E,SD2BlFrB,EAAAA,cAAA,OAAKyK,IAAKjJ,EAAMH,UC3BiF,WD8BnGrB,EAAAA,cAAA,OAAKqB,UC9BgH,SD+BnHrB,EAAAA,cAAA,OAAKqB,UC/B8H,SD+BzGV,GAC1BX,EAAAA,cAAA,WAAMgzB,IAEL,KAIP,E,iCERV,EAxBsBzzB,IAA4E,IAA3E,gBAAEw8D,EAAkB,GAAE,MAAEnnD,EAAQunD,EAAAA,GAAkB,OAAEjC,EAAM,SAAErlD,GAAUtV,EAC3F,MAAM68D,EAAiBL,EAAgBzb,MAAKz5C,IAAA,IAAC,GAAE8B,GAAI9B,EAAA,OAAK8B,IAAOiM,CAAK,IAC9DtK,EAAW,WAAU4vD,KACrB,aAAE5uD,EAAY,UAAEvB,IAAcC,EAAAA,EAAAA,GAASM,GAS7C,OAPAnI,EAAAA,EAAAA,YAAU,IAAM4H,GAAW,IAQzB/J,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,OAAKqB,UDpBwJ,QCoBpIkJ,QAASA,IAAMe,KACrC8wD,GAAkBp8D,EAAAA,cAAA,OAAKyK,IAAK2xD,EAAe56D,QAE9CxB,EAAAA,cAACqK,EAAAA,EAAK,CAACC,QAASA,EAAS7I,MAAO,CAAEwpC,SAAU,MAC1CjrC,EAAAA,cAACq8D,EAAa,CAACN,gBAAiBA,EAAiBvX,SAXtC5vC,IACfC,EAAS,CAAE5H,OAAQ,CAAE2H,WACrB7K,GAAW,EAS8D6K,MAAOA,KAE7E,E,WCQP,MAAM0nD,EAAY,CAChBC,IAAK,CACH,CAACC,EAAAA,IAAuBC,EAAAA,IAE1BC,UAAW,CACT,CAACF,EAAAA,IAAuBG,EAAAA,KAIb,SAASb,EAAkBv8D,GAA6B,IAAAq9D,EAAA,IAA5B,OAAE1C,EAAM,eAAEO,GAAgBl7D,EACnE,MAAMs9D,GAAe/8D,EAAAA,EAAAA,KAAYg9D,EAAAA,EAAAA,IAAmB5C,IAC9C6C,GAAmBj9D,EAAAA,EAAAA,KAAYk9D,EAAAA,EAAAA,IAAuB9C,IACtD+C,GAAgBn9D,EAAAA,EAAAA,KAAYo9D,EAAAA,EAAAA,IAAoBhD,IAChDiD,GAAWr9D,EAAAA,EAAAA,KAAYs9D,EAAAA,EAAAA,IAAelD,IACtCmD,GAAcv9D,EAAAA,EAAAA,KAAYw9D,EAAAA,EAAAA,IAAkBpD,IAC5CU,GAAa96D,EAAAA,EAAAA,KAAY+6D,EAAAA,EAAAA,IAAiBX,IAC1C6B,EAAkBc,SAA2B,QAAfD,EAAZC,EAAcU,qBAAa,IAAAX,OAAA,EAA3BA,EAA6BY,QAC/CC,GAAY39D,EAAAA,EAAAA,KAAY49D,EAAAA,EAAAA,IAAgBxD,IACxCY,GAA6Bj2D,EAAAA,EAAAA,IAAUk2D,EAAAA,IACvC13C,GAAkBxe,EAAAA,EAAAA,IAAUye,EAAAA,IAE5B63C,EAA2BwC,GAAmB1oD,IAAS,IAAA2oD,EAC3D,MAAMhpD,EAAQK,EAAMhI,OAAO2H,MACrB4O,EAAM84C,SAA4B,QAAnBsB,EAATtB,EAAYO,EAAal0D,WAAG,IAAAi1D,OAAA,EAA5BA,EAA+BD,GACvCn6C,GACFH,EAAgB,CACd7iB,KAAMgjB,EACN/Z,QAAS,CACP,CAACwwD,EAAAA,IAAYrlD,KAInBkmD,EAA2B,CACzBZ,OAAQ2C,EAAal0D,GACrB,CAACg1D,GAAkB/oD,GACnB,EAGJ,OACE5U,EAAAA,cAAA,OAAKqB,UAAWiI,IAAW0B,EAAE8wD,qBAC3B97D,EAAAA,cAAA,OAAKqB,UAAW2J,EAAE6yD,2BACfpD,GACCz6D,EAAAA,cAAA,WACEA,EAAAA,cAACq7D,EAAAA,EAAoB,CACnBxvD,SAAW,yBAAwBquD,IACnCrlD,SAAUD,IACRumD,EAAyBG,EAAAA,GAAzBH,CAAsC,CAAEluD,OAAQ,CAAE2H,UAAU,EAE9D+/B,aAAcimB,KAIpB56D,EAAAA,cAAA,WACEA,EAAAA,cAAA,aACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,oCAET3I,EAAAA,cAAA,YACEA,EAAAA,cAAA,UAAQ4U,MAAOmoD,EAAiBp0D,GAAIkM,SAAUsmD,EAAyBqB,EAAAA,MACnEa,GAAe,IAAIvwD,KAAIgxD,GACvB99D,EAAAA,cAAA,UAAQkJ,IAAK40D,EAAQn1D,GAAIiM,MAAOkpD,EAAQn1D,IACrCm1D,EAAQn9D,YAMnBX,EAAAA,cAAA,WACEA,EAAAA,cAAA,aACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,oCAET3I,EAAAA,cAAA,YACEA,EAAAA,cAAA,UAAQ4U,MAAOqoD,EAAct0D,GAAIkM,SAAUsmD,EAAyB4C,EAAAA,MAChEZ,GAAY,IAAIrwD,KAAIkxD,GACpBh+D,EAAAA,cAAA,UAAQkJ,IAAK80D,EAAKr1D,GAAIiM,MAAOopD,EAAKr1D,IAC/Bq1D,EAAKr9D,UAIZX,EAAAA,cAACi+D,EAAAA,EAAY,CACXrpD,MAAOqoD,EAAciB,MACrB/vC,KAAK,MACLrZ,OAAQqmD,EAAyBgD,EAAAA,MAEnCn+D,EAAAA,cAAA,YAAOi9D,EAAcmB,cAGzBp+D,EAAAA,cAAA,WACEA,EAAAA,cAAA,aACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,2CAET3I,EAAAA,cAAA,YACEA,EAAAA,cAACi+D,EAAAA,EAAY,CACXrpD,MAAOqoD,EAAcoB,YACrBlwC,KAAK,IACLrZ,OAAQqmD,EAAyBmD,EAAAA,MAEnCt+D,EAAAA,cAAA,YAAOi9D,EAAcsB,oBAGxBxC,GACC/7D,EAAAA,cAAA,OAAKqB,UAAW2J,EAAEwzD,aAChBx+D,EAAAA,cAAA,WACEA,EAAAA,cAACmM,EAAAA,GAAC,CAACxD,GAAI,qCAET3I,EAAAA,cAACy+D,EAAa,CACZ1C,gBAAiBA,EACjBnnD,MAAO6oD,EACPvD,OAAQA,EACRrlD,SAAUsmD,EAAyBuD,EAAAA,QAOjD,C,wEClIA,IAfgCtsC,CAACZ,EAAkBQ,KACjD,MAAMF,GAAehyB,EAAAA,EAAAA,IAAYiyB,EAAAA,IAC3BN,GAAmB3xB,EAAAA,EAAAA,KAAY6rB,EAAAA,EAAAA,IAAqBzK,EAAAA,GAAY2K,UAChE6F,GAAwB5xB,EAAAA,EAAAA,KAAY6rB,EAAAA,EAAAA,IAAqBzK,EAAAA,GAAYyQ,gBAS3E,OAAOG,GANJL,GAAqBC,IAAyBM,EAA+C,EAA1B+B,EAAAA,MAEhCvC,GAAqBC,GAAqBC,EAEF,EAA3BitC,EAAAA,GAED,C,mFCEpD,IAbwBr0D,IACtB,MAAMs0D,GAAW/5D,EAAAA,EAAAA,IAAUyG,EAAAA,IACrBuzD,GAAWh6D,EAAAA,EAAAA,IAAUkF,EAAAA,IAI3B,MAAO,CACLkK,kBAJkBnU,EAAAA,EAAAA,KAAYmU,EAAAA,EAAAA,IAAiB3J,IAK/CgB,cAJcE,EAAAA,EAAAA,IAAyB,IAAMozD,EAASt0D,IAAU,CAACs0D,EAAUt0D,IAK3EP,WAJWyB,EAAAA,EAAAA,IAAyB,IAAMqzD,EAASv0D,IAAU,CAACu0D,EAAUv0D,IAKzE,C,gFCdH,MAEMw0D,EAAe,QAEN,MAAMl5C,UAAuB5lB,EAAAA,UAC1C2kB,WAAAA,CAAY5hB,GACV61B,MAAM71B,IAAMg8D,EAAAA,EAAAA,GAAA,cAeN,KACNlmC,KAAK4K,SAAS,CAAEpN,OAAQyoC,GAAe,IAdvCjmC,KAAK9vB,MAAQ,CACXstB,OARiB,UAUrB,CAEAiN,iBAAAA,GACEzK,KAAKjJ,QAAUvpB,WAAWwyB,KAAKmmC,MAAOnmC,KAAK91B,MAAM8iB,OAdjB,EAelC,CAEA2d,oBAAAA,GACEj9B,aAAasyB,KAAKjJ,QACpB,CAMAqU,MAAAA,GACE,OAAIpL,KAAK9vB,MAAMstB,SAAWyoC,EAAqB9+D,EAAAA,cAAAA,EAAAA,SAAA,MACxC64B,KAAK91B,MAAMiE,QACpB,E,sGCNF,EAlBoBzH,IAAwC,IAAvC,SAAEsV,EAAQ,aAAE8/B,GAAe,GAAOp1C,EACrD,MAAOqV,EAAOkK,IAAY/c,EAAAA,EAAAA,UAAS4yC,GCLRsqB,EAACpwC,EAAIw0B,KAChC,MAAM6b,GAAev6D,EAAAA,EAAAA,SAAO,IAC5BxC,EAAAA,EAAAA,YAAU,KACR,IAAI+8D,EAAa94D,QAGf,OAAOyoB,IAFPqwC,EAAa94D,SAAU,CAGzB,GACCi9C,EAAK,EDDR4b,EAAqB,KACnBpqD,EAASD,EAAM,GACd,CAACA,IAEJ,MAAMrK,GAAUH,EAAAA,EAAAA,IAAiB,KAC/B0U,GAAUlK,EAAM,GACf,CAACA,IAEJ,OACE5U,EAAAA,cAAA,OAAKuK,QAASA,EAASlJ,UAAWiI,IEjBf,QFiBkCsL,GEjBjB,UFkBlC5U,EAAAA,cAAA,OAAKqB,UElB8C,UFmB/C,C,yGGpBH,MAAMylD,EAAuB,WAAe,IAAdqY,EAAIrxC,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC3C,MAAMsxC,EAAQD,EAAKzzD,MAAQ,CAAE2zD,oBAAqBF,EAAKzzD,OAAU,CAAC,EAElE,MAAO,IAAKyzD,KAASC,EACvB,EAGavY,EAAW,SAACyY,GAAmB,IAAdz1B,EAAK/b,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,GAAAA,UAAA,GAAG,EACpC,IAAKwxC,EAAK,MAAQ,gBAElB,MAAOz+C,EAAG0+C,EAAGC,GAAKF,EAAIroB,MAAM,SAASnqC,KAAIyT,GAAKyvB,SAASzvB,EAAG,MAE1D,MAAQ,QAAOM,KAAK0+C,KAAKC,KAAK31B,IAChC,EAEagc,EAA4Bn6C,GAAU,SAAQA,UAAcA,6BAAiCA,I,uCCb1G,KAAgBkJ,EAAOgb,KACrB,MAAO7mB,EAAO06B,IAAY1hC,EAAAA,EAAAA,UAAS6S,GAQnC,OANAzS,EAAAA,EAAAA,YAAU,KACR,MAAM28B,EAAUz4B,YAAW,IAAMo9B,EAAS7uB,IAAQgb,GAElD,MAAO,IAAMrpB,aAAau4B,EAAQ,GACjC,CAAClqB,EAAOgb,IAEJ7mB,CACR,C,uCCgBD,IA1BmB,WAAsB,IAArB02D,EAAY3xC,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,GAAAA,UAAA,GAAG,EACjC,MAAM4xC,GAAQ/6D,EAAAA,EAAAA,UACRg7D,GAAS75D,EAAAA,EAAAA,cACb,SAAC+oB,GAA6B,IAAzBhJ,EAAKiI,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,GAAAA,UAAA,GAAG2xC,EACXl5D,aAAam5D,EAAMt5D,SACnBs5D,EAAMt5D,QAAUC,WAAWwoB,EAAIhJ,EACjC,GACA,CAAC45C,IAGGp8B,GAAOv9B,EAAAA,EAAAA,cAAY,KACvBS,aAAam5D,EAAMt5D,SACnBs5D,EAAMt5D,aAAU2nB,CAAS,GACxB,IAUH,OANA5rB,EAAAA,EAAAA,YAAU,IACD,KACLkhC,GAAM,GAEP,IAEI,CAACs8B,EAAQt8B,EAREu8B,IAAMr8D,QAAQm8D,EAAMt5D,SASxC,C,uCCHA,IArBkB,WAAwB,IAAvBy5D,IAAW/xC,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,KAAAA,UAAA,GAC5B,MAAOpZ,EAAQ+uB,IAAY1hC,EAAAA,EAAAA,UAAS89D,IAEpC19D,EAAAA,EAAAA,YAAU,KACRshC,GAAS,EAAM,GACd,IAEH,MAAMq8B,GAASh6D,EAAAA,EAAAA,cAAY,IAAM29B,GAAU/uB,IAAS,CAACA,IAE/CnK,GAAUzE,EAAAA,EAAAA,cACdm2D,IACMA,GAAKA,EAAIp8C,iBAEbigD,GAAQ,GAEV,CAACA,IAGH,MAAO,CAACprD,EAAQnK,EAClB,C,uICNO,MAAMw1D,EACXxgE,IAAA,IAAC,aAAEygE,EAAY,WAAEC,EAAU,aAAEC,GAAc3gE,EAAA,OAC3C,WAAmC,IAAlC,aAAE4gE,EAAY,OAAE/iC,GAAQtP,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAEtBkyC,GAAcx7D,QAAQs+C,KAAK,4DAEhC,MAAMsd,EAAqBC,EAAAA,EAAmBC,eAExC,OAAE5pD,EAAM,MAAE3N,EAAK,MAAEqiB,EAAK,UAAEm1C,GAAcJ,EACtCK,EACHz3D,GAASA,EAAM03D,+BAA4C,QAAX/pD,GACrC,QAAXA,IAAoBgqD,EAAAA,EAAAA,IAAqBH,aAAS,EAATA,EAAWhpD,OACjDopD,EAAe53D,GAASA,EAAM43D,cAEpCC,EAAAA,EAAAA,IAAoB,CAAET,eAAc/iC,SAAQyjC,oBAAqBX,IAEjE,MAAMY,EAA0B/3D,GAASA,EAAM+3D,wBACzCC,IAA6BC,EAAAA,EAAAA,IAAoC51C,EAAMlH,YAE7Ek8C,EAAmBH,WAAaA,EAEhC,IAAIgB,EAAoBtjD,QAAQC,UAiBhC,OAdMmjD,IACFG,EAAAA,EAAAA,KAAoB5+B,EAAAA,EAAAA,IAA0BlX,EAAMlH,YAApDg9C,CAAiE91C,EAAMnH,SAAUmH,EAAMlH,UAErFs8C,EACGG,GAAcQ,EAAoBhB,EAApBgB,GAEnBnB,EAAa,CAAEG,eAAc/0C,QAAOgS,SAAQr0B,QAAO+3D,4BAA2Bz8D,KAC3Es8D,EAAmDr5D,EAAAA,GAApC65D,EAAoBhB,IAOnCc,EAAkB58D,MAAK,KAAM,CAClC+8D,UAAWhB,EAAmBH,WAAW,CAAEE,eAAc/iC,SAAQr0B,aAErE,CAAC,EAEUo4D,EAAsBhB,IACjC,MAAM,MAAE/0C,GAAU+0C,EACZkB,GAAgB/+B,EAAAA,EAAAA,IAA0BlX,EAAMlH,YACtD,MAAO,KACL,MAAMme,GAAeC,EAAAA,EAAAA,IAA0BlX,EAAMlH,YAEjDm9C,IAAkBh/B,IACpBi/B,EAAAA,EAAAA,IAAqBnB,EAArBmB,CAAmCl2C,EAAMnH,SAAUmH,EAAMlH,SAC3D,CACD,C,oKChEI,MAAMq9C,EAAcC,KACJA,aAAI,EAAJA,EAAMr7C,OAAQ,IACfrZ,KAAIvN,IAAwE,IAAvE,GAAEoJ,EAAE,KAAEvG,EAAI,cAAEq/D,EAAa,KAAEC,EAAI,eAAEz6C,EAAc,OAAE06C,EAAM,QAAEC,GAASriE,EACzF,MAAO,CACLoJ,KACAvG,OACAq/D,gBACAC,MAAMG,EAAAA,EAAAA,GAAYH,GAClBz6C,gBAAgB46C,EAAAA,EAAAA,GAAY56C,EAAgBsH,KAAK4F,IAAI,GAAG2tC,EAAAA,EAAAA,QACxDH,QAAQE,EAAAA,EAAAA,GAAYF,EAAQpzC,KAAK4F,IAAI,GAAG2tC,EAAAA,EAAAA,QACxCF,UACD,IAIQG,EAAkBP,IAAQA,aAAI,EAAJA,EAAMQ,WAAY,GAE5CC,EAAoBT,KACZA,aAAI,EAAJA,EAAM55C,aAAc,IACrB9a,KAAIjG,IAA6D,IAA5D,GAAE8B,EAAE,WAAE2f,EAAU,MAAE3nB,EAAK,OAAEmmB,EAAM,KAAEX,EAAI,MAAEza,EAAK,QAAEyZ,GAASte,EAC5E,MAAO,CAAE8B,KAAI2f,aAAY3nB,QAAOmmB,SAAQX,OAAMza,QAAOyZ,UAAS,IAIrD+8C,EAAuBV,KACZA,aAAI,EAAJA,EAAMt7C,gBAAiB,IACxBpZ,KAAIjE,IAAyD,IAAxD,GAAEF,EAAE,MAAEhI,EAAK,OAAEmmB,EAAM,MAAEpb,EAAK,UAAEqb,EAAS,WAAEo7C,GAAYt5D,EAC3E,MAAO,CAAEF,KAAIhI,QAAOmmB,SAAQpb,QAAOqb,YAAWo7C,aAAY,IAMjDC,EAAyBj6D,GAC9BA,aAAgB6wC,MAEf7wC,EAAK2E,KAAIu1D,IAAA,IAAC,GAAE15D,EAAE,KAAEnI,EAAI,MAAEG,EAAK,KAAEkuC,EAAI,GAAEpO,EAAE,KAAEtZ,GAAMk7C,EAAA,MAAM,CACxD15D,KACAnI,OACAG,QACAkuC,OACApO,KACAtZ,MAAM06C,EAAAA,EAAAA,GAAY16C,EAAMoH,KAAK4F,IAAI,GAAG2tC,EAAAA,EAAAA,QACrC,IAToC,G,cCfhC,MAAMr6C,EAA6BA,IAAM,CAACxD,EAAUC,KACzD,MAAMmS,GAASisC,EAAAA,EAAAA,IAAsBp+C,KAErC,OAAImS,IAAWksC,EAAAA,EAAiBC,YAAcnsC,IAAWksC,EAAAA,EAAiBE,KAAa9kD,QAAQC,WAE/FqG,EAAS,CAAEzjB,KAAMkiE,EAAAA,GAAsBp+C,QAAS,CAAE+R,OAAQksC,EAAAA,EAAiBC,eAEpEG,EAAAA,EAAAA,MAAyBt+D,MAAKu+D,IACnC,IAAKA,EAASz6D,KAEZ,OADA8b,EAAS,CAAEzjB,KAAMkiE,EAAAA,GAAsBp+C,QAAS,CAAE+R,OAAQksC,EAAAA,EAAiBM,WACpEllD,QAAQC,UDEO4jD,MCCxBv9C,EAAS,CACPzjB,KAAMsiE,EAAAA,GACNx+C,QAAS,CACPy+C,ODJoBvB,ECIAoB,EAASz6D,KDJDq5D,aAAI,EAAJA,EAAMuB,OCKlC58C,KAAMo7C,EAAYqB,EAASz6D,MAC3B66D,SAAUjB,EAAgBa,EAASz6D,MACnCyf,WAAYq6C,EAAkBW,EAASz6D,MACvC+d,cAAeg8C,EAAqBU,EAASz6D,QAE/C,IACF,EA6BS86D,EAAgDA,IAAM,CAACh/C,EAAUC,IAC5EvG,QAAQulD,IAAI,CACVz7C,IAA6BxD,EAAUC,GA5BS,EAACD,EAAUC,KAC7D,KAAIi/C,EAAAA,EAAAA,IAAiCj/C,KAErC,OAAOk/C,EAAAA,EAAAA,MAAoC/+D,MAAKu+D,IACzCA,EAASz6D,MAEd8b,EAAS,CACPzjB,KAAM6iE,EAAAA,GACN/+C,QAAS89C,EAAuBQ,EAASz6D,OACzC,GACF,EAmBAm7D,CAAwCr/C,EAAUC,KAGzCq/C,EAAuCA,IAAM,CAACt/C,EAAUC,IACnEvG,QAAQulD,IAAI,CAACz7C,IAA6BxD,EAAUC,GApBX,EAACD,EAAUC,KACpD,KAAIs/C,EAAAA,EAAAA,IAAwBt/C,KAE5B,OAAOu/C,EAAAA,EAAAA,MAA2Bp/D,MAAKu+D,IAChCA,EAASz6D,MAEd8b,EAAS,CACPzjB,KAAMkjE,EAAAA,GACNp/C,QAAS89C,EAAuBQ,EAASz6D,OACzC,GACF,EAU6Dw7D,CAA+B1/C,EAAUC,I,oJCjF3F,MAAM0/C,UAAqBjrC,MACxChU,WAAAA,GACEiU,MAAM,sDACNC,KAAKz2B,KAAO,cACd,E,2DCQF,SAASyhE,EAA0B5mD,EAAS6mD,GAC1C,OAAO7mD,EAAQ8mD,gBAAkBD,CACnC,CAEO,MAAM3mD,EAAuBvI,GAASqP,IAC3CA,EAAS,CACPzjB,KAAMwjE,EAAAA,GACN1/C,QAAS1P,GACT,EASSqI,EACX1d,IAAA,IAAC,MAAE0e,EAAK,kBAAErB,EAAoB,OAAOrd,EAAA,MACrC,CAAC0kB,EAAUC,KACT,IAAKjG,EAEH,MAXgC,EAACgG,EAAUC,KAC/CD,EAAS,CACPzjB,KAAMyjE,EAAAA,IACN,EAOEC,CAAmBjgD,GACZtG,QAAQC,UAGjBT,EAAqBc,EAArBd,CAA4B8G,EAAUC,GAEtC,MAAM4/C,EAAc5gC,KAAK9U,MACnBzE,GAASC,EAAAA,EAAAA,IAAa1F,KAE5B,MCpC0BigD,EAAC5oC,EAAM5R,EAAMpqB,KAA2C,IAAzC,MAAE0e,EAAK,kBAAErB,EAAoB,OAAOrd,EAC/E,MAAM6sD,GAAU1oD,EAAAA,EAAAA,IAAWC,EAAAA,EAASkoB,SAC9BuR,EAAS,CACbgnC,EAAGnmD,EACHnB,OAAQF,EACRynD,MAAO,EACPC,YAAYC,EAAAA,EAAAA,IAAsBhpC,OAC/BipC,EAAAA,EAAAA,IAAqB7gE,EAAAA,EAASkoB,QAASlC,OACvC86C,EAAAA,EAAAA,OAGL,OAAO9hB,EAAAA,GAAQC,IAAIwJ,EAAS,CAAEziC,SAAQyT,WAAU/4B,MAAKu+D,GAAYA,GAAS,EDyBjEuB,EADMvqC,EAAAA,EAAAA,IAAc1V,KACCyF,EAAQ,CAAE1L,QAAOrB,sBAC1CvY,MAAKu+D,IACJ,MAAM,KAAEz6D,GAASy6D,EAEjB,GAAKz6D,UAAAA,EAAMu8D,SACT,MAAM,IAAId,EAGZ,MAAMe,EE/CC,SAAU/B,GACvB,MAAO,CACL8B,SAAU9B,EAAS8B,SAAS53D,KAAI,WAAkB,IAAjBmQ,EAAO6Q,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC1C,MAAM,KAAEttB,EAAI,IAAE8pB,EAAG,IAAEC,EAAG,QAAE2sC,EAAO,OAAE93C,EAAM,eAAEwlD,EAAc,UAAEC,EAAS,mBAAE/M,GAAuB76C,EAErFk6C,EAAW0N,EACb,CACE1N,SAAU0N,EAAU/3D,KAAIrB,IAAWo2D,EAAAA,EAAAA,GAAYp2D,MAEjD,CAAC,EAECgrD,EAAemO,EAAiB,CAAEnO,cAAcoL,EAAAA,EAAAA,GAAY+C,IAAoB,CAAC,EAEvF,OAAOE,OAAOC,OACZ,CAAC,EACD,CAAEvkE,OAAM8pB,MAAKC,MAAKnL,UAClB83C,EAAU,CAAEA,WAAY,CAAC,GACzBA,aAAO,EAAPA,EAASvuD,MAAOkwD,EAAAA,KAAiB3B,aAAO,EAAPA,EAASvuD,MAAOmwD,EAAAA,GAAuB,CAAEhB,sBAAuB,CAAC,EAClGX,EACAV,EAEJ,IAEJ,CFwB2Bxb,CAAM9yC,IACnB,QAAE8U,GAAYiH,IAEhB2/C,EAA0B5mD,EAAS6mD,IACrC7/C,EAAS,CACPzjB,KAAMwkE,EAAAA,GACN1gD,QAAS,CAAEnc,KAAMw8D,EAAYb,gBAEjC,IAEDv/D,OAAM3C,IACL,MAAM,QAAEqb,GAAYiH,IAChB2/C,EAA0B5mD,EAAS6mD,IACrC7/C,EAAS,CACPzjB,KAAMykE,EAAAA,GACN3gD,QAAS,CAAE1iB,QAAOkiE,gBAEtB,GACA,CACL,C,6KG7DH,MAAMoB,EAAqB3lE,IAAuF,IAAtF,mBAAE4lE,EAAkB,kBAAEC,EAAiB,wBAAEC,EAAuB,cAAEC,GAAe/lE,EAC3G,MAAO,CACL6f,OAAQgmD,EACJD,EAAmBI,YAAYz4D,KAAI04D,EAAAA,EAAAA,IAAiCH,EAAyBC,IAC7FH,aAAkB,EAAlBA,EAAoBI,YACxBznB,KAAMqnB,aAAkB,EAAlBA,EAAoBrnB,KAC1Bt9C,KAAM2kE,aAAkB,EAAlBA,EAAoB3kE,KAC1B02D,QAAS,CACPvuD,GAAI,WAEP,ECdU88D,GAAsBh6C,EAAAA,EAAAA,GAAqBi6C,EAAAA,IAAmBhmD,IAAUA,aAAM,EAANA,EAAQwsC,gBAAiB,KAEjGyZ,GAA8Bl6C,EAAAA,EAAAA,GAAqBg6C,GAAqBvZ,GDehDA,KACnC0Z,EAAAA,EAAAA,KACEC,IAASC,EAAAA,EAAAA,IAAOD,EAAO,OAAQ,UAC/BA,IAASE,EAAAA,EAAAA,GAAKF,EAAO,MACrBA,GAASA,EAAM/4D,KAAIq4D,GAAsBD,EAAmB,CAAEC,0BAHhES,CAIE1Z,GCnBF8Z,CAAsB9Z,K,eCIxB,MAAM+Z,EAAkBp3B,GAAQ0rB,IAAQ,IAAMA,EAAM1rB,SAE9Cq3B,EAAqB96C,IAASA,aAAK,EAALA,EAAOnO,UAAW,CAAC,EAE1CkpD,GAA0B16C,EAAAA,EAAAA,GAAqBy6C,GAAoBjpD,IAAWA,aAAO,EAAPA,EAASlI,aAAc,KAErGi2C,GAAiCv/B,EAAAA,EAAAA,GAC5C06C,GACApxD,GAA6B,KAAfA,IAGHqxD,GAAqB36C,EAAAA,EAAAA,GAAqBy6C,GAAoBjpD,IAAWA,aAAO,EAAPA,EAASrb,QAAS,OAE3FykE,GAA2B56C,EAAAA,EAAAA,GAAqBy6C,GAAoBjpD,KAC9EA,aAAO,EAAPA,EAASqpD,qBAAsB,IAAIx5D,IAAIm5D,EAAgBM,EAAAA,EAAoBna,YAGjEoa,GAAiC/6C,EAAAA,EAAAA,GAC5C06C,EACAV,EACAE,GACA,CAAC5wD,EAAYm3C,EAAe8Z,IACP,KAAfjxD,EAA0BixD,EAAsBl5D,IAAIm5D,EAAgBM,EAAAA,EAAoBE,UFLxDC,EAACrB,EAAyBC,EAAepZ,KAC/E0Z,EAAAA,EAAAA,KACEC,GACEA,EAAM/oD,QAAOqoD,IACXwB,EAAAA,EAAAA,IAAiCtB,EAAyBF,EAAmBI,YAAYlmD,KAAK,UAElGwmD,IAASC,EAAAA,EAAAA,IAAOD,EAAO,OAAQ,UAC/BA,IAASE,EAAAA,EAAAA,GAAKF,EAAO,KACrBA,GACEA,EAAM/4D,KAAIq4D,GACRD,EAAmB,CACjBC,qBACAC,mBAAmB,EACnBC,0BACAC,qBAbRM,CAgBE1Z,GEROwa,EAFsBE,EAAAA,EAAAA,IAA2B7xD,GAEFA,EAAYm3C,GAAep/C,IAC/Em5D,EAAgBM,EAAAA,EAAoBE,YAKpCI,EAA2BtnE,IAAgE,IAA/D,KAAEiX,EAAI,MAAE7V,EAAK,QAAE2V,EAAO,QAAEG,EAAO,KAAEjW,EAAI,UAAE+4D,EAAS,OAAEn6C,GAAQ7f,EAC1F,MAAO,CACLiX,OACA4I,OAAQ9I,EAAU,CAAC3V,EAAO2V,GAAW8I,EACrC83C,QAAS,CAAEvuD,GAAI8N,GACfjW,OACAquC,KAAM03B,EAAAA,EAAoB9sD,UAC1B8/C,UAAWh2D,QAAQg2D,GACpB,EAGGuN,EAAqC5nD,IAClC,IACF2nD,EAAyB3nD,GAC5B5I,QAAS4I,EAAW5I,UAIXywD,GAA6Bt7C,EAAAA,EAAAA,GAAqBu7C,EAAAA,IAAqBC,IAClF,MAAM,KAAE3uD,EAAI,KAAEC,GAAS0uD,EACvB,MAAO,CACL3uD,KAAM,CACJu2B,KAAM03B,EAAAA,EAAoB9sD,aACvBnB,GAELC,KAAM,CACJs2B,KAAM03B,EAAAA,EAAoB9sD,aACvBlB,GAEN,IAGU2uD,GAAqCz7C,EAAAA,EAAAA,GAChD3K,EAAAA,GACArI,EAAAA,GACAsuD,GACA,CAAC7b,EAAwBzxC,EAAWwtD,KAClC,IAAK/b,EAAwB,MAAO,GAEpC,MAAM,OAAE1yC,EAAM,KAAEF,EAAI,KAAEC,GAASkB,EAM/B,MAAO,IALkB,CACvBnB,EAAK3X,MAAQ8Y,EAAUnB,KAAO2uD,EAAc3uD,KAC5CC,EAAK5X,MAAQ8Y,EAAUlB,KAAO0uD,EAAc1uD,MAIxBzL,IAAIg6D,MACrBtuD,EAAO1L,KAAI4M,GAASmtD,EAAyBntD,KACjD,IAIQytD,GAA6B17C,EAAAA,EAAAA,GACxCy7C,EACAf,GACA,CAAC1sD,EAAW1E,IACS,KAAfA,EAA0B0E,EAAU2tD,MAAM,EAAG,GAG1C3tD,EAAUqD,QAAOyC,IACtB,MAAM8nD,GAAoBT,EAAAA,EAAAA,IAA2B7xD,GACrD,OAAO4xD,EAAAA,EAAAA,IAAiCU,EAAmB9nD,EAASH,OAAOC,KAAK,KAAK,MAK9EioD,EAA6BA,CAACC,EAAsBC,KAC/D,MAAMC,EAAkBD,EAAqB16D,KAAIoS,IAAcwoD,EAAAA,EAAAA,MAAgBxoD,aAAU,EAAVA,EAAYE,SAAU,IAAIC,KAAK,QAC9G,OAAOkoD,EAAqBzqD,QAAOoC,IACjC,MAAMve,GAAQ+mE,EAAAA,EAAAA,IAAexoD,EAAWE,OAAOC,KAAK,MACpD,OAAQooD,EAAgBnnB,MAAKia,GAAQA,IAAS55D,GAAM,GACpD,EAGSmrD,EAAuB,eAAC/rC,EAAgB+N,UAAAlH,OAAA,QAAAmH,IAAAD,UAAA,IAAAA,UAAA,GAAQ,OAC3DrC,EAAAA,EAAAA,GACE26C,EACArmD,EAAmB,IAAM,GAAKonD,EAC9BX,EACAH,GACA,CAACzkE,EAAO+lE,EAAsBC,EAA0BtB,KACtD,MAAMuB,EAA+BF,EAAqB7qD,QAAOjW,IAAA,IAAC,KAAE2P,GAAM3P,EAAA,OAAKtD,QAAQiT,EAAK,IACtF01C,EAAgBob,EAA2BM,EAA0BC,GAM3E,MAAO,CACLjmE,QACAypD,YAAa,CACX5xC,UAAWouD,EACX3b,gBACAE,QAVYkb,EAA2BhB,EAAoB,IAC1DuB,KACA3b,KAUJ,GAEJ,EAEU4b,GAAgCr8C,EAAAA,EAAAA,GAC3C3K,EAAAA,GACArI,EAAAA,GACAsuD,GACA,CAAC7b,EAAwBzxC,EAAWwtD,KAClC,IAAK/b,EAAwB,MAAO,GACpC,MAAM,KAAE5yC,EAAI,KAAEC,GAASkB,EACvB,MAAO,CACLnB,SAAAA,EAAM3X,MAAQmmE,EAAmCrtD,EAAUnB,MAAQ2uD,EAAc3uD,KACjFC,SAAAA,EAAM5X,MAAQmmE,EAAmCrtD,EAAUlB,MAAQ0uD,EAAc1uD,KAClF,G,wDCxJE,MAAMsE,EAAoB,CAC/BC,OAAQ,CACNkjB,UAAW,YACXjjB,OAAQ,SACRmmD,IAAK,OAEP1iE,KAAM,CACJ8V,QAAS,UACTyxD,IAAK,MACLtP,YAAa,cACbuP,OAAQ,U,mKCyBZ,IAAIC,GAAyB,EACtB,MAAMvtD,EAA2BA,IAAM,CAACuJ,EAAUC,IACnD+jD,GACFA,GAAyB,EAxBM,EAAChkD,EAAUC,KAC5C,MAAMyF,GAASC,EAAAA,EAAAA,IAAa1F,KAE5B,OAAOgkD,EAAAA,EAAAA,IAAiBv+C,GAAQtlB,MAAK8D,IACnC,MAAMggE,EChBmChgE,IACpCA,aAAI,EAAJA,EAAMigE,SAASC,UDeIC,CAA8BngE,GAChDogE,ECb2BpgE,IAC5BA,aAAI,EAAJA,EAAMqgE,gBDYYC,CAAsBtgE,GAE7C8b,EAAS,CACPzjB,KAAMkoE,EAAAA,GACNpkD,QAAS,CAAE6jD,kBAAiBI,oBAG9B,MAAMI,EChB8BxgE,KACtC,MAAMwgE,GAAaxgE,aAAI,EAAJA,EAAMygE,cAAe,CAAC,EACzC,OAAO9D,OAAO+D,QAAQF,GAAYG,QAAO,CAACC,EAAKC,KAC7C,MAAO9/D,EAAKg1D,GAAS8K,EAErB,OADAD,EAAI7/D,IAAOoM,EAAAA,EAAAA,IAAoB4oD,EAAO,GAC/B6K,CAAG,GACT,CAAC,EAAE,EDUeE,CAAyB9gE,GAE5C8b,EAAS,CACPzjB,KAAM0oE,EAAAA,GACN5kD,QAAS,CAAEqkD,eACX,GACF,EAOOQ,CAAuBllD,EAAUC,IAGnCvG,QAAQC,UAKJm9C,EACXx7D,IAAA,IAAC,OAAE26D,KAAWkP,GAA4B7pE,EAAA,MAC1C,CAAC0kB,EAAUC,KACTD,EAAS,CACPzjB,KAAM6oE,EAAAA,GACN/kD,QAAS,CACP41C,YACGkP,IAEL,CACH,EAEUtP,EACXjzD,IAAA,IAAC,OAAEqzD,GAAQrzD,EAAA,OACXod,IACEA,EAAS,CACPzjB,KAAM8oE,EAAAA,GACNhlD,QAAS,CACP41C,WAEF,CACH,C,sBEnEH,KAAgB,KAAO,QAAQ,OAAS,QAAQ,QAAU,QAAQ,KAAO,QAAQ,KAAO,QAAQ,aAAe,Q,sBCA/G,KAAgB,KAAO,QAAQ,iBAAmB,QAAQ,UAAY,QAAQ,WAAa,QAAQ,WAAa,QAAQ,eAAiB,QAAQ,eAAiB,QAAQ,gBAAkB,QAAQ,gBAAkB,QAAQ,yBAA2B,Q,sBCAzP,KAAgB,UAAY,QAAQ,KAAO,QAAQ,SAAW,QAAQ,kBAAoB,QAAQ,MAAQ,QAAQ,WAAa,QAAQ,UAAY,Q,sBCAnJ,KAAgB,KAAO,QAAQ,gBAAkB,QAAQ,MAAQ,QAAQ,YAAc,QAAQ,KAAO,Q","sources":["webpack://web-pwa/./src/domain/UserAccount/UserLoginButton.jsx","webpack://web-pwa/./src/domain/UserAccount/UserPicture.jsx","webpack://web-pwa/./src/domain/UserAccount/UserPicture.less?5213","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/UserFavoriteError.jsx","webpack://web-pwa/./src/domain/UserAccount/connectionIncentive/incentive.constants.js","webpack://web-pwa/./src/domain/UserAccount/shared/withKeycloak.jsx","webpack://web-pwa/./src/domain/UserAccount/useKeycloak.js","webpack://web-pwa/./src/domain/advertising/AdLoader.jsx","webpack://web-pwa/./src/domain/advertising/AdLoader.less?2534","webpack://web-pwa/./src/domain/autopromo/AutoPromoPopinGE.less?cba7","webpack://web-pwa/./src/domain/autopromo/AutoPromoPopinGE.jsx","webpack://web-pwa/./src/domain/autopromo/AutoPromoOpenButton.jsx","webpack://web-pwa/./src/domain/seo/BreadcrumbItem.jsx","webpack://web-pwa/./src/domain/seo/BreadcrumbItem.less?85e6","webpack://web-pwa/./src/domain/seo/Breadcrumbs.jsx","webpack://web-pwa/./src/domain/seo/Breadcrumbs.less?9b17","webpack://web-pwa/./src/domain/footer/footerInfos/FooterContact.jsx","webpack://web-pwa/./src/domain/footer/footerInfos/FooterContact.less?de87","webpack://web-pwa/./src/domain/footer/footerInfos/FooterInfos.less?5cd6","webpack://web-pwa/./src/domain/footer/footerInfos/FooterPrivacy.jsx","webpack://web-pwa/./src/domain/footer/footerInfos/FooterPrivacy.less?4c0f","webpack://web-pwa/./src/domain/footer/footerInfos/SocialNetworkButtons.less?4486","webpack://web-pwa/./src/domain/footer/footerInfos/SocialNetworkButtons.jsx","webpack://web-pwa/./src/domain/footer/footerInfos/FooterInfos.jsx","webpack://web-pwa/./src/domain/seo/footer/TopSearchLinks.less?fedd","webpack://web-pwa/./src/domain/seo/footer/TopSearchLinks.jsx","webpack://web-pwa/./src/domain/footer/FooterTopSearch.jsx","webpack://web-pwa/./src/domain/footer/FooterTopSearch.less?137b","webpack://web-pwa/./src/domain/footer/FooterCocorico.jsx","webpack://web-pwa/./src/domain/footer/FooterCocorico.less?90a0","webpack://web-pwa/./src/domain/autopromo/AutoPromoFooterPE.jsx","webpack://web-pwa/./src/domain/autopromo/AutoPromoFooterPE.less?d482","webpack://web-pwa/./src/domain/footer/Footer.jsx","webpack://web-pwa/./src/domain/footer/Footer.less?debd","webpack://web-pwa/./src/domain/genericComponents/Anchor.jsx","webpack://web-pwa/./src/domain/genericComponents/Anchor.less?5ad8","webpack://web-pwa/./src/domain/genericComponents/ClosePopinButton.jsx","webpack://web-pwa/./src/domain/genericComponents/ClosePopinButton.less?e368","webpack://web-pwa/./src/domain/genericComponents/Details.less?3bbd","webpack://web-pwa/./src/domain/genericComponents/Details.jsx","webpack://web-pwa/./src/domain/genericComponents/ImageGallery.jsx","webpack://web-pwa/./src/domain/genericComponents/Modal.jsx","webpack://web-pwa/./src/domain/genericComponents/Modal.less?a1f9","webpack://web-pwa/./src/domain/genericComponents/NumericInput.jsx","webpack://web-pwa/./src/domain/UserAccount/shared/CloseUserAreaButton.jsx","webpack://web-pwa/./src/domain/UserAccount/shared/CloseUserAreaButton.less?8716","webpack://web-pwa/./src/domain/genericComponents/LogoMappyImg.jsx","webpack://web-pwa/./src/domain/genericComponents/LogoMappyImg.less?56bd","webpack://web-pwa/./src/domain/UserAccount/anonymous/UserAreaAnonymous.jsx","webpack://web-pwa/./src/domain/UserAccount/anonymous/UserAreaAnonymous.less?42c3","webpack://web-pwa/./src/domain/UserAccount/shared/UserScreenContent.jsx","webpack://web-pwa/./src/domain/UserAccount/shared/UserScreenContent.less?8e7b","webpack://web-pwa/./src/domain/UserAccount/shared/UserScreenHeader.jsx","webpack://web-pwa/./src/domain/UserAccount/shared/UserScreenHeader.less?4524","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/UserFavoriteItem.less?0c42","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/UserFavoriteItem.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/UserFavorites.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/userTravelOptions/UserTravelOptions.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/userTravelOptions/UserTravelOptions.less?dff7","webpack://web-pwa/./src/domain/UserAccount/connected/userMenu/UserLogout.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/userMenu/UserMenu.less?c846","webpack://web-pwa/./src/domain/UserAccount/connected/userMenu/UserMenu.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/FavoriteInput.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/FavoriteInput.less?ef31","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/UserManageFavorite.jsx","webpack://web-pwa/./src/domain/UserAccount/connected/UserAreaConnected.jsx","webpack://web-pwa/./src/domain/UserAccount/UserAreaPlaceHolder.jsx","webpack://web-pwa/./src/domain/UserAccount/UserArea.jsx","webpack://web-pwa/./src/domain/UserAccount/UserArea.less?9351","webpack://web-pwa/./src/domain/UserAccount/connectionIncentive/UserAccountIncentiveCarrousel.less?dca6","webpack://web-pwa/./src/domain/UserAccount/connectionIncentive/UserAccountIncentiveCarrousel.jsx","webpack://web-pwa/./src/domain/UserAccount/connectionIncentive/UserAccountIncentivePopin.less?94aa","webpack://web-pwa/./src/domain/UserAccount/connectionIncentive/UserAccountIncentivePopin.jsx","webpack://web-pwa/./src/store/cmp/cmp.actions.js","webpack://web-pwa/./src/domain/cmp/CMPPlaceholder.jsx","webpack://web-pwa/./src/domain/menu/MenuCategoriesGE.less?8d71","webpack://web-pwa/./src/domain/advertising/AdMenu.jsx","webpack://web-pwa/./src/domain/advertising/AdMenu.less?280f","webpack://web-pwa/./src/domain/menu/MenuSubCategoriesGE.jsx","webpack://web-pwa/./src/domain/menu/MenuSubCategoriesGE.less?e55b","webpack://web-pwa/./src/domain/menu/MenuCategoriesGE.jsx","webpack://web-pwa/./src/domain/outdoor/Outdoor.jsx","webpack://web-pwa/./src/domain/outdoor/Outdoor.less?c1d0","webpack://web-pwa/./src/domain/genericComponents/Page.jsx","webpack://web-pwa/./src/domain/genericComponents/ResponsiveScrollableWrapper/ResponsiveScrollableWrapper.jsx","webpack://web-pwa/./src/domain/genericComponents/ResponsiveScrollableWrapper/ResponsiveScrollableWrapper.less?c3b9","webpack://web-pwa/./src/domain/genericComponents/StatusMessage.jsx","webpack://web-pwa/./src/domain/genericComponents/StatusMessage.less?81a6","webpack://web-pwa/./src/domain/genericComponents/useTemporaryVisible.js","webpack://web-pwa/./src/domain/header/BackButton.jsx","webpack://web-pwa/./src/domain/UserAccount/UserButton.jsx","webpack://web-pwa/./src/domain/UserAccount/UserButton.less?32ba","webpack://web-pwa/./src/domain/header/UniverseButton.jsx","webpack://web-pwa/./src/domain/header/UniverseButton.less?90b9","webpack://web-pwa/./src/domain/header/DesktopPreHeader.jsx","webpack://web-pwa/./src/domain/header/DesktopPreHeader.less?d786","webpack://web-pwa/./src/domain/header/SubHeader.jsx","webpack://web-pwa/./src/domain/header/SubHeader.less?40b2","webpack://web-pwa/./src/domain/header/Header.jsx","webpack://web-pwa/./src/domain/i18n/i18nSite.jsx","webpack://web-pwa/./src/domain/itinerary/ModeItem.jsx","webpack://web-pwa/./src/domain/itinerary/ModeItem.less?47d7","webpack://web-pwa/./src/domain/loading/Throbber.less?bc51","webpack://web-pwa/./src/domain/loading/Throbber.jsx","webpack://web-pwa/./src/domain/main/Main.jsx","webpack://web-pwa/./src/domain/main/Main.less?6328","webpack://web-pwa/./src/domain/genericComponents/MapEventPopin.jsx","webpack://web-pwa/./src/domain/genericComponents/MapEventPopin.less?d4f0","webpack://web-pwa/./src/domain/outdoor/UPI.jsx","webpack://web-pwa/./src/domain/outdoor/UPI.less?8f7e","webpack://web-pwa/./src/domain/map/Geolocation.js","webpack://web-pwa/./src/domain/error/MapLoadingError.js","webpack://web-pwa/./src/domain/map/maplibre.fixes.js","webpack://web-pwa/./src/domain/map/MapProvider.jsx","webpack://web-pwa/./src/domain/map/DynamicMap.less?a5fe","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItem.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenu.less?a138","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemShowAddress.jsx","webpack://web-pwa/./src/domain/map/contextmenu/contextmenu.constants.js","webpack://web-pwa/./src/domain/map/contextmenu/contextmenu.utils.js","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemItineraryTo.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemItineraryFrom.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemItineraryAddStep.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemShowCity.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemShowDepartment.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenuItemShowRegion.jsx","webpack://web-pwa/./src/domain/map/contextmenu/ContextMenu.jsx","webpack://web-pwa/./src/domain/analytics/useImpressionTag.jsx","webpack://web-pwa/./src/domain/map/debug/FPS.jsx","webpack://web-pwa/./src/domain/map/debug/FPS.less?bf25","webpack://web-pwa/./src/domain/map/debug/BboxDebugger.jsx","webpack://web-pwa/./src/domain/map/debug/ZoomDebugger.jsx","webpack://web-pwa/./src/domain/map/tools/ZoomButtons.less?5296","webpack://web-pwa/./src/domain/map/debug/MapDebugger.jsx","webpack://web-pwa/./src/domain/map/markers/AddressMarker.jsx","webpack://web-pwa/./src/domain/map/markers/AddressMarker.less?6e27","webpack://web-pwa/./src/store/location/location.actions.js","webpack://web-pwa/./src/domain/map/markers/AddressMarkersContainer.jsx","webpack://web-pwa/./src/domain/map/markers/GeolocMarker.jsx","webpack://web-pwa/./src/domain/utils/useCompass.js","webpack://web-pwa/./src/domain/map/markers/GeolocMarker.less?c358","webpack://web-pwa/./src/domain/map/popup/Popup.jsx","webpack://web-pwa/./src/domain/map/popup/Popup.less?62d0","webpack://web-pwa/./src/domain/map/raster/useIntegerZoom.js","webpack://web-pwa/./src/domain/map/useMapZoomHandler.js","webpack://web-pwa/./src/domain/map/useMapPerfMetrics.js","webpack://web-pwa/./src/domain/map/useMapMoveHandler.js","webpack://web-pwa/./src/domain/map/useMapPaddingHandler.js","webpack://web-pwa/./src/domain/map/tools/useTooltip.js","webpack://web-pwa/./src/domain/map/vector/HdTooltip.jsx","webpack://web-pwa/./src/domain/map/vector/HdTooltip.less?571b","webpack://web-pwa/./src/domain/genericComponents/NotificationDot.jsx","webpack://web-pwa/./src/domain/genericComponents/NotificationDot.less?4c31","webpack://web-pwa/./src/domain/utils/useNotificationHelper.js","webpack://web-pwa/./src/domain/map/common/LayerButtons.less?fa65","webpack://web-pwa/./src/domain/map/common/LayerButton.jsx","webpack://web-pwa/./src/domain/map/common/LayersButtons.less?447d","webpack://web-pwa/./src/domain/map/common/LayersButtonsConfig.js","webpack://web-pwa/./src/domain/map/common/MapEventTooltip.jsx","webpack://web-pwa/./src/domain/map/common/MapEventTooltip.less?e125","webpack://web-pwa/./src/domain/map/common/LayersButtons.jsx","webpack://web-pwa/./src/domain/map/raster/RasterMap.jsx","webpack://web-pwa/./src/domain/map/raster/useLayersManager.js","webpack://web-pwa/./src/domain/map/shape/MapAddressContour.jsx","webpack://web-pwa/./src/domain/map/tools/Copyrights.less?482c","webpack://web-pwa/./src/domain/map/tools/Copyrights.jsx","webpack://web-pwa/./src/domain/map/tools/GeolocButton.less?c64a","webpack://web-pwa/./src/domain/map/tools/GeolocButton.jsx","webpack://web-pwa/./src/domain/map/tools/Logo.jsx","webpack://web-pwa/./src/domain/map/tools/Logo.less?2072","webpack://web-pwa/./src/domain/map/tools/OutdoorButton.jsx","webpack://web-pwa/./src/domain/map/tools/OutdoorButton.less?90b1","webpack://web-pwa/./src/domain/map/tools/Scale.js","webpack://web-pwa/./src/domain/map/tools/ToggleFullScreenGeButton.jsx","webpack://web-pwa/./src/domain/map/tools/ToggleFullScreenGeButton.less?d973","webpack://web-pwa/./src/domain/map/tools/ToggleFullscreenPeButton.jsx","webpack://web-pwa/./src/domain/map/tools/ToggleFullscreenPeButton.less?e669","webpack://web-pwa/./src/domain/map/tools/TrafficLegend.jsx","webpack://web-pwa/./src/domain/map/tools/TrafficLegend.less?dcda","webpack://web-pwa/./src/domain/map/tools/ZoomButtons.jsx","webpack://web-pwa/./src/domain/map/vector/MapTooSlowTooltip.jsx","webpack://web-pwa/./src/domain/map/vector/MapTooSlowTooltip.less?a8d9","webpack://web-pwa/./src/domain/map/vector/VectorMap.jsx","webpack://web-pwa/./src/domain/map/vector/useClickMyMapLayers.js","webpack://web-pwa/./src/domain/map/useMapPointerHandler.js","webpack://web-pwa/./src/domain/map/vector/useClickMapEventsHandler.js","webpack://web-pwa/./src/domain/map/DynamicMap.jsx","webpack://web-pwa/./src/domain/map/StaticMap.jsx","webpack://web-pwa/./src/domain/genericComponents/AskForUpdate.jsx","webpack://web-pwa/./src/domain/genericComponents/AskForUpdate.less?ef67","webpack://web-pwa/./src/domain/map/Map.jsx","webpack://web-pwa/./src/domain/map/MapContext.jsx","webpack://web-pwa/./src/domain/map/markers/ImageMarker.jsx","webpack://web-pwa/./src/domain/map/markers/IconMarker.jsx","webpack://web-pwa/./src/domain/map/markers/IconMarker.less?3313","webpack://web-pwa/./src/domain/map/markers/RubricMarker.jsx","webpack://web-pwa/./src/domain/map/markers/Marker.jsx","webpack://web-pwa/./src/domain/map/markers/Marker.less?619e","webpack://web-pwa/./src/domain/menu/CategorySubMenuStyle.jsx","webpack://web-pwa/./src/domain/menu/MenuApplicationItem.jsx","webpack://web-pwa/./src/domain/menu/MenuSubCategoriesPE.less?f85a","webpack://web-pwa/./src/domain/menu/MenuSubCategoriesPE.jsx","webpack://web-pwa/./src/domain/menu/MenuCategoriesPE.jsx","webpack://web-pwa/./src/domain/menu/MenuCategoriesPE.less?691d","webpack://web-pwa/./src/domain/menu/MenuCategoryItem.jsx","webpack://web-pwa/./src/domain/menu/MenuCategoryItem.less?6f21","webpack://web-pwa/./src/domain/menu/MenuSubCategoryItem.jsx","webpack://web-pwa/./src/domain/menu/usePublisherBarreCategorieTag.js","webpack://web-pwa/./src/domain/seo/footer/seo-footer.selectors.js","webpack://web-pwa/./src/utils/keyboard.constants.js","webpack://web-pwa/./src/domain/suggest/SuggestContent.less?14aa","webpack://web-pwa/./src/domain/suggest/SuggestFavoritesContent.jsx","webpack://web-pwa/./src/domain/suggest/SuggestSearchHistoryContent.jsx","webpack://web-pwa/./src/domain/suggest/SuggestServiceContent.jsx","webpack://web-pwa/./src/domain/suggest/SuggestClearHistory.jsx","webpack://web-pwa/./src/domain/suggest/SuggestClearHistory.less?7aaa","webpack://web-pwa/./src/domain/suggest/SuggestContentError.jsx","webpack://web-pwa/./src/domain/suggest/SuggestContentError.less?3f67","webpack://web-pwa/./src/domain/suggest/SuggestContent.jsx","webpack://web-pwa/./src/domain/suggest/SuggestItem.less?6cfe","webpack://web-pwa/./src/domain/suggest/SuggestEventSvg.jsx","webpack://web-pwa/./src/domain/suggest/SuggestItem.jsx","webpack://web-pwa/./src/domain/suggest/SuggestContentList.jsx","webpack://web-pwa/./src/domain/suggest/SuggestContentList.less?e46d","webpack://web-pwa/./src/domain/suggest/useIncentiveClick.js","webpack://web-pwa/./src/domain/travelOptions/FavouriteModeBox.jsx","webpack://web-pwa/./src/domain/travelOptions/ModeSpeedSettingsBox.jsx","webpack://web-pwa/./src/domain/travelOptions/ModeSpeedSettingsBox.less?aa2f","webpack://web-pwa/./src/domain/travelOptions/TravelOptions.less?7e74","webpack://web-pwa/./src/domain/travelOptions/TravelOptions.jsx","webpack://web-pwa/./src/domain/travelOptions/VehicleOwnedSwitcher.jsx","webpack://web-pwa/./src/domain/travelOptions/VehicleOwnedSwitcher.less?bcba","webpack://web-pwa/./src/domain/travelOptions/VehicleSettingsBox.less?5269","webpack://web-pwa/./src/domain/travelOptions/CritairChoice.jsx","webpack://web-pwa/./src/domain/travelOptions/CritairChoice.less?a5b7","webpack://web-pwa/./src/domain/travelOptions/CritairSelect.jsx","webpack://web-pwa/./src/domain/travelOptions/VehicleSettingsBox.jsx","webpack://web-pwa/./src/domain/ui/useHeaderHeight.js","webpack://web-pwa/./src/domain/ui/useModal.js","webpack://web-pwa/./src/domain/utils/DelayComponent.jsx","webpack://web-pwa/./src/domain/utils/SwitchInput.jsx","webpack://web-pwa/./src/domain/utils/useEffectExceptMount.js","webpack://web-pwa/./src/domain/utils/SwitchInput.less?d8a4","webpack://web-pwa/./src/domain/utils/css.js","webpack://web-pwa/./src/domain/utils/useDebounce.js","webpack://web-pwa/./src/domain/utils/useTimeout.js","webpack://web-pwa/./src/domain/utils/useToggle.js","webpack://web-pwa/./src/routes/routeService.js","webpack://web-pwa/./src/store/poiassets/poiassets.dataParsers.js","webpack://web-pwa/./src/store/poiassets/poiassets.actions.js","webpack://web-pwa/./src/domain/suggest/SuggestError.js","webpack://web-pwa/./src/store/suggest/suggest.actions.js","webpack://web-pwa/./src/dataSource/suggest/suggest.requests.js","webpack://web-pwa/./src/store/suggest/suggest.dataParser.js","webpack://web-pwa/./src/store/search/searchHistory/searchHistory.utils.js","webpack://web-pwa/./src/store/search/searchHistory/searchHistory.selectors.js","webpack://web-pwa/./src/store/suggest/suggest.selectors.js","webpack://web-pwa/./src/store/suggest/suggest.service.constants.js","webpack://web-pwa/./src/store/travelOptions/travelOptions.actions.js","webpack://web-pwa/./src/store/travelOptions/travelOptions.dataParsers.js","webpack://web-pwa/./src/domain/UserAccount/connected/userFavorites/UserManageFavorite.less?ffd6","webpack://web-pwa/./src/domain/header/Header.less?4029","webpack://web-pwa/./src/domain/itinerary/ModeSelector.less?4832","webpack://web-pwa/./src/domain/menu/MenuSubCategoryItem.less?8f0c"],"sourcesContent":["import React from 'react'\nimport RectangleActionButton, { SIZE_BIG } from '../genericComponents/buttons/RectangleActionButton'\nimport { TAG_CLICK_USER_LOGIN_BUTTON } from '../../store/analytics/analytics.actionTypes'\nimport { withUserKnown } from './shared/withKeycloak'\nimport { useSelector } from 'react-redux'\nimport { selectPrevFullRouteNonPageLess } from '../../store/history/history.selectors'\nimport useKeycloak from './useKeycloak'\n\nconst UserLoginButton = ({ size = SIZE_BIG }) => {\n const { loaded, keycloak } = useKeycloak()\n const lastFullRoute = useSelector(selectPrevFullRouteNonPageLess)\n\n if (!loaded) return <>\n\n const loginUrl = keycloak.createLoginUrl({ redirectUri: `${location.origin}${lastFullRoute}` })\n\n return (\n \n )\n}\n\nexport default withUserKnown(UserLoginButton)\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsUserConnected, selectUserPicture } from '../../store/userAccount/userAccount.selectors'\nimport SVGIcon from '../svg/SVGIcon'\nimport s from './UserPicture.less'\nimport classnames from 'classnames'\n\nconst UserPicture = ({ wrapperClassName, defaultIconClassName, userPicClassName }) => {\n const connected = useSelector(selectIsUserConnected)\n const picture = useSelector(selectUserPicture)\n const shouldDisplayPicture = connected && picture\n\n return (\n
\n
\n \n {shouldDisplayPicture && (\n
\n )}\n
\n
\n )\n}\n\nexport default UserPicture\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"Qd68O\",\"circle\":\"SmO1O\",\"defaultIcon\":\"wKABM\",\"connected\":\"yoNmq\",\"userPic\":\"gmxBL\"};","import React, { useEffect, useState } from 'react'\nimport { useTemporaryVisible } from '../../../genericComponents/useTemporaryVisible'\nimport { useT } from '../../../i18n/T'\nimport StatusMessage from '../../../genericComponents/StatusMessage'\n\n// webpack:BrowserOnly\nconst UserFavoriteError = ({ marginTop = 10, error }) => {\n const [text, setText] = useState()\n const [visible, setVisible] = useTemporaryVisible()\n\n useEffect(() => {\n if (error) {\n setText(error?.name ?? 'Error')\n setVisible(true)\n }\n }, [error])\n\n return \n}\n\nexport default UserFavoriteError\n","export const INCENTIVE_NAME = {\n incitationPrincipale: 'incitationPrincipale',\n incitationOptionDeplacement: 'incitationOptionDeplacement',\n incitationOptionReponse: 'incitationOptionReponse',\n incitationPOI: 'incitationPOI'\n}\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport {\n selectIsUserConnected,\n selectIsUserKnown,\n selectIsUserNotConnected\n} from '../../../store/userAccount/userAccount.selectors'\n\n/* eslint-disable react/display-name */\nexport const withUserConnected = Component => props => {\n if (__SERVER__) return <>\n\n const isConnected = useSelector(selectIsUserConnected)\n\n return isConnected ? : null\n}\n\n/* eslint-disable react/display-name */\nexport const withUserNotConnected = Component => props => {\n if (__SERVER__) return <>\n\n const isNotConnected = useSelector(selectIsUserNotConnected)\n\n return isNotConnected ? : null\n}\n\nexport const withUserKnown = Component => props => {\n if (__SERVER__) return <>\n\n const isKnown = useSelector(selectIsUserKnown)\n\n return isKnown ? : null\n}\n\nexport const withUserUnknown = Component => props => {\n if (__SERVER__) return <>\n\n const isKnown = useSelector(selectIsUserKnown)\n\n return !isKnown ? : null\n}\n","import { useCallback, useEffect, useRef, useState } from 'react'\nimport { useAction } from '../utils/react-redux'\nimport { setToken, setUserConnected, setUserNotConnected } from '../../store/userAccount/userAccount.actions'\nimport { setUserUIScreen } from '../../store/ui/ui.actions'\nimport { USER_SCREENS } from '../../store/ui/ui.constants'\nimport { pick } from '../../utils/object'\nimport KeycloakJs from 'keycloak-js'\nimport { getService } from '../../parameters'\nimport SERVICES from '../../services.constants'\nimport debug from 'debug'\nimport { USER_ID_LEGACY, USER_ID_SUB } from './UserAccount.constants'\n\nconst d = debug('keycloak')\n\n// webpack:BrowserOnly\n\nexport const EXPIRATION_SECONDS = 60\n\nlet keycloak\n\nexport const setKeycloakForTestOnly = kc => {\n keycloak = kc\n}\n\nconst useKeycloak = () => {\n const [loaded, setLoaded] = useState(Boolean(keycloak))\n\n useEffect(() => {\n if (keycloak) {\n setLoaded(true)\n } else {\n keycloak = new KeycloakJs({\n url: getService(SERVICES.KEYCLOAK).url,\n realm: 'mappy',\n clientId: 'web-login'\n })\n keycloak\n .init({\n onLoad: 'check-sso',\n responseMode: 'query',\n silentCheckSsoFallback: false,\n silentCheckSsoRedirectUri: window.location.origin + '/silent-check-sso.html'\n })\n .then(authenticated => {\n setLoaded(true)\n d(`User is ${authenticated ? 'authenticated' : 'not authenticated'}`)\n })\n .catch(error => {\n console.error('Failed to initialize adapter:', error)\n })\n }\n }, [])\n\n return { loaded, keycloak }\n}\n\nexport const useKeycloakEngine = () => {\n const { loaded, keycloak } = useKeycloak()\n const timeoutRef = useRef()\n\n const execSetUserConnected = useAction(setUserConnected)\n const execSetUserNotConnected = useAction(setUserNotConnected)\n const execSetUserScreen = useAction(setUserUIScreen)\n const execSetToken = useAction(setToken)\n\n useEffect(() => {\n if (loaded) {\n if (keycloak?.authenticated === true) {\n const token = keycloak.token\n d('keycloak.idTokenParsed', keycloak.idTokenParsed)\n const identity = pick(keycloak.idTokenParsed, ['name', 'picture', 'email', USER_ID_LEGACY, USER_ID_SUB])\n d('connected, token', token, 'idTokenParsed', keycloak.idTokenParsed)\n execSetUserConnected({ token, identity })\n } else if (keycloak.authenticated === false) {\n d('not connected')\n execSetUserNotConnected()\n }\n execSetUserScreen(USER_SCREENS.default)\n }\n }, [loaded, keycloak?.authenticated])\n\n const updateAndSaveToken = useCallback(\n () =>\n loaded &&\n keycloak\n .updateToken(EXPIRATION_SECONDS)\n .then(hasTokenBeenRefreshed => {\n d('updateToken - hasTokenBeenRefreshed', hasTokenBeenRefreshed, 'new token', keycloak.token)\n execSetToken(keycloak.token)\n })\n .catch(e => {\n d('updateToken failed - disconnect user', e)\n execSetUserNotConnected()\n }),\n [loaded, keycloak]\n )\n\n useEffect(() => {\n const checkIfTokenWillExpire = () => {\n if (loaded && keycloak?.authenticated) {\n d('checkIfTokenWillExpire')\n if (keycloak.isTokenExpired(EXPIRATION_SECONDS)) {\n d('isTokenExpired:true')\n updateAndSaveToken()\n }\n timeoutRef.current = setTimeout(checkIfTokenWillExpire, EXPIRATION_SECONDS * 1000)\n }\n }\n if (loaded && keycloak?.authenticated) {\n timeoutRef.current = setTimeout(checkIfTokenWillExpire, EXPIRATION_SECONDS * 1000)\n }\n return () => {\n clearTimeout(timeoutRef)\n }\n }, [loaded, keycloak?.authenticated, timeoutRef])\n\n useEffect(() => {\n if (loaded && keycloak) {\n keycloak.onTokenExpired = () => {\n d('token expired')\n updateAndSaveToken()\n }\n }\n }, [loaded, keycloak])\n}\n\nexport default useKeycloak\n","import classnames from 'classnames'\nimport { noop } from '../../utils/function'\nimport React, { useEffect, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { removeAdData, setAdData } from '../../store/ad/ad.actions'\nimport { selectIsCorrespondingPageAdConfigLoaded, selectPageIdForAdConfig } from '../../store/ad/ad.selectors'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport { ONE_SECOND_MS } from '../utils/date'\nimport { useAction } from '../utils/react-redux'\nimport { getAdIdByAdName } from './AdConfigService'\nimport s from './AdLoader.less'\nimport { AdService } from './AdService'\n\nexport const AD_STATUS_NONE = 'AD_STATUS_NONE'\nexport const AD_STATUS_LOADING = 'AD_STATUS_LOADING'\nexport const AD_STATUS_LOADED = 'AD_STATUS_LOADED'\n\nconst useAdLoader = ({ adId, keywordsSelector = noop, askData = false }) => {\n const [adStatus, setAdStatus] = useState(AD_STATUS_NONE)\n const execSetAdData = useAction(setAdData)\n const execRemoveAdData = useAction(removeAdData)\n const keywords = useSelector(keywordsSelector)\n\n useEffect(() => {\n // keywords selectors must return <> if there is no keywords available\n if (keywords === null || !adId) return\n\n switch (adStatus) {\n case AD_STATUS_NONE: {\n setAdStatus(AD_STATUS_LOADING)\n\n AdService.createAd(adId)\n .then(() => AdService.setAdKeywords(adId, keywords))\n .then(() => AdService.loadAd(adId))\n .then(() => askData && AdService.getAdData(adId).then(data => execSetAdData(adId, data)))\n .then(() => setAdStatus(AD_STATUS_LOADED))\n .catch(error => console.error('AdLoader loading error', error))\n break\n }\n\n case AD_STATUS_LOADED: {\n setAdStatus(AD_STATUS_LOADING)\n execRemoveAdData(adId)\n\n AdService.setAdKeywords(adId, keywords)\n .then(() => AdService.reloadAd(adId))\n .then(() => askData && AdService.getAdData(adId).then(data => execSetAdData(adId, data)))\n .then(() => setAdStatus(AD_STATUS_LOADED))\n .catch(error => console.error('AdLoader reload', error))\n\n break\n }\n }\n }, [JSON.stringify(keywords)])\n\n useEffect(() => {\n // sometimes, the ad api does resolve or reject the promise, so we do not keep loading status more than 5s, because it blocks refresh\n let timeoutId\n if (adStatus === AD_STATUS_LOADING) {\n timeoutId = setTimeout(() => setAdStatus(AD_STATUS_LOADED), 5 * ONE_SECOND_MS)\n }\n return () => clearTimeout(timeoutId)\n }, [adStatus])\n\n useEffect(\n () => () => {\n if (adId) {\n AdService.deleteAd(adId).catch(error => console.error('AdLoader remove error', error))\n execRemoveAdData(adId)\n }\n },\n []\n )\n\n return adStatus === AD_STATUS_LOADED\n}\n\nexport const BaseAdLoader = ({ adName, className, keywordsSelector, children, askData }) => {\n const pageId = useSelector(selectPageIdForAdConfig)\n const adId = getAdIdByAdName(adName, pageId)\n\n useAdLoader({ adId, keywordsSelector, askData })\n\n return (\n <>\n {children}\n
\n \n )\n}\n\nexport default withEmptyFallbackErrorBoundary(function AdLoader({ adName, ...restProps }) {\n const isConfigLoaded = useSelector(state => selectIsCorrespondingPageAdConfigLoaded(state, adName))\n\n if (!isConfigLoaded) return <>\n\n return \n})\n","// extracted by mini-css-extract-plugin\nexport default {\"hidden\":\"nL4Ol\"};","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"NyDlD\",\"leftPart\":\"CNNGD\",\"qrcodeWrapper\":\"dJn7D\",\"instructions\":\"Woidx\",\"storeButton\":\"qnlJa\",\"androidButton\":\"jvkGE\",\"iosButton\":\"xF2zA\",\"rightPart\":\"rNDPS\",\"title\":\"sEkur\",\"advantagesList\":\"HsgP2\",\"advantagesItem\":\"vTObo\",\"advantagesIcon\":\"kE_cS\",\"closeButton\":\"itsJI\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { APPLE_STORE_URL, PLAY_STORE_URL } from '../../parameters'\nimport { TAG_BLOCK_AUTOPROMO } from '../../store/analytics/analytics.actionTypes'\nimport { MODAL_IDS } from '../../store/ui/ui.constants'\nimport analyticsConstants from '../analytics/analytics.constants'\nimport Modal from '../genericComponents/Modal'\nimport TagActionLink from '../genericComponents/TagActionLink'\nimport cross from '../genericComponents/assets/cross.svg'\nimport france from '../genericComponents/assets/france.svg'\nimport mappyLogoOutline from '../genericComponents/assets/mappy-logo-outline.svg'\nimport roadRadar from '../genericComponents/assets/road-radar.svg'\nimport SVGIcon from '../svg/SVGIcon'\nimport useModal from '../ui/useModal'\nimport useEventCallback from '../utils/useEventCallback'\nimport s from './AutoPromoPopinGE.less'\nimport qrcode from './assets/qrcode-stores.png'\n\nconst StoreButton = ({ url, className, appstore }) => {\n return (\n \n )\n}\n\nconst AutoPromoPopinGE = () => {\n const { hideModal } = useModal(MODAL_IDS.AUTO_PROMO_POPIN)\n const onPopinClose = useEventCallback(hideModal)\n\n return (\n \n
\n \n
\n
\n
\n
\n \n
\n
    \n
  1. \n Scannez le QR Code avec l'appareil photo de votre téléphone\n
  2. \n
  3. \n Cliquez sur le lien\n
  4. \n
  5. \n Téléchargez l'app\n
  6. \n
\n
\n \n \n
\n
\n
\n
Pour une expérience complète, téléchargez l'application Mappy
\n
    \n
  • \n
    \n \n
    \n
    Un GPS efficace et gratuit
    \n
  • \n
  • \n
    \n \n
    \n
    Trafic en temps réel, zones de contrôle et alertes dépassement de vitesse
    \n
  • \n
  • \n
    \n \n
    \n
    100% made in France qui respecte la vie privée
    \n
  • \n
\n
\n
\n
\n )\n}\n\nexport default AutoPromoPopinGE\n","import React from 'react'\nimport { TAG_BLOCK_AUTOPROMO } from '../../store/analytics/analytics.actionTypes'\nimport { MODAL_IDS } from '../../store/ui/ui.constants'\nimport analyticsConstants from '../analytics/analytics.constants'\nimport qrcode from '../genericComponents/assets/qrcode.svg'\nimport RectangleActionButton, {\n COLOR_GREY_EMPTY,\n SIZE_NORMAL\n} from '../genericComponents/buttons/RectangleActionButton'\nimport { withFrenchSite } from '../i18n/i18nSite'\nimport useModal from '../ui/useModal'\nimport useErrorBoundaryCallback from '../utils/useErrorBoundaryCallback'\nimport AutoPromoPopinGE from './AutoPromoPopinGE'\n\nconst AutoPromoOpenButton = ({ size = SIZE_NORMAL, area }) => {\n const { displayModal } = useModal(MODAL_IDS.AUTO_PROMO_POPIN)\n\n const onButtonClick = useErrorBoundaryCallback(displayModal)\n\n return (\n <>\n \n \n \n )\n}\n\nexport default withFrenchSite(AutoPromoOpenButton)\n","import React from 'react'\nimport { string, arrayOf, number } from 'prop-types'\nimport T from '../i18n/T'\nimport s from './BreadcrumbItem.less'\n\nexport default function BreadcrumbItem(props) {\n const { labelKey, labelArgs, url, idx } = props\n return (\n
  • \n {url ? (\n \n {labelKey && }\n \n ) : (\n {labelKey && }\n )}\n \n
  • \n )\n}\n\nBreadcrumbItem.propTypes = {\n labelKey: string.isRequired,\n labelArgs: arrayOf(string),\n url: string,\n idx: number\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"breadcrumbItem\":\"r3WBM\",\"breadcrumbLink\":\"pfDNZ\"};","import React from 'react'\nimport s from './Breadcrumbs.less'\nimport { useSelector } from 'react-redux'\nimport { selectBreadcrumbs } from '../../store/seo/seo.selectors'\nimport BreadcrumbItem from './BreadcrumbItem'\n\nconst Breadcrumbs = () => {\n const breadcrumbs = useSelector(selectBreadcrumbs)\n\n return (\n
    \n
      \n {(breadcrumbs || []).map(({ labelKey, labelArgs, url }, idx) => (\n \n ))}\n
    \n
    \n )\n}\n\nexport default Breadcrumbs\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"QECe9\",\"breadcrumbs\":\"ElTrW\"};","import React from 'react'\nimport { TAG_CLICK_HELP_BUTTON } from '../../../store/analytics/analytics.actionTypes'\nimport TagActionLink from '../../genericComponents/TagActionLink'\nimport question from '../../genericComponents/assets/question.svg'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport s from './FooterContact.less'\n\nexport default function FooterContact(props) {\n return (\n
    \n \n \n \n \n
    \n )\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"link\":\"gXpPZ\"};","// extracted by mini-css-extract-plugin\nexport default {\"summary\":\"H4Kte\",\"footerInfosHover\":\"g8qaV\",\"title\":\"Sd1SL\",\"chevron\":\"ELG48\",\"content\":\"HyCVJ\",\"LogoGroupe\":\"eA3Rq\",\"LogoMappy\":\"hJG03\",\"flag\":\"TZiRn\",\"France\":\"MZkqe\",\"Belgium\":\"m6tGi\",\"UnitedKingdom\":\"xCe7w\",\"block\":\"bptyn\"};","import React from 'react'\nimport CMPService from '../../cmp/CMPService'\nimport { withEmptyFallbackErrorBoundary } from '../../error/EmptyFallbackErrorBoundary'\nimport lock from '../../genericComponents/assets/lock.svg'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport s from './FooterPrivacy.less'\n\nexport default withEmptyFallbackErrorBoundary(function FooterPrivacy() {\n return (\n
    CMPService.open()}>\n \n \n
    \n )\n})\n","// extracted by mini-css-extract-plugin\nexport default {\"FooterPrivacy\":\"JxW6E\"};","// extracted by mini-css-extract-plugin\nexport default {\"socialNetworkList\":\"HOmwj\",\"button\":\"LE5bN\",\"facebook\":\"b16m9\",\"twitter\":\"nnSji\",\"blog\":\"dNnmX\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { TAG_FOOTER_SOCIAL_NETWORKS_LINKS } from '../../../store/analytics/analytics.actionTypes'\nimport TagActionLink from '../../genericComponents/TagActionLink'\nimport facebook from '../../genericComponents/assets/facebook.svg'\nimport rss from '../../genericComponents/assets/rss.svg'\nimport twitter from '../../genericComponents/assets/twitter.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport s from './SocialNetworkButtons.less'\n\nexport default function SocialNetworkButtons(props) {\n return (\n
      \n
    • \n \n
    • \n
    • \n \n
    • \n
    • \n \n
    • \n
    \n )\n}\n\nexport function FacebookButton(props) {\n return (\n \n \n \n )\n}\n\nexport function TwitterButton(props) {\n return (\n \n \n \n )\n}\n\nexport function BlogButton(props) {\n return (\n \n \n \n )\n}\n","import classNames from 'classnames'\nimport React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsFrenchSite } from '../../../store/locale/locale.selectors'\nimport Details from '../../genericComponents/Details'\nimport tooltipRight from '../../genericComponents/assets/tooltip-right.svg'\nimport logoMappy from '../../genericComponents/logo-mappy.svg'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport FooterContact from './FooterContact'\nimport s from './FooterInfos.less'\nimport FooterPrivacy from './FooterPrivacy'\nimport SocialNetworkButtons from './SocialNetworkButtons'\nimport logoRatpEn from './logo-ratp-group-en.png'\nimport logoRatpFr from './logo-ratp-group-fr.png'\nimport logoRSS from './logo-ratp-ss.png'\nimport logoBonjour from './logo_bonjour.svg'\n\nconst renderFrenchContent = () => {\n return (\n <>\n
    \n
    \n \n
    \n
      \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n \n \n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n Recrutement\n \n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n Blog Mappy\n \n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n Presse\n \n {' | '}\n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n Partenaires\n \n
    • \n
    \n
    \n
    \n
    Vos questions
    \n
      \n
    • \n {/* eslint-disable react/jsx-no-target-blank */}\n \n \n \n {' | '}\n \n Vie privée\n \n {' | '}\n \n \n \n {/* eslint-enable react/jsx-no-target-blank */}\n
    • \n
    • \n \n FAQ - Nous contacter\n \n
    • \n
    • \n {/* eslint-disable react/jsx-no-target-blank */}\n \n Couverture transports en commun\n \n {/* eslint-enable react/jsx-no-target-blank */}\n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n Mappy photographie votre ville\n \n
    • \n
    \n
    \n \n )\n}\n/* eslint-disable react/jsx-no-target-blank */\n\nconst renderInternationalContent = () => {\n return (\n <>\n
    \n
    \n \n
    \n
      \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n \n \n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n \n {' '}\n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n \n \n
    • \n
    • \n \n \n \n
    • \n
    \n
    \n \n )\n}\n\nconst renderB2B = () => {\n return (\n
    \n
    Solutions
    \n
      \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n API\n \n
    • \n
    • \n {/* eslint-disable-next-line react/jsx-no-target-blank */}\n \n Mappy sur mobile\n \n
    • \n
    \n
    \n )\n}\n\nconst renderGroupLogos = isFR => {\n return (\n \n )\n}\n\nconst renderLanguagesWebsites = () => {\n return (\n \n )\n}\n\nconst renderSocialNetworks = () => {\n return (\n
    \n
    Actualité
    \n Retrouvez Mappy sur...\n \n
    \n )\n}\n\nconst FooterInfos = ({ privacy = true }) => {\n const isFR = useSelector(selectIsFrenchSite)\n return (\n \n \n \n \n }\n classes={[s.footerInfosHover]}\n toggleClasses={[s.chevron]}\n >\n
    \n
    \n {privacy && }\n \n
    \n {isFR && renderSocialNetworks()}\n {isFR && renderB2B()}\n {renderLanguagesWebsites()}\n {isFR ? renderFrenchContent() : renderInternationalContent()}\n {renderGroupLogos(isFR)}\n
    \n \n )\n}\n\nexport default FooterInfos\n","// extracted by mini-css-extract-plugin\nexport default {\"title\":\"hT3a1\"};","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport TopSearchItem from '../../genericComponents/topSearch/TopSearchItem'\nimport { selectTopSearchLinks } from '../../../store/seo/seo.selectors'\nimport s from './TopSearchLinks.less'\nimport { selectShouldDisplayTopSearchTitle } from './seo-footer.selectors'\nimport T from '../../i18n/T'\n\nconst ID = 'TopSearchLinks'\n\nexport const TopSearchLinks = () => {\n const topSearchLinks = useSelector(selectTopSearchLinks)\n const shouldDisplayTitle = useSelector(selectShouldDisplayTopSearchTitle)\n\n if (__BROWSER__) {\n const element = document.getElementById(ID)\n return element ? (\n
    \n ) : null\n }\n\n if (!topSearchLinks || topSearchLinks.length === 0) return <>\n\n return (\n
    \n {shouldDisplayTitle === true && (\n

    \n \n

    \n )}\n {topSearchLinks.map((links, idx) => (\n \n ))}\n
    \n )\n}\n\nexport default TopSearchLinks\n","import React from 'react'\nimport { selectShouldDisplayTopSearch } from '../../store/seo/seo.selectors'\nimport Details from '../genericComponents/Details'\nimport magnifyingGlass from '../genericComponents/assets/magnifying-glass.svg'\nimport T from '../i18n/T'\nimport TopSearchLinks from '../seo/footer/TopSearchLinks'\nimport SVGIcon from '../svg/SVGIcon'\nimport { withEverySelectorTruthy } from '../utils/react-redux'\nimport s from './FooterTopSearch.less'\n\nexport const FooterTopSearch = () => (\n \n \n \n \n }\n classes={[s.topSearchHover]}\n toggleClasses={[s.chevron]}\n >\n \n \n)\n\nexport default withEverySelectorTruthy(selectShouldDisplayTopSearch)(FooterTopSearch)\n","// extracted by mini-css-extract-plugin\nexport default {\"topSearch\":\"oG5mx\",\"topSearchHover\":\"F1JNF\",\"chevron\":\"K9qC8\"};","import React from 'react'\nimport frenchFlag from './french-flag.svg'\nimport s from './FooterCocorico.less'\nimport T from '../i18n/T'\nimport SVGIcon from '../svg/SVGIcon'\n\nconst FooterCocorico = () => {\n return (\n
    \n
    \n \n
    \n \n
    \n )\n}\n\nexport default FooterCocorico\n","// extracted by mini-css-extract-plugin\nexport default {\"cocorico\":\"vEsdL\",\"frenchFlag\":\"qo_Zj\"};","import React from 'react'\nimport classnames from 'classnames'\nimport s from './AutoPromoFooterPE.less'\nimport { TAG_BLOCK_AUTOPROMO } from '../../store/analytics/analytics.actionTypes'\nimport { withFrenchSite } from '../i18n/i18nSite'\nimport { withOnlyPE } from '../Device'\nimport prefooterDevicePng from './assets/prefooter_image.png'\nimport prefooterDeviceWebp from './assets/prefooter_image.webp'\nimport RectangleActionButton, { COLOR_GREEN, SIZE_NORMAL } from '../genericComponents/buttons/RectangleActionButton'\nimport { APPS_ADJUST_URL } from '../../parameters'\nimport TagActionLink from '../genericComponents/TagActionLink'\nimport analyticsConstants from '../analytics/analytics.constants'\n\nconst AutoPromoFooterPE = ({ className }) => {\n return (\n
    \n
    \n \n \n \n \n
    \n
    \n {\"Laissez vous guider par le GPS de l'application Mappy\"}\n {'Info trafic, alertes de vitesse et radars'}\n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n )\n}\n\nexport default withOnlyPE(withFrenchSite(AutoPromoFooterPE))\n","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"Y3mhf\",\"infos\":\"NBqj9\",\"content\":\"qqynV\",\"textContainer\":\"DdLdZ\",\"title\":\"fQYAi\",\"text\":\"bsWfj\"};","import React from 'react'\nimport classNames from 'classnames'\nimport Breadcrumbs from '../seo/Breadcrumbs'\n\nimport FooterInfos from './footerInfos/FooterInfos'\nimport FooterTopSearch from './FooterTopSearch'\nimport FooterCocorico from './FooterCocorico'\nimport AutoPromoFooterPE from '../autopromo/AutoPromoFooterPE'\nimport { selectAreGeoentitiesDisplayedAsList } from '../../store/ui/ui.selectors'\nimport { useSelector } from 'react-redux'\nimport { selectIsSearchPage } from '../../store/history/history.selectors'\nimport s from './Footer.less'\n\nconst Footer = ({ privacy }) => {\n const isSearchPage = useSelector(selectIsSearchPage)\n const geoentitiesDisplayedAsList = useSelector(selectAreGeoentitiesDisplayedAsList)\n\n return (\n
    \n \n
    \n \n \n \n
    \n \n
    \n )\n}\n\nexport default Footer\n","// extracted by mini-css-extract-plugin\nexport default {\"footer\":\"hl0XH\",\"withBottomPadding\":\"wwjO7\",\"centered\":\"vWL09\",\"block\":\"efSnt\",\"titleForApps\":\"J_GL0\",\"detailsSpacing\":\"zM9Vd\",\"borderBottom\":\"ugOBB\"};","import React from 'react'\nimport { withOnlyPE } from '../Device'\nimport s from './Anchor.less'\n\nconst Anchor = () =>
    \n\nexport default withOnlyPE(Anchor)\n","// extracted by mini-css-extract-plugin\nexport default {\"anchor\":\"t9_nH\"};","import classnames from 'classnames'\nimport React, { useCallback } from 'react'\nimport { TAG_BACK } from '../../store/analytics/analytics.actionTypes'\nimport { navigateBack } from '../../store/history/history.actions'\nimport { withOnlyGE } from '../Device'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport SVGIcon from '../svg/SVGIcon'\nimport { useAction } from '../utils/react-redux'\nimport s from './ClosePopinButton.less'\nimport TagActionButton from './TagActionButton'\nimport cross from './assets/cross.svg'\n\nconst ClosePopinButton = ({ className, hasTag }) => {\n const execNavigateBack = useAction(navigateBack)\n const useNavigateBack = useCallback(() => execNavigateBack(), [])\n\n if (!hasTag)\n return (\n
    \n \n
    \n )\n\n return (\n \n \n \n )\n}\n\nconst ClosePopinIcon = ({ className }) => (\n
    \n \n
    \n)\n\nexport const ClosePopinButtonGE = withOnlyGE(withEmptyFallbackErrorBoundary(ClosePopinButton))\n\nexport default withEmptyFallbackErrorBoundary(ClosePopinButton)\n","// extracted by mini-css-extract-plugin\nexport default {\"closeButton\":\"cEk0y\"};","// extracted by mini-css-extract-plugin\nexport default {\"Chevron\":\"foapW\",\"Content\":\"Kbb01\",\"Details\":\"PTcWj\",\"Summary\":\"H0Zjx\"};","import classNames from 'classnames'\nimport React from 'react'\nimport SVGIcon from '../svg/SVGIcon'\nimport useToggle from '../utils/useToggle'\nimport s from './Details.less'\nimport down from './assets/down.svg'\n\nexport default function Details({ summary, classes = [], toggleClasses = [], children }) {\n const [open, onClick] = useToggle()\n\n return (\n
    \n \n {summary}\n \n \n \n \n
    {children}
    \n
    \n )\n}\n","import React from 'react'\nimport RImageGallery from 'react-image-gallery'\nimport './ImageGalleryOriginal.less'\nimport './ImageGallery.less'\n\nconst ImageGallery = React.forwardRef((props, ref) => {\n return (\n \n )\n})\n\nImageGallery.displayName = 'ImageGallery'\n\nexport default ImageGallery\n","import React from 'react'\nimport RModal from 'react-modal'\nimport s from './Modal.less'\nimport ClosePopinButton from './ClosePopinButton'\nimport { useAction } from '../utils/react-redux'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport { isGE } from '../Device'\nimport { navigateBack } from '../../store/history/history.actions'\nimport { appId } from '../../App'\nimport useModal from '../ui/useModal'\nimport useEventCallback from '../utils/useEventCallback'\n\nconst customStyle = {\n overlay: {\n zIndex: 180,\n backgroundColor: 'rgba(128, 128, 128, 0.55)'\n },\n content: {\n top: '50%',\n left: '50%',\n marginRight: '-50%',\n transform: 'translate(-50%, -50%)',\n right: 'auto',\n bottom: 'auto',\n padding: 0,\n overflow: 'none',\n backgroundColor: 'white',\n borderRadius: '12px',\n border: '1px solid rgb(204, 204, 204)'\n }\n}\n\nconst Modal = ({\n modalId,\n children,\n overlayStyle = {},\n style = {},\n withCloseButton,\n hasTag = true,\n execNavBackOnClose = false,\n ...rModalProps\n}) => {\n const { hideModal, isModalDisplayed } = useModal(modalId)\n const execNavBack = useAction(navigateBack)\n RModal.setAppElement(`#${appId}`)\n\n const stopPropagationHandler = useEventCallback(() => {})\n\n const onRequestClose = useEventCallback(() => {\n if (execNavBackOnClose) {\n execNavBack()\n } else {\n hideModal()\n }\n }, [execNavBackOnClose, hideModal])\n\n return (\n \n \n {withCloseButton && }\n {children}\n \n \n )\n}\n\n// webpack:BrowserOnly\nexport default withEmptyFallbackErrorBoundary(Modal)\n","// extracted by mini-css-extract-plugin\nexport default {\"modalContainer\":\"BrYsJ\",\"closeButton\":\"pkyux\"};","import React, { useEffect, useState } from 'react'\nimport { parsePositiveNumber } from '../../utils/number'\n\nconst POSITIVE_FLOAT_MAX_3_RADIX = /^[0-9]*(\\.|,)?[0-9]{0,3}$/\n\nexport const NumericInput = props => {\n const { value, onChange, onBlur } = props\n\n const [inputValue, setInputValue] = useState(value)\n\n useEffect(() => {\n setInputValue(value)\n }, [value])\n\n const handleChange = event => {\n const {\n target: { value: targetValue }\n } = event\n\n if (!targetValue || POSITIVE_FLOAT_MAX_3_RADIX.test(targetValue)) {\n setInputValue(targetValue)\n }\n onChange && onChange(event)\n }\n\n const handleClick = event => event.target.focus()\n\n const handleBlur = () => {\n const event = {\n target: {\n value: parsePositiveNumber(inputValue, 3)\n }\n }\n onBlur && onBlur(event)\n }\n\n return (\n \n )\n}\n\nexport default NumericInput\n","import React from 'react'\nimport { navigateBack } from '../../../store/history/history.actions'\nimport cross from '../../genericComponents/assets/cross.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { useAction } from '../../utils/react-redux'\nimport useEventCallback from '../../utils/useEventCallback'\nimport s from './CloseUserAreaButton.less'\n\nconst CloseUserAreaButton = () => {\n const execNavigateBack = useAction(navigateBack)\n const onClose = useEventCallback(execNavigateBack)\n\n return (\n
    \n \n
    \n )\n}\n\nexport default CloseUserAreaButton\n","// extracted by mini-css-extract-plugin\nexport default {\"closeBtn\":\"gYb_D\"};","import React from 'react'\nimport LogoMappy from './logo-mappy.svg'\nimport s from './LogoMappyImg.less'\n\nconst LogoMappyImg = () => \"Mappy\"\n\nexport default LogoMappyImg\n","// extracted by mini-css-extract-plugin\nexport default {\"logo\":\"opzFO\"};","import React from 'react'\nimport CloseUserAreaButton from '../shared/CloseUserAreaButton'\nimport s from './UserAreaAnonymous.less'\nimport welcomeUserAccount from './welcome-user-account.svg'\nimport UserLoginButton from '../UserLoginButton'\nimport { withUserNotConnected } from '../shared/withKeycloak'\nimport LogoMappyImg from '../../genericComponents/LogoMappyImg'\n\nconst UserAreaAnonymous = () => (\n
    \n \n
    \n
    \n \n

    \n Le compte \n

    \n

    c’est gratuit !

    \n
      \n
    • Des itinéraires personnalisés
    • \n
    • Des infos durée et coût plus précises
    • \n
    • Mes adresses favorites sur le site et l’appli
    • \n
    \n \n
    \n
    \n
    \n)\n\nexport default withUserNotConnected(UserAreaAnonymous)\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"FPmb1\",\"content\":\"vJti8\",\"defaultScreen\":\"XyQLh\",\"title1\":\"qq91z\",\"title2\":\"nBhmk\",\"list\":\"WHWRs\",\"loginButton\":\"ZBlxr\"};","import classNames from 'classnames'\nimport React from 'react'\nimport s from './UserScreenContent.less'\n\nconst UserScreenContent = ({ children }) =>
    {children}
    \n\nexport default UserScreenContent\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"isc2_\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { useSelector } from 'react-redux'\nimport { setUserUIScreen } from '../../../store/ui/ui.actions'\nimport { USER_SCREENS } from '../../../store/ui/ui.constants'\nimport { selectIsUserScreenDefault } from '../../../store/ui/ui.selectors'\nimport arrowLeft from '../../genericComponents/assets/arrow-left.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { useAction } from '../../utils/react-redux'\nimport useEventCallback from '../../utils/useEventCallback'\nimport s from './UserScreenHeader.less'\n\nconst UserScreenHeader = ({ children, rightChildren, noBar = false }) => {\n const isDefaultScreen = useSelector(selectIsUserScreenDefault)\n const execSetUserUIScreen = useAction(setUserUIScreen)\n\n const onBack = useEventCallback(() => execSetUserUIScreen(USER_SCREENS.default))\n\n return (\n
    \n
    \n {!isDefaultScreen && (\n
    \n \n
    \n )}\n
    \n
    {children}
    \n
    {rightChildren}
    \n
    \n )\n}\n\nexport default UserScreenHeader\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"r_ECQ\",\"noBar\":\"K91Zn\",\"left\":\"QIrjP\",\"right\":\"u8YOO\",\"title\":\"RQjDM\",\"back\":\"c8v2N\"};","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"X_Yxe\",\"favIcon\":\"J2fa4\",\"favori\":\"lxcKr\",\"actions\":\"wOAgJ\",\"actionButton\":\"NWSRB\",\"content\":\"YRmUN\",\"clickableContent\":\"PwNsM\",\"label\":\"dQmMn\",\"address\":\"q2wwJ\",\"updating\":\"LRqKn\"};","import React from 'react'\nimport s from './UserFavoriteItem.less'\nimport classnames from 'classnames'\nimport SVGIcon from '../../../svg/SVGIcon'\nimport ActionButton from '../../../genericComponents/buttons/ActionButton'\nimport Throbber from '../../../loading/Throbber'\nimport { navigateTo } from '../../../../store/history/history.actions'\nimport useEventCallback from '../../../utils/useEventCallback'\nimport { useAction } from '../../../utils/react-redux'\nimport { ROUTE_ADDRESS, ROUTE_SEO_GEOENTITY } from '../../../../routes'\nimport { setCurrentSearch } from '../../../../store/ui/ui.actions'\nimport { resetGeoentities } from '../../../../store/geoentity/geoentity.actions'\nimport TagActionButton from '../../../genericComponents/TagActionButton'\n\nconst FavoriteContent = ({ label, address, tagData }) => {\n return (\n \n {label ? (\n <>\n
    {label}
    \n
    {address}
    \n \n ) : (\n
    {address}
    \n )}\n
    \n )\n}\n\nexport const UserFavoriteItem = ({\n poiId,\n uuid,\n label,\n address,\n favIcon,\n action,\n actionIcon,\n allowEmpty = false,\n editTagData,\n gotoTagData\n}) => {\n const updating = !allowEmpty && !uuid\n const execNavigateTo = useAction(navigateTo)\n const execSetCurrentSearch = useAction(setCurrentSearch)\n const execResetGeoentities = useAction(resetGeoentities)\n\n const onItemClick = useEventCallback(() => {\n if (!uuid) {\n action()\n } else {\n execResetGeoentities()\n if (poiId) {\n execNavigateTo({ route: ROUTE_SEO_GEOENTITY, routeOptions: { geoentityId: poiId } })\n } else {\n execSetCurrentSearch(address)\n execNavigateTo({ route: ROUTE_ADDRESS, routeOptions: { location: address } })\n }\n }\n }, [uuid, label, address, poiId])\n\n const onButtonClick = useEventCallback(() => {\n action(uuid)\n })\n\n return (\n
    \n
    \n \n
    \n \n
    \n {updating ? (\n \n ) : (\n uuid && (\n \n \n \n )\n )}\n
    \n
    \n )\n}\n\nexport default UserFavoriteItem\n","import React, { useCallback, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { deleteUserFavorite } from '../../../../store/userAccount/userAccount.actions'\nimport {\n selectUserFavorites,\n selectUserFavoritesLimitNotReached\n} from '../../../../store/userAccount/userAccount.selectors'\nimport RectangleActionButton, {\n COLOR_GREEN_EMPTY,\n SIZE_NORMAL\n} from '../../../genericComponents/buttons/RectangleActionButton'\nimport { useAction } from '../../../utils/react-redux'\nimport UserScreenContent from '../../shared/UserScreenContent'\nimport UserScreenHeader from '../../shared/UserScreenHeader'\nimport UserFavoriteItem from './UserFavoriteItem'\nimport { setUserUIScreen } from '../../../../store/ui/ui.actions'\nimport { USER_SCREENS } from '../../../../store/ui/ui.constants'\nimport { FAVORITE_TYPES, HOME_ICON, WORK_ICON } from '../../UserAccount.constants'\nimport { useT } from '../../../i18n/T'\n\nimport UserFavoriteError from './UserFavoriteError'\nimport { ACTION, TYPE } from '../../../analytics/ClickTagsService'\nimport { TAG_CLICK_USER_FAVORITES_LIST } from '../../../../store/analytics/analytics.actionTypes'\nimport analyticsConstants from '../../../analytics/analytics.constants'\nimport { useTemporaryVisible } from '../../../genericComponents/useTemporaryVisible'\nimport s from './UserManageFavorite.less'\n\nconst buildTagData = (type, action) => ({\n type: TAG_CLICK_USER_FAVORITES_LIST,\n tagInfo: { [ACTION]: action, [TYPE]: type }\n})\n\nconst UserFavorites = () => {\n const { home, work, others } = useSelector(selectUserFavorites) || {}\n const execDeleteFavorite = useAction(deleteUserFavorite)\n const execSetUserUIScreen = useAction(setUserUIScreen)\n const [visible, setVisible] = useTemporaryVisible()\n const [favoriteError, setFavoriteError] = useState()\n\n const manageFavorite = type => execSetUserUIScreen(USER_SCREENS.manageFavorite, { type })\n const deleteFavorite = useCallback(async uuid => {\n const deleteFavoriteResult = await execDeleteFavorite({ uuid })\n\n if (deleteFavoriteResult?.error) {\n setVisible(true)\n setFavoriteError(deleteFavoriteResult.error)\n }\n }, [])\n\n const canStillAddFavorite = useSelector(selectUserFavoritesLimitNotReached)\n\n const renderAddBtn = useCallback(() => {\n if (canStillAddFavorite) {\n return (\n manageFavorite(FAVORITE_TYPES.OTHER)}\n tagData={buildTagData(\n analyticsConstants.user.favorites.type.other,\n analyticsConstants.user.favorites.action.listAdd\n )}\n />\n )\n }\n }, [manageFavorite])\n\n return (\n <>\n {visible &&
    {favoriteError}
    }\n {'Mes lieux favoris'}\n \n \n manageFavorite(FAVORITE_TYPES.HOME)}\n label={useT('useraccount.favorite.home')}\n actionIcon={'crayon-v6'}\n allowEmpty\n editTagData={buildTagData(\n analyticsConstants.user.favorites.type.home,\n analyticsConstants.user.favorites.action.listEdit\n )}\n gotoTagData={buildTagData(\n analyticsConstants.user.favorites.type.home,\n analyticsConstants.user.favorites.action.listView\n )}\n />\n manageFavorite(FAVORITE_TYPES.WORK)}\n label={useT('useraccount.favorite.work')}\n actionIcon={'crayon-v6'}\n allowEmpty\n editTagData={buildTagData(\n analyticsConstants.user.favorites.type.work,\n analyticsConstants.user.favorites.action.listEdit\n )}\n gotoTagData={buildTagData(\n analyticsConstants.user.favorites.type.work,\n analyticsConstants.user.favorites.action.listView\n )}\n />\n {(others || []).map((other, idx) => (\n \n ))}\n \n \n )\n}\n\nexport default UserFavorites\n","import React, { useEffect } from 'react'\nimport { fetchTravelOptionsConfig } from '../../../../store/travelOptions/travelOptions.actions'\nimport { setUserUIScreen } from '../../../../store/ui/ui.actions'\nimport { USER_SCREENS } from '../../../../store/ui/ui.constants'\nimport { withEmptyFallbackErrorBoundary } from '../../../error/EmptyFallbackErrorBoundary'\nimport RectangleActionButton, { COLOR_GREEN, SIZE_BIG } from '../../../genericComponents/buttons/RectangleActionButton'\nimport TravelOptions from '../../../travelOptions/TravelOptions'\nimport { useAction } from '../../../utils/react-redux'\nimport useEventCallback from '../../../utils/useEventCallback'\nimport UserScreenContent from '../../shared/UserScreenContent'\nimport UserScreenHeader from '../../shared/UserScreenHeader'\nimport s from './UserTravelOptions.less'\n\nconst UserTravelOptions = () => {\n const execFetchTravelOptionsConfig = useAction(fetchTravelOptionsConfig)\n const execSetUserUIScreen = useAction(setUserUIScreen)\n\n useEffect(() => {\n execFetchTravelOptionsConfig()\n }, [])\n\n const onValidate = useEventCallback(() => execSetUserUIScreen(USER_SCREENS.default))\n\n return (\n <>\n {'Mes options de déplacement'}\n \n
    \n \n
    \n \n
    \n
    \n
    \n \n )\n}\n\nexport default withEmptyFallbackErrorBoundary(UserTravelOptions)\n","// extracted by mini-css-extract-plugin\nexport default {\"optionsWrapper\":\"j6dZ1\",\"ValidateArea\":\"MGGTW\",\"ValidateButton\":\"pZIUC\"};","import React from 'react'\nimport useEventCallback from '../../../utils/useEventCallback'\nimport TagActionButton from '../../../genericComponents/TagActionButton'\nimport { TAG_CLICK_USER_LOGOUT_BUTTON } from '../../../../store/analytics/analytics.actionTypes'\nimport { useSelector } from 'react-redux'\nimport { selectPrevFullRouteNonPageLess } from '../../../../store/history/history.selectors'\nimport useKeycloak from '../../useKeycloak'\n\nconst UserLogout = ({ children }) => {\n const { loaded, keycloak } = useKeycloak()\n const lastFullRoute = useSelector(selectPrevFullRouteNonPageLess)\n\n const onLogout = useEventCallback(() => {\n keycloak?.logout({ redirectUri: `${location.origin}${lastFullRoute}` })\n }, [loaded, keycloak, lastFullRoute])\n\n if (!loaded) return <>\n\n return (\n \n {children}\n \n )\n}\n\nexport default UserLogout\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"jz8gY\",\"content\":\"zqsGk\",\"avatar\":\"SSjWo\",\"username\":\"PPXlE\",\"logout\":\"Lp1YC\",\"userMenu\":\"uVTXf\",\"userMenuFooter\":\"JU6ZV\",\"userMenuItem\":\"M2Vc3\",\"userMenuItemAccount\":\"jntOS\",\"userMenuItemIcon\":\"DShSd\",\"userMenuItemLabel\":\"CZ9sE\",\"userMenuItemArrow\":\"UcCdo\",\"userMenuLogoutIcon\":\"sjI3b\"};","import React, { useCallback, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { getService } from '../../../../parameters'\nimport SERVICES from '../../../../services.constants'\nimport { TAG_CLICK_USER_ACCOUNT_BUTTON } from '../../../../store/analytics/analytics.actionTypes'\nimport { setUserUIScreen } from '../../../../store/ui/ui.actions'\nimport { USER_SCREENS } from '../../../../store/ui/ui.constants'\nimport { loadFavorites, loadTravelOptions } from '../../../../store/userAccount/userAccount.actions'\nimport { selectUserName } from '../../../../store/userAccount/userAccount.selectors'\nimport { noop } from '../../../../utils/function'\nimport TagActionLink from '../../../genericComponents/TagActionLink'\nimport arrowRight from '../../../genericComponents/assets/arrow-right.svg'\nimport powerOff from '../../../genericComponents/assets/power-off.svg'\nimport { useTemporaryVisible } from '../../../genericComponents/useTemporaryVisible'\nimport SVGIcon from '../../../svg/SVGIcon'\nimport { useAction } from '../../../utils/react-redux'\nimport UserPicture from '../../UserPicture'\nimport CloseUserAreaButton from '../../shared/CloseUserAreaButton'\nimport UserScreenContent from '../../shared/UserScreenContent'\nimport useKeycloak from '../../useKeycloak'\nimport sUserManageFavorite from '../userFavorites/UserManageFavorite.less'\nimport UserLogout from './UserLogout'\nimport s from './UserMenu.less'\n\nconst UserMenuItem = ({ action = noop, icon, label }) => (\n
  • \n \n
    {label}
    \n \n
  • \n)\n\nconst UserMenuAccount = ({ url, label, tagType }) => (\n \n {label}\n \n)\n\nconst UserMenu = () => {\n const userName = useSelector(selectUserName)\n const execSetUserUIScreen = useAction(setUserUIScreen)\n const execLoadFavorites = useAction(loadFavorites)\n const execLoadTravelOptions = useAction(loadTravelOptions)\n const { loaded, keycloak } = useKeycloak()\n const [visible, setVisible] = useTemporaryVisible()\n const [userMenuError, setUserMenuError] = useState()\n\n const accountUrl = getService(\n SERVICES.KEYCLOAK,\n `realms/mappy/mappy_account-redirection-service?token=${\n keycloak?.token\n }&referrer=web-login&logout_redirect_uri=${encodeURIComponent(\n window.location.href\n )}&delete_redirect_uri=${encodeURIComponent(window.location.origin)}`\n ).url\n\n const gotoTravelOptionsScreen = useCallback(async () => {\n const loadTravelOptionsResult = await execLoadTravelOptions()\n\n if (loadTravelOptionsResult?.error) {\n setVisible(true)\n setUserMenuError(loadTravelOptionsResult.error)\n }\n\n return execSetUserUIScreen(USER_SCREENS.travelOptions)\n }, [])\n\n const gotoFavoritesScreen = useCallback(async () => {\n const loadFavoritesResult = await execLoadFavorites()\n\n if (loadFavoritesResult?.error) {\n setVisible(true)\n setUserMenuError(loadFavoritesResult.error)\n }\n\n return execSetUserUIScreen(USER_SCREENS.favorites)\n }, [])\n\n if (!loaded) return <>\n\n return (\n
    \n {visible &&
    {userMenuError}
    }\n \n \n
    \n
    \n \n
    \n
    {userName}
    \n
      \n \n \n
    \n
    \n \n \n
    \n \n \n \n Se déconnecter\n
    \n
    \n
    \n
    \n
    \n
    \n )\n}\n\nexport default UserMenu\n","import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useRef, useState } from 'react'\nimport s from './FavoriteInput.less'\nimport classNames from 'classnames'\nimport { suggestServiceCtx } from '../../../../store/suggest/suggest.service.constants'\nimport { setSuggestInputValue, suggest } from '../../../../store/suggest/suggest.actions'\nimport { useAction } from '../../../utils/react-redux'\nimport useDebounce from '../../../utils/useDebounce'\n\nconst FavoriteInput = forwardRef((props, ref) => {\n const { value, onChange, className, placeholder } = props\n\n const suggestFilterType = suggestServiceCtx.filter.places\n const execSuggest = useAction(suggest)\n const execSetInputValue = useAction(setSuggestInputValue)\n const [cancelSuggest, setCancelSuggest] = useState(false)\n const inputRef = useRef()\n const debouncedValue = useDebounce(value, 250)\n const hasDebouncedValueChangeOnce = useRef(false) // to ignore suggest on first render\n\n const onSubmit = useCallback(() => {\n execSetInputValue(value)\n setCancelSuggest(true)\n return Promise.resolve().then(() => blur())\n }, [value])\n\n useImperativeHandle(ref, () => {\n return { onSubmit }\n })\n\n const doSuggest = val => {\n if (cancelSuggest) {\n setCancelSuggest(false)\n return Promise.resolve()\n }\n execSetInputValue(val)\n return execSuggest({ terms: val, suggestFilterType })\n }\n\n useEffect(() => {\n if (hasDebouncedValueChangeOnce.current) {\n doSuggest(debouncedValue)\n }\n hasDebouncedValueChangeOnce.current = true\n }, [debouncedValue])\n\n const handleChange = event => {\n onChange && onChange({ value: event.target.value })\n }\n\n const handleFocus = e => {\n e.target.select()\n doSuggest(value)\n }\n\n const blur = () => inputRef && inputRef.current.blur()\n\n return (\n
    \n \n
    \n )\n})\n\nFavoriteInput.displayName = 'FavoriteInput'\nexport default FavoriteInput\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"mCyYc\",\"field\":\"AP75X\"};","import React, { useCallback, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { setUserUIScreen } from '../../../../store/ui/ui.actions'\nimport { USER_SCREENS } from '../../../../store/ui/ui.constants'\nimport { selectFavoritePlaceholder, selectUserUIScreenParams } from '../../../../store/ui/ui.selectors'\nimport { addOrEditHomeOrWorkFavorite, addOtherFavorite } from '../../../../store/userAccount/userAccount.actions'\nimport { selectUserFavorites } from '../../../../store/userAccount/userAccount.selectors'\nimport { pick } from '../../../../utils/object'\nimport { equalsIgnoreCase, removeHtmlEmSpanAndITags } from '../../../../utils/string'\nimport arrowLeft from '../../../genericComponents/assets/arrow-left.svg'\nimport { useTemporaryVisible } from '../../../genericComponents/useTemporaryVisible'\nimport SuggestContent from '../../../suggest/SuggestContent'\nimport SVGIcon from '../../../svg/SVGIcon'\nimport { useAction } from '../../../utils/react-redux'\nimport { FAVORITE_TYPES } from '../../UserAccount.constants'\nimport FavoriteInput from './FavoriteInput'\nimport s from './UserManageFavorite.less'\n\nconst UserManageFavorite = () => {\n const execSetUserUIScreen = useAction(setUserUIScreen)\n const navigateBack = () => execSetUserUIScreen(USER_SCREENS.favorites)\n const { type } = useSelector(selectUserUIScreenParams)\n const favorites = useSelector(selectUserFavorites)\n const saveOther = useAction(addOtherFavorite)\n const saveHomeOrWork = useAction(addOrEditHomeOrWorkFavorite)\n const initialValue = favorites?.[type]?.address ?? ''\n const [value, setValue] = useState(initialValue)\n const [visible, setVisible] = useTemporaryVisible()\n const [favoriteError, setFavoriteError] = useState()\n\n const placeholder = useSelector(selectFavoritePlaceholder)\n\n const onSuggestClicked = useCallback(\n async suggestion => {\n const isPoi = suggestion.type === 'poi'\n const address = removeHtmlEmSpanAndITags(isPoi ? suggestion.labels[1] : suggestion.labels.join(' '))\n\n if (equalsIgnoreCase(type, FAVORITE_TYPES.OTHER)) {\n const favorite = {\n ...(isPoi ? { label: removeHtmlEmSpanAndITags(suggestion.labels[0]) } : {}),\n address,\n type\n }\n\n const saveOtherResult = await saveOther(favorite)\n\n if (saveOtherResult?.error) {\n setVisible(true)\n setFavoriteError(saveOtherResult.error)\n\n return\n }\n } else {\n const favorite = {\n ...pick(favorites?.[type] ?? {}, ['uuid', 'showHome']),\n address,\n type\n }\n\n const saveHomeOrWorkResult = await saveHomeOrWork(favorite)\n\n if (saveHomeOrWorkResult?.error) {\n setVisible(true)\n setFavoriteError(saveHomeOrWorkResult.error)\n\n return\n }\n }\n navigateBack()\n },\n [setVisible, setFavoriteError, saveHomeOrWork]\n )\n\n const onChange = ({ value: val }) => {\n setValue(val)\n }\n\n return (\n
    \n {visible &&
    {favoriteError}
    }\n
    \n
    \n \n
    \n
    e.preventDefault()}>\n \n \n
    \n
    \n \n
    \n
    \n )\n}\n\nexport default UserManageFavorite\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectUserUIScreen } from '../../../store/ui/ui.selectors'\nimport { USER_SCREENS } from '../../../store/ui/ui.constants'\nimport UserFavorites from './userFavorites/UserFavorites'\nimport UserTravelOptions from './userTravelOptions/UserTravelOptions'\nimport UserMenu from './userMenu/UserMenu'\nimport UserManageFavorite from './userFavorites/UserManageFavorite'\nimport { withUserConnected } from '../shared/withKeycloak'\n\nconst UserAreaConnected = () => {\n const screen = useSelector(selectUserUIScreen)\n\n switch (screen) {\n case USER_SCREENS.favorites:\n return \n case USER_SCREENS.manageFavorite:\n return \n case USER_SCREENS.travelOptions:\n return \n case USER_SCREENS.default:\n default:\n return \n }\n}\n\nexport default withUserConnected(UserAreaConnected)\n","import React from 'react'\nimport ContentLoader from 'react-content-loader'\nimport { withUserUnknown } from './shared/withKeycloak'\nimport CloseUserAreaButton from './shared/CloseUserAreaButton'\n\nconst UserAreaPlaceHolder = () => {\n return (\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n )\n}\n\nexport default withUserUnknown(UserAreaPlaceHolder)\n","import classNames from 'classnames'\nimport React from 'react'\nimport { Helmet } from 'react-helmet'\nimport { UI_ELEMENTS } from '../../store/ui/ui.constants'\nimport { selectIsUserAccountEnabled } from '../../store/userAccount/userAccount.selectors'\nimport useUIDisplay from '../ui/useUIDisplay'\nimport { withEverySelectorTruthy } from '../utils/react-redux'\nimport UserAreaAnonymous from './anonymous/UserAreaAnonymous'\nimport UserAreaConnected from './connected/UserAreaConnected'\nimport { useKeycloakEngine } from './useKeycloak'\nimport s from './UserArea.less'\nimport UserAreaPlaceHolder from './UserAreaPlaceHolder'\n\n// webpack:BrowserOnly\nconst UserArea = () => {\n const { isUIDisplayed } = useUIDisplay(UI_ELEMENTS.USER)\n useKeycloakEngine()\n\n return (\n <>\n \n \n \n
    \n \n \n \n
    \n \n )\n}\n\nexport default withEverySelectorTruthy(selectIsUserAccountEnabled)(UserArea)\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"rbPGM\",\"displayed\":\"nRb7m\",\"frame\":\"Lo3bS\"};","// extracted by mini-css-extract-plugin\nexport default {\"carrouselSection\":\"vQKHy\",\"carrouselTextSection\":\"ny_lL\",\"sectionTitle\":\"eejTS\",\"popinList\":\"Sat9v\",\"popinItem\":\"JuNzp\",\"icon\":\"dzcIB\",\"bullet\":\"ynt7H\",\"highlightedBullet\":\"XxGga\",\"carrouselBullets\":\"OFaFy\",\"arrowContainer\":\"ycsWM\",\"navArrow\":\"nCvma\",\"imageCarrousel\":\"Beuf0\",\"galleryWrapper\":\"zvi1K\"};","import React, { useRef, useState } from 'react'\nimport { withOnlyGE } from '../../Device'\nimport ImageGallery from '../../genericComponents/ImageGallery'\nimport arrowLeft from '../../genericComponents/assets/arrow-left.svg'\nimport arrowRight from '../../genericComponents/assets/arrow-right.svg'\nimport point from '../../genericComponents/assets/point.svg'\nimport star from '../../genericComponents/assets/star.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport s from './UserAccountIncentiveCarrousel.less'\nimport favoriteAddressesImg from './favorite_addresses.png'\nimport favoriteAddressesImgWebp from './favorite_addresses.webp'\nimport myAlertsImg from './my_alerts.png'\nimport myAlertsWebp from './my_alerts.webp'\nimport myOptionsImg from './my_options.png'\nimport myOptionsWebp from './my_options.webp'\nimport tripPriceImg from './trip_price.png'\nimport tripPriceWebp from './trip_price.webp'\n\nconst imageList = [\n {\n alt: 'Coût des mes trajets',\n original: tripPriceImg,\n srcSet: [tripPriceWebp]\n },\n {\n alt: 'Mes adresses favorites',\n original: favoriteAddressesImg,\n srcSet: [favoriteAddressesImgWebp]\n },\n {\n alt: 'Mes options de déplacement',\n original: myOptionsImg,\n srcSet: [myOptionsWebp]\n },\n {\n alt: 'Mes alertes',\n original: myAlertsImg,\n srcSet: [myAlertsWebp]\n }\n]\n\nexport const UserAccountIncentiveCarrousel = withOnlyGE(() => {\n const [textIndex, setTextIndex] = useState(0)\n const galleryRef = useRef()\n\n const onBeforeSlide = nextIndex => {\n setTextIndex(nextIndex)\n }\n\n /*\n Calling `pause` before `slideToIndex` allows to reset the `slideInterval`\n So the `autoplay` won't use the remaining time but will reset it before sliding\n */\n const goToPreviousSlide = () => {\n galleryRef.current.pause()\n galleryRef.current.slideToIndex(galleryRef.current.getCurrentIndex() - 1)\n galleryRef.current.play()\n }\n\n const goToNextSlide = () => {\n galleryRef.current.pause()\n galleryRef.current.slideToIndex(galleryRef.current.getCurrentIndex() + 1)\n galleryRef.current.play()\n }\n\n const isBulletHighlighted = bulletIndex => (textIndex === bulletIndex ? s.highlightedBullet : s.bullet)\n\n return (\n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n {textIndex === 0 && (\n
    \n

    Je calcule le coût exact de mes trajets

    \n
      \n
    • \n \n Prix du péage selon le véhicule\n
    • \n
    • \n \n Consommation en carburant\n
    • \n
    \n
    \n )}\n {textIndex === 1 && (\n
    \n

    Je trouve en un clic mes adresses favorites

    \n
      \n
    • \n \n Maison\n
    • \n
    • \n \n Travail\n
    • \n
    • \n \n Resto préféré...\n
    • \n
    \n
    \n )}\n {textIndex === 2 && (\n
    \n

    Je retrouve mes options sur le site et l’appli mobile

    \n
      \n
    • \n \n Type de véhicule\n
    • \n
    • \n \n Prix du carburant\n
    • \n
    • \n \n Vitesse de marche ou à vélo\n
    • \n
    \n
    \n )}\n {textIndex === 3 && (\n
    \n

    Je suis alerté des perturbations trafic

    \n
      \n
    • Aujourd’hui sur l’appli et demain sur le site web
    • \n
    \n
    \n )}\n
    \n \n \n \n \n
    \n
    \n )\n})\n","// extracted by mini-css-extract-plugin\nexport default {\"popin\":\"En97Z\",\"connectionSection\":\"MrY0e\",\"title1\":\"QGGz5\",\"title2\":\"KTMCC\",\"onCloseButton\":\"quH5P\",\"list\":\"PMlkc\",\"incentiveIllustration\":\"h5JvH\"};","import React, { useEffect } from 'react'\nimport { useSelector } from 'react-redux'\nimport { TAG_MULTIPATH_CTA } from '../../../store/analytics/analytics.actionTypes'\nimport { dispatchTag } from '../../../store/analytics/analytics.actions'\nimport { MODAL_IDS } from '../../../store/ui/ui.constants'\nimport { selectShouldDisplayUserAccountIncentivePopin } from '../../../store/userAccount/userAccount.selectors'\nimport { isPE, withOnlyPE } from '../../Device'\nimport { PUB_TAG } from '../../analytics/PublisherTagsService'\nimport LogoMappyImg from '../../genericComponents/LogoMappyImg'\nimport Modal from '../../genericComponents/Modal'\nimport cross from '../../genericComponents/assets/cross.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport useModal from '../../ui/useModal'\nimport { useAction } from '../../utils/react-redux'\nimport useEventCallback from '../../utils/useEventCallback'\nimport UserLoginButton from '../UserLoginButton'\nimport incentiveIllustration from '../anonymous/welcome-user-account.svg'\nimport { withUserNotConnected } from '../shared/withKeycloak'\nimport { UserAccountIncentiveCarrousel } from './UserAccountIncentiveCarrousel'\nimport s from './UserAccountIncentivePopin.less'\nimport { INCENTIVE_NAME } from './incentive.constants'\n\n// webpack:BrowserOnly\nconst UserAccountIncentivePopin = () => {\n const shouldDisplayPopin = useSelector(selectShouldDisplayUserAccountIncentivePopin)\n const { displayModal, hideModal, isModalDisplayed } = useModal(MODAL_IDS.USER_ACCOUNT_INCENTIVE_POPIN)\n const execDispatchTag = useAction(dispatchTag)\n\n const onPopinClose = useEventCallback(hideModal)\n\n useEffect(() => {\n if (shouldDisplayPopin) {\n displayModal()\n }\n }, [shouldDisplayPopin])\n\n useEffect(() => {\n if (!isModalDisplayed) return\n\n execDispatchTag({\n type: TAG_MULTIPATH_CTA,\n tagInfo: { tag: PUB_TAG.PUB_COMPTE_PERSO_INCITATION, Incitation: INCENTIVE_NAME.incitationPrincipale },\n isImpression: true\n })\n }, [isModalDisplayed])\n\n return (\n \n
    \n
    \n {isPE() && }\n

    \n Le compte \n

    \n

    c’est gratuit !

    \n \n \n
    \n
    \n \n
    \n \n
    \n
    \n )\n}\n\nconst SmallScreenText = withOnlyPE(() => {\n return (\n
      \n
    • Des itinéraires personnalisés
    • \n
    • Des infos durée et coût plus précises
    • \n
    • Mes adresses favorites sur le site et l’appli
    • \n
    \n )\n})\n\nexport default withUserNotConnected(UserAccountIncentivePopin)\n","import { isEqual } from '../../utils/lang'\nimport { REGISTER_CONSENT } from './cmp.actionTypes'\nimport { selectCMPConsent } from './cmp.selectors'\n\nexport const registerConsent = consent => (dispatch, getState) => {\n if (!isEqual(selectCMPConsent(getState()), consent)) {\n dispatch({\n type: REGISTER_CONSENT,\n payload: consent\n })\n }\n}\n","import React from 'react'\nimport { DidomiSDK } from '@didomi/react'\nimport CMPService from './CMPService'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport { registerConsent } from '../../store/cmp/cmp.actions'\nimport { useAction } from '../utils/react-redux'\n\n// webpack:BrowserOnly\nexport default withEmptyFallbackErrorBoundary(function CMPPlaceholder() {\n const execRegisterConsent = useAction(registerConsent)\n\n return (\n {\n CMPService.setSDK(didomiSDK)\n }}\n onConsentChanged={() => execRegisterConsent(CMPService.getConsents())}\n />\n )\n})\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"tUwQh\",\"borderless\":\"dMfiA\",\"categories\":\"e8FTY\",\"autoPromoButton\":\"FwtHk\"};","import classnames from 'classnames'\nimport React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectAdDataByAdId, selectPageIdForAdConfig } from '../../store/ad/ad.selectors'\nimport { selectCategorySegmentByCategoryId } from '../../store/poiassets/poiassets.selectors'\nimport { isEmptyObj } from '../../utils/object'\nimport DelayComponent from '../utils/DelayComponent'\nimport { useSelectorWithProps } from '../utils/react-redux'\nimport { getAdIdByAdName } from './AdConfigService'\nimport AdLoader from './AdLoader'\nimport s from './AdMenu.less'\n\nconst adName = 'menuthema'\n\nconst AdMenu = ({ categoryId }) => {\n const segment = useSelectorWithProps(selectCategorySegmentByCategoryId, { id: categoryId })\n const pageId = useSelector(selectPageIdForAdConfig)\n const adId = getAdIdByAdName(adName, pageId)\n const adData = useSelectorWithProps(selectAdDataByAdId, { adId })\n const { Menuthema } = adData || {}\n const { title, text, linkLabel, imgUrl, linkUrl } = Menuthema || {}\n const categorySelector = () => ({ segment })\n\n return (\n \n \n
    \n {!isEmptyObj(adData) && (\n \n \n\n
    \n
    {title}
    \n {text} {linkLabel}\n
    \n
    \n )}\n
    \n
    \n
    \n )\n}\n\nexport default AdMenu\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"UAPRB\",\"linkWrapper\":\"jPfz6\",\"logo\":\"R8onm\",\"title\":\"uToUc\",\"message\":\"u1HvF\",\"label\":\"caeoa\",\"hidden\":\"cfUNZ\"};","import React from 'react'\nimport s from './MenuSubCategoriesGE.less'\nimport { selectSubCategoriesMenu } from '../../store/poiassets/poiassets.selectors'\nimport MenuSubCategoryItem from './MenuSubCategoryItem'\nimport MenuApplicationItem from './MenuApplicationItem'\nimport useTimeout from '../utils/useTimeout'\nimport usePublisherBarreCategorieTag from './usePublisherBarreCategorieTag'\nimport { useSelectorWithProps } from '../utils/react-redux'\nimport CategorySubMenuStyle from './CategorySubMenuStyle'\nimport classNames from 'classnames'\nimport AdMenu from '../advertising/AdMenu'\n\nconst MenuSubCategoriesGE = ({ categoryId, onMouseLeaveMenu }) => {\n const { subcategories, apps, color } = useSelectorWithProps(selectSubCategoriesMenu, { id: categoryId })\n const [setMouseOverTimeout, clearMouveOverTimeout] = useTimeout(150)\n\n usePublisherBarreCategorieTag(categoryId)\n\n if (!categoryId) return <>\n\n const onMouseOver = () => clearMouveOverTimeout()\n\n const onMouseOut = () => setMouseOverTimeout(() => onMouseLeaveMenu())\n\n const columnCount = 2 + Number(subcategories.length > 5) + Number(apps.length > 5)\n\n return (\n
    \n
    \n
      \n {subcategories.map(({ id, iconId, label, rubricIds }) => (\n \n ))}\n
    • \n {apps.map(({ id, name, mob_roundImage }) => (\n \n ))}\n
    \n \n
    \n \n
    \n )\n}\n\nexport default MenuSubCategoriesGE\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"d8pmR\",\"itemsWrapper\":\"M8_Gd\",\"items\":\"dUxyB\",\"columnBreak\":\"JqkZ_\"};","import React, { useEffect, useState } from 'react'\nimport s from './MenuCategoriesGE.less'\nimport { useSelector } from 'react-redux'\nimport { loadPoiAssetsConfiguration } from '../../store/poiassets/poiassets.actions'\nimport { selectCategoriesMenu } from '../../store/poiassets/poiassets.selectors'\nimport MenuSubCategoriesGE from './MenuSubCategoriesGE'\nimport MenuCategoryItem from './MenuCategoryItem'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport { withFrenchSite } from '../i18n/i18nSite'\nimport { withOnlyGE } from '../Device'\nimport { useAction } from '../utils/react-redux'\nimport { TAG_CLICK_CATEGORY_BAR } from '../../store/analytics/analytics.actionTypes'\nimport { APP_OR_SUBCAT_ID, CAT_ID } from '../analytics/ClickTagsService'\nimport { dispatchTag } from '../../store/analytics/analytics.actions'\nimport { navigateToSearchByCategory, navigateToPoisOnRouteByCategory } from '../../store/history/history.actions'\nimport useTimeout from '../utils/useTimeout'\n\nimport classNames from 'classnames'\nimport AutoPromoOpenButton from '../autopromo/AutoPromoOpenButton'\nimport analyticsConstants from '../analytics/analytics.constants'\nimport { selectIsPageElligibleForPoisOnRoute } from '../../store/history/history.selectors'\n\nexport const MenuCategoriesGE = () => {\n const [categoryId, setCategoryId] = useState()\n const execLoadPoiAssetsConfiguration = useAction(loadPoiAssetsConfiguration)\n const execNavigateToSmrByCategory = useAction(navigateToPoisOnRouteByCategory)\n\n useEffect(() => {\n execLoadPoiAssetsConfiguration()\n }, [execLoadPoiAssetsConfiguration])\n\n const categories = useSelector(selectCategoriesMenu)\n const isPageElligibleForPoisOnRoute = useSelector(selectIsPageElligibleForPoisOnRoute)\n const [setMouseOverTimeout, clearMouseOverTimeout] = useTimeout(100)\n\n const onMouseOver = categoryId => () => setCategoryId(categoryId)\n\n const onMouseOut = () => setMouseOverTimeout(unselectCategory)\n\n const unselectCategory = () => setCategoryId(null)\n\n const onMenuMouseOver = () => clearMouseOverTimeout()\n\n const onMenuMouseOut = () => setMouseOverTimeout(unselectCategory)\n\n const execDispatchTag = useAction(dispatchTag)\n const execNavigateToSearchByCategory = useAction(navigateToSearchByCategory)\n\n const onCategoryClick = catId => e => {\n execDispatchTag({\n type: TAG_CLICK_CATEGORY_BAR,\n tagInfo: {\n [CAT_ID]: catId,\n [APP_OR_SUBCAT_ID]: 'all'\n }\n })\n\n if (isPageElligibleForPoisOnRoute) {\n execNavigateToSmrByCategory(catId)\n } else {\n execNavigateToSearchByCategory(catId)\n }\n unselectCategory()\n }\n return categories?.length ? (\n \n
      \n {categories.map(({ id, shortLabel, iconId, color }) => (\n \n ))}\n
    \n {categoryId && }\n
    \n \n
    \n
    \n ) : null\n}\n\nexport default withEmptyFallbackErrorBoundary(withFrenchSite(withOnlyGE(MenuCategoriesGE)))\n","import classNames from 'classnames'\nimport React, { useEffect, useRef, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport '../../../node_modules/web-api-360/dist/MappyOutdoorView.css'\nimport { getApiKey, getDomain } from '../../parameters'\nimport { navigateBack } from '../../store/history/history.actions'\nimport { selectLocale } from '../../store/locale/locale.selectors'\nimport {\n selectIsOutdoorDisplayed,\n selectOutdoorPanoramicId,\n selectOutdoorTargetCoordinates\n} from '../../store/ui/ui.outdoor.selectors'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport cross from '../genericComponents/assets/cross.svg'\nimport { getLocaleUnderscored } from '../i18n'\nimport SVGIcon from '../svg/SVGIcon'\nimport { useAction } from '../utils/react-redux'\nimport useEventCallback from '../utils/useEventCallback'\nimport s from './Outdoor.less'\n\nconst Outdoor = () => {\n const wrapper = useRef()\n const view = useRef()\n const [loaded, setLoaded] = useState(false)\n\n const isOutdoorDisplayed = useSelector(selectIsOutdoorDisplayed)\n const outdoorPanoramicId = useSelector(selectOutdoorPanoramicId)\n const outdoorTargetCoordinates = useSelector(selectOutdoorTargetCoordinates)\n const locale = useSelector(selectLocale)\n const execNavigateBack = useAction(navigateBack)\n\n const loadScript = () =>\n import(\n /* webpackChunkName: \"outdoor\" */ 'script-loader!../../../node_modules/web-api-360/dist/MappyOutdoorView.min'\n )\n\n /* Don’t use useEventCallback, nor useErrorBoundaryCallback, see NES-3215 */\n const debugKeyHandler = useEventCallback(event => {\n if (event.key === 'd') {\n view.current?.toggleDebug()\n }\n }, [])\n\n const listenKeyForDebug = () => document.body.addEventListener('keydown', debugKeyHandler)\n\n const stopListeningKeyForDebug = () => document.body.removeEventListener('keydown', debugKeyHandler)\n\n const hide = () => {\n execNavigateBack()\n setLoaded(false)\n }\n\n useEffect(() => {\n if (!loaded) return\n listenKeyForDebug()\n return stopListeningKeyForDebug\n }, [loaded])\n\n const createOutdoorView = () => {\n const { lat, lng } = outdoorTargetCoordinates\n view.current = new window.MappyOutdoor.View(wrapper.current, outdoorPanoramicId, {\n apikey: getApiKey(),\n domain: `${getDomain()}.net`,\n imgPath: `/assets/${window.__APP_VERSION__}/outdoor`,\n locale: getLocaleUnderscored(locale)\n })\n view.current.lookAt({ lat, lon: lng })\n }\n\n useEffect(() => {\n if (isOutdoorDisplayed) {\n loadScript()\n .then(createOutdoorView)\n .then(() => setLoaded(true))\n }\n }, [isOutdoorDisplayed])\n\n useEffect(() => {\n return () => hide\n }, [])\n\n if (!isOutdoorDisplayed) return <>\n\n return (\n <>\n
    \n
    \n \n
    \n \n )\n}\n\n// webpack:BrowserOnly\nexport default withEmptyFallbackErrorBoundary(Outdoor)\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"AVnKY\",\"active\":\"O3NAK\",\"closeBtn\":\"AtUdC\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { PAGE_CLASSES } from '../../routes/pageClasses.constants'\nimport { selectFocusedPoiId } from '../../store/geoentity/geoentity.selectors'\nimport { selectIsMapFullScreen } from '../../store/map/map.selectors'\nimport { UI_ELEMENTS } from '../../store/ui/ui.constants'\nimport { isUIElementDisplayed } from '../../store/ui/ui.selectors'\nimport UserArea from '../UserAccount/UserArea'\nimport UserAccountIncentivePopin from '../UserAccount/connectionIncentive/UserAccountIncentivePopin'\nimport CMPPlaceholder from '../cmp/CMPPlaceholder'\nimport MenuCategoriesGE from '../menu/MenuCategoriesGE'\nimport Outdoor from '../outdoor/Outdoor'\nimport { useSelectorWithProps } from '../utils/react-redux'\nimport { createCustomSelector } from '../utils/react-reselect'\n\nconst selectPageSpecificClasses = (store, props) => props?.pageClassManager?.(store, props) || []\n\nconst selectCommonClasses = createCustomSelector(\n selectIsMapFullScreen,\n isUIElementDisplayed(UI_ELEMENTS.POPIN),\n isUIElementDisplayed(UI_ELEMENTS.SUGGEST),\n isUIElementDisplayed(UI_ELEMENTS.MENU_PE),\n isUIElementDisplayed(UI_ELEMENTS.MAP_TOOLS_PE),\n selectFocusedPoiId,\n (isMapFullScreen, isPopinDisplayed, isSuggestDisplayed, isMenuPEDisplayed, isMapToolsPEDisplayed, hasFocusedPoi) => [\n isMapFullScreen && PAGE_CLASSES.withFullscreenMap,\n isPopinDisplayed && PAGE_CLASSES.withDetail,\n isSuggestDisplayed && PAGE_CLASSES.withSuggest,\n isMenuPEDisplayed && PAGE_CLASSES.withMenuPEDisplayed,\n isMapToolsPEDisplayed && PAGE_CLASSES.withMapToolsPEDisplayed,\n hasFocusedPoi && PAGE_CLASSES.withPoiPopinDisplayed\n ]\n)\n\nexport default function Page({ cssClasses = [], children, ...props }) {\n const commonClasses = useSelectorWithProps(selectCommonClasses, props)\n const pageSpecificClasses = useSelectorWithProps(selectPageSpecificClasses, props)\n const className = classNames(...cssClasses, ...commonClasses, ...pageSpecificClasses)\n\n return (\n
    \n \n \n \n \n \n {children}\n
    \n )\n}\n","import React, { useRef, useCallback, useEffect, useContext } from 'react'\nimport s from './ResponsiveScrollableWrapper.less'\nimport { isGE } from '../../Device'\n\nexport const ScrollContext = React.createContext()\n\nexport const useScrollContext = () => useContext(ScrollContext)\n\nconst TOP = 0\n\nconst ResponsiveScrollableWrapper = ({ children }) => {\n const scrollableElementRef = useRef()\n\n const getScrollValue = useCallback(() => {\n return isGE() ? scrollableElementRef?.current?.scrollTop ?? TOP : document.querySelector('html').scrollTop\n }, [])\n\n const setScrollValue = useCallback(value => {\n if (isGE()) {\n if (scrollableElementRef?.current) {\n scrollableElementRef.current.scrollTop = value\n }\n } else {\n document.querySelector('html').scrollTop = value\n document.querySelector('body').scrollTop = value\n }\n }, [])\n\n const scrollTo = useCallback((scrollGoal, animate = false) => {\n if (!animate) return setScrollValue(scrollGoal)\n\n let now0 = null\n const scroll0 = getScrollValue()\n const scrollDelta = scrollGoal - scroll0\n const duration = 500\n const step = now => {\n if (now0 === null) now0 = now\n const t = now - now0\n const scrollPos = scroll0 + scrollDelta * Math.sin(((Math.PI / 2) * t) / duration)\n if (t < duration) {\n setScrollValue(scrollPos)\n requestAnimationFrame(step)\n } else {\n setScrollValue(scrollGoal)\n }\n }\n requestAnimationFrame(step)\n }, [])\n\n const scrollTop = useCallback(\n animate => {\n scrollTo(TOP, animate)\n },\n [scrollTo]\n )\n\n useEffect(() => {\n scrollTop()\n return () => scrollTop()\n }, [])\n\n const addScrollListener = useCallback(fn => {\n const el = isGE() ? scrollableElementRef?.current : document\n if (el) el.addEventListener('scroll', fn)\n }, [])\n\n const removeScrollListener = useCallback(fn => {\n const el = isGE() ? scrollableElementRef?.current : document\n if (el) el.removeEventListener('scroll', fn)\n }, [])\n\n const checkIfTargetIsVisible = useCallback((parent, child) => {\n if (!parent || !child) return false\n\n const targetTop = child.offsetTop\n const totalScrollHeight = isGE() ? parent.offsetParent.clientHeight : window.innerHeight\n const scrollValue = getScrollValue()\n\n const alreadyVisible = targetTop < totalScrollHeight\n const scrolledUntilTarget = scrollValue > targetTop - totalScrollHeight\n return alreadyVisible || scrolledUntilTarget\n }, [])\n\n const providerValue = {\n scrollTop,\n scrollTo,\n getScrollValue,\n addScrollListener,\n removeScrollListener,\n checkIfTargetIsVisible\n }\n\n return (\n
    \n {children}\n
    \n )\n}\n\nexport default ResponsiveScrollableWrapper\n","// extracted by mini-css-extract-plugin\nexport default {\"responsiveScrollableWrapper\":\"_6M6JB\"};","import React from 'react'\nimport s from './StatusMessage.less'\nimport classnames from 'classnames'\n\nconst StatusMessage = ({ message, visible = false, className }) => {\n return (\n
    \n {message}\n
    \n )\n}\n\nexport default StatusMessage\n","// extracted by mini-css-extract-plugin\nexport default {\"status\":\"IHXKv\",\"statusVisible\":\"t9Dhq\",\"statusText\":\"l6dSx\"};","import { useEffect, useState } from 'react'\nimport useTimeout from '../utils/useTimeout'\n\nexport function useTemporaryVisible(timeout = 3000) {\n const [visible, setVisible] = useState()\n\n const [setAction, clear] = useTimeout(timeout)\n\n useEffect(() => {\n if (visible) {\n clear()\n setAction(() => {\n setVisible(false)\n })\n }\n }, [visible])\n\n return [visible, setVisible]\n}\n","import classNames from 'classnames'\nimport React from 'react'\nimport { TAG_BACK } from '../../store/analytics/analytics.actionTypes'\nimport { navigateBack } from '../../store/history/history.actions'\nimport TagActionButton from '../genericComponents/TagActionButton'\nimport arrowLeft from '../genericComponents/assets/arrow-left.svg'\nimport SVGIcon from '../svg/SVGIcon'\nimport { useAction } from '../utils/react-redux'\nimport s from './Header.less'\n\nconst BackButton = ({ hasTag }) => {\n const execNavigateBack = useAction(navigateBack)\n\n return hasTag ? (\n execNavigateBack()}>\n \n \n ) : (\n
    execNavigateBack()}>\n \n
    \n )\n}\n\nexport default BackButton\n","import React from 'react'\nimport { ROUTE_USER_ACCOUNT } from '../../routes'\nimport { TAG_CLICK_USER_BURGER } from '../../store/analytics/analytics.actionTypes'\nimport { navigateTo } from '../../store/history/history.actions'\nimport TagActionButton from '../genericComponents/TagActionButton'\nimport hamburger from '../genericComponents/assets/hamburger.svg'\nimport SVGIcon from '../svg/SVGIcon'\nimport { useAction } from '../utils/react-redux'\nimport useEventCallback from '../utils/useEventCallback'\nimport s from './UserButton.less'\nimport UserPicture from './UserPicture'\n\nconst UserButton = () => {\n const execNavigateTo = useAction(navigateTo)\n const onClick = useEventCallback(() => {\n execNavigateTo({\n route: ROUTE_USER_ACCOUNT\n })\n })\n\n return (\n \n
    \n \n
    \n
    \n \n
    \n
    \n )\n}\n\nexport default UserButton\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"Routz\",\"menu\":\"TAKMb\",\"avatar\":\"JuWxx\"};","import classNames from 'classnames'\nimport React, { useCallback } from 'react'\nimport { navigateTo } from '../../store/history/history.actions'\nimport SVGIcon from '../svg/SVGIcon'\nimport { useAction } from '../utils/react-redux'\nimport s from './UniverseButton.less'\n\nexport default function UniverseButton(props) {\n const { url, text, active, link, route, routeOptions, onClick } = props\n\n const execNavigateTo = useAction(navigateTo)\n\n const onButtonClick = useCallback(\n e => {\n e.preventDefault()\n execNavigateTo({ route, routeOptions })\n },\n [execNavigateTo, route, routeOptions]\n )\n\n return (\n \n
    \n \n
    \n
    {text}
    \n
    \n )\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"s54Ej\",\"button\":\"k0HC1\",\"active\":\"zMual\",\"text\":\"pBvWr\"};","import React, { useCallback } from 'react'\nimport { useSelector } from 'react-redux'\nimport { ROUTE_ITINERARY_HOME } from '../../routes'\nimport { navigateToHomepage } from '../../store/history/history.actions'\nimport { selectItineraryOptions } from '../../store/history/history.navigate.selectors'\nimport { selectIsHomePage } from '../../store/history/history.selectors'\nimport { selectIsMapFullScreen } from '../../store/map/map.selectors'\nimport { selectIsUserAccountEnabled } from '../../store/userAccount/userAccount.selectors'\nimport UserButton from '../UserAccount/UserButton'\nimport iconItinerary from '../genericComponents/assets/itinerary.svg'\nimport T from '../i18n/T'\nimport { generateFullRoute } from '../router/routeUtils'\nimport { useAction } from '../utils/react-redux'\nimport s from './DesktopPreHeader.less'\nimport UniverseButton from './UniverseButton'\n\nconst DesktopPreHeader = () => {\n const homePage = useSelector(selectIsHomePage)\n const itineraryOptions = useSelector(selectItineraryOptions)\n\n const isMapFullScreen = useSelector(selectIsMapFullScreen)\n\n const execNavigateToHomepage = useAction(navigateToHomepage)\n const onClickToHomepage = useCallback(\n e => {\n e.preventDefault()\n execNavigateToHomepage()\n },\n [execNavigateToHomepage]\n )\n\n const shouldDisplayUserAccount = useSelector(selectIsUserAccountEnabled)\n\n return (\n
    \n {__BROWSER__ && shouldDisplayUserAccount && !isMapFullScreen && }\n \n Mappy\n \n {!isMapFullScreen && (\n
    \n }\n active={homePage}\n link={generateFullRoute(ROUTE_ITINERARY_HOME)}\n {...itineraryOptions}\n />\n
    \n )}\n
    \n )\n}\n\nexport default DesktopPreHeader\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"ujdtY\",\"logo\":\"PBvRE\",\"universeButtons\":\"yq0fl\"};","import classnames from 'classnames'\nimport React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectGeoentityActiveFilter } from '../../store/geoentity/geoentity.selectors'\nimport s from './SubHeader.less'\n\nconst SubHeader = ({ children }) => {\n const selectedActiveFilter = useSelector(selectGeoentityActiveFilter)\n\n return
    {children}
    \n}\n\nexport default SubHeader\n","// extracted by mini-css-extract-plugin\nexport default {\"subHeader\":\"_ZRNs\",\"borderless\":\"alqn9\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { useSelector } from 'react-redux'\nimport { PAGE_CLASSES } from '../../routes/pageClasses.constants'\nimport { UI_ELEMENTS } from '../../store/ui/ui.constants'\nimport { selectHeaderHeight, selectIsBackButtonDisplayed } from '../../store/ui/ui.selectors'\nimport { selectIsUserAccountEnabled } from '../../store/userAccount/userAccount.selectors'\nimport { isPE } from '../Device'\nimport UserButton from '../UserAccount/UserButton'\nimport MenuCategoriesPE from '../menu/MenuCategoriesPE'\nimport useComputedHeaderHeight from '../ui/useHeaderHeight'\nimport useUIDisplay from '../ui/useUIDisplay'\nimport DesktopPreHeader from './DesktopPreHeader'\nimport s from './Header.less'\nimport SubHeader from './SubHeader'\n\nexport const Header = ({\n subHeader,\n subHeaderSelectorConditionFn = () => true,\n headerButton,\n children,\n menuCategoriesPE\n}) => {\n const { isUIDisplayed: suggestDisplayed } = useUIDisplay(UI_ELEMENTS.SUGGEST)\n const { isUIDisplayed: searchDialogDisplayed } = useUIDisplay(UI_ELEMENTS.SEARCH_DIALOG)\n const backButtonDisplayed = useSelector(selectIsBackButtonDisplayed)\n const headerHeight = useSelector(selectHeaderHeight)\n\n const shouldDisplaySubHeaderComponent = useSelector(subHeaderSelectorConditionFn)\n const subHeaderComponent = shouldDisplaySubHeaderComponent && subHeader\n\n const userAccountEnabled = useSelector(selectIsUserAccountEnabled)\n const shouldDisplayUserAccount = __BROWSER__ && isPE() && userAccountEnabled && !backButtonDisplayed\n\n const shouldDisplayMenuCategoriesPE = menuCategoriesPE && !suggestDisplayed && !searchDialogDisplayed\n\n const computedHeaderHeight = useComputedHeaderHeight(menuCategoriesPE, subHeaderComponent)\n\n return (\n
    \n \n {shouldDisplayUserAccount && }\n {children}\n {!suggestDisplayed && headerButton}\n
    \n {subHeaderComponent}\n \n {shouldDisplayMenuCategoriesPE && (\n
    \n \n
    \n )}\n \n )\n}\n\nexport default Header\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { localeCountryIsUK, localeCountryIsFrance, localeLanguageIsFrench } from '.'\nimport { selectLocale } from '../../store/locale/locale.selectors'\n\n/* eslint-disable react/display-name */\nexport const withFrenchSite = Component => props => {\n const locale = useSelector(selectLocale)\n\n return localeCountryIsFrance(locale) ? : <>\n}\n\nexport const withFrenchLanguage = Component => props => {\n const locale = useSelector(selectLocale)\n\n return localeLanguageIsFrench(locale) ? : <>\n}\n\nexport const withoutEnglishSite = Component => props => {\n const locale = useSelector(selectLocale)\n\n return !localeCountryIsUK(locale) ? : <>\n}\n","import React from 'react'\nimport classNames from 'classnames'\nimport s from './ModeItem.less'\nimport SVGIcon from '../svg/SVGIcon'\n\nconst ModeItem = ({ label = '', selected = false, icon, description, onClick, displayHighlightBar = true }) => {\n return (\n \n \n \n \n {description}\n {displayHighlightBar &&
    }\n
    \n )\n}\n\nexport default ModeItem\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"FA3H8\",\"selected\":\"HWpJA\",\"icon\":\"_6dHC\",\"label\":\"mgjEa\",\"content\":\"E3G_Q\",\"contentFavourite\":\"gLgE1\",\"bar\":\"Mx64R\",\"highlightedBar\":\"fzEmI\"};","// extracted by mini-css-extract-plugin\nexport default {\"Throbber\":\"s8ceO\",\"spin\":\"juN8d\"};","import React from 'react'\nimport s from './Throbber.less'\nimport img from './throbber.png'\n\nexport default function Throbber() {\n return (\n
    \n \n
    \n )\n}\n","import React, { useCallback } from 'react'\nimport classNames from 'classnames'\nimport ResponsiveScrollableWrapper from '../genericComponents/ResponsiveScrollableWrapper/ResponsiveScrollableWrapper'\nimport s from './Main.less'\nimport { isGE } from '../Device'\nimport { HEADER_SUBHEADER_HEIGHT, PREHEADER_HEIGHT } from '../header/header-constants'\nimport { selectHeaderHeight, selectMainPEPositionAtStart } from '../../store/ui/ui.selectors'\nimport { useSelector } from 'react-redux'\nimport { MINI_MAP_HEIGHT, PE_MAIN_START_POS, PE_MAIN_VALUES } from './main.constants'\n\nimport Anchor from '../genericComponents/Anchor'\n\nconst Main = ({ children, className, withoutSubHeader, hidden }) => {\n const headerHeight = useSelector(selectHeaderHeight)\n const { high, highNoMap } = PE_MAIN_START_POS\n const positionAtStart = useSelector(selectMainPEPositionAtStart)\n const windowHeight = global?.window?.innerHeight ?? 0\n\n const getStyle = useCallback(() => {\n if (__SERVER__) return {}\n\n const headerWithSubHeaderHeight = headerHeight + (withoutSubHeader ? 0 : HEADER_SUBHEADER_HEIGHT)\n if (isGE()) {\n const top = PREHEADER_HEIGHT + headerWithSubHeaderHeight\n const height = `calc(100vh - ${top}px)`\n return { top, height }\n }\n\n const minTop = headerWithSubHeaderHeight + MINI_MAP_HEIGHT\n const top =\n positionAtStart === highNoMap\n ? headerWithSubHeaderHeight - 4\n : positionAtStart === high\n ? minTop\n : Math.max(minTop, windowHeight - PE_MAIN_VALUES[positionAtStart])\n\n return {\n top,\n height: null\n }\n }, [headerHeight, positionAtStart, withoutSubHeader, windowHeight])\n\n return (\n
    \n \n {children}\n
    \n )\n}\n\nexport default Main\n","// extracted by mini-css-extract-plugin\nexport default {\"Main\":\"YAz35\",\"Main_hidden\":\"FO4Cd\",\"Main_displayed\":\"RTSI4\"};","import React from 'react'\nimport { useSelector } from 'react-redux'\n\nimport { resetMapEventPopin } from '../../store/map/map.actions'\nimport { selectMapEventPopin, selectShouldDisplayMapEventPopin } from '../../store/map/map.selectors'\nimport cross from '../genericComponents/assets/cross.svg'\nimport { withMapReady } from '../map/map.utils'\nimport SVGIcon from '../svg/SVGIcon'\nimport { useAction } from '../utils/react-redux'\nimport useEventCallback from '../utils/useEventCallback'\nimport s from './MapEventPopin.less'\n\nconst MapEventPopin = () => {\n const mapEventPopinInfo = useSelector(selectMapEventPopin)\n const shouldDisplayMapEvenPopin = useSelector(selectShouldDisplayMapEventPopin)\n const execResetMapEventPopinInfo = useAction(resetMapEventPopin)\n\n const onClick = useEventCallback(execResetMapEventPopinInfo, [execResetMapEventPopinInfo])\n\n if (!mapEventPopinInfo || !shouldDisplayMapEvenPopin) return <>\n\n const { title, description, asset_zone, asset_event } = mapEventPopinInfo\n\n return (\n
    \n \n
    \n \n {title}\n {description}\n
    \n
    \n \n
    \n
    \n )\n}\n\nexport default withMapReady(MapEventPopin)\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"fYOJm\",\"textContainer\":\"GYDxc\",\"title\":\"Cjljx\",\"description\":\"drC_n\",\"closeButton\":\"ONgij\",\"asset\":\"sbnMM\",\"logo\":\"cyzMD\"};","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { ROUTE_360_VIEW_FULLSCREEN } from '../../routes'\nimport { navigateTo } from '../../store/history/history.actions'\nimport { selectLocale } from '../../store/locale/locale.selectors'\nimport { displayPopup, hidePopup } from '../../store/map/map.actions'\nimport { selectIsMapFullScreen } from '../../store/map/map.selectors'\nimport { displayOutdoor } from '../../store/ui/ui.actions'\nimport { selectIsOutdoorPrompted } from '../../store/ui/ui.outdoor.selectors'\nimport person from '../genericComponents/assets/person.svg'\nimport { useMapContext } from '../map/MapContext'\nimport { withMapReady } from '../map/map.utils'\nimport { POPUP_TYPE_PANO } from '../map/popup/popup.selectors'\nimport SVGIcon from '../svg/SVGIcon'\nimport { useAction } from '../utils/react-redux'\nimport useTimeout from '../utils/useTimeout'\nimport s from './UPI.less'\nimport { OUTDOOR_STATUS_PROMPT, fetchPano } from './Utils'\n\nconst UPI_SIZE = 30\nconst PREVIEW_DELAY = 500\nconst MAP_OFFSET_X = 415\nconst MAP_OFFSET_Y = 70\n\nconst useOutdoorPreviewPopup = () => {\n const execDisplayOutdoor = useAction(displayOutdoor)\n const execDisplayPopup = useAction(displayPopup)\n const execHidePopup = useAction(hidePopup)\n const locale = useSelector(selectLocale)\n\n const displayPreview = useCallback(\n coords => {\n fetchPano(coords, locale)\n .catch(() => console.debug('Pas de pano', coords))\n .then(panoData => {\n execDisplayOutdoor({ ...panoData, ...coords, status: OUTDOOR_STATUS_PROMPT })\n execDisplayPopup(POPUP_TYPE_PANO)\n })\n },\n [locale]\n )\n\n const closePreview = useCallback(() => {\n execHidePopup()\n execDisplayOutdoor({ status: OUTDOOR_STATUS_PROMPT })\n }, [])\n\n return {\n displayPreview,\n closePreview\n }\n}\n\nconst UPI = () => {\n const { map } = useMapContext()\n const isDisplayed = useSelector(selectIsOutdoorPrompted)\n const isMapFullScreen = useSelector(selectIsMapFullScreen)\n const execNavigateTo = useAction(navigateTo)\n const offsetX = isMapFullScreen ? 0 : MAP_OFFSET_X\n const locale = useSelector(selectLocale)\n\n const elementRef = useRef()\n const [coords, setCoords] = useState()\n const [setPreviewTimeout, clearPreviewTimeout] = useTimeout(PREVIEW_DELAY)\n const { displayPreview, closePreview } = useOutdoorPreviewPopup()\n\n useEffect(() => {\n if (isDisplayed) {\n follow()\n } else {\n unfollow()\n }\n }, [isDisplayed])\n\n useEffect(() => {\n if (coords) {\n closePreview()\n clearPreviewTimeout()\n setPreviewTimeout(() => displayPreview(coords))\n }\n }, [coords])\n\n const follow = () => {\n map.on('click', mapClicked)\n map.on('mousemove', mapMouseMove)\n map.getCanvas().style.cursor = 'pointer'\n document.querySelector('body').addEventListener('mousemove', bodyMouseMove)\n }\n\n const unfollow = () => {\n map.off('click', mapClicked)\n map.off('mousemove', mapMouseMove)\n map.getCanvas().style.cursor = ''\n document.querySelector('body').removeEventListener('mousemove', bodyMouseMove)\n clearPreviewTimeout()\n }\n\n const launchOutdoor = coords => {\n closePreview()\n unfollow()\n fetchPano(coords, locale)\n .then(panoData => {\n if (panoData?.panoramicId) {\n execNavigateTo({\n route: ROUTE_360_VIEW_FULLSCREEN,\n routeOptions: { panoramicId: panoData.panoramicId }\n })\n }\n })\n .catch(() => {\n follow()\n displayPreview(coords)\n })\n }\n\n const onClicked = () => {\n launchOutdoor(coords)\n }\n\n const mapClicked = event => {\n launchOutdoor(event.lngLat)\n }\n\n const mapMouseMove = useCallback(\n event => {\n setCoords(event.lngLat)\n },\n [setCoords]\n )\n\n const onMouseMove = useCallback(\n ({ x, y }) => {\n if (!elementRef.current) return\n elementRef.current.style.top = `${y - UPI_SIZE - 7}px`\n elementRef.current.style.left = `${x - UPI_SIZE / 2}px`\n },\n [elementRef.current]\n )\n\n const bodyMouseMove = useCallback(\n event => {\n const { clientX, clientY } = event\n onMouseMove({ x: clientX - offsetX, y: clientY - MAP_OFFSET_Y })\n },\n [onMouseMove, offsetX]\n )\n\n if (!isDisplayed) return <>\n\n return (\n
    \n \n
    \n )\n}\n\nexport default withMapReady(UPI)\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"J1XZZ\"};","import { useCallback } from 'react'\nimport { MAP_STORE_UPDATE_DELAY } from './map.constants'\nimport {\n GEOLOC_STATUS_ACTIVE,\n GEOLOC_STATUS_FOLLOW,\n MAPLIBRE_EVENT_MOVE,\n MAPLIBRE_EVENT_ZOOM\n} from '../../store/map/map.constants'\nimport { selectGeolocationStatus } from '../../store/map/map.selectors'\nimport { setGeolocationStatus } from '../../store/map/map.actions'\nimport { useSelector } from 'react-redux'\nimport { useAction } from '../utils/react-redux'\nimport { withMapReady } from './map.utils'\nimport { useEffectWithMapContext } from './MapContext'\nimport { debounce } from '../../utils/function'\n\nfunction Geolocation() {\n const status = useSelector(selectGeolocationStatus)\n const execSetGeolocationStatus = useAction(setGeolocationStatus)\n\n const onMapMove = useCallback(\n event => {\n const statusIsFollow = status === GEOLOC_STATUS_FOLLOW\n const moveFromUser = !event.fromAppAction && event.type === MAPLIBRE_EVENT_MOVE\n if (statusIsFollow && moveFromUser) {\n execSetGeolocationStatus(GEOLOC_STATUS_ACTIVE)\n }\n },\n [status, setGeolocationStatus]\n )\n\n const onMapMoveDelayed = debounce(onMapMove, MAP_STORE_UPDATE_DELAY)\n\n useEffectWithMapContext(map => {\n map.on(MAPLIBRE_EVENT_MOVE, onMapMoveDelayed)\n map.on(MAPLIBRE_EVENT_ZOOM, onMapMoveDelayed)\n return () => {\n map.off(MAPLIBRE_EVENT_MOVE, onMapMoveDelayed)\n map.off(MAPLIBRE_EVENT_ZOOM, onMapMoveDelayed)\n }\n }, [])\n\n return null\n}\n\nexport default withMapReady(Geolocation)\n","export default class MapLoadingError extends Error {\n constructor(e) {\n super(e)\n this.originalError = e\n this.name = 'MapLoadingError'\n }\n}\n","import { isGE } from '../Device'\nimport { DELAY_TO_TRIGGER_CONTEXTMENU_ON_MOBILE, MIN_INTERVAL_TO_DISTINGUISH_SGLE_FROM_DBL_TAP } from './map.constants'\n\nlet lastTimeout\nlet nbClick = 0\n/*\n * On double click, maplibre triggers 2 single `click` events then a `dlbclick` event...\n * Since we’re enabling fullscreen on mobile on a single click, that causes a problem.\n * The fix below handles that situation by calling default handler on single click and zooming on 2 clicks\n */\nexport const handleMobileTap = (e, mapInstance, handler, { maxZoom }) => {\n nbClick++\n if (!lastTimeout) {\n const currentZoom = mapInstance.getZoom()\n lastTimeout = setTimeout(() => {\n if (nbClick === 1) {\n handler(e)\n } else if (nbClick === 2 && currentZoom < maxZoom) {\n const where = {\n center: e.lngLat,\n zoom: currentZoom + 1\n }\n mapInstance.flyTo(where)\n }\n clearInterval(lastTimeout)\n lastTimeout = undefined\n nbClick = 0\n }, MIN_INTERVAL_TO_DISTINGUISH_SGLE_FROM_DBL_TAP)\n }\n}\n\n/*\n * https://github.com/maplibre/maplibre-gl-js/issues/373\n */\nexport const handleMobileLongTouchAsContextMenu = mapInstance => {\n if (isGE()) return\n\n let lastTimeout\n\n mapInstance.on('touchstart', e => {\n if (e.originalEvent?.touches?.length > 1) {\n clearTimeout(lastTimeout)\n return\n }\n lastTimeout = setTimeout(\n () => mapInstance.fire({ ...e, type: 'contextmenu' }),\n DELAY_TO_TRIGGER_CONTEXTMENU_ON_MOBILE\n )\n })\n mapInstance.on('touchmove', () => clearTimeout(lastTimeout))\n mapInstance.on('touchend', () => clearTimeout(lastTimeout))\n}\n","import debug from 'debug'\nimport { Map as MapLibreMap } from 'maplibre-gl'\nimport 'maplibre-gl/src/css/maplibre-gl.css'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { changeDocumentLocation } from '../../store/history/history.utils'\nimport { selectLocale } from '../../store/locale/locale.selectors'\nimport { mapDestroyed, mapResetStyle, setMapStatus, toggleFullscreen, update } from '../../store/map/map.actions'\nimport {\n MAPLIBRE_EVENT_MOVE,\n MAPLIBRE_EVENT_ZOOM,\n MAP_STATUS_INIT,\n MAP_STATUS_STYLED\n} from '../../store/map/map.constants'\nimport {\n selectCouldMapFullScreen,\n selectIsMapFullScreen,\n selectMapBbox,\n selectMapMaxZoom,\n selectMapService,\n selectMapStatus\n} from '../../store/map/map.selectors'\nimport { debounce, throttle } from '../../utils/function'\nimport { isGE } from '../Device'\nimport { getMapSessionId } from '../analytics/BiTagger'\nimport MapLoadingError from '../error/MapLoadingError'\nimport SentryService from '../error/SentryService'\nimport { isPolylineAroundPointer } from '../utils/map'\nimport { useAction } from '../utils/react-redux'\nimport { useRefFromSelector } from '../utils/selector'\nimport { addParamsToUrl } from '../utils/url'\nimport useErrorBoundaryCallback from '../utils/useErrorBoundaryCallback'\nimport s from './DynamicMap.less'\nimport { MapContext } from './MapContext'\nimport { MAP_STORE_UPDATE_DELAY, MAP_ZOOM_MIN } from './map.constants'\nimport {\n MAP_FROM_APP_ACTION_MOVE,\n MAP_FROM_APP_ACTION_PADDING,\n computeMapActiveBbox,\n computePixelsDeltaBetweenBboxes,\n computeSearchBbox,\n isWebglSupported\n} from './map.utils'\nimport { handleMobileLongTouchAsContextMenu, handleMobileTap } from './maplibre.fixes'\n\nconst d = debug('map')\n\nconst redirectToWebGLErrorPage = error => {\n const mapLoadingError = new MapLoadingError(error)\n SentryService.captureException(mapLoadingError)\n changeDocumentLocation('/erreur-support-webgl')\n}\n\n// webpack:BrowserOnly\nconst MapProvider = ({ children }) => {\n // state\n const mapInstanceRef = useRef(null)\n const mapContainerRef = useRef()\n const [mapStyleName, setMapStyleName] = useState('')\n\n // selectors\n const storeBboxRef = useRefFromSelector(selectMapBbox)\n const couldFullScreen = useSelector(selectCouldMapFullScreen)\n const isMapFullScreen = useSelector(selectIsMapFullScreen)\n const mapService = useSelector(selectMapService)\n const maxZoom = useSelector(selectMapMaxZoom)\n const mapStatus = useSelector(selectMapStatus)\n const locale = useSelector(selectLocale)\n\n // actions\n const execUpdate = useAction(update)\n const execSetMapStatus = useAction(setMapStatus)\n const execMapDestroyed = useAction(mapDestroyed)\n const execResetStyle = useAction(mapResetStyle)\n const execToggleFullscreen = useAction(toggleFullscreen)\n\n const getMapStartLocation = useCallback(() => {\n if (global.GEOIP) {\n const { lat, lng } = global.GEOIP\n delete global.GEOIP // Only at first page load\n const startLocation = {\n center: [lng, lat],\n zoom: 11\n }\n if (d.enabled) d('getMapStartLocation - GEOIP:', JSON.stringify(startLocation))\n return startLocation\n }\n const startLocation = {\n bounds: storeBboxRef.current\n }\n if (d.enabled) d('getMapStartLocation:', JSON.stringify(startLocation))\n return startLocation\n }, [])\n\n const getMapLibreglState = useCallback(\n () => ({\n bbox: mapInstanceRef.current.getBounds().toArray(),\n zoom: mapInstanceRef.current.getZoom()\n }),\n []\n )\n\n const onUpdate = useCallback((event = {}) => {\n const { fromAppAction } = event\n const { bbox, zoom } = getMapLibreglState()\n const activeBbox = computeMapActiveBbox(mapInstanceRef.current)\n const searchBbox = computeSearchBbox(mapInstanceRef.current)\n const distanceFromPreviousChange = computePixelsDeltaBetweenBboxes(\n mapInstanceRef.current,\n bbox,\n storeBboxRef.current\n )\n\n if (d.enabled) {\n d('onUpdate, distanceFromPreviousChange:', distanceFromPreviousChange, 'bbox:', bbox)\n }\n\n execUpdate({\n bbox,\n zoom,\n activeBbox,\n searchBbox,\n fromAppAction,\n distanceFromPreviousChange\n })\n }, [])\n\n const getUpdateHandler = () => {\n const delayedUpdate = debounce(onUpdate, MAP_STORE_UPDATE_DELAY)\n return (event = {}) => {\n const { fromAppAction } = event\n if (fromAppAction === MAP_FROM_APP_ACTION_PADDING) {\n onUpdate(event)\n } else {\n delayedUpdate(event)\n }\n }\n }\n\n /*\n This useEffect must be executed before the following one,\n and has no dependency with mapInstanceRef to not be re-executed when map is initialized\n */\n useEffect(() => {\n if (!mapInstanceRef.current) return\n execResetStyle()\n mapInstanceRef.current.setStyle(mapService.url)\n }, [mapService.url])\n\n const updateMapStatusOnRender = useCallback(() => {\n if (mapStatus === MAP_STATUS_STYLED) return\n if (mapInstanceRef.current.isStyleLoaded()) {\n const { name } = mapInstanceRef.current.getStyle()\n if (mapStyleName !== name) {\n setMapStyleName(name)\n execSetMapStatus(MAP_STATUS_STYLED)\n }\n }\n }, [mapStatus, mapStyleName])\n\n useEffect(() => {\n if (mapStatus === MAP_STATUS_INIT) {\n setMapStyleName('')\n }\n }, [mapStatus])\n\n useEffect(() => {\n if (!mapInstanceRef.current) return\n mapInstanceRef.current.resize()\n }, [isMapFullScreen])\n\n useEffect(() => {\n if (!isWebglSupported()) {\n redirectToWebGLErrorPage('no-webgl-support')\n return\n }\n\n const { url: style, apikey } = mapService\n const sessionId = getMapSessionId()\n\n try {\n mapInstanceRef.current = new MapLibreMap({\n container: mapContainerRef.current,\n style,\n pitchWithRotate: false,\n dragRotate: false,\n maxZoom,\n minZoom: MAP_ZOOM_MIN,\n doubleClickZoom: isGE(), // NES-1427: Differentiate single and double click « manually » on PE, see handleMobileTap method\n keyboard: true,\n attributionControl: false,\n ...getMapStartLocation(),\n transformRequest: url => {\n const params = { sessionId }\n if (apikey) params.apikey = apikey\n return { url: addParamsToUrl(url, params), headers: { 'accept-language': locale } }\n }\n })\n handleMobileLongTouchAsContextMenu(mapInstanceRef.current)\n\n mapInstanceRef.current.touchZoomRotate.disableRotation()\n\n execSetMapStatus(MAP_STATUS_INIT)\n\n const updateHandler = getUpdateHandler()\n mapInstanceRef.current.on(MAPLIBRE_EVENT_MOVE, updateHandler)\n mapInstanceRef.current.on(MAPLIBRE_EVENT_ZOOM, updateHandler)\n\n mapInstanceRef.current.once('render', () => {\n const { bbox, zoom } = getMapLibreglState()\n const activeBbox = computeMapActiveBbox(mapInstanceRef.current)\n const searchBbox = computeSearchBbox(mapInstanceRef.current)\n\n if (d.enabled) {\n d('update on first render', bbox)\n }\n\n execUpdate({\n bbox,\n zoom,\n activeBbox,\n searchBbox,\n fromAppAction: MAP_FROM_APP_ACTION_MOVE\n }) // on first render, we want to update bbox in store (which may be France if geoip was used)\n })\n\n return () => {\n mapInstanceRef.current.off('render', updateMapStatusOnRender)\n mapInstanceRef.current.remove()\n execMapDestroyed()\n }\n } catch (e) {\n redirectToWebGLErrorPage(e)\n }\n }, [])\n\n useEffect(() => {\n const throttledUpdateMapStyle = throttle(updateMapStatusOnRender, 100)\n if (mapInstanceRef.current) {\n mapInstanceRef.current.on('render', throttledUpdateMapStyle)\n return () => {\n mapInstanceRef.current.off('render', throttledUpdateMapStyle)\n }\n }\n }, [updateMapStatusOnRender])\n\n const onMapTouchEvent = useErrorBoundaryCallback(\n e => {\n if (!e.handled && couldFullScreen && !isPolylineAroundPointer(mapInstanceRef.current, e)) {\n e.handled = true\n execToggleFullscreen()\n }\n },\n [couldFullScreen, isPolylineAroundPointer]\n )\n\n const mobileTapHandler = useErrorBoundaryCallback(\n e => {\n handleMobileTap(e, mapInstanceRef.current, onMapTouchEvent, { maxZoom })\n },\n [onMapTouchEvent]\n )\n\n useEffect(() => {\n if (!mapInstanceRef.current || isGE()) return\n\n mapInstanceRef.current.on('click', mobileTapHandler)\n return () => {\n mapInstanceRef.current.off('click', mobileTapHandler)\n }\n }, [mobileTapHandler, mapInstanceRef.current])\n\n return (\n \n
    \n {children}\n
    \n
    \n )\n}\n\nexport default MapProvider\n","// extracted by mini-css-extract-plugin\nexport default {\"DynamicMap\":\"iCSnM\",\"patchDesktopMapBorders\":\"VIvf7\"};","import React, { useCallback } from 'react'\nimport { TAG_CLICK_CONTEXT_MENU } from '../../../store/analytics/analytics.actionTypes'\nimport { ACTION } from '../../analytics/ClickTagsService'\nimport s from './ContextMenu.less'\nimport TagActionButton from '../../genericComponents/TagActionButton'\nimport { useContextMenu } from './ContextMenu'\n\nconst ContextMenuItem = ({ tagAction, label, clickAction }) => {\n const { point } = useContextMenu()\n\n const clickHandler = useCallback(() => {\n // do not stop propagation, so the menu can close\n clickAction(point)\n }, [point])\n\n return (\n \n {label}\n \n )\n}\n\nexport default ContextMenuItem\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"zIyn6\",\"item\":\"cZRvE\"};","import React from 'react'\nimport ContextMenuItem from './ContextMenuItem'\nimport { AFFICHER_ADRESSE } from './contextmenu.constants'\nimport { useT } from '../../i18n/T'\nimport { useAction } from '../../utils/react-redux'\nimport { searchAddressFromPoint } from '../../../store/address/address.actions'\n\nconst ContextMenuItemShowAddress = () => {\n const label = useT('map.context-menu.show-address')\n const searchAddressFromPointAction = useAction(searchAddressFromPoint)\n\n return \n}\n\nexport default ContextMenuItemShowAddress\n","export const CLIC_DROIT = 'Clic_droit'\nexport const AFFICHER_ADRESSE = 'Afficher_l_adresse'\nexport const AFFICHER_VILLE = 'Afficher_la_ville'\nexport const AFFICHER_DEPARTEMENT = 'Afficher_le_departement'\nexport const AFFICHER_REGION = 'Afficher_la_region'\nexport const ITINERAIRE_DEPUIS = 'Itinéraire_depuis_ce_lieu'\nexport const ITINERAIRE_VERS = 'Itinéraire_vers_ce_lieu'\nexport const AJOUTER_ETAPE = 'Ajouter_une_etape_ici'\n","import { findAddressforGeolocation } from '../../../dataSource/address/address.request'\n\nexport const findAddressFromPoint = payload =>\n findAddressforGeolocation(payload).then(({ addresses }) => {\n if (addresses.length < 1) return Promise.reject(new Error('No address found at this point !'))\n return addresses[0]\n })\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { ROUTE_ITINERARY_TO } from '../../../routes'\nimport { navigateTo } from '../../../store/history/history.actions'\nimport { selectIsItineraryUniverse } from '../../../store/history/history.selectors'\nimport { setArrivalFromPoint } from '../../../store/itinerary/itinerary.actions'\nimport { selectLocale } from '../../../store/locale/locale.selectors'\nimport { useT } from '../../i18n/T'\nimport { useAction } from '../../utils/react-redux'\nimport ContextMenuItem from './ContextMenuItem'\nimport { ITINERAIRE_VERS } from './contextmenu.constants'\nimport { findAddressFromPoint } from './contextmenu.utils'\n\nconst ContextMenuItemItineraryTo = () => {\n const label = useT('map.context-menu.go-to-itinerary')\n const execSetArrivalFromPoint = useAction(setArrivalFromPoint)\n const itineraryUniverse = useSelector(selectIsItineraryUniverse)\n const navigateToAction = useAction(navigateTo)\n const locale = useSelector(selectLocale)\n\n const navigateToItineraryTo = address => {\n navigateToAction({\n route: ROUTE_ITINERARY_TO,\n routeOptions: {\n to: address.label,\n toAddress: address,\n avoidReset: true\n }\n })\n }\n\n const onItineraryTo = point => {\n if (itineraryUniverse) {\n execSetArrivalFromPoint(point).catch(e => console.error(e))\n } else {\n findAddressFromPoint({ ...point, locale })\n .then(address => navigateToItineraryTo(address))\n .catch(e => console.error(e))\n }\n }\n\n return \n}\n\nexport default ContextMenuItemItineraryTo\n","import React from 'react'\nimport ContextMenuItem from './ContextMenuItem'\nimport { ITINERAIRE_DEPUIS } from './contextmenu.constants'\nimport { useT } from '../../i18n/T'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport { setDepartureFromPoint } from '../../../store/itinerary/itinerary.actions'\nimport { selectIsItineraryUniverse } from '../../../store/history/history.selectors'\n\nconst ContextMenuItemItineraryFrom = () => {\n const label = useT('map.context-menu.go-from-itinerary')\n const execSetDepartureFromPoint = useAction(setDepartureFromPoint)\n\n const onItineraryFrom = point => {\n execSetDepartureFromPoint(point).catch(e => console.error(e))\n }\n\n return \n}\n\nexport default withEverySelectorTruthy(selectIsItineraryUniverse)(ContextMenuItemItineraryFrom)\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsAnItineraryResultPage } from '../../../store/history/history.selectors'\nimport { addStep, setStepFromAddress, setStepIdx } from '../../../store/itinerary/itinerary.actions'\nimport { selectLocale } from '../../../store/locale/locale.selectors'\nimport { useT } from '../../i18n/T'\nimport { selectStepsLength } from '../../itinerary/steps/steps.selectors'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport ContextMenuItem from './ContextMenuItem'\nimport { AJOUTER_ETAPE } from './contextmenu.constants'\nimport { findAddressFromPoint } from './contextmenu.utils'\n\nconst ContextMenuItemItineraryAddStep = () => {\n const label = useT('map.context-menu.add-step-itinerary')\n const execAddStep = useAction(addStep)\n const execSetStepIdx = useAction(setStepIdx)\n const execSetStepFromAddress = useAction(setStepFromAddress)\n const stepsLength = useSelector(selectStepsLength)\n const locale = useSelector(selectLocale)\n\n const onAddStep = point => {\n findAddressFromPoint({ ...point, locale })\n .then(address => {\n execAddStep()\n execSetStepIdx({ idx: stepsLength - 1 })\n execSetStepFromAddress(address)\n })\n .catch(e => console.error(e))\n }\n\n return \n}\n\nexport default withEverySelectorTruthy(selectIsAnItineraryResultPage)(ContextMenuItemItineraryAddStep)\n","import React from 'react'\nimport ContextMenuItem from './ContextMenuItem'\nimport { AFFICHER_VILLE } from './contextmenu.constants'\nimport { useT } from '../../i18n/T'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport { searchCityFromPoint } from '../../../store/address/address.actions'\nimport { selectIsPlacesUniverse } from '../../../store/history/history.selectors'\n\nconst ContextMenuItemShowCity = () => {\n const label = useT('map.context-menu.show-city')\n const execSearchLocation = useAction(searchCityFromPoint)\n\n return \n}\n\nexport default withEverySelectorTruthy(selectIsPlacesUniverse)(ContextMenuItemShowCity)\n","import React from 'react'\nimport ContextMenuItem from './ContextMenuItem'\nimport { AFFICHER_DEPARTEMENT } from './contextmenu.constants'\nimport { useT } from '../../i18n/T'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport { searchDepartmentFromPoint } from '../../../store/address/address.actions'\nimport { selectIsPlacesUniverse } from '../../../store/history/history.selectors'\n\nconst ContextMenuItemShowCity = () => {\n const label = useT('map.context-menu.show-department')\n const execSearchLocation = useAction(searchDepartmentFromPoint)\n\n return \n}\n\nexport default withEverySelectorTruthy(selectIsPlacesUniverse)(ContextMenuItemShowCity)\n","import React from 'react'\nimport ContextMenuItem from './ContextMenuItem'\nimport { AFFICHER_REGION } from './contextmenu.constants'\nimport { useT } from '../../i18n/T'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport { searchRegionFromPoint } from '../../../store/address/address.actions'\nimport { selectIsPlacesUniverse } from '../../../store/history/history.selectors'\n\nconst ContextMenuItemShowCity = () => {\n const label = useT('map.context-menu.show-region')\n const execSearchLocation = useAction(searchRegionFromPoint)\n\n return \n}\n\nexport default withEverySelectorTruthy(selectIsPlacesUniverse)(ContextMenuItemShowCity)\n","import React, { useCallback, useContext, useEffect, useState } from 'react'\nimport { useEffectWithMapContext, useMapContext } from '../MapContext'\nimport { selectCurrentHistoryRoute } from '../../../store/history/history.selectors'\nimport { useSelector } from 'react-redux'\nimport { withMapReady } from '../map.utils'\nimport s from './ContextMenu.less'\nimport { TAG_CLICK_CONTEXT_MENU } from '../../../store/analytics/analytics.actionTypes'\nimport { ACTION } from '../../analytics/ClickTagsService'\nimport useImpressionTag from '../../analytics/useImpressionTag'\nimport useEventCallback from '../../utils/useEventCallback'\nimport ContextMenuItemShowAddress from './ContextMenuItemShowAddress'\nimport ContextMenuItemItineraryTo from './ContextMenuItemItineraryTo'\nimport ContextMenuItemItineraryFrom from './ContextMenuItemItineraryFrom'\nimport ContextMenuItemItineraryAddStep from './ContextMenuItemItineraryAddStep'\nimport { CLIC_DROIT } from './contextmenu.constants'\nimport ContextMenuItemShowCity from './ContextMenuItemShowCity'\nimport ContextMenuItemShowDepartment from './ContextMenuItemShowDepartment'\nimport ContextMenuItemShowRegion from './ContextMenuItemShowRegion'\nimport { selectMapBbox } from '../../../store/map/map.selectors'\nimport { selectShouldDisplayContextMenu } from '../../../store/ui/ui.selectors'\n\nconst LocalContext = React.createContext({ point: null })\n\nexport const useContextMenu = () => useContext(LocalContext)\n\nexport function getStyle(event, canvas) {\n const { clientWidth: canvasWidth, clientHeight: canvasHeight } = canvas\n\n const width = 160\n const height = 60\n const top = event.point.y\n const left = event.point.x\n return {\n top: top + height > canvasHeight ? top - height : top,\n left: left + width > canvasWidth ? left - width : left,\n width\n }\n}\n\nexport function ContextMenu() {\n const { map } = useMapContext()\n const currentRoute = useSelector(selectCurrentHistoryRoute)\n const bbox = useSelector(selectMapBbox)\n const [event, setEvent] = useState()\n const shouldDisplay = useSelector(selectShouldDisplayContextMenu)\n\n const closeContextMenu = useCallback(() => {\n setEvent(null)\n }, [])\n\n const onContextMenu = useCallback(\n event => {\n setEvent(event)\n map.once('click', closeContextMenu)\n },\n [setEvent, closeContextMenu]\n )\n\n useEffectWithMapContext(\n map => {\n map.on('contextmenu', onContextMenu)\n\n return () => {\n map.off('contextmenu', onContextMenu)\n }\n },\n [onContextMenu]\n )\n\n useEffect(() => closeContextMenu, [currentRoute, bbox, closeContextMenu])\n useImpressionTag(event, { type: TAG_CLICK_CONTEXT_MENU, tagInfo: { [ACTION]: CLIC_DROIT } })\n\n const menuClickHandler = useEventCallback(closeContextMenu, [closeContextMenu])\n\n if (!event || !shouldDisplay) return <>\n\n return (\n
    \n \n \n \n \n \n \n \n \n \n
    \n )\n}\n\nexport default withMapReady(ContextMenu)\n","import { useEffect } from 'react'\nimport { dispatchTag } from '../../store/analytics/analytics.actions'\nimport { useAction } from '../utils/react-redux'\n\nconst useImpressionTag = (condition, { type, tagInfo }) => {\n const execDispatchTag = useAction(dispatchTag)\n\n useEffect(() => {\n if (condition) {\n execDispatchTag({\n type,\n tagInfo,\n isImpression: true\n })\n }\n }, [condition])\n}\n\nexport default useImpressionTag\n","import React from 'react'\nimport s from './FPS.less'\n\nfunction now() {\n return (performance || Date)['now']()\n}\n\nclass FPS extends React.Component {\n constructor(props) {\n super(props)\n this.state = { ...props, fps: '', stop: false }\n }\n\n componentDidMount() {\n this.compute()\n }\n\n componentWillUnmount() {\n this.setState({ stop: true })\n clearInterval(this._interval)\n }\n\n compute() {\n this.count = 0\n this.then = now()\n\n function count() {\n if (this.state.stop) return\n this.count++\n\n requestAnimationFrame(count.bind(this))\n }\n\n requestAnimationFrame(count.bind(this))\n\n this._interval = setInterval(this.updateFpsCount.bind(this), 600)\n }\n\n updateFpsCount() {\n const deltaTime = now() - this.then\n const fps = this.count / (deltaTime * 0.001)\n\n this.setState({ fps: fps.toFixed(1) + ' fps' })\n\n this.then = now()\n this.count = 0\n }\n\n render() {\n return
    {this.state.fps}
    \n }\n}\n\nexport default FPS\n","// extracted by mini-css-extract-plugin\nexport default {\"main\":\"DSU7Z\"};","import React, { useEffect } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectViewport } from '../../../store/address/address.selectors'\nimport { selectCurrentPolylineBbox } from '../../../store/itinerary/polylines.selectors'\nimport {\n selectIsMapReady,\n selectMapActiveBbox,\n selectMapBbox,\n selectMapSearchBbox\n} from '../../../store/map/map.selectors'\nimport { isEmpty } from '../../../utils/lang'\nimport { selectStepsCoordinates } from '../../itinerary/steps/steps.selectors'\nimport { getBboxFromLngLatPoints } from '../../utils/map'\nimport { useMapContext } from '../MapContext'\nimport { bboxArrayToBboxArrays } from '../conversion'\n\nconst BboxDebugger = ({ bbox, id, fillColor = '#088' }) => {\n const { map } = useMapContext()\n const isMapReady = useSelector(selectIsMapReady)\n\n useEffect(() => {\n if (!map || !isMapReady || !bbox || !id) return\n\n const debugId = `${id}_debug_id`\n\n const [[x1, y1], [x2, y2]] = bbox\n const p1 = [Math.min(x1, x2), Math.min(y1, y2)]\n const p2 = [Math.max(x1, x2), Math.min(y1, y2)]\n const p3 = [Math.max(x1, x2), Math.max(y1, y2)]\n const p4 = [Math.min(x1, x2), Math.max(y1, y2)]\n\n const data = {\n type: 'Feature',\n geometry: {\n type: 'Polygon',\n coordinates: [[p1, p2, p3, p4, p1]]\n }\n }\n try {\n if (!isEmpty(map.getLayer(debugId))) {\n map.getSource(debugId).setData(data)\n } else {\n map.addLayer({\n id: debugId,\n type: 'fill',\n source: {\n type: 'geojson',\n data\n },\n paint: {\n 'fill-color': fillColor,\n 'fill-opacity': 0.3\n }\n })\n }\n } catch (error) {\n console.error('failed to getLayer', error)\n }\n\n return () => {\n try {\n if (map.getLayer(debugId)) {\n map.removeLayer(debugId)\n map.removeSource(debugId)\n }\n } catch (error) {\n console.error('failed to getLayer', error)\n }\n }\n }, [map, bbox?.toString(), id, isMapReady])\n\n return <>\n}\n\nexport const ViewportDebugger = () => {\n const bbox = bboxArrayToBboxArrays(useSelector(selectViewport))\n return \n}\n\nexport const MapBboxDebugger = () => {\n const bbox = useSelector(selectMapBbox)\n return \n}\n\nexport const ActiveBboxDebugger = () => {\n const bbox = useSelector(selectMapActiveBbox)\n return \n}\n\nexport const SearchBboxDebugger = () => {\n const bbox = useSelector(selectMapSearchBbox)\n return \n}\n\nexport const StepsDebugger = () => {\n const { departure, arrival } = useSelector(selectStepsCoordinates)\n const bbox = departure && arrival ? getBboxFromLngLatPoints([departure, arrival]) : null\n return \n}\n\nexport const PolylineDebugger = () => {\n const bbox = useSelector(selectCurrentPolylineBbox)\n return \n}\n","import React from 'react'\nimport { useMapContext } from '../MapContext'\nimport s from '../tools/ZoomButtons.less'\n\nexport default function ZoomDebugger() {\n const mapContext = useMapContext()\n const rawZoom = mapContext.map?.getZoom?.() || 0\n const zoom = Math.floor(rawZoom * 1000) / 1000\n\n return
    Zoom: {zoom}
    \n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"jiQFc\",\"ZoomButtons\":\"crKZR\",\"withMapEvent\":\"BaqIz\",\"ZoomButton\":\"u75NN\",\"ZoomInButton\":\"kWCY5\",\"ZoomOutButton\":\"r24Pa\",\"tooltip\":\"ZSPrw\",\"ZoomDebugger\":\"O4_7L\"};","import React, { useEffect } from 'react'\nimport {\n getFromLocalStorage,\n loadJSONFromLocalStorage,\n saveJSONInLocalStorage\n} from '../../../utils/browserStorageService'\nimport FPS from './FPS'\nimport {\n ActiveBboxDebugger,\n MapBboxDebugger,\n PolylineDebugger,\n SearchBboxDebugger,\n StepsDebugger,\n ViewportDebugger\n} from './BboxDebugger'\nimport ZoomDebugger from './ZoomDebugger'\nimport { useEffectWithMapContext } from '../MapContext'\n\nconst mapDebuggerAPI = {\n map: null,\n ui: {\n zoom: true,\n viewport: false,\n bbox: false,\n steps: false,\n polyline: false,\n activebbox: false,\n searchbbox: false,\n fps: true\n }\n}\n\nconst PREFERENCES_KEY = 'map_debug_parameters'\n\nconst MapDebuggerComponent = () => {\n useEffect(() => {\n window.mapDebugger = mapDebuggerAPI\n mapDebuggerAPI.setUIItem = (prop, show) => {\n mapDebuggerAPI.ui[prop] = show\n saveJSONInLocalStorage(PREFERENCES_KEY, { ui: mapDebuggerAPI.ui })\n }\n mapDebuggerAPI.show = prop => mapDebuggerAPI.setUIItem(prop, true)\n mapDebuggerAPI.hide = prop => mapDebuggerAPI.setUIItem(prop, false)\n const preferences = loadJSONFromLocalStorage(PREFERENCES_KEY)\n if (preferences && preferences.ui) mapDebuggerAPI.ui = preferences.ui\n return () => {\n delete window.mapDebugger\n }\n }, [])\n\n useEffectWithMapContext(map => {\n mapDebuggerAPI.map = map\n }, [])\n\n const { ui } = mapDebuggerAPI\n\n return (\n <>\n {ui.zoom && }\n {ui.viewport && }\n {ui.bbox && }\n {ui.activebbox && }\n {ui.searchbbox && }\n {ui.steps && }\n {ui.polyline && }\n {ui.fps && }\n \n )\n}\n\nexport default function MapDebugger() {\n return getFromLocalStorage('debugMap') ? : null\n}\n","import React from 'react'\nimport greyMarker from './marker-grey.png'\nimport Marker from './Marker'\nimport s from './AddressMarker.less'\nimport { ADDRESS_BIG_MARKER_HEIGHT, ADDRESS_BIG_MARKER_WIDTH, IMAGE_MARKER } from './MarkerConstants'\nimport { withMapReady } from '../map.utils'\n\nexport default withMapReady(function AddressMarker({ coordinates, onClick }) {\n return (\n \n )\n})\n","// extracted by mini-css-extract-plugin\nexport default {\"addressMarker\":\"nVXti\"};","import { setSingleAddress } from '../address/address.actions'\nimport { selectIsItineraryUniverse } from '../history/history.selectors'\nimport { setStepFromAddress } from '../itinerary/itinerary.actions'\n\nexport const setAmbiguityAddress = address => (dispatch, getState) => {\n const isItineraryRoute = selectIsItineraryUniverse(getState())\n\n return isItineraryRoute\n ? setStepFromAddress(address)(dispatch, getState)\n : setSingleAddress(address)(dispatch, getState)\n}\n","import React from 'react'\nimport { displayPopup, hidePopup } from '../../../store/map/map.actions'\nimport { selectAddresses, selectAddressContour } from '../../../store/address/address.selectors'\nimport { POPUP_TYPE_ADDRESS } from '../popup/popup.selectors'\nimport AddressMarker from './AddressMarker'\nimport { useSelector } from 'react-redux'\nimport { selectPopupType } from '../../../store/map/map.selectors'\nimport { useAction } from '../../utils/react-redux'\nimport { setAmbiguityAddress } from '../../../store/location/location.actions'\n\nconst AddressMarkersContainer = () => {\n const addresses = useSelector(selectAddresses)\n const popupType = useSelector(selectPopupType)\n const execHidePopup = useAction(hidePopup)\n const execDisplayPopupAddress = useAction(displayPopup)\n const execSetAmbiguityAddress = useAction(setAmbiguityAddress)\n\n const handleClickMarker = address => () => {\n if (addresses.length > 1) {\n execSetAmbiguityAddress(address)\n } else {\n popupType === POPUP_TYPE_ADDRESS ? execHidePopup() : execDisplayPopupAddress(POPUP_TYPE_ADDRESS)\n }\n }\n\n const contour = useSelector(selectAddressContour)\n\n if (!addresses?.length || contour) return <>\n\n return (\n
    \n {addresses.map(address => {\n const {\n coordinates: { lat, lng }\n } = address\n return \n })}\n
    \n )\n}\n\nexport default AddressMarkersContainer\n","import React, { useEffect, useRef, useState } from 'react'\nimport { useMapContext } from '../MapContext'\nimport img from './geolocation_marker_x2.png'\nimport s from './GeolocMarker.less'\nimport { selectIsGeoLocationOn, selectGeolocationPosition } from '../../../store/map/map.selectors'\nimport { useSelector } from 'react-redux'\nimport { useCompass } from '../../utils/useCompass'\nimport { withMapReady } from '../map.utils'\nimport { withEmptyFallbackErrorBoundary } from '../../error/EmptyFallbackErrorBoundary'\nimport { Marker as MapLibreMarker } from 'maplibre-gl'\nimport { isEqual } from '../../../utils/lang'\n\nfunction GeolocMarker() {\n const { map } = useMapContext()\n\n const position = useSelector(selectGeolocationPosition)\n const geolocationOn = useSelector(selectIsGeoLocationOn)\n\n const [coords, setCoords] = useState(null)\n const [marker, setMarker] = useState(null)\n\n const rotation = useCompass(geolocationOn)\n\n const refDiv = useRef()\n\n useEffect(() => {\n if (geolocationOn && position && marker && !isEqual(coords, position)) {\n marker.setLngLat(position)\n setCoords(position)\n }\n }, [geolocationOn, position])\n\n useEffect(() => {\n if (geolocationOn && !marker && position) {\n const m = new MapLibreMarker({\n element: refDiv.current,\n anchor: 'center'\n })\n .setLngLat(position)\n .addTo(map)\n\n setMarker(m)\n }\n }, [geolocationOn, position])\n\n useEffect(\n () => () => {\n if (marker) marker.remove()\n },\n [marker]\n )\n\n if (!geolocationOn || !position) return <>\n\n return (\n
    \n {/* That previous div before refDiv is very important to avoid a crash on umount, see NES-2421 */}\n
    \n \n
    \n
    \n )\n}\n\nexport default withEmptyFallbackErrorBoundary(withMapReady(GeolocMarker))\n","import { useCallback, useEffect, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsMapReady } from '../../store/map/map.selectors'\n\n/*\n * useCompass gets phone orientation angle relative to north.\n * This allows to turn the the geolocation marker according the current user direction.\n *\n * Current code work on Android with Chrome & Firefox.\n *\n * It could work on iOS but we should ask permission via DeviceOrientationEvent.requestPermission on iOS 13+\n *\n * Useful links :\n * - https://dev.to/orkhanjafarovr/real-compass-on-mobile-browsers-with-javascript-3emi\n * - https://caniuse.com/?search=deviceorientationabsolute\n * - https://dev.to/li/how-to-requestpermission-for-devicemotion-and-deviceorientation-events-in-ios-13-46g2\n */\nexport function useCompass(activated) {\n const mapReady = useSelector(selectIsMapReady)\n const [rotation, setRotation] = useState(0)\n\n const compassHandler = useCallback(e => {\n if (!e.absolute) return\n setRotation(-(e.alpha || 0).toFixed(0))\n }, [])\n\n useEffect(() => {\n if (mapReady && activated) {\n const eventName = 'deviceorientationabsolute'\n window.addEventListener(eventName, compassHandler, true)\n return () => {\n window.removeEventListener(eventName, compassHandler)\n }\n }\n }, [mapReady, activated, compassHandler])\n return rotation\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"imgMarker\":\"djFro\"};","import React, { useEffect, useState } from 'react'\nimport ReactDOM from 'react-dom'\nimport { useMapContext } from '../MapContext'\nimport { Popup as MapLibrePopup } from 'maplibre-gl'\nimport s from './Popup.less'\nimport { isPE } from '../../Device'\nimport PopupPano from './PopupPano'\nimport {\n POPUP_TYPE_PANO,\n POPUP_TYPE_POI,\n POPUP_TYPE_ADDRESS,\n selectPopupData,\n selectShouldDisplayPopup\n} from './popup.selectors'\nimport PopupPoi from './PopupPoi'\nimport PopupAddress from './PopupAddress'\nimport { withEmptyFallbackErrorBoundary } from '../../error/EmptyFallbackErrorBoundary'\nimport { withMapReady } from '../map.utils'\nimport { useSelector } from 'react-redux'\nimport { useAction } from '../../utils/react-redux'\nimport { hidePopup } from '../../../store/map/map.actions'\n\n// webpack:BrowserOnly\n\nconst popupDataAreComplete = ({ offset, coords, type }) => type && offset && coords && coords.lat && coords.lng\n\nconst getChild = type => {\n switch (type) {\n case POPUP_TYPE_PANO:\n return \n case POPUP_TYPE_POI:\n return \n case POPUP_TYPE_ADDRESS:\n return \n default:\n return null // 'null' is important to have a falsy return\n }\n}\n\nconst POPUP_ID = 'mapPopupWrapper'\n\nconst useMapLibrePopup = () => {\n const popupData = useSelector(selectPopupData)\n const shouldHavePopup = popupDataAreComplete(popupData)\n const [hasPopup, setHasPopup] = useState(0)\n const { type, coords, offset, anchor, maxWidth, withIllustration } = popupData\n const { map } = useMapContext()\n const execHidePopup = useAction(hidePopup)\n\n useEffect(() => {\n if (!shouldHavePopup) return\n\n const popupTypeClass = ` popup-${type}`\n const withIllustrationClass = withIllustration ? ' with-illustration' : ''\n\n const mapLibrePopup = new MapLibrePopup({\n offset,\n closeButton: false,\n className: `${s.popup}${popupTypeClass}${withIllustrationClass}`,\n anchor,\n maxWidth\n })\n\n mapLibrePopup.setLngLat(coords).setHTML(`
    `).addTo(map)\n\n setHasPopup(Date.now())\n\n return () => {\n mapLibrePopup.remove()\n setHasPopup(0)\n }\n }, [shouldHavePopup])\n\n useEffect(() => {\n const clickHandler = () => {\n execHidePopup()\n }\n map.on('click', clickHandler)\n\n return () => {\n map.off('click', clickHandler)\n }\n }, [execHidePopup])\n\n return hasPopup && POPUP_ID\n}\n\nconst PortalPopup = ({ children }) => {\n const popupId = useMapLibrePopup()\n\n if (!popupId) return <>\n\n const domNode = document.querySelector(`#${popupId}`)\n if (!domNode) return <>\n return ReactDOM.createPortal(children, domNode)\n}\n\nconst Popup = () => {\n const { type } = useSelector(selectPopupData)\n const child = getChild(type)\n const shouldDisplayPopup = useSelector(selectShouldDisplayPopup)\n\n if (!shouldDisplayPopup || !child) return <>\n if (isPE() && type === POPUP_TYPE_ADDRESS) return <>\n\n return isPE() ?
    {child}
    : {child}\n}\n\nexport default withEmptyFallbackErrorBoundary(withMapReady(Popup))\n","// extracted by mini-css-extract-plugin\nexport default {\"popup\":\"Ws2e0\",\"popupPE\":\"o0wVq\"};","import { requestZoom } from '../../../store/map/map.actions'\nimport { noop } from '../../../utils/function'\nimport { isGE } from '../../Device'\nimport { useAction } from '../../utils/react-redux'\nimport useTimeout from '../../utils/useTimeout'\nimport { useCallbackWithMapContext, useEffectWithMapContext } from '../MapContext'\nimport { MAP_RASTER_ZOOM_MAX, MAP_ZOOM_MIN, MAP_ZOOM_STEP } from '../map.constants'\nimport { getMapActiveDimensions } from '../map.utils'\n\nconst zoomThreshold = isGE() ? 0.9 : 0.8\nconst stripDecimal = val => (val - Math.floor(val) > zoomThreshold ? Math.round(val) : Math.floor(val))\n\nexport const fixZoomMethods = map => {\n const methodsToOverride = ['flyTo', 'zoomTo', 'easeTo', 'jumpTo', 'setZoom']\n methodsToOverride.forEach(methodName => {\n const originalMethod = map[methodName]\n map[`original${methodName}`] = originalMethod\n map[methodName] = (...args) => {\n const zoomAsFirstArg = typeof args[0] === 'number'\n if (zoomAsFirstArg) {\n args[0] = stripDecimal(args[0])\n } else if (args[0].zoom && typeof args[0].zoom === 'number') {\n args[0].zoom = stripDecimal(args[0].zoom)\n }\n return originalMethod.apply(map, args)\n }\n })\n}\n\nexport default function useIntegerZoom() {\n const execRequestZoom = useAction(requestZoom)\n const [setTouchTimeout, clearTouchTimeout, isTouchTimeoutPending] = useTimeout(300)\n\n const zoomTo = useCallbackWithMapContext((map, z, options = {}) => {\n if (!options.duration) options.duration = 400\n const increase = z > map.getZoom()\n if (increase) {\n z = Math.ceil(z)\n if (z > MAP_RASTER_ZOOM_MAX) z = MAP_RASTER_ZOOM_MAX\n } else {\n z = Math.floor(z)\n if (z < MAP_ZOOM_MIN) z = MAP_ZOOM_MIN\n }\n map.zoomTo(z, options)\n })\n\n const getZoomOffset = useCallbackWithMapContext((map, event) => {\n const padding = map.getPadding()\n const { width, height } = getMapActiveDimensions(map)\n const centerX = width / 2 + padding.left\n const centerY = height / 2 + padding.top\n const x = event?.originalEvent?.layerX ?? centerX\n const y = event?.originalEvent?.layerY ?? centerY\n return [x - centerX, y - centerY]\n }, [])\n\n const handleInitialZoom = useCallbackWithMapContext(map => {\n const zoom = stripDecimal(map.getZoom())\n execRequestZoom({ zoom })\n })\n\n const handleWheel = useCallbackWithMapContext(\n (map, event) => {\n let delta = MAP_ZOOM_STEP\n if (event.originalEvent.deltaY > 0) delta *= -1\n const z = map.getZoom() + delta\n zoomTo(z, { offset: getZoomOffset(event) })\n },\n [getZoomOffset]\n )\n\n const handleDblClick = useCallbackWithMapContext((map, event) => {\n let delta = MAP_ZOOM_STEP\n if (event.originalEvent.shiftKey) delta *= -1\n zoomTo(map.getZoom() + delta, { around: event.lngLat })\n })\n\n const handleTouch = useCallbackWithMapContext(\n (map, event) => {\n if (!isTouchTimeoutPending()) {\n setTouchTimeout(noop)\n return\n }\n clearTouchTimeout()\n handleDblClick(event)\n },\n [isTouchTimeoutPending]\n )\n\n useEffectWithMapContext(map => {\n fixZoomMethods(map)\n map.once('styledata', handleInitialZoom)\n map.on('wheel', event => handleWheel(event))\n map.on('touch', event => handleTouch(event))\n map.scrollZoom.disable()\n map.doubleClickZoom.disable()\n if (isGE()) map.on('dblclick', event => handleDblClick(event))\n }, [])\n\n return null\n}\n","import { useEffect } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectMapTargetData } from '../../store/map/map.selectors'\nimport { useMapContext } from './MapContext'\nimport { useAction } from '../utils/react-redux'\nimport { acknowledgeZoom } from '../../store/map/map.actions'\n\nexport default function useMapZoomHandler() {\n const { targetZoom } = useSelector(selectMapTargetData)\n const { map } = useMapContext()\n const execAcknowledgeZoom = useAction(acknowledgeZoom)\n\n useEffect(() => {\n if (!map || !targetZoom) return\n\n execAcknowledgeZoom()\n\n map.zoomTo(targetZoom)\n }, [map, targetZoom])\n}\n","import { setTag, startTransaction, configureScope } from '@sentry/react'\nimport { useSelector } from 'react-redux'\nimport { selectIsVectorMap } from '../../store/map/map.selectors'\nimport { useAction } from '../utils/react-redux'\nimport { sendMapLoadingTime } from '../../store/map/map.actions'\nimport debug from 'debug'\nimport { useEffectWithMapContext } from './MapContext'\nimport { isWebglSupported } from './map.utils'\n\nconst d = debug('map')\n\nconst useMapPerfMetrics = () => {\n const vectorMap = useSelector(selectIsVectorMap)\n const execFinishMapLoading = useAction(sendMapLoadingTime)\n\n useEffectWithMapContext(map => {\n setTag('mapType', vectorMap ? 'vector' : 'raster')\n\n const mapHasGoodSupport = isWebglSupported()\n if (d.enabled) d('goodSupport', mapHasGoodSupport)\n setTag('mapGoodSupport', String(mapHasGoodSupport))\n\n const transaction = startTransaction({ name: 'map' })\n configureScope(scope => scope.setTransactionName('map'))\n\n const spanStyle = transaction.startChild({ op: 'style' })\n const spanLoad = transaction.startChild({ op: 'load' })\n map.once('styledata', () => {\n spanStyle.finish()\n })\n map.once('load', () => {\n spanLoad.finish()\n transaction.finish()\n\n const { startTimestamp = 0, endTimestamp = 0 } = spanLoad\n const loadTime = endTimestamp - startTimestamp\n if (d.enabled) d('loadTime:', loadTime)\n execFinishMapLoading({ loadTime, mapHasGoodSupport })\n })\n }, [])\n}\n\nexport default useMapPerfMetrics\n","import { useEffect } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectMapTargetData, selectIsMapReady } from '../../store/map/map.selectors'\nimport { useMapContext } from './MapContext'\nimport { useAction } from '../utils/react-redux'\nimport { acknowledgeMove } from '../../store/map/map.actions'\nimport { bboxIsValid, MAP_FROM_APP_ACTION_MOVE } from './map.utils'\nimport { GEOLOC_MOVE_FROM_INITIAL } from '../../store/map/map.constants'\nimport SentryService from '../error/SentryService'\nimport debug from 'debug'\n\nconst d = debug('map')\n\nconst useMapMoveHandler = () => {\n const { targetBbox, targetCenter, targetOptions = {} } = useSelector(selectMapTargetData)\n const { map } = useMapContext()\n const execAcknowledgeMove = useAction(acknowledgeMove)\n const mapReady = useSelector(selectIsMapReady)\n\n useEffect(() => {\n if (!map || (!targetBbox && !targetCenter)) return\n\n execAcknowledgeMove()\n\n let move\n const options = {\n ...targetOptions,\n animate: !targetOptions.avoidAnimation,\n ...(targetOptions.withFastAnimation\n ? {\n easing: t => 1 - Math.pow(1 - t, 13)\n }\n : {})\n }\n\n const eventData = targetOptions.from === GEOLOC_MOVE_FROM_INITIAL ? {} : { fromAppAction: MAP_FROM_APP_ACTION_MOVE }\n\n if (d.enabled) {\n if (targetBbox) d('targetBbox', targetBbox, 'bboxIsValid', bboxIsValid(targetBbox))\n if (targetCenter) d('targetCenter', targetCenter)\n }\n\n if (targetBbox && bboxIsValid(targetBbox)) {\n move = () => {\n try {\n map.fitBounds(targetBbox, options, eventData)\n } catch (e) {\n SentryService.addBreadcrumb('map', `targetBbox is ${JSON.stringify(targetBbox)}`)\n SentryService.captureException(e)\n }\n }\n } else if (targetCenter) {\n move = () => {\n try {\n map.easeTo({ ...options, center: targetCenter }, eventData)\n } catch (e) {\n SentryService.addBreadcrumb('map', `targetCenter is ${JSON.stringify(targetCenter)}`)\n SentryService.captureException(e)\n }\n }\n }\n mapReady ? setTimeout(move, 0) : map.once('load', move)\n }, [map, targetBbox, targetCenter, mapReady])\n}\n\nexport default useMapMoveHandler\n","import { useEffect } from 'react'\nimport useComputePaddingGetter from './map.padding.utils'\nimport { MAP_FROM_APP_ACTION_PADDING } from './map.utils'\nimport { useCallbackWithMapContext } from './MapContext'\nimport { isEqual } from '../../utils/lang'\n\nconst useMapPaddingHandler = () => {\n const getPadding = useComputePaddingGetter()\n\n const setPadding = useCallbackWithMapContext(\n map => {\n const padding = getPadding()\n if (!isEqual(map.getPadding(), padding)) {\n map.setPadding(padding, { fromAppAction: MAP_FROM_APP_ACTION_PADDING })\n }\n },\n [getPadding]\n )\n\n useEffect(() => {\n setPadding()\n }, [setPadding])\n}\n\nexport default useMapPaddingHandler\n","import { useState } from 'react'\nimport useEventCallback from '../../utils/useEventCallback'\nimport { isGE } from '../../Device'\n\nconst useTooltip = () => {\n const [tooltip, setTooltip] = useState(false)\n\n const showTooltip = useEventCallback(() => setTooltip(true), [setTooltip])\n const hideTooltip = useEventCallback(() => setTooltip(false), [setTooltip])\n\n const mouseListeners = isGE()\n ? {\n onMouseOver: showTooltip,\n onMouseOut: hideTooltip\n }\n : {}\n\n return { tooltip, setTooltip, mouseListeners }\n}\n\nexport default useTooltip\n","import React from 'react'\nimport cross from '../../genericComponents/assets/cross.svg'\nimport T, { useT } from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport s from './HdTooltip.less'\n\nconst HdTooltip = ({ onClick }) => (\n
    \n
    \n \n
    \n

    \n \n

    \n \n
    \n)\n\nexport default HdTooltip\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"n4KB4\",\"title\":\"lsqv2\",\"content\":\"Gafo6\",\"closeButton\":\"aZV0Y\"};","import React from 'react'\nimport s from './NotificationDot.less'\n\nconst NotificationDot = ({ top, left, size = 8 }) => (\n \n)\n\nexport default NotificationDot\n","// extracted by mini-css-extract-plugin\nexport default {\"dot\":\"niZ_6\"};","import { useCallback, useState } from 'react'\nimport { getFromLocalStorage, saveToLocalStorage } from '../../utils/browserStorageService'\nimport { ONE_WEEK_MS } from './date'\n\nconst checkOnce = value => Boolean(!value)\n\nexport const checkEachWeek = value => Date.now() - parseInt(value ?? '0', 10) > ONE_WEEK_MS\n\nconst useNotificationHelper = (key, checkFn = checkOnce) => {\n const state = checkFn(getFromLocalStorage(key))\n const [notificationActive, setNotificationActive] = useState(state)\n\n const disableNotification = useCallback(() => {\n setNotificationActive(false)\n saveToLocalStorage(key, Date.now())\n }, [])\n\n return { notificationActive, disableNotification }\n}\n\nexport default useNotificationHelper\n","// extracted by mini-css-extract-plugin\nexport default {\"layerButton\":\"KQUNE\",\"greyedIcon\":\"GB7Zr\",\"label\":\"X2Dhq\",\"modeButton\":\"LSmSY\",\"disabledLayerButton\":\"bad5b\",\"disabledLabel\":\"kcmFW\",\"activeButton\":\"pQh_d\"};","import classNames from 'classnames'\nimport React, { useCallback } from 'react'\nimport { useSelector } from 'react-redux'\nimport { setMapMode, setMapTheme } from '../../../store/map/map.actions'\nimport { DISABLE_COMMUNICATION, MAP_MODES, MAP_MODE_JO_LABEL, MAP_THEMES } from '../../../store/map/map.constants'\nimport { selectMapMode, selectMapTheme } from '../../../store/map/map.selectors'\nimport { isGE } from '../../Device'\nimport NotificationDot from '../../genericComponents/NotificationDot'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { useAction } from '../../utils/react-redux'\nimport useEventCallback from '../../utils/useEventCallback'\nimport useNotificationHelper from '../../utils/useNotificationHelper'\nimport s from './LayerButtons.less'\n\nexport const ModeMapEventLayerButton = ({\n id,\n disabled,\n active,\n icon,\n label,\n ariaLabel,\n tooltipLabel,\n clickAction\n}) => {\n const { notificationActive, disableNotification } = useNotificationHelper(id)\n\n const onClick = useEventCallback(() => {\n disableNotification()\n clickAction()\n }, [clickAction, disableNotification])\n\n const currentMapMode = useSelector(selectMapMode)?.mode\n const shouldDisplayNotification = !DISABLE_COMMUNICATION && currentMapMode !== MAP_MODE_JO_LABEL\n\n return (\n \n
    \n \n {shouldDisplayNotification && notificationActive && (\n \n )}\n
    \n \n {label}\n \n
    \n )\n}\n\nexport const ModeLayerButton = ({\n icon,\n activeIcon,\n hoverIcon,\n id,\n disabled,\n isEventMode,\n label,\n ariaLabel,\n tooltipLabel\n}) => {\n const execSetMode = useAction(setMapMode)\n const active = id === useSelector(selectMapMode).mode\n\n if (active && disabled) execSetMode(MAP_MODES.neutral)\n\n const clickAction = useCallback(() => execSetMode(active ? MAP_MODES.neutral : id), [execSetMode, active, id])\n\n const onClick = useEventCallback(() => clickAction(), [clickAction])\n\n if (isEventMode)\n return (\n \n )\n\n return (\n \n
    \n \n
    \n \n \n \n \n )\n}\n\nexport const ThemeLayerButton = ({ icon, id, disabled }) => {\n const execSetTheme = useAction(setMapTheme)\n const active = id === useSelector(selectMapTheme)\n\n if (active && disabled) execSetTheme(MAP_THEMES.normal)\n\n const onClick = useEventCallback(() => execSetTheme(active ? MAP_THEMES.normal : id), [execSetTheme, active, id])\n\n return (\n \n
    \n \n
    \n \n \n \n \n )\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"fzgqB\",\"mainTitle\":\"rH40k\",\"button\":\"ljDKu\",\"openButton\":\"c4T7V\",\"opened\":\"fVYwR\",\"closing\":\"URVxD\",\"closeButton\":\"Lz6io\",\"buttonsSection\":\"eR8Ss\",\"buttonsList\":\"aovGG\",\"buttons\":\"lDjTQ\",\"title\":\"zr0K_\",\"tooltip\":\"CwsAJ\",\"highdef\":\"K7s6r\",\"highDefButton\":\"lCJDE\",\"highdefLabel\":\"Pn360\",\"informationIcon\":\"piuLg\",\"layerImageHover\":\"k09Zn\",\"layerButton\":\"o8PPQ\",\"layerImage\":\"I3vg5\",\"openLayerButton\":\"AaHV4\"};","import { useSelector } from 'react-redux'\nimport { MAP_BUTTON_MODE, MAP_BUTTON_THEME, MAP_MODES, MAP_THEMES } from '../../../store/map/map.constants'\nimport { selectActiveMapEvents } from '../../../store/map/map.selectors'\nimport ThemeDark from './theme-dark.svg'\nimport ThemeNature from './theme-nature.svg'\nimport ThemeSatellite from './theme-satellite.png'\nimport ThemeSimple from './theme-simple.svg'\nimport ThemeStandard from './theme-standard.svg'\nimport { useEffect, useState } from 'react'\n\nconst themeButtons = [\n {\n key: MAP_THEMES.normal,\n icon: ThemeStandard,\n type: MAP_BUTTON_THEME,\n availableInRaster: true\n },\n {\n key: MAP_THEMES.simple,\n icon: ThemeSimple,\n type: MAP_BUTTON_THEME,\n availableInRaster: false\n },\n {\n key: MAP_THEMES.nature,\n icon: ThemeNature,\n type: MAP_BUTTON_THEME,\n availableInRaster: false\n },\n {\n key: MAP_THEMES.satellite,\n icon: ThemeSatellite,\n type: MAP_BUTTON_THEME,\n availableInRaster: true\n },\n {\n key: MAP_THEMES.dark,\n icon: ThemeDark,\n type: MAP_BUTTON_THEME,\n availableInRaster: false\n }\n]\nconst modeButtons = [\n {\n key: MAP_MODES.neutral,\n icon: 'neutral',\n type: MAP_BUTTON_MODE,\n availableInRaster: true\n },\n {\n key: MAP_MODES.traffic,\n icon: 'traffic-outline',\n type: MAP_BUTTON_MODE,\n availableInRaster: true\n },\n {\n key: MAP_MODES.zfe,\n icon: 'critair-outline',\n type: MAP_BUTTON_MODE,\n availableInRaster: false\n },\n {\n key: MAP_MODES.bicycle,\n icon: 'bike-outline',\n type: MAP_BUTTON_MODE,\n availableInRaster: true\n },\n {\n key: MAP_MODES.tc,\n icon: 'subway-outline',\n type: MAP_BUTTON_MODE,\n availableInRaster: true\n }\n]\n\nexport const useMapThemeButtons = () => themeButtons\n\nexport const useMapModeButtons = () => {\n const activeMapEvents = useSelector(selectActiveMapEvents)\n\n const [buttons, setButtons] = useState(modeButtons)\n useEffect(() => {\n const buttons = [...modeButtons]\n buttons.splice(1, 0, ...activeMapEvents)\n setButtons(buttons)\n }, [activeMapEvents])\n\n return buttons\n}\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectActiveMapEvents } from '../../../store/map/map.selectors'\nimport cross from '../../genericComponents/assets/cross.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport useEventCallback from '../../utils/useEventCallback'\nimport useNotificationHelper, { checkEachWeek } from '../../utils/useNotificationHelper'\nimport s from './MapEventTooltip.less'\n\nexport const MAP_EVENTS_TOOLTIP_NOTIFICATION_KEY = 'mapEventTooltip'\n\nconst MapEventTooltip = () => {\n const activeMapEvents = useSelector(selectActiveMapEvents)\n const { notificationActive, disableNotification } = useNotificationHelper(\n MAP_EVENTS_TOOLTIP_NOTIFICATION_KEY,\n checkEachWeek\n )\n\n const onClose = useEventCallback(() => {\n disableNotification()\n }, [disableNotification])\n\n if (!activeMapEvents.length || !notificationActive) return <>\n\n const { key, tooltipLabel } = activeMapEvents[0]\n\n return (\n
    \n
    \n

    {tooltipLabel}

    \n
    \n
    \n \n
    \n
    \n
    \n )\n}\nexport default MapEventTooltip\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"TT5dN\",\"content\":\"xbgTB\",\"closeIcon\":\"dNFmn\",\"arrow\":\"q3U6R\"};","import classNames from 'classnames'\nimport React, { useCallback, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { TAG_CLICK_TOGGLE_HD_MAP } from '../../../store/analytics/analytics.actionTypes'\nimport { dispatchTag } from '../../../store/analytics/analytics.actions'\nimport { switchMapType } from '../../../store/map/map.actions'\nimport { selectActiveMapEvents, selectIsVectorMap, selectMapMode } from '../../../store/map/map.selectors'\nimport { hideMapTooSlowTooltip } from '../../../store/ui/ui.actions'\nimport { UI_ELEMENTS } from '../../../store/ui/ui.constants'\nimport { selectShouldDisplayMapTools } from '../../../store/ui/ui.selectors'\nimport { isGE } from '../../Device'\nimport { ACTION, CLICK_TAG } from '../../analytics/ClickTagsService'\nimport Modal from '../../genericComponents/Modal'\nimport cross from '../../genericComponents/assets/cross.svg'\nimport layers from '../../genericComponents/assets/layers.svg'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport useUIDisplay from '../../ui/useUIDisplay'\nimport SwitchInput from '../../utils/SwitchInput'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport useEventCallback from '../../utils/useEventCallback'\nimport useTooltip from '../tools/useTooltip'\nimport HdTooltip from '../vector/HdTooltip'\nimport { ModeLayerButton, ThemeLayerButton } from './LayerButton'\nimport s from './LayersButtons.less'\nimport informationImg from './information.png'\n\nimport NotificationDot from '../../genericComponents/NotificationDot'\nimport useNotificationHelper from '../../utils/useNotificationHelper'\nimport { useMapModeButtons, useMapThemeButtons } from './LayersButtonsConfig'\nimport MapEventTooltip, { MAP_EVENTS_TOOLTIP_NOTIFICATION_KEY } from './MapEventTooltip'\nimport layersJO from './LayerButton_Default.svg'\nimport layersJOHover from './LayerButton_DefaultHover.svg'\nimport layersJoActivated from './LayerButton_Selected.svg'\nimport layersJoActivatedHover from './LayerButton_SelectedHover.svg'\nimport { DISABLE_COMMUNICATION, MAP_MODE_JO_LABEL } from '../../../store/map/map.constants'\n\nconst Buttons = ({ isOpened, isClosing, closeModes }) => {\n const isVecto = useSelector(selectIsVectorMap)\n\n const { tooltip: hdTooltipDisplayed, setTooltip: setHdTooltip } = useTooltip()\n const execDispatchTag = useAction(dispatchTag)\n const execSwitchMapType = useAction(switchMapType)\n\n const switchHdTooltip = useEventCallback(() => setHdTooltip(!hdTooltipDisplayed), [setHdTooltip, hdTooltipDisplayed])\n\n const switchHighDefMap = useCallback(() => {\n execSwitchMapType()\n execDispatchTag({\n type: TAG_CLICK_TOGGLE_HD_MAP,\n tagInfo: { tag: CLICK_TAG.XTC_CARTE_HD_OFF, [ACTION]: isVecto ? 'HD_off' : 'HD_on' }\n })\n }, [execSwitchMapType, execDispatchTag])\n\n const themeButtons = useMapThemeButtons()\n const modeButtons = useMapModeButtons()\n\n return (\n
    \n
    \n \n
    \n
    closeModes()}>\n
    \n \n
    \n
    \n {isGE() && (\n
    \n
    \n
    \n \n

    \n \n

    \n
    \n \n {hdTooltipDisplayed && }\n
    \n
    \n )}\n
    \n
    \n \n
    \n
    \n {themeButtons.map(({ type, key, icon, availableInRaster }) => (\n \n ))}\n
    \n
    \n
    \n
    \n \n
    \n
    \n {modeButtons.map(({ key, icon, isEventMode, availableInRaster, label, ariaLabel, tooltipLabel }) => (\n \n ))}\n
    \n
    \n
    \n )\n}\n\nconst LayersButtons = () => {\n const [display, setDisplay] = useState('close')\n\n const { tooltip, setTooltip, mouseListeners } = useTooltip()\n const isOpened = display === 'opened'\n const isClosing = display === 'closing'\n const { showUI, hideUI } = useUIDisplay(UI_ELEMENTS.MAP_TOOLS_PE)\n const execHideMapTooSlowTooltip = useAction(hideMapTooSlowTooltip)\n const { notificationActive, disableNotification: disableNotificationLayers } = useNotificationHelper('layers')\n const { disableNotification: disableNotificationMapEventTooltip } = useNotificationHelper(\n MAP_EVENTS_TOOLTIP_NOTIFICATION_KEY\n )\n\n const closeModes = useCallback(() => {\n setDisplay('closing')\n setDisplay('closed')\n hideUI()\n }, [setDisplay, hideUI])\n\n const onOpenClick = useCallback(() => {\n setDisplay('opened')\n setTooltip(false)\n showUI()\n execHideMapTooSlowTooltip()\n disableNotificationLayers()\n disableNotificationMapEventTooltip()\n }, [setDisplay, setTooltip, showUI, execHideMapTooSlowTooltip, disableNotificationLayers])\n\n const hasActiveMapEvent = useSelector(selectActiveMapEvents)?.length > 0\n const currentMapMode = useSelector(selectMapMode)\n const isJoModeActivated = currentMapMode?.mode === MAP_MODE_JO_LABEL\n const layerIcon = isJoModeActivated ? layersJoActivated : layersJO\n const layerHoverIcon = isJoModeActivated ? layersJoActivatedHover : layersJOHover\n\n const shouldDisplayNotification = !DISABLE_COMMUNICATION && !isJoModeActivated\n\n return (\n
    \n {isGE() ? (\n \n ) : (\n \n \n \n )}\n {hasActiveMapEvent ? (\n
    \n \n \n {shouldDisplayNotification && (\n <>\n {notificationActive && }\n {!isOpened && }\n \n )}\n
    \n ) : (\n
    \n \n
    \n \n
    \n
    \n )}\n \n \n \n
    \n )\n}\n\nexport default withEverySelectorTruthy(selectShouldDisplayMapTools)(LayersButtons)\n","import React from 'react'\nimport useLayersManager from './useLayersManager'\nimport useIntegerZoom from './useIntegerZoom'\nimport useMapZoomHandler from '../useMapZoomHandler'\nimport useMapPerfMetrics from '../useMapPerfMetrics'\nimport useMapMoveHandler from '../useMapMoveHandler'\nimport useMapPaddingHandler from '../useMapPaddingHandler'\nimport LayersButtons from '../common/LayersButtons'\n\nconst RasterMap = () => {\n useLayersManager()\n useIntegerZoom()\n useMapMoveHandler()\n useMapZoomHandler()\n useMapPaddingHandler()\n useMapPerfMetrics()\n\n return (\n <>\n \n \n )\n}\n\nexport default RasterMap\n","import { useEffect, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { MAP_MODES, MAP_STATUS_STYLED, MAP_THEMES } from '../../../store/map/map.constants'\nimport { selectMapMode, selectMapStatus, selectMapTheme } from '../../../store/map/map.selectors'\nimport { isGE, isRetina } from '../../Device'\nimport { useMapContext } from '../MapContext'\n\nconst getRasterLayerAccordingDevice = id => new RegExp(`^${id}${isGE() ? '' : '_hd'}$`)\n\nconst useLayersManager = () => {\n const { map } = useMapContext()\n const [layersDefaultVisibility, setLayersDefaultVisibility] = useState([])\n const status = useSelector(selectMapStatus)\n const mapMode = useSelector(selectMapMode).mode\n const mapTheme = useSelector(selectMapTheme)\n\n useEffect(() => {\n if (!map || status !== MAP_STATUS_STYLED) return\n\n map.setLayoutProperty('simple-tiles-desktop', 'visibility', !isRetina() ? 'visible' : 'none')\n map.setLayoutProperty('simple-tiles-mobile', 'visibility', isRetina() ? 'visible' : 'none')\n\n const visibilities = map\n .getStyle()\n .layers.filter(layer => layer.layout && layer.layout.visibility)\n .map(({ id, layout }) => ({ id, visibility: layout.visibility }))\n\n setLayersDefaultVisibility(visibilities)\n }, [map, status])\n\n useEffect(() => {\n if (!map || layersDefaultVisibility.length === 0) return\n layersDefaultVisibility.forEach(layer => {\n let visibility = layer.visibility\n if (mapTheme === MAP_THEMES.satellite && layer.id.match(/_photo$/)) {\n visibility = 'visible'\n } else if (mapMode === MAP_MODES.tc && layer.id.match(/public_transport/)) {\n visibility = 'visible'\n } else if (mapMode === MAP_MODES.traffic && layer.id.match(/_traffic_vecto$/)) {\n visibility = 'visible'\n } else if (mapMode === MAP_MODES.bicycle && layer.id.match(getRasterLayerAccordingDevice('bicycle'))) {\n visibility = 'visible'\n } else if (mapTheme === MAP_THEMES.satellite) {\n visibility = 'none'\n }\n map.setLayoutProperty(layer.id, 'visibility', visibility)\n })\n }, [map, layersDefaultVisibility, mapMode, mapTheme])\n}\n\nexport default useLayersManager\n","import React, { useEffect, useMemo } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectAddressContour } from '../../../store/address/address.selectors'\nimport { selectIsMapReady } from '../../../store/map/map.selectors'\nimport { withEverySelectorTruthy } from '../../utils/react-redux'\nimport { useMapContext } from '../MapContext'\nimport { reverseShape } from './map.polygon.utils'\n\nconst SOURCE_ID_AREA = 'city-shape-area-src'\nconst SOURCE_ID_LIMIT = 'city-shape-limit-src'\nconst LAYER_AREA_ID = 'city-shape-area'\nconst LAYER_LIMIT_ID = 'city-shape-limit'\nconst CONTOUR_COLOR = '#1A1A1A'\n\nconst getPolygonLayer = () => ({\n id: LAYER_AREA_ID,\n type: 'fill',\n source: SOURCE_ID_AREA,\n paint: {\n 'fill-opacity': 0.18,\n 'fill-color': CONTOUR_COLOR\n }\n})\n\nconst getLineLayer = () => ({\n id: LAYER_LIMIT_ID,\n type: 'line',\n source: SOURCE_ID_LIMIT,\n paint: {\n 'line-opacity': 0.7,\n 'line-width': 2,\n 'line-color': CONTOUR_COLOR,\n 'line-dasharray': [1, 2]\n }\n})\n\nconst createGeoJSON = geometry => ({\n type: 'geojson',\n data: {\n type: 'FeatureCollection',\n features: [\n {\n type: 'Feature',\n properties: {},\n geometry\n }\n ]\n }\n})\n\nconst MapAddressContour = ({ reverse = true }) => {\n const { map } = useMapContext()\n const contour = useSelector(selectAddressContour)\n const shape = useMemo(() => (contour && reverse ? reverseShape(contour) : contour), [reverse, contour])\n const isMapReady = useSelector(selectIsMapReady)\n\n const cleanShape = () => {\n try {\n if (!map.getLayer(LAYER_AREA_ID)) return\n map.removeLayer(LAYER_AREA_ID)\n map.removeLayer(LAYER_LIMIT_ID)\n map.removeSource(SOURCE_ID_AREA)\n map.removeSource(SOURCE_ID_LIMIT)\n } catch (error) {\n console.error('failed to cleanShape', error)\n }\n }\n\n const drawShape = () => {\n if (!shape) return\n\n try {\n map.addSource(SOURCE_ID_AREA, createGeoJSON(shape))\n map.addSource(SOURCE_ID_LIMIT, createGeoJSON(contour))\n map.addLayer(getPolygonLayer())\n map.addLayer(getLineLayer())\n } catch (e) {\n console.error(e)\n }\n }\n\n useEffect(() => {\n if (!isMapReady || !shape) return\n drawShape()\n }, [shape, isMapReady])\n\n useEffect(\n () => () => {\n cleanShape()\n },\n []\n )\n\n return <>\n}\n\nexport default withEverySelectorTruthy(selectAddressContour)(MapAddressContour)\n","// extracted by mini-css-extract-plugin\nexport default {\"Copyrights\":\"jNtA0\",\"left\":\"xsdTm\"};","import React, { useEffect, useState, useRef } from 'react'\nimport classnames from 'classnames'\nimport { useMapContext } from '../MapContext'\nimport s from './Copyrights.less'\nimport { isGE } from '../../Device'\nimport { uniq } from '../../../utils/array'\nimport { throttle } from '../../../utils/function'\n\nconst DEFAULT_COPYRIGHT = '© Mappy'\n\nconst Copyrights = () => {\n const { map } = useMapContext()\n const [copyrights, setCopyrights] = useState(DEFAULT_COPYRIGHT)\n\n const mapEventAttached = useRef(false)\n\n useEffect(() => {\n if (!mapEventAttached.current && map) {\n map.on(\n 'render',\n throttle(() => setCopyrights(getCopyright()), 300)\n )\n\n mapEventAttached.current = true\n }\n }, [mapEventAttached, map])\n\n const getCopyrightsFeatures = () =>\n map\n .queryRenderedFeatures()\n .filter(feature => (feature.layer.id || '').includes('copyrights_') && feature.properties.copyrights)\n\n const getCopyrights = () =>\n uniq(getCopyrightsFeatures().flatMap(feature => JSON.parse(feature.properties.copyrights)))\n\n const getCopyright = () => {\n let copyrights = []\n\n try {\n copyrights = getCopyrights()\n } catch (err) {\n console.error(err)\n }\n\n return [DEFAULT_COPYRIGHT, ...copyrights].join(' - ')\n }\n\n return
    {copyrights}
    \n}\n\nexport default Copyrights\n","// extracted by mini-css-extract-plugin\nexport default {\"geoloc\":\"JUSVw\",\"withMapEvent\":\"jZQVs\",\"button\":\"r6XR1\",\"icon\":\"jIVJ2\",\"follow\":\"ITaCJ\",\"active\":\"aNCdW\",\"fetch\":\"fVizQ\",\"geolocationSearching\":\"s83Ge\",\"errorMessage\":\"IIFXF\",\"tooltip\":\"G5NBH\"};","import classNames from 'classnames'\nimport React, { useEffect, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { TAG_SEARCH_GEOLOCATION } from '../../../store/analytics/analytics.actionTypes'\nimport { setGeolocationStatus } from '../../../store/map/map.actions'\nimport {\n GEOLOC_STATUS_BLOCKED,\n GEOLOC_STATUS_BUTTON_WORKFLOW,\n GEOLOC_STATUS_DISABLED,\n GEOLOC_STATUS_FETCH_ACTIVE,\n GEOLOC_STATUS_FETCH_FOLLOW,\n GEOLOC_STATUS_FOLLOW\n} from '../../../store/map/map.constants'\nimport { selectActiveMapEvents, selectGeolocationStatus } from '../../../store/map/map.selectors'\nimport { selectShouldDisplayMapTools } from '../../../store/ui/ui.selectors'\nimport TagActionButton from '../../genericComponents/TagActionButton'\nimport mappyLogoFilled from '../../genericComponents/assets/mappy-logo-filled.svg'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport useTimeout from '../../utils/useTimeout'\nimport s from './GeolocButton.less'\nimport useTooltip from './useTooltip'\n\nconst GeolocButton = () => {\n const status = useSelector(selectGeolocationStatus)\n const [statusFromButton, setStatusFromButton] = useState(null)\n const execSetGeolocationStatus = useAction(setGeolocationStatus)\n const [displayError, setDisplayError] = useState(false)\n const [setErrorTo, clearErrorTo] = useTimeout(5000)\n const isFollowStatus = status === GEOLOC_STATUS_FOLLOW\n const isFetchStatus = status === GEOLOC_STATUS_FETCH_ACTIVE || status === GEOLOC_STATUS_FETCH_FOLLOW\n const { tooltip, mouseListeners } = useTooltip()\n\n const hasActiveMapEvent = useSelector(selectActiveMapEvents)?.length > 0\n\n useEffect(() => {\n if (statusFromButton) {\n if (status === GEOLOC_STATUS_BLOCKED) {\n setDisplayError(true)\n setErrorTo(() => setDisplayError(false))\n }\n if (status !== statusFromButton) {\n setStatusFromButton(null)\n }\n }\n }, [setErrorTo, status, statusFromButton])\n\n useEffect(() => {\n return () => {\n clearErrorTo()\n }\n }, [clearErrorTo])\n\n const onClick = () => {\n const newStatus = GEOLOC_STATUS_BUTTON_WORKFLOW[status]\n if (newStatus !== GEOLOC_STATUS_DISABLED) {\n setStatusFromButton(newStatus)\n execSetGeolocationStatus(newStatus, { mapMove: true })\n } else {\n execSetGeolocationStatus(newStatus)\n }\n }\n\n return (\n <>\n \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n \n \n \n {displayError && (\n
    \n {`Votre position est bloquée, vous devez l'autoriser sur votre navigateur.`}\n
    \n )}\n \n )\n}\n\nexport default withEverySelectorTruthy(selectShouldDisplayMapTools)(GeolocButton)\n","import classnames from 'classnames'\nimport React from 'react'\nimport { selectShouldDisplayMapTools } from '../../../store/ui/ui.selectors'\nimport { isGE } from '../../Device'\nimport logoMappy from '../../genericComponents/logo-mappy-bordered.svg'\nimport { withEverySelectorTruthy } from '../../utils/react-redux'\nimport s from './Logo.less'\n\nconst Logo = () => (\n
    \n \n
    \n)\n\nexport default withEverySelectorTruthy(selectShouldDisplayMapTools)(Logo)\n","// extracted by mini-css-extract-plugin\nexport default {\"Logo\":\"QoSBm\",\"centeredBottomLogo\":\"dL6k1\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { useSelector } from 'react-redux'\nimport { TAG_UPI_IMMERSIVE } from '../../../store/analytics/analytics.actionTypes'\nimport { displayOutdoor, hideOutdoor } from '../../../store/ui/ui.actions'\nimport { selectIsOutdoorPrompted } from '../../../store/ui/ui.outdoor.selectors'\nimport TagActionButton from '../../genericComponents/TagActionButton'\nimport personArrowSurrounded from '../../genericComponents/assets/person-arrow-surrounded.svg'\nimport personFallingArrowSurrounded from '../../genericComponents/assets/person-falling-arrow-surrounded.svg'\nimport T from '../../i18n/T'\nimport { OUTDOOR_STATUS_PROMPT } from '../../outdoor/Utils'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { useAction } from '../../utils/react-redux'\nimport useEventCallback from '../../utils/useEventCallback'\nimport s from './OutdoorButton.less'\nimport useTooltip from './useTooltip'\nimport { selectActiveMapEvents } from '../../../store/map/map.selectors'\n\nconst OutdoorButton = () => {\n const statusIsPrompt = useSelector(selectIsOutdoorPrompted)\n const execDisplayOutdoor = useAction(displayOutdoor)\n const execHideOutdoor = useAction(hideOutdoor)\n const { tooltip, setTooltip, mouseListeners } = useTooltip()\n\n const hasActiveMapEvent = useSelector(selectActiveMapEvents)?.length > 0\n\n const onButtonClick = useEventCallback(() => {\n setTooltip(false)\n if (statusIsPrompt) {\n execHideOutdoor()\n } else {\n execDisplayOutdoor({ status: OUTDOOR_STATUS_PROMPT })\n }\n }, [statusIsPrompt, execHideOutdoor, execDisplayOutdoor])\n\n return (\n
    \n \n \n \n \n \n \n \n
    \n )\n}\n\nexport default OutdoorButton\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"kwYj7\",\"withMapEvent\":\"C9C3G\",\"button\":\"jplnA\",\"buttonTooltip\":\"_Y_i0\"};","import { useEffect, useRef } from 'react'\nimport { selectShouldDisplayMapTools } from '../../../store/ui/ui.selectors'\nimport { isGE } from '../../Device'\nimport { withEverySelectorTruthy } from '../../utils/react-redux'\nimport { ScaleControl as MapLibreScaleControl } from 'maplibre-gl'\nimport './Scale.less'\nimport { useCallbackWithMapContext } from '../MapContext'\n\nconst Scale = () => {\n const scaleRef = useRef()\n\n const addControl = useCallbackWithMapContext(map => {\n if (scaleRef.current) return\n\n scaleRef.current = new MapLibreScaleControl({\n maxWidth: 120,\n unit: 'metric'\n })\n const position = isGE() ? 'bottom-right' : 'bottom-left'\n map.addControl(scaleRef.current, position)\n })\n\n const removeControl = useCallbackWithMapContext(map => {\n try {\n if (scaleRef.current) map.removeControl(scaleRef.current)\n } catch (e) {}\n scaleRef.current = undefined\n })\n\n useEffect(() => {\n addControl()\n return () => {\n if (scaleRef.current) removeControl()\n }\n }, [addControl, removeControl])\n\n return null\n}\n\nexport default withEverySelectorTruthy(selectShouldDisplayMapTools)(Scale)\n","import React from 'react'\nimport classnames from 'classnames'\nimport s from './ToggleFullScreenGeButton.less'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport { toggleFullscreen } from '../../../store/map/map.actions'\nimport useEventCallback from '../../utils/useEventCallback'\nimport { withOnlyGE } from '../../Device'\nimport ReduireDesktop from './reduire-desktop.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { selectIsMapFullScreen, selectShouldDisplayToggleFullScreenGeButton } from '../../../store/map/map.selectors'\nimport { useSelector } from 'react-redux'\nimport { ACTION } from '../../analytics/ClickTagsService'\nimport TagActionButton from '../../genericComponents/TagActionButton'\nimport { TAG_CLICK_TOGGLE_FULLSCREEN } from '../../../store/analytics/analytics.actionTypes'\n\nconst ToggleFullScreenGeButton = () => {\n const execToggleFullScreen = useAction(toggleFullscreen)\n const isMapFullScreen = useSelector(selectIsMapFullScreen)\n\n const onClick = useEventCallback(() => {\n execToggleFullScreen()\n }, [execToggleFullScreen])\n\n return (\n \n \n \n )\n}\n\nexport default withOnlyGE(\n withEverySelectorTruthy(selectShouldDisplayToggleFullScreenGeButton)(ToggleFullScreenGeButton)\n)\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"oUaQF\",\"icon\":\"wWRWG\",\"invert\":\"PjaGG\"};","import classNames from 'classnames'\nimport React from 'react'\nimport { toggleFullscreen } from '../../../store/map/map.actions'\nimport { selectIsMapFullScreen } from '../../../store/map/map.selectors'\nimport { withOnlyPE } from '../../Device'\nimport innerArrows from '../../genericComponents/assets/inner-arrows.svg'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport useEventCallback from '../../utils/useEventCallback'\nimport s from './ToggleFullscreenPeButton.less'\n\nconst ToggleFullscreenPeButton = () => {\n const execToggleFullscreen = useAction(toggleFullscreen)\n\n const onClick = useEventCallback(() => execToggleFullscreen(), [execToggleFullscreen])\n\n return (\n
    \n \n
    \n )\n}\n\nexport default withOnlyPE(withEverySelectorTruthy(selectIsMapFullScreen)(ToggleFullscreenPeButton))\n","// extracted by mini-css-extract-plugin\nexport default {\"ToggleFullscreenButton\":\"yKKSL\",\"buttonPositioning\":\"r7hNP\",\"buttonAspect\":\"ulBMU\"};","import React, { useEffect, useRef, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { MAP_MODES } from '../../../store/map/map.constants'\nimport { selectMapMode } from '../../../store/map/map.selectors'\nimport { withOnlyGE } from '../../Device'\nimport T from '../../i18n/T'\nimport { ONE_MINUTE_MS, pad } from '../../utils/date'\nimport s from './TrafficLegend.less'\n\nexport const formatHourFromDate = date => {\n const mins = date.getMinutes()\n const hours = date.getHours()\n return pad(hours) + ':' + pad(mins)\n}\n\nconst TrafficLegend = withOnlyGE(() => {\n const mapMode = useSelector(selectMapMode).mode\n const intervalRef = useRef()\n const [lastUpdate, setLastUpdate] = useState(new Date())\n\n useEffect(() => {\n if (mapMode === MAP_MODES.traffic) {\n intervalRef.current = setInterval(() => {\n setLastUpdate(new Date())\n }, 2 * ONE_MINUTE_MS)\n } else {\n clearInterval(intervalRef.current)\n }\n return () => {\n clearInterval(intervalRef.current)\n }\n }, [mapMode])\n\n if (mapMode !== MAP_MODES.traffic) return <>\n\n return (\n
    \n

    \n \n  \n {formatHourFromDate(lastUpdate)}\n

    \n
      \n
    • \n
    • \n
    • \n
    • \n
    • \n
    \n

    \n \n \n \n \n \n \n

    \n
    \n )\n})\n\nexport default TrafficLegend\n","// extracted by mini-css-extract-plugin\nexport default {\"trafficLegend\":\"qJJUg\",\"title\":\"tnGAn\",\"yellow\":\"fTULR\",\"orange\":\"ChtuL\",\"red\":\"Kvb4V\",\"darkred\":\"QYMeT\",\"black\":\"QxDi8\",\"left\":\"D4aSG\",\"right\":\"bm9rv\"};","import React, { useCallback, useEffect, useState } from 'react'\nimport classNames from 'classnames'\nimport { MAP_ZOOM_MIN, MAP_ZOOM_STEP } from '../map.constants'\nimport T from '../../i18n/T'\nimport s from './ZoomButtons.less'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { withOnlyGE } from '../../Device'\nimport { useSelector } from 'react-redux'\nimport { selectMapZoom, selectMapMaxZoom, selectActiveMapEvents } from '../../../store/map/map.selectors'\nimport { useAction } from '../../utils/react-redux'\nimport { requestZoom } from '../../../store/map/map.actions'\nimport useTooltip from './useTooltip'\n\nconst ZoomButton = ({ onClick, icon, className, label, ...otherProps }) => {\n const { tooltip, mouseListeners } = useTooltip()\n\n return (\n
    \n \n \n \n \n \n \n
    \n )\n}\n\nconst ZoomInButton = props => (\n \n)\n\nconst ZoomOutButton = props => (\n \n)\n\nexport const ZoomButtons = () => {\n const execRequestZoom = useAction(requestZoom)\n const zoomFromStore = useSelector(selectMapZoom)\n const maxZoom = useSelector(selectMapMaxZoom)\n // The state zoom exists because the store value is updated when animation finished\n // With the state zoom user can click several times during the animation\n const [zoom, setZoom] = useState()\n\n const hasActiveMapEvent = useSelector(selectActiveMapEvents)?.length > 0\n\n useEffect(() => {\n setZoom(zoomFromStore)\n }, [zoomFromStore])\n\n const updateZoom = useCallback(\n delta => {\n let targetZoom = zoom + delta\n if (targetZoom > maxZoom) targetZoom = maxZoom\n if (targetZoom < MAP_ZOOM_MIN) targetZoom = MAP_ZOOM_MIN\n\n execRequestZoom({ zoom: targetZoom })\n setZoom(targetZoom)\n },\n [zoom, maxZoom]\n )\n\n return (\n
    \n updateZoom(MAP_ZOOM_STEP)} />\n updateZoom(-MAP_ZOOM_STEP)} />\n
    \n )\n}\n\nexport default withOnlyGE(ZoomButtons)\n","import classNames from 'classnames'\nimport React, { useEffect, useState } from 'react'\nimport { TAG_MULTIPATH_CTA } from '../../../store/analytics/analytics.actionTypes'\nimport { dispatchTag } from '../../../store/analytics/analytics.actions'\nimport { hideMapTooSlowTooltip, setMapTooSlowTimestamp } from '../../../store/ui/ui.actions'\nimport { selectMapTooSlowTooltip } from '../../../store/ui/ui.selectors'\nimport { withOnlyGE } from '../../Device'\nimport { PUB_TAG } from '../../analytics/PublisherTagsService'\nimport cross from '../../genericComponents/assets/cross.svg'\nimport T from '../../i18n/T'\nimport SVGIcon from '../../svg/SVGIcon'\nimport { useAction, withEverySelectorTruthy } from '../../utils/react-redux'\nimport useEventCallback from '../../utils/useEventCallback'\nimport s from './MapTooSlowTooltip.less'\n\nconst MapTooSlowTooltip = () => {\n const execHideMapTooSlowTooltip = useAction(hideMapTooSlowTooltip)\n const execSetLastMapTooSlowTimestamp = useAction(setMapTooSlowTimestamp)\n const [visible, setVisible] = useState(true)\n\n const closeTooltip = useEventCallback(() => {\n execHideMapTooSlowTooltip()\n }, [execHideMapTooSlowTooltip])\n\n const execDispatchTag = useAction(dispatchTag)\n\n useEffect(() => {\n execDispatchTag({\n type: TAG_MULTIPATH_CTA,\n tagInfo: { tag: PUB_TAG.PUB_MAP_POP_IN_MAP_TOO_SLOW },\n isImpression: true\n })\n execSetLastMapTooSlowTimestamp()\n setTimeout(() => setVisible(false), 5000)\n }, [])\n\n return (\n
    \n
    \n

    \n \n

    \n

    \n \n

    \n
    \n
    \n \n
    \n
    \n )\n}\nexport default withOnlyGE(withEverySelectorTruthy(selectMapTooSlowTooltip)(MapTooSlowTooltip))\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"EQaTH\",\"hide\":\"WwNZv\",\"content\":\"OTy9E\",\"closeButton\":\"AdKRe\"};","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectShouldDisplayMapLayersButton } from '../../../store/map/map.selectors'\nimport LayersButtons from '../common/LayersButtons'\nimport useMapMoveHandler from '../useMapMoveHandler'\nimport useMapPaddingHandler from '../useMapPaddingHandler'\nimport useMapPerfMetrics from '../useMapPerfMetrics'\nimport useMapPointerHandler from '../useMapPointerHandler'\nimport useMapZoomHandler from '../useMapZoomHandler'\nimport MapTooSlowTooltip from './MapTooSlowTooltip'\nimport useClickMapEventsHandler from './useClickMapEventsHandler'\nimport useClickMyMapLayers from './useClickMyMapLayers'\n\nconst VectorMap = () => {\n useClickMyMapLayers()\n useMapPointerHandler()\n useClickMapEventsHandler()\n useMapMoveHandler()\n useMapZoomHandler()\n useMapPaddingHandler()\n useMapPerfMetrics()\n\n const shouldDisplayMapLayersButton = useSelector(selectShouldDisplayMapLayersButton)\n\n return shouldDisplayMapLayersButton ? null : (\n <>\n \n \n \n )\n}\n\nexport default VectorMap\n","import { useSelector } from 'react-redux'\nimport { ROUTE_SEO_GEOENTITY } from '../../../routes'\nimport { TAG_CLICK_MY_MAP } from '../../../store/analytics/analytics.actionTypes'\nimport { dispatchTag } from '../../../store/analytics/analytics.actions'\nimport { resetGeoentities } from '../../../store/geoentity/geoentity.actions'\nimport { navigateTo } from '../../../store/history/history.actions'\nimport { selectIsFrenchSite } from '../../../store/locale/locale.selectors'\nimport { LAYER_ID_CMM, MAP_STATUS_STYLED } from '../../../store/map/map.constants'\nimport { selectMapStatus } from '../../../store/map/map.selectors'\nimport { useAction } from '../../utils/react-redux'\nimport { useEffectWithMapContext } from '../MapContext'\n\nconst useClickMyMapLayers = () => {\n const status = useSelector(selectMapStatus)\n const execNavigateTo = useAction(navigateTo)\n const execDispatchTag = useAction(dispatchTag)\n const execResetGeoentities = useAction(resetGeoentities)\n const isFrenchSite = useSelector(selectIsFrenchSite)\n\n const navigateToPoi = ({ id, rubricId }) => {\n execDispatchTag({\n type: TAG_CLICK_MY_MAP,\n tagInfo: {\n catId: rubricId\n }\n })\n\n execResetGeoentities()\n execNavigateTo({\n route: ROUTE_SEO_GEOENTITY,\n routeOptions: { geoentityId: id }\n })\n }\n\n const handleClick = e => {\n if (e.handled) return\n e.handled = true\n const id = e.features[0].properties.mappy_poi_id\n const rubricId = e.features[0].properties.mappy_context_rubric\n\n navigateToPoi({ id, rubricId })\n }\n\n useEffectWithMapContext(\n map => {\n if (!map.getStyle() || status !== MAP_STATUS_STYLED) return\n\n map\n .getStyle()\n .layers.filter(layer => layer.layout?.visibility)\n .forEach(({ id }) => {\n if (id.match(LAYER_ID_CMM)) {\n map.setLayoutProperty(id, 'visibility', 'visible')\n if (isFrenchSite) {\n map.on('click', id, handleClick)\n }\n }\n })\n\n return () => {\n if (map?.getStyle()) {\n map\n .getStyle()\n .layers.filter(layer => layer.layout?.visibility)\n .forEach(({ id }) => {\n if (isFrenchSite) {\n map.off('click', id, handleClick)\n }\n })\n }\n }\n },\n [status, isFrenchSite]\n )\n}\n\nexport default useClickMyMapLayers\n","import { useEffect } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsFrenchSite } from '../../store/locale/locale.selectors'\nimport { LAYER_ID_CMM, LAYER_ID_POLYLINE } from '../../store/map/map.constants'\nimport { selectActiveMapEvents, selectIsMapReady } from '../../store/map/map.selectors'\nimport { selectQuizGuessInProgress } from '../../store/quiz/quiz.selectors'\nimport { isGE } from '../Device'\nimport { getBBoxAroundPointer } from '../utils/map'\nimport useErrorBoundaryCallback from '../utils/useErrorBoundaryCallback'\nimport { useMapContext } from './MapContext'\n\nconst useMapPointerHandler = () => {\n const { map } = useMapContext()\n const mapReady = useSelector(selectIsMapReady)\n const isFrenchSite = useSelector(selectIsFrenchSite)\n const quizGuessInProgress = useSelector(selectQuizGuessInProgress)\n const activeMapEvents = useSelector(selectActiveMapEvents)\n const mapEventsKeys = activeMapEvents.map(({ key }) => key)\n\n const getPolylinesOrClickableLayersAroundPointer = useErrorBoundaryCallback(\n event =>\n map.queryRenderedFeatures(getBBoxAroundPointer(event)).find(feature => {\n const layerId = feature.layer?.id ?? ''\n const polyline = LAYER_ID_POLYLINE.test(layerId)\n const cmm = isFrenchSite ? LAYER_ID_CMM.test(layerId) : false\n const isMapEvent = mapEventsKeys.find(key => layerId.includes(key))\n return polyline || cmm || isMapEvent\n }),\n [map, isFrenchSite, mapEventsKeys]\n )\n\n const handleMouseOver = useErrorBoundaryCallback(\n e => {\n const shouldDisplayPointer = getPolylinesOrClickableLayersAroundPointer(e)\n if (shouldDisplayPointer) {\n map.getCanvas().style.cursor = 'pointer'\n } else if (quizGuessInProgress) {\n map.getCanvas().style.cursor = 'crosshair'\n } else {\n map.getCanvas().style.cursor = ''\n }\n },\n [map, getPolylinesOrClickableLayersAroundPointer, quizGuessInProgress]\n )\n\n useEffect(() => {\n if (isGE()) {\n if (map && mapReady) map.on('mousemove', handleMouseOver)\n return () => {\n if (map) map.off('mousemove', handleMouseOver)\n }\n }\n }, [map, mapReady, handleMouseOver])\n}\n\nexport default useMapPointerHandler\n","import { useSelector } from 'react-redux'\nimport { setMapEventPopin } from '../../../store/map/map.actions'\nimport { MAP_STATUS_STYLED } from '../../../store/map/map.constants'\nimport {\n selectActiveMapEvents,\n selectMapStatus,\n selectShouldDisplayMapEventPopin\n} from '../../../store/map/map.selectors'\nimport { useAction } from '../../utils/react-redux'\nimport useErrorBoundaryCallback from '../../utils/useErrorBoundaryCallback'\nimport { useEffectWithMapContext } from '../MapContext'\n\nconst useClickMapEventsHandler = () => {\n const status = useSelector(selectMapStatus)\n const exectSetPopin = useAction(setMapEventPopin)\n const activeMapEvents = useSelector(selectActiveMapEvents)\n const shouldDisplayMapEventPopin = useSelector(selectShouldDisplayMapEventPopin)\n\n const handleClick = useErrorBoundaryCallback(e => {\n if (e.handled) return\n e.handled = true\n const feature = e?.features?.[0]\n if (feature) {\n exectSetPopin(feature.properties)\n }\n })\n\n useEffectWithMapContext(\n map => {\n if (!map.getStyle() || status !== MAP_STATUS_STYLED || !shouldDisplayMapEventPopin) return\n\n map\n .getStyle()\n .layers.filter(layer => layer.layout)\n .forEach(({ id }) => {\n activeMapEvents.forEach(mapEvent => {\n if (id.includes(mapEvent.key)) {\n map.on('click', id, handleClick)\n }\n })\n })\n\n return () => {\n if (map.getStyle()) {\n map\n .getStyle()\n .layers.filter(layer => layer.layout)\n .forEach(({ id }) => {\n map.off('click', id, handleClick)\n })\n }\n }\n },\n [status, shouldDisplayMapEventPopin]\n )\n}\n\nexport default useClickMapEventsHandler\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsQuizPage } from '../../store/history/history.selectors'\nimport { selectIsVectorMap } from '../../store/map/map.selectors'\nimport MapEventPopin from '../genericComponents/MapEventPopin'\nimport UPI from '../outdoor/UPI'\nimport Geolocation from './Geolocation'\nimport MapProvider from './MapProvider'\nimport ContextMenu from './contextmenu/ContextMenu'\nimport MapDebugger from './debug/MapDebugger'\nimport AddressMarkersContainer from './markers/AddressMarkersContainer'\nimport GeolocMarker from './markers/GeolocMarker'\nimport Popup from './popup/Popup'\nimport RasterMap from './raster/RasterMap'\nimport MapAddressContour from './shape/MapAddressContour'\nimport Copyrights from './tools/Copyrights'\nimport GeolocButton from './tools/GeolocButton'\nimport Logo from './tools/Logo'\nimport OutdoorButton from './tools/OutdoorButton'\nimport Scale from './tools/Scale'\nimport ToggleFullScreenGeButton from './tools/ToggleFullScreenGeButton'\nimport ToggleFullscreenPeButton from './tools/ToggleFullscreenPeButton'\nimport TrafficLegend from './tools/TrafficLegend'\nimport ZoomButtons from './tools/ZoomButtons'\nimport VectorMap from './vector/VectorMap'\n\n// webpack:BrowserOnly\nconst DynamicMap = ({ children }) => {\n const pageIsQuiz = useSelector(selectIsQuizPage)\n const vectorMap = useSelector(selectIsVectorMap)\n\n return (\n \n {/* Order matters : at least for GeolocMarker and GeolocButton */}\n \n \n \n \n \n \n \n {!pageIsQuiz && }\n \n \n \n \n \n \n \n \n \n \n {vectorMap ? : }\n {children}\n \n )\n}\n\nexport default DynamicMap\n","\n export default function () {\n return null\n }\n ","import React, { useCallback, useEffect, useState } from 'react'\nimport { getService } from '../../parameters'\nimport SERVICES from '../../services.constants'\nimport request from '../utils/request'\nimport { ONE_SECOND_MS, ONE_WEEK_MS } from '../utils/date'\nimport { isPE, withOnlyBrowser } from '../Device'\nimport s from './AskForUpdate.less'\nimport useEventCallback from '../utils/useEventCallback'\nimport { useSelector } from 'react-redux'\nimport { selectHeaderHeight } from '../../store/ui/ui.selectors'\nimport { HEADER_SUBHEADER_HEIGHT } from '../header/header-constants'\nimport { selectLocale } from '../../store/locale/locale.selectors'\nimport { translate } from '../i18n/T'\nimport debug from 'debug'\n\nconst d = debug('update')\n\nconst TEST_MODE = location.hash === '#test-update'\n\nconst DELAY_BETWEEN_CHECKS = TEST_MODE ? 10 * ONE_SECOND_MS : 2 * ONE_WEEK_MS // ONE_MONTH_MS cause setInterval to be called in loop\n\nif (d.enabled) {\n d('delay between checks', DELAY_BETWEEN_CHECKS)\n}\n\nexport const fetchVersion = () => {\n const serviceUrl = getService(SERVICES.WEB_VERSION)\n return request\n .get(serviceUrl, { silent: true })\n .then(({ data }) => data)\n .catch(e => console.warn('error while fetching version', e))\n}\n\n// webpack:BrowserOnly\nconst AskForUpdate = () => {\n const [version, setVersion] = useState(global.__APP_VERSION__)\n const isSameVersion = global.__APP_VERSION__ === version\n const locale = useSelector(selectLocale)\n const t = translate(locale)\n\n if (d.enabled) {\n d('version:', version, 'isSameVersion:', isSameVersion)\n }\n\n const headerHeight = useSelector(selectHeaderHeight)\n const height = isPE() ? headerHeight + HEADER_SUBHEADER_HEIGHT + 30 : 80\n\n const loadVersion = useCallback(async () => {\n const newVersion = await fetchVersion()\n if (d.enabled) {\n d('loadVersion, got:', newVersion, 'vs:', version)\n }\n if (newVersion) {\n setVersion(TEST_MODE ? 'v+' : newVersion)\n }\n }, [setVersion])\n\n useEffect(() => {\n if (!isSameVersion) return\n const intervalId = setInterval(() => {\n loadVersion()\n }, DELAY_BETWEEN_CHECKS)\n return () => clearInterval(intervalId)\n }, [isSameVersion, loadVersion])\n\n const reload = useEventCallback(() => location.reload(), [])\n\n if (isSameVersion) return <>\n\n return (\n
    \n {t('update.msg')}\n \n {t('update.refresh')}\n \n
    \n )\n}\n\nexport default withOnlyBrowser(AskForUpdate)\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"pjDqI\",\"refresh\":\"idODq\"};","import React from 'react'\nimport DynamicMap from './DynamicMap'\nimport StaticMap from './StaticMap'\nimport AskForUpdate from '../genericComponents/AskForUpdate'\nimport './StaticMap.less'\n\nexport default function Map(props) {\n return (\n <>\n {props.staticMap}\n \n \n \n )\n}\n","import React, { useCallback, useContext, useEffect } from 'react'\n\nexport const MapContext = React.createContext(undefined)\n\nexport const useMapContext = () => useContext(MapContext)\n\nexport const useEffectWithMapContext = (fn, deps) => {\n const { map } = useMapContext()\n\n useEffect(() => (map ? fn(map) : undefined), [map, ...deps])\n}\n\nexport const useCallbackWithMapContext = (fn, deps = []) => {\n const { map } = useMapContext()\n return useCallback(\n (...args) => {\n if (!map) return\n return fn(map, ...args)\n },\n [map, ...deps]\n )\n}\n","import React from 'react'\n\nconst ImageMarker = ({ src, height, width }) => {\n if (!src || !height || !width) return <>\n\n const imgStyle = {\n backgroundSize: 'cover',\n width: width + 'px',\n height: height + 'px'\n }\n\n return \n}\n\nexport default ImageMarker\n","import React from 'react'\nimport s from './IconMarker.less'\nimport SVGIcon from '../../svg/SVGIcon'\n\nexport default function IconMarker({ icon, color, size, insideSvgSize }) {\n return (\n \n
    \n \n
    \n \n )\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"iconMarker\":\"DlHr8\"};","import React from 'react'\n\nexport default function RubricMarker({ className, color }) {\n return (\n \n \n`\n }}\n />\n )\n}\n","import React, { useEffect, useRef } from 'react'\nimport { useMapContext } from '../MapContext'\nimport ImageMarker from './ImageMarker'\nimport IconMarker from './IconMarker'\nimport { hasTouchSupport } from '../../Device'\nimport s from './Marker.less'\nimport RubricMarker from './RubricMarker'\nimport classNames from 'classnames'\n\nimport { Marker as MapLibreMarker } from 'maplibre-gl'\nimport { HTML_MARKER, IMAGE_MARKER } from './MarkerConstants'\nimport useErrorBoundaryCallback from '../../utils/useErrorBoundaryCallback'\n\nconst HTMLMarker = ({ html }) => html\n\n// webpack:BrowserOnly\nconst Marker = props => {\n const {\n isCurrent,\n type,\n color,\n coordinates: { lng, lat },\n anchorPosition = 'bottom',\n insideSvgSize,\n icon,\n src,\n size,\n height,\n width,\n dragOptions,\n html,\n children\n } = props\n const { map } = useMapContext()\n const markerElementRef = useRef()\n const mapLibreMarkerRef = useRef()\n const isDraggable = dragOptions && dragOptions.onDragEnd\n\n const onClick = e => {\n e.preventDefault()\n e.stopPropagation()\n props.onClick?.(e)\n }\n\n const onSelect = e => {\n e.preventDefault()\n e.stopPropagation()\n props.onSelect?.(e)\n }\n\n const onUnselect = e => {\n e.preventDefault()\n e.stopPropagation()\n props.onUnselect?.(e)\n }\n\n const handleEvents = useErrorBoundaryCallback(\n method => {\n if (mapLibreMarkerRef?.current?.getElement) {\n const mapMarker = mapLibreMarkerRef.current.getElement()\n if (hasTouchSupport()) {\n mapMarker[method]('click', onClick)\n } else {\n mapMarker[method]('mouseenter', onSelect)\n mapMarker[method]('mouseleave', onUnselect)\n if (props.onClick) mapMarker[method]('click', onClick)\n }\n }\n },\n [onClick, onSelect, onUnselect]\n )\n\n const attachEvents = useErrorBoundaryCallback(() => {\n handleEvents('addEventListener')\n if (isDraggable && mapLibreMarkerRef.current) {\n mapLibreMarkerRef.current.on('dragend', dragOptions.onDragEnd)\n }\n }, [handleEvents])\n\n const unattachEvents = useErrorBoundaryCallback(() => {\n handleEvents('removeEventListener')\n if (isDraggable && mapLibreMarkerRef.current) {\n mapLibreMarkerRef.current.off('dragend', dragOptions.onDragEnd)\n }\n }, [handleEvents])\n\n const buildMarker = () => {\n const {\n current: { firstChild }\n } = markerElementRef\n if (!map || !lng || !lat) return\n\n mapLibreMarkerRef.current = new MapLibreMarker({\n element: firstChild,\n anchor: anchorPosition,\n draggable: Boolean(dragOptions)\n })\n .setLngLat([lng, lat])\n .addTo(map)\n }\n\n useEffect(() => {\n if (!mapLibreMarkerRef.current) {\n buildMarker()\n }\n\n return () => {\n if (mapLibreMarkerRef.current) {\n mapLibreMarkerRef.current.remove()\n mapLibreMarkerRef.current = null\n }\n }\n }, [])\n\n useEffect(() => {\n attachEvents()\n return () => {\n unattachEvents()\n }\n }, [attachEvents, unattachEvents])\n\n const renderMarkerType = () => {\n switch (type) {\n case IMAGE_MARKER:\n return \n case HTML_MARKER:\n return \n default:\n return \n }\n }\n\n return (\n
    \n
    \n {isCurrent && type !== IMAGE_MARKER && (\n
    \n \n
    \n )}\n \n {children}\n {renderMarkerType()}\n
    \n
    \n \n )\n}\n\nexport default Marker\n","// extracted by mini-css-extract-plugin\nexport default {\"marker\":\"jtp3D\",\"activeMarker\":\"ciwvM\",\"pinWrapper\":\"ebbmK\",\"activeMarkerWrapper\":\"ulr57\",\"activeMarkerWrapperImage\":\"PkaFp\"};","import React from 'react'\nimport { buildForceColorFullString } from '../utils/css'\n\nexport const itemClassName = 'categorySubItem'\nexport const iconClassName = 'categorySubItemIcon'\n\nconst CategorySubMenuStyle = ({ color }) => {\n const catColorString = buildForceColorFullString(color)\n const whiteColorString = buildForceColorFullString('white')\n\n return (\n \n )\n}\n\nexport default CategorySubMenuStyle\n","import React from 'react'\nimport { navigateToSearchByApp, navigateToPoisOnRouteByApp } from '../../store/history/history.actions'\nimport { TAG_CLICK_CATEGORY_BAR } from '../../store/analytics/analytics.actionTypes'\nimport { dispatchTag } from '../../store/analytics/analytics.actions'\nimport { APP_OR_SUBCAT_ID, CAT_ID } from '../analytics/ClickTagsService'\nimport { useAction } from '../utils/react-redux'\nimport s from './MenuSubCategoryItem.less'\nimport { itemClassName } from './CategorySubMenuStyle'\nimport classnames from 'classnames'\nimport { selectIsPageElligibleForPoisOnRoute } from '../../store/history/history.selectors'\nimport { useSelector } from 'react-redux'\n\nconst MenuApplicationItem = ({ id, logo, name, categoryId, onClick }) => {\n const execNavigateToSmrByApp = useAction(navigateToPoisOnRouteByApp)\n const execDispatchTag = useAction(dispatchTag)\n const execNavigateToSearchByApp = useAction(navigateToSearchByApp)\n\n const isPageElligibleForPoisOnRoute = useSelector(selectIsPageElligibleForPoisOnRoute)\n\n const onApplicationClick = (categoryId, appId) => e => {\n execDispatchTag({\n type: TAG_CLICK_CATEGORY_BAR,\n tagInfo: {\n [CAT_ID]: categoryId,\n [APP_OR_SUBCAT_ID]: appId\n }\n })\n\n if (isPageElligibleForPoisOnRoute) {\n execNavigateToSmrByApp(id)\n } else {\n execNavigateToSearchByApp(appId)\n }\n onClick()\n }\n\n return (\n
  • \n \n \n \n {name}\n
  • \n )\n}\n\nexport default MenuApplicationItem\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"foxyP\",\"header\":\"IEtW9\",\"title\":\"DKLdx\",\"close\":\"jzokH\",\"itemsWrapper\":\"OFFcm\",\"items\":\"PkQ7E\"};","import React from 'react'\nimport { selectCategoriesItemById, selectSubCategoriesMenu } from '../../store/poiassets/poiassets.selectors'\nimport cross from '../genericComponents/assets/cross.svg'\nimport SVGIcon from '../svg/SVGIcon'\nimport { useSelectorWithProps } from '../utils/react-redux'\nimport CategorySubMenuStyle from './CategorySubMenuStyle'\nimport MenuApplicationItem from './MenuApplicationItem'\nimport s from './MenuSubCategoriesPE.less'\nimport MenuSubCategoryItem from './MenuSubCategoryItem'\nimport usePublisherBarreCategorieTag from './usePublisherBarreCategorieTag'\n\nconst MenuSubCategoriesPE = ({ categoryId, onMouseLeaveMenu }) => {\n const { subcategories, apps, color } = useSelectorWithProps(selectSubCategoriesMenu, { id: categoryId })\n const { label } = useSelectorWithProps(selectCategoriesItemById, { id: categoryId })\n\n usePublisherBarreCategorieTag(categoryId)\n\n if (!categoryId) return <>\n\n return (\n
    \n
    \n
    \n \n
    \n

    {label}

    \n
    \n
    \n
      \n {subcategories.map(({ id, iconId, label, rubricIds }) => (\n \n ))}\n
    \n
      \n {apps.map(({ id, mob_roundImage, name }) => (\n \n ))}\n
    \n \n
    \n
    \n )\n}\n\nexport default MenuSubCategoriesPE\n","import React, { useEffect, useState } from 'react'\nimport s from './MenuCategoriesPE.less'\nimport { useSelector } from 'react-redux'\nimport { loadPoiAssetsConfiguration } from '../../store/poiassets/poiassets.actions'\nimport { selectCategoriesMenu } from '../../store/poiassets/poiassets.selectors'\nimport MenuSubCategoriesPE from './MenuSubCategoriesPE'\nimport MenuCategoryItem from './MenuCategoryItem'\nimport { withEmptyFallbackErrorBoundary } from '../error/EmptyFallbackErrorBoundary'\nimport { useAction } from '../utils/react-redux'\nimport useUIDisplay from '../ui/useUIDisplay'\nimport { UI_ELEMENTS } from '../../store/ui/ui.constants'\nimport { isPE } from '../Device'\nimport { selectIsFrenchSite } from '../../store/locale/locale.selectors'\n\nconst MenuCategoriesPE = () => {\n const [categoryId, setCategoryId] = useState()\n const execLoadPoiAssetsConfiguration = useAction(loadPoiAssetsConfiguration)\n useEffect(() => {\n execLoadPoiAssetsConfiguration()\n }, [execLoadPoiAssetsConfiguration])\n const categories = useSelector(selectCategoriesMenu)\n const { showUI, hideUI } = useUIDisplay(UI_ELEMENTS.MENU_PE)\n\n const onTap = id => e => {\n const shouldHide = categoryId === id\n setCategoryId(shouldHide ? null : id)\n shouldHide ? hideUI() : showUI()\n }\n if (!categories || !categories.length) return <>\n\n return (\n
    \n
      \n {categories.map(({ id, shortLabel, iconId, color }) => (\n \n ))}\n
    \n {categoryId && }\n
    \n )\n}\n\nexport const isMenuCategoriesPEAvailable = getState => isPE() && selectIsFrenchSite(getState())\n\nexport default withEmptyFallbackErrorBoundary(MenuCategoriesPE)\n","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"V0HtR\",\"categories\":\"igsQL\"};","import React from 'react'\nimport SVGIcon from '../svg/SVGIcon'\nimport s from './MenuCategoryItem.less'\nimport { buildStyleAttributes, hexToRgb } from '../utils/css'\n\nconst MenuCategoryItem = ({ id, shortLabel, iconId, color, selected, active, onMouseOver, onCategoryClick }) => {\n const labelStyle = {}\n const iconStyle = {}\n\n if (selected) {\n iconStyle.borderColor = color\n iconStyle.backgroundColor = color\n iconStyle.fill = 'white'\n labelStyle.color = color\n } else if (active) {\n iconStyle.borderColor = hexToRgb(color, 0.5)\n iconStyle.fill = color\n }\n\n return (\n
  • \n
    \n \n {__BROWSER__ && }\n \n \n {shortLabel}\n \n
    \n
  • \n )\n}\n\nexport default MenuCategoryItem\n","// extracted by mini-css-extract-plugin\nexport default {\"category\":\"yS3Nd\",\"categoryItem\":\"pR5H5\",\"categoryLabel\":\"XeZhr\",\"categoryIcon\":\"Dc0cl\"};","import React from 'react'\nimport s from './MenuSubCategoryItem.less'\nimport SVGIcon from '../svg/SVGIcon'\nimport { navigateToSearchBySubcategory, navigateToPoisOnRouteBySubcategory } from '../../store/history/history.actions'\nimport { TAG_CLICK_CATEGORY_BAR } from '../../store/analytics/analytics.actionTypes'\nimport { dispatchTag } from '../../store/analytics/analytics.actions'\nimport { APP_OR_SUBCAT_ID, CAT_ID } from '../analytics/ClickTagsService'\nimport { useAction } from '../utils/react-redux'\nimport classnames from 'classnames'\nimport { iconClassName, itemClassName } from './CategorySubMenuStyle'\nimport { useSelector } from 'react-redux'\nimport { selectIsPageElligibleForPoisOnRoute } from '../../store/history/history.selectors'\n\nconst MenuSubCategoryItem = ({ id, categoryId, iconId, label, onClick }) => {\n const execNavigateToSmrBySubCategory = useAction(navigateToPoisOnRouteBySubcategory)\n const execDispatchTag = useAction(dispatchTag)\n const execNavigateToSearchBySubcategory = useAction(navigateToSearchBySubcategory)\n\n const isPageElligibleForPoisOnRoute = useSelector(selectIsPageElligibleForPoisOnRoute)\n\n const onSubCategoryClick = () => e => {\n execDispatchTag({\n type: TAG_CLICK_CATEGORY_BAR,\n tagInfo: {\n [CAT_ID]: categoryId,\n [APP_OR_SUBCAT_ID]: id\n }\n })\n\n if (isPageElligibleForPoisOnRoute) {\n execNavigateToSmrBySubCategory(id)\n } else {\n execNavigateToSearchBySubcategory(id)\n }\n onClick()\n }\n\n return (\n
  • \n \n \n \n {label}\n
  • \n )\n}\n\nexport default MenuSubCategoryItem\n","import { useEffect } from 'react'\nimport { dispatchTag } from '../../store/analytics/analytics.actions'\nimport { TAG_MULTIPATH_CTA } from '../../store/analytics/analytics.actionTypes'\nimport { PUB_TAG } from '../analytics/PublisherTagsService'\nimport { useAction } from '../utils/react-redux'\nimport useTimeout from '../utils/useTimeout'\n\nexport default function usePublisherBarreCategorieTag(categoryId) {\n const execDispatchTag = useAction(dispatchTag)\n const [setPublisherTagTimeout, clearPublisherTagTimeout] = useTimeout(1000)\n\n useEffect(() => {\n setPublisherTagTimeout(() =>\n execDispatchTag({\n type: TAG_MULTIPATH_CTA,\n tagInfo: { tag: PUB_TAG.PUB_AFFICHAGE_BARRECATEGORIE, catId: categoryId },\n isImpression: true\n })\n )\n return clearPublisherTagTimeout\n }, [categoryId])\n}\n","import {\n ROUTE_ADDRESS_HOME,\n ROUTE_BICYCLE_CITY,\n ROUTE_BICYCLE_DEPARTMENT,\n ROUTE_BICYCLE_HOME,\n ROUTE_BICYCLE_REGION,\n ROUTE_DEPARTMENT_HOME,\n ROUTE_HOME,\n ROUTE_ITINERARY_COMPUTING,\n ROUTE_ITINERARY_COMPUTING_BY_MODE,\n ROUTE_ITINERARY_EXPENSE_REPORT,\n ROUTE_ITINERARY_HOME,\n ROUTE_ITINERARY_HP_BY_MODE,\n ROUTE_ITINERARY_RESULTS_BY_PROVIDER,\n ROUTE_ITINERARY_RESULTS_BY_ROUTE,\n ROUTE_ITINERARY_ROADBOOK,\n ROUTE_ITINERARY_TO,\n ROUTE_REGION_HOME,\n ROUTE_RESTRICTION_CITY,\n ROUTE_RESTRICTION_DEPARTMENT,\n ROUTE_RESTRICTION_HOME,\n ROUTE_RESTRICTION_REGION,\n ROUTE_SEO_ADDRESS,\n ROUTE_SEO_CITY_ACTIVITY,\n ROUTE_SEO_CITY_APP,\n ROUTE_SEO_DIRECTORY_CITY,\n ROUTE_SEO_DIRECTORY_CITY_ACTIVITY,\n ROUTE_SEO_DIRECTORY_CITY_OVM_POIS,\n ROUTE_SEO_DIRECTORY_CITY_OVM_POIS_ACTIVITY,\n ROUTE_SEO_DIRECTORY_CITY_POIS,\n ROUTE_SEO_DIRECTORY_ITINERARY,\n ROUTE_SEO_DIRECTORY_ITINERARY_BY_MODE,\n ROUTE_SEO_GEOENTITY,\n ROUTE_SEO_ITINERARY,\n ROUTE_SEO_ITINERARY_MODE,\n ROUTE_SEO_SEARCH_BY_APP,\n ROUTE_SEO_SEARCH_BY_RUBRIC,\n ROUTE_TOOLS_COMPUTE_RADIUS,\n ROUTE_TRAFFIC_CITY,\n ROUTE_TRAFFIC_DEPARTMENT,\n ROUTE_TRAFFIC_HOME,\n ROUTE_TRAFFIC_REGION,\n ROUTE_ZFE_CITY,\n ROUTE_ZFE_DEPARTMENT,\n ROUTE_ZFE_HOME,\n ROUTE_ZFE_REGION\n} from '../../../routes'\nimport { selectFirstAddress } from '../../../store/address/address.selectors'\nimport { selectSelectedGeoentity } from '../../../store/geoentity/geoentity.selectors'\nimport { selectCurrentHistoryRoute } from '../../../store/history/history.selectors'\nimport { projectDistrictZipcodeToWholeCityZipcode } from '../../utils/location'\nimport { createCustomSelector } from '../../utils/react-reselect'\n\nexport const selectShouldDisplayTopSearchTitle = createCustomSelector(\n selectCurrentHistoryRoute,\n route => route !== ROUTE_SEO_ITINERARY && route !== ROUTE_SEO_ITINERARY_MODE\n)\n\nexport const selectSeoItineraryLinkLabelPrefix = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_HOME:\n case ROUTE_SEO_GEOENTITY:\n return ''\n case ROUTE_SEO_CITY_ACTIVITY:\n return 'Trajet'\n case ROUTE_ADDRESS_HOME:\n case ROUTE_SEO_ADDRESS:\n case ROUTE_TRAFFIC_CITY:\n case ROUTE_BICYCLE_CITY:\n case ROUTE_SEO_DIRECTORY_CITY_ACTIVITY:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS:\n case ROUTE_ZFE_CITY:\n case ROUTE_RESTRICTION_CITY:\n return 'Distance'\n case ROUTE_ITINERARY_HP_BY_MODE:\n case ROUTE_SEO_ITINERARY_MODE:\n return 'Itinéraire {mode}'\n case ROUTE_TRAFFIC_HOME:\n return 'Itinéraire voiture'\n case ROUTE_BICYCLE_HOME:\n return 'Itinéraire à vélo'\n case ROUTE_ITINERARY_HOME:\n case ROUTE_SEO_ITINERARY:\n default:\n return 'Itinéraire'\n }\n})\n\nexport const selectSeoCityLinkLabelPrefixKey = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_TRAFFIC_HOME:\n case ROUTE_BICYCLE_HOME:\n case ROUTE_ZFE_HOME:\n case ROUTE_RESTRICTION_HOME:\n return 'footer.cityLink.label.map'\n default:\n return 'footer.cityLink.label.default'\n }\n})\n\nexport const selectSeoInfoTrafficOptions = createCustomSelector(\n selectCurrentHistoryRoute,\n selectFirstAddress,\n selectSelectedGeoentity,\n (route, firstAddress, selectedGeoentity) => {\n switch (route) {\n case ROUTE_ADDRESS_HOME:\n return { max: 10, hpLinkLabel: 'Info trafic en temps réel' }\n\n case ROUTE_SEO_ADDRESS:\n case ROUTE_SEO_CITY_ACTIVITY:\n case ROUTE_SEO_DIRECTORY_CITY_ACTIVITY:\n case ROUTE_SEO_DIRECTORY_CITY_POIS:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS_ACTIVITY:\n return { zip: projectDistrictZipcodeToWholeCityZipcode(firstAddress?.postcode) }\n\n case ROUTE_SEO_GEOENTITY:\n return { zip: projectDistrictZipcodeToWholeCityZipcode(selectedGeoentity?.postcode) }\n\n case ROUTE_TRAFFIC_HOME:\n return { min: 20, max: 200 }\n\n case ROUTE_TRAFFIC_CITY:\n return { max: 20 }\n\n case ROUTE_HOME:\n case ROUTE_BICYCLE_CITY:\n case ROUTE_ZFE_CITY:\n default:\n return { max: 10 }\n }\n }\n)\n\nexport const selectSeoBicycleOptions = createCustomSelector(\n selectCurrentHistoryRoute,\n selectFirstAddress,\n selectSelectedGeoentity,\n (route, firstAddress, selectedGeoentity) => {\n switch (route) {\n case ROUTE_SEO_DIRECTORY_CITY_ACTIVITY:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS_ACTIVITY:\n case ROUTE_SEO_ADDRESS:\n return {\n linksLabel: 'Carte Pistes cyclables',\n zip: projectDistrictZipcodeToWholeCityZipcode(firstAddress?.postcode)\n }\n\n case ROUTE_SEO_CITY_ACTIVITY:\n case ROUTE_SEO_DIRECTORY_CITY_POIS:\n return {\n hpLinkLabel: 'Pistes Cyclables',\n zip: projectDistrictZipcodeToWholeCityZipcode(firstAddress?.postcode)\n }\n\n case ROUTE_SEO_GEOENTITY:\n return {\n hpLinkLabel: 'Pistes Cyclables',\n zip: projectDistrictZipcodeToWholeCityZipcode(selectedGeoentity?.postcode)\n }\n\n case ROUTE_BICYCLE_DEPARTMENT:\n case ROUTE_BICYCLE_REGION:\n return {\n hpLinkLabel: 'Pistes Cyclables'\n }\n\n case ROUTE_BICYCLE_HOME:\n return { min: 20, max: 200 }\n\n case ROUTE_BICYCLE_CITY:\n return { max: 20 }\n\n case ROUTE_HOME:\n case ROUTE_ADDRESS_HOME:\n case ROUTE_TRAFFIC_CITY:\n case ROUTE_ZFE_CITY:\n default:\n return { max: 10 }\n }\n }\n)\n\nexport const selectSeoZfeOptions = createCustomSelector(\n selectCurrentHistoryRoute,\n selectFirstAddress,\n selectSelectedGeoentity,\n (route, firstAddress, selectedGeoentity) => {\n switch (route) {\n case ROUTE_HOME:\n return {\n hpLinkLabel: \"Zone des restrictions Crit'Air\",\n max: 10,\n title: 'Zones à Faibles émissions (ZFE) en France'\n }\n case ROUTE_ADDRESS_HOME:\n return {\n hpLinkLabel: \"Restrictions Crit'Air\",\n linksLabel: \"Crit'Air\",\n max: 10\n }\n case ROUTE_SEO_GEOENTITY:\n return {\n hpLinkLabel: \"Zones Crit'Air\",\n zip: projectDistrictZipcodeToWholeCityZipcode(selectedGeoentity?.postcode)\n }\n case ROUTE_SEO_ADDRESS:\n case ROUTE_SEO_DIRECTORY_CITY_ACTIVITY:\n case ROUTE_SEO_DIRECTORY_CITY_POIS:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS:\n case ROUTE_SEO_DIRECTORY_CITY_OVM_POIS_ACTIVITY:\n return {\n hpLinkLabel: \"Zones Crit'Air\",\n zip: projectDistrictZipcodeToWholeCityZipcode(firstAddress?.postcode),\n linksLabel: \"Crit'Air\"\n }\n case ROUTE_SEO_CITY_ACTIVITY:\n return {\n hpLinkLabel: 'Carte des ZFE',\n zip: projectDistrictZipcodeToWholeCityZipcode(firstAddress?.postcode),\n linksLabel: \"Restrictions Crit'Air\"\n }\n case ROUTE_ZFE_HOME:\n return { hpLinkLabel: 'Carte des ZFE en France', min: 20, max: 200 }\n case ROUTE_TRAFFIC_CITY:\n case ROUTE_RESTRICTION_CITY:\n return { hpLinkLabel: 'Plan des ZFE', max: 10 }\n case ROUTE_BICYCLE_CITY:\n return { hpLinkLabel: 'Zone des restrictions Crit’Air', max: 10 }\n case ROUTE_ZFE_CITY:\n return {\n hpLinkLabel: 'Zone des restrictions Crit’Air',\n max: 20,\n title: 'Zones à Faibles émissions (ZFE) en France'\n }\n default:\n return { max: 10 }\n }\n }\n)\n\nexport const selectSeoRestrictionOptions = createCustomSelector(\n selectCurrentHistoryRoute,\n selectFirstAddress,\n selectSelectedGeoentity,\n (route, firstAddress, selectedGeoentity) => {\n switch (route) {\n case ROUTE_RESTRICTION_HOME:\n return {\n hpLinkLabel: 'Carte des restrictions de circulation en France',\n min: 20,\n max: 200,\n linksLabel: 'Restrictions de circulation'\n }\n default:\n return {\n hpLinkLabel: 'Restrictions de circulation'\n }\n }\n }\n)\n\nexport const selectSeoHpLayersTitle = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_DEPARTMENT_HOME:\n case ROUTE_REGION_HOME:\n case ROUTE_SEO_DIRECTORY_CITY:\n case ROUTE_SEO_DIRECTORY_ITINERARY:\n case ROUTE_SEO_DIRECTORY_ITINERARY_BY_MODE:\n case ROUTE_SEO_SEARCH_BY_APP:\n case ROUTE_TOOLS_COMPUTE_RADIUS:\n case ROUTE_SEO_CITY_APP:\n return 'Options de Carte'\n case ROUTE_TRAFFIC_DEPARTMENT:\n case ROUTE_TRAFFIC_REGION:\n case ROUTE_RESTRICTION_DEPARTMENT:\n case ROUTE_RESTRICTION_REGION:\n return 'Autres affichages de cartes'\n default:\n return 'Affichage des cartes'\n }\n})\n\nexport const selectSeoHpLayersTraffic = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_TRAFFIC_HOME:\n case ROUTE_TRAFFIC_DEPARTMENT:\n case ROUTE_TRAFFIC_REGION:\n return { visible: false }\n case ROUTE_BICYCLE_HOME:\n case ROUTE_ZFE_HOME:\n case ROUTE_RESTRICTION_HOME:\n case ROUTE_SEO_SEARCH_BY_RUBRIC:\n return { visible: true, min: 0, max: 0, hpLinkLabel: 'Info trafic en temps réel' }\n case ROUTE_DEPARTMENT_HOME:\n case ROUTE_REGION_HOME:\n case ROUTE_BICYCLE_DEPARTMENT:\n case ROUTE_BICYCLE_REGION:\n case ROUTE_ZFE_DEPARTMENT:\n case ROUTE_ZFE_REGION:\n return { visible: true, hpLinkLabel: \"Carte de l'Info-trafic\" }\n default:\n return { visible: true, min: 0, max: 0 }\n }\n})\n\nexport const selectSeoHpLayersBicycle = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_BICYCLE_HOME:\n case ROUTE_BICYCLE_DEPARTMENT:\n case ROUTE_BICYCLE_REGION:\n return { visible: false }\n case ROUTE_TRAFFIC_HOME:\n case ROUTE_RESTRICTION_HOME:\n case ROUTE_ZFE_HOME:\n return { visible: true }\n case ROUTE_DEPARTMENT_HOME:\n case ROUTE_REGION_HOME:\n return { visible: true, hpLinkLabel: 'Plan des Pistes Cyclables' }\n case ROUTE_SEO_SEARCH_BY_RUBRIC:\n case ROUTE_TRAFFIC_DEPARTMENT:\n case ROUTE_TRAFFIC_REGION:\n case ROUTE_ZFE_DEPARTMENT:\n case ROUTE_ZFE_REGION:\n case ROUTE_RESTRICTION_DEPARTMENT:\n case ROUTE_RESTRICTION_REGION:\n return { visible: true, hpLinkLabel: 'Carte des pistes cyclables' }\n default:\n return { visible: true, hpLinkLabel: 'Pistes Cyclables' }\n }\n})\n\nexport const selectSeoHpLayersZfe = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_ITINERARY_HOME:\n case ROUTE_ITINERARY_HP_BY_MODE:\n case ROUTE_ITINERARY_TO:\n case ROUTE_ITINERARY_COMPUTING:\n case ROUTE_ITINERARY_COMPUTING_BY_MODE:\n case ROUTE_ITINERARY_RESULTS_BY_PROVIDER:\n case ROUTE_ITINERARY_RESULTS_BY_ROUTE:\n case ROUTE_ITINERARY_EXPENSE_REPORT:\n case ROUTE_ITINERARY_ROADBOOK:\n case ROUTE_SEO_ITINERARY:\n case ROUTE_SEO_ITINERARY_MODE:\n case ROUTE_SEO_SEARCH_BY_RUBRIC:\n return { visible: true, hpLinkLabel: \"Restrictions Crit'Air\" }\n case ROUTE_SEO_DIRECTORY_ITINERARY_BY_MODE:\n case ROUTE_SEO_DIRECTORY_ITINERARY:\n return { visible: true, hpLinkLabel: 'Carte ZFE' }\n case ROUTE_BICYCLE_HOME:\n case ROUTE_RESTRICTION_HOME:\n return { visible: true, hpLinkLabel: 'Carte des ZFE en France' }\n case ROUTE_SEO_DIRECTORY_CITY:\n case ROUTE_TRAFFIC_HOME:\n case ROUTE_SEO_SEARCH_BY_APP:\n case ROUTE_TOOLS_COMPUTE_RADIUS:\n case ROUTE_SEO_CITY_APP:\n return { visible: true, hpLinkLabel: 'Carte des ZFE' }\n case ROUTE_REGION_HOME:\n case ROUTE_DEPARTMENT_HOME:\n return { visible: true, hpLinkLabel: 'Plan des ZFE en France' }\n case ROUTE_TRAFFIC_DEPARTMENT:\n case ROUTE_TRAFFIC_REGION:\n case ROUTE_BICYCLE_DEPARTMENT:\n case ROUTE_BICYCLE_REGION:\n case ROUTE_RESTRICTION_DEPARTMENT:\n case ROUTE_RESTRICTION_REGION:\n return { visible: true, hpLinkLabel: 'Plan des ZFE' }\n default:\n return { visible: false }\n }\n})\n\nexport const selectSeoHpLayersRestriction = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_TRAFFIC_HOME:\n case ROUTE_SEO_SEARCH_BY_RUBRIC:\n case ROUTE_SEO_DIRECTORY_ITINERARY_BY_MODE:\n case ROUTE_SEO_DIRECTORY_ITINERARY:\n case ROUTE_SEO_DIRECTORY_CITY:\n case ROUTE_TOOLS_COMPUTE_RADIUS:\n return { visible: true, hpLinkLabel: 'Restrictions de circulation en temps réel' }\n case ROUTE_BICYCLE_HOME:\n case ROUTE_ITINERARY_HP_BY_MODE:\n case ROUTE_ITINERARY_HOME:\n case ROUTE_SEO_ITINERARY_MODE:\n case ROUTE_SEO_ITINERARY:\n case ROUTE_SEO_CITY_APP:\n return { visible: true, hpLinkLabel: 'Restrictions de circulation' }\n case ROUTE_ZFE_HOME:\n case ROUTE_ZFE_REGION:\n case ROUTE_ZFE_DEPARTMENT:\n case ROUTE_TRAFFIC_REGION:\n case ROUTE_TRAFFIC_DEPARTMENT:\n case ROUTE_BICYCLE_REGION:\n case ROUTE_BICYCLE_DEPARTMENT:\n case ROUTE_DEPARTMENT_HOME:\n case ROUTE_REGION_HOME:\n case ROUTE_SEO_SEARCH_BY_APP:\n return { visible: true, hpLinkLabel: 'Carte des restrictions de circulation' }\n default:\n return { visible: false }\n }\n})\n\nexport const selectSeoPoiDirectoryLabelPrefix = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_SEO_DIRECTORY_CITY_ACTIVITY:\n return 'Tous les commerces et services de'\n default:\n return 'Commercants de'\n }\n})\n\nexport const selectSeoPoiOvmDirectoryLabelPrefix = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_SEO_DIRECTORY_CITY_POIS:\n case ROUTE_SEO_DIRECTORY_CITY_ACTIVITY:\n return 'Tous les Lieux et commerçants populaires à'\n default:\n return 'Plus de lieux populaires à'\n }\n})\n\nexport const selectSeoActivitiesTitle = createCustomSelector(selectCurrentHistoryRoute, route => {\n switch (route) {\n case ROUTE_SEO_SEARCH_BY_APP:\n case ROUTE_SEO_SEARCH_BY_RUBRIC:\n return 'Les villes les plus recherchées pour la catégorie Hôtel'\n default:\n return 'Activités à découvrir en France'\n }\n})\n","export const KEYS = {\n DOWN: 'ArrowDown',\n UP: 'ArrowUp',\n ENTER: 'Enter',\n TAB: 'Tab',\n SHIFT: 'Shift'\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"SuggestContent\":\"EZNio\",\"SuggestTitle\":\"QoZV9\"};","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectIsUserAccountEnabled, selectIsUserConnected } from '../../store/userAccount/userAccount.selectors'\nimport SuggestContentList from './SuggestContentList'\nimport T from '../i18n/T'\nimport { selectIsSuggestInputValueEmpty } from '../../store/suggest/suggest.selectors'\nimport s from './SuggestContent.less'\nimport { isEmpty } from '../../utils/lang'\n\nconst SuggestFavoritesContent = ({ suggestionsFavorites, idxStartAt, selectedId, updateSelectedId, onClick }) => {\n const isInputValueEmpty = useSelector(selectIsSuggestInputValueEmpty)\n const isConnected = useSelector(selectIsUserConnected)\n const isUserAccountAvailable = useSelector(selectIsUserAccountEnabled)\n const hasFavoriteSuggests = !isConnected ? isUserAccountAvailable : !isEmpty(suggestionsFavorites)\n\n if (!isUserAccountAvailable) return <>\n\n return (\n <>\n {hasFavoriteSuggests && isInputValueEmpty && (\n
    \n \n \n \n
    \n )}\n\n \n \n )\n}\n\nexport default SuggestFavoritesContent\n","import React from 'react'\nimport T from '../i18n/T'\nimport { selectIsSuggestInputValueEmpty } from '../../store/suggest/suggest.selectors'\nimport { useSelector } from 'react-redux'\nimport SuggestContentList from './SuggestContentList'\nimport s from './SuggestContent.less'\nimport { isEmpty } from '../../utils/lang'\n\nconst SuggestSearchHistoryContent = ({\n suggestionsSearchHistory,\n idxStartAt,\n selectedId,\n updateSelectedId,\n onClick\n}) => {\n const isInputValueEmpty = useSelector(selectIsSuggestInputValueEmpty)\n const hasSearchHistorySuggests = !isEmpty(suggestionsSearchHistory)\n\n return (\n <>\n {hasSearchHistorySuggests && isInputValueEmpty && (\n
    \n \n \n \n
    \n )}\n\n \n \n )\n}\nexport default SuggestSearchHistoryContent\n","import React from 'react'\nimport SuggestContentList from './SuggestContentList'\nimport { isEmpty } from '../../utils/lang'\n\nconst SuggestServiceContent = ({ suggestionsService, idxStartAt, selectedId, updateSelectedId, onClick }) => {\n if (isEmpty(suggestionsService)) return <>\n return (\n \n )\n}\nexport default SuggestServiceContent\n","import React from 'react'\nimport T from '../i18n/T'\nimport { useAction } from '../utils/react-redux'\nimport { resetSearchHistory } from '../../store/search/searchHistory/searchHistory.actions'\nimport useEventCallback from '../utils/useEventCallback'\nimport s from './SuggestClearHistory.less'\nimport { isEmpty } from '../../utils/lang'\n\nconst SuggestClearHistory = ({ suggestionsSearchHistory }) => {\n const hasSearchHistorySuggests = !isEmpty(suggestionsSearchHistory)\n const execResetSearchHistory = useAction(resetSearchHistory)\n\n const onSuggestCleanHistory = useEventCallback(() => {\n execResetSearchHistory()\n }, [])\n\n if (!hasSearchHistorySuggests) return <>\n return (\n
    \n \n \n \n
    \n )\n}\n\nexport default SuggestClearHistory\n","// extracted by mini-css-extract-plugin\nexport default {\"SuggestCleanHistory\":\"cuyUO\"};","import React from 'react'\n\nimport { useSelector } from 'react-redux'\nimport { selectIsSuggestInputValueEmpty } from '../../store/suggest/suggest.selectors'\nimport T from '../i18n/T'\nimport s from './SuggestContentError.less'\n\nconst SuggestContentError = ({ hasSuggests, error }) => {\n const isInputValueEmpty = useSelector(selectIsSuggestInputValueEmpty)\n if (hasSuggests || isInputValueEmpty) return <>\n\n return (\n
    \n \n
    \n )\n}\n\nexport default SuggestContentError\n","// extracted by mini-css-extract-plugin\nexport default {\"SuggestError\":\"qmbIb\"};","import React, { useCallback, useEffect, useRef, useState } from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectAllSuggestions } from '../../store/suggest/suggest.selectors'\nimport { KEYS } from '../../utils/keyboard.constants'\nimport { selectIsUserConnected, selectIsUserAccountEnabled } from '../../store/userAccount/userAccount.selectors'\nimport SuggestFavoritesContent from './SuggestFavoritesContent'\nimport SuggestSearchHistoryContent from './SuggestSearchHistoryContent'\nimport SuggestServiceContent from './SuggestServiceContent'\nimport SuggestClearHistory from './SuggestClearHistory'\nimport useIncentiveClick from './useIncentiveClick'\nimport SuggestContentError from './SuggestContentError'\nimport s from './SuggestContent.less'\nimport { TAG_SUGGEST } from '../../store/analytics/analytics.actionTypes'\nimport { isEmpty } from '../../utils/lang'\n\nconst DEBOUNCE_DURATION = 150\n\nconst SuggestContent = ({ onClick, positionComponent, withoutFavorites = false }) => {\n const { suggestions, error } = useSelector(selectAllSuggestions(withoutFavorites))\n const isUserAccountAvailable = useSelector(selectIsUserAccountEnabled)\n const isConnected = useSelector(selectIsUserConnected)\n const [selectedId, setSelectedId] = useState(null)\n const [timestamp, setTimestamp] = useState(null)\n const hasFavoriteSuggests = !isConnected ? isUserAccountAvailable : !isEmpty(suggestions.favorites)\n const hasSearchHistorySuggests = !isEmpty(suggestions.searchHistory)\n const hasServiceSuggests = !isEmpty(suggestions.service)\n const hasSuggests = hasFavoriteSuggests || hasSearchHistorySuggests || hasServiceSuggests\n const stateRef = useRef({\n suggestsRef: suggestions,\n errorRef: error,\n selectedIdRef: selectedId,\n timestampRef: timestamp\n })\n\n const incentiveTagClickBuilder = useCallback(() => {\n if (isConnected) return <>\n return { type: TAG_SUGGEST }\n }, [isConnected])\n\n const { onIncentiveClick } = useIncentiveClick({ onClick, incentiveTagClickBuilder })\n\n useEffect(() => {\n if (__SERVER__) return\n document.addEventListener('keydown', handleKeyboardEvent, false)\n\n return () => {\n document.removeEventListener('keydown', handleKeyboardEvent, false)\n }\n }, [])\n\n useEffect(() => {\n stateRef.current = {\n ...stateRef.current,\n suggestsRef: suggestions,\n errorRef: error\n }\n }, [suggestions, error])\n\n const updateSelectedId = idx => {\n const now = Date.now()\n setSelectedId(idx)\n setTimestamp(now)\n stateRef.current = {\n ...stateRef.current,\n selectedIdRef: idx,\n timestampRef: now\n }\n }\n\n const hasSpeedScrollLimitReached = (currentTimestamp, newTimestamp, key) => {\n return (\n currentTimestamp &&\n newTimestamp - currentTimestamp < DEBOUNCE_DURATION &&\n (key === KEYS.DOWN || key === KEYS.UP || key === KEYS.ENTER || key === KEYS.TAB)\n )\n }\n\n const handleKeyboardEvent = e => {\n const { suggestsRef, errorRef, selectedIdRef, timestampRef } = stateRef.current\n\n if (errorRef) {\n return\n }\n\n const currentSelectedId = selectedIdRef\n const currentTimestamp = timestampRef\n let newSelectedId\n let newTimestamp = Date.now()\n const suggestsSize = suggestsRef.favorites.length + suggestsRef.service.length + suggestsRef.searchHistory.length\n const isKeyDown = e.key === KEYS.DOWN || (!e.shiftKey && e.key === KEYS.TAB)\n const isKeyUp = e.key === KEYS.UP || (e.shiftKey && e.key === KEYS.TAB)\n const isKeyEnter = e.key === KEYS.ENTER\n\n // handle speed scrolling with arrow\n if (hasSpeedScrollLimitReached(currentTimestamp, newTimestamp, e.key)) {\n return e.preventDefault()\n }\n\n if (isKeyDown) {\n e.preventDefault()\n newSelectedId = currentSelectedId !== null ? (currentSelectedId + 1) % suggestsSize : 0\n } else if (isKeyUp) {\n e.preventDefault()\n newSelectedId =\n currentSelectedId !== null\n ? currentSelectedId - 1 >= 0\n ? currentSelectedId - 1\n : suggestsSize - 1\n : suggestsSize - 1\n } else if (isKeyEnter && currentSelectedId !== null) {\n e.preventDefault()\n e.stopPropagation()\n newSelectedId = null\n const allSuggests = [...suggestsRef.favorites, ...suggestsRef.searchHistory, ...suggestsRef.service]\n const suggest = allSuggests[currentSelectedId]\n return onIncentiveClick(suggest)\n } else if (e.shiftKey && e.key === KEYS.SHIFT) {\n // Condition pour éviter de perdre la position de l'item sélectionné, quand on appuie que sur shift\n e.preventDefault()\n newSelectedId = currentSelectedId\n newTimestamp = currentTimestamp\n } else {\n newTimestamp = null\n newSelectedId = null\n }\n\n setSelectedId(newSelectedId)\n setTimestamp(newTimestamp)\n stateRef.current = {\n ...stateRef.current,\n selectedIdRef: newSelectedId,\n timestampRef: newTimestamp\n }\n }\n\n return (\n
    \n {positionComponent}\n\n \n\n \n\n \n\n \n\n \n
    \n )\n}\n\nexport default SuggestContent\n","// extracted by mini-css-extract-plugin\nexport default {\"SuggestItem_link\":\"d9mYb\",\"SuggestEventItem_link\":\"TEeMp\",\"SuggestItem_text\":\"ogaru\",\"oneLabel\":\"WUr7r\",\"SuggestItem_mainLabel\":\"AYOe7\",\"SuggestItem_eventLabel\":\"rtpGq\",\"SuggestItem_icon\":\"BHZZ9\",\"SuggestItem_secondaryLabel\":\"tnwHk\",\"icon\":\"htRus\",\"favori\":\"gxHMN\",\"maison\":\"XJita\",\"sacoche\":\"CpBCI\",\"brandLogo\":\"MtOrN\"};","import React from 'react'\n\nimport JO_Archery_en from '../../node/static/assets/JO_Archery_en.svg'\nimport JO_Archery_fr from '../../node/static/assets/JO_Archery_fr.svg'\nimport JO_ArtisticGymnastics_en from '../../node/static/assets/JO_ArtisticGymnastics_en.svg'\nimport JO_ArtisticGymnastics_fr from '../../node/static/assets/JO_ArtisticGymnastics_fr.svg'\nimport JO_ArtisticSwimming_en from '../../node/static/assets/JO_ArtisticSwimming_en.svg'\nimport JO_ArtisticSwimming_fr from '../../node/static/assets/JO_ArtisticSwimming_fr.svg'\nimport JO_Athletics_en from '../../node/static/assets/JO_Athletics_en.svg'\nimport JO_Athletics_fr from '../../node/static/assets/JO_Athletics_fr.svg'\nimport JO_BMXfreestyle_en from '../../node/static/assets/JO_BMXfreestyle_en.svg'\nimport JO_BMXfreestyle_fr from '../../node/static/assets/JO_BMXfreestyle_fr.svg'\nimport JO_BMXracing_en from '../../node/static/assets/JO_BMXracing_en.svg'\nimport JO_BMXracing_fr from '../../node/static/assets/JO_BMXracing_fr.svg'\nimport JO_Badminton_en from '../../node/static/assets/JO_Badminton_en.svg'\nimport JO_Badminton_fr from '../../node/static/assets/JO_Badminton_fr.svg'\nimport JO_Basketball3x3_en from '../../node/static/assets/JO_Basketball3x3_en.svg'\nimport JO_Basketball3x3_fr from '../../node/static/assets/JO_Basketball3x3_fr.svg'\nimport JO_Basketball_en from '../../node/static/assets/JO_Basketball_en.svg'\nimport JO_Basketball_fr from '../../node/static/assets/JO_Basketball_fr.svg'\nimport JO_BeachVolleyball_en from '../../node/static/assets/JO_BeachVolleyball_en.svg'\nimport JO_BeachVolleyball_fr from '../../node/static/assets/JO_BeachVolleyball_fr.svg'\nimport JO_BlindFootball_en from '../../node/static/assets/JO_BlindFootball_en.svg'\nimport JO_BlindFootball_fr from '../../node/static/assets/JO_BlindFootball_fr.svg'\nimport JO_Boccia_en from '../../node/static/assets/JO_Boccia_en.svg'\nimport JO_Boccia_fr from '../../node/static/assets/JO_Boccia_fr.svg'\nimport JO_Boxing_en from '../../node/static/assets/JO_Boxing_en.svg'\nimport JO_Boxing_fr from '../../node/static/assets/JO_Boxing_fr.svg'\nimport JO_Breaking_en from '../../node/static/assets/JO_Breaking_en.svg'\nimport JO_Breaking_fr from '../../node/static/assets/JO_Breaking_fr.svg'\nimport JO_CanoeSlalom_en from '../../node/static/assets/JO_CanoeSlalom_en.svg'\nimport JO_CanoeSlalom_fr from '../../node/static/assets/JO_CanoeSlalom_fr.svg'\nimport JO_CanoeSprint_en from '../../node/static/assets/JO_CanoeSprint_en.svg'\nimport JO_CanoeSprint_fr from '../../node/static/assets/JO_CanoeSprint_fr.svg'\nimport JO_CyclingTrack_en from '../../node/static/assets/JO_CyclingTrack_en.svg'\nimport JO_CyclingTrack_fr from '../../node/static/assets/JO_CyclingTrack_fr.svg'\nimport JO_Diving_en from '../../node/static/assets/JO_Diving_en.svg'\nimport JO_Diving_fr from '../../node/static/assets/JO_Diving_fr.svg'\nimport JO_Equestrian_en from '../../node/static/assets/JO_Equestrian_en.svg'\nimport JO_Equestrian_fr from '../../node/static/assets/JO_Equestrian_fr.svg'\nimport JO_Fencing_en from '../../node/static/assets/JO_Fencing_en.svg'\nimport JO_Fencing_fr from '../../node/static/assets/JO_Fencing_fr.svg'\nimport JO_Football_en from '../../node/static/assets/JO_Football_en.svg'\nimport JO_Football_fr from '../../node/static/assets/JO_Football_fr.svg'\nimport JO_Goalball_en from '../../node/static/assets/JO_Goalball_en.svg'\nimport JO_Goalball_fr from '../../node/static/assets/JO_Goalball_fr.svg'\nimport JO_Golf_en from '../../node/static/assets/JO_Golf_en.svg'\nimport JO_Golf_fr from '../../node/static/assets/JO_Golf_fr.svg'\nimport JO_Handball_en from '../../node/static/assets/JO_Handball_en.svg'\nimport JO_Handball_fr from '../../node/static/assets/JO_Handball_fr.svg'\nimport JO_Hockey_en from '../../node/static/assets/JO_Hockey_en.svg'\nimport JO_Hockey_fr from '../../node/static/assets/JO_Hockey_fr.svg'\nimport JO_Judo_en from '../../node/static/assets/JO_Judo_en.svg'\nimport JO_Judo_fr from '../../node/static/assets/JO_Judo_fr.svg'\nimport JO_MarathonSwimming_en from '../../node/static/assets/JO_MarathonSwimming_en.svg'\nimport JO_MarathonSwimming_fr from '../../node/static/assets/JO_MarathonSwimming_fr.svg'\nimport JO_ModernPentathlon_en from '../../node/static/assets/JO_ModernPentathlon_en.svg'\nimport JO_ModernPentathlon_fr from '../../node/static/assets/JO_ModernPentathlon_fr.svg'\nimport JO_MountainBike_en from '../../node/static/assets/JO_MountainBike_en.svg'\nimport JO_MountainBike_fr from '../../node/static/assets/JO_MountainBike_fr.svg'\nimport JO_ParaArchery_en from '../../node/static/assets/JO_ParaArchery_en.svg'\nimport JO_ParaArchery_fr from '../../node/static/assets/JO_ParaArchery_fr.svg'\nimport JO_ParaAthletics_en from '../../node/static/assets/JO_ParaAthletics_en.svg'\nimport JO_ParaAthletics_fr from '../../node/static/assets/JO_ParaAthletics_fr.svg'\nimport JO_ParaBadminton_en from '../../node/static/assets/JO_ParaBadminton_en.svg'\nimport JO_ParaBadminton_fr from '../../node/static/assets/JO_ParaBadminton_fr.svg'\nimport JO_ParaCanoe_en from '../../node/static/assets/JO_ParaCanoe_en.svg'\nimport JO_ParaCanoe_fr from '../../node/static/assets/JO_ParaCanoe_fr.svg'\nimport JO_ParaCyclingRoad_en from '../../node/static/assets/JO_ParaCyclingRoad_en.svg'\nimport JO_ParaCyclingRoad_fr from '../../node/static/assets/JO_ParaCyclingRoad_fr.svg'\nimport JO_ParaCyclingTrack_en from '../../node/static/assets/JO_ParaCyclingTrack_en.svg'\nimport JO_ParaCyclingTrack_fr from '../../node/static/assets/JO_ParaCyclingTrack_fr.svg'\nimport JO_ParaEquestrian_en from '../../node/static/assets/JO_ParaEquestrian_en.svg'\nimport JO_ParaEquestrian_fr from '../../node/static/assets/JO_ParaEquestrian_fr.svg'\nimport JO_ParaJudo_en from '../../node/static/assets/JO_ParaJudo_en.svg'\nimport JO_ParaJudo_fr from '../../node/static/assets/JO_ParaJudo_fr.svg'\nimport JO_ParaPowerlifting_en from '../../node/static/assets/JO_ParaPowerlifting_en.svg'\nimport JO_ParaPowerlifting_fr from '../../node/static/assets/JO_ParaPowerlifting_fr.svg'\nimport JO_ParaRowing_en from '../../node/static/assets/JO_ParaRowing_en.svg'\nimport JO_ParaRowing_fr from '../../node/static/assets/JO_ParaRowing_fr.svg'\nimport JO_ParaSwimming_en from '../../node/static/assets/JO_ParaSwimming_en.svg'\nimport JO_ParaSwimming_fr from '../../node/static/assets/JO_ParaSwimming_fr.svg'\nimport JO_ParaTableTennis_en from '../../node/static/assets/JO_ParaTableTennis_en.svg'\nimport JO_ParaTableTennis_fr from '../../node/static/assets/JO_ParaTableTennis_fr.svg'\nimport JO_ParaTaekwondo_en from '../../node/static/assets/JO_ParaTaekwondo_en.svg'\nimport JO_ParaTaekwondo_fr from '../../node/static/assets/JO_ParaTaekwondo_fr.svg'\nimport JO_ParaTriathlon_en from '../../node/static/assets/JO_ParaTriathlon_en.svg'\nimport JO_ParaTriathlon_fr from '../../node/static/assets/JO_ParaTriathlon_fr.svg'\nimport JO_Paris_2024 from '../../node/static/assets/JO_Paris_2024.svg'\nimport JO_RhythmicGymnastics_en from '../../node/static/assets/JO_RhythmicGymnastics_en.svg'\nimport JO_RhythmicGymnastics_fr from '../../node/static/assets/JO_RhythmicGymnastics_fr.svg'\nimport JO_RoadCycling_en from '../../node/static/assets/JO_RoadCycling_en.svg'\nimport JO_RoadCycling_fr from '../../node/static/assets/JO_RoadCycling_fr.svg'\nimport JO_Rowing_en from '../../node/static/assets/JO_Rowing_en.svg'\nimport JO_Rowing_fr from '../../node/static/assets/JO_Rowing_fr.svg'\nimport JO_Rugby_en from '../../node/static/assets/JO_Rugby_en.svg'\nimport JO_Rugby_fr from '../../node/static/assets/JO_Rugby_fr.svg'\nimport JO_Sailing_en from '../../node/static/assets/JO_Sailing_en.svg'\nimport JO_Sailing_fr from '../../node/static/assets/JO_Sailing_fr.svg'\nimport JO_ShootingParaSport_en from '../../node/static/assets/JO_ShootingParaSport_en.svg'\nimport JO_ShootingParaSport_fr from '../../node/static/assets/JO_ShootingParaSport_fr.svg'\nimport JO_Shooting_en from '../../node/static/assets/JO_Shooting_en.svg'\nimport JO_Shooting_fr from '../../node/static/assets/JO_Shooting_fr.svg'\nimport JO_SittingVolleyball_en from '../../node/static/assets/JO_SittingVolleyball_en.svg'\nimport JO_SittingVolleyball_fr from '../../node/static/assets/JO_SittingVolleyball_fr.svg'\nimport JO_Skateboarding_en from '../../node/static/assets/JO_Skateboarding_en.svg'\nimport JO_Skateboarding_fr from '../../node/static/assets/JO_Skateboarding_fr.svg'\nimport JO_SportClimbing_en from '../../node/static/assets/JO_SportClimbing_en.svg'\nimport JO_SportClimbing_fr from '../../node/static/assets/JO_SportClimbing_fr.svg'\nimport JO_Swimming_en from '../../node/static/assets/JO_Swimming_en.svg'\nimport JO_Swimming_fr from '../../node/static/assets/JO_Swimming_fr.svg'\nimport JO_TableTennis_en from '../../node/static/assets/JO_TableTennis_en.svg'\nimport JO_TableTennis_fr from '../../node/static/assets/JO_TableTennis_fr.svg'\nimport JO_Taekwondo_en from '../../node/static/assets/JO_Taekwondo_en.svg'\nimport JO_Taekwondo_fr from '../../node/static/assets/JO_Taekwondo_fr.svg'\nimport JO_Tennis_en from '../../node/static/assets/JO_Tennis_en.svg'\nimport JO_Tennis_fr from '../../node/static/assets/JO_Tennis_fr.svg'\nimport JO_Trampoline_en from '../../node/static/assets/JO_Trampoline_en.svg'\nimport JO_Trampoline_fr from '../../node/static/assets/JO_Trampoline_fr.svg'\nimport JO_Triathlon_en from '../../node/static/assets/JO_Triathlon_en.svg'\nimport JO_Triathlon_fr from '../../node/static/assets/JO_Triathlon_fr.svg'\nimport JO_Volleyball_en from '../../node/static/assets/JO_Volleyball_en.svg'\nimport JO_Volleyball_fr from '../../node/static/assets/JO_Volleyball_fr.svg'\nimport JO_WaterPolo_en from '../../node/static/assets/JO_WaterPolo_en.svg'\nimport JO_WaterPolo_fr from '../../node/static/assets/JO_WaterPolo_fr.svg'\nimport JO_Weightlifting_en from '../../node/static/assets/JO_Weightlifting_en.svg'\nimport JO_Weightlifting_fr from '../../node/static/assets/JO_Weightlifting_fr.svg'\nimport JO_WheelchairBasketball_en from '../../node/static/assets/JO_WheelchairBasketball_en.svg'\nimport JO_WheelchairBasketball_fr from '../../node/static/assets/JO_WheelchairBasketball_fr.svg'\nimport JO_WheelchairFencing_en from '../../node/static/assets/JO_WheelchairFencing_en.svg'\nimport JO_WheelchairFencing_fr from '../../node/static/assets/JO_WheelchairFencing_fr.svg'\nimport JO_WheelchairRugby_en from '../../node/static/assets/JO_WheelchairRugby_en.svg'\nimport JO_WheelchairRugby_fr from '../../node/static/assets/JO_WheelchairRugby_fr.svg'\nimport JO_WheelchairTennis_en from '../../node/static/assets/JO_WheelchairTennis_en.svg'\nimport JO_WheelchairTennis_fr from '../../node/static/assets/JO_WheelchairTennis_fr.svg'\nimport JO_Wrestling_en from '../../node/static/assets/JO_Wrestling_en.svg'\nimport JO_Wrestling_fr from '../../node/static/assets/JO_Wrestling_fr.svg'\n\nimport SVGIcon from '../svg/SVGIcon'\n\nconst getSvgFromName = fileName => {\n switch (fileName) {\n case 'JO_Paris_2024':\n return JO_Paris_2024\n case 'JO_Archery_en':\n return JO_Archery_en\n case 'JO_Archery_fr':\n return JO_Archery_fr\n case 'JO_ArtisticGymnastics_en':\n return JO_ArtisticGymnastics_en\n case 'JO_ArtisticGymnastics_fr':\n return JO_ArtisticGymnastics_fr\n case 'JO_ArtisticSwimming_en':\n return JO_ArtisticSwimming_en\n case 'JO_ArtisticSwimming_fr':\n return JO_ArtisticSwimming_fr\n case 'JO_Athletics_en':\n return JO_Athletics_en\n case 'JO_Athletics_fr':\n return JO_Athletics_fr\n case 'JO_BMXfreestyle_en':\n return JO_BMXfreestyle_en\n case 'JO_BMXfreestyle_fr':\n return JO_BMXfreestyle_fr\n case 'JO_BMXracing_en':\n return JO_BMXracing_en\n case 'JO_BMXracing_fr':\n return JO_BMXracing_fr\n case 'JO_Badminton_en':\n return JO_Badminton_en\n case 'JO_Badminton_fr':\n return JO_Badminton_fr\n case 'JO_Basketball3x3_en':\n return JO_Basketball3x3_en\n case 'JO_Basketball3x3_fr':\n return JO_Basketball3x3_fr\n case 'JO_Basketball_en':\n return JO_Basketball_en\n case 'JO_Basketball_fr':\n return JO_Basketball_fr\n case 'JO_BeachVolleyball_en':\n return JO_BeachVolleyball_en\n case 'JO_BeachVolleyball_fr':\n return JO_BeachVolleyball_fr\n case 'JO_BlindFootball_en':\n return JO_BlindFootball_en\n case 'JO_BlindFootball_fr':\n return JO_BlindFootball_fr\n case 'JO_Boccia_en':\n return JO_Boccia_en\n case 'JO_Boccia_fr':\n return JO_Boccia_fr\n case 'JO_Boxing_en':\n return JO_Boxing_en\n case 'JO_Boxing_fr':\n return JO_Boxing_fr\n case 'JO_Breaking_en':\n return JO_Breaking_en\n case 'JO_Breaking_fr':\n return JO_Breaking_fr\n case 'JO_CanoeSlalom_en':\n return JO_CanoeSlalom_en\n case 'JO_CanoeSlalom_fr':\n return JO_CanoeSlalom_fr\n case 'JO_CanoeSprint_en':\n return JO_CanoeSprint_en\n case 'JO_CanoeSprint_fr':\n return JO_CanoeSprint_fr\n case 'JO_CyclingTrack_en':\n return JO_CyclingTrack_en\n case 'JO_CyclingTrack_fr':\n return JO_CyclingTrack_fr\n case 'JO_Diving_en':\n return JO_Diving_en\n case 'JO_Diving_fr':\n return JO_Diving_fr\n case 'JO_Equestrian_en':\n return JO_Equestrian_en\n case 'JO_Equestrian_fr':\n return JO_Equestrian_fr\n case 'JO_Fencing_en':\n return JO_Fencing_en\n case 'JO_Fencing_fr':\n return JO_Fencing_fr\n case 'JO_Football_en':\n return JO_Football_en\n case 'JO_Football_fr':\n return JO_Football_fr\n case 'JO_Goalball_en':\n return JO_Goalball_en\n case 'JO_Goalball_fr':\n return JO_Goalball_fr\n case 'JO_Golf_en':\n return JO_Golf_en\n case 'JO_Golf_fr':\n return JO_Golf_fr\n case 'JO_Handball_en':\n return JO_Handball_en\n case 'JO_Handball_fr':\n return JO_Handball_fr\n case 'JO_Hockey_en':\n return JO_Hockey_en\n case 'JO_Hockey_fr':\n return JO_Hockey_fr\n case 'JO_Judo_en':\n return JO_Judo_en\n case 'JO_Judo_fr':\n return JO_Judo_fr\n case 'JO_MarathonSwimming_en':\n return JO_MarathonSwimming_en\n case 'JO_MarathonSwimming_fr':\n return JO_MarathonSwimming_fr\n case 'JO_ModernPentathlon_en':\n return JO_ModernPentathlon_en\n case 'JO_ModernPentathlon_fr':\n return JO_ModernPentathlon_fr\n case 'JO_MountainBike_en':\n return JO_MountainBike_en\n case 'JO_MountainBike_fr':\n return JO_MountainBike_fr\n case 'JO_ParaArchery_en':\n return JO_ParaArchery_en\n case 'JO_ParaArchery_fr':\n return JO_ParaArchery_fr\n case 'JO_ParaAthletics_en':\n return JO_ParaAthletics_en\n case 'JO_ParaAthletics_fr':\n return JO_ParaAthletics_fr\n case 'JO_ParaBadminton_en':\n return JO_ParaBadminton_en\n case 'JO_ParaBadminton_fr':\n return JO_ParaBadminton_fr\n case 'JO_ParaCanoe_en':\n return JO_ParaCanoe_en\n case 'JO_ParaCanoe_fr':\n return JO_ParaCanoe_fr\n case 'JO_ParaCyclingRoad_en':\n return JO_ParaCyclingRoad_en\n case 'JO_ParaCyclingRoad_fr':\n return JO_ParaCyclingRoad_fr\n case 'JO_ParaCyclingTrack_en':\n return JO_ParaCyclingTrack_en\n case 'JO_ParaCyclingTrack_fr':\n return JO_ParaCyclingTrack_fr\n case 'JO_ParaEquestrian_en':\n return JO_ParaEquestrian_en\n case 'JO_ParaEquestrian_fr':\n return JO_ParaEquestrian_fr\n case 'JO_ParaJudo_en':\n return JO_ParaJudo_en\n case 'JO_ParaJudo_fr':\n return JO_ParaJudo_fr\n case 'JO_ParaPowerlifting_en':\n return JO_ParaPowerlifting_en\n case 'JO_ParaPowerlifting_fr':\n return JO_ParaPowerlifting_fr\n case 'JO_ParaRowing_en':\n return JO_ParaRowing_en\n case 'JO_ParaRowing_fr':\n return JO_ParaRowing_fr\n case 'JO_ParaSwimming_en':\n return JO_ParaSwimming_en\n case 'JO_ParaSwimming_fr':\n return JO_ParaSwimming_fr\n case 'JO_ParaTableTennis_en':\n return JO_ParaTableTennis_en\n case 'JO_ParaTableTennis_fr':\n return JO_ParaTableTennis_fr\n case 'JO_ParaTaekwondo_en':\n return JO_ParaTaekwondo_en\n case 'JO_ParaTaekwondo_fr':\n return JO_ParaTaekwondo_fr\n case 'JO_ParaTriathlon_en':\n return JO_ParaTriathlon_en\n case 'JO_ParaTriathlon_fr':\n return JO_ParaTriathlon_fr\n case 'JO_RhythmicGymnastics_en':\n return JO_RhythmicGymnastics_en\n case 'JO_RhythmicGymnastics_fr':\n return JO_RhythmicGymnastics_fr\n case 'JO_RoadCycling_en':\n return JO_RoadCycling_en\n case 'JO_RoadCycling_fr':\n return JO_RoadCycling_fr\n case 'JO_Rowing_en':\n return JO_Rowing_en\n case 'JO_Rowing_fr':\n return JO_Rowing_fr\n case 'JO_Rugby_en':\n return JO_Rugby_en\n case 'JO_Rugby_fr':\n return JO_Rugby_fr\n case 'JO_Sailing_en':\n return JO_Sailing_en\n case 'JO_Sailing_fr':\n return JO_Sailing_fr\n case 'JO_ShootingParaSport_en':\n return JO_ShootingParaSport_en\n case 'JO_ShootingParaSport_fr':\n return JO_ShootingParaSport_fr\n case 'JO_Shooting_en':\n return JO_Shooting_en\n case 'JO_Shooting_fr':\n return JO_Shooting_fr\n case 'JO_SittingVolleyball_en':\n return JO_SittingVolleyball_en\n case 'JO_SittingVolleyball_fr':\n return JO_SittingVolleyball_fr\n case 'JO_Skateboarding_en':\n return JO_Skateboarding_en\n case 'JO_Skateboarding_fr':\n return JO_Skateboarding_fr\n case 'JO_SportClimbing_en':\n return JO_SportClimbing_en\n case 'JO_SportClimbing_fr':\n return JO_SportClimbing_fr\n case 'JO_Swimming_en':\n return JO_Swimming_en\n case 'JO_Swimming_fr':\n return JO_Swimming_fr\n case 'JO_TableTennis_en':\n return JO_TableTennis_en\n case 'JO_TableTennis_fr':\n return JO_TableTennis_fr\n case 'JO_Taekwondo_en':\n return JO_Taekwondo_en\n case 'JO_Taekwondo_fr':\n return JO_Taekwondo_fr\n case 'JO_Tennis_en':\n return JO_Tennis_en\n case 'JO_Tennis_fr':\n return JO_Tennis_fr\n case 'JO_Trampoline_en':\n return JO_Trampoline_en\n case 'JO_Trampoline_fr':\n return JO_Trampoline_fr\n case 'JO_Triathlon_en':\n return JO_Triathlon_en\n case 'JO_Triathlon_fr':\n return JO_Triathlon_fr\n case 'JO_Volleyball_en':\n return JO_Volleyball_en\n case 'JO_Volleyball_fr':\n return JO_Volleyball_fr\n case 'JO_WaterPolo_en':\n return JO_WaterPolo_en\n case 'JO_WaterPolo_fr':\n return JO_WaterPolo_fr\n case 'JO_Weightlifting_en':\n return JO_Weightlifting_en\n case 'JO_Weightlifting_fr':\n return JO_Weightlifting_fr\n case 'JO_WheelchairBasketball_en':\n return JO_WheelchairBasketball_en\n case 'JO_WheelchairBasketball_fr':\n return JO_WheelchairBasketball_fr\n case 'JO_WheelchairFencing_en':\n return JO_WheelchairFencing_en\n case 'JO_WheelchairFencing_fr':\n return JO_WheelchairFencing_fr\n case 'JO_WheelchairRugby_en':\n return JO_WheelchairRugby_en\n case 'JO_WheelchairRugby_fr':\n return JO_WheelchairRugby_fr\n case 'JO_WheelchairTennis_en':\n return JO_WheelchairTennis_en\n case 'JO_WheelchairTennis_fr':\n return JO_WheelchairTennis_fr\n case 'JO_Wrestling_en':\n return JO_Wrestling_en\n case 'JO_Wrestling_fr':\n return JO_Wrestling_fr\n default:\n return null\n }\n}\n\nexport const SuggestEventSvg = ({ iconName }) => {\n const icon = getSvgFromName(iconName)\n return icon ? : <>\n}\n","import React from 'react'\nimport classNames from 'classnames'\n\nimport s from './SuggestItem.less'\n\nimport SVGIcon from '../svg/SVGIcon'\nimport { suggestServiceCtx } from '../../store/suggest/suggest.service.constants'\nimport eventMappingFr from './event_mapping_fr.json'\nimport eventMappingEn from './event_mapping_en.json'\n\nimport { slugify } from '../../utils/string'\nimport { useSelector } from 'react-redux'\nimport { selectLocale } from '../../store/locale/locale.selectors'\nimport { SuggestEventSvg } from './SuggestEventSvg'\nimport TagActionButton from '../genericComponents/TagActionButton'\nimport { SUGGEST_CLICK } from '../../store/analytics/analytics.actionTypes'\nimport { POI_POSITION, POI_TYPE } from '../analytics/ClickTagsService'\nimport { JO_CELEBRATION_PLACE, JO_EVENT_SITE } from '../../store/geoentity/geoentity.constants'\n\nconst BrandItemContent = props => {\n const { suggest = {} } = props\n const { labels, brandIconUrl } = suggest\n const [firstLabel] = labels\n return (\n <>\n {brandIconUrl && (\n
    \n \n
    \n )}\n
    \n \n
    \n \n )\n}\n\nconst GenericContent = props => {\n const { suggest } = props\n const [firstLabel, ...otherLabels] = suggest.labels\n const icon = suggest?.subtype?.id\n const iconUrls = suggest?.iconUrls ?? false\n\n return (\n <>\n
    \n \n
    \n
    \n \n {iconUrls && (\n \n {iconUrls.map((iconUrl, idx) => {\n return \n })}\n \n )}\n {!iconUrls && (\n \n {otherLabels.map((label, id) => (\n \n ))}\n \n )}\n
    \n \n )\n}\n\nconst EventContent = props => {\n const { suggest } = props\n const icon = suggest?.subtype?.id\n const locale = useSelector(selectLocale)\n const eventMapping = locale.startsWith('en') || locale.startsWith('nl') ? eventMappingEn : eventMappingFr\n const { address_components } = suggest\n const postcode = address_components?.postcodes?.[0]\n const town = address_components?.town?.label\n const address = postcode && town ? `${postcode}, ${town}` : undefined\n const otherName = address_components?.other_name\n const eventAssets = eventMapping[slugify(address_components?.name)]\n\n return (\n <>\n
    \n \n
    \n
    \n \n {otherName && (\n {otherName}\n )}\n {address && (\n \n {address}\n \n )}\n\n
    \n \n {eventAssets?.map(asset => (\n \n ))}\n
    \n
    \n \n )\n}\n\nconst SuggestItemContent = ({ type, suggest, isEventSuggest }) => {\n if (type === suggestServiceCtx.type.store_chain) {\n return \n } else if (isEventSuggest) {\n return \n } else {\n return \n }\n}\n\nconst SuggestItem = props => {\n const { suggest, idx } = props\n\n const isEventSuggest = suggest?.subtype?.id === JO_EVENT_SITE || suggest?.subtype?.id === JO_CELEBRATION_PLACE\n\n const type = suggest?.type\n\n const onClick = e => {\n e.preventDefault()\n e.stopPropagation()\n const { onClick, suggest } = props\n onClick && onClick(suggest)\n }\n\n const onMouseEnter = () => {\n const { idx, updateSelectedId } = props\n updateSelectedId(idx)\n }\n\n const onFocus = () => {\n const { idx, updateSelectedId } = props\n updateSelectedId(idx)\n }\n\n return (\n \n \n \n )\n}\n\nexport default SuggestItem\n","import React from 'react'\nimport SuggestItem from './SuggestItem'\nimport s from './SuggestContentList.less'\n\nconst SuggestContentList = ({\n suggestions = [],\n idxStartAt = 0,\n onClick,\n selectedId = -1,\n updateSelectedId = () => {}\n}) => (\n
    \n
      \n {suggestions.map((suggest, index) => {\n const idx = idxStartAt + index\n return (\n
    • \n \n
    • \n )\n })}\n
    \n
    \n)\n\nexport default SuggestContentList\n","// extracted by mini-css-extract-plugin\nexport default {\"SuggestList\":\"DJuod\",\"selected\":\"CKN0m\"};","import { useSelector } from 'react-redux'\nimport { selectIsUserConnected } from '../../store/userAccount/userAccount.selectors'\nimport { MODAL_IDS, USER_SCREENS } from '../../store/ui/ui.constants'\nimport { dispatchTag } from '../../store/analytics/analytics.actions'\nimport { useAction } from '../utils/react-redux'\nimport { setUserUIScreen } from '../../store/ui/ui.actions'\nimport { ROUTE_USER_ACCOUNT } from '../../routes'\nimport useModal from '../ui/useModal'\nimport { navigateTo } from '../../store/history/history.actions'\n\nconst useIncentiveClick = ({ onClick, incentiveTagClickBuilder }) => {\n const isConnected = useSelector(selectIsUserConnected)\n const { displayModal } = useModal(MODAL_IDS.USER_ACCOUNT_INCENTIVE_POPIN)\n const execDispatchTag = useAction(dispatchTag)\n const execNavigateTo = useAction(navigateTo)\n const execSetUserUIScreen = useAction(setUserUIScreen)\n const manageFavorite = type => execSetUserUIScreen(USER_SCREENS.manageFavorite, { type })\n\n const onIncentiveClick = suggest => {\n const { incentive, type } = suggest\n if (!incentive) {\n onClick(suggest)\n } else if (isConnected) {\n execDispatchTag(incentiveTagClickBuilder(suggest))\n manageFavorite(type)\n execNavigateTo({ route: ROUTE_USER_ACCOUNT })\n } else {\n displayModal()\n execDispatchTag(incentiveTagClickBuilder(suggest))\n }\n }\n\n return { onIncentiveClick }\n}\n\nexport default useIncentiveClick\n","import React from 'react'\nimport { useSelector } from 'react-redux'\nimport { selectFavouriteModes, selectPreferredMode } from '../../store/travelOptions/travelOptions.selectors'\nimport { setPreferredMode } from '../../store/travelOptions/travelOptions.actions'\nimport ModeItem from '../itinerary/ModeItem'\nimport sModeSelector from '../itinerary/ModeSelector.less'\nimport { useAction } from '../utils/react-redux'\nimport { dispatchTag } from '../../store/analytics/analytics.actions'\nimport { TAG_CLICK_TRAVEL_OPTIONS_MODEFAVORI } from '../../store/analytics/analytics.actionTypes'\nimport { SELECTION } from '../analytics/ClickTagsService'\n\nconst FavouriteModeBox = () => {\n const favouriteModes = useSelector(selectFavouriteModes)\n const preferredMode = useSelector(selectPreferredMode)\n const execSetPreferredMode = useAction(setPreferredMode)\n const execDispatchTag = useAction(dispatchTag)\n\n const onClickForId = id => () => {\n execDispatchTag({\n type: TAG_CLICK_TRAVEL_OPTIONS_MODEFAVORI,\n tagInfo: {\n [SELECTION]: id\n }\n })\n execSetPreferredMode({ modeId: id })\n }\n\n return (\n
      \n {favouriteModes.map(({ id, label, icon }) => {\n return (\n
    • \n \n
    • \n )\n })}\n
    \n )\n}\n\nexport default FavouriteModeBox\n","import React, { useCallback } from 'react'\nimport s from './ModeSpeedSettingsBox.less'\nimport { selectPreferredSpeed, selectVehicleOwn } from '../../store/travelOptions/travelOptions.selectors'\nimport { changePreferredOptions } from '../../store/travelOptions/travelOptions.actions'\nimport { useAction } from '../utils/react-redux'\nimport VehicleOwnedSwitcher from './VehicleOwnedSwitcher'\nimport T, { useTranslateAsObject } from '../i18n/T'\nimport { PREFERRED_SPEED, TRAVEL_SPEED_VALUES_BY_MODE, TRAVEL_SPEEDS, VEHICLE_OWN } from './travelOptions.constants'\nimport { useSelector } from 'react-redux'\n\nconst speedTKey = item => `itinerary.options.speed.${item}`\n\nexport default function ModeSpeedSettingsBox({ modeId, hasOwnSwitcher }) {\n const preferredSpeed = useSelector(selectPreferredSpeed(modeId))\n const vehicleOwn = useSelector(selectVehicleOwn(modeId))\n const execChangePreferredOptions = useAction(changePreferredOptions)\n const translations = useTranslateAsObject(TRAVEL_SPEEDS.map(speedTKey))\n\n const onPreferredOptionsChange = useCallback(event => {\n const value = event.target.value\n execChangePreferredOptions({\n modeId,\n [PREFERRED_SPEED]: value\n })\n }, [])\n\n return (\n
    \n {hasOwnSwitcher && (\n
    \n \n execChangePreferredOptions({\n modeId: modeId,\n [VEHICLE_OWN]: value\n })\n }\n defaultValue={vehicleOwn}\n />\n
    \n )}\n
    \n \n \n
    \n
    \n )\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"speedWrapper\":\"eNgwk\"};","// extracted by mini-css-extract-plugin\nexport default {\"boxWrapper\":\"E_YeZ\",\"boxContent\":\"LKUCd\"};","import React, { useEffect, useState } from 'react'\nimport T from '../i18n/T'\nimport FavouriteModeBox from './FavouriteModeBox'\nimport ModeSpeedSettingsBox from './ModeSpeedSettingsBox'\nimport s from './TravelOptions.less'\nimport sUserManageFavorites from '../UserAccount/connected/userFavorites/UserManageFavorite.less'\nimport VehicleSettingsBox from './VehicleSettingsBox'\nimport { useAction } from '../utils/react-redux'\nimport { saveTravelOptions } from '../../store/userAccount/userAccount.actions'\nimport { useTemporaryVisible } from '../genericComponents/useTemporaryVisible'\n\nconst TravelOptions = () => {\n const execSaveTravelOptions = useAction(saveTravelOptions)\n const [visible, setVisible] = useTemporaryVisible()\n const [travelOptionsError, setTravelOptionsError] = useState()\n\n useEffect(() => {\n return async () => {\n const saveTravelOptionsResult = await execSaveTravelOptions()\n\n if (saveTravelOptionsResult?.error) {\n setVisible(true)\n setTravelOptionsError(saveTravelOptionsResult.error)\n }\n }\n }, [])\n\n return (\n <>\n {visible &&
    {travelOptionsError}
    }\n
    \n

    \n \n

    \n
    \n \n
    \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n
    \n

    \n \n

    \n
    \n \n
    \n
    \n \n )\n}\n\nexport default TravelOptions\n","import React from 'react'\nimport s from './VehicleOwnedSwitcher.less'\nimport SwitchInput from '../utils/SwitchInput'\nimport T from '../i18n/T'\n\nconst VehicleOwnedSwitcher = ({ labelKey, onChange, defaultValue }) => {\n return (\n
    \n
    \n \n
    \n \n
    \n )\n}\n\nexport default VehicleOwnedSwitcher\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"FNEnR\"};","// extracted by mini-css-extract-plugin\nexport default {\"VehicleSettingsBox\":\"qZ_zx\",\"VehicleSettingsBoxContent\":\"kYXpE\",\"critAirLine\":\"x0LUE\"};","import React, { useCallback } from 'react'\nimport s from './CritairChoice.less'\nimport T from '../i18n/T'\nimport classnames from 'classnames'\n\nconst CritairChoice = ({ critAirStickers, onSelect, value }) => {\n const onChooseForId = useCallback(\n id => evt => {\n evt.preventDefault()\n onSelect(id)\n },\n []\n )\n return (\n
    \n
    \n \n
    \n
      \n {critAirStickers.map(sticker => {\n const { icon, label, id, description } = sticker\n return (\n \n
      \n \n
      \n\n
      \n
      {label}
      \n
      {description}
      \n
      \n \n )\n })}\n
    \n
    \n )\n}\n\nexport default CritairChoice\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"zQQTI\",\"title\":\"yK4Lq\",\"sticker\":\"Ekl_6\",\"selected\":\"l_YsP\",\"iconWrapper\":\"lNOO9\",\"icon\":\"SHIeX\",\"content\":\"ehHEV\",\"label\":\"XB4DU\",\"value\":\"YGY8x\"};","import React, { useEffect } from 'react'\nimport CritairChoice from './CritairChoice'\nimport Modal from '../genericComponents/Modal'\nimport s from './CritairChoice.less'\nimport { CRITAIR_DEFAULT_ID } from './travelOptions.constants'\nimport useModal from '../ui/useModal'\n\nconst CritairSelect = ({ critAirStickers = [], value = CRITAIR_DEFAULT_ID, modeId, onChange }) => {\n const critAirSticker = critAirStickers.find(({ id }) => id === value)\n const modalId = `critair-${modeId}`\n const { displayModal, hideModal } = useModal(modalId)\n\n useEffect(() => hideModal, [])\n\n const onSelect = value => {\n onChange({ target: { value } })\n hideModal()\n }\n\n return (\n <>\n
    displayModal()}>\n {critAirSticker && }\n
    \n \n \n \n \n )\n}\n\nexport default CritairSelect\n","import React from 'react'\nimport s from './VehicleSettingsBox.less'\n\nimport NumericInput from '../genericComponents/NumericInput'\nimport {\n selectFuelList,\n selectVehicleList,\n selectPreferredVehicle,\n selectPreferredFuel,\n selectModeMetadata,\n selectVehicleOwn,\n selectCritAirId\n} from '../../store/travelOptions/travelOptions.selectors'\nimport { changePreferredOptions } from '../../store/travelOptions/travelOptions.actions'\nimport { dispatchTag } from '../../store/analytics/analytics.actions'\nimport T from '../i18n/T'\nimport { useAction } from '../utils/react-redux'\nimport classNames from 'classnames'\nimport {\n TAG_CLICK_TRAVEL_OPTIONS_CAR_VEHICLE,\n TAG_CLICK_TRAVEL_OPTIONS_MOTORBIKE_VEHICLE\n} from '../../store/analytics/analytics.actionTypes'\nimport { SELECTION } from '../analytics/ClickTagsService'\nimport VehicleOwnedSwitcher from './VehicleOwnedSwitcher'\nimport CritairSelect from './CritairSelect'\nimport {\n CRITAIR_ID,\n PREFERRED_FUEL_CONSUMPTION,\n PREFERRED_FUEL_ID,\n PREFERRED_FUEL_PRICE,\n PREFERRED_VEHICLE_ID,\n VEHICLE_OWN\n} from './travelOptions.constants'\nimport { useSelector } from 'react-redux'\n\nconst tagConfig = {\n car: {\n [PREFERRED_VEHICLE_ID]: TAG_CLICK_TRAVEL_OPTIONS_CAR_VEHICLE\n },\n motorbike: {\n [PREFERRED_VEHICLE_ID]: TAG_CLICK_TRAVEL_OPTIONS_MOTORBIKE_VEHICLE\n }\n}\n\nexport default function VehicleSettingsBox({ modeId, hasOwnSwitcher }) {\n const modeMetadata = useSelector(selectModeMetadata(modeId))\n const preferredVehicle = useSelector(selectPreferredVehicle(modeId))\n const preferredFuel = useSelector(selectPreferredFuel(modeId))\n const fuelList = useSelector(selectFuelList(modeId))\n const vehicleList = useSelector(selectVehicleList(modeId))\n const vehicleOwn = useSelector(selectVehicleOwn(modeId))\n const critAirStickers = modeMetadata?.transportMode?.critair\n const critAirId = useSelector(selectCritAirId(modeId))\n const execChangePreferredOptions = useAction(changePreferredOptions)\n const execDispatchTag = useAction(dispatchTag)\n\n const onPreferredOptionsChange = optionsToUpdate => event => {\n const value = event.target.value\n const tag = tagConfig?.[modeMetadata.id]?.[optionsToUpdate]\n if (tag) {\n execDispatchTag({\n type: tag,\n tagInfo: {\n [SELECTION]: value\n }\n })\n }\n execChangePreferredOptions({\n modeId: modeMetadata.id,\n [optionsToUpdate]: value\n })\n }\n\n return (\n
    \n
    \n {hasOwnSwitcher && (\n
    \n {\n onPreferredOptionsChange(VEHICLE_OWN)({ target: { value } })\n }}\n defaultValue={vehicleOwn}\n />\n
    \n )}\n
    \n \n \n \n \n
    \n
    \n \n \n \n \n {preferredFuel.price_unit}\n \n
    \n
    \n \n \n \n {preferredFuel.consumption_unit}\n \n
    \n {critAirStickers && (\n
    \n
    \n \n
    \n \n
    \n )}\n
    \n
    \n )\n}\n","import { useSelector } from 'react-redux'\nimport { HEADER_DEFAULT_HEIGHT_PE, HEADER_SUBHEADER_HEIGHT } from '../header/header-constants'\nimport { UI_ELEMENTS } from '../../store/ui/ui.constants'\nimport { isUIElementDisplayed, selectHeaderHeight } from '../../store/ui/ui.selectors'\n\nconst useComputedHeaderHeight = (menuCategoriesPE, subHeaderComponent) => {\n const headerHeight = useSelector(selectHeaderHeight)\n const suggestDisplayed = useSelector(isUIElementDisplayed(UI_ELEMENTS.SUGGEST))\n const searchDialogDisplayed = useSelector(isUIElementDisplayed(UI_ELEMENTS.SEARCH_DIALOG))\n\n const subHeaderHeigth =\n !suggestDisplayed && !searchDialogDisplayed && subHeaderComponent ? HEADER_SUBHEADER_HEIGHT : 0\n\n const shouldDisplayMenuCategoriesPE = menuCategoriesPE && !suggestDisplayed && !searchDialogDisplayed\n\n const menuHeigth = shouldDisplayMenuCategoriesPE ? HEADER_DEFAULT_HEIGHT_PE : 0\n\n return headerHeight + subHeaderHeigth + menuHeigth\n}\n\nexport default useComputedHeaderHeight\n","import { useSelector } from 'react-redux'\nimport { useAction } from '../utils/react-redux'\nimport { displayModal, hideModal } from '../../store/ui/ui.actions'\nimport { isModalDisplayed } from '../../store/ui/ui.selectors'\nimport useErrorBoundaryCallback from '../utils/useErrorBoundaryCallback'\n\nexport const useModal = modalId => {\n const execShow = useAction(displayModal)\n const execHide = useAction(hideModal)\n const isDisplayed = useSelector(isModalDisplayed(modalId))\n const display = useErrorBoundaryCallback(() => execShow(modalId), [execShow, modalId])\n const hide = useErrorBoundaryCallback(() => execHide(modalId), [execHide, modalId])\n return {\n isModalDisplayed: isDisplayed,\n displayModal: display,\n hideModal: hide\n }\n}\n\nexport default useModal\n","import React from 'react'\n\nconst DEFAULT_DELAY_BEFORE_LAUNCH = 0\nconst STATUS_WAITING = 'waiting'\nconst STATUS_READY = 'ready'\n\nexport default class DelayComponent extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n status: STATUS_WAITING\n }\n }\n\n componentDidMount() {\n this.timeout = setTimeout(this.ready, this.props.delay || DEFAULT_DELAY_BEFORE_LAUNCH)\n }\n\n componentWillUnmount() {\n clearTimeout(this.timeout)\n }\n\n ready = () => {\n this.setState({ status: STATUS_READY })\n }\n\n render() {\n if (this.state.status !== STATUS_READY) return <>\n return this.props.children\n }\n}\n","import React, { useState } from 'react'\nimport useEventCallback from './useEventCallback'\nimport s from './SwitchInput.less'\nimport classNames from 'classnames'\nimport useEffectExceptMount from './useEffectExceptMount'\n\nconst SwitchInput = ({ onChange, defaultValue = false }) => {\n const [value, setValue] = useState(defaultValue)\n\n useEffectExceptMount(() => {\n onChange(value)\n }, [value])\n\n const onClick = useEventCallback(() => {\n setValue(!value)\n }, [value])\n\n return (\n
    \n
    \n
    \n )\n}\n\nexport default SwitchInput\n","import { useEffect, useRef } from 'react'\n\nconst useEffectExceptMount = (fn, deps) => {\n const initialMount = useRef(true)\n useEffect(() => {\n if (initialMount.current) {\n initialMount.current = false\n } else {\n return fn()\n }\n }, deps)\n}\n\nexport default useEffectExceptMount\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"I9KMH\",\"active\":\"CINep\",\"button\":\"RKMkG\"};","export const buildStyleAttributes = (attr = {}) => {\n const extra = attr.color ? { WebkitTextFillColor: attr.color } : {}\n\n return { ...attr, ...extra }\n}\n\n/* Returns an invisible RGB if no hex is provided */\nexport const hexToRgb = (hex, alpha = 1) => {\n if (!hex) return `rgba(0,0,0,0)`\n\n const [r, g, b] = hex.match(/\\w\\w/g).map(x => parseInt(x, 16))\n\n return `rgba(${r},${g},${b},${alpha})`\n}\n\nexport const buildForceColorFullString = color => `color:${color};fill:${color};-webkit-text-fill-color:${color};`\n","import { useState, useEffect } from 'react'\n\nexport default (value, timeout) => {\n const [state, setState] = useState(value)\n\n useEffect(() => {\n const handler = setTimeout(() => setState(value), timeout)\n\n return () => clearTimeout(handler)\n }, [value, timeout])\n\n return state\n}\n","import { useCallback, useEffect, useRef } from 'react'\n\nconst useTimeout = (defaultDelay = 0) => {\n const toRef = useRef()\n const launch = useCallback(\n (fn, delay = defaultDelay) => {\n clearTimeout(toRef.current)\n toRef.current = setTimeout(fn, delay)\n },\n [defaultDelay]\n )\n\n const stop = useCallback(() => {\n clearTimeout(toRef.current)\n toRef.current = undefined\n }, [])\n\n const isPending = () => Boolean(toRef.current)\n\n useEffect(() => {\n return () => {\n stop()\n }\n }, [])\n\n return [launch, stop, isPending]\n}\n\nexport default useTimeout\n","import { useState, useCallback, useEffect } from 'react'\n\nconst useToggle = (defaultOpen = true) => {\n const [isOpen, setState] = useState(defaultOpen)\n\n useEffect(() => {\n setState(false)\n }, [])\n\n const toggle = useCallback(() => setState(!isOpen), [isOpen])\n\n const onClick = useCallback(\n evt => {\n if (evt) evt.preventDefault()\n\n toggle()\n },\n [toggle]\n )\n\n return [isOpen, onClick]\n}\n\nexport default useToggle\n","import { selectCurrentHistoryRoute, selectIsCurrentHistoryRoutePageless } from '../store/history/history.selectors'\nimport { requestPageAdConfig } from '../store/ad/ad.actions'\nimport { avoidReloadOnBackNav, processOnRouteLeave } from '../domain/router/routeUtils'\nimport RouteHandlingState from './RouteHandlingState'\nimport { noop } from '../utils/function'\nimport { noticeNavigationDone } from '../store/history/history.actions'\n\n/**\n * Each route has to implement 2 functions:\n * - onRouteEnter -> return a promise after executions of redux actions\n * - renderPage -> return JSX representation of the page\n * And can implement a third one:\n * - onRouteLeave -> execute actions when the page is left\n * */\n\nexport const handleRouteLoading =\n ({ onRouteEnter, renderPage, onRouteLeave }) =>\n ({ routeContext, params } = {}) => {\n if (__SERVER__ && !renderPage) throw Error('renderPage should always be defined on server')\n if (!onRouteEnter) console.warn('Be careful the function onRouteEnter has not been passed')\n\n const routeHandlingState = RouteHandlingState.getInstance()\n\n const { action, state, store, prevRoute } = routeContext // FIXME NES-1803\n const avoidFetchData =\n (state && state.avoidDispatchingAnyPageAction && action !== 'POP') ||\n (action === 'POP' && avoidReloadOnBackNav(prevRoute?.route))\n const avoidPageTag = state && state.avoidPageTag\n\n processOnRouteLeave({ routeContext, params, currentOnRouteLeave: onRouteLeave })\n\n const avoidRefetchingPageData = state && state.avoidRefetchingPageData\n const currentRouteIsNotPageless = !selectIsCurrentHistoryRoutePageless(store.getState())\n\n routeHandlingState.renderPage = renderPage\n\n let actionsToDispatch = Promise.resolve()\n\n if (__BROWSER__) {\n if (currentRouteIsNotPageless)\n requestPageAdConfig(selectCurrentHistoryRoute(store.getState()))(store.dispatch, store.getState)\n\n if (avoidFetchData) {\n if (!avoidPageTag) deferSendingPageTag(routeContext)()\n } else {\n onRouteEnter({ routeContext, store, params, state, avoidRefetchingPageData }).then(\n !avoidPageTag ? deferSendingPageTag(routeContext) : noop\n )\n }\n } else {\n actionsToDispatch = onRouteEnter({ routeContext, store, params, state, avoidRefetchingPageData })\n }\n\n return actionsToDispatch.then(() => ({\n component: routeHandlingState.renderPage({ routeContext, params, state })\n }))\n }\n\nexport const deferSendingPageTag = routeContext => {\n const { store } = routeContext\n const previousRoute = selectCurrentHistoryRoute(store.getState())\n return () => {\n const currentRoute = selectCurrentHistoryRoute(store.getState())\n\n if (previousRoute === currentRoute && __BROWSER__) {\n noticeNavigationDone(routeContext)(store.dispatch, store.getState)\n }\n }\n}\n","import { getImageUrl } from '../../domain/utils/image'\nimport { getDevicePixelRatio } from '../../domain/Device'\n\nexport const extractApps = conf => {\n const applications = conf?.apps ?? []\n return applications.map(({ id, name, morePoisLabel, menu, mob_roundImage, banner, pushSeo }) => {\n return {\n id,\n name,\n morePoisLabel,\n menu: getImageUrl(menu),\n mob_roundImage: getImageUrl(mob_roundImage, Math.max(4, getDevicePixelRatio())),\n banner: getImageUrl(banner, Math.max(4, getDevicePixelRatio())),\n pushSeo\n }\n })\n}\n\nexport const extractFreeApps = conf => conf?.freeApps ?? []\n\nexport const extractCategories = conf => {\n const categories = conf?.categories ?? []\n return categories.map(({ id, shortLabel, label, iconId, apps, color, segment }) => {\n return { id, shortLabel, label, iconId, apps, color, segment }\n })\n}\n\nexport const extractSubcategories = conf => {\n const subcategories = conf?.subcategories ?? []\n return subcategories.map(({ id, label, iconId, color, rubricIds, filterApps }) => {\n return { id, label, iconId, color, rubricIds, filterApps }\n })\n}\n\nexport const extractMenus = conf => conf?.menus\n\nexport const parseGeoentitiesConfig = data => {\n if (!(data instanceof Array)) return [] // TODO: should return an error ?\n\n return data.map(({ id, type, label, from, to, logo }) => ({\n id,\n type,\n label,\n from,\n to,\n logo: getImageUrl(logo, Math.max(2, getDevicePixelRatio()))\n }))\n}\n","import {\n requestGeoentitiesAtAddressConfig,\n requestPoiassetsConfig,\n requestPoisOnRouteConfig\n} from '../../dataSource/poiassets/poiassets.requests'\nimport {\n SET_GEOENTITIES_AT_ADDRESS_CONFIG,\n SET_POIASSETS_CONFIG,\n SET_POIASSETS_STATUS,\n SET_POIS_ON_ROUTE_CONFIG\n} from './poiassets.actionTypes'\nimport { POIASSETS_STATUS } from './poiassets.constants'\nimport {\n extractApps,\n extractCategories,\n extractFreeApps,\n extractMenus,\n extractSubcategories,\n parseGeoentitiesConfig\n} from './poiassets.dataParsers'\nimport { selectGeoentitiesAtAddressConfig, selectPoiAssetsStatus, selectPoisOnRouteConfig } from './poiassets.selectors'\n\nexport const loadPoiAssetsConfiguration = () => (dispatch, getState) => {\n const status = selectPoiAssetsStatus(getState())\n\n if (status === POIASSETS_STATUS.REQUESTING || status === POIASSETS_STATUS.DONE) return Promise.resolve()\n\n dispatch({ type: SET_POIASSETS_STATUS, payload: { status: POIASSETS_STATUS.REQUESTING } })\n\n return requestPoiassetsConfig().then(response => {\n if (!response.data) {\n dispatch({ type: SET_POIASSETS_STATUS, payload: { status: POIASSETS_STATUS.INITIAL } })\n return Promise.resolve()\n }\n\n dispatch({\n type: SET_POIASSETS_CONFIG,\n payload: {\n menus: extractMenus(response.data),\n apps: extractApps(response.data),\n freeapps: extractFreeApps(response.data),\n categories: extractCategories(response.data),\n subcategories: extractSubcategories(response.data)\n }\n })\n })\n}\n\nconst loadGeoentitiesAtAddressConfiguration = () => (dispatch, getState) => {\n if (selectGeoentitiesAtAddressConfig(getState())) return\n\n return requestGeoentitiesAtAddressConfig().then(response => {\n if (!response.data) return\n\n dispatch({\n type: SET_GEOENTITIES_AT_ADDRESS_CONFIG,\n payload: parseGeoentitiesConfig(response.data)\n })\n })\n}\n\nconst loadPoisOnRouteConfiguration = () => (dispatch, getState) => {\n if (selectPoisOnRouteConfig(getState())) return\n\n return requestPoisOnRouteConfig().then(response => {\n if (!response.data) return\n\n dispatch({\n type: SET_POIS_ON_ROUTE_CONFIG,\n payload: parseGeoentitiesConfig(response.data)\n })\n })\n}\n\nexport const loadCompleteGeoentitiesAtAddressConfiguration = () => (dispatch, getState) =>\n Promise.all([\n loadPoiAssetsConfiguration()(dispatch, getState),\n loadGeoentitiesAtAddressConfiguration()(dispatch, getState)\n ])\n\nexport const loadCompletePoisOnRouteConfiguration = () => (dispatch, getState) =>\n Promise.all([loadPoiAssetsConfiguration()(dispatch, getState), loadPoisOnRouteConfiguration()(dispatch, getState)])\n","export default class SuggestError extends Error {\n constructor() {\n super('Pas de suggestion correspondant à cette recherche.')\n this.name = 'SuggestError'\n }\n}\n","import { requestSuggest } from '../../dataSource/suggest/suggest.requests'\nimport SuggestError from '../../domain/suggest/SuggestError'\nimport { selectLocale } from '../locale/locale.selectors'\nimport { selectMapBbox } from '../map/map.selectors'\nimport {\n LOAD_SUGGEST_ERROR,\n LOAD_SUGGEST_RESPONSE,\n RESET_SUGGEST_DATA,\n SET_SUGGEST_INPUT_VALUE\n} from './suggest.actionTypes'\nimport parse from './suggest.dataParser'\n\nfunction isResponseFromLastRequest(suggest, requestTime) {\n return suggest.lastRequestTime < requestTime\n}\n\nexport const setSuggestInputValue = value => dispatch => {\n dispatch({\n type: SET_SUGGEST_INPUT_VALUE,\n payload: value\n })\n}\n\nexport const resetSuggestData = () => (dispatch, getState) => {\n dispatch({\n type: RESET_SUGGEST_DATA\n })\n}\n\nexport const suggest =\n ({ terms, suggestFilterType = 'all' }) =>\n (dispatch, getState) => {\n if (!terms) {\n resetSuggestData()(dispatch, getState)\n return Promise.resolve()\n }\n\n setSuggestInputValue(terms)(dispatch, getState)\n\n const requestTime = Date.now()\n const locale = selectLocale(getState())\n const bbox = selectMapBbox(getState())\n return requestSuggest(bbox, locale, { terms, suggestFilterType })\n .then(response => {\n const { data } = response\n\n if (!data?.suggests) {\n throw new SuggestError()\n }\n\n const parsedData = parse(data)\n const { suggest } = getState()\n\n if (isResponseFromLastRequest(suggest, requestTime)) {\n dispatch({\n type: LOAD_SUGGEST_RESPONSE,\n payload: { data: parsedData, requestTime }\n })\n }\n })\n .catch(error => {\n const { suggest } = getState()\n if (isResponseFromLastRequest(suggest, requestTime)) {\n dispatch({\n type: LOAD_SUGGEST_ERROR,\n payload: { error, requestTime }\n })\n }\n })\n }\n","import { getBIParams } from '../../domain/analytics/BiTagger'\nimport { bboxToSearchParameter } from '../../domain/map/conversion'\nimport request from '../../domain/utils/request'\nimport { getService, getServiceParameters } from '../../parameters'\nimport SERVICES from '../../services.constants'\n\nexport const requestSuggest = (bbox, locale, { terms, suggestFilterType = 'all' }) => {\n const service = getService(SERVICES.SUGGEST)\n const params = {\n q: terms,\n filter: suggestFilterType,\n limit: 5,\n focus_bbox: bboxToSearchParameter(bbox),\n ...getServiceParameters(SERVICES.SUGGEST, locale),\n ...getBIParams()\n }\n\n return request.get(service, { locale, params }).then(response => response)\n}\n","import { getImageUrl } from '../../domain/utils/image'\nimport { JO_CELEBRATION_PLACE, JO_EVENT_SITE } from '../geoentity/geoentity.constants'\n\nexport default function (response) {\n return {\n suggests: response.suggests.map((suggest = {}) => {\n const { type, lat, lng, subtype, labels, brand_icon_url, icon_urls, address_components } = suggest\n\n const iconUrls = icon_urls\n ? {\n iconUrls: icon_urls.map(iconUrl => getImageUrl(iconUrl))\n }\n : {}\n\n const brandIconUrl = brand_icon_url ? { brandIconUrl: getImageUrl(brand_icon_url) } : {}\n\n return Object.assign(\n {},\n { type, lat, lng, labels },\n subtype ? { subtype } : {},\n subtype?.id === JO_EVENT_SITE || subtype?.id === JO_CELEBRATION_PLACE ? { address_components } : {},\n iconUrls,\n brandIconUrl\n )\n })\n }\n}\n","import { flow } from '../../../utils/function'\nimport { sortBy, take } from '../../../utils/array'\n\nimport {\n formatLabelWithInputValueKeyword,\n isLabelMatchingInputValueKeyword\n} from '../../suggest/suggest.selectors.utils'\n\nconst formatHistoryEntry = ({ searchHistoryEntry, isLabelsFormatted, normalizedCurrentSearch, currentSearch }) => {\n return {\n labels: isLabelsFormatted\n ? searchHistoryEntry.split_label.map(formatLabelWithInputValueKeyword(normalizedCurrentSearch, currentSearch))\n : searchHistoryEntry?.split_label,\n date: searchHistoryEntry?.date,\n type: searchHistoryEntry?.type,\n subtype: {\n id: 'history'\n }\n }\n}\n\nexport const lastTenHistoryEntries = searchHistory =>\n flow(\n array => sortBy(array, 'date', 'desc'),\n array => take(array, 10),\n array => array.map(searchHistoryEntry => formatHistoryEntry({ searchHistoryEntry }))\n )(searchHistory)\n\nexport const lastSearchHistoryEntries = (normalizedCurrentSearch, currentSearch, searchHistory) =>\n flow(\n array =>\n array.filter(searchHistoryEntry =>\n isLabelMatchingInputValueKeyword(normalizedCurrentSearch, searchHistoryEntry.split_label.join(' '))\n ),\n array => sortBy(array, 'date', 'desc'),\n array => take(array, 3),\n array =>\n array.map(searchHistoryEntry =>\n formatHistoryEntry({\n searchHistoryEntry,\n isLabelsFormatted: true,\n normalizedCurrentSearch,\n currentSearch\n })\n )\n )(searchHistory)\n","import { createCustomSelector } from '../../../domain/utils/react-reselect'\nimport { selectSearchState } from '../search.selectors'\nimport { lastTenHistoryEntries } from './searchHistory.utils'\n\nexport const selectSearchHistory = createCustomSelector(selectSearchState, search => search?.searchHistory ?? [])\n\nexport const selectLastTenHistoryEntries = createCustomSelector(selectSearchHistory, searchHistory =>\n lastTenHistoryEntries(searchHistory)\n)\n","import { SUGGEST_FROM_VALUES } from '../../domain/suggest/suggest.constants'\nimport { createCustomSelector } from '../../domain/utils/react-reselect'\nimport { selectLastTenHistoryEntries, selectSearchHistory } from '../search/searchHistory/searchHistory.selectors'\nimport { lastSearchHistoryEntries } from '../search/searchHistory/searchHistory.utils'\nimport {\n selectFakeFavorites,\n selectIsUserAccountEnabled,\n selectUserFavorites\n} from '../userAccount/userAccount.selectors'\nimport { isLabelMatchingInputValueKeyword, normalizeInputValueKeyword, normalizeLabel } from './suggest.selectors.utils'\n\nconst addFromProperty = from => item => ({ ...item, from })\n\nconst selectSuggestState = store => store?.suggest ?? {}\n\nexport const selectSuggestInputValue = createCustomSelector(selectSuggestState, suggest => suggest?.inputValue ?? '')\n\nexport const selectIsSuggestInputValueEmpty = createCustomSelector(\n selectSuggestInputValue,\n inputValue => inputValue === ''\n)\n\nexport const selectSuggestError = createCustomSelector(selectSuggestState, suggest => suggest?.error ?? null)\n\nexport const selectServiceSuggestions = createCustomSelector(selectSuggestState, suggest =>\n (suggest?.serviceSuggestions ?? []).map(addFromProperty(SUGGEST_FROM_VALUES.service))\n)\n\nexport const selectSearchHistorySuggestions = createCustomSelector(\n selectSuggestInputValue,\n selectSearchHistory,\n selectLastTenHistoryEntries,\n (inputValue, searchHistory, lastTenHistoryEntries) => {\n if (inputValue === '') return lastTenHistoryEntries.map(addFromProperty(SUGGEST_FROM_VALUES.history))\n\n const normalizedInputValue = normalizeInputValueKeyword(inputValue)\n\n return lastSearchHistoryEntries(normalizedInputValue, inputValue, searchHistory).map(\n addFromProperty(SUGGEST_FROM_VALUES.history)\n )\n }\n)\n\nconst formatFavoriteForSuggest = ({ uuid, label, address, favIcon, type, incentive, labels }) => {\n return {\n uuid,\n labels: address ? [label, address] : labels,\n subtype: { id: favIcon },\n type,\n from: SUGGEST_FROM_VALUES.favorites,\n incentive: Boolean(incentive)\n }\n}\n\nconst formatHomeOrWorkFavoriteForSuggest = suggestion => {\n return {\n ...formatFavoriteForSuggest(suggestion),\n address: suggestion.address\n }\n}\n\nexport const selectSuggestFakeFavorites = createCustomSelector(selectFakeFavorites, fakeFavorites => {\n const { home, work } = fakeFavorites\n return {\n home: {\n from: SUGGEST_FROM_VALUES.favorites,\n ...home\n },\n work: {\n from: SUGGEST_FROM_VALUES.favorites,\n ...work\n }\n }\n})\n\nexport const selectFavoritesFormattedForSuggest = createCustomSelector(\n selectIsUserAccountEnabled,\n selectUserFavorites,\n selectSuggestFakeFavorites,\n (isUserAccountAvailable, favorites, fakeFavorites) => {\n if (!isUserAccountAvailable) return []\n\n const { others, home, work } = favorites\n const suggestsHomeWork = [\n home.label ? favorites.home : fakeFavorites.home,\n work.label ? favorites.work : fakeFavorites.work\n ]\n\n return [\n ...suggestsHomeWork.map(formatHomeOrWorkFavoriteForSuggest),\n ...others.map(other => formatFavoriteForSuggest(other))\n ]\n }\n)\n\nexport const selectFavoritesSuggestions = createCustomSelector(\n selectFavoritesFormattedForSuggest,\n selectSuggestInputValue,\n (favorites, inputValue) => {\n if (inputValue === '') return favorites.slice(0, 5)\n // TODO: vérifier avec le service que les favoris sont bien triés du plus récent au plus ancien\n\n return favorites.filter(favorite => {\n const inputValueKeyword = normalizeInputValueKeyword(inputValue)\n return isLabelMatchingInputValueKeyword(inputValueKeyword, favorite.labels.join(' '))\n })\n }\n)\n\nexport const removeDuplicateSuggestions = (suggestionsToProcess, suggestionsToCompare) => {\n const labelsToCompare = suggestionsToCompare.map(suggestion => normalizeLabel((suggestion?.labels ?? []).join(' ')))\n return suggestionsToProcess.filter(suggestion => {\n const label = normalizeLabel(suggestion.labels.join(' '))\n return !labelsToCompare.find(item => item === label)\n })\n}\n\nexport const selectAllSuggestions = (withoutFavorites = false) =>\n createCustomSelector(\n selectSuggestError,\n withoutFavorites ? () => [] : selectFavoritesSuggestions,\n selectSearchHistorySuggestions,\n selectServiceSuggestions,\n (error, favoritesSuggestions, searchHistorySuggestions, serviceSuggestions) => {\n const favoritesSuggestionsWithUuid = favoritesSuggestions.filter(({ uuid }) => Boolean(uuid))\n const searchHistory = removeDuplicateSuggestions(searchHistorySuggestions, favoritesSuggestionsWithUuid)\n const service = removeDuplicateSuggestions(serviceSuggestions, [\n ...favoritesSuggestionsWithUuid,\n ...searchHistory\n ])\n\n return {\n error,\n suggestions: {\n favorites: favoritesSuggestionsWithUuid,\n searchHistory,\n service\n }\n }\n }\n )\n\nexport const selectHomeWorkOrFakeFavorites = createCustomSelector(\n selectIsUserAccountEnabled,\n selectUserFavorites,\n selectSuggestFakeFavorites,\n (isUserAccountAvailable, favorites, fakeFavorites) => {\n if (!isUserAccountAvailable) return []\n const { home, work } = favorites\n return [\n home?.label ? formatHomeOrWorkFavoriteForSuggest(favorites.home) : fakeFavorites.home,\n work?.label ? formatHomeOrWorkFavoriteForSuggest(favorites.work) : fakeFavorites.work\n ]\n }\n)\n","export const suggestServiceCtx = {\n filter: {\n addresses: 'addresses',\n places: 'places',\n all: 'all'\n },\n type: {\n address: 'address',\n poi: 'poi',\n store_chain: 'store_chain',\n rubric: 'rubric'\n }\n}\n","import { requestInventory } from '../../dataSource/itinerary/itinerary.requests'\nimport { selectLocale } from '../locale/locale.selectors'\nimport {\n SET_DEFAULT_FUEL_PRICES,\n SET_DEFAULT_VEHICULE_OPTIONS,\n SET_PREFERRED_MODE,\n SET_PREFERRED_OPTIONS_FOR_MODE\n} from './travelOptions.actionTypes'\nimport {\n extractDefaultFuelPrices,\n extractDefaultVehiculeOptions,\n extractTransportModes\n} from './travelOptions.dataParsers'\n\nconst fetchVehiclesOptions = () => (dispatch, getState) => {\n const locale = selectLocale(getState())\n\n return requestInventory(locale).then(data => {\n const vehiclesOptions = extractDefaultVehiculeOptions(data)\n const transportModes = extractTransportModes(data)\n\n dispatch({\n type: SET_DEFAULT_VEHICULE_OPTIONS,\n payload: { vehiclesOptions, transportModes }\n })\n\n const fuelPrices = extractDefaultFuelPrices(data)\n\n dispatch({\n type: SET_DEFAULT_FUEL_PRICES,\n payload: { fuelPrices }\n })\n })\n}\n\nlet mustFetchTravelOptions = true\nexport const fetchTravelOptionsConfig = () => (dispatch, getState) => {\n if (mustFetchTravelOptions) {\n mustFetchTravelOptions = false\n return fetchVehiclesOptions()(dispatch, getState)\n }\n\n return Promise.resolve()\n}\n\nexport const reinitializeFetchTravelOptionConfig = () => (mustFetchTravelOptions = true)\n\nexport const changePreferredOptions =\n ({ modeId, ...newPreferredOptionsForMode }) =>\n (dispatch, getState) => {\n dispatch({\n type: SET_PREFERRED_OPTIONS_FOR_MODE,\n payload: {\n modeId,\n ...newPreferredOptionsForMode\n }\n })\n }\n\nexport const setPreferredMode =\n ({ modeId }) =>\n dispatch => {\n dispatch({\n type: SET_PREFERRED_MODE,\n payload: {\n modeId\n }\n })\n }\n","import { parsePositiveNumber } from '../../utils/number'\n\nexport const extractDefaultVehiculeOptions = data => {\n return data?.vehicles.providers\n}\n\nexport const extractTransportModes = data => {\n return data?.transport_modes\n}\n\nexport const extractDefaultFuelPrices = data => {\n const fuelPrices = data?.fuel_prices ?? {}\n return Object.entries(fuelPrices).reduce((acc, entry) => {\n const [key, price] = entry\n acc[key] = parsePositiveNumber(price, 3)\n return acc\n }, {})\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"TYSMm\",\"search\":\"gEZJf\",\"suggest\":\"UKfJ2\",\"back\":\"WMONS\",\"form\":\"bY23q\",\"errorMessage\":\"raxn_\"};","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"VYaek\",\"menuCategoriesPE\":\"Ke0YP\",\"container\":\"Oj56O\",\"backButton\":\"jlxqp\",\"mainButton\":\"uzKXE\",\"mainButtonIcon\":\"mfQZu\",\"listButtonIcon\":\"ypqKW\",\"mainButtonLabel\":\"IDx1g\",\"listButtonLabel\":\"gyGKv\",\"header_list_button_label\":\"VszTN\"};","// extracted by mini-css-extract-plugin\nexport default {\"container\":\"XdwHk\",\"list\":\"Gw2WM\",\"listItem\":\"g7POR\",\"listItemFavorites\":\"jTuRJ\",\"arrow\":\"jqhSM\",\"arrowRight\":\"ZBeNf\",\"arrowLeft\":\"HxR2B\"};","// extracted by mini-css-extract-plugin\nexport default {\"root\":\"t0jbF\",\"subcategoryIcon\":\"ni2Gv\",\"label\":\"O2AiI\",\"logoWrapper\":\"m9Zbf\",\"logo\":\"r4vte\"};"],"names":["withUserKnown","_ref","size","SIZE_BIG","loaded","keycloak","useKeycloak","lastFullRoute","useSelector","selectPrevFullRouteNonPageLess","React","loginUrl","createLoginUrl","redirectUri","location","origin","RectangleActionButton","tagData","type","TAG_CLICK_USER_LOGIN_BUTTON","nofollow","label","href","wrapperClassName","defaultIconClassName","userPicClassName","connected","selectIsUserConnected","picture","selectUserPicture","shouldDisplayPicture","className","classnames","SVGIcon","icon","style","backgroundImage","marginTop","error","text","setText","useState","visible","setVisible","useTemporaryVisible","useEffect","name","StatusMessage","message","useT","INCENTIVE_NAME","incitationPrincipale","incitationOptionDeplacement","incitationOptionReponse","incitationPOI","withUserConnected","Component","props","withUserNotConnected","selectIsUserNotConnected","selectIsUserKnown","withUserUnknown","d","debug","setLoaded","Boolean","KeycloakJs","url","getService","SERVICES","KEYCLOAK","realm","clientId","init","onLoad","responseMode","silentCheckSsoFallback","silentCheckSsoRedirectUri","window","then","authenticated","catch","console","useKeycloakEngine","timeoutRef","useRef","execSetUserConnected","useAction","setUserConnected","execSetUserNotConnected","setUserNotConnected","execSetUserScreen","setUserUIScreen","execSetToken","setToken","token","idTokenParsed","identity","pick","USER_ID_LEGACY","USER_ID_SUB","USER_SCREENS","default","updateAndSaveToken","useCallback","updateToken","hasTokenBeenRefreshed","e","checkIfTokenWillExpire","isTokenExpired","current","setTimeout","EXPIRATION_SECONDS","clearTimeout","onTokenExpired","AD_STATUS_NONE","AD_STATUS_LOADING","AD_STATUS_LOADED","BaseAdLoader","_ref2","adName","keywordsSelector","children","askData","pageId","selectPageIdForAdConfig","adId","getAdIdByAdName","noop","adStatus","setAdStatus","execSetAdData","setAdData","execRemoveAdData","removeAdData","keywords","AdService","createAd","setAdKeywords","loadAd","getAdData","data","reloadAd","JSON","stringify","timeoutId","ONE_SECOND_MS","deleteAd","useAdLoader","id","withEmptyFallbackErrorBoundary","_ref3","restProps","state","selectIsCorrespondingPageAdConfigLoaded","_extends","key","StoreButton","appstore","TagActionLink","classNames","targetBlank","TAG_BLOCK_AUTOPROMO","tagInfo","area","analyticsConstants","autopromo","popin","AutoPromoPopinGE","hideModal","useModal","MODAL_IDS","AUTO_PROMO_POPIN","onPopinClose","useEventCallback","Modal","modalId","onClick","cross","src","qrcode","PLAY_STORE_URL","stores","android","APPLE_STORE_URL","ios","s","mappyLogoOutline","roadRadar","france","withFrenchSite","SIZE_NORMAL","displayModal","onButtonClick","useErrorBoundaryCallback","iconUrl","color","COLOR_GREY_EMPTY","BreadcrumbItem","labelKey","labelArgs","idx","itemProp","itemScope","itemType","T","args","content","propTypes","string","isRequired","arrayOf","number","Breadcrumbs","breadcrumbs","selectBreadcrumbs","map","FooterContact","TAG_CLICK_HELP_BUTTON","target","rel","question","CMPService","open","lock","SocialNetworkButtons","socialNetworkList","FacebookButton","TwitterButton","BlogButton","button","facebook","title","TAG_FOOTER_SOCIAL_NETWORKS_LINKS","ssrWhite","twitter","blog","disableNoreferrer","rss","privacy","isFR","selectIsFrenchSite","Details","summary","tooltipRight","classes","toggleClasses","FooterPrivacy","logoBonjour","width","height","loading","alt","logoMappy","logoRatpFr","logoRatpEn","logoRSS","renderGroupLogos","ID","TopSearchLinks","selectTopSearchLinks","selectShouldDisplayTopSearchTitle","element","document","getElementById","dangerouslySetInnerHTML","__html","innerHTML","root","withEverySelectorTruthy","selectShouldDisplayTopSearch","FooterTopSearch","magnifyingGlass","FooterCocorico","frenchFlag","withOnlyPE","srcSet","prefooterDeviceWebp","prefooterDevicePng","APPS_ADJUST_URL","main","COLOR_GREEN","isSearchPage","selectIsSearchPage","geoentitiesDisplayedAsList","selectAreGeoentitiesDisplayedAsList","AutoPromoFooterPE","FooterInfos","Anchor","ClosePopinButton","hasTag","execNavigateBack","navigateBack","useNavigateBack","TagActionButton","TAG_BACK","deferClick","ClosePopinIcon","ClosePopinButtonGE","withOnlyGE","useToggle","Summary","Chevron","down","Content","ImageGallery","ref","RImageGallery","lazyLoad","showNav","showThumbnails","showFullscreenButton","showPlayButton","displayName","customStyle","zIndex","backgroundColor","top","left","marginRight","transform","right","bottom","padding","overflow","borderRadius","border","overlayStyle","withCloseButton","execNavBackOnClose","rModalProps","isModalDisplayed","execNavBack","RModal","appId","stopPropagationHandler","onRequestClose","overlay","shouldCloseOnOverlayClick","isGE","isOpen","POSITIVE_FLOAT_MAX_3_RADIX","value","onChange","onBlur","inputValue","setInputValue","event","focus","targetValue","test","handleBlur","parsePositiveNumber","CloseUserAreaButton","onClose","LogoMappyImg","LogoMappy","UserAreaAnonymous","welcomeUserAccount","UserLoginButton","rightChildren","noBar","isDefaultScreen","selectIsUserScreenDefault","execSetUserUIScreen","onBack","arrowLeft","FavoriteContent","address","poiId","uuid","favIcon","action","actionIcon","allowEmpty","editTagData","gotoTagData","updating","execNavigateTo","navigateTo","execSetCurrentSearch","setCurrentSearch","execResetGeoentities","resetGeoentities","onItemClick","route","ROUTE_SEO_GEOENTITY","routeOptions","geoentityId","ROUTE_ADDRESS","clickableContent","actions","Throbber","ActionButton","actionButton","buildTagData","TAG_CLICK_USER_FAVORITES_LIST","ACTION","TYPE","UserFavorites","home","work","others","selectUserFavorites","execDeleteFavorite","deleteUserFavorite","favoriteError","setFavoriteError","manageFavorite","deleteFavorite","async","deleteFavoriteResult","canStillAddFavorite","selectUserFavoritesLimitNotReached","renderAddBtn","COLOR_GREEN_EMPTY","FAVORITE_TYPES","OTHER","user","favorites","other","listAdd","errorMessage","UserScreenHeader","UserFavoriteError","UserScreenContent","UserFavoriteItem","HOME_ICON","HOME","listEdit","listView","WORK_ICON","WORK","listDelete","UserTravelOptions","execFetchTravelOptionsConfig","fetchTravelOptionsConfig","onValidate","TravelOptions","onLogout","logout","TAG_CLICK_USER_LOGOUT_BUTTON","UserMenuItem","arrowRight","UserMenuAccount","tagType","UserMenu","userName","selectUserName","execLoadFavorites","loadFavorites","execLoadTravelOptions","loadTravelOptions","userMenuError","setUserMenuError","accountUrl","encodeURIComponent","gotoTravelOptionsScreen","loadTravelOptionsResult","travelOptions","gotoFavoritesScreen","loadFavoritesResult","sUserManageFavorite","UserPicture","TAG_CLICK_USER_ACCOUNT_BUTTON","UserLogout","powerOff","FavoriteInput","forwardRef","placeholder","suggestFilterType","suggestServiceCtx","filter","places","execSuggest","suggest","execSetInputValue","setSuggestInputValue","cancelSuggest","setCancelSuggest","inputRef","debouncedValue","useDebounce","hasDebouncedValueChangeOnce","onSubmit","Promise","resolve","blur","useImperativeHandle","doSuggest","val","terms","onFocus","select","autoComplete","autoFocus","UserManageFavorite","_favorites$type","selectUserUIScreenParams","saveOther","addOtherFavorite","saveHomeOrWork","addOrEditHomeOrWorkFavorite","initialValue","setValue","selectFavoritePlaceholder","onSuggestClicked","isPoi","suggestion","removeHtmlEmSpanAndITags","labels","join","equalsIgnoreCase","favorite","saveOtherResult","saveHomeOrWorkResult","search","back","form","preventDefault","SuggestContent","withoutFavorites","UserAreaConnected","selectUserUIScreen","UserAreaPlaceHolder","ContentLoader","speed","viewBox","foregroundColor","x","y","rx","ry","cx","cy","r","selectIsUserAccountEnabled","UserArea","isUIDisplayed","useUIDisplay","UI_ELEMENTS","USER","Helmet","imageList","original","favoriteAddressesImg","favoriteAddressesImgWebp","myOptionsImg","myOptionsWebp","myAlertsImg","myAlertsWebp","UserAccountIncentiveCarrousel","textIndex","setTextIndex","galleryRef","isBulletHighlighted","bulletIndex","goToPreviousSlide","pause","slideToIndex","getCurrentIndex","play","items","onBeforeSlide","nextIndex","autoPlay","slideInterval","goToNextSlide","star","point","SmallScreenText","UserAccountIncentivePopin","shouldDisplayPopin","selectShouldDisplayUserAccountIncentivePopin","USER_ACCOUNT_INCENTIVE_POPIN","execDispatchTag","dispatchTag","TAG_MULTIPATH_CTA","tag","PUB_TAG","PUB_COMPTE_PERSO_INCITATION","Incitation","isImpression","isPE","incentiveIllustration","registerConsent","consent","dispatch","getState","isEqual","selectCMPConsent","REGISTER_CONSENT","payload","execRegisterConsent","DidomiSDK","iabVersion","apiKey","constructor","noticeId","onReady","didomiSDK","setSDK","onConsentChanged","getConsents","categoryId","segment","useSelectorWithProps","selectCategorySegmentByCategoryId","adData","selectAdDataByAdId","Menuthema","linkLabel","imgUrl","linkUrl","DelayComponent","delay","AdLoader","categorySelector","isEmptyObj","onMouseLeaveMenu","subcategories","apps","selectSubCategoriesMenu","setMouseOverTimeout","clearMouveOverTimeout","useTimeout","usePublisherBarreCategorieTag","onMouseOut","columnCount","Number","length","onMouseOver","iconId","rubricIds","MenuSubCategoryItem","mob_roundImage","MenuApplicationItem","logo","CategorySubMenuStyle","AdMenu","MenuCategoriesGE","setCategoryId","execLoadPoiAssetsConfiguration","loadPoiAssetsConfiguration","execNavigateToSmrByCategory","navigateToPoisOnRouteByCategory","categories","selectCategoriesMenu","isPageElligibleForPoisOnRoute","selectIsPageElligibleForPoisOnRoute","clearMouseOverTimeout","unselectCategory","execNavigateToSearchByCategory","navigateToSearchByCategory","onMenuMouseOver","onMenuMouseOut","shortLabel","MenuCategoryItem","selected","active","onCategoryClick","catId","TAG_CLICK_CATEGORY_BAR","CAT_ID","APP_OR_SUBCAT_ID","MenuSubCategoriesGE","AutoPromoOpenButton","header","Outdoor","wrapper","view","isOutdoorDisplayed","selectIsOutdoorDisplayed","outdoorPanoramicId","selectOutdoorPanoramicId","outdoorTargetCoordinates","selectOutdoorTargetCoordinates","locale","selectLocale","debugKeyHandler","_view$current","toggleDebug","stopListeningKeyForDebug","body","removeEventListener","hide","addEventListener","createOutdoorView","lat","lng","MappyOutdoor","View","apikey","getApiKey","domain","getDomain","imgPath","__APP_VERSION__","getLocaleUnderscored","lookAt","lon","selectPageSpecificClasses","store","_props$pageClassManag","pageClassManager","call","selectCommonClasses","createCustomSelector","selectIsMapFullScreen","isUIElementDisplayed","POPIN","SUGGEST","MENU_PE","MAP_TOOLS_PE","selectFocusedPoiId","isMapFullScreen","isPopinDisplayed","isSuggestDisplayed","isMenuPEDisplayed","isMapToolsPEDisplayed","hasFocusedPoi","PAGE_CLASSES","withFullscreenMap","withDetail","withSuggest","withMenuPEDisplayed","withMapToolsPEDisplayed","withPoiPopinDisplayed","Page","cssClasses","commonClasses","pageSpecificClasses","CMPPlaceholder","ScrollContext","useScrollContext","useContext","scrollableElementRef","getScrollValue","_scrollableElementRef","scrollTop","querySelector","setScrollValue","scrollTo","scrollGoal","arguments","undefined","now0","scroll0","scrollDelta","step","now","t","scrollPos","Math","sin","PI","requestAnimationFrame","animate","addScrollListener","fn","el","removeScrollListener","checkIfTargetIsVisible","parent","child","targetTop","offsetTop","totalScrollHeight","offsetParent","clientHeight","innerHeight","scrollValue","providerValue","Provider","timeout","setAction","clear","backButton","UserButton","ROUTE_USER_ACCOUNT","TAG_CLICK_USER_BURGER","hamburger","UniverseButton","link","__SERVER__","DesktopPreHeader","homePage","selectIsHomePage","itineraryOptions","selectItineraryOptions","execNavigateToHomepage","navigateToHomepage","onClickToHomepage","shouldDisplayUserAccount","iconItinerary","generateFullRoute","ROUTE_ITINERARY_HOME","selectedActiveFilter","selectGeoentityActiveFilter","subHeader","subHeaderSelectorConditionFn","headerButton","menuCategoriesPE","suggestDisplayed","searchDialogDisplayed","SEARCH_DIALOG","backButtonDisplayed","selectIsBackButtonDisplayed","headerHeight","selectHeaderHeight","subHeaderComponent","userAccountEnabled","shouldDisplayMenuCategoriesPE","computedHeaderHeight","useComputedHeaderHeight","container","withBackButton","withHeaderButton","withUserAccountButton","SubHeader","MenuCategoriesPE","localeCountryIsFrance","withFrenchLanguage","localeLanguageIsFrench","withoutEnglishSite","localeCountryIsUK","description","displayHighlightBar","img","_global","withoutSubHeader","hidden","high","highNoMap","PE_MAIN_START_POS","positionAtStart","selectMainPEPositionAtStart","windowHeight","global","getStyle","headerWithSubHeaderHeight","HEADER_SUBHEADER_HEIGHT","PREHEADER_HEIGHT","minTop","MINI_MAP_HEIGHT","max","PE_MAIN_VALUES","ResponsiveScrollableWrapper","withMapReady","MapEventPopin","mapEventPopinInfo","selectMapEventPopin","shouldDisplayMapEvenPopin","selectShouldDisplayMapEventPopin","execResetMapEventPopinInfo","resetMapEventPopin","asset_zone","asset_event","UPI","useMapContext","isDisplayed","selectIsOutdoorPrompted","offsetX","elementRef","coords","setCoords","setPreviewTimeout","clearPreviewTimeout","displayPreview","closePreview","useOutdoorPreviewPopup","execDisplayOutdoor","displayOutdoor","execDisplayPopup","displayPopup","execHidePopup","hidePopup","fetchPano","panoData","status","OUTDOOR_STATUS_PROMPT","POPUP_TYPE_PANO","follow","unfollow","on","mapClicked","mapMouseMove","getCanvas","cursor","bodyMouseMove","off","launchOutdoor","panoramicId","ROUTE_360_VIEW_FULLSCREEN","lngLat","onMouseMove","UPI_SIZE","clientX","clientY","onClicked","person","selectGeolocationStatus","execSetGeolocationStatus","setGeolocationStatus","onMapMove","statusIsFollow","GEOLOC_STATUS_FOLLOW","moveFromUser","fromAppAction","MAPLIBRE_EVENT_MOVE","GEOLOC_STATUS_ACTIVE","onMapMoveDelayed","debounce","MAP_STORE_UPDATE_DELAY","useEffectWithMapContext","MAPLIBRE_EVENT_ZOOM","MapLoadingError","Error","super","this","originalError","lastTimeout","nbClick","redirectToWebGLErrorPage","mapLoadingError","SentryService","captureException","changeDocumentLocation","mapInstanceRef","mapContainerRef","mapStyleName","setMapStyleName","storeBboxRef","useRefFromSelector","selectMapBbox","couldFullScreen","selectCouldMapFullScreen","mapService","selectMapService","maxZoom","selectMapMaxZoom","mapStatus","selectMapStatus","execUpdate","update","execSetMapStatus","setMapStatus","execMapDestroyed","mapDestroyed","execResetStyle","mapResetStyle","execToggleFullscreen","toggleFullscreen","getMapStartLocation","GEOIP","startLocation","center","zoom","enabled","bounds","getMapLibreglState","bbox","getBounds","toArray","getZoom","onUpdate","activeBbox","computeMapActiveBbox","searchBbox","computeSearchBbox","distanceFromPreviousChange","computePixelsDeltaBetweenBboxes","setStyle","updateMapStatusOnRender","MAP_STATUS_STYLED","isStyleLoaded","MAP_STATUS_INIT","resize","isWebglSupported","sessionId","getMapSessionId","MapLibreMap","pitchWithRotate","dragRotate","minZoom","MAP_ZOOM_MIN","doubleClickZoom","keyboard","attributionControl","transformRequest","params","addParamsToUrl","headers","mapInstance","_e$originalEvent","originalEvent","touches","fire","DELAY_TO_TRIGGER_CONTEXTMENU_ON_MOBILE","handleMobileLongTouchAsContextMenu","touchZoomRotate","disableRotation","updateHandler","getUpdateHandler","delayedUpdate","MAP_FROM_APP_ACTION_PADDING","once","MAP_FROM_APP_ACTION_MOVE","remove","throttledUpdateMapStyle","throttle","onMapTouchEvent","handled","isPolylineAroundPointer","mobileTapHandler","handleMobileTap","handler","currentZoom","where","flyTo","clearInterval","MIN_INTERVAL_TO_DISTINGUISH_SGLE_FROM_DBL_TAP","MapContext","tagAction","clickAction","useContextMenu","clickHandler","TAG_CLICK_CONTEXT_MENU","ContextMenuItemShowAddress","searchAddressFromPointAction","searchAddressFromPoint","ContextMenuItem","findAddressFromPoint","findAddressforGeolocation","addresses","reject","ContextMenuItemItineraryTo","execSetArrivalFromPoint","setArrivalFromPoint","itineraryUniverse","selectIsItineraryUniverse","navigateToAction","ROUTE_ITINERARY_TO","to","toAddress","avoidReset","navigateToItineraryTo","ContextMenuItemItineraryFrom","execSetDepartureFromPoint","setDepartureFromPoint","selectIsAnItineraryResultPage","ContextMenuItemItineraryAddStep","execAddStep","addStep","execSetStepIdx","setStepIdx","execSetStepFromAddress","setStepFromAddress","stepsLength","selectStepsLength","selectIsPlacesUniverse","ContextMenuItemShowCity","execSearchLocation","searchCityFromPoint","searchDepartmentFromPoint","searchRegionFromPoint","LocalContext","canvas","clientWidth","canvasWidth","canvasHeight","currentRoute","selectCurrentHistoryRoute","setEvent","shouldDisplay","selectShouldDisplayContextMenu","closeContextMenu","onContextMenu","useImpressionTag","condition","menuClickHandler","ContextMenuItemShowDepartment","ContextMenuItemShowRegion","performance","Date","FPS","fps","stop","componentDidMount","compute","componentWillUnmount","setState","_interval","count","bind","setInterval","updateFpsCount","deltaTime","toFixed","render","BboxDebugger","fillColor","isMapReady","selectIsMapReady","debugId","x1","y1","x2","y2","p1","min","geometry","coordinates","isEmpty","getLayer","addLayer","source","paint","getSource","setData","removeLayer","removeSource","toString","ViewportDebugger","bboxArrayToBboxArrays","selectViewport","MapBboxDebugger","ActiveBboxDebugger","selectMapActiveBbox","SearchBboxDebugger","selectMapSearchBbox","StepsDebugger","departure","arrival","selectStepsCoordinates","getBboxFromLngLatPoints","PolylineDebugger","selectCurrentPolylineBbox","ZoomDebugger","_mapContext$map","_mapContext$map$getZo","rawZoom","floor","mapDebuggerAPI","ui","viewport","steps","polyline","activebbox","searchbbox","PREFERENCES_KEY","MapDebuggerComponent","mapDebugger","setUIItem","prop","show","saveJSONInLocalStorage","preferences","loadJSONFromLocalStorage","MapDebugger","getFromLocalStorage","Marker","greyMarker","IMAGE_MARKER","ADDRESS_BIG_MARKER_WIDTH","ADDRESS_BIG_MARKER_HEIGHT","setAmbiguityAddress","setSingleAddress","AddressMarkersContainer","selectAddresses","popupType","selectPopupType","execDisplayPopupAddress","execSetAmbiguityAddress","handleClickMarker","POPUP_TYPE_ADDRESS","contour","selectAddressContour","AddressMarker","position","selectGeolocationPosition","geolocationOn","selectIsGeoLocationOn","marker","setMarker","rotation","activated","mapReady","setRotation","compassHandler","absolute","alpha","eventName","useCompass","refDiv","setLngLat","m","MapLibreMarker","anchor","addTo","POPUP_ID","PortalPopup","popupId","useMapLibrePopup","popupData","selectPopupData","shouldHavePopup","offset","popupDataAreComplete","hasPopup","setHasPopup","maxWidth","withIllustration","popupTypeClass","withIllustrationClass","mapLibrePopup","MapLibrePopup","closeButton","setHTML","domNode","ReactDOM","Popup","PopupPano","POPUP_TYPE_POI","PopupPoi","PopupAddress","getChild","selectShouldDisplayPopup","zoomThreshold","stripDecimal","round","useMapZoomHandler","targetZoom","selectMapTargetData","execAcknowledgeZoom","acknowledgeZoom","zoomTo","useMapPerfMetrics","vectorMap","selectIsVectorMap","execFinishMapLoading","sendMapLoadingTime","setTag","mapHasGoodSupport","String","transaction","startTransaction","configureScope","scope","setTransactionName","spanStyle","startChild","op","spanLoad","finish","startTimestamp","endTimestamp","loadTime","useMapMoveHandler","targetBbox","targetCenter","targetOptions","execAcknowledgeMove","acknowledgeMove","move","options","avoidAnimation","withFastAnimation","easing","pow","eventData","from","GEOLOC_MOVE_FROM_INITIAL","bboxIsValid","fitBounds","addBreadcrumb","easeTo","useMapPaddingHandler","getPadding","useComputePaddingGetter","setPadding","useCallbackWithMapContext","useTooltip","tooltip","setTooltip","showTooltip","hideTooltip","mouseListeners","checkOnce","checkEachWeek","parseInt","ONE_WEEK_MS","notificationActive","setNotificationActive","disableNotification","saveToLocalStorage","ModeMapEventLayerButton","_useSelector","disabled","ariaLabel","tooltipLabel","useNotificationHelper","currentMapMode","selectMapMode","mode","shouldDisplayNotification","DISABLE_COMMUNICATION","MAP_MODE_JO_LABEL","NotificationDot","ModeLayerButton","activeIcon","hoverIcon","isEventMode","execSetMode","setMapMode","MAP_MODES","neutral","ThemeLayerButton","execSetTheme","setMapTheme","selectMapTheme","MAP_THEMES","normal","themeButtons","ThemeStandard","MAP_BUTTON_THEME","availableInRaster","simple","ThemeSimple","nature","ThemeNature","satellite","ThemeSatellite","dark","ThemeDark","modeButtons","MAP_BUTTON_MODE","traffic","zfe","bicycle","tc","useMapThemeButtons","useMapModeButtons","activeMapEvents","selectActiveMapEvents","buttons","setButtons","splice","MAP_EVENTS_TOOLTIP_NOTIFICATION_KEY","MapEventTooltip","Buttons","isOpened","isClosing","closeModes","isVecto","hdTooltipDisplayed","setHdTooltip","execSwitchMapType","switchMapType","switchHdTooltip","switchHighDefMap","TAG_CLICK_TOGGLE_HD_MAP","CLICK_TAG","XTC_CARTE_HD_OFF","SwitchInput","defaultValue","informationImg","HdTooltip","selectShouldDisplayMapTools","LayersButtons","display","setDisplay","showUI","hideUI","execHideMapTooSlowTooltip","hideMapTooSlowTooltip","disableNotificationLayers","disableNotificationMapEventTooltip","onOpenClick","hasActiveMapEvent","isJoModeActivated","layerIcon","layersJoActivated","layersJO","layerHoverIcon","layersJoActivatedHover","layersJOHover","borderBottomRightRadius","borderBottomLeftRadius","layers","RasterMap","useLayersManager","layersDefaultVisibility","setLayersDefaultVisibility","mapMode","mapTheme","setLayoutProperty","isRetina","visibilities","layer","layout","visibility","forEach","match","RegExp","execRequestZoom","requestZoom","setTouchTimeout","clearTouchTimeout","isTouchTimeoutPending","z","duration","ceil","MAP_RASTER_ZOOM_MAX","getZoomOffset","_event$originalEvent","_event$originalEvent2","getMapActiveDimensions","centerX","centerY","layerX","layerY","handleInitialZoom","handleWheel","delta","MAP_ZOOM_STEP","deltaY","handleDblClick","shiftKey","around","handleTouch","methodName","originalMethod","_len","Array","_key","apply","fixZoomMethods","scrollZoom","disable","useIntegerZoom","SOURCE_ID_AREA","SOURCE_ID_LIMIT","LAYER_AREA_ID","LAYER_LIMIT_ID","CONTOUR_COLOR","createGeoJSON","features","properties","reverse","shape","useMemo","reverseShape","drawShape","addSource","cleanShape","DEFAULT_COPYRIGHT","Copyrights","copyrights","setCopyrights","mapEventAttached","getCopyright","uniq","queryRenderedFeatures","feature","includes","flatMap","parse","err","GeolocButton","statusFromButton","setStatusFromButton","displayError","setDisplayError","setErrorTo","clearErrorTo","isFollowStatus","isFetchStatus","GEOLOC_STATUS_FETCH_ACTIVE","GEOLOC_STATUS_FETCH_FOLLOW","GEOLOC_STATUS_BLOCKED","TAG_SEARCH_GEOLOCATION","newStatus","GEOLOC_STATUS_BUTTON_WORKFLOW","GEOLOC_STATUS_DISABLED","mapMove","mappyLogoFilled","Logo","OutdoorButton","statusIsPrompt","execHideOutdoor","hideOutdoor","TAG_UPI_IMMERSIVE","personArrowSurrounded","personFallingArrowSurrounded","Scale","scaleRef","addControl","MapLibreScaleControl","unit","removeControl","selectShouldDisplayToggleFullScreenGeButton","ToggleFullScreenGeButton","execToggleFullScreen","TAG_CLICK_TOGGLE_FULLSCREEN","ReduireDesktop","ToggleFullscreenPeButton","innerArrows","intervalRef","lastUpdate","setLastUpdate","ONE_MINUTE_MS","date","mins","getMinutes","hours","getHours","pad","formatHourFromDate","ZoomButton","otherProps","ZoomInButton","ZoomOutButton","ZoomButtons","zoomFromStore","selectMapZoom","setZoom","updateZoom","selectMapTooSlowTooltip","MapTooSlowTooltip","execSetLastMapTooSlowTimestamp","setMapTooSlowTimestamp","closeTooltip","PUB_MAP_POP_IN_MAP_TOO_SLOW","VectorMap","useClickMyMapLayers","isFrenchSite","handleClick","rubricId","TAG_CLICK_MY_MAP","navigateToPoi","mappy_poi_id","mappy_context_rubric","_layer$layout","LAYER_ID_CMM","_layer$layout2","useMapPointerHandler","quizGuessInProgress","selectQuizGuessInProgress","mapEventsKeys","getPolylinesOrClickableLayersAroundPointer","getBBoxAroundPointer","find","_feature$layer","layerId","LAYER_ID_POLYLINE","cmm","isMapEvent","handleMouseOver","shouldDisplayPointer","useClickMapEventsHandler","exectSetPopin","setMapEventPopin","shouldDisplayMapEventPopin","_e$features","mapEvent","selectShouldDisplayMapLayersButton","pageIsQuiz","selectIsQuizPage","MapProvider","GeolocMarker","Geolocation","TrafficLegend","ContextMenu","MapAddressContour","TEST_MODE","hash","DELAY_BETWEEN_CHECKS","withOnlyBrowser","AskForUpdate","version","setVersion","isSameVersion","translate","loadVersion","newVersion","fetchVersion","serviceUrl","WEB_VERSION","request","get","silent","warn","intervalId","reload","Map","StaticMap","staticMap","DynamicMap","deps","imgStyle","backgroundSize","IconMarker","insideSvgSize","background","RubricMarker","fill","HTMLMarker","html","isCurrent","anchorPosition","dragOptions","markerElementRef","mapLibreMarkerRef","isDraggable","onDragEnd","_props$onClick","stopPropagation","onSelect","_props$onSelect","onUnselect","_props$onUnselect","handleEvents","method","_mapLibreMarkerRef$cu","getElement","mapMarker","hasTouchSupport","attachEvents","unattachEvents","buildMarker","firstChild","draggable","renderMarkerType","ImageMarker","HTML_MARKER","itemClassName","iconClassName","catColorString","buildForceColorFullString","whiteColorString","execNavigateToSmrByApp","navigateToPoisOnRouteByApp","execNavigateToSearchByApp","navigateToSearchByApp","onApplicationClick","logoWrapper","selectCategoriesItemById","isMenuCategoriesPEAvailable","onTap","shouldHide","MenuSubCategoriesPE","labelStyle","iconStyle","borderColor","hexToRgb","buildStyleAttributes","execNavigateToSmrBySubCategory","navigateToPoisOnRouteBySubcategory","execNavigateToSearchBySubcategory","navigateToSearchBySubcategory","subcategoryIcon","setPublisherTagTimeout","clearPublisherTagTimeout","PUB_AFFICHAGE_BARRECATEGORIE","ROUTE_SEO_ITINERARY","ROUTE_SEO_ITINERARY_MODE","ROUTE_HOME","ROUTE_SEO_CITY_ACTIVITY","ROUTE_ADDRESS_HOME","ROUTE_SEO_ADDRESS","ROUTE_TRAFFIC_CITY","ROUTE_BICYCLE_CITY","ROUTE_SEO_DIRECTORY_CITY_ACTIVITY","ROUTE_SEO_DIRECTORY_CITY_OVM_POIS","ROUTE_ZFE_CITY","ROUTE_RESTRICTION_CITY","ROUTE_ITINERARY_HP_BY_MODE","ROUTE_TRAFFIC_HOME","ROUTE_BICYCLE_HOME","ROUTE_ZFE_HOME","ROUTE_RESTRICTION_HOME","selectFirstAddress","selectSelectedGeoentity","firstAddress","selectedGeoentity","hpLinkLabel","ROUTE_SEO_DIRECTORY_CITY_POIS","ROUTE_SEO_DIRECTORY_CITY_OVM_POIS_ACTIVITY","zip","projectDistrictZipcodeToWholeCityZipcode","postcode","linksLabel","ROUTE_BICYCLE_DEPARTMENT","ROUTE_BICYCLE_REGION","ROUTE_DEPARTMENT_HOME","ROUTE_REGION_HOME","ROUTE_SEO_DIRECTORY_CITY","ROUTE_SEO_DIRECTORY_ITINERARY","ROUTE_SEO_DIRECTORY_ITINERARY_BY_MODE","ROUTE_SEO_SEARCH_BY_APP","ROUTE_TOOLS_COMPUTE_RADIUS","ROUTE_SEO_CITY_APP","ROUTE_TRAFFIC_DEPARTMENT","ROUTE_TRAFFIC_REGION","ROUTE_RESTRICTION_DEPARTMENT","ROUTE_RESTRICTION_REGION","ROUTE_SEO_SEARCH_BY_RUBRIC","ROUTE_ZFE_DEPARTMENT","ROUTE_ZFE_REGION","ROUTE_ITINERARY_COMPUTING","ROUTE_ITINERARY_COMPUTING_BY_MODE","ROUTE_ITINERARY_RESULTS_BY_PROVIDER","ROUTE_ITINERARY_RESULTS_BY_ROUTE","ROUTE_ITINERARY_EXPENSE_REPORT","ROUTE_ITINERARY_ROADBOOK","KEYS","suggestionsFavorites","idxStartAt","selectedId","updateSelectedId","isInputValueEmpty","selectIsSuggestInputValueEmpty","isConnected","isUserAccountAvailable","hasFavoriteSuggests","SuggestContentList","suggestions","suggestionsSearchHistory","hasSearchHistorySuggests","suggestionsService","execResetSearchHistory","resetSearchHistory","onSuggestCleanHistory","hasSuggests","positionComponent","selectAllSuggestions","setSelectedId","timestamp","setTimestamp","searchHistory","hasServiceSuggests","service","stateRef","suggestsRef","errorRef","selectedIdRef","timestampRef","incentiveTagClickBuilder","TAG_SUGGEST","onIncentiveClick","useIncentiveClick","handleKeyboardEvent","currentSelectedId","currentTimestamp","newSelectedId","newTimestamp","suggestsSize","isKeyDown","isKeyUp","isKeyEnter","hasSpeedScrollLimitReached","SuggestFavoritesContent","SuggestSearchHistoryContent","SuggestServiceContent","SuggestClearHistory","SuggestContentError","SuggestEventSvg","iconName","fileName","JO_Paris_2024","JO_Archery_en","JO_Archery_fr","JO_ArtisticGymnastics_en","JO_ArtisticGymnastics_fr","JO_ArtisticSwimming_en","JO_ArtisticSwimming_fr","JO_Athletics_en","JO_Athletics_fr","JO_BMXfreestyle_en","JO_BMXfreestyle_fr","JO_BMXracing_en","JO_BMXracing_fr","JO_Badminton_en","JO_Badminton_fr","JO_Basketball3x3_en","JO_Basketball3x3_fr","JO_Basketball_en","JO_Basketball_fr","JO_BeachVolleyball_en","JO_BeachVolleyball_fr","JO_BlindFootball_en","JO_BlindFootball_fr","JO_Boccia_en","JO_Boccia_fr","JO_Boxing_en","JO_Boxing_fr","JO_Breaking_en","JO_Breaking_fr","JO_CanoeSlalom_en","JO_CanoeSlalom_fr","JO_CanoeSprint_en","JO_CanoeSprint_fr","JO_CyclingTrack_en","JO_CyclingTrack_fr","JO_Diving_en","JO_Diving_fr","JO_Equestrian_en","JO_Equestrian_fr","JO_Fencing_en","JO_Fencing_fr","JO_Football_en","JO_Football_fr","JO_Goalball_en","JO_Goalball_fr","JO_Golf_en","JO_Golf_fr","JO_Handball_en","JO_Handball_fr","JO_Hockey_en","JO_Hockey_fr","JO_Judo_en","JO_Judo_fr","JO_MarathonSwimming_en","JO_MarathonSwimming_fr","JO_ModernPentathlon_en","JO_ModernPentathlon_fr","JO_MountainBike_en","JO_MountainBike_fr","JO_ParaArchery_en","JO_ParaArchery_fr","JO_ParaAthletics_en","JO_ParaAthletics_fr","JO_ParaBadminton_en","JO_ParaBadminton_fr","JO_ParaCanoe_en","JO_ParaCanoe_fr","JO_ParaCyclingRoad_en","JO_ParaCyclingRoad_fr","JO_ParaCyclingTrack_en","JO_ParaCyclingTrack_fr","JO_ParaEquestrian_en","JO_ParaEquestrian_fr","JO_ParaJudo_en","JO_ParaJudo_fr","JO_ParaPowerlifting_en","JO_ParaPowerlifting_fr","JO_ParaRowing_en","JO_ParaRowing_fr","JO_ParaSwimming_en","JO_ParaSwimming_fr","JO_ParaTableTennis_en","JO_ParaTableTennis_fr","JO_ParaTaekwondo_en","JO_ParaTaekwondo_fr","JO_ParaTriathlon_en","JO_ParaTriathlon_fr","JO_RhythmicGymnastics_en","JO_RhythmicGymnastics_fr","JO_RoadCycling_en","JO_RoadCycling_fr","JO_Rowing_en","JO_Rowing_fr","JO_Rugby_en","JO_Rugby_fr","JO_Sailing_en","JO_Sailing_fr","JO_ShootingParaSport_en","JO_ShootingParaSport_fr","JO_Shooting_en","JO_Shooting_fr","JO_SittingVolleyball_en","JO_SittingVolleyball_fr","JO_Skateboarding_en","JO_Skateboarding_fr","JO_SportClimbing_en","JO_SportClimbing_fr","JO_Swimming_en","JO_Swimming_fr","JO_TableTennis_en","JO_TableTennis_fr","JO_Taekwondo_en","JO_Taekwondo_fr","JO_Tennis_en","JO_Tennis_fr","JO_Trampoline_en","JO_Trampoline_fr","JO_Triathlon_en","JO_Triathlon_fr","JO_Volleyball_en","JO_Volleyball_fr","JO_WaterPolo_en","JO_WaterPolo_fr","JO_Weightlifting_en","JO_Weightlifting_fr","JO_WheelchairBasketball_en","JO_WheelchairBasketball_fr","JO_WheelchairFencing_en","JO_WheelchairFencing_fr","JO_WheelchairRugby_en","JO_WheelchairRugby_fr","JO_WheelchairTennis_en","JO_WheelchairTennis_fr","JO_Wrestling_en","JO_Wrestling_fr","getSvgFromName","BrandItemContent","brandIconUrl","firstLabel","brandLogo","SuggestItem_text","oneLabel","SuggestItem_mainLabel","GenericContent","_suggest$subtype","otherLabels","subtype","iconUrls","SuggestItem_icon","SuggestItem_secondaryLabel","EventContent","_suggest$subtype2","_address_components$p","_address_components$t","eventMapping","startsWith","eventMappingEn","eventMappingFr","address_components","postcodes","town","otherName","other_name","eventAssets","slugify","SuggestItem_eventLabel","asset","SuggestItemContent","isEventSuggest","store_chain","_suggest$subtype3","_suggest$subtype4","_suggest$subtype5","JO_EVENT_SITE","JO_CELEBRATION_PLACE","SUGGEST_CLICK","POI_TYPE","POI_POSITION","SuggestItem_link","SuggestEventItem_link","onMouseEnter","index","SuggestItem","incentive","FavouriteModeBox","favouriteModes","selectFavouriteModes","preferredMode","selectPreferredMode","execSetPreferredMode","setPreferredMode","onClickForId","TAG_CLICK_TRAVEL_OPTIONS_MODEFAVORI","SELECTION","modeId","sModeSelector","listItemFavorites","ModeItem","speedTKey","item","ModeSpeedSettingsBox","hasOwnSwitcher","preferredSpeed","selectPreferredSpeed","vehicleOwn","selectVehicleOwn","execChangePreferredOptions","changePreferredOptions","translations","useTranslateAsObject","TRAVEL_SPEEDS","onPreferredOptionsChange","PREFERRED_SPEED","VehicleOwnedSwitcher","VEHICLE_OWN","TRAVEL_SPEED_VALUES_BY_MODE","execSaveTravelOptions","saveTravelOptions","travelOptionsError","setTravelOptionsError","saveTravelOptionsResult","sUserManageFavorites","VehicleSettingsBox","critAirStickers","onChooseForId","evt","sticker","CRITAIR_DEFAULT_ID","critAirSticker","CritairChoice","tagConfig","car","PREFERRED_VEHICLE_ID","TAG_CLICK_TRAVEL_OPTIONS_CAR_VEHICLE","motorbike","TAG_CLICK_TRAVEL_OPTIONS_MOTORBIKE_VEHICLE","_modeMetadata$transpo","modeMetadata","selectModeMetadata","preferredVehicle","selectPreferredVehicle","preferredFuel","selectPreferredFuel","fuelList","selectFuelList","vehicleList","selectVehicleList","transportMode","critair","critAirId","selectCritAirId","optionsToUpdate","_tagConfig$modeMetada","VehicleSettingsBoxContent","vehicle","PREFERRED_FUEL_ID","fuel","NumericInput","price","PREFERRED_FUEL_PRICE","price_unit","consumption","PREFERRED_FUEL_CONSUMPTION","consumption_unit","critAirLine","CritairSelect","CRITAIR_ID","HEADER_DEFAULT_HEIGHT_PE","execShow","execHide","STATUS_READY","_defineProperty","ready","useEffectExceptMount","initialMount","attr","extra","WebkitTextFillColor","hex","g","b","defaultDelay","toRef","launch","isPending","defaultOpen","toggle","handleRouteLoading","onRouteEnter","renderPage","onRouteLeave","routeContext","routeHandlingState","RouteHandlingState","getInstance","prevRoute","avoidFetchData","avoidDispatchingAnyPageAction","avoidReloadOnBackNav","avoidPageTag","processOnRouteLeave","currentOnRouteLeave","avoidRefetchingPageData","currentRouteIsNotPageless","selectIsCurrentHistoryRoutePageless","actionsToDispatch","requestPageAdConfig","deferSendingPageTag","component","previousRoute","noticeNavigationDone","extractApps","conf","morePoisLabel","menu","banner","pushSeo","getImageUrl","getDevicePixelRatio","extractFreeApps","freeApps","extractCategories","extractSubcategories","filterApps","parseGeoentitiesConfig","_ref4","selectPoiAssetsStatus","POIASSETS_STATUS","REQUESTING","DONE","SET_POIASSETS_STATUS","requestPoiassetsConfig","response","INITIAL","SET_POIASSETS_CONFIG","menus","freeapps","loadCompleteGeoentitiesAtAddressConfiguration","all","selectGeoentitiesAtAddressConfig","requestGeoentitiesAtAddressConfig","SET_GEOENTITIES_AT_ADDRESS_CONFIG","loadGeoentitiesAtAddressConfiguration","loadCompletePoisOnRouteConfiguration","selectPoisOnRouteConfig","requestPoisOnRouteConfig","SET_POIS_ON_ROUTE_CONFIG","loadPoisOnRouteConfiguration","SuggestError","isResponseFromLastRequest","requestTime","lastRequestTime","SET_SUGGEST_INPUT_VALUE","RESET_SUGGEST_DATA","resetSuggestData","requestSuggest","q","limit","focus_bbox","bboxToSearchParameter","getServiceParameters","getBIParams","suggests","parsedData","brand_icon_url","icon_urls","Object","assign","LOAD_SUGGEST_RESPONSE","LOAD_SUGGEST_ERROR","formatHistoryEntry","searchHistoryEntry","isLabelsFormatted","normalizedCurrentSearch","currentSearch","split_label","formatLabelWithInputValueKeyword","selectSearchHistory","selectSearchState","selectLastTenHistoryEntries","flow","array","sortBy","take","lastTenHistoryEntries","addFromProperty","selectSuggestState","selectSuggestInputValue","selectSuggestError","selectServiceSuggestions","serviceSuggestions","SUGGEST_FROM_VALUES","selectSearchHistorySuggestions","history","lastSearchHistoryEntries","isLabelMatchingInputValueKeyword","normalizeInputValueKeyword","formatFavoriteForSuggest","formatHomeOrWorkFavoriteForSuggest","selectSuggestFakeFavorites","selectFakeFavorites","fakeFavorites","selectFavoritesFormattedForSuggest","selectFavoritesSuggestions","slice","inputValueKeyword","removeDuplicateSuggestions","suggestionsToProcess","suggestionsToCompare","labelsToCompare","normalizeLabel","favoritesSuggestions","searchHistorySuggestions","favoritesSuggestionsWithUuid","selectHomeWorkOrFakeFavorites","poi","rubric","mustFetchTravelOptions","requestInventory","vehiclesOptions","vehicles","providers","extractDefaultVehiculeOptions","transportModes","transport_modes","extractTransportModes","SET_DEFAULT_VEHICULE_OPTIONS","fuelPrices","fuel_prices","entries","reduce","acc","entry","extractDefaultFuelPrices","SET_DEFAULT_FUEL_PRICES","fetchVehiclesOptions","newPreferredOptionsForMode","SET_PREFERRED_OPTIONS_FOR_MODE","SET_PREFERRED_MODE"],"sourceRoot":""}