{"version":3,"file":"static/chunks/5800-e035f91636043e01.js","mappings":"iMAEO,IAAMA,EAAiB,GAC5B,MAAIC,GAAe,iBAAOA,EACxB,OAGEA,EAAIC,QAAQ,CAAC,4BACRC,EAGLF,EAAIG,UAAU,CAAC,cACVC,SAMLF,EAA6B,OAAC,CAClCF,IAAAA,CAAG,CACHK,MAAAA,CAAK,CACLC,QAAAA,CAAO,CACU,CAAAC,EACjB,MAAO,GAAgBF,MAAAA,CAAbL,EAAI,WAA0BM,MAAAA,CAAjBD,EAAM,aAA0BG,MAAA,CAAfF,GAAW,IAAI,eACzD,EAEMF,EAA0B,OAAC,CAAEJ,IAAAA,CAAG,CAAEK,MAAAA,CAAK,CAAEC,QAAAA,CAAO,CAAoB,CAAAC,EACxE,MAAO,GAGIF,MAAAA,CAHDL,EAAIS,OAAO,CACnB,aACA,WAAkDD,MAAA,CAAvCE,qCACX,WAA0BJ,MAAAA,CAAjBD,EAAM,aAA0BG,MAAA,CAAfF,GAAW,IAAI,eAC7C,EC/BaK,EACX,qHCOK,SAASC,EAAqBL,CAOxB,KAPwB,CACnCM,IAAAA,CAAG,CACHb,IAAAA,CAAG,CACHc,YAAAA,CAAW,CACXC,YAAAA,CAAW,CACXC,MAAAA,CAAK,CACL,GAAGC,EACQ,CAPwBV,EAQ7B,CAACW,EAAQC,EAAU,CAAGC,CAAAA,EAAAA,EAAAA,QAAAA,EAASpB,GAMrC,MAJAqB,CAAAA,EAAAA,EAAAA,SAAAA,EAAU,KACRF,EAAUnB,EACZ,EAAG,CAACA,EAAI,EAGN,GAAAsB,EAAAC,GAAA,EAACC,EAAAA,OAAKA,CAAAA,CACJxB,IAAKkB,EACLL,IAAKA,EACLC,YAAaA,GAAe,OAC5BC,YAAaA,GAAeJ,EAC5Bc,OAAQ1B,EAAemB,GACvBQ,OAAQ,IAC8C,IAAhDC,EAAGC,MAAM,CAAsBC,YAAY,EAC7CV,EAAUR,EAEd,EACAmB,QAAS,IAAMX,EAAUR,GACzBK,MAAOA,GAAS,QACf,GAAGC,CAAU,EAGpB,iICvCO,IAAMc,EAAe,CAC1B,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACD,CAEYC,EAAK,KACLC,EAAK,KACLC,EAAK,kHCqCNC,EAAAA,GAAAA,CAAAA,EAAAA,CAAAA,CAAAA,oKCrEAC,EAAAA,GAAAA,CAAAA,EAAAA,CAAAA,CAAAA,8EDqEAD,ECrEAC,8BCAAC,CAAAA,GAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,6CEAAC,mCAAAA,EAAAA,GAAAA,CAAAA,EAAAA,CAAAA,CAAAA,wNCAAC,mCAAAA,EAAAA,GAAAA,CAAAA,EAAAA,CAAAA,CAAAA,20BCAL,SAASC,EAAMC,CAAU,EAC9B,OAAO,IAAIC,QAAQ,GAAaC,WAAWC,EAASH,GACtD,CAEO,SAASI,EAAwBC,CAAmB,CAAEL,CAAU,EACrE,OAAOC,QAAQK,GAAG,CAAC,CAACD,EAASN,EAAMC,GAAI,EAAEO,IAAI,CAAC,OAAC,CAACC,EAAO,CAAA1C,SAAK0C,GAC9D,oFCNYC,mCAAAA,EAAAA,GAAAA,CAAAA,EAAAA,CAAAA,CAAAA,6YC6BAC,+CALL,IAAMC,EAAoB,uCACpBC,EAAsB,yCAEtBC,EAAoB,4CAe1B,SAASC,EAA0BhD,CAIT,KAJS,CACxCiD,MAAAA,CAAK,CACLC,2BAAAA,CAA0B,CAC1BC,cAAAA,CAAa,CACkB,CAJSnD,EAKlCoD,EACJH,IAAUlB,EAAAA,EAAcA,CAACsB,MAAM,EAC9B,EAACH,GAA8B,CAACC,EAAcG,YAAY,SAE7D,IAAcvB,EAAAA,EAAcA,CAACwB,MAAM,CACjC,eAGAN,IAAUlB,EAAAA,EAAcA,CAACyB,UAAU,EACnCJ,EAEA,gBAGF,WACF,CAEO,SAASK,EAAoCC,CAAa,EAC/D,MAAO,GAA8BC,MAAAA,CAA3BZ,EAAkB,WAA0B9C,MAAA,CAAjB0D,UAAUD,GACjD,CAEO,SAASE,EAA0BC,CAOzC,EACC,GAAM,CAAEC,UAAAA,CAAS,CAAEC,KAAAA,CAAI,CAAEC,QAAAA,CAAO,CAAEC,KAAAA,CAAI,CAAEC,MAAAA,CAAK,CAAEC,QAAAA,CAAO,CAAE,CAAGN,EAE3D,MAAO,GAA8BF,MAAAA,CAA3BZ,EAAkB,WAE1B9C,MAAA,CAFmC0D,UACnC,GAAwBK,MAAAA,CAArBF,GAAaC,EAAK,KAAcE,MAAAA,CAAXD,EAAQ,KAAWE,MAAAA,CAARD,EAAK,KAAYE,MAAAA,CAATD,EAAM,KAAWjE,MAAA,CAARkE,IAExD,CAEO,SAASC,EACdC,CAAqB,CACrBC,CAAqB,SAErB,EAAMC,IAAI,GAAKD,EAAEC,IAAI,CACZF,EAAEN,IAAI,CAACS,aAAa,CAACF,EAAEP,IAAI,EAEhCM,EAAEE,IAAI,GAAKvC,EAAAA,EAAYA,CAACyC,gBAAgB,CACnC,EAEF,EACT,CAEO,SAASC,EAA6B1E,CAc5C,KAd4C,CAC3C2E,QAAAA,CAAO,CACPX,QAAAA,CAAO,CACPY,SAAAA,CAAQ,CACRX,KAAAA,CAAI,CACJC,MAAAA,CAAK,CACLC,QAAAA,CAAO,CAQR,CAd4CnE,EAerC6E,EAAY,GAAaD,MAAAA,CAAVZ,GAAyC/D,MAAA,CAA/B2E,EAAW,IAAa3E,MAAA,CAAT2E,GAAa,IAE3D,OAAQD,GACN,KAAKhC,EAAAA,CAASA,CAACmC,OAAO,CACtB,KAAKnC,EAAAA,CAASA,CAACoC,MAAM,CACnB,MAAO,CACLC,aAAcH,EACdI,aAAc,GAAchB,MAAAA,CAAXE,EAAQ,KAAYQ,MAAAA,CAATV,EAAK,MAAYhE,MAAA,CAAR0E,EACvC,CACF,MAAKhC,EAAAA,CAASA,CAACuC,MAAM,CACnB,MAAO,CACLF,aAAcH,EACdI,aAAc,GAAYf,MAAAA,CAATD,EAAK,MAAaE,MAAAA,CAATD,EAAM,KAAeS,MAAAA,CAAZR,EAAQ,MAAYlE,MAAA,CAAR0E,EACjD,CACF,MAAKhC,EAAAA,CAASA,CAACwC,aAAa,CAC1B,MAAO,CACLH,aAAcH,EACdI,aAAc,GAAWd,MAAAA,CAARF,EAAK,KAAeU,MAAAA,CAAZR,EAAQ,MAAYlE,MAAA,CAAR0E,EACvC,CACF,SACE,MAAO,CACLK,aAAcH,EACdI,aAAc,GAAYf,MAAAA,CAATD,EAAK,MAAaE,MAAAA,CAATD,EAAM,KAAWjE,MAAA,CAARkE,EACrC,CACJ,CACF,CAaO,SAASiB,EAAwBpF,CAYvC,KAZuC,CACtCqF,SAAAA,CAAQ,CACRV,QAAAA,CAAO,CAUR,CAZuC3E,SAatC,EAMI,CAAC+B,EAAAA,EAAcA,CAACwB,MAAM,CAAExB,EAAAA,EAAcA,CAACsB,MAAM,CAAC,CAAC3D,QAAQ,CAAC2F,EAASpC,KAAK,EACjEqC,SA/BoCX,CAAe,EAC5D,OAAQA,GACN,KAAKhC,EAAAA,CAASA,CAACoC,MAAM,CACnB,OAAOQ,EAAAA,EAAiBA,MACrB5C,EAAAA,CAASA,CAACwC,aAAa,CAC1B,OAAOK,EAAAA,EAA6BA,SAEpC,OAAOC,EAAAA,EAAiBA,CAE9B,EAsB0CJ,EAASV,OAAO,EAGpDU,EAASK,KAAK,CACTL,EAASK,KAAK,CAGhBD,EAAAA,EAAiBA,CAbfd,IAAYlD,EAAAA,EAAEA,CACjB+D,EAAAA,EAA6BA,CAC7BG,EAAAA,EAA6BA,CAc9B,SAASC,EAAkC5F,CAMjD,KANiD,CAChD6F,iBAAAA,CAAgB,CAChBlB,QAAAA,CAAO,CAIR,CANiD3E,EAO1C8F,EAAoBD,EAAiBE,IAAI,CAC7C,GAAaC,EAAQzB,IAAI,GAAKvC,EAAAA,EAAYA,CAACiE,iBAAiB,SAG9D,GAAyBH,EAAkBJ,KAAK,CACvCI,EAAkBJ,KAAK,CAG5Bf,IAAYhC,EAAAA,CAASA,CAACwC,aAAa,CAC9BK,EAAAA,EAA6BA,CAG/BG,EAAAA,EAA6BA,CA2D/B,SAASO,EAAmBC,CAAgC,EACjE,OAAQA,GACN,IAAK,kBACH,MAAO,oBACT,KAAK,cACH,MAAO,yCACT,KAAK,SACH,MAAO,iCACT,KAAK,mBACH,MAAO,+BACT,SACE,MAAO,cAA0BlG,MAAA,CAAZkG,EACzB,CACF,EAjPYvD,EAAAA,GAAAA,CAAAA,EAAAA,CAAAA,CAAAA,+GA6MVZ,EAAAA,EAAYA,CAACoE,mBAAmB,CAChCpE,EAAAA,EAAYA,CAACyC,gBAAgB,svFExM/B,IAAM4B,EAAU,CAACC,EAAAA,CAAEA,CAAEC,EAAAA,CAAEA,CAAEC,EAAAA,CAAEA,CAAC,CACfC,EAAiBH,EAAAA,CAAEA,CACnBI,EAAe,IACfC,EAAqB,GACrBC,EAAkB,GAClBC,EAAaD,KACbE,EAAY,MAElB,SAASC,EAAuBC,CAAe,EACpD,IAAMC,EAAYC,EAAUF,EAAW,GAGvC,OAFAC,EAAUE,OAAO,CAAC,GAEXF,CACT,CAEO,SAASC,EAAUF,CAAe,CAAEI,CAAc,EACvD,MAAOC,CAAAA,EAAAA,EAAAA,CAAAA,EAAiBL,EAAWI,EACrC,CAEO,SAASE,EAAiBC,CAAU,CAAEH,CAAgB,EAC3D,MAAOI,CAAAA,EAAAA,EAAAA,CAAAA,EAAwBD,EAAMH,EACvC,CAEO,SAASK,EACdF,CAAU,CACVE,CAAc,CACdC,CAEC,EAED,MAAOC,CAAAA,EAAAA,EAAAA,CAAAA,EAAcJ,EAAME,EAAQC,EACrC,CAEO,SAASE,EAAWL,CAAU,EACnC,MAAOM,CAAAA,EAAAA,EAAAA,CAAAA,EAAkBN,EAC3B,CAEO,SAASO,EAAiBC,CAAc,CAAEC,CAAe,EAC9D,MAAOC,CAAAA,EAAAA,EAAAA,CAAAA,EAAwBF,EAAUC,EAC3C,CAEO,SAASE,EAAQX,CAAU,CAAEH,CAAc,EAChD,MAAOe,CAAAA,EAAAA,EAAAA,CAAAA,EAAeZ,EAAMH,EAC9B,CAEO,SAASgB,EAAWb,CAAU,EACnC,MAAOc,CAAAA,EAAAA,EAAAA,CAAAA,EAAkBd,EAC3B,CAEO,SAASe,EAASf,CAAU,CAAEgB,CAAa,EAChD,MAAOC,CAAAA,EAAAA,EAAAA,CAAAA,EAAgBjB,EAAMgB,EAC/B,CAEO,SAASE,EAAUC,CAAc,EACtCC,CAAAA,EAAAA,EAAAA,CAAAA,EAAkB,CAAED,OAAQrC,EAAQN,IAAI,CAAC,GAAO6C,EAAEC,IAAI,GAAKH,EAAQ,EACrE,CAEO,SAASI,EAAkBf,CAAc,CAAEC,CAAe,EAC/D,MAAOe,CAAAA,EAAAA,EAAAA,CAAAA,EAAyBhB,EAAUC,EAC5C,CAEO,SAASgB,EAAoBjB,CAAc,CAAEC,CAAe,EACjE,MAAOiB,CAAAA,EAAAA,EAAAA,CAAAA,EAA2BlB,EAAUC,EAC9C,CAEO,SAASkB,EAAkBC,CAAW,CAAEC,CAAS,EACtD,MAAOC,CAAAA,EAAAA,EAAAA,CAAAA,EAAyB,CAAEF,MAAAA,EAAOC,IAAAA,CAAI,EAC/C,CAEO,SAASE,GAAW/B,CAAU,CAAEH,CAAc,EACnD,MAAOmC,CAAAA,EAAAA,EAAAA,CAAAA,EAAkBhC,EAAMH,EACjC,CAEO,SAASoC,GAAIjC,CAAU,CAAEkC,CAAkB,EAChD,MAAOC,CAAAA,EAAAA,EAAAA,CAAAA,EAAWnC,EAAMkC,EAC1B,CAEO,SAASE,GAAMC,CAAY,CAAEnC,CAAc,CAAEF,CAAU,EAC5D,MAAOsC,CAAAA,EAAAA,EAAAA,CAAAA,EAAaD,EAAMnC,EAAQF,EACpC,CAEO,SAASuC,GAAW/B,CAAc,CAAEC,CAAe,EACxD,MAAO+B,CAAAA,EAAAA,EAAAA,CAAAA,EAAkBhC,EAAUC,EACrC,CAEO,SAASgC,GAAYjC,CAAc,CAAEC,CAAe,EACzD,MAAOiC,CAAAA,EAAAA,EAAAA,CAAAA,EAAmBlC,EAAUC,EACtC,CAEO,SAASkC,GAAQnC,CAAc,CAAEC,CAAe,EACrD,MAAOmC,CAAAA,EAAAA,EAAAA,CAAAA,EAAepC,EAAUC,EAClC,CACO,SAASoC,GAAQrC,CAAc,CAAEC,CAAe,EACrD,MAAOqC,CAAAA,EAAAA,EAAAA,CAAAA,EAAetC,EAAUC,EAClC,CAEO,SAASsC,GAAUvC,CAAc,CAAEC,CAAe,EACvD,MAAOuC,CAAAA,EAAAA,EAAAA,CAAAA,EAAiBxC,EAAUC,EACpC,CAEO,SAASwC,GAASjD,CAAU,CAAEgB,CAAa,EAChD,MAAOkC,CAAAA,EAAAA,EAAAA,CAAAA,EAAgBlD,EAAMgB,EAC/B,CAEO,SAASmC,GAAWnD,CAAU,CAAEoD,CAAe,EACpD,MAAOC,CAAAA,EAAAA,EAAAA,CAAAA,EAAkBrD,EAAMoD,EACjC,CAEO,SAASE,GAAStD,CAAU,CAAEH,CAAc,EACjD,MAAO0D,CAAAA,EAAAA,EAAAA,CAAAA,EAAgBvD,EAAMH,EAC/B,CAEO,SAAS2D,GAAiBnB,CAAY,EAC3C,IAAMoB,EAAQ,IAAIC,KAElB,OADAD,EAAMR,QAAQ,IAAKZ,EAAKsB,KAAK,CAAC,KAAKC,GAAG,CAACC,SAChC3D,EAAOuD,EAAO,IACvB,CAEO,SAASK,GAAuBrE,CAAe,CAAEsE,CAAa,EACnE,OAAOxC,EAAAA,EAAkBwC,EAAStE,EACpC,CAEO,SAASuE,GAAqBvE,CAAe,CAAEsE,CAAa,EAEjE,OAAOE,MAAMC,IAAI,CAAC,CAAEC,OAAQC,GADsB3E,EAAWsE,GACZ,CAAE,EAAG,CAACM,EAAGC,IACjDvC,GAAWtC,EAAW6E,GAAAA,GAEjC,CAEO,SAASC,GAAyBvE,CAAU,CAAEqC,CAAY,EAC/D,IAAMoB,EAAQ,IAAIC,KAGlB,OAFAD,EAAMR,QAAQ,IAAKZ,EAAKsB,KAAK,CAAC,KAAKC,GAAG,CAACC,SACvCJ,EAAMe,UAAU,CAAC,GACVtE,EAAOF,EAAM,cAAgB,IAAME,EAAOuD,EAAO,WAC1D,CAEO,SAASgB,GAAOzE,CAAU,EAC/B,MAAO0E,CAAAA,EAAAA,EAAAA,CAAAA,EAAc1E,EACvB,CAEO,SAAS2E,GAAS3E,CAAU,EACjC,MAAO4E,CAAAA,EAAAA,EAAAA,CAAAA,EAAgB5E,EACzB,CAGO,SAAS6E,GAAgBC,CAAY,CAAEC,CAAc,EAC1D,OAAO,IAAIrB,KAAK,IAAM,EAAG,EAAGoB,EAAMC,EAAQ,EAC5C,CAEO,SAASC,GAAwBC,CAAiB,EACvD,OAAO,IAAIvB,KAAK,GAAahL,MAAA,CAAVuM,EAAU,KAC/B,CAEO,SAASC,GAAWlF,CAAU,EACnC,OAAOmF,GAAqBnF,EAAKoF,WAAW,GAC9C,CAEO,SAASD,GAAqBF,CAAiB,EACpD,OAAOA,EAAUtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC0B,KAAK,CAAC,EAAG,EAC1C,CAEO,SAASC,GAAYtF,CAAY,EACtC,MAAO,qBAAI0D,KAAK1D,GAAMuF,QAAQ,EAChC,CAEO,SAASC,GAAUxF,CAAU,EAClC,IAAMyD,EAAQ,IAAIC,KAAK,IAAIA,OAAO0B,WAAW,GAAGzB,KAAK,CAAC,IAAI,CAAC,EAAE,EAE7D,OAAO3D,EAAKyF,OAAO,GAAKhC,EAAMgC,OAAO,EACvC,CAEO,SAASC,GAAeC,CAAa,EAE1C,OAAO,IAAIjC,KAAKkC,EADEjC,KAAK,CAAC,IAAI,CAAC,EAAE,CACXhL,OAAO,CAAC,KAAM,KACpC,CAEO,SAASkN,GAAsBC,CAAW,MAAEC,EAAAA,UAAAA,MAAAA,CAAAA,GAAAA,KAAAA,IAAAA,SAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,EAAAA,CAAS,EACpDrG,EAAYsG,GAAaF,GAK/B,OAAOG,GAHOtF,EAAQmF,EAAO,CAACC,GAClBpF,EAAQjB,EAAWqG,GAGjC,CAEO,SAASC,GAAaF,CAAW,EACtC,IAAMpG,EAAY,IAAIgE,KAAKoC,GAI3B,OAFApG,EAAUwG,QAAQ,CAACxG,EAAUyG,QAAQ,GAAK,GAEnCzG,CACT,CAEO,SAASuG,GAAcrE,CAAW,CAAEC,CAAS,EAClD,IAAMuE,EAAgB,EAAE,CAElBpG,EAAO,IAAI0D,KAAK9B,GACtB,KAAO5B,EAAO6B,GACZuE,EAAMC,IAAI,CAAC,IAAI3C,KAAK1D,IACpBA,EAAKJ,OAAO,CAACI,EAAKsG,OAAO,GAAK,GAGhC,OAAOF,CACT,CAEO,SAASG,GAAavG,CAAU,EACrC,OAAO,IAAI0D,KAAK1D,EAAKwG,WAAW,GAAIxG,EAAKmG,QAAQ,GAAI,EACvD,CAEO,SAASM,GAAiBxB,CAAwB,CAAEyB,CAAgB,EACzE,MAAOC,CAAAA,EAAAA,EAAAA,CAAAA,EAAe1B,EAAWyB,EACnC,CAEO,SAASE,GACd5G,CAAU,CACV0G,CAAgB,CAChBxG,CAAc,EAEd,MAAO2G,CAAAA,EAAAA,EAAAA,CAAAA,EAAiB7G,EAAM0G,EAAUxG,EAC1C,CAEO,SAAS4G,GAAkB9G,CAAU,CAAE0G,CAAgB,EAC5D,OAAOE,GAAwB5G,EAAM0G,EAAU,QACjD,CAEO,SAASK,GAAWnF,CAAW,CAAEC,CAAS,EAC/C,MAAO,CAACA,EAAI4D,OAAO,GAAK7D,EAAM6D,OAAO,IAAMnG,CAC7C,CAEO,SAAS0H,GAAW3E,CAAY,EACrC,OAAOnC,EAAO,IAAIwD,KAAK,cAAmBhL,MAAA,CAAL2J,EAAK,QAAO,SACnD,CAEO,SAAS4E,GAAoB5E,CAAY,EAC9C,OAAO2E,GAAW3E,GAAM6E,WAAW,EACrC,CAEO,SAASC,KACd,OAAOC,GAAWC,GAAY,IAAI3D,MACpC,CAEO,SAAS4D,GAAetH,CAAmB,EAEhD,MAAOuH,CADS,iBAAOvH,EAAoBA,EAAOA,EAAKoF,WAAW,IACnDzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAGvB,SAAS6D,GAAYxH,CAAU,EAEpC,OAAOyH,GADuBzH,GAChB0H,UAAU,CAAC,KAAM,IACjC,CAEO,SAASC,GAAoB/B,CAAW,EAC7C,OAAO,IAAIlC,KAAKkC,EAAI8B,UAAU,CAAC,KAAM,KACvC,CAEO,SAASL,GAAYrH,CAAU,EACpC,OAAOE,EAAOF,EAAM,aACtB,CAEO,SAAS4H,GAAUnP,CAAuB,KAAvB,CAAEyL,KAAAA,CAAI,CAAE2D,GAAAA,CAAE,CAAa,CAAvBpP,EAExB,OAAOqP,KAAKC,IAAI,CAACC,CADDH,EAAGpC,OAAO,GAAKvB,EAAKuB,OAAO,GAAK,GACrBlG,EAC7B,CAEO,SAAS0I,GACdjI,CAAkC,EAElC,MAAOA,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAMkE,IAAI,YAAYR,MAAQ1D,CAAAA,MAAAA,EAAAA,KAAAA,EAAAA,EAAM6H,EAAE,YAAYnE,IAC3D,CAEO,SAAS0D,GAAWxB,CAAW,EAGpC,OAAO0B,GAAe3G,EAFT,IAAI+C,KAAKkC,GAEc,GACtC,CAEO,SAASsC,GAAsBtC,CAAW,EAE/C,OAAO1F,EADMkC,GAAMwD,EAAK,aAAc,IAAIlC,MACtB,MAAO,CAAEvC,OAAQjC,CAAe,GAAGgI,WAAW,EACpE,CAEO,SAASiB,GAAmB1P,CAAuB,KAAvB,CAAEyL,KAAAA,CAAI,CAAE2D,GAAAA,CAAE,CAAa,CAAvBpP,EACjC,MAAOqJ,CAAAA,EAAAA,EAAAA,CAAAA,EAAyB,CAAEF,MAAOsC,EAAMrC,IAAKgG,CAAG,EACzD,CAEO,SAASO,GAAUxC,CAAW,EAGnC,MAAO,CAAC,MAAO,MAAM,CAACzN,QAAQ,CAFd+P,GAAsBtC,GAGxC,CAEO,SAASyC,GAAWC,CAAY,CAAEC,CAAY,EACnD,MAAOC,CAAAA,EAAAA,EAAAA,CAAAA,EAAqB,IAAI9E,KAAK4E,GAAO,IAAI5E,KAAK6E,GACvD,6GC9TYE,uCAHZ,IAAMC,EAAsB,EAAIvJ,EAAAA,YAAYA,CAC/BwJ,EAAqB,EAoB3B,eAAeC,EAAkBC,CAUvC,MAeQC,EAdP,GAAM,CACJA,YAAAA,CAAW,CACXC,UAAAA,CAAS,CACTC,kBAAAA,CAAiB,CACjBC,iBAAAA,CAAgB,CAChBC,gBAAAA,CAAe,CACfC,eAAAA,CAAc,CACdC,UAAAA,EAAY,CAAC,CACbC,WAAAA,EAAaX,CAAmB,CACjC,CAAGG,EAEES,EAAkB,CACtB,GAAGR,EAAYS,IAAI,CACnBC,QAAS,IACY,OAAhBV,CAAAA,EAAAA,EAAYS,IAAI,GAAhBT,KAAAA,IAAAA,EAAAA,KAAAA,EAAAA,EAAkBU,OAAO,CAC5B,GAAIX,EAAOY,aAAa,EAAI,CAC1BC,cAAe,UAA+BhR,MAAA,CAArB,MAAMiR,IACjC,CAAC,CAEL,EAEMC,EAAQ,UACZ,MAAMlP,CAAAA,EAAAA,EAAAA,CAAAA,EAAM2O,GACLT,EAAe,CACpB,GAAGC,CAAM,CACTO,UAAWA,EAAY,CACzB,IAGF,GAAI,CACF,IAAMS,EAAM,MAAMC,MAAMhB,EAAYiB,KAAK,CAAET,GAE3C,GAAIO,EAAIG,MAAM,EAAI,IAAK,CAMrB,GALAC,CAAAA,EAAAA,EAAAA,CAAAA,EACE,mBAAyDJ,MAAAA,CAAtCf,EAAYiB,KAAK,CAAC,sBAA+BrR,MAAA,CAAXmR,EAAIG,MAAM,EACnEH,EAAIG,MAAM,CAAG,IAAM,UAAY,SAG7BZ,EAAY,EACd,OAAOQ,IAGT,GAAI,CACF,IAAMM,EAAO,MAAML,EAAIM,IAAI,GAC3B,OAAOnB,MAAAA,EAAAA,KAAAA,EAAAA,EAAoB,CAAEgB,OAAQH,EAAIG,MAAM,CAAEE,KAAAA,CAAK,EACxD,CAAE,MAAArQ,EAAM,CACN,OAAOmP,MAAAA,EAAAA,KAAAA,EAAAA,EAAoB,CAAEgB,OAAQH,EAAIG,MAAM,CAAEE,KAAME,KAAAA,CAAU,EACnE,CACF,CAEA,IAAMC,EACJR,MAAAA,EAAIG,MAAM,EAAYd,EAAkB,KAAS,MAAMW,EAAIM,IAAI,GAEjE,GAAIpB,MAAAA,EACF,OAAOsB,EAGT,OAAOtB,EAAUsB,EACnB,CAAE,MAAOC,EAAU,CAQjB,GAPKnB,GACHoB,CAAAA,EAAAA,EAAAA,CAAAA,EACE,mBAAA7R,MAAA,CAAmBoQ,EAAYiB,KAAK,CAAC,MAAoBrR,MAAA,CAAhB4R,MAAAA,EAAAA,KAAAA,EAAAA,EAAK/E,QAAQ,IACtD+E,GAIAlB,EAAY,EACd,OAAOQ,IAGT,OAAOX,MAAAA,EAAAA,KAAAA,EAAAA,EAAmBqB,EAC5B,CACF,EArGY7B,EAAAA,GAAAA,CAAAA,EAAAA,CAAAA,CAAAA,6FASA+B,CAAAA,GAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,sCAyGL,IAAMb,EAAe,UAC1B,IAAMc,EAAc,MAAM7P,QAAAK,GAAA,EAAAyP,EAAA7Q,CAAA,OAAA6Q,EAAA7Q,CAAA,OAAA6Q,EAAA7Q,CAAA,OAAA6Q,EAAA7Q,CAAA,OAAA6Q,EAAA7Q,CAAA,OAAA6Q,EAAA7Q,CAAA,MAAA6Q,EAAA7Q,CAAA,OAAA6Q,EAAA7Q,CAAA,OAAA6Q,EAAA7Q,CAAA,SAAAqB,IAAA,CAAAwP,EAAAC,IAAA,CAAAD,EAAA,QACpB,CAAEE,QAAAA,CAAO,CAAE,CAAG,MAAMH,EAAYI,cAAc,GAC9C,CAAEC,MAAAA,CAAK,CAAE,CAAG,MAAML,EAAYd,YAAY,GAE5CoB,EAAYD,EAChB,GAAI,CAACF,EACH,GAAI,CACF,GAAM,CAAEI,QAAAA,CAAO,CAAE,CAAG,MAAMP,EAAYQ,gBAAgB,GACtDF,EAAYC,EAAQE,YAAY,CAACJ,KAAK,CACtC,MAAOK,EAAO,CACdV,EAAYW,MAAM,EACpB,CAGF,OAAOL,CACT,+FC1IO,SAASR,EAAiBS,CAAe,CAAEG,CAAa,EAC7DE,EAAAA,EAAuB,CACrB,MAAUL,EAAS,CACjBM,MAAOH,CACT,GAEJ,CAEO,SAASlB,EACde,CAAe,CACfO,CAA+B,EAE/BF,EAAAA,EAAqB,CAACL,EAASO,MAAAA,EAAAA,EAAY,OAC7C","sources":["webpack://_N_E/./utils/image-loaders.ts","webpack://_N_E/./utils/image-placeholder.ts","webpack://_N_E/./components/ImageWithPlaceholder.tsx","webpack://_N_E/./lib/countries.ts","webpack://_N_E/./lib/locations/dto/location.dto.ts","webpack://_N_E/./lib/locations/dto/location-price.dto.ts","webpack://_N_E/./lib/locations/dto/sort-filter.enum.ts","webpack://_N_E/./lib/locations/dto/index.ts","webpack://_N_E/./lib/locations/dto/location-phases.enum.ts","webpack://_N_E/./lib/locations/dto/manager-roles.enum.ts","webpack://_N_E/./lib/promises.ts","webpack://_N_E/./models/Countries.enum.ts","webpack://_N_E/./models/location-utils.ts","webpack://_N_E/./node_modules/@industriousoffice/react-components/lib/lib.es.js","webpack://_N_E/./utils/date-utils.ts","webpack://_N_E/./utils/http-request.ts","webpack://_N_E/./utils/sentry.ts"],"sourcesContent":["import { ImageLoaderProps, ImageProps } from 'next/image';\n\nexport const getImageLoader = (src: ImageProps['src']) => {\n if (src == null || typeof src !== 'string') {\n return undefined;\n }\n\n if (src.includes('inventory-service-assets')) {\n return inventoryAssetsImageLoader;\n }\n\n if (src.startsWith('/public-s3')) {\n return publicAssetsImageLoader;\n }\n\n return undefined;\n};\n\nconst inventoryAssetsImageLoader = ({\n src,\n width,\n quality,\n}: ImageLoaderProps) => {\n return `${src}?width=${width}&quality=${quality || 100}&format=webp`;\n};\n\nconst publicAssetsImageLoader = ({ src, width, quality }: ImageLoaderProps) => {\n return `${src.replace(\n '/public-s3',\n `https://${process.env.NEXT_PUBLIC_ASSETS_DOMAIN!}`\n )}?width=${width}&quality=${quality || 100}&format=webp`;\n};\n","export const IMAGE_PLACEHOLDER =\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mN89x8AAuEB74Y0o2cAAAAASUVORK5CYII=';\n","'use client';\n\nimport Image, { ImageProps } from 'next/image';\nimport { useEffect, useState } from 'react';\n\nimport { getImageLoader } from '@/utils/image-loaders';\nimport { IMAGE_PLACEHOLDER } from '@/utils/image-placeholder';\n\nexport function ImageWithPlaceholder({\n alt,\n src,\n placeholder,\n blurDataURL,\n sizes,\n ...otherProps\n}: ImageProps) {\n const [imgSrc, setImgSrc] = useState(src);\n\n useEffect(() => {\n setImgSrc(src);\n }, [src]);\n\n return (\n {\n if ((e.target as HTMLImageElement).naturalWidth === 0) {\n setImgSrc(IMAGE_PLACEHOLDER);\n }\n }}\n onError={() => setImgSrc(IMAGE_PLACEHOLDER)}\n sizes={sizes || '100vw'}\n {...otherProps}\n />\n );\n}\n","export const EU_COUNTRIES = [\n 'AT', // Austria\n 'BE', // Belgium\n 'BG', // Bulgaria\n 'HR', // Croatia\n 'CY', // Cyprus\n 'CZ', // Czechia\n 'DK', // Denmark\n 'EE', // Estonia\n 'FI', // Finland\n 'FR', // France\n 'DE', // Germany\n 'GR', // Greece\n 'HU', // Hungary\n 'IE', // Ireland\n 'IT', // Italy\n 'LV', // Latvia\n 'LT', // Lithuania\n 'LU', // Luxembourg\n 'MT', // Malta\n 'NL', // Netherlands\n 'PL', // Poland\n 'PT', // Portugal\n 'RO', // Romania\n 'SK', // Slovakia\n 'SI', // Slovenia\n 'ES', // Spain\n 'SE', // Sweden\n];\n\nexport const UK = 'GB';\nexport const US = 'US';\nexport const CA = 'CA';\n","import { ImageDto } from '@/lib/image.dto';\nimport { BlackoutDateDto } from '@/lib/shared/dto/blackout-date.dto';\nimport { Countries } from '@/models/Countries.enum';\n\nimport { GeolocalizationDto } from './geolocalization.dto';\nimport { LocationAmenityDto } from './location-amenity.dto';\nimport { LocationCalendlyLinksDto } from './location-calendly-links.dto';\nimport { LocationManagerDto } from './location-manager.dto';\nimport { LocationMeetingSpacesDto } from './location-meeting-spaces.dto';\nimport { LocationOpeningHoursDto } from './location-opening-hours.dto';\nimport { LocationPhases } from './location-phases.enum';\nimport { LocationProductsDto } from './location-products.dto';\n\nexport type LocationDto = {\n id: string;\n sfId: string;\n slug: string;\n name: string;\n address: string;\n address2: string;\n zipCode: string;\n city: string;\n state: string;\n country: Countries;\n geolocalization: GeolocalizationDto;\n phase: LocationPhases;\n calendlyLinks: LocationCalendlyLinksDto;\n currencyIsoCode: string | null;\n brochureLink: string;\n locationManagers: LocationManagerDto[];\n images: ImageDto[];\n matterportImageLink: string | null;\n summary: string | null;\n products: LocationProductsDto;\n parkingInfos: string | null;\n parkingAlt: string | null;\n parkingGuest: string | null;\n bikeRacks: string | null;\n buildingCheckInInstructions: string | null;\n transitInfos: TransitInfo[];\n lodgingAndDining: string[];\n attractions: string[];\n embedSocialId: string | null;\n meetingSpaces: LocationMeetingSpacesDto;\n salesHighlightBanner: string | null;\n firstDayOfBusinessISO: string | null;\n email: string;\n phone: string | null;\n timezone: string;\n brandName: string | null;\n amenities: {\n standard: LocationAmenityDto[];\n unique: LocationAmenityDto[];\n };\n metroSfId: string;\n metroName: string;\n metaDescription?: string;\n isEarlyInPersonTourEnabled: boolean;\n hideOpeningDate: boolean;\n salesOfficeAddress: string | null;\n isWaitlisting: boolean;\n openingHours: LocationOpeningHoursDto;\n blackoutDates: BlackoutDateDto[];\n contractType: string | undefined;\n landlord: string | undefined;\n licensor: string | undefined | null;\n isCrawlable: boolean;\n};\n\nexport enum TransitCategoryType {\n Airport = 'Airport',\n Bike = 'Bike',\n Bus = 'Bus',\n Driving = 'Driving',\n Parking = 'Parking',\n Subway = 'Subway',\n Train = 'Train',\n TransitHub = 'TransitHub',\n Other = 'Other',\n}\n\nexport type TransitInfo = {\n description: string;\n category: TransitCategoryType;\n};\n","export enum LocationPriceFormat {\n CheapestPerSeat = 'Cheapest Per Seat',\n CheapestOffice = 'Cheapest Office',\n}\n\nexport type LocationPricesDto = {\n currencyIsoCode: string;\n priceFormat: LocationPriceFormat;\n lowestPrices: {\n dedicatedOffice: LocationPriceItemDto | undefined | null;\n suites: LocationPriceItemDto | undefined | null;\n access: LocationPriceItemDto | undefined | null;\n virtual: LocationPriceItemDto | undefined | null;\n meetingRoom: LocationMeetingRoomPriceItemDto;\n coworkingDayPass: LocationCoworkingDayPassPriceItemDto | undefined | null;\n coworking: LocationCoworkingPriceItemDto;\n office: LocationOfficePriceItemDto;\n };\n};\n\nexport type LocationMeetingRoomPriceItemDto = {\n price: number;\n perHour?: number;\n perDay?: number;\n};\n\nexport type LocationCoworkingDayPassPriceItemDto = {\n price: number;\n};\n\nexport type LocationOfficePriceItemDto = {\n perMonth?: number;\n};\n\nexport type LocationCoworkingPriceItemDto = {\n perDay?: number;\n perMonth?: number;\n};\n\nexport type LocationPriceItemDto = {\n family: string;\n price: number;\n productSquareFootage: number | null | undefined;\n seatCount: number | null | undefined;\n};\n","export enum SortFilter {\n PHASE = 'phase',\n}\n","export * from './geolocalization.dto';\nexport * from './location-manager.dto';\nexport * from './location.dto';\nexport * from './location-price.dto';\nexport * from './location-products.dto';\nexport * from './location-meeting-spaces.dto';\nexport * from './micro-location.dto';\nexport * from './simple-location.dto';\nexport * from './simple-location-search.dto';\nexport * from './location-and-near-locations.dto';\nexport * from './location-phases.enum';\nexport * from './manager-roles.enum';\nexport * from './metro.dto';\nexport * from './sort-filter.enum';\n","export enum LocationPhases {\n Signed = 'Signed',\n Launch = 'Launch',\n Open = 'Open',\n Closed = 'Closed',\n Draft = 'Draft',\n Greenlight = 'Greenlight',\n HardCommit = 'Hard Commit',\n // The following phases are to be deprecated:\n Takeover = 'Takeover',\n PostLaunch = 'Post-Launch',\n}\n","export enum ManagerRoles {\n CommunityManager = 'Community Manager',\n OperationsAssociate = 'Operations Associate',\n AreaManager = 'Area Manager',\n RegionalManager = 'Regional Manager',\n MembershipManager = 'Membership Manager',\n NationalAccountsMembershipManager = 'National Accounts Membership Manager',\n ConferenceServicesManager = 'Conference Services Manager',\n TechnicalAudioVisualManager = 'Technical Audio Visual Manager',\n // New roles - Revisit above roles during LCR refactor\n MemberExperienceAssociate = 'Member Experience Associate',\n MemberExperienceManager = 'Member Experience Manager',\n AssistantGeneralManager = 'Assistant General Manager',\n GeneralManager = 'General Manager',\n RegionalDirector = 'Regional Director',\n AreaSalesLead = 'Area Sales Lead',\n EnterpriseSales = 'Enterprise Sales',\n AccountManager = 'Account Manager',\n FacilitiesManager = 'Facilities Manager',\n FacilitiesAssociate = 'Facilities Associate',\n}\n","export function delay(ms: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function fetchWithMinDuration(promise: Promise, ms: number) {\n return Promise.all([promise, delay(ms)]).then(([result]) => result);\n}\n","export enum Countries {\n Belgium = 'Belgium',\n Canada = 'Canada',\n France = 'France',\n UnitedStates = 'United States',\n UnitedKingdom = 'United Kingdom',\n}\n","import { UK } from '@/lib/countries';\nimport {\n LocationDto,\n LocationManagerDto,\n LocationPhases,\n LocationPriceFormat,\n LocationPricesDto,\n LocationProductName,\n ManagerRoles,\n} from '@/lib/locations/dto';\nimport { LocationCalendlyLinksDto } from '@/lib/locations/dto/location-calendly-links.dto';\nimport {\n DEFAULT_CURRENCY_ISO_CODE,\n FR_GENERIC_NUMBER,\n UK_GENERIC_APPLICATION_NUMBER,\n US_GENERIC_APPLICATION_NUMBER,\n US_GENERIC_NUMBER,\n} from '@/utils/constants';\n\nimport { Countries } from './Countries.enum';\nimport { Products } from './Products.enum';\n\nconst PRODUCT_SUITES_IMG = '/public-s3/images/product_suites_new.webp';\nconst PRODUCT_VIRTUAL_IMG = '/public-s3/images/product_virtual_new.webp';\nexport const OFFICE_WINDOW_IMG = '/public-s3/images/window-office.webp';\nexport const OFFICE_INTERIOR_IMG = '/public-s3/images/interior-office.webp';\n\nexport const GOOGLE_SEARCH_API = 'https://www.google.com/maps/search/?api=1';\n\nexport enum LocationPrimaryCtaTypes {\n GetNotified = 'get-notified',\n ScheduleCall = 'schedule-call',\n GetStarted = 'get-started',\n BookTour = 'book-tour',\n}\n\ntype getLocationPrimaryCtaTypeProps = {\n phase: LocationPhases;\n isEarlyInPersonTourEnabled: boolean;\n calendlyLinks: LocationCalendlyLinksDto;\n};\n\nexport function getLocationPrimaryCtaType({\n phase,\n isEarlyInPersonTourEnabled,\n calendlyLinks,\n}: getLocationPrimaryCtaTypeProps): LocationPrimaryCtaTypes {\n const isLaunchLocationWithoutEarlyInPersonTourAvailable =\n phase === LocationPhases.Launch &&\n (!isEarlyInPersonTourEnabled || !calendlyLinks.inPersonTour);\n\n if (phase === LocationPhases.Signed) {\n return LocationPrimaryCtaTypes.GetNotified;\n }\n if (\n phase === LocationPhases.PostLaunch ||\n isLaunchLocationWithoutEarlyInPersonTourAvailable\n ) {\n return LocationPrimaryCtaTypes.ScheduleCall;\n }\n\n return LocationPrimaryCtaTypes.BookTour;\n}\n\nexport function getGoogleMapsDirectionUrlFromString(query: string) {\n return `${GOOGLE_SEARCH_API}&query=${encodeURI(query)}`;\n}\n\nexport function getGoogleMapsDirectionUrl(props: {\n city: string;\n address: string;\n brandName: string | null;\n name: string;\n state: string;\n zipCode: string;\n}) {\n const { brandName, name, address, city, state, zipCode } = props;\n\n return `${GOOGLE_SEARCH_API}&query=${encodeURI(\n `${brandName || name} ${address} ${city} ${state} ${zipCode}`\n )}`;\n}\n\nexport function sortMemberExperienceTeam(\n a: LocationManagerDto,\n b: LocationManagerDto\n): number {\n if (a.role === b.role) {\n return a.name.localeCompare(b.name);\n }\n if (a.role !== ManagerRoles.CommunityManager) {\n return 1;\n }\n return -1;\n}\n\nexport function getFormattedAddressByCountry({\n country,\n address,\n address2,\n city,\n state,\n zipCode,\n}: {\n country: Countries;\n address: string;\n address2: string | null;\n city: string;\n state: string;\n zipCode?: string;\n}) {\n const firstPart = `${address}${address2 ? ` ${address2}` : ''}`;\n\n switch (country) {\n case Countries.Belgium:\n case Countries.France:\n return {\n addressLine1: firstPart,\n addressLine2: `${zipCode} ${city}, ${country}`,\n };\n case Countries.Canada:\n return {\n addressLine1: firstPart,\n addressLine2: `${city}, ${state} ${zipCode}, ${country}`,\n };\n case Countries.UnitedKingdom:\n return {\n addressLine1: firstPart,\n addressLine2: `${city} ${zipCode}, ${country}`,\n };\n default:\n return {\n addressLine1: firstPart,\n addressLine2: `${city}, ${state} ${zipCode}`,\n };\n }\n}\n\nexport function getGenericPhoneNumberByCountry(country: string) {\n switch (country) {\n case Countries.France:\n return FR_GENERIC_NUMBER;\n case Countries.UnitedKingdom:\n return UK_GENERIC_APPLICATION_NUMBER;\n default:\n return US_GENERIC_NUMBER;\n }\n}\n\nexport function getPhoneApplicationForm({\n location,\n country,\n}: {\n location:\n | {\n phone: string | null;\n phase: LocationPhases;\n country: string;\n }\n | undefined;\n country: string;\n}) {\n if (!location) {\n return country === UK\n ? UK_GENERIC_APPLICATION_NUMBER\n : US_GENERIC_APPLICATION_NUMBER;\n }\n\n if ([LocationPhases.Signed, LocationPhases.Launch].includes(location.phase)) {\n return getGenericPhoneNumberByCountry(location.country);\n }\n\n if (location.phone) {\n return location.phone;\n }\n\n return US_GENERIC_NUMBER;\n}\n\nexport function getLocationMembershipManagerPhone({\n locationManagers,\n country,\n}: {\n locationManagers: LocationManagerDto[];\n country: Countries;\n}): string {\n const membershipManager = locationManagers.find(\n (manager) => manager.role === ManagerRoles.MembershipManager\n );\n\n if (membershipManager && membershipManager.phone) {\n return membershipManager.phone;\n }\n\n if (country === Countries.UnitedKingdom) {\n return UK_GENERIC_APPLICATION_NUMBER;\n }\n\n return US_GENERIC_APPLICATION_NUMBER;\n}\n\nexport function createEmptyLocationPrices(): LocationPricesDto {\n return {\n currencyIsoCode: DEFAULT_CURRENCY_ISO_CODE,\n priceFormat: LocationPriceFormat.CheapestOffice,\n lowestPrices: {\n dedicatedOffice: null,\n suites: null,\n access: null,\n virtual: null,\n meetingRoom: {\n price: 0,\n },\n coworkingDayPass: null,\n coworking: {},\n office: {},\n },\n };\n}\n\nexport function getLocationFullName(props: {\n name: string;\n brandName: string | null;\n}) {\n const { name, brandName } = props;\n\n if (brandName && !name.includes(brandName)) {\n return `${brandName} ${name}`;\n }\n\n return name;\n}\n\nconst displayRoles = [\n ManagerRoles.OperationsAssociate,\n ManagerRoles.CommunityManager,\n];\n\nexport type VisibleLocationManager = LocationManagerDto & {\n avatarUrl: string;\n role:\n | ManagerRoles.CommunityManager\n | ManagerRoles.OperationsAssociate\n | ManagerRoles.TechnicalAudioVisualManager\n | ManagerRoles.ConferenceServicesManager;\n};\n\nexport function getVisibleManagers(\n managers: LocationManagerDto[]\n): VisibleLocationManager[] {\n return managers\n .filter((manager) => !!manager.avatarUrl)\n .filter((manager): manager is VisibleLocationManager =>\n displayRoles.includes(manager.role)\n );\n}\n\nexport function getProductPageLink(productName: LocationProductName) {\n switch (productName) {\n case 'dedicatedOffice':\n return '/solutions/offices';\n case 'meetingRoom':\n return '/solutions/conference-and-meeting-rooms';\n case 'access':\n return '/solutions/coworking-membership';\n case 'coworkingDayPass':\n return '/solutions/coworking-day-pass';\n default:\n return `/solutions/${productName}`;\n }\n}\n\nexport function getProductImage(product: Products.Suite | Products.Virtual) {\n switch (product) {\n case 'virtual':\n return PRODUCT_VIRTUAL_IMG;\n default:\n return PRODUCT_SUITES_IMG;\n }\n}\n\nexport function getSearchNearByLocationsUrl(location: LocationDto) {\n const {\n city,\n geolocalization: { lat, lng },\n } = location;\n return `/locations?center=${lng},${lat}&query=${encodeURI(city)}&zoom=10`;\n}\n","export * from \"/codebuild/output/src2316242726/src/website/node_modules/@industriousoffice/react-components/lib/lib.es.js\"","import {\n Duration,\n Interval,\n add as dateFnsAdd,\n addDays as dateFnsAddDays,\n addHours as dateFnsAddHours,\n addMinutes as dateFnsAddMinutes,\n addMonths as dateFnsAddMonths,\n differenceInDays as dateFnsDifferenceInDays,\n differenceInMinutes as dateFnsDifferenceInMinutes,\n eachDayOfInterval as dateFnsEachDayOfInterval,\n endOfMonth as dateFnsEndOfMonth,\n format as dateFnsFormat,\n getQuarter as dateFnsGetQuarter,\n isAfter as dateFnsIsAfter,\n isEqual as dateFnsIsEqual,\n isFuture as dateFnsIsFuture,\n isPast as dateFnsIsPast,\n isSameDay as dateFnsIsSameDay,\n isSameHour as dateFnsIsSameHour,\n isSameISOWeek as dateFnsIsSameISOWeek,\n isSameMonth as dateFnsIsSameMonth,\n isWithinInterval as dateFnsIsWithinInterval,\n parse as dateFnsParse,\n setHours as dateFnsSetHours,\n setMinutes as dateFnsSetMinutes,\n subHours as dateFnsSubHours,\n differenceInHours as dateFnsdifferenceInHours,\n setDefaultOptions,\n} from 'date-fns';\nimport { formatInTimeZone, zonedTimeToUtc } from 'date-fns-tz';\nimport { enUS as en, fr, nl } from 'date-fns/locale';\n\nimport { DateRange, PartialDateRange } from '@/models/DateRange';\n\nconst LOCALES = [en, fr, nl];\nexport const DATE_LOCALE_EN = en;\nexport const SECOND_IN_MS = 1000;\nexport const MINUTE_IN_SECONDES = 60;\nexport const HOUR_IN_MINUTES = 60;\nexport const HOUR_IN_MS = HOUR_IN_MINUTES * MINUTE_IN_SECONDES * SECOND_IN_MS;\nexport const DAY_IN_MS = 24 * HOUR_IN_MS;\n\nexport function getFirstDayOfNextMonth(startDate: Date): Date {\n const nextMonth = addMonths(startDate, 1);\n nextMonth.setDate(1);\n\n return nextMonth;\n}\n\nexport function addMonths(startDate: Date, amount: number): Date {\n return dateFnsAddMonths(startDate, amount);\n}\n\nexport function isWithinInterval(date: Date, amount: Interval): boolean {\n return dateFnsIsWithinInterval(date, amount);\n}\n\nexport function format(\n date: Date,\n format: string,\n options?: {\n locale?: Locale;\n }\n): string {\n return dateFnsFormat(date, format, options);\n}\n\nexport function getQuarter(date: Date) {\n return dateFnsGetQuarter(date);\n}\n\nexport function differenceInDays(dateLeft: Date, dateRight: Date) {\n return dateFnsDifferenceInDays(dateLeft, dateRight);\n}\n\nexport function addDays(date: Date, amount: number) {\n return dateFnsAddDays(date, amount);\n}\n\nexport function endOfMonth(date: Date) {\n return dateFnsEndOfMonth(date);\n}\n\nexport function addHours(date: Date, hours: number) {\n return dateFnsAddHours(date, hours);\n}\n\nexport function setLocale(locale: string) {\n setDefaultOptions({ locale: LOCALES.find((l) => l.code === locale) });\n}\n\nexport function differenceInHours(dateLeft: Date, dateRight: Date) {\n return dateFnsdifferenceInHours(dateLeft, dateRight);\n}\n\nexport function differenceInMinutes(dateLeft: Date, dateRight: Date) {\n return dateFnsDifferenceInMinutes(dateLeft, dateRight);\n}\n\nexport function eachDayOfInterval(start: Date, end: Date) {\n return dateFnsEachDayOfInterval({ start, end });\n}\n\nexport function addMinutes(date: Date, amount: number) {\n return dateFnsAddMinutes(date, amount);\n}\n\nexport function add(date: Date, duration: Duration) {\n return dateFnsAdd(date, duration);\n}\n\nexport function parse(time: string, format: string, date: Date) {\n return dateFnsParse(time, format, date);\n}\n\nexport function isSameHour(dateLeft: Date, dateRight: Date) {\n return dateFnsIsSameHour(dateLeft, dateRight);\n}\n\nexport function isSameMonth(dateLeft: Date, dateRight: Date) {\n return dateFnsIsSameMonth(dateLeft, dateRight);\n}\n\nexport function isEqual(dateLeft: Date, dateRight: Date) {\n return dateFnsIsEqual(dateLeft, dateRight);\n}\nexport function isAfter(dateLeft: Date, dateRight: Date) {\n return dateFnsIsAfter(dateLeft, dateRight);\n}\n\nexport function isSameDay(dateLeft: Date, dateRight: Date) {\n return dateFnsIsSameDay(dateLeft, dateRight);\n}\n\nexport function setHours(date: Date, hours: number) {\n return dateFnsSetHours(date, hours);\n}\n\nexport function setMinutes(date: Date, minutes: number) {\n return dateFnsSetMinutes(date, minutes);\n}\n\nexport function subHours(date: Date, amount: number) {\n return dateFnsSubHours(date, amount);\n}\n\nexport function getFormattedTime(time: string): string {\n const today = new Date();\n today.setHours(...(time.split(':').map(Number) as [number, number]));\n return format(today, 'p');\n}\n\nexport function getNbThirtyMinuteSlots(startDate: Date, endDate: Date): number {\n return differenceInHours(endDate, startDate) * 2;\n}\n\nexport function getThirtyMinuteSlots(startDate: Date, endDate: Date): Date[] {\n const dateHourDifference = getNbThirtyMinuteSlots(startDate, endDate);\n return Array.from({ length: dateHourDifference + 1 }, (_, index) => {\n return addMinutes(startDate, index * 30);\n });\n}\n\nexport function getFormattedDateWithTime(date: Date, time: string) {\n const today = new Date();\n today.setHours(...(time.split(':').map(Number) as [number, number]));\n today.setSeconds(0);\n return format(date, 'yyyy-MM-dd') + 'T' + format(today, 'HH:mm:ss');\n}\n\nexport function isPast(date: Date): boolean {\n return dateFnsIsPast(date);\n}\n\nexport function isFuture(date: Date): boolean {\n return dateFnsIsFuture(date);\n}\n\n// Used only for the time\nexport function getDateFromTime(hour: number, minute: number) {\n return new Date(2000, 1, 1, hour, minute, 0);\n}\n\nexport function createDateFromLocalDate(localDate: string) {\n return new Date(`${localDate}Z`);\n}\n\nexport function getISOTime(date: Date) {\n return getTimeFromLocalDate(date.toISOString());\n}\n\nexport function getTimeFromLocalDate(localDate: string) {\n return localDate.split('T')[1].slice(0, 5);\n}\n\nexport function isValidDate(date: string) {\n return new Date(date).toString() !== 'Invalid Date';\n}\n\nexport function isPastDay(date: Date) {\n const today = new Date(new Date().toISOString().split('T')[0]);\n\n return date.getTime() < today.getTime();\n}\n\nexport function createLocalDay(local: string) {\n const day = local.split('T')[0];\n return new Date(day.replace(/-/g, '/'));\n}\n\nexport function generateMonthDayDates(month: Date, margin = 0) {\n const nextMonth = getNextMonth(month);\n\n const start = addDays(month, -margin);\n const end = addDays(nextMonth, margin);\n\n return generateDates(start, end);\n}\n\nexport function getNextMonth(month: Date) {\n const nextMonth = new Date(month);\n\n nextMonth.setMonth(nextMonth.getMonth() + 1);\n\n return nextMonth;\n}\n\nexport function generateDates(start: Date, end: Date) {\n const dates: Date[] = [];\n\n const date = new Date(start);\n while (date < end) {\n dates.push(new Date(date));\n date.setDate(date.getDate() + 1);\n }\n\n return dates;\n}\n\nexport function getMonthDate(date: Date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function getDateFromLocal(localDate: string | Date, timeZone: string) {\n return zonedTimeToUtc(localDate, timeZone);\n}\n\nexport function getDateFormatInTimeZone(\n date: Date,\n timeZone: string,\n format: string\n) {\n return formatInTimeZone(date, timeZone, format);\n}\n\nexport function getTimeInTimeZone(date: Date, timeZone: string) {\n return getDateFormatInTimeZone(date, timeZone, 'HH:mm');\n}\n\nexport function getNbHours(start: Date, end: Date): number {\n return (end.getTime() - start.getTime()) / HOUR_IN_MS;\n}\n\nexport function formatTime(time: string) {\n return format(new Date(`2000-01-01T${time}:00`), 'h:mm a');\n}\n\nexport function formatTimeLowercase(time: string) {\n return formatTime(time).toLowerCase();\n}\n\nexport function getTomorrowDay() {\n return getNextDay(formatToDay(new Date()));\n}\n\nexport function formatToISODay(date: Date | string) {\n const dateStr = typeof date === 'string' ? date : date.toISOString();\n return dateStr.split('T')[0];\n}\n\nexport function getLocalDay(date: Date) {\n const isoDay = formatToISODay(date);\n return isoDay.replaceAll(/-/g, '/');\n}\n\nexport function getLocalDateFromDay(day: string) {\n return new Date(day.replaceAll(/-/g, '/'));\n}\n\nexport function formatToDay(date: Date) {\n return format(date, 'yyyy-MM-dd');\n}\n\nexport function getNbDays({ from, to }: DateRange): number {\n const timeGap = to.getTime() - from.getTime() + 1;\n return Math.ceil(timeGap / DAY_IN_MS);\n}\n\nexport function isDateRange(\n date: PartialDateRange | undefined\n): date is DateRange {\n return date?.from instanceof Date && date?.to instanceof Date;\n}\n\nexport function getNextDay(day: string) {\n const date = new Date(day);\n\n return formatToISODay(addDays(date, 1));\n}\n\nexport function getAbbreviatedDayName(day: string) {\n const date = parse(day, 'yyyy-MM-dd', new Date());\n return format(date, 'EEE', { locale: DATE_LOCALE_EN }).toLowerCase();\n}\n\nexport function eachDayOfDateRange({ from, to }: DateRange) {\n return dateFnsEachDayOfInterval({ start: from, end: to });\n}\n\nexport function isWeekEnd(day: string) {\n const dayName = getAbbreviatedDayName(day);\n\n return ['sat', 'sun'].includes(dayName);\n}\n\nexport function isSameWeek(day1: string, day2: string) {\n return dateFnsIsSameISOWeek(new Date(day1), new Date(day2));\n}\n","import { NextRequest } from 'next/server';\n\nimport { delay } from '@/lib/promises';\n\nimport { SECOND_IN_MS } from './date-utils';\nimport { captureException, captureMessage } from './sentry';\n\nconst DEFAULT_RETRY_DELAY = 2 * SECOND_IN_MS;\nexport const DEFAULT_NB_RETRIES = 3;\n\nexport enum HttpMethods {\n Get = 'GET',\n Post = 'POST',\n Put = 'PUT',\n Patch = 'PATCH',\n Options = 'OPTIONS',\n Delete = 'DELETE',\n}\n\nexport enum HttpErrorNames {\n MethodNotAllowed = 'MethodNotAllowed',\n}\n\nexport type OnErrorResParams = {\n status: number;\n body: any;\n};\n\nexport async function tryFetchToJson(params: {\n fetchParams: { input: RequestInfo | URL; init?: RequestInit | undefined };\n onSuccess?: (response: T) => any;\n onFunctionalError?: (res?: OnErrorResParams) => any;\n onTechnicalError?: (err: any) => any;\n withoutResponse?: boolean;\n skipFetchError?: boolean;\n withAuthToken?: boolean;\n nbRetries?: number;\n retryDelay?: number;\n}): Promise {\n const {\n fetchParams,\n onSuccess,\n onFunctionalError,\n onTechnicalError,\n withoutResponse,\n skipFetchError,\n nbRetries = 0,\n retryDelay = DEFAULT_RETRY_DELAY,\n } = params;\n\n const fetchParamsInit = {\n ...fetchParams.init,\n headers: {\n ...fetchParams.init?.headers,\n ...(params.withAuthToken && {\n Authorization: `Bearer ${await getUserToken()}`,\n }),\n },\n };\n\n const retry = async () => {\n await delay(retryDelay);\n return tryFetchToJson({\n ...params,\n nbRetries: nbRetries - 1,\n });\n };\n\n try {\n const res = await fetch(fetchParams.input, fetchParamsInit);\n\n if (res.status >= 400) {\n captureMessage(\n `Failed to fetch ${fetchParams.input} with status code ${res.status}`,\n res.status < 500 ? 'warning' : 'error'\n );\n\n if (nbRetries > 0) {\n return retry();\n }\n\n try {\n const body = await res.json();\n return onFunctionalError?.({ status: res.status, body });\n } catch {\n return onFunctionalError?.({ status: res.status, body: undefined });\n }\n }\n\n const response =\n res.status === 204 || withoutResponse ? null : ((await res.json()) as T);\n\n if (onSuccess == null) {\n return response as T;\n }\n\n return onSuccess(response as T);\n } catch (err: any) {\n if (!skipFetchError) {\n captureException(\n `Failed to fetch ${fetchParams.input}: ${err?.toString()}`,\n err\n );\n }\n\n if (nbRetries > 0) {\n return retry();\n }\n\n return onTechnicalError?.(err);\n }\n}\n\nexport function getClientIp(req: NextRequest): string {\n let ip = req.headers.get('x-real-ip') as string;\n\n const forwardedFor = req.headers.get('x-forwarded-for') as string;\n if (!ip && forwardedFor) {\n ip = forwardedFor?.split(',').at(0) ?? 'Unknown';\n }\n\n return ip;\n}\n\nexport const getUserToken = async () => {\n const AuthHelpers = await import('@/lib/authentication/helpers');\n const { isValid } = await AuthHelpers.checkUserToken();\n const { token } = await AuthHelpers.getUserToken();\n\n let userToken = token;\n if (!isValid) {\n try {\n const { message } = await AuthHelpers.refreshUserToken();\n userToken = message.refreshToken.token;\n } catch (error) {\n AuthHelpers.logout(); // making sure we remove auth data from local storage\n }\n }\n\n return userToken;\n};\n","import * as Sentry from '@sentry/nextjs';\n\nexport function captureException(message: string, error?: Error) {\n Sentry.captureException(\n new Error(message, {\n cause: error,\n })\n );\n}\n\nexport function captureMessage(\n message: string,\n severity?: Sentry.SeverityLevel\n) {\n Sentry.captureMessage(message, severity ?? 'info');\n}\n"],"names":["getImageLoader","src","includes","inventoryAssetsImageLoader","startsWith","publicAssetsImageLoader","width","quality","param","concat","replace","process","IMAGE_PLACEHOLDER","ImageWithPlaceholder","alt","placeholder","blurDataURL","sizes","otherProps","imgSrc","setImgSrc","useState","useEffect","jsx_runtime","jsx","Image","loader","onLoad","e","target","naturalWidth","onError","EU_COUNTRIES","UK","US","CA","TransitCategoryType","LocationPriceFormat","SortFilter","LocationPhases","ManagerRoles","delay","ms","Promise","setTimeout","resolve","fetchWithMinDuration","promise","all","then","result","Countries","LocationPrimaryCtaTypes","OFFICE_WINDOW_IMG","OFFICE_INTERIOR_IMG","GOOGLE_SEARCH_API","getLocationPrimaryCtaType","phase","isEarlyInPersonTourEnabled","calendlyLinks","isLaunchLocationWithoutEarlyInPersonTourAvailable","Launch","inPersonTour","Signed","PostLaunch","getGoogleMapsDirectionUrlFromString","query","encodeURI","getGoogleMapsDirectionUrl","props","brandName","name","address","city","state","zipCode","sortMemberExperienceTeam","a","b","role","localeCompare","CommunityManager","getFormattedAddressByCountry","country","address2","firstPart","Belgium","France","addressLine1","addressLine2","Canada","UnitedKingdom","getPhoneApplicationForm","location","getGenericPhoneNumberByCountry","FR_GENERIC_NUMBER","UK_GENERIC_APPLICATION_NUMBER","US_GENERIC_NUMBER","phone","US_GENERIC_APPLICATION_NUMBER","getLocationMembershipManagerPhone","locationManagers","membershipManager","find","manager","MembershipManager","getProductPageLink","productName","OperationsAssociate","LOCALES","en","fr","nl","DATE_LOCALE_EN","SECOND_IN_MS","MINUTE_IN_SECONDES","HOUR_IN_MINUTES","HOUR_IN_MS","DAY_IN_MS","getFirstDayOfNextMonth","startDate","nextMonth","addMonths","setDate","amount","dateFnsAddMonths","isWithinInterval","date","dateFnsIsWithinInterval","format","options","dateFnsFormat","getQuarter","dateFnsGetQuarter","differenceInDays","dateLeft","dateRight","dateFnsDifferenceInDays","addDays","dateFnsAddDays","endOfMonth","dateFnsEndOfMonth","addHours","hours","dateFnsAddHours","setLocale","locale","setDefaultOptions","l","code","differenceInHours","dateFnsdifferenceInHours","differenceInMinutes","dateFnsDifferenceInMinutes","eachDayOfInterval","start","end","dateFnsEachDayOfInterval","addMinutes","dateFnsAddMinutes","add","duration","dateFnsAdd","parse","time","dateFnsParse","isSameHour","dateFnsIsSameHour","isSameMonth","dateFnsIsSameMonth","isEqual","dateFnsIsEqual","isAfter","dateFnsIsAfter","isSameDay","dateFnsIsSameDay","setHours","dateFnsSetHours","setMinutes","minutes","dateFnsSetMinutes","subHours","dateFnsSubHours","getFormattedTime","today","Date","split","map","Number","getNbThirtyMinuteSlots","endDate","getThirtyMinuteSlots","Array","from","length","dateHourDifference","_","index","getFormattedDateWithTime","setSeconds","isPast","dateFnsIsPast","isFuture","dateFnsIsFuture","getDateFromTime","hour","minute","createDateFromLocalDate","localDate","getISOTime","getTimeFromLocalDate","toISOString","slice","isValidDate","toString","isPastDay","getTime","createLocalDay","local","day","generateMonthDayDates","month","margin","getNextMonth","generateDates","setMonth","getMonth","dates","push","getDate","getMonthDate","getFullYear","getDateFromLocal","timeZone","zonedTimeToUtc","getDateFormatInTimeZone","formatInTimeZone","getTimeInTimeZone","getNbHours","formatTime","formatTimeLowercase","toLowerCase","getTomorrowDay","getNextDay","formatToDay","formatToISODay","dateStr","getLocalDay","isoDay","replaceAll","getLocalDateFromDay","getNbDays","to","Math","ceil","timeGap","isDateRange","getAbbreviatedDayName","eachDayOfDateRange","isWeekEnd","isSameWeek","day1","day2","dateFnsIsSameISOWeek","HttpMethods","DEFAULT_RETRY_DELAY","DEFAULT_NB_RETRIES","tryFetchToJson","params","fetchParams","onSuccess","onFunctionalError","onTechnicalError","withoutResponse","skipFetchError","nbRetries","retryDelay","fetchParamsInit","init","headers","withAuthToken","Authorization","getUserToken","retry","res","fetch","input","status","captureMessage","body","json","undefined","response","err","captureException","HttpErrorNames","AuthHelpers","__webpack_require__","bind","isValid","checkUserToken","token","userToken","message","refreshUserToken","refreshToken","error","logout","Sentry","cause","severity"],"sourceRoot":""}