From 0957fcf57ec2983f70e0d1434d7a20b4a3613562 Mon Sep 17 00:00:00 2001 From: LeVraiStagiaire Date: Fri, 21 Feb 2025 23:14:12 +0100 Subject: [PATCH] Add initial implementation of database connection, authentication, and API routes --- next.config.mjs | 14 +- package-lock.json | 1874 +++++-- package.json | 29 +- public/assets/images/AFL.svg | 22 + public/assets/images/BRGC_T2_R.gif | Bin 0 -> 1934 bytes public/assets/images/RATP.svg | 89 + public/assets/images/SNCF.svg | 88 + public/assets/images/XGC_T2_AB_L.gif | Bin 0 -> 3309 bytes public/assets/images/XGC_T2_R.gif | Bin 0 -> 3219 bytes public/assets/images/background-moutains.svg | 4315 +++++++++++++++++ public/assets/images/background.svg | 3661 ++++++++++++++ public/assets/images/favicon.svg | 66 + public/assets/images/upscaled_BRGC_T2_R.gif | Bin 0 -> 17701 bytes public/assets/images/upscaled_XGC_T2_AB_L.gif | Bin 0 -> 29521 bytes public/assets/images/upscaled_XGC_T2_R.gif | Bin 0 -> 29419 bytes public/file.svg | 1 - public/globe.svg | 1 - public/next.svg | 1 - public/vercel.svg | 1 - public/window.svg | 1 - .../classique/[id]/departs/TwoRowDepart.js | 57 + .../gare/classique/[id]/departs/layout.js | 35 + .../gare/classique/[id]/departs/page.js | 111 + src/app/(general)/admin/page.js | 44 + .../admin/users/UserDisableDialog.js | 29 + .../(general)/admin/users/UserEditDialog.js | 52 + src/app/(general)/admin/users/page.js | 148 + src/app/(general)/creator/account/page.js | 160 + .../(general)/creator/gare/afl/[id]/page.js | 0 .../(general)/creator/gare/afl/new/page.js | 216 + .../creator/gare/classique/EditDialog.js | 49 + .../creator/gare/classique/[id]/page.js | 118 + .../creator/gare/classique/new/page.js | 204 + .../(general)/creator/gare/rer/[id]/page.js | 0 .../(general)/creator/gare/rer/new/page.js | 0 src/app/(general)/layout.js | 37 + src/app/(general)/loading.js | 5 + src/app/(general)/login/page.js | 40 + src/app/(general)/mail/validate/page.js | 43 + src/app/(general)/page.js | 38 + src/app/(general)/register/page.js | 48 + src/app/(general)/verifyEmail/page.js | 31 + src/app/_components/web-vitals.js | 15 + src/app/api/admin/users/disable/route.js | 38 + src/app/api/admin/users/enable/route.js | 37 + src/app/api/admin/users/route.js | 29 + src/app/api/auth/user/route.js | 22 + src/app/api/folders/route.js | 20 + src/app/api/gares/route.js | 69 + src/app/api/login/route.js | 40 + src/app/api/logout/route.js | 22 + src/app/api/mail/validate/route.js | 67 + src/app/api/register/route.js | 22 + src/app/api/socket/route.js | 52 + src/app/api/stats/route.js | 21 + src/app/api/tod/route.js | 21 + src/app/api/trains/route.js | 27 + src/app/assets/logos-monochrome/Thumbs.db | Bin 0 -> 69632 bytes .../assets/logos-monochrome/logo-aleop.svg | 164 + .../logo-auvergerhonealpes.svg | 88 + .../assets/logos-monochrome/logo-breizhgo.svg | 108 + src/app/assets/logos-monochrome/logo-cfl.svg | 9 + src/app/assets/logos-monochrome/logo-db.svg | 5 + .../assets/logos-monochrome/logo-eurostar.svg | 314 ++ src/app/assets/logos-monochrome/logo-fluo.svg | 40 + .../logos-monochrome/logo-frecciarossa.svg | 74 + .../logos-monochrome/logo-hautsdefrance.svg | 221 + src/app/assets/logos-monochrome/logo-ice.svg | 1 + .../assets/logos-monochrome/logo-inoui.svg | 1 + .../logos-monochrome/logo-intercites.svg | 107 + src/app/assets/logos-monochrome/logo-ler.svg | 214 + src/app/assets/logos-monochrome/logo-lio.svg | 43 + .../assets/logos-monochrome/logo-lunea.svg | 74 + .../assets/logos-monochrome/logo-lyria.svg | 1 + .../assets/logos-monochrome/logo-metrolor.svg | 338 ++ .../assets/logos-monochrome/logo-mobigo.svg | 332 ++ .../assets/logos-monochrome/logo-nomad.svg | 13 + .../logos-monochrome/logo-occitanie.svg | 145 + .../logos-monochrome/logo-ouigo-classique.svg | 578 +++ .../assets/logos-monochrome/logo-ouigo.svg | 73 + src/app/assets/logos-monochrome/logo-remi.svg | 381 ++ .../assets/logos-monochrome/logo-renfeave.svg | 72 + .../assets/logos-monochrome/logo-rer-a.svg | 111 + .../assets/logos-monochrome/logo-rer-b.svg | 119 + .../assets/logos-monochrome/logo-rer-c.svg | 116 + .../assets/logos-monochrome/logo-rer-d.svg | 113 + .../assets/logos-monochrome/logo-rer-e.svg | 198 + src/app/assets/logos-monochrome/logo-sbb.svg | 5 + src/app/assets/logos-monochrome/logo-sncb.svg | 11 + src/app/assets/logos-monochrome/logo-sncf.svg | 99 + .../assets/logos-monochrome/logo-sncf1985.svg | 63 + .../assets/logos-monochrome/logo-sncf1992.svg | 132 + src/app/assets/logos-monochrome/logo-t-h.svg | 116 + src/app/assets/logos-monochrome/logo-t-j.svg | 123 + src/app/assets/logos-monochrome/logo-t-k.svg | 125 + src/app/assets/logos-monochrome/logo-t-l.svg | 124 + src/app/assets/logos-monochrome/logo-t-n.svg | 138 + src/app/assets/logos-monochrome/logo-t-p.svg | 134 + src/app/assets/logos-monochrome/logo-t-r.svg | 138 + src/app/assets/logos-monochrome/logo-t-u.svg | 133 + src/app/assets/logos-monochrome/logo-teoz.svg | 74 + .../logos-monochrome/logo-ter-rhone-alpes.svg | 401 ++ src/app/assets/logos-monochrome/logo-ter.svg | 1 + .../logos-monochrome/logo-teralsace.svg | 146 + .../logos-monochrome/logo-teraquitaine.svg | 133 + .../logo-terbassenormandie.svg | 254 + .../logos-monochrome/logo-terbourgogne.svg | 120 + .../logos-monochrome/logo-terbretagne.svg | 186 + .../logos-monochrome/logo-tercentre.svg | 64 + .../logo-terlanguedocroussillon.svg | 10 + .../logos-monochrome/logo-termidipyrenees.svg | 10 + .../logo-ternordpasdecalais.svg | 293 ++ .../logo-terpoitoucharentes.svg | 367 ++ src/app/assets/logos-monochrome/logo-tgv.svg | 211 + .../assets/logos-monochrome/logo-thalys.svg | 94 + .../assets/logos-monochrome/logo-thello.svg | 678 +++ .../logos-monochrome/logo-tramtrain.svg | 112 + .../logos-monochrome/logo-trenitalia.svg | 74 + src/app/assets/logos-monochrome/logo-zou.svg | 29 + src/app/assets/logos-monochrome/track-car.svg | 25 + src/app/assets/row-background-arrivals.svg | 140 + src/app/assets/row-background-departures.svg | 136 + src/app/assets/train_court.png | Bin 0 -> 7150 bytes src/app/assets/train_long.png | Bin 0 -> 9279 bytes src/app/components/appbar.js | 78 + src/app/components/logoutdialog.js | 33 + src/app/fonts/Achemine/achemin_italic.eot | Bin 0 -> 13322 bytes src/app/fonts/Achemine/achemin_italic.svg | 566 +++ src/app/fonts/Achemine/achemin_italic.ttf | Bin 0 -> 13124 bytes src/app/fonts/Achemine/achemin_italic.woff | Bin 0 -> 8632 bytes src/app/fonts/Achemine/achemine_bold.eot | Bin 0 -> 15010 bytes src/app/fonts/Achemine/achemine_bold.svg | 284 ++ src/app/fonts/Achemine/achemine_bold.ttf | Bin 0 -> 14836 bytes src/app/fonts/Achemine/achemine_bold.woff | Bin 0 -> 8944 bytes src/app/fonts/Achemine/achemine_extrabold.eot | Bin 0 -> 15998 bytes src/app/fonts/Achemine/achemine_extrabold.svg | 681 +++ src/app/fonts/Achemine/achemine_extrabold.ttf | Bin 0 -> 15808 bytes .../fonts/Achemine/achemine_extrabold.woff | Bin 0 -> 8496 bytes src/app/fonts/Achemine/achemine_normal.eot | Bin 0 -> 14900 bytes src/app/fonts/Achemine/achemine_normal.svg | 272 ++ src/app/fonts/Achemine/achemine_normal.ttf | Bin 0 -> 14716 bytes src/app/fonts/Achemine/achemine_normal.woff | Bin 0 -> 8880 bytes src/app/fonts/Achemine/style.css | 40 + src/app/fonts/Avenir/Metropolis-Bold.otf | Bin 0 -> 23664 bytes src/app/fonts/Avenir/Metropolis-Light.otf | Bin 0 -> 23200 bytes src/app/fonts/Avenir/Metropolis-Medium.otf | Bin 0 -> 23240 bytes src/app/fonts/Avenir/Metropolis-Regular.otf | Bin 0 -> 23124 bytes src/app/fonts/Avenir/avenir_regular.eot | Bin 0 -> 18823 bytes src/app/fonts/Avenir/avenir_regular.svg | 255 + src/app/fonts/Avenir/avenir_regular.ttf | Bin 0 -> 40968 bytes src/app/fonts/Avenir/avenir_regular.ttfg | Bin 0 -> 79472 bytes src/app/fonts/Avenir/avenir_regular.woff | Bin 0 -> 22116 bytes src/app/fonts/Avenir/style.css | 10 + src/app/globals.css | 130 +- src/app/layout.js | 30 - src/app/lib/auth.js | 20 + src/app/lib/authContext.js | 37 + src/app/lib/authMiddleware.js | 18 + src/app/lib/db.js | 8 + src/app/lib/mailer.js | 98 + src/app/lib/socket_server.js | 23 + src/app/page.js | 101 - src/app/styles/departs/trains.css | 1517 ++++++ src/app/theme.js | 105 + 164 files changed, 24917 insertions(+), 471 deletions(-) create mode 100644 public/assets/images/AFL.svg create mode 100644 public/assets/images/BRGC_T2_R.gif create mode 100644 public/assets/images/RATP.svg create mode 100644 public/assets/images/SNCF.svg create mode 100644 public/assets/images/XGC_T2_AB_L.gif create mode 100644 public/assets/images/XGC_T2_R.gif create mode 100644 public/assets/images/background-moutains.svg create mode 100644 public/assets/images/background.svg create mode 100644 public/assets/images/favicon.svg create mode 100644 public/assets/images/upscaled_BRGC_T2_R.gif create mode 100644 public/assets/images/upscaled_XGC_T2_AB_L.gif create mode 100644 public/assets/images/upscaled_XGC_T2_R.gif delete mode 100644 public/file.svg delete mode 100644 public/globe.svg delete mode 100644 public/next.svg delete mode 100644 public/vercel.svg delete mode 100644 public/window.svg create mode 100644 src/app/(departs)/creator/gare/classique/[id]/departs/TwoRowDepart.js create mode 100644 src/app/(departs)/creator/gare/classique/[id]/departs/layout.js create mode 100644 src/app/(departs)/creator/gare/classique/[id]/departs/page.js create mode 100644 src/app/(general)/admin/page.js create mode 100644 src/app/(general)/admin/users/UserDisableDialog.js create mode 100644 src/app/(general)/admin/users/UserEditDialog.js create mode 100644 src/app/(general)/admin/users/page.js create mode 100644 src/app/(general)/creator/account/page.js create mode 100644 src/app/(general)/creator/gare/afl/[id]/page.js create mode 100644 src/app/(general)/creator/gare/afl/new/page.js create mode 100644 src/app/(general)/creator/gare/classique/EditDialog.js create mode 100644 src/app/(general)/creator/gare/classique/[id]/page.js create mode 100644 src/app/(general)/creator/gare/classique/new/page.js create mode 100644 src/app/(general)/creator/gare/rer/[id]/page.js create mode 100644 src/app/(general)/creator/gare/rer/new/page.js create mode 100644 src/app/(general)/layout.js create mode 100644 src/app/(general)/loading.js create mode 100644 src/app/(general)/login/page.js create mode 100644 src/app/(general)/mail/validate/page.js create mode 100644 src/app/(general)/page.js create mode 100644 src/app/(general)/register/page.js create mode 100644 src/app/(general)/verifyEmail/page.js create mode 100644 src/app/_components/web-vitals.js create mode 100644 src/app/api/admin/users/disable/route.js create mode 100644 src/app/api/admin/users/enable/route.js create mode 100644 src/app/api/admin/users/route.js create mode 100644 src/app/api/auth/user/route.js create mode 100644 src/app/api/folders/route.js create mode 100644 src/app/api/gares/route.js create mode 100644 src/app/api/login/route.js create mode 100644 src/app/api/logout/route.js create mode 100644 src/app/api/mail/validate/route.js create mode 100644 src/app/api/register/route.js create mode 100644 src/app/api/socket/route.js create mode 100644 src/app/api/stats/route.js create mode 100644 src/app/api/tod/route.js create mode 100644 src/app/api/trains/route.js create mode 100644 src/app/assets/logos-monochrome/Thumbs.db create mode 100644 src/app/assets/logos-monochrome/logo-aleop.svg create mode 100644 src/app/assets/logos-monochrome/logo-auvergerhonealpes.svg create mode 100644 src/app/assets/logos-monochrome/logo-breizhgo.svg create mode 100644 src/app/assets/logos-monochrome/logo-cfl.svg create mode 100644 src/app/assets/logos-monochrome/logo-db.svg create mode 100644 src/app/assets/logos-monochrome/logo-eurostar.svg create mode 100644 src/app/assets/logos-monochrome/logo-fluo.svg create mode 100644 src/app/assets/logos-monochrome/logo-frecciarossa.svg create mode 100644 src/app/assets/logos-monochrome/logo-hautsdefrance.svg create mode 100644 src/app/assets/logos-monochrome/logo-ice.svg create mode 100644 src/app/assets/logos-monochrome/logo-inoui.svg create mode 100644 src/app/assets/logos-monochrome/logo-intercites.svg create mode 100644 src/app/assets/logos-monochrome/logo-ler.svg create mode 100644 src/app/assets/logos-monochrome/logo-lio.svg create mode 100644 src/app/assets/logos-monochrome/logo-lunea.svg create mode 100644 src/app/assets/logos-monochrome/logo-lyria.svg create mode 100644 src/app/assets/logos-monochrome/logo-metrolor.svg create mode 100644 src/app/assets/logos-monochrome/logo-mobigo.svg create mode 100644 src/app/assets/logos-monochrome/logo-nomad.svg create mode 100644 src/app/assets/logos-monochrome/logo-occitanie.svg create mode 100644 src/app/assets/logos-monochrome/logo-ouigo-classique.svg create mode 100644 src/app/assets/logos-monochrome/logo-ouigo.svg create mode 100644 src/app/assets/logos-monochrome/logo-remi.svg create mode 100644 src/app/assets/logos-monochrome/logo-renfeave.svg create mode 100644 src/app/assets/logos-monochrome/logo-rer-a.svg create mode 100644 src/app/assets/logos-monochrome/logo-rer-b.svg create mode 100644 src/app/assets/logos-monochrome/logo-rer-c.svg create mode 100644 src/app/assets/logos-monochrome/logo-rer-d.svg create mode 100644 src/app/assets/logos-monochrome/logo-rer-e.svg create mode 100644 src/app/assets/logos-monochrome/logo-sbb.svg create mode 100644 src/app/assets/logos-monochrome/logo-sncb.svg create mode 100644 src/app/assets/logos-monochrome/logo-sncf.svg create mode 100644 src/app/assets/logos-monochrome/logo-sncf1985.svg create mode 100644 src/app/assets/logos-monochrome/logo-sncf1992.svg create mode 100644 src/app/assets/logos-monochrome/logo-t-h.svg create mode 100644 src/app/assets/logos-monochrome/logo-t-j.svg create mode 100644 src/app/assets/logos-monochrome/logo-t-k.svg create mode 100644 src/app/assets/logos-monochrome/logo-t-l.svg create mode 100644 src/app/assets/logos-monochrome/logo-t-n.svg create mode 100644 src/app/assets/logos-monochrome/logo-t-p.svg create mode 100644 src/app/assets/logos-monochrome/logo-t-r.svg create mode 100644 src/app/assets/logos-monochrome/logo-t-u.svg create mode 100644 src/app/assets/logos-monochrome/logo-teoz.svg create mode 100644 src/app/assets/logos-monochrome/logo-ter-rhone-alpes.svg create mode 100644 src/app/assets/logos-monochrome/logo-ter.svg create mode 100644 src/app/assets/logos-monochrome/logo-teralsace.svg create mode 100644 src/app/assets/logos-monochrome/logo-teraquitaine.svg create mode 100644 src/app/assets/logos-monochrome/logo-terbassenormandie.svg create mode 100644 src/app/assets/logos-monochrome/logo-terbourgogne.svg create mode 100644 src/app/assets/logos-monochrome/logo-terbretagne.svg create mode 100644 src/app/assets/logos-monochrome/logo-tercentre.svg create mode 100644 src/app/assets/logos-monochrome/logo-terlanguedocroussillon.svg create mode 100644 src/app/assets/logos-monochrome/logo-termidipyrenees.svg create mode 100644 src/app/assets/logos-monochrome/logo-ternordpasdecalais.svg create mode 100644 src/app/assets/logos-monochrome/logo-terpoitoucharentes.svg create mode 100644 src/app/assets/logos-monochrome/logo-tgv.svg create mode 100644 src/app/assets/logos-monochrome/logo-thalys.svg create mode 100644 src/app/assets/logos-monochrome/logo-thello.svg create mode 100644 src/app/assets/logos-monochrome/logo-tramtrain.svg create mode 100644 src/app/assets/logos-monochrome/logo-trenitalia.svg create mode 100644 src/app/assets/logos-monochrome/logo-zou.svg create mode 100644 src/app/assets/logos-monochrome/track-car.svg create mode 100644 src/app/assets/row-background-arrivals.svg create mode 100644 src/app/assets/row-background-departures.svg create mode 100644 src/app/assets/train_court.png create mode 100644 src/app/assets/train_long.png create mode 100644 src/app/components/appbar.js create mode 100644 src/app/components/logoutdialog.js create mode 100644 src/app/fonts/Achemine/achemin_italic.eot create mode 100644 src/app/fonts/Achemine/achemin_italic.svg create mode 100644 src/app/fonts/Achemine/achemin_italic.ttf create mode 100644 src/app/fonts/Achemine/achemin_italic.woff create mode 100644 src/app/fonts/Achemine/achemine_bold.eot create mode 100644 src/app/fonts/Achemine/achemine_bold.svg create mode 100644 src/app/fonts/Achemine/achemine_bold.ttf create mode 100644 src/app/fonts/Achemine/achemine_bold.woff create mode 100644 src/app/fonts/Achemine/achemine_extrabold.eot create mode 100644 src/app/fonts/Achemine/achemine_extrabold.svg create mode 100644 src/app/fonts/Achemine/achemine_extrabold.ttf create mode 100644 src/app/fonts/Achemine/achemine_extrabold.woff create mode 100644 src/app/fonts/Achemine/achemine_normal.eot create mode 100644 src/app/fonts/Achemine/achemine_normal.svg create mode 100644 src/app/fonts/Achemine/achemine_normal.ttf create mode 100644 src/app/fonts/Achemine/achemine_normal.woff create mode 100644 src/app/fonts/Achemine/style.css create mode 100644 src/app/fonts/Avenir/Metropolis-Bold.otf create mode 100644 src/app/fonts/Avenir/Metropolis-Light.otf create mode 100644 src/app/fonts/Avenir/Metropolis-Medium.otf create mode 100644 src/app/fonts/Avenir/Metropolis-Regular.otf create mode 100644 src/app/fonts/Avenir/avenir_regular.eot create mode 100644 src/app/fonts/Avenir/avenir_regular.svg create mode 100644 src/app/fonts/Avenir/avenir_regular.ttf create mode 100644 src/app/fonts/Avenir/avenir_regular.ttfg create mode 100644 src/app/fonts/Avenir/avenir_regular.woff create mode 100644 src/app/fonts/Avenir/style.css delete mode 100644 src/app/layout.js create mode 100644 src/app/lib/auth.js create mode 100644 src/app/lib/authContext.js create mode 100644 src/app/lib/authMiddleware.js create mode 100644 src/app/lib/db.js create mode 100644 src/app/lib/mailer.js create mode 100644 src/app/lib/socket_server.js delete mode 100644 src/app/page.js create mode 100644 src/app/styles/departs/trains.css create mode 100644 src/app/theme.js diff --git a/next.config.mjs b/next.config.mjs index 4678774..61da8b0 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,4 +1,16 @@ /** @type {import('next').NextConfig} */ -const nextConfig = {}; +const nextConfig = { + images: { + localPatterns: [ + { + pathname: '/assets/images/**', + search: '', + }, + ], + }, + experimental: { + webpackMemoryOptimizations: true, + } +}; export default nextConfig; diff --git a/package-lock.json b/package-lock.json index b02a649..c56ab74 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,13 +8,30 @@ "name": "infogare-creator", "version": "0.1.0", "dependencies": { - "next": "15.0.3", - "react": "19.0.0-rc-66855b96-20241106", - "react-dom": "19.0.0-rc-66855b96-20241106" + "@emotion/cache": "^11.14.0", + "@emotion/styled": "^11.13.0", + "@mui/icons-material": "^6.3.1", + "@mui/material": "^6.3.1", + "@mui/material-nextjs": "^6.3.1", + "bcryptjs": "^2.4.3", + "cookie": "^1.0.2", + "jose": "^5.9.6", + "jquery": "^3.7.1", + "mysql2": "^3.12.0", + "next": "^15.1.7", + "nodemailer": "^6.9.16", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "server-only": "^0.0.1", + "socket.io": "^4.8.1", + "socket.io-client": "^4.8.1", + "uuid": "^11.0.4" }, "devDependencies": { - "eslint": "^8", - "eslint-config-next": "15.0.3", + "@eslint/eslintrc": "^3", + "cross-env": "^7.0.3", + "eslint": "^9", + "eslint-config-next": "15.1.2", "postcss": "^8", "tailwindcss": "^3.4.1" } @@ -32,6 +49,148 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz", + "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.2", + "@babel/types": "^7.26.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", + "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@emnapi/runtime": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", @@ -42,6 +201,163 @@ "tslib": "^2.4.0" } }, + "node_modules/@emotion/babel-plugin": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", + "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.2.0", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/cache": { + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.14.0.tgz", + "integrity": "sha512-L/B1lc/TViYk4DcpGxtAVbx0ZyiKM5ktoIyafGkH6zg/tj+mA+NE//aPYKG0k8kCHSHVJrpLpcAlOBEXQ3SavA==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.2", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", + "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.13.3", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", + "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/cache": "^11.13.0", + "@emotion/serialize": "^1.3.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/react/node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.2", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", + "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/styled/node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" + }, + "node_modules/@emotion/utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.2.tgz", + "integrity": "sha512-3vLclRofFziIa3J2wDh9jjbkUz9qk5Vi3IZ/FSTKViB0k+ef0fPV7dYrUIugbgupYDx7v9ud/SjrtEP8Y4xLoA==", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", @@ -71,17 +387,45 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", + "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", + "espree": "^10.0.1", + "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -89,36 +433,95 @@ "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/@eslint/js": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", - "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "version": "9.20.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", + "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", "dev": true, "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", - "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", - "deprecated": "Use @eslint/config-array instead", + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@eslint/core": "^0.10.0", + "levn": "^0.4.1" }, "engines": { - "node": ">=10.10.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@humanwhocodes/module-importer": { @@ -135,13 +538,19 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", + "node_modules/@humanwhocodes/retry": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true, - "license": "BSD-3-Clause" + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.33.5", @@ -555,7 +964,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -570,7 +978,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -580,7 +987,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -590,30 +996,305 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@mui/core-downloads-tracker": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.4.4.tgz", + "integrity": "sha512-r+J0EditrekkTtO2CnCBCOGpNaDYwJqz8lH4rj6o/anDcskZFJodBlG8aCJkS8DL/CF/9EHS+Gz53EbmYEnQbw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.4.4.tgz", + "integrity": "sha512-uF1chGaoFmYdRUomK6f8kgJfWosk9A3HXWiVD0vQm+2mE7f25eTQ1E8RRO11LXpnUBqu8Rbv/uGlpnjT/u1Ksg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^6.4.4", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.4.4.tgz", + "integrity": "sha512-ISVPrIsPQsxnwvS40C4u03AuNSPigFeS2+n1qpuEZ94hDsdMi19dQM2JcC9CHEhXecSIQjP1RTyY0mPiSpSrFQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/core-downloads-tracker": "^6.4.4", + "@mui/system": "^6.4.3", + "@mui/types": "^7.2.21", + "@mui/utils": "^6.4.3", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.12", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^19.0.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material-pigment-css": "^6.4.3", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@mui/material-pigment-css": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material-nextjs": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/@mui/material-nextjs/-/material-nextjs-6.4.3.tgz", + "integrity": "sha512-4ZRLrcD1HeWpvY8c7MrKYKuaUSobtvqcLYeEfGh/x5ezzPgKizhl7C0jpVVEgf6g+C9OgOGbhLTVfks7Y2IBAQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/cache": "^11.11.0", + "@emotion/react": "^11.11.4", + "@emotion/server": "^11.11.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "next": "^13.0.0 || ^14.0.0 || ^15.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/cache": { + "optional": true + }, + "@emotion/server": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/react-is": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz", + "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==", + "license": "MIT" + }, + "node_modules/@mui/private-theming": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.4.3.tgz", + "integrity": "sha512-7x9HaNwDCeoERc4BoEWLieuzKzXu5ZrhRnEM6AUcRXUScQLvF1NFkTlP59+IJfTbEMgcGg1wWHApyoqcksrBpQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/utils": "^6.4.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.4.3.tgz", + "integrity": "sha512-OC402VfK+ra2+f12Gef8maY7Y9n7B6CZcoQ9u7mIkh/7PKwW/xH81xwX+yW+Ak1zBT3HYcVjh2X82k5cKMFGoQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@emotion/cache": "^11.13.5", + "@emotion/serialize": "^1.3.3", + "@emotion/sheet": "^1.4.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.4.3.tgz", + "integrity": "sha512-Q0iDwnH3+xoxQ0pqVbt8hFdzhq1g2XzzR4Y5pVcICTNtoCLJmpJS3vI4y/OIM1FHFmpfmiEC2IRIq7YcZ8nsmg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/private-theming": "^6.4.3", + "@mui/styled-engine": "^6.4.3", + "@mui/types": "^7.2.21", + "@mui/utils": "^6.4.3", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.21", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.21.tgz", + "integrity": "sha512-6HstngiUxNqLU+/DPqlUJDIPbzUBxIVHb1MmXP0eTWDIROiCR2viugXpEif0PPe2mLqqakPzzRClWAnK+8UJww==", + "license": "MIT", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.4.3.tgz", + "integrity": "sha512-jxHRHh3BqVXE9ABxDm+Tc3wlBooYz/4XPa0+4AI+iF38rV1/+btJmSUgG4shDtSWVs/I97aDn5jBCt6SF2Uq2A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mui/types": "^7.2.21", + "@types/prop-types": "^15.7.14", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^19.0.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz", + "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==", + "license": "MIT" + }, "node_modules/@next/env": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.0.3.tgz", - "integrity": "sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA==", + "version": "15.1.7", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.7.tgz", + "integrity": "sha512-d9jnRrkuOH7Mhi+LHav2XW91HOgTAWHxjMPkXMGBc9B2b7614P7kjt8tAplRvJpbSt4nbO1lugcT/kAaWzjlLQ==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.0.3.tgz", - "integrity": "sha512-3Ln/nHq2V+v8uIaxCR6YfYo7ceRgZNXfTd3yW1ukTaFbO+/I8jNakrjYWODvG9BuR2v5kgVtH/C8r0i11quOgw==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.1.2.tgz", + "integrity": "sha512-sgfw3+WdaYOGPKCvM1L+UucBmRfh8V2Ygefp7ELON0+0vY7uohQwXXnVWg3rY7mXDKharQR3o7uedpfvnU2hlQ==", "dev": true, "license": "MIT", "dependencies": { @@ -621,9 +1302,9 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.3.tgz", - "integrity": "sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw==", + "version": "15.1.7", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.7.tgz", + "integrity": "sha512-hPFwzPJDpA8FGj7IKV3Yf1web3oz2YsR8du4amKw8d+jAOHfYHYFpMkoF6vgSY4W6vB29RtZEklK9ayinGiCmQ==", "cpu": [ "arm64" ], @@ -637,9 +1318,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.3.tgz", - "integrity": "sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw==", + "version": "15.1.7", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.7.tgz", + "integrity": "sha512-2qoas+fO3OQKkU0PBUfwTiw/EYpN+kdAx62cePRyY1LqKtP09Vp5UcUntfZYajop5fDFTjSxCHfZVRxzi+9FYQ==", "cpu": [ "x64" ], @@ -653,9 +1334,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.3.tgz", - "integrity": "sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw==", + "version": "15.1.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.7.tgz", + "integrity": "sha512-sKLLwDX709mPdzxMnRIXLIT9zaX2w0GUlkLYQnKGoXeWUhcvpCrK+yevcwCJPdTdxZEUA0mOXGLdPsGkudGdnA==", "cpu": [ "arm64" ], @@ -669,9 +1350,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.3.tgz", - "integrity": "sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA==", + "version": "15.1.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.7.tgz", + "integrity": "sha512-zblK1OQbQWdC8fxdX4fpsHDw+VSpBPGEUX4PhSE9hkaWPrWoeIJn+baX53vbsbDRaDKd7bBNcXRovY1hEhFd7w==", "cpu": [ "arm64" ], @@ -685,9 +1366,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.3.tgz", - "integrity": "sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w==", + "version": "15.1.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.7.tgz", + "integrity": "sha512-GOzXutxuLvLHFDAPsMP2zDBMl1vfUHHpdNpFGhxu90jEzH6nNIgmtw/s1MDwpTOiM+MT5V8+I1hmVFeAUhkbgQ==", "cpu": [ "x64" ], @@ -701,9 +1382,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.3.tgz", - "integrity": "sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA==", + "version": "15.1.7", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.7.tgz", + "integrity": "sha512-WrZ7jBhR7ATW1z5iEQ0ZJfE2twCNSXbpCSaAunF3BKcVeHFADSI/AW1y5Xt3DzTqPF1FzQlwQTewqetAABhZRQ==", "cpu": [ "x64" ], @@ -717,9 +1398,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.3.tgz", - "integrity": "sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ==", + "version": "15.1.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.7.tgz", + "integrity": "sha512-LDnj1f3OVbou1BqvvXVqouJZKcwq++mV2F+oFHptToZtScIEnhNRJAhJzqAtTE2dB31qDYL45xJwrc+bLeKM2Q==", "cpu": [ "arm64" ], @@ -733,9 +1414,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.3.tgz", - "integrity": "sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA==", + "version": "15.1.7", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.7.tgz", + "integrity": "sha512-dC01f1quuf97viOfW05/K8XYv2iuBgAxJZl7mbCKEjMgdQl5JjAKJ0D2qMKZCgPWDeFbFT0Q0nYWwytEW0DWTQ==", "cpu": [ "x64" ], @@ -807,6 +1488,16 @@ "node": ">=14" } }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -821,6 +1512,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "license": "MIT" + }, "node_modules/@swc/counter": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", @@ -828,14 +1525,43 @@ "license": "Apache-2.0" }, "node_modules/@swc/helpers": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", - "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", "license": "Apache-2.0", "dependencies": { - "tslib": "^2.4.0" + "tslib": "^2.8.0" } }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "license": "MIT" + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", @@ -843,6 +1569,47 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/node": { + "version": "22.10.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.2.tgz", + "integrity": "sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.12", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", + "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + } + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz", @@ -1089,12 +1856,18 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true, - "license": "ISC" + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } }, "node_modules/acorn": { "version": "8.14.0", @@ -1388,6 +2161,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/axe-core": { "version": "4.10.2", "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", @@ -1408,6 +2190,21 @@ "node": ">= 0.4" } }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1415,6 +2212,21 @@ "dev": true, "license": "MIT" }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "license": "MIT", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "license": "MIT" + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -1487,7 +2299,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -1584,6 +2395,15 @@ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", "license": "MIT" }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/color": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", @@ -1646,10 +2466,82 @@ "dev": true, "license": "MIT" }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, "node_modules/cross-spawn": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -1674,6 +2566,12 @@ "node": ">=4" } }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -1739,7 +2637,6 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -1796,6 +2693,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, "node_modules/detect-libc": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", @@ -1820,17 +2726,14 @@ "dev": true, "license": "MIT" }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" } }, "node_modules/eastasianwidth": { @@ -1847,6 +2750,58 @@ "dev": true, "license": "MIT" }, + "node_modules/engine.io": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", + "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.7.2", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-client": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.2.tgz", + "integrity": "sha512-TAr+NKeoVTjEVW8P3iHguO1LO6RlUz9O5Y8o7EY0fU+gY1NYqas7NN3slpFtbXEsLMHk0h90fJMfKjRkQ0qUIw==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", + "xmlhttprequest-ssl": "~2.1.1" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/enhanced-resolve": { "version": "5.17.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", @@ -1861,6 +2816,21 @@ "node": ">=10.13.0" } }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/error-ex/node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, "node_modules/es-abstract": { "version": "1.23.4", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.4.tgz", @@ -2032,7 +3002,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -2042,70 +3011,73 @@ } }, "node_modules/eslint": { - "version": "8.57.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", - "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", - "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "version": "9.20.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", + "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.1", - "@humanwhocodes/config-array": "^0.13.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.11.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.20.0", + "@eslint/plugin-kit": "^0.2.5", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", + "@humanwhocodes/retry": "^0.4.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^8.2.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-next": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.0.3.tgz", - "integrity": "sha512-IGP2DdQQrgjcr4mwFPve4DrCqo7CVVez1WoYY47XwKSrYO4hC0Dlb+iJA60i0YfICOzgNADIb8r28BpQ5Zs0wg==", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-15.1.2.tgz", + "integrity": "sha512-PrMm1/4zWSJ689wd/ypWIR5ZF1uvmp3EkgpgBV1Yu6PhEobBjXMGgT8bVNelwl17LXojO8D5ePFRiI4qXjsPRA==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "15.0.3", + "@next/eslint-plugin-next": "15.1.2", "@rushstack/eslint-patch": "^1.10.3", "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || ^7.0.0 || ^8.0.0", @@ -2113,7 +3085,7 @@ "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.31.0", "eslint-plugin-jsx-a11y": "^6.10.0", - "eslint-plugin-react": "^7.35.0", + "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^5.0.0" }, "peerDependencies": { @@ -2427,9 +3399,9 @@ } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2437,7 +3409,7 @@ "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -2456,19 +3428,45 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.9.0", + "acorn": "^8.14.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "eslint-visitor-keys": "^4.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -2582,16 +3580,16 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/fill-range": { @@ -2607,6 +3605,12 @@ "node": ">=8" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2625,24 +3629,23 @@ } }, "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16" } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true, "license": "ISC" }, @@ -2673,13 +3676,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -2699,7 +3695,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2734,6 +3729,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "license": "MIT", + "dependencies": { + "is-property": "^1.0.2" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -2785,28 +3789,6 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -2821,16 +3803,13 @@ } }, "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2959,7 +3938,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -2968,6 +3946,28 @@ "node": ">= 0.4" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -2982,7 +3982,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -3005,25 +4004,6 @@ "node": ">=0.8.19" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -3149,7 +4129,6 @@ "version": "2.15.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -3307,15 +4286,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "license": "MIT" }, "node_modules/is-regex": { "version": "1.1.4", @@ -3511,11 +4486,25 @@ "jiti": "bin/jiti.js" } }, + "node_modules/jose": { + "version": "5.9.6", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.9.6.tgz", + "integrity": "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", + "license": "MIT" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, "license": "MIT" }, "node_modules/js-yaml": { @@ -3531,6 +4520,18 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -3538,6 +4539,12 @@ "dev": true, "license": "MIT" }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3639,7 +4646,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true, "license": "MIT" }, "node_modules/locate-path": { @@ -3665,11 +4671,16 @@ "dev": true, "license": "MIT" }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "license": "Apache-2.0" + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dev": true, "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -3685,6 +4696,21 @@ "dev": true, "license": "ISC" }, + "node_modules/lru.min": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.1.tgz", + "integrity": "sha512-FbAj6lXil6t8z4z3j0E5mfRlPzxkySotzUHwRXjlpRh10vc6AI6WN62ehZj82VG7M20rqogJ0GLwar2Xa05a8Q==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3709,6 +4735,27 @@ "node": ">=8.6" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -3746,9 +4793,28 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, + "node_modules/mysql2": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.12.0.tgz", + "integrity": "sha512-C8fWhVysZoH63tJbX8d10IAoYCyXy4fdRFz2Ihrt9jtPILYynFEKUUzpp1U7qxzDc3tMbotvaBH+sl6bFnGZiw==", + "license": "MIT", + "dependencies": { + "aws-ssl-profiles": "^1.1.1", + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.6.3", + "long": "^5.2.1", + "lru.min": "^1.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" + }, + "engines": { + "node": ">= 8.0" + } + }, "node_modules/mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -3761,6 +4827,27 @@ "thenify-all": "^1.0.0" } }, + "node_modules/named-placeholders": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", + "license": "MIT", + "dependencies": { + "lru-cache": "^7.14.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/named-placeholders/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -3786,15 +4873,24 @@ "dev": true, "license": "MIT" }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/next": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/next/-/next-15.0.3.tgz", - "integrity": "sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==", + "version": "15.1.7", + "resolved": "https://registry.npmjs.org/next/-/next-15.1.7.tgz", + "integrity": "sha512-GNeINPGS9c6OZKCvKypbL8GTsT5GhWPp4DM0fzkXJuXMilOO2EeFxuAY6JZbtk6XIl6Ws10ag3xRINDjSO5+wg==", "license": "MIT", "dependencies": { - "@next/env": "15.0.3", + "@next/env": "15.1.7", "@swc/counter": "0.1.3", - "@swc/helpers": "0.5.13", + "@swc/helpers": "0.5.15", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", @@ -3807,22 +4903,22 @@ "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.0.3", - "@next/swc-darwin-x64": "15.0.3", - "@next/swc-linux-arm64-gnu": "15.0.3", - "@next/swc-linux-arm64-musl": "15.0.3", - "@next/swc-linux-x64-gnu": "15.0.3", - "@next/swc-linux-x64-musl": "15.0.3", - "@next/swc-win32-arm64-msvc": "15.0.3", - "@next/swc-win32-x64-msvc": "15.0.3", + "@next/swc-darwin-arm64": "15.1.7", + "@next/swc-darwin-x64": "15.1.7", + "@next/swc-linux-arm64-gnu": "15.1.7", + "@next/swc-linux-arm64-musl": "15.1.7", + "@next/swc-linux-x64-gnu": "15.1.7", + "@next/swc-linux-x64-musl": "15.1.7", + "@next/swc-win32-arm64-msvc": "15.1.7", + "@next/swc-win32-x64-msvc": "15.1.7", "sharp": "^0.33.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-66855b96-20241106", - "react-dom": "^18.2.0 || 19.0.0-rc-66855b96-20241106", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "peerDependenciesMeta": { @@ -3868,6 +4964,15 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/nodemailer": { + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.16.tgz", + "integrity": "sha512-psAuZdTIRN08HKVd/E8ObdV6NO7NTBY3KsC30F7M4H1OnmLCUNaS56FpYxyb26zWLSyYF9Ozch9KYHhHegsiOQ==", + "license": "MIT-0", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -3882,7 +4987,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -4007,16 +5111,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -4078,7 +5172,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -4087,6 +5180,24 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4097,16 +5208,6 @@ "node": ">=8" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -4121,7 +5222,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, "license": "MIT" }, "node_modules/path-scurry": { @@ -4141,6 +5241,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -4367,7 +5476,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", @@ -4407,33 +5515,48 @@ "license": "MIT" }, "node_modules/react": { - "version": "19.0.0-rc-66855b96-20241106", - "resolved": "https://registry.npmjs.org/react/-/react-19.0.0-rc-66855b96-20241106.tgz", - "integrity": "sha512-klH7xkT71SxRCx4hb1hly5FJB21Hz0ACyxbXYAECEqssUjtJeFUAaI2U1DgJAzkGEnvEm3DkxuBchMC/9K4ipg==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-dom": { - "version": "19.0.0-rc-66855b96-20241106", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0-rc-66855b96-20241106.tgz", - "integrity": "sha512-D25vdaytZ1wFIRiwNU98NPQ/upS2P8Co4/oNoa02PzHbh8deWdepjm5qwZM/46OdSiGv4WSWwxP55RO9obqJEQ==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", + "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", "license": "MIT", "dependencies": { - "scheduler": "0.25.0-rc-66855b96-20241106" + "scheduler": "^0.25.0" }, "peerDependencies": { - "react": "19.0.0-rc-66855b96-20241106" + "react": "^19.0.0" } }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, "license": "MIT" }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -4479,6 +5602,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", @@ -4502,7 +5631,6 @@ "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", @@ -4520,7 +5648,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -4547,23 +5674,6 @@ "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -4625,10 +5735,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, "node_modules/scheduler": { - "version": "0.25.0-rc-66855b96-20241106", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0-rc-66855b96-20241106.tgz", - "integrity": "sha512-HQXp/Mnp/MMRSXMQF7urNFla+gmtXW/Gr1KliuR0iboTit4KvZRY8KYaq5ccCTAOJiUqQh2rE2F3wgUekmgdlA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", + "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", "license": "MIT" }, "node_modules/semver": { @@ -4644,6 +5760,17 @@ "node": ">=10" } }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" + }, + "node_modules/server-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/server-only/-/server-only-0.0.1.tgz", + "integrity": "sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==", + "license": "MIT" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -4783,6 +5910,71 @@ "is-arrayish": "^0.3.1" } }, + "node_modules/socket.io": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.6.0", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "license": "MIT", + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-client": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", + "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.6.1", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -4792,6 +5984,15 @@ "node": ">=0.10.0" } }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/streamsearch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", @@ -5048,6 +6249,12 @@ } } }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT" + }, "node_modules/sucrase": { "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", @@ -5135,7 +6342,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -5192,13 +6398,6 @@ "node": ">=6" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -5287,19 +6486,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typed-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", @@ -5378,9 +6564,9 @@ } }, "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, "license": "Apache-2.0", "peer": true, @@ -5408,6 +6594,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "license": "MIT" + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -5425,6 +6617,28 @@ "dev": true, "license": "MIT" }, + "node_modules/uuid": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.5.tgz", + "integrity": "sha512-508e6IcKLrhxKdBbcA2b4KQZlLVp2+J5UwQ6F7Drckkc5N9ZJwFa4TgWtsww9UG8fGHbm6gbV19TdM5pQ4GaIA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5635,12 +6849,34 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xmlhttprequest-ssl": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.2.tgz", + "integrity": "sha512-TEU+nJVUUnA4CYJFLvK5X9AOeH4KvDvhIfm0vV1GaQRtchnG0hgK5p8hw/xjv8cunWYCsiPCSDzObPyhEwq3KQ==", + "engines": { + "node": ">=0.4.0" + } }, "node_modules/yaml": { "version": "2.6.0", diff --git a/package.json b/package.json index c22373f..91f768f 100644 --- a/package.json +++ b/package.json @@ -9,14 +9,31 @@ "lint": "next lint" }, "dependencies": { - "react": "19.0.0-rc-66855b96-20241106", - "react-dom": "19.0.0-rc-66855b96-20241106", - "next": "15.0.3" + "@emotion/cache": "^11.14.0", + "@emotion/styled": "^11.13.0", + "@mui/icons-material": "^6.3.1", + "@mui/material": "^6.3.1", + "@mui/material-nextjs": "^6.3.1", + "bcryptjs": "^2.4.3", + "cookie": "^1.0.2", + "jose": "^5.9.6", + "jquery": "^3.7.1", + "mysql2": "^3.12.0", + "next": "^15.1.7", + "nodemailer": "^6.9.16", + "react": "^19.0.0", + "react-dom": "^19.0.0", + "server-only": "^0.0.1", + "socket.io": "^4.8.1", + "socket.io-client": "^4.8.1", + "uuid": "^11.0.4" }, "devDependencies": { + "@eslint/eslintrc": "^3", + "cross-env": "^7.0.3", + "eslint": "^9", + "eslint-config-next": "15.1.2", "postcss": "^8", - "tailwindcss": "^3.4.1", - "eslint": "^8", - "eslint-config-next": "15.0.3" + "tailwindcss": "^3.4.1" } } diff --git a/public/assets/images/AFL.svg b/public/assets/images/AFL.svg new file mode 100644 index 0000000..c22292e --- /dev/null +++ b/public/assets/images/AFL.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + AFL + \ No newline at end of file diff --git a/public/assets/images/BRGC_T2_R.gif b/public/assets/images/BRGC_T2_R.gif new file mode 100644 index 0000000000000000000000000000000000000000..fe0ef290175956301d8dcb8e6818c40a780ec2e2 GIT binary patch literal 1934 zcmdVX2U`*d1Hf?*+!R=3nhjnxXSww>M`#@?j(p6n;hEYg=gL)f#TB3+prVrC&IJw} znP!TmgafxHsnyka8iu(OS1M)rzI}}M_X+;b^LKSe+1dr?1I_??-2qT2R8vz^PfyQU zz0&q@gPq2+GaAi~ntT%z6H7}=_hYkOC)RE4?2$;M3(Cdyf81SBXf)dMhYP;GK7M`| zFJHcN_3AHIf4K6i|F!Ga1A>DBf`fxGm>ZZ-3#1KBr=IWp-^blBvNV$nMRAreUOrw5nn)HW~L+*5i^*Kd}c;= zZZ0D~?;e|azcMYaxTuKDVsWZMyArD&*HzWmg%6PHnx57-H8-?!pYhrO{}28n1p`$8 zc)+P2u|J*w6lDZ_5|NZlrchH-(`e}#nRK$16`t`hH!r`S@DWv+!7O62%PTUK5!EG? zb&u;GaS+PHgHKwxt)#}M&v`HF8=Lsug2J}0o`FGH=g^3dT;2Za^((}|<~RQgRm)9$ z7_1SA`F%5Ut$)ogJ)T{blrOI4n|?9gJ}I49>Cu$!0rm{DPz|M>L?vYt4-r(81yY3@ zAdrpPz!Y_3v>(7+ESGuQ{@Sjsh3-JAzG04VwT7s`>8BTq#{ff#^C~bOXC}fB9^4kGE0p zqh^JLjxh?8`IaH$49m0@&#%v}4rc4Ko&I{aHr<+f(0J88?}`6ZGH_4N)8UC^Dlt>> z1a2aFg&V5sR^rWj@nz{-`fKyv=-yQEBc~DB|Q$}f&3y@M1-O41`(l0gQt@l+#~$>-w3x*ob|%Lc^haP{dK zh7Zc{6VvY(!;>%+AUIUb*7JP@GcYm4&&IyYUO3N=Pg2(=e)D%{+@{vpCPDyP(gp85Y;V%kwZb;gxWlXhBhfWVFaB zzX6D-=8&-wH5K(}BbFm9F^OXUF<+=FVqy~aPE+WCuIGIIz3?IA{8QUw39$w?^j%Z2R z)o(4Y_30PV;`)?LmrdpOpW9s*96AB9;K66=Hbxwt(4Gp7(sq%F8*)W)gRWX$W@Bcc zvRHw+t7p^j5#xPkV;=qiv7MZEsdHz2tb}>n5NS{02Z!zV z;ZG*FCgSvEcSV1&Wp`)mZUsEY9TAv(TYmPpiL;8$O#Qc&7apaZpW78n+9VwklSHUf zdBE*d% z06FH!hsr{)xzwU%{`+JW0gn@$~Y>hs*UW(10o10 zoA`$SH-fIdp}R9-6r|N3azeQ3mgJ3HXOO`<$|eY+Z-K8uxkIR-DKg0?L&Ru^`lM-I z?QW)$l*J^K>u9BT*xQJ5J0KX4j80HPjL99RR#@Z?3}fzOWjB)aPE{-nM_e0c^eu}| zkp{f%KOWE$?N)$r%5r!F04M__BF^|E-f3w9tU7ycn>L z<2Whxc4k_F<~*xx@ygy&u?O?;^q=KM1^|9_O>%1eVe;U?(G2V+8?i6k!MtX4zlIeM zVq2yAM*1p8HdeZ?hkRzPEIm?iyYh4ZSP20b$sc=GDIyUrSeDUCaBNPh5*T3rUz!JG AssI20 literal 0 HcmV?d00001 diff --git a/public/assets/images/RATP.svg b/public/assets/images/RATP.svg new file mode 100644 index 0000000..589f525 --- /dev/null +++ b/public/assets/images/RATP.svg @@ -0,0 +1,89 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/public/assets/images/SNCF.svg b/public/assets/images/SNCF.svg new file mode 100644 index 0000000..f5dfde6 --- /dev/null +++ b/public/assets/images/SNCF.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/images/XGC_T2_AB_L.gif b/public/assets/images/XGC_T2_AB_L.gif new file mode 100644 index 0000000000000000000000000000000000000000..f12534496ac868b3f02d47e166a5f227222855ff GIT binary patch literal 3309 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 IqXVe?52D=n(EtDd literal 0 HcmV?d00001 diff --git a/public/assets/images/XGC_T2_R.gif b/public/assets/images/XGC_T2_R.gif new file mode 100644 index 0000000000000000000000000000000000000000..ab56802c07baaf1926784135389596da4e55d891 GIT binary patch literal 3219 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/images/background.svg b/public/assets/images/background.svg new file mode 100644 index 0000000..55d87d6 --- /dev/null +++ b/public/assets/images/background.svg @@ -0,0 +1,3661 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + Layer 1 + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/images/favicon.svg b/public/assets/images/favicon.svg new file mode 100644 index 0000000..955919c --- /dev/null +++ b/public/assets/images/favicon.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/assets/images/upscaled_BRGC_T2_R.gif b/public/assets/images/upscaled_BRGC_T2_R.gif new file mode 100644 index 0000000000000000000000000000000000000000..30bdbc23a67fffc0377cbc1479cd7c5f6782274a GIT binary patch literal 17701 zcmX6^WmKEb(+wUxxI?hwF2&v3V#R6k;#%BYix+o_7k76pP#l80yA})Z=J)>d;W;@c z$!2Hf-r3#Rxsj^M@|b9(XaE2JQ&B-i9RPsihP`(IBEz1@HC?c$%&DS`q=rYVQaU=XZe>#3ngcVd8mF1tr zYp7W?JAV-Dghj1fvuZ7nYf1unLCWUbM_Ajt!xD9-?x#ADCi->XlnC$WbSn-jpM@;M z7odv=SwhY0aUbdw)>Rm5kJmdP2G5QEmTjs#`Hdr}!-!34KqboAQIwv$IIb6+_s6`S zywBV+*I#n(JMn>k zxTj49vDd3=xE>4f=Ow-RrH_-@!UxUFs$Z)!Fu4Xm&AdRs--(Is)mG=%WNm|^&g)SY zUsN$M?z$eO<)0-g&wu_XW@M!aTwjRYx8`yW$$&dLAt!3hE54{bv%9M^r>7MH?&nz! z{F(OeL$P54N|PhrUiM>`7s$s&JzsQF`QOU>CwX<3UAt_H#)(`HQh7cHUwA{}x-y3t z-figERdwt}lf~Km@y>GAZjALSY3+a#Y_0yN?tb;+=i~bZ*o4gtBcR!AlT_0d=9U&d zYI6$L0n&#qobX?q9oD+HX&xlgUi6>zALd^B}@Q?R7 ziM}1b)0X#!eDlg+|HUI$bWEIKY0QE@hd1Bzic|!g1p7eKT;FeEYcpvKt^v2hdSAO_ zOLOymiu*NpL+HQeZi){dK3wEvWme#lh=SE;Sil~&p7Khf5 zl8_`2aTtVvel>@l*@!46#wjsv7)SU1`N<$(Qc@yc*{GwZ*S9y8D!j9^)9w6pdt|Zg z)%iiDY5wSeBm%p`>uTEq&{nc`@)z&`$Fmdje!a#j<6H@kg%kfjYY^jY48~V2p1tegB5wG9m+t*x!|>FMcjR^Pv0Q*}SDU2G2$8Gbz2-|wpLni7AR6;FOUug~?J z!euI&8#8=4)=rI#fCB=ANgv9I(duAu6y@Sv(Z-k6CW{#=8XS~$+Ui5{zuF#j=!P-5 z8`G#NuYY`7n(9ea1Nzcf?Hgn0b2aFqnoRN^!nXhQOV}B@Z}{FfTQ}Qu46S&0{$ThtW5mL%YW*KxjFDhWwLiFTOg=j~{m*xJczCKx$xYQnhCa15 zzAwlNOI-j7V4&ecsG$P8K}UpE`Cg9aKFJSPtjhZO`faj}hcM&-c`9EQ?N<|hfd)-m-HTiN|n!Vr!V2nUw{V zKOpz&G>G~XLJaV@aDu^v71F_fH!ALaPChv?p(T2MACoV~56di61F)a1J6-SoIi$Go zK*8?&$H&h<1aO48sN?Cl916Xe)IXgz@&{q?{pZOS&Vt6*w1p>0n@T~?>)jEst)aza z&Nmtw+x)<KtS%xQZ7YyPEMDDkIxr`o*x`t53xl>MH^yXw};vCvE+dZ zZ8g4pFjvb8m7bl*8U4@Du%#v4E7*Us07w8IKYq+gQh#OU>5fTvf~5@E+1c5j>)xzv zY{q_mey%V^I>SitwwYBByxe7v7#0LeJ@%hQwo~;g`QbK)Z5o$-vz1ZCqpz;6l`Jy?AY$EtlpMYsa7=lYLLPMHA_;3AofVx6yF3I3Yj91s2=dfOOF z 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 SP6Uj~1gX5$RH%`+4EYZfj>@$F literal 0 HcmV?d00001 diff --git a/public/assets/images/upscaled_XGC_T2_R.gif b/public/assets/images/upscaled_XGC_T2_R.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5b3cf853ea3acffd134d5b9f4b47c062235d42e GIT binary patch literal 29419 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 \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg deleted file mode 100644 index 567f17b..0000000 --- a/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/next.svg b/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg deleted file mode 100644 index 7705396..0000000 --- a/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/window.svg b/public/window.svg deleted file mode 100644 index b2b2a44..0000000 --- a/public/window.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/app/(departs)/creator/gare/classique/[id]/departs/TwoRowDepart.js b/src/app/(departs)/creator/gare/classique/[id]/departs/TwoRowDepart.js new file mode 100644 index 0000000..708f007 --- /dev/null +++ b/src/app/(departs)/creator/gare/classique/[id]/departs/TwoRowDepart.js @@ -0,0 +1,57 @@ +import * as React from 'react'; +import $ from 'jquery'; + +export default function TwoRowDepart({ number, timing, gare, type, departure }) { + + React.useEffect(() => { + switch (type) { + case 'TGV': + $('.train-logo').addClass('train-logo-tgv'); + break; + case 'OUIGO': + $('.train-logo').addClass('train-logo-ouigo'); + break; + case 'TER': + $('.train-logo').addClass('train-logo-ter'); + break; + default: + $('.train-logo').addClass('train-logo-sncf'); + break; + } + }, []); + + return ( +

+
+
+
+
+
+
+
+ {type} +
+ {number} +
+
{timing}
+
+
+
{departure}
+
+ {gare} +
+
+
+ +
+
+
+
+
+
+
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/app/(departs)/creator/gare/classique/[id]/departs/layout.js b/src/app/(departs)/creator/gare/classique/[id]/departs/layout.js new file mode 100644 index 0000000..113a3ed --- /dev/null +++ b/src/app/(departs)/creator/gare/classique/[id]/departs/layout.js @@ -0,0 +1,35 @@ +import * as React from 'react'; +import styles from '@/app/styles/departs/trains.css'; +import styles2 from '@/app/fonts/Achemine/style.css' + +export default function Layout({ children }) { + return ( + + +
+
+
+
+
+
+
+
+
+ + + : + +   + +
+
+
+
+
+ {children} +
+
+ + + ); +} \ No newline at end of file diff --git a/src/app/(departs)/creator/gare/classique/[id]/departs/page.js b/src/app/(departs)/creator/gare/classique/[id]/departs/page.js new file mode 100644 index 0000000..f6eddcb --- /dev/null +++ b/src/app/(departs)/creator/gare/classique/[id]/departs/page.js @@ -0,0 +1,111 @@ +'use client' +import * as React from 'react'; +import TwoRowDepart from './TwoRowDepart'; +import $ from 'jquery'; +import io from 'socket.io-client'; + +export default function DepartsPage() { + + const [trains, setTrains] = React.useState([]); + + React.useEffect(() => { + async function listen() { + await fetch('/api/trains/listen', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + }); + } + listen(); + + const socket = io({ + path: '/api/socket', + }); + + socket.on('db-update', (data) => { + setTrains((trains) => [...trains, data]); + console.log(data); + }); + + return () => { + socket.disconnect(); + }; + }, []); + + const clock = () => { + var date = new Date(); + date.setHours(date.getHours() + (date.getTimezoneOffset() / -60)); + + var h = date.getUTCHours(); + if (h < 10) { + h = '0' + h; + } + $('#clock-hours').html(h); + var m = date.getUTCMinutes(); + if (m < 10) { + m = '0' + m; + } + $('#clock-minutes').html(m); + var s = date.getUTCSeconds(); + if (s < 10) { + s = '0' + s; + } + $('#clock-seconds').html(s); + setInterval(clock, '1000'); + return true; + } + + const scollX = () => { + $('.text-scroll-x').each(function () { + + var distance = $(this).width() + $(this).parent().width() + 10; + + + if ($(this).width() > $(this).parent().width()) { + $(this).addClass('animation-scroll-x'); + $(this).css({ + '-webkit-animation-duration': (distance / 150) + 's', + 'animation-duration': (distance / 150) + 's', + 'padding-left': '100%' + }); + } else { + $(this).css({ + 'padding-left': '0%' + }); + } + }); + } + + const scrollY = (limit) => { + var elem = $('.scroll-y'); + var elemHeight = elem.height(); + var parentHeight = elem.parent().height(); + var elemHeightRelative = elemHeight / parentHeight * 100; + + if (elemHeightRelative > limit && limit < 100) { + var distance = (elemHeight - (parentHeight / 1.1)) / $(window).height() * 100; + var time = distance / 6 + 10; + var delay = 5 / time * 100; + + $("").appendTo("head"); + $(elem).css({ + 'animation': 'scrollY ' + time + 's linear infinite 0s' + }); + } else { + $(elem).css({ + 'animation': 'none' + }); + } + } + + React.useEffect(() => { + clock(); + }, []); + + return ( + <> + + + ); +} \ No newline at end of file diff --git a/src/app/(general)/admin/page.js b/src/app/(general)/admin/page.js new file mode 100644 index 0000000..695b5f1 --- /dev/null +++ b/src/app/(general)/admin/page.js @@ -0,0 +1,44 @@ +'use client' +import { Box, Card, CardActions, CardContent, Grid2, Typography, Button } from '@mui/material'; +import Link from 'next/link'; +import * as React from 'react'; + +export default function AdminHome() { + const [usersLength, setUsersLength] = React.useState(0); + + React.useEffect(() => { + const fetchUsersLength = async () => { + const response = await fetch('/api/admin/users?length=true'); + if (response.ok) { + const data = await response.json(); + setUsersLength(data); + } + } + fetchUsersLength(); + }, []); + + return ( + <> + + Administration + Bienvenue sur la page d'dministration d'InfoGare + + + + + + Utilisateurs + Gestion des utilisateurs + Il y a actuellement {usersLength} utilisateurs enregistrés + + + + + + + + + + + ); +} \ No newline at end of file diff --git a/src/app/(general)/admin/users/UserDisableDialog.js b/src/app/(general)/admin/users/UserDisableDialog.js new file mode 100644 index 0000000..8a49348 --- /dev/null +++ b/src/app/(general)/admin/users/UserDisableDialog.js @@ -0,0 +1,29 @@ +import * as React from 'react'; +import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, TextField } from '@mui/material'; + +export default function UserDisableDialog({ open, user, handleDisable, handleClose }) { + + const [reason, setReason] = React.useState(''); + + const handlePreDisable = () => { + console.log(user.EMAIL); + handleDisable(user.EMAIL, reason); + handleClose(); + } + + return ( + + Désactiver l'utilisateur {user.USERNAME} + + + Êtes-vous sûr de vouloir désactiver l'utilisateur {user.USERNAME} ? + + setReason(e.target.value)} fullWidth /> + + + + + + + ); +} \ No newline at end of file diff --git a/src/app/(general)/admin/users/UserEditDialog.js b/src/app/(general)/admin/users/UserEditDialog.js new file mode 100644 index 0000000..e1231b4 --- /dev/null +++ b/src/app/(general)/admin/users/UserEditDialog.js @@ -0,0 +1,52 @@ +import { Button, Checkbox, Dialog, DialogActions, DialogContent, DialogTitle, TextField, Box, FormControlLabel, Typography } from "@mui/material"; +import * as React from "react"; + +export default function EditUserDialog({ open, user, handleModify, handleClose, handleDelete, handleDisable, handleEnable }) { + + const [username, setUsername] = React.useState(user.USERNAME); + const [email, setEmail] = React.useState(user.EMAIL); + const [email_valid, setEmailValid] = React.useState(user.EMAIL_VALID); + + React.useEffect(() => { + setUsername(user.USERNAME); + setEmail(user.EMAIL); + setEmailValid(user.EMAIL_VALID); + }, [user]); + + const handleMailValidation = async () => { + const response = await fetch(`/api/mail/validate`, { + method: 'POST', + body: JSON.stringify({ email: user.EMAIL }), + headers: { 'Content-Type': 'application/json' } + }); + + if (response.ok) { + console.log('Email sent'); + } + } + + const handlePrepareModify = () => { + handleModify(user.USER_ID, username, email, email_valid); + } + + return ( + + Modifier l'utilisateur {user.USERNAME} + + + setUsername(e.target.value)} value={username} /> + setEmail(e.target.value)} value={email} /> + {email_valid ? <> : } + setEmailValid(e.target.checked)} checked={email_valid} />} label='Email validé' /> + Zone danger ! + {user.ENABLED == 'True' ? : } + + + + + + + + + ); +} \ No newline at end of file diff --git a/src/app/(general)/admin/users/page.js b/src/app/(general)/admin/users/page.js new file mode 100644 index 0000000..c11d132 --- /dev/null +++ b/src/app/(general)/admin/users/page.js @@ -0,0 +1,148 @@ +'use client' +import * as React from 'react'; +import { Box, Table, TableContainer, TableHead, TableRow, TableCell, TableBody, Paper, Typography, TextField, InputAdornment, FormControl, IconButton, OutlinedInput, Stack } from '@mui/material'; +import { Done, Edit, ErrorOutline, Search, Visibility } from '@mui/icons-material'; +import UserEditDialog from './UserEditDialog'; +import UserDisableDialog from './UserDisableDialog'; + +export default function AdminUsers() { + const [users, setUsers] = React.useState([]); + const [length, setLength] = React.useState(0); + const [open, setOpen] = React.useState(false); + const [open1, setOpen1] = React.useState(false); + const [user, setUser] = React.useState({ USER_ID: 0, USERNAME: '', EMAIL: '', EMAIL_VALID: 0, CREATION_TIME: '', LAST_LOGIN: '' }); + + React.useEffect(() => { + const fetchUsers = async () => { + const response = await fetch('/api/admin/users'); + if (response.ok) { + const data = await response.json(); + setUsers(data); + } + } + fetchUsers(); + }, []); + + React.useEffect(() => { + const fetchUsersLength = async () => { + const response = await fetch('/api/admin/users?length=true'); + if (response.ok) { + const data = await response.json(); + setLength(data); + } + } + fetchUsersLength(); + }, []); + + const handleSearch = async (event) => { + const search = event.target.value; + if (search.length > 0) { + const response = await fetch(`/api/admin/users?search=${search}`); + if (response.ok) { + const data = await response.json(); + setUsers(data); + } + } else { + const response = await fetch('/api/admin/users'); + if (response.ok) { + const data = await response.json(); + setUsers(data); + } + } + } + + const handleEdit = (user) => { + setUser(user); + setOpen(true); + } + + const handleUserEdit = async (id, username, email, email_valid) => { + const response = await fetch('/api/admin/users', { + method: 'PUT', + body: JSON.stringify({ id, username, email, email_valid }), + headers: { 'Content-Type': 'application/json' } + }); + + if (response.ok) { + window.location.reload(); + setOpen(false); + } + } + + const handleUserDisable = async (id, reason) => { + const response = await fetch('/api/admin/users/disable', { + method: 'POST', + body: JSON.stringify({ id: id, reason: reason }), + headers: { 'Content-Type': 'application/json' } + }); + + if (response.ok) { + setOpen1(false); + } + } + + const handleEnable = async (id) => { + const response = await fetch('/api/admin/users/enable', { + method: 'POST', + body: JSON.stringify({ id: id }), + headers: { 'Content-Type': 'application/json' } + }); + + if (response.ok) { + window.location.reload(); + setOpen(false); + } + } + + return ( + <> + + + Utilisateurs + + + + + + + UID + Nom d'utilisateur + Email + Email validé ? + Activé ? + Date de création + Date de dernière connexion + Actions + + + + {users.map((user) => ( + + + {user.USER_ID} + + {user.USERNAME} + {user.EMAIL} + {user.EMAIL_VALID == 'True' ? : } + {user.ENABLED == 'True' ? : } + {new Date(user.CREATION_TIME).toLocaleString()} + {new Date(user.LAST_LOGIN).toLocaleString()} + + + + + handleEdit(user)}> + + + + + ))} + +
+
+ setOpen(false)} handleModify={handleUserEdit} handleDisable={(e) => setOpen1(true)} handleEnable={handleEnable} /> + setOpen1(false)} handleDisable={handleUserDisable} /> +
+ + ); +} \ No newline at end of file diff --git a/src/app/(general)/creator/account/page.js b/src/app/(general)/creator/account/page.js new file mode 100644 index 0000000..ab41e8b --- /dev/null +++ b/src/app/(general)/creator/account/page.js @@ -0,0 +1,160 @@ +'use client' + +import * as React from 'react'; +import { Box, Button, Typography, Avatar, Card, CardContent, CardActions, CardActionArea, CardMedia, Grid2, SpeedDial, SpeedDialAction } from '@mui/material'; +import { Add, ContentCopy, Delete, Edit } from '@mui/icons-material'; +import Image from 'next/image'; +import EditDialog from '../gare/classique/EditDialog'; +import { redirect } from 'next/navigation'; + + +export default function LoginPage() { + + const [user, setUser] = React.useState({}); + const [gares, setGares] = React.useState([]); + + const [edit, setEdit] = React.useState(false); + const [initialValues, setInitialValues] = React.useState({}); + const [editId, setEditId] = React.useState(null); + + React.useEffect(() => { + async function getUser() { + const res = await fetch('/api/auth/user', { + method: 'GET', + headers: { 'Content-Type': 'application/json' }, + }); + + if (res.status === 200) { + setUser((await res.json()).user); + } else if (!(await res.json()).isLogedIn) { + redirect('/login'); + } else { + alert('Erreur lors de la récupération de l\'utilisateur'); + } + } + + getUser(); + }, []); + + React.useEffect(() => { + async function getGares() { + const res = await fetch('/api/gares', { + method: 'GET', + headers: { 'Content-Type': 'application/json' }, + }); + + if (res.status === 200) { + setGares(await res.json()); + } else { + alert('Erreur lors de la récupération des gares'); + } + } + + getGares(); + }, []); + + const handleCard = (id, type) => { + if (type === 'Classic') { + window.location.href = `/creator/gare/classique/${id}`; + } else if (type === 'RER') { + window.location.href = `/creator/gare/rer/${id}`; + } else if (type === 'AFL') { + window.location.href = `/creator/gare/afl/${id}`; + } + } + + const handleNewBtn = (key) => { + if (key === 'classic') { + redirect('/creator/gare/classique/new'); + } else if (key === 'rer') { + redirect('/creator/gare/rer/new'); + } else { + redirect('/creator/gare/afl/new'); + } + } + + const handleEdit = (gare) => { + setInitialValues(gare); + setEditId(gare.ID); + setEdit(true); + } + + const handleSubmitEdit = async (values) => { + const res = await fetch('/api/gares?id=' + values.id, { + method: 'PATCH', + body: JSON.stringify(values), + headers: { 'Content-Type': 'application/json' } + }); + if (res.status === 200) { + setEdit(false); + window.location.reload(); + } else { + alert('Erreur lors de la modification de la gare'); + } + } + + return ( + <> + + + + + + + + {user.USERNAME} + + {gares.map(gare => ( + + + handleCard(gare.ID, gare.TYPE)}> + + + {gare.NAME} + + + + + + + + + + ))} + + setEdit(false)} onSubmit={handleSubmitEdit} /> + + } > + } tooltipTitle='Gare classique' onClick={(e) => handleNewBtn('classic')} /> + } tooltipTitle='Gare RER' onClick={(e) => handleNewBtn('rer')} /> + } tooltipTitle='Gare AFL' onClick={(e) => handleNewBtn('afl')} /> + + + ) + +} \ No newline at end of file diff --git a/src/app/(general)/creator/gare/afl/[id]/page.js b/src/app/(general)/creator/gare/afl/[id]/page.js new file mode 100644 index 0000000..e69de29 diff --git a/src/app/(general)/creator/gare/afl/new/page.js b/src/app/(general)/creator/gare/afl/new/page.js new file mode 100644 index 0000000..1895d15 --- /dev/null +++ b/src/app/(general)/creator/gare/afl/new/page.js @@ -0,0 +1,216 @@ +'use client' + +import * as React from 'react'; +import { Box, Button, TextField, Typography, Stepper, Step, StepLabel, StepButton, ButtonGroup, Autocomplete, FormControlLabel, FormLabel, RadioGroup, Radio, Checkbox, FormGroup, Snackbar } from '@mui/material'; +import { Check, NavigateBefore, NavigateNext, SettingsInputComponent } from '@mui/icons-material'; +import { redirect } from 'next/navigation'; + +export default function NewGareAFLPage() { + + const [name, setName] = React.useState(''); + const [folder, setFolder] = React.useState({ label: 'default' }); + const [icon, setIcon] = React.useState({ label: 'SNCF' }); + const [texteInfos, setTexteInfos] = React.useState(''); + const [typeInfos, setTypeInfos] = React.useState('infos_normal'); + const [partage, setPartage] = React.useState(false); + const [copie, setCopie] = React.useState(false); + + const [folders, setFolders] = React.useState([]); + const icons = [ + { label: 'SNCF' }, + { label: 'TER' } + ]; + + const [activeStep, setActiveStep] = React.useState(0); + const [completed1, setCompleted1] = React.useState(false); + const [completed2, setCompleted2] = React.useState(false); + const [completed3, setCompleted3] = React.useState(false); + const [copieDisabled, setCopieDisabled] = React.useState(true); + + const [snackOpen, setSnackOpen] = React.useState(false); + + const step1 = React.createRef(); + const step2 = React.createRef(); + const step3 = React.createRef(); + + React.useEffect(() => { + async function getFolders() { + const res = await fetch('/api/folders', { + method: 'GET', + headers: { 'Content-Type': 'application/json' }, + }); + + if (res.status === 200) { + const fd = []; + (await res.json()).forEach((f) => { + fd.push({ label: f.FOLDER }); + }); + setFolders(fd); + } else { + alert('Erreur lors de la récupération des dossiers'); + } + } + + getFolders(); + }, []); + + const handleNext = () => { + handleStep(activeStep); + if (activeStep !== 2) { + setActiveStep((prevActiveStep) => prevActiveStep + 1); + } + } + + const handleStep = (step) => { + if (step === 0) { + setCompleted1(name !== '' && folder !== ''); + step1.current.style.display = 'none'; + step2.current.style.display = 'block'; + } + if (step === 1) { + setCompleted2(true); + setCompleted3(true); + step2.current.style.display = 'none'; + step3.current.style.display = 'block'; + } + if (step === 2) { + setCompleted3(true); + handleSubmit(); + } + console.log(activeStep); + } + + const handlePrev = () => { + if (activeStep === 1) { + step1.current.style.display = 'block'; + step2.current.style.display = 'none'; + } + if (activeStep === 2) { + step2.current.style.display = 'block'; + step3.current.style.display = 'none'; + setCompleted3(true); + } + setActiveStep((prevActiveStep) => prevActiveStep - 1); + } + + const handleShare = (e) => { + if (e.target.checked === true) { + setPartage(true); + setCopieDisabled(false); + } else { + setPartage(false); + setCopieDisabled(true); + setCopie(false); + } + } + + const handleSubmit = async () => { + setSnackOpen(false); + console.log('submitting...'); + if (completed1 && completed2 && completed3) { + const res = await fetch('/api/gares', { + method: 'POST', + body: JSON.stringify({ name: name, type: 'AFL', folder: folder, infos: texteInfos, infos_type: typeInfos, shared: partage, copy: copie }), + headers: { 'Content-Type': 'application/json' } + }); + if (res.status === 200) { + const data = await res.json(); + redirect(`/creator/gare/afl/${data.id}`); + } + } else { + setSnackOpen(true); + } + } + + return ( + + Nouvelle gare + + + + + Informations générales + + + + + Écran d'informations + + + + + Partage + + + + + + Informations générales + setName(e.target.value)} + variant="outlined" + margin="normal" + fullWidth + required + /> + } + getOptionLabel={(option) => { if (option.label === 'default') return 'Dossier par défaut'; return option.label; }} + value={folder} + onChange={(e, value) => setFolder(value)} + /> + } + getOptionLabel={(option) => option.label} + value={icon} + onChange={(e, value) => setIcon(value)} + /> + + + + + + + + Écran d'informations + setTexteInfos(e.target.value)} + margin="normal" + fullWidth + multiline + rows={4} /> + Type d'informations + setTypeInfos(e.target.value)}> + } label='Informations' /> + } label='Flash circulation' /> + + + + + + + + + + Partage + + } label='Partager cette gare' /> + setCopie(e.target.value)} />} label='Permettre aux autres utilisateurs de copier cette gare' /> + + + + + + + + + + + ); +} \ No newline at end of file diff --git a/src/app/(general)/creator/gare/classique/EditDialog.js b/src/app/(general)/creator/gare/classique/EditDialog.js new file mode 100644 index 0000000..c487383 --- /dev/null +++ b/src/app/(general)/creator/gare/classique/EditDialog.js @@ -0,0 +1,49 @@ +'use client' + +import * as React from 'react'; +import { Dialog, Button, TextField, FormLabel, RadioGroup, FormControlLabel, Radio, DialogTitle, DialogContent, DialogActions } from '@mui/material'; + +export default function EditDialog({ show, values, onClose, onSubmit, id = null }) { + + const [name_, setName] = React.useState(''); + const [infos_, setInfos] = React.useState(''); + const [shared_, setShared] = React.useState(''); + const [infosType_, setInfosType] = React.useState('infos_normal'); + + React.useEffect(() => { + if (values) { + setName(values.NAME || ''); + setInfos(values.INFOS || ''); + setInfosType(values.INFOS_TYPE || 'infos_normal'); + setShared(values.SHARED || 0); + } + }, [values]); + + const handleSubmit = () => { + onSubmit({ name: name_, infos: infos_, infosType: infosType_, shared: shared_, id: id }); + } + + return ( + + Modifier la gares + + setName(e.target.value)} /> + setInfos(e.target.value)} /> + Type d'informations + setInfosType(e.target.value)}> + } label='Informations' /> + } label='Flash circulation' /> + + Partagée + setShared(e.target.value)}> + } label='Partager' /> + } label='Ne pas partager' /> + + + + + + + + ) +} \ No newline at end of file diff --git a/src/app/(general)/creator/gare/classique/[id]/page.js b/src/app/(general)/creator/gare/classique/[id]/page.js new file mode 100644 index 0000000..a9e8c95 --- /dev/null +++ b/src/app/(general)/creator/gare/classique/[id]/page.js @@ -0,0 +1,118 @@ +'use client'; + +import { ContentCopy, Delete, Edit } from '@mui/icons-material'; +import { Typography, Box, Grid2, Card, CardContent, CardActionArea, CardActions, CardMedia, Button, Snackbar } from '@mui/material'; +import Image from 'next/image'; +import { usePathname } from 'next/navigation'; +import EditDialog from '@/app/(general)/creator/gare/classique/EditDialog'; +import * as React from 'react'; + +export default function GareClassique() { + const router = usePathname(); + const id = router.split('/').pop(); + + const [trains, setTrains] = React.useState([]); + const [show, setShow] = React.useState(false); + const [snackbar, setSnackbar] = React.useState(false); + + const [name, setName] = React.useState(''); + const [values, setValues] = React.useState({}); + + React.useEffect(() => { + async function getGare() { + const res = await fetch('/api/gares?id=' + id, { + method: 'GET', + headers: { 'Content-Type': 'application/json' }, + }); + + if (res.status === 200) { + const data = await res.json(); + setName(data.NAME); + setValues(data); + } else { + alert('Erreur lors de la récupération de la gare'); + } + } + + getGare(); + }, []); + + React.useEffect(() => { + async function getTrains() { + const res = await fetch('/api/trains?gare_id=' + id, { + method: 'GET', + headers: { 'Content-Type': 'application/json' }, + }); + + if (res.status === 200) { + setTrains(await res.json()); + } else { + if (res.status === 410) { + setSnackbar(true); + } else { + alert('Erreur lors de la récupération des trains'); + } + } + } + + getTrains(); + }, []); + + const handleCard = (e) => { + + } + + const handleEdit = (e) => { + setShow(true); + } + + const handleEditSubmit = async (data) => { + if (!name) { + return; + } + + const req = await fetch('/api/gares?id=' + id, { + method: 'PATCH', + body: JSON.stringify({ name: data.name, infos: data.infos, infos_type: data.infosType, shared: data.shared }), + headers: { 'Content-Type': 'application/json' }, + }); + + if (req.status == 200) { + setShow(false); + window.location.reload(); + } else { + alert('Erreur lors de la mise à jour de la gare'); + } + } + + return ( + <> + + Gare classique + + + {trains.map((train) => ( + + + handleCard(e)}> + + + {train.DESTINATION} + {train.NUMBER} + + + + + + + + + + ))} + + + + setShow(false)} onSubmit={handleEditSubmit} /> + + ); +} \ No newline at end of file diff --git a/src/app/(general)/creator/gare/classique/new/page.js b/src/app/(general)/creator/gare/classique/new/page.js new file mode 100644 index 0000000..f6a1cc5 --- /dev/null +++ b/src/app/(general)/creator/gare/classique/new/page.js @@ -0,0 +1,204 @@ +'use client' + +import * as React from 'react'; +import { Box, Button, TextField, Typography, Stepper, Step, StepLabel, StepButton, ButtonGroup, Autocomplete, FormControlLabel, FormLabel, RadioGroup, Radio, Checkbox, FormGroup, Snackbar } from '@mui/material'; +import { Check, NavigateBefore, NavigateNext } from '@mui/icons-material'; +import { redirect } from 'next/navigation'; + +export default function NewGareStep1Page() { + + const [name, setName] = React.useState(''); + const [folder, setFolder] = React.useState('default'); + const [texteInfos, setTexteInfos] = React.useState(''); + const [typeInfos, setTypeInfos] = React.useState('infos_normal'); + const [partage, setPartage] = React.useState(false); + const [copie, setCopie] = React.useState(false); + + const [folders, setFolders] = React.useState([]); + + const [activeStep, setActiveStep] = React.useState(0); + const [completed1, setCompleted1] = React.useState(false); + const [completed2, setCompleted2] = React.useState(false); + const [completed3, setCompleted3] = React.useState(false); + const [copieDisabled, setCopieDisabled] = React.useState(true); + + const [snackOpen, setSnackOpen] = React.useState(false); + + const step1 = React.createRef(); + const step2 = React.createRef(); + const step3 = React.createRef(); + + React.useEffect(() => { + async function getFolders() { + const res = await fetch('/api/folders', { + method: 'GET', + headers: { 'Content-Type': 'application/json' }, + }); + + if (res.status === 200) { + const fd = []; + (await res.json()).forEach((f) => { + fd.push({ label: f.FOLDER }); + }); + setFolders(fd); + } else { + alert('Erreur lors de la récupération des dossiers'); + } + } + + getFolders(); + }, []); + + const handleNext = () => { + handleStep(activeStep); + if (activeStep !== 2) { + setActiveStep((prevActiveStep) => prevActiveStep + 1); + } + } + + const handleStep = (step) => { + if (step === 0) { + setCompleted1(name !== '' && folder !== ''); + step1.current.style.display = 'none'; + step2.current.style.display = 'block'; + } + if (step === 1) { + setCompleted2(true); + setCompleted3(true); + step2.current.style.display = 'none'; + step3.current.style.display = 'block'; + } + if (step === 2) { + setCompleted3(true); + handleSubmit(); + } + console.log(activeStep); + } + + const handlePrev = () => { + if (activeStep === 1) { + step1.current.style.display = 'block'; + step2.current.style.display = 'none'; + } + if (activeStep === 2) { + step2.current.style.display = 'block'; + step3.current.style.display = 'none'; + setCompleted3(true); + } + setActiveStep((prevActiveStep) => prevActiveStep - 1); + } + + const handleShare = (e) => { + if (e.target.checked === true) { + setPartage(true); + setCopieDisabled(false); + } else { + setPartage(false); + setCopieDisabled(true); + setCopie(false); + } + } + + const handleSubmit = async () => { + setSnackOpen(false); + console.log('submitting...'); + if (completed1 && completed2 && completed3) { + const res = await fetch('/api/gares', { + method: 'POST', + body: JSON.stringify({ name: name, type: 'Classic', folder: folder, infos: texteInfos, infos_type: typeInfos, shared: partage, copy: copie }), + headers: { 'Content-Type': 'application/json' } + }); + if (res.status === 200) { + const data = await res.json(); + redirect(`/creator/gare/classique/${data.id}`); + } + } else { + setSnackOpen(true); + } + } + + return ( + + Nouvelle gare + + + + + Informations générales + + + + + Écran d'informations + + + + + Partage + + + + + + Informations générales + setName(e.target.value)} + variant="outlined" + margin="normal" + fullWidth + required + /> + } + getOptionLabel={(option) => { if (option.label === 'default') return 'Dossier par défaut'; return option.label; }} + value={{ label: 'default' }} + onChange={(e, value) => setFolder(value)} + /> + + + + + + + + Écran d'informations + setTexteInfos(e.target.value)} + margin="normal" + fullWidth + multiline + rows={4} /> + Type d'informations + setTypeInfos(e.target.value)}> + } label='Informations' /> + } label='Flash circulation' /> + + + + + + + + + + Partage + + } label='Partager cette gare' /> + setCopie(e.target.value)} />} label='Permettre aux autres utilisateurs de copier cette gare' /> + + + + + + + + + + + ); +} \ No newline at end of file diff --git a/src/app/(general)/creator/gare/rer/[id]/page.js b/src/app/(general)/creator/gare/rer/[id]/page.js new file mode 100644 index 0000000..e69de29 diff --git a/src/app/(general)/creator/gare/rer/new/page.js b/src/app/(general)/creator/gare/rer/new/page.js new file mode 100644 index 0000000..e69de29 diff --git a/src/app/(general)/layout.js b/src/app/(general)/layout.js new file mode 100644 index 0000000..456e359 --- /dev/null +++ b/src/app/(general)/layout.js @@ -0,0 +1,37 @@ +import "@/app/globals.css"; +import * as React from "react"; +import { AppRouterCacheProvider } from '@mui/material-nextjs/v15-appRouter'; +import { Container, ThemeProvider } from "@mui/material"; +import Appbar from "../components/appbar"; +import theme from "../theme"; +import { AuthProvider } from "../lib/authContext"; +import { Suspense } from "react"; +import Loading from "./loading"; +import { WebVitals } from "../_components/web-vitals"; + +export const metadata = { + title: "InfoGare", + description: "Generated by create next app", +}; + +export default function RootLayout({ children }) { + return ( + + + + + + + + + }> + {children} + + + + + + + + ); +} diff --git a/src/app/(general)/loading.js b/src/app/(general)/loading.js new file mode 100644 index 0000000..26f6558 --- /dev/null +++ b/src/app/(general)/loading.js @@ -0,0 +1,5 @@ +import { LinearProgress } from "@mui/material"; + +export default function Loading() { + return +} \ No newline at end of file diff --git a/src/app/(general)/login/page.js b/src/app/(general)/login/page.js new file mode 100644 index 0000000..d2a3fc3 --- /dev/null +++ b/src/app/(general)/login/page.js @@ -0,0 +1,40 @@ +'use client' + +import { Box, Button, Typography, TextField } from '@mui/material'; +import * as React from 'react'; + +export default function LoginPage() { + + const [email, setEmail] = React.useState(''); + const [password, setPassword] = React.useState(''); + + const login = async () => { + const res = await fetch('/api/login', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ email, password }), + }); + + if (res.status === 200) { + window.location.href = '/'; + } else if (res.status === 403) { + alert('Compte désactivé'); + } else { + alert('Identifiants incorrects'); + } + } + + return ( + + Connexion + + {setEmail(e.target.value)}} fullWidth />
+ {setPassword(e.target.value)}} fullWidth /> + + + +
+
+ ); + +} \ No newline at end of file diff --git a/src/app/(general)/mail/validate/page.js b/src/app/(general)/mail/validate/page.js new file mode 100644 index 0000000..3866e9c --- /dev/null +++ b/src/app/(general)/mail/validate/page.js @@ -0,0 +1,43 @@ +'use client' +import * as React from 'react'; +import { Box, Typography } from '@mui/material'; +import { Done, ErrorOutline } from '@mui/icons-material'; + +export default function EmailValidate() { + + const [validated, setValidated] = React.useState(false); + const [email, setEmail] = React.useState(''); + + React.useEffect(() => { + const validateEmail = async () => { + const token = window.location.href.split('?token=')[1]; + const response = await fetch(`/api/mail/validate?token=${token}`); + if (response.ok) { + const data = await response.json(); + setValidated(true); + setEmail(data.email); + } else { + setValidated(false); + } + } + validateEmail(); + }, []); + + return ( + <> + + {validated ? <> + Validation de l'email + + Votre email a été validé + Votre email {email} a été validé avec succès + : <> + Validation de l'email + + Erreur lors de la validation de l'email + Une erreur est survenue lors de la validation de votre email. Il peut s'agir de votre jeton qui est expiré ou inexistant. + } + + + ); +} \ No newline at end of file diff --git a/src/app/(general)/page.js b/src/app/(general)/page.js new file mode 100644 index 0000000..4e3b23f --- /dev/null +++ b/src/app/(general)/page.js @@ -0,0 +1,38 @@ +'use client' + +import * as React from 'react'; + +export default function Home() { + const [train, setTrain] = React.useState({ train: { NUMBER: 0, DESTINATION: '' }, user: [{ USERNAME: '' }] }); + + React.useEffect(() => { + const fetchTrain = async () => { + const response = await fetch('/api/tod'); + if (response.ok) { + const data = await response.json(); + if (data.train) { + setTrain(data); + document.querySelector('.train').classList.add('moving'); + } + } + } + fetchTrain(); + fetch('/api/stats', { method: 'POST', body: JSON.stringify({ type: 'VISIT', page: window.location.pathname, element: 'no' }) }); + }, []); + + return ( +
+

InfoGare

+
+
+
+
Train N°{train.train.NUMBER} à destination de {train.train.DESTINATION} ({train.user[0].USERNAME})
+
+
+
+
+
+
+
+ ); +} diff --git a/src/app/(general)/register/page.js b/src/app/(general)/register/page.js new file mode 100644 index 0000000..0285ba0 --- /dev/null +++ b/src/app/(general)/register/page.js @@ -0,0 +1,48 @@ +'use client' + +import * as React from 'react'; +import { Box, Button, TextField, Typography, Stepper, Step, StepLabel, StepButton, ButtonGroup, Autocomplete, FormControlLabel, FormLabel, RadioGroup, Radio, Checkbox, FormGroup } from '@mui/material'; + +export default function RegisterPage() { + + const [name, setName] = React.useState(''); + const [email, setEmail] = React.useState(''); + const [password, setPassword] = React.useState(''); + + const [emailValid, setEmailValid] = React.useState(false); + const [passwordValid, setPasswordValid] = React.useState(false); + const [nameValid, setNameValid] = React.useState(false); + + const register = () => { + const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; + setNameValid(name === ''); + setPasswordValid(password === ''); + setEmailValid(!emailRegex.test(email)); + + if (name === '' || password === '' || !emailRegex.test(email)) { + return; + } + + fetch('/api/register', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ username: name, email: email, password: password }), + }).then((res) => { + if (res.status === 200) { + alert('Inscription réussie'); + } else { + alert('Erreur lors de l\'inscription'); + } + }); + } + + return ( + + Inscription + setName(e.target.value)} error={nameValid} fullWidth /> + setEmail(e.target.value)} error={emailValid} fullWidth /> + setPassword(e.target.value)} error={passwordValid} fullWidth /> + + + ); +} \ No newline at end of file diff --git a/src/app/(general)/verifyEmail/page.js b/src/app/(general)/verifyEmail/page.js new file mode 100644 index 0000000..0813a0e --- /dev/null +++ b/src/app/(general)/verifyEmail/page.js @@ -0,0 +1,31 @@ +'use client' + +import * as React from 'react'; +import { Box, Button, TextField, Typography } from '@mui/material'; + +export default function VerifyEmailPage() { + + const [code, setCode] = React.useState(''); + + const verify = () => { + fetch('/api/verifyEmail', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ code: code }), + }).then((res) => { + if (res.status === 200) { + alert('Email vérifié'); + } else { + alert('Erreur lors de la vérification de l\'email'); + } + }); + } + + return ( + + Vérification de l'email + setCode(e.target.value)} fullWidth /> + + + ); +} \ No newline at end of file diff --git a/src/app/_components/web-vitals.js b/src/app/_components/web-vitals.js new file mode 100644 index 0000000..4431fc3 --- /dev/null +++ b/src/app/_components/web-vitals.js @@ -0,0 +1,15 @@ +'use client' + +import { useReportWebVitals } from 'next/web-vitals'; + +export function WebVitals() { + useReportWebVitals((metric) => { + fetch('/api/stats', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(metric), + }); + }); +} \ No newline at end of file diff --git a/src/app/api/admin/users/disable/route.js b/src/app/api/admin/users/disable/route.js new file mode 100644 index 0000000..c8c6a2a --- /dev/null +++ b/src/app/api/admin/users/disable/route.js @@ -0,0 +1,38 @@ +import { transporter, baseMail } from "@/app/lib/mailer"; +import { NextResponse } from "next/server"; +import { db } from "@/app/lib/db"; + +export async function POST(req) { + const { id, reason } = await req.json(); + + if (!id) { + return NextResponse.json({ message: 'Invalid ID' }, { status: 400 }); + } + + (await db).query('UPDATE users SET ENABLED = ? WHERE USER_ID = ?', ['False', id]); + + const [rows] = await (await db).query('SELECT EMAIL FROM users WHERE USER_ID = ?', [id]); + + console.log(rows); + + const mailOptions = { + from: '"InfoGare" ', + to: rows[0].EMAIL, + replyTo: 'contact@infogare.fr', + subject: 'Désactivation de votre compte InfoGare', + html: baseMail('Désactivation de votre compte InfoGare', ` +

Bonjour,

+

Votre compte InfoGare a été désactivé par un administrateur pour la raison suivante : ${reason}. + Vous pouvez demander la réactivation de votre compte par email

+

L'équipe InfoGare

+ `), + }; + + const res = await transporter.sendMail(mailOptions); + + if (res.accepted.length === 0) { + return NextResponse.json({ message: 'Invalid email' }, { status: 400 }); + } else { + return NextResponse.json({ message: 'OK' }); + } +} \ No newline at end of file diff --git a/src/app/api/admin/users/enable/route.js b/src/app/api/admin/users/enable/route.js new file mode 100644 index 0000000..1f266d8 --- /dev/null +++ b/src/app/api/admin/users/enable/route.js @@ -0,0 +1,37 @@ +import { NextResponse } from "next/server"; +import { db } from "@/app/lib/db"; +import { transporter, baseMail } from "@/app/lib/mailer"; + +export async function POST(req) { + const { id } = await req.json(); + + if (!id) { + return NextResponse.json({ message: 'Invalid ID' }, { status: 400 }); + } + + (await db).query('UPDATE users SET ENABLED = ? WHERE USER_ID = ?', ['True', id]); + + const [rows] = await (await db).query('SELECT EMAIL FROM users WHERE USER_ID = ?', [id]); + + console.log(rows); + + const mailOptions = { + from: '"InfoGare" ', + to: rows[0].EMAIL, + replyTo: 'contact@infogare.fr', + subject: 'Activation de votre compte InfoGare', + html: baseMail('Activation de votre compte InfoGare', ` +

Bonjour,

+

Votre compte InfoGare a été activé par un administrateur.

+

L'équipe InfoGare

+ `), + }; + + const res = await transporter.sendMail(mailOptions); + + if (res.accepted.length === 0) { + return NextResponse.json({ message: 'Invalid email' }, { status: 400 }); + } else { + return NextResponse.json({ message: 'OK' }); + } +} \ No newline at end of file diff --git a/src/app/api/admin/users/route.js b/src/app/api/admin/users/route.js new file mode 100644 index 0000000..ebce3de --- /dev/null +++ b/src/app/api/admin/users/route.js @@ -0,0 +1,29 @@ +import { NextResponse } from "next/server"; +import { db } from "@/app/lib/db"; + +export async function GET(req) { + const length = req.nextUrl.searchParams.get('length'); + const search = req.nextUrl.searchParams.get('search'); + + if (length) { + const [rows] = await (await db).query('SELECT COUNT(USER_ID) FROM users'); + + return NextResponse.json(rows[0]['COUNT(USER_ID)']); + } else if (search) { + const [rows] = await (await db).query('SELECT USER_ID, EMAIL, EMAIL_VALID, USERNAME, CREATION_TIME, LAST_LOGIN, ENABLED FROM users WHERE USERNAME LIKE ? OR EMAIL LIKE ? LIMIT 25', [`%${search}%`, `%${search}%`]); + + return NextResponse.json(rows); + } else { + const [rows] = await (await db).query('SELECT USER_ID, EMAIL, EMAIL_VALID, USERNAME, CREATION_TIME, LAST_LOGIN, ENABLED FROM users LIMIT 25'); + + return NextResponse.json(rows); + } +} + +export async function PUT(req) { + const { id, username, email, email_valid } = await req.json(); + + await (await db).query('UPDATE users SET USERNAME = ?, EMAIL = ?, EMAIL_VALID = ? WHERE USER_ID = ?', [username, email, email_valid, id]); + + return NextResponse.json({ message: 'OK' }); +} \ No newline at end of file diff --git a/src/app/api/auth/user/route.js b/src/app/api/auth/user/route.js new file mode 100644 index 0000000..7d6f81c --- /dev/null +++ b/src/app/api/auth/user/route.js @@ -0,0 +1,22 @@ +import { db } from "@/app/lib/db"; +import { cookies } from "next/headers"; +import { NextResponse } from "next/server"; + +export async function GET(req) { + const sessionId = (await cookies()).get('session')?.value; + + if (!sessionId) { + return NextResponse.json({ isLoggedIn: false }, { status: 401 }); + } + + const [rows] = await (await db).query('SELECT USER_ID FROM sessions WHERE SESSION_ID = ?', [sessionId]); + + if (rows.length === 0) { + return NextResponse.json({ isLoggedIn: false }, { status: 401 }); + } + + const userId = rows[0].USER_ID; + const [user] = await (await db).query('SELECT USERNAME, EMAIL, EMAIL_VALID, RIGHTS FROM users WHERE USER_ID = ?', [userId]); + + return NextResponse.json({ isLoggedIn: true, user: user.length ? user[0] : null }, { status: 200 }); +} \ No newline at end of file diff --git a/src/app/api/folders/route.js b/src/app/api/folders/route.js new file mode 100644 index 0000000..ba7ea4f --- /dev/null +++ b/src/app/api/folders/route.js @@ -0,0 +1,20 @@ +import { NextResponse } from "next/server"; +import { db } from "@/app/lib/db"; +import { getUserFromSession } from "@/app/lib/auth"; + +export async function GET(req) { + const { user } = await getUserFromSession(); + + if (!user) { + return NextResponse.json({ error: 'Vous devez être connecté pour accéder à cette ressource' }, { status: 401 }); + } + + const [rows] = await (await db).query('SELECT DISTINCT FOLDER FROM gares WHERE USER_ID = ?', [user.USER_ID]); + + + if (rows.length === 0) { + return NextResponse.json({ error: 'Il n\'existe aucun dossier ou vous n\'aves pas le droit d\'accéder à cette ressource !' }, { status: 404 }); + } + + return NextResponse.json(rows); +} \ No newline at end of file diff --git a/src/app/api/gares/route.js b/src/app/api/gares/route.js new file mode 100644 index 0000000..04e0f34 --- /dev/null +++ b/src/app/api/gares/route.js @@ -0,0 +1,69 @@ +import { db } from "@/app/lib/db"; +import { NextResponse } from "next/server"; +import { getUserFromSession } from "@/app/lib/auth"; + +export async function GET(req) { + const id = req.nextUrl.searchParams.get('id'); + + const { user } = await getUserFromSession(); + + if (!user) { + return NextResponse.json({ error: 'Vous devez être connecté pour accéder à cette ressource' }, { status: 401 }); + } + + if (!id) { + const [rows] = await (await db).query('SELECT * FROM gares WHERE USER_ID = ? ORDER BY NAME ASC', [user.USER_ID]); + return NextResponse.json(rows); + } + + const [rows] = await (await db).query('SELECT * FROM gares WHERE id = ? AND USER_ID = ?', [id, user.USER_ID]); + + + if (rows.length === 0) { + return NextResponse.json({ error: 'La gare demandée n\'existe pas ou vous n\'avez pas les droits pour y accéder' }, { status: 404 }); + } + + return NextResponse.json(rows[0]); +} + +export async function POST(req) { + const { user } = await getUserFromSession(); + + if (!user) { + return NextResponse.json({ error: 'Vous devez être connecté pour accéder à cette ressource' }, { status: 401 }); + } + + const { name, folder, infos, infos_type, shared, copy } = await req.json(); + + const id = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15); + + const [rows] = await (await db).query('INSERT INTO gares (ID, USER_ID, NAME, FOLDER, INFOS, INFOS_TYPE, SHARED, CAN_COPY) VALUES (?, ?, ?, ?, ?, ?, ?, ?)', [id, user.USER_ID, name, folder, infos, infos_type, shared, copy]); + + return NextResponse.json({ id: id }); +} + +export async function PATCH(req) { + const id = req.nextUrl.searchParams.get('id'); + const { user } = await getUserFromSession(); + + if (!user) { + return NextResponse.json({ error: 'Vous devez être connecté pour accéder à cette ressource' }, { status: 401 }); + } + + const { name, folder, shared, infos_type, infos } = await req.json(); + var query = [] + + if (name) query.push(`NAME = '${name}'`); + if (folder) query.push(`FOLDER = '${folder}'`); + if (shared) query.push(`SHARED = '${shared}'`); + if (infos_type) query.push(`INFOS_TYPE = '${infos_type}'`); + if (infos) query.push(`INFOS = '${infos}'`); + + const [rows] = await (await db).query(`UPDATE gares SET ${query.join(', ')} WHERE ID = ? AND USER_ID = ?`, [id, user.USER_ID]); + + if (rows.affectedRows === 0) { + return NextResponse.json({ error: 'La gare demandée n\'existe pas ou vous n\'avez pas les droits pour y accéder' }, { status: 404 }); + } + + return NextResponse.json({ success: true }); +} \ No newline at end of file diff --git a/src/app/api/login/route.js b/src/app/api/login/route.js new file mode 100644 index 0000000..7253012 --- /dev/null +++ b/src/app/api/login/route.js @@ -0,0 +1,40 @@ +import { db } from "../../lib/db"; +import bcrypt from "bcryptjs"; +import { v4 as uuidv4 } from "uuid"; +import { serialize } from "cookie"; +import { NextResponse } from "next/server"; + +export async function POST(req) { + const { email, password } = await req.json(); + + const [rows] = await (await db).query('SELECT EMAIL, PASSWORD, USER_ID, ENABLED FROM users WHERE email = ?', [email]); + + if (rows.length === 0) { + return NextResponse.json({ message: 'Unauthorized' }, { status: 401 }); + } + + const user = rows[0]; + + if (!await bcrypt.compare(password, user.PASSWORD)) { + return NextResponse.json({ message: 'Bad credentials' }, { status: 406 }); + } + + if (!user.ENABLED) { + return NextResponse.json({ message: 'Account disabled' }, { status: 403 }); + } + + const sessionId = uuidv4(); + await (await db).query('INSERT INTO sessions (SESSION_ID, USER_ID) VALUES (?, ?)', [sessionId, user.USER_ID]); + + await (await db).query('UPDATE users SET LAST_LOGIN = NOW() WHERE USER_ID = ?', [user.USER_ID]); + + const response = NextResponse.json({ message: 'OK' }); + response.headers.set('Set-Cookie', serialize('session', sessionId, { + httpOnly: true, + secure: false, //process.env.NODE_ENV === 'production', + maxAge: 60 * 60 * 24 * 7, + path: '/', + })); + + return response; +} \ No newline at end of file diff --git a/src/app/api/logout/route.js b/src/app/api/logout/route.js new file mode 100644 index 0000000..ed27b12 --- /dev/null +++ b/src/app/api/logout/route.js @@ -0,0 +1,22 @@ +import { NextResponse } from 'next/server'; +import { serialize } from 'cookie'; +import { db } from '@/app/lib/db'; +import { cookies } from 'next/headers'; + +export async function POST() { + const session_id = (await cookies()).get('session'); + const [rows] = await (await db).query('DELETE FROM sessions WHERE SESSION_ID = ?', [session_id.value]); + + if (rows.affectedRows === 0) { + return NextResponse.json({ message: 'No session with the provided ID' }, { status: 500 }); + } + + const response = NextResponse.json({ message: 'OK' }); + response.headers.set('Set-Cookie', serialize('session', '', { + httpOnly: true, + secure: process.env.NODE_ENV === 'production', + maxAge: -1, + path: '/', + })); + return response; +} \ No newline at end of file diff --git a/src/app/api/mail/validate/route.js b/src/app/api/mail/validate/route.js new file mode 100644 index 0000000..bfad79c --- /dev/null +++ b/src/app/api/mail/validate/route.js @@ -0,0 +1,67 @@ +import { baseMail, transporter } from "@/app/lib/mailer"; +import { NextResponse } from "next/server"; +import { db } from "@/app/lib/db"; + +export async function POST(req) { + const { email } = await req.json(); + + if (!email) { + return NextResponse.json({ message: 'Invalid email' }, { status: 400 }); + } + + const validate_token = Math.random().toString(36).substr(2, 10); + + await (await db).query('UPDATE users SET VALIDATE_TOKEN = ? WHERE EMAIL = ?', [validate_token, email]); + + const mailOptions = { + from: '"InfoGare" ', + to: email, + replyTo: 'contact@infogare.fr', + subject: 'Validation de votre email', + html: baseMail('Validation de votre email', ` +

Bonjour,

+

+ Merci de nous avoir rejoints ! Nous sommes ravis de vous compter parmi + nous. Cliquez sur le bouton ci-dessous pour confirmer votre email et + commencer à utiliser InfoGare. +

+
+

+ Si vous avez des questions, n'hésitez pas à nous contacter à + contact@infogare.fr. +

+

Merci,

+

L'équipe InfoGare

+ `) + }; + + const res = await transporter.sendMail(mailOptions); + + if (res.accepted.length === 0) { + return NextResponse.json({ message: 'Invalid email' }, { status: 400 }); + } else { + return NextResponse.json({ message: 'OK' }); + } +} + +export async function GET(req) { + const token = req.nextUrl.searchParams.get('token'); + + if (!token) { + return NextResponse.json({ message: 'Invalid token' }, { status: 400 }); + } + + const [rows] = await (await db).query('SELECT EMAIL FROM users WHERE VALIDATE_TOKEN = ?', [token]); + + if (rows.length === 0) { + return NextResponse.json({ message: 'Invalid token' }, { status: 400 }); + } + + await (await db).query('UPDATE users SET EMAIL_VALID = 1, VALIDATE_TOKEN = NULL WHERE VALIDATE_TOKEN = ?', [token]); + + return NextResponse.json({ email: rows[0].EMAIL }); +} \ No newline at end of file diff --git a/src/app/api/register/route.js b/src/app/api/register/route.js new file mode 100644 index 0000000..519b005 --- /dev/null +++ b/src/app/api/register/route.js @@ -0,0 +1,22 @@ +import { db } from "../../lib/db"; +import bcrypt from "bcrypt"; +import { NextResponse } from "next/server"; +import { v4 as uuidv4 } from "uuid"; + +export async function POST(req) { + + const { email, password, username } = await req.json(); + const userId = uuidv4(); + + const [rows] = await (await db).query('SELECT * FROM users WHERE EMAIL = ? OR USERNAME = ? OR USER_ID = ?', [email, username, userId]); + + if (rows.length !== 0) { + return NextResponse.json({ message: 'User already exists' }, { status: 409 }); + } + + + const hash = await bcrypt.hash(password, 10); + await (await db).query('INSERT INTO users (USER_ID, EMAIL, PASSWORD, USERNAME) VALUES (?, ?, ?, ?)', [userId, email, hash, username]); + + return NextResponse.json({ message: 'OK' }); +} \ No newline at end of file diff --git a/src/app/api/socket/route.js b/src/app/api/socket/route.js new file mode 100644 index 0000000..9da22fc --- /dev/null +++ b/src/app/api/socket/route.js @@ -0,0 +1,52 @@ +import { Server } from "socket.io"; +import { NextResponse } from "next/server"; + +let io; + +export async function POST(req) { + if (!res.socket.server) { + console.log('Init socket server'); + io = new Server(req.socket.server, { + cors: { + origin: '*', + methods: ['GET', 'POST'], + }, + }); + + io.on('connection', (socket) => { + console.log('Client connected'); + + socket.on('disconnect', () => { + console.log('Client disconnected'); + }); + }); + + res.socket.server = io; + } + + return NextResponse.json({ message: 'Socket server initialized' }, { status: 200 }); +} + +export async function GET(req) { + if (!res.socket.server) { + console.log('Init socket server'); + io = new Server(req.socket.server, { + cors: { + origin: '*', + methods: ['GET', 'POST'], + }, + }); + + io.on('connection', (socket) => { + console.log('Client connected'); + + socket.on('disconnect', () => { + console.log('Client disconnected'); + }); + }); + + res.socket.server = io; + } + + return NextResponse.json({ message: 'Socket server initialized' }, { status: 200 }); +} \ No newline at end of file diff --git a/src/app/api/stats/route.js b/src/app/api/stats/route.js new file mode 100644 index 0000000..f7c7776 --- /dev/null +++ b/src/app/api/stats/route.js @@ -0,0 +1,21 @@ +import { getUserFromSession } from "@/app/lib/auth"; +import { db } from "@/app/lib/db"; +import { NextResponse } from "next/server"; + +export async function POST(req) { + const { delta, entries, id, name, navigationType, rating, value } = await req.json(); + const { user } = await getUserFromSession(); + + if (!user) { + user = { USER_ID: null }; + } + + const headers = (await req).headers; + + const [rows] = await (await db).query( + "INSERT INTO statistics (DELTA, ENTRIES, EVENT_ID, NAME, NAVIGATION_TYPE, RATING, VALUE, USER, PAGE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", + [delta, JSON.stringify(entries), id, name, navigationType, rating, value, user.USER_ID, headers.get("referer")], + ); + + return NextResponse.json({ success: true }); +} \ No newline at end of file diff --git a/src/app/api/tod/route.js b/src/app/api/tod/route.js new file mode 100644 index 0000000..64093bb --- /dev/null +++ b/src/app/api/tod/route.js @@ -0,0 +1,21 @@ +import { NextResponse } from "next/server"; +import { db } from "@/app/lib/db"; + +export async function GET(req) { + const [rows] = await (await db).query("SELECT ID, USER_ID FROM gares WHERE SHARED = 1"); + + if (rows.length === 0) { + return NextResponse.json({ train: {}, user: {} }, { status: 404 }); + } + + // Select a random row + const randomRow = rows[Math.floor(Math.random() * rows.length)]; + const [rows1] = await (await db).query("SELECT DESTINATION, NUMBER FROM trains WHERE GARE_ID = ?", [randomRow.ID]); + + // Select a random row + const randomRow1 = rows1[Math.floor(Math.random() * rows1.length)]; + + const [rows2] = await (await db).query("SELECT USERNAME FROM users WHERE USER_ID = ?", [randomRow.USER_ID]); + + return NextResponse.json({ train: randomRow1, user: rows2 }); +} \ No newline at end of file diff --git a/src/app/api/trains/route.js b/src/app/api/trains/route.js new file mode 100644 index 0000000..27ae375 --- /dev/null +++ b/src/app/api/trains/route.js @@ -0,0 +1,27 @@ +import { db } from "@/app/lib/db"; +import { notifyClients } from "@/app/lib/socket_server"; +import { NextResponse } from "next/server"; + +export async function GET(req) { + const id = req.nextUrl.searchParams.get('gare_id'); + + if (!id) { + return NextResponse.json({ error: 'Missing id' }, { status: 400 }); + } + + const [rows] = await (await db).query("SELECT * FROM trains WHERE GARE_ID = ?", [id]); + const [rows2] = await (await db).query("SELECT ID FROM gares WHERE ID = ?", [id]); + + if (rows.length === 0 && rows2.length === 0) { + return NextResponse.json({ error: 'Not found' }, { status: 404 }); + } else if (rows.length === 0 && rows2.length !== 0) { + return NextResponse.json({ error: 'No trains found for this station' }, { status: 410 }); + } + + return NextResponse.json(rows); +} + +export async function POST(req) { + notifyClients('db-update', req.body); + return NextResponse.json({ message: 'OK'}, { status: 200 }) +} \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/Thumbs.db b/src/app/assets/logos-monochrome/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..69f8e8e965e1ce50422f9e0304797cc5c41983c4 GIT binary patch literal 69632 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 D&J`2~ literal 0 HcmV?d00001 diff --git a/src/app/assets/logos-monochrome/logo-aleop.svg b/src/app/assets/logos-monochrome/logo-aleop.svg new file mode 100644 index 0000000..5f5165b --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-aleop.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-auvergerhonealpes.svg b/src/app/assets/logos-monochrome/logo-auvergerhonealpes.svg new file mode 100644 index 0000000..eb0f7a9 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-auvergerhonealpes.svg @@ -0,0 +1,88 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-breizhgo.svg b/src/app/assets/logos-monochrome/logo-breizhgo.svg new file mode 100644 index 0000000..66374ce --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-breizhgo.svg @@ -0,0 +1,108 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-cfl.svg b/src/app/assets/logos-monochrome/logo-cfl.svg new file mode 100644 index 0000000..bbe7eeb --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-cfl.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-db.svg b/src/app/assets/logos-monochrome/logo-db.svg new file mode 100644 index 0000000..e0097ae --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-db.svg @@ -0,0 +1,5 @@ + + + + diff --git a/src/app/assets/logos-monochrome/logo-eurostar.svg b/src/app/assets/logos-monochrome/logo-eurostar.svg new file mode 100644 index 0000000..d8bcd0e --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-eurostar.svg @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-fluo.svg b/src/app/assets/logos-monochrome/logo-fluo.svg new file mode 100644 index 0000000..ca4808e --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-fluo.svg @@ -0,0 +1,40 @@ + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-frecciarossa.svg b/src/app/assets/logos-monochrome/logo-frecciarossa.svg new file mode 100644 index 0000000..a6d51a2 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-frecciarossa.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-hautsdefrance.svg b/src/app/assets/logos-monochrome/logo-hautsdefrance.svg new file mode 100644 index 0000000..7920781 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-hautsdefrance.svg @@ -0,0 +1,221 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-ice.svg b/src/app/assets/logos-monochrome/logo-ice.svg new file mode 100644 index 0000000..04edf83 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-ice.svg @@ -0,0 +1 @@ +ice \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-inoui.svg b/src/app/assets/logos-monochrome/logo-inoui.svg new file mode 100644 index 0000000..2e7aff3 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-inoui.svg @@ -0,0 +1 @@ +inoui \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-intercites.svg b/src/app/assets/logos-monochrome/logo-intercites.svg new file mode 100644 index 0000000..4ca3e44 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-intercites.svg @@ -0,0 +1,107 @@ + + + +image/svg+xml + + + \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-ler.svg b/src/app/assets/logos-monochrome/logo-ler.svg new file mode 100644 index 0000000..654c54d --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-ler.svg @@ -0,0 +1,214 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-lio.svg b/src/app/assets/logos-monochrome/logo-lio.svg new file mode 100644 index 0000000..6d98c14 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-lio.svg @@ -0,0 +1,43 @@ + \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-lunea.svg b/src/app/assets/logos-monochrome/logo-lunea.svg new file mode 100644 index 0000000..269d090 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-lunea.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-lyria.svg b/src/app/assets/logos-monochrome/logo-lyria.svg new file mode 100644 index 0000000..6cab5c2 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-lyria.svg @@ -0,0 +1 @@ +lyria \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-metrolor.svg b/src/app/assets/logos-monochrome/logo-metrolor.svg new file mode 100644 index 0000000..167f70d --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-metrolor.svg @@ -0,0 +1,338 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-mobigo.svg b/src/app/assets/logos-monochrome/logo-mobigo.svg new file mode 100644 index 0000000..378c87b --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-mobigo.svg @@ -0,0 +1,332 @@ + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-nomad.svg b/src/app/assets/logos-monochrome/logo-nomad.svg new file mode 100644 index 0000000..7bcfed0 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-nomad.svg @@ -0,0 +1,13 @@ + + + + + Logo Nomad Normandie 2020Plan de travail 8 + + + + + + + + \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-occitanie.svg b/src/app/assets/logos-monochrome/logo-occitanie.svg new file mode 100644 index 0000000..8e16d69 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-occitanie.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-ouigo-classique.svg b/src/app/assets/logos-monochrome/logo-ouigo-classique.svg new file mode 100644 index 0000000..d71246d --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-ouigo-classique.svg @@ -0,0 +1,578 @@ + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-ouigo.svg b/src/app/assets/logos-monochrome/logo-ouigo.svg new file mode 100644 index 0000000..1df8e54 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-ouigo.svg @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-remi.svg b/src/app/assets/logos-monochrome/logo-remi.svg new file mode 100644 index 0000000..5ce6f2e --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-remi.svg @@ -0,0 +1,381 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-renfeave.svg b/src/app/assets/logos-monochrome/logo-renfeave.svg new file mode 100644 index 0000000..c2ad14b --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-renfeave.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-rer-a.svg b/src/app/assets/logos-monochrome/logo-rer-a.svg new file mode 100644 index 0000000..88c53a9 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-rer-a.svg @@ -0,0 +1,111 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-rer-b.svg b/src/app/assets/logos-monochrome/logo-rer-b.svg new file mode 100644 index 0000000..a436c13 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-rer-b.svg @@ -0,0 +1,119 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-rer-c.svg b/src/app/assets/logos-monochrome/logo-rer-c.svg new file mode 100644 index 0000000..b193af0 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-rer-c.svg @@ -0,0 +1,116 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-rer-d.svg b/src/app/assets/logos-monochrome/logo-rer-d.svg new file mode 100644 index 0000000..87cc429 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-rer-d.svg @@ -0,0 +1,113 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-rer-e.svg b/src/app/assets/logos-monochrome/logo-rer-e.svg new file mode 100644 index 0000000..104ca17 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-rer-e.svg @@ -0,0 +1,198 @@ + + + +image/svg+xml + + .st0{display:none;} + .st1{display:inline;fill:none;} + .st2{display:inline;fill:#050D9E;} + .st3{fill:#FFFFFF;} + .st4{fill:none;} + .st5{fill:#5E9620;} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-sbb.svg b/src/app/assets/logos-monochrome/logo-sbb.svg new file mode 100644 index 0000000..290a9a2 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-sbb.svg @@ -0,0 +1,5 @@ + + +SBB CFF FFS logo notext + + diff --git a/src/app/assets/logos-monochrome/logo-sncb.svg b/src/app/assets/logos-monochrome/logo-sncb.svg new file mode 100644 index 0000000..b0b4ef8 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-sncb.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-sncf.svg b/src/app/assets/logos-monochrome/logo-sncf.svg new file mode 100644 index 0000000..1ff9399 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-sncf.svg @@ -0,0 +1,99 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-sncf1985.svg b/src/app/assets/logos-monochrome/logo-sncf1985.svg new file mode 100644 index 0000000..8148792 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-sncf1985.svg @@ -0,0 +1,63 @@ + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-sncf1992.svg b/src/app/assets/logos-monochrome/logo-sncf1992.svg new file mode 100644 index 0000000..30bf7d8 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-sncf1992.svg @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-t-h.svg b/src/app/assets/logos-monochrome/logo-t-h.svg new file mode 100644 index 0000000..d9a48bc --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-t-h.svg @@ -0,0 +1,116 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-t-j.svg b/src/app/assets/logos-monochrome/logo-t-j.svg new file mode 100644 index 0000000..22264bc --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-t-j.svg @@ -0,0 +1,123 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-t-k.svg b/src/app/assets/logos-monochrome/logo-t-k.svg new file mode 100644 index 0000000..ecb584b --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-t-k.svg @@ -0,0 +1,125 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-t-l.svg b/src/app/assets/logos-monochrome/logo-t-l.svg new file mode 100644 index 0000000..25b1040 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-t-l.svg @@ -0,0 +1,124 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-t-n.svg b/src/app/assets/logos-monochrome/logo-t-n.svg new file mode 100644 index 0000000..429d848 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-t-n.svg @@ -0,0 +1,138 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-t-p.svg b/src/app/assets/logos-monochrome/logo-t-p.svg new file mode 100644 index 0000000..7352116 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-t-p.svg @@ -0,0 +1,134 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-t-r.svg b/src/app/assets/logos-monochrome/logo-t-r.svg new file mode 100644 index 0000000..8b3a779 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-t-r.svg @@ -0,0 +1,138 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-t-u.svg b/src/app/assets/logos-monochrome/logo-t-u.svg new file mode 100644 index 0000000..ea80349 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-t-u.svg @@ -0,0 +1,133 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-teoz.svg b/src/app/assets/logos-monochrome/logo-teoz.svg new file mode 100644 index 0000000..dfa76cc --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-teoz.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-ter-rhone-alpes.svg b/src/app/assets/logos-monochrome/logo-ter-rhone-alpes.svg new file mode 100644 index 0000000..73114e9 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-ter-rhone-alpes.svg @@ -0,0 +1,401 @@ + + + + diff --git a/src/app/assets/logos-monochrome/logo-ter.svg b/src/app/assets/logos-monochrome/logo-ter.svg new file mode 100644 index 0000000..7218a81 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-ter.svg @@ -0,0 +1 @@ +ter \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-teralsace.svg b/src/app/assets/logos-monochrome/logo-teralsace.svg new file mode 100644 index 0000000..d3792b4 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-teralsace.svg @@ -0,0 +1,146 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-teraquitaine.svg b/src/app/assets/logos-monochrome/logo-teraquitaine.svg new file mode 100644 index 0000000..17fb86d --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-teraquitaine.svg @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-terbassenormandie.svg b/src/app/assets/logos-monochrome/logo-terbassenormandie.svg new file mode 100644 index 0000000..ee82ffd --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-terbassenormandie.svg @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-terbourgogne.svg b/src/app/assets/logos-monochrome/logo-terbourgogne.svg new file mode 100644 index 0000000..983d201 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-terbourgogne.svg @@ -0,0 +1,120 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-terbretagne.svg b/src/app/assets/logos-monochrome/logo-terbretagne.svg new file mode 100644 index 0000000..47a3c07 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-terbretagne.svg @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-tercentre.svg b/src/app/assets/logos-monochrome/logo-tercentre.svg new file mode 100644 index 0000000..03d9542 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-tercentre.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-terlanguedocroussillon.svg b/src/app/assets/logos-monochrome/logo-terlanguedocroussillon.svg new file mode 100644 index 0000000..8453520 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-terlanguedocroussillon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-termidipyrenees.svg b/src/app/assets/logos-monochrome/logo-termidipyrenees.svg new file mode 100644 index 0000000..fee1a9b --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-termidipyrenees.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-ternordpasdecalais.svg b/src/app/assets/logos-monochrome/logo-ternordpasdecalais.svg new file mode 100644 index 0000000..c6aaa8f --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-ternordpasdecalais.svg @@ -0,0 +1,293 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-terpoitoucharentes.svg b/src/app/assets/logos-monochrome/logo-terpoitoucharentes.svg new file mode 100644 index 0000000..33c1838 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-terpoitoucharentes.svg @@ -0,0 +1,367 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-tgv.svg b/src/app/assets/logos-monochrome/logo-tgv.svg new file mode 100644 index 0000000..657ba99 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-tgv.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-thalys.svg b/src/app/assets/logos-monochrome/logo-thalys.svg new file mode 100644 index 0000000..41a6abc --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-thalys.svg @@ -0,0 +1,94 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-thello.svg b/src/app/assets/logos-monochrome/logo-thello.svg new file mode 100644 index 0000000..6a6513e --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-thello.svg @@ -0,0 +1,678 @@ + + + +image/svg+xml \ No newline at end of file diff --git a/src/app/assets/logos-monochrome/logo-tramtrain.svg b/src/app/assets/logos-monochrome/logo-tramtrain.svg new file mode 100644 index 0000000..4e66679 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-tramtrain.svg @@ -0,0 +1,112 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-trenitalia.svg b/src/app/assets/logos-monochrome/logo-trenitalia.svg new file mode 100644 index 0000000..4924915 --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-trenitalia.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/logo-zou.svg b/src/app/assets/logos-monochrome/logo-zou.svg new file mode 100644 index 0000000..2936f2f --- /dev/null +++ b/src/app/assets/logos-monochrome/logo-zou.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/app/assets/logos-monochrome/track-car.svg b/src/app/assets/logos-monochrome/track-car.svg new file mode 100644 index 0000000..a7f0b0e --- /dev/null +++ b/src/app/assets/logos-monochrome/track-car.svg @@ -0,0 +1,25 @@ + + + + + + + + + + diff --git a/src/app/assets/row-background-arrivals.svg b/src/app/assets/row-background-arrivals.svg new file mode 100644 index 0000000..32367fa --- /dev/null +++ b/src/app/assets/row-background-arrivals.svg @@ -0,0 +1,140 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/assets/row-background-departures.svg b/src/app/assets/row-background-departures.svg new file mode 100644 index 0000000..a7b4128 --- /dev/null +++ b/src/app/assets/row-background-departures.svg @@ -0,0 +1,136 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/assets/train_court.png b/src/app/assets/train_court.png new file mode 100644 index 0000000000000000000000000000000000000000..598e681c6ad77993778df43606e6fe22253054b2 GIT binary patch literal 7150 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 AL;wH) literal 0 HcmV?d00001 diff --git a/src/app/components/appbar.js b/src/app/components/appbar.js new file mode 100644 index 0000000..6b3247a --- /dev/null +++ b/src/app/components/appbar.js @@ -0,0 +1,78 @@ +'use client' +import * as React from 'react'; +import Image from 'next/image'; +import Link from 'next/link'; + +import { Avatar, IconButton, Menu, MenuItem, Typography, Toolbar, Box, AppBar } from '@mui/material'; +import LogoutDialog from './logoutdialog'; +import { Login } from '@mui/icons-material'; + + +function ResponsiveAppBar() { + + const [anchorEl, setAnchorEl] = React.useState(null); + const [logoutOpen, setLogoutOpen] = React.useState(false); + const [user, setUser] = React.useState({ isLoggedIn: false }); + + React.useEffect(() => { + const getUser = async () => { + const res = await fetch('/api/auth/user', { + method: 'GET', + headers: { 'Content-Type': 'application/json' }, + }); + + if (res.status === 200) { + const user = await res.json(); + setUser({ isLoggedIn: true, username: user.user.USERNAME, email: user.user.EMAIL, rights: user.user.RIGHTS }); + } else { + setUser({ isLoggedIn: false }); + } + } + + getUser(); + }, []); + + const handleOpenUserMenu = (event) => { + setAnchorEl(event.currentTarget); + } + + const handleCloseUserMenu = () => { + setAnchorEl(null); + } + + const setLogoutOpenState = (open) => () => { + setLogoutOpen(open); + } + + return ( + + + + + Logo + + + InfoGare + + {user.isLoggedIn ? <> + + {user.username.substring(0, 1)} + + + {user.username} + InfoGare Creator + {user.rights.includes('admin') ? Administration : null} + Se déconnecter + + : <> + + + + } + + + { setLogoutOpen(false) }} /> + + ); +} +export default ResponsiveAppBar; \ No newline at end of file diff --git a/src/app/components/logoutdialog.js b/src/app/components/logoutdialog.js new file mode 100644 index 0000000..ef570fe --- /dev/null +++ b/src/app/components/logoutdialog.js @@ -0,0 +1,33 @@ +'use client' +import * as React from 'react'; +import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material'; +import { redirect } from 'next/navigation'; + +export default function LogoutDialog({ open, handleClose }) { + + const handleLogout = () => { + fetch('/api/logout', { method: 'POST' }) + .then(response => { + if (response.status === 200) { + redirect('/'); + } else { + console.error('Failed to logout'); + } + }); + } + + return ( + + Se déconnecter + + + Êtes-vous sûr de vouloir vous déconnecter ? + + + + + + + + ); +} \ No newline at end of file diff --git a/src/app/fonts/Achemine/achemin_italic.eot b/src/app/fonts/Achemine/achemin_italic.eot new file mode 100644 index 0000000000000000000000000000000000000000..675ab56458e9fb2ced9d89a4e3663e003ecff468 GIT binary patch literal 13322 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 S@35QaClb%I8vjdj#s2|2c7hZD literal 0 HcmV?d00001 diff --git a/src/app/fonts/Achemine/achemin_italic.svg b/src/app/fonts/Achemine/achemin_italic.svg new file mode 100644 index 0000000..8a713c3 --- /dev/null +++ b/src/app/fonts/Achemine/achemin_italic.svg @@ -0,0 +1,566 @@ + + + + +Created by FontForge 20090622 at Wed Mar 22 13:48:55 2017 + By deploy user +(c) SNCF, 2007. Auteur Bruno Bernard. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/fonts/Achemine/achemin_italic.ttf b/src/app/fonts/Achemine/achemin_italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0e231b5d9420266ba3525cfdfe619f27b19417b7 GIT binary patch literal 13124 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 literal 0 HcmV?d00001 diff --git a/src/app/fonts/Achemine/achemin_italic.woff b/src/app/fonts/Achemine/achemin_italic.woff new file mode 100644 index 0000000000000000000000000000000000000000..2bd9a8dc44a3a005f915b5d5cf6d4f0fe96bd51c GIT binary patch literal 8632 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 au6)=2*G&_ZZU1L`jk$XNvk(i_(EkG$5u>XB literal 0 HcmV?d00001 diff --git a/src/app/fonts/Achemine/achemine_bold.eot b/src/app/fonts/Achemine/achemine_bold.eot new file mode 100644 index 0000000000000000000000000000000000000000..2f6017ef4d2709654f278a8ae4eb5e91348bbd2c GIT binary patch literal 15010 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 LEXUtMe*S+0kda + + + +Created by FontForge 20090622 at Fri Aug 28 01:46:46 2015 + By deploy user + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/fonts/Achemine/achemine_bold.ttf b/src/app/fonts/Achemine/achemine_bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..543c81a686cc16b44114dd2543e1f8e1ef40c6d9 GIT binary patch literal 14836 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 M`v2oO7`v?h0}Wa=v;Y7A literal 0 HcmV?d00001 diff --git a/src/app/fonts/Achemine/achemine_extrabold.eot b/src/app/fonts/Achemine/achemine_extrabold.eot new file mode 100644 index 0000000000000000000000000000000000000000..77228758efca5692edcd54e4605af8190d200c27 GIT binary patch literal 15998 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 + + + +Created by FontForge 20161013 at Tue Dec 20 21:35:14 2016 + By ,,, +(c) SNCF, 2007. Auteur Bruno Bernard. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/app/fonts/Achemine/achemine_extrabold.ttf b/src/app/fonts/Achemine/achemine_extrabold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..0477fe30cd64aad86785cfe0cd55dedf209bc6f4 GIT binary patch literal 15808 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

Rw3vE-jewJ5(1_U4~%$SeJY-*yW`f` zb)#1_Wu15uUE;g*URaH<%W&htk^9*+^+lQi~D`k5peqbRB}@~R%H@H zJ*y1*A6)Cm)yXN-=;^o*$?{*;ll$3cZQIR*=2{X$w1mQb=b`yiNRK91Vx=wX#NA5& zdiKFJ4%sb863jt6zWF3{oal&ir`@3hEF6{}ULw*2Br|s8f~}w<5&qW+HnW^G37kh}-TvUOq2o zh438u7qQt&vaP;>9-~w)NtPdeOXjrd*CycJ9uAqg-&~^KN}IMhk%s4{~kEMHdlyG%Xz+$ri}% zZ4x73f~NiLGpYTsa3t?2doGS&9Po*GA|~}WCQ4a9BA1;5!}BdVG;1hPKF(yInbBh^ z^?KGGazAXd{gT4a%ZECv=n{#G#jmclI$bfF%tRbK;OMhIrcn1LCi5A@Wj=wpkQuUo zfgGouB8Q4zl1rmC5c!W_Y*H~%_eN`&V>*}0#IDn#GVwE!l$G;xqm`5z#h=i9#h zz+q1eWHUZY*x%Ar_2c*H`oo z3Ua0KRt{LfOafXo0v;kh$<8?enm6M|3`nzdGIQhk(s3(TvoZ7n&`H&uos*(hCMT8a>#R7)Cn}BdSY^@)QtXSx_+_2CqK;Yx?G{xWNWz< z?cxuaAD#k?HjPazt++?Bn}9pbvN=R4;@~9@|JU+QO*rx{szCRKs73Y36_X_`b)pw3RS%FHYD_9MG@v zB)@ToCHM2HS=Z;n;i}?{u{hwnj+T;alW8s$F3=OrvL3)$)^mlLMtpwc{7@~O?I=QW z8J}JQt0VkKbAta}fy4I;{GT-RfIopM(p?S7zBP20cOur$dfjXIDXRLLfI%Oeb2Nsu z<^CMT){7rQkRq|S&xN8}`!4A@>Ui7xEF5Z3i9eC7@F~vgP&IX`5~dS0{hG)#=-P_~ zop^QEjU`Ye%k;9>&o!CWWf=i+k77IcIgfm94&T5wP$|le8bVdMeh;_oW=WKbaU8jr zsz3*YJ*tzLlc2ae{Zu0wgxsc7L)wShfK^iQ9N1r}v)p(12iqwN>iiT;B{Nk)b{17g z3FYM;da1Wa8tZJoQY)%P)91RZ#TiYkuj_Gx=|Ljk_w5-mwU_9#YVYue9p}m2Mb+L>sI|^ z@^fITD%ha7c40J^jQd;>&C(YdtD4^YWzjNwI{~#+(#wCde&Rd7-}+vFo$8!0SZQUY zZ}5p)#`Fe*62^*V3->fGEh%ZMDXty=2Dd& zxQ5Vy+kT`)yI#gSZ#-Z@too+k3puE#svYwzzvhhfYYaKZf`(xToWu^|XE3d(19U6} zN`X-dn}^06Dv>E3p^*q9{NwkU)P{a3#eDORM}JA9UHP2B3w)dtrq#I&27@FWo=Hwb zK0Evk%#0TOPNVRu$~g25x2k(S+5>6Zf9r^yX+z6+x)sweU!0sYwbc8CqcTj}U~D*} zKeFOSJs28+@+zxh`lKKoZ`3`!T5KT?a_$@UtMISPj!wSe9nE2($tG8@aaroyeXKO(^*+DF zqvEIcyy7e8R~SyIK+bPsoN|4fq7Cdc5K$B+uIQCF`?PM-})pCiZI zhLU6bnW(7+@4|xl@)@2{(}g_ViC^*D1?CdVQRRfr+S^TAa$6|&#rCH5d-iJMDE7k9 z&lVuXZJ&?#v#mJ;ua)MepSng1)W4O4DPT@U9^g#V<|}_Ip~=u3=wS2F8#tHA8T2f7 z(-p6YxnHpFdOr!pDv+F46sSwqRIhHIFFAZbD-+v`ms-wZgfS-aq8ob-S!@B{-epe zBMv6DY#M}>C~ENZfyq59`Zl$9%2uOIyDJVhZOuB`E>!_mxLV<2c2Xp4p`biF8WK8$ z(KB_sE>Xi}abzYfDF*74pB)=VaO%vh9zFBO)w*`K0TuW<|4))i^o7Frl=@fZ2SC05 zUjY3-b@&Y^LsocRc&hgzq=W=6*)TMY0komS2Y3K765ze&|DP&9VD3vg)xUxNx3>RZ DOaV+V literal 0 HcmV?d00001 diff --git a/src/app/fonts/Achemine/achemine_normal.eot b/src/app/fonts/Achemine/achemine_normal.eot new file mode 100644 index 0000000000000000000000000000000000000000..63f02d034980cea48421faa4be79b924b4909620 GIT binary patch literal 14900 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 + + + +Created by FontForge 20090622 at Fri Aug 28 01:45:28 2015 + By deploy user + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/fonts/Achemine/achemine_normal.ttf b/src/app/fonts/Achemine/achemine_normal.ttf new file mode 100644 index 0000000000000000000000000000000000000000..351d7dc6e395fc8f9bc68f0bc4451ab29712b56e GIT binary patch literal 14716 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 literal 0 HcmV?d00001 diff --git a/src/app/fonts/Achemine/style.css b/src/app/fonts/Achemine/style.css new file mode 100644 index 0000000..3a229fa --- /dev/null +++ b/src/app/fonts/Achemine/style.css @@ -0,0 +1,40 @@ +@font-face { + font-family: "Achemine"; + src: url("achemine_normal.eot#iefix") format("embedded-opentype"), + url("achemine_normal.woff") format("woff"), + url("achemine_normal.ttf") format("truetype"), + url("achemine_normal.svg") format("svg"); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: "Achemine"; + src: url("achemine_bold.eot#iefix") format("embedded-opentype"), + url("achemine_bold.woff") format("woff"), + url("achemine_bold.ttf") format("truetype"), + url("achemine_bold.svg") format("svg"); + font-weight: bold; + font-style: normal; +} + +@font-face { + font-family: "Achemine"; + src: url("achemine_extrabold.eot#iefix") format("embedded-opentype"), + url("achemine_extrabold.woff") format("woff"), + url("achemine_extrabold.ttf") format("truetype"), + url("achemine_extrabold.svg") format("svg"); + font-weight: 800; + font-style: normal; +} + + +@font-face { + font-family: "Achemine"; + src: url("achemin_italic.eot#iefix") format("embedded-opentype"), + url("achemin_italic.woff") format("woff"), + url("achemin_italic.ttf") format("truetype"), + url("achemin_italic.svg#Achemine-Italic") format("svg"); + font-weight: normal; + font-style: italic; +} \ No newline at end of file diff --git a/src/app/fonts/Avenir/Metropolis-Bold.otf b/src/app/fonts/Avenir/Metropolis-Bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..a42b9410fc295d09056573a49358cc9851b28602 GIT binary patch literal 23664 zcmdVCcR&=$);C-|Gu?yLIx6F!f;|HUf;r~^Dh3Rgb0P^yQlc5tx~_WHuzhP77`OQ^7Nv^PKX+huxSxtL80`dyby6W;2K6CKzd=ChPZ6_ zD@Vj6jz0Xl<~Blv;)IwoVuD7G6smVa6uAH=#RkQMRk+LT0DTePY-C(QV!;ej2JO|- zxD(Qi2-N{;ZG!vp%I48SOE&*RjK)_8A=f`VH-32+_z9v8vq z0Y3xW%HTnYqa7V}*B1USE|Rz!L(mrKzqsne$M`=uQz^7#0ontnr8R5-{IwfH${N0Q zsl?sz#r;9r82%@RaW*w1W&YC{P7`OtUSj&c+(J^z@U`yG&U=DK|qUIYu{h^yf{@Ez)54y+{(Jv^6`5^{-R zFd@7Q9MU1rD?_(}&lndExJtrg(jKmwkV@*oRWe2cCz_!R+S`ZJhii;{_4T}E3DI## z!~3j)_lECDO&w1MlI8}@)ggZRTZ6lk_Hd1a6Qq{WpHwlOAXSVb(T9zsf>4cw2(L&r zLJE9@B;d>uxN~qFi{20Mmf;X*7>4(4xOQ;CaM>sW-x)uh#u?oT>VX!XDDWu=GOg4p zpGL}x{!o+AFvyTiMB-$aY3PUGPK9q_2q_~p)RKWbfB7?i0kn7TPJO$Arn*;jF08}o zMlQM&0_u-Z5DnY$a@Q%Ri(vV?-iinX<<*~*R4jrG#6+qW!A9arY8SyKQj!D|!6Io+ z`WL|x!WS07PNY0pR|FR$CCH&7SVlSLis0fH%jcluf(dIEX)Ba0f(7)kXAx{5PC|GQ zY{d7BD}qhLF03trMKW4AS_DhPZfH^jJCVAEzC~~`eeM_5B?CXcSo;NCMbW@JKKY|SoViScnGVMMFU-)br+e+%g<^K95w#V^WS3K|Bmg0+Tu||q+YxGztzwUZFARa`?}r;q)a3s zdirF<7sk~jjqz)So&=F7l&Pf|j@D}J4@UoMk_K=MNqy1?zXtz9oBJSF2ug@U+qCft z#K?r|BOZn}e<`)5-me(_%V~KM zigJY`S0X}_(3dZ1Y9Z~HuNb3`;6Gon)_?6E=Bmbz!C|Ek01;9_n`OFR5>)t$5hfH7 zs4s6l-T&tUsos-6$p?W7E<$<2NCAp_Em+7q!ASlfx#S6XN}hpQydW>h&*T;Ph5Sn1 z5>+T8I15(tQ7DJ{i-XRTCN>PF2dPY|kQ(S@ZG5T*=zd$$j`Cr7WtmcAwQBOWEojS(#U$Uo$MsL$X;@gt0PYW84E6bI+;SIl6hnSnGZ_5j%>hm+DJB$ zZR9XHMvjo9+Q10KH2zutJ5cx%6s(7Y$i%PEk2EE|KwrI+NILmMe*Y>&1Al{)2*ng> zLox(|AP6Qw6ePhclt#=|APd22^&fviSp^D%Ij@E=#Qe)(OF%qSKpcBbjjM^rQTPDduomRn3a3DuDp^nf< zXezW6ItX2afkK!NB}_ClGMqL%FnZd*vG2DZvj5>;#=X3|;_m5Q+daLab3p-0)+X@k ze@Y~Wh2p>zyHHW6D%2Dj3QdF-f}hY?=q3yiMhLMe@s!~XN}OcRvS-^rxLe)JxmWnN z61AR3;OnGdQbcH;|JUE=AT2ik&wtW9e)ss*CH$BWBVj;B`7?(_wu+T_!t#<7P4nlqm+xQarJc(cn+U5G$Dg z*>fUM$hY7{rV%@tLCTWJ;Cg10O5|VQNfv_ZSwwuuT;TCiEDXy*_*am6WF-jyYAg?H zLHgGK)3=gVWQ#VtNC&bT9MK-q5!l|D?89=lAEYyjbO+zljbxL43%C;TX^ z6xItng?*SRCox&B3-^S_!b?mTRrqY6hSCPRp|YX2p`oFY7-Qalo-|)u|bJ#^$>sknG_pY$G>$O|H6!gzQ+Ecafv}8 zAz`tJ{)J_<2U`^rR2bA=FTCU5Njes0?etZWj)l28>veY4>*@McbXPsRs~#R0krW#q z6rU6m9h8(9SXfk#uhRC=)ArEQ_SE5Cg>VQMz-VNOjRa#`xA)h@^e!x>cVR1f$4AD7 z_YH}R4@rs{9vwEiuU<;u@c5wQu)d*@Vew%JkqP~EZ~uQ%4bW2s>3tpWcVB}Fiwr8P zAXFdC5Itpx-l|aj8TNPjFx_7`s!hTQbA^A^yKuey!uYmfg@s2Jy$Vxn{i|EAQM6uA zv|d%zR|UlC;jwyn>{sD&g}LLt9+r4LZTwfM;`MxqUmA<e2n%C43p(uk$ArwWzRt zN!qZc=&4iw8Mc%!1Dc`_=vX~|j1G_aCsk0*py!gahl6M&fY(|Cf}ySGTR0Ajz$4TY+F~8=FT@Cm z!USQKutL}<>=f<@uLWkPWvFlPGmJM(*Qfh3!+JxyVF#vrw&4g?{Ktkr3lzyyTN&FLyBK?8+J_mFjN^=Rj0=oQjG4wm#?!_t#=FK}jUP?KWHJ>ql{C4S zDwrynyiD~?%}i}gF{V+bRMS+`4AU&reA8mnYSRYOHq&0yLDLb_3DX(VMbjPAebY13 zE7NO}DjGydEG{~WuA)Qq5*v!G#13L-akv;OCWxcO3F5cnN^!lIA?_6qil@Z$;x+M} z_(*&v{we+?=1WG2N+l($R8FcY)s-4ceo`l?w=`4=k;0{DX_Pcpnk-G1W=eCUMbc7f zm9$RUByE#+Nm){kbX+zNn@gK*X1m$TT-)5p+|2A}_BVGl zcQyAg_pw!?GpOBLktsnp!EAqrrh&Tf1?)7dP>` zyxwoz#OyatZ#|mnkj<48d4b}nM*AubnT5OT+Ol=$&giY7q0v!cVOyehIb`*|haz`T zX0q+|scfr4XMQjC95l3R_mF+(?JS3T@CRmI?5D=ebm`>g16%C!WNNRe@U!NsikvsZ zosP)sTuZU_AKqRWXdXDZ�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 literal 0 HcmV?d00001 diff --git a/src/app/fonts/Avenir/Metropolis-Light.otf b/src/app/fonts/Avenir/Metropolis-Light.otf new file mode 100644 index 0000000000000000000000000000000000000000..b8b917c154d67a5cd3678506e7cc05541b9ca585 GIT binary patch literal 23200 zcmdVCcU%=m_c%Pedv`DH>Qz}UD!BJz0lQeSq9R}e1p#|SKm{pEwSz78SYof(8}^E# zq9ENCyMm(8sEJV%O=ihlw~5Cjdey)J+4o zbog&DAu?`C%3-(72r-or(jATrnlg!L<_Auw5R4EN6d8K1W#L@_yMue=r0CeV@`b1d zq_-`&J0j$Vm}UUcG=T{iKhSe@)h@pyj(ZIlbo;j#T59RHe9-6jx*^KCv?`xp<#au?d=*bsT{u6pq z{v-VNgzpV7cK~)|jmVyzhel|o0rF(On9<0I>ka9Hbo{H~8ltxUr}-1oF$dBEhWcf{ z0r+b(7PVl%HVLRX`^6NYLG1r!pqzD$k<-5#c0Y1vS0USfGgD9}_G{A~wPybZ!`%RX zaVUVTiCX@{#35HU3UvWDS9SrI0C4{w4Ko5cvC+uoFXMswL5uDN#@lMjU!ptZ&%oq^ zxdDct!t!)#*y_le8gvi&d@+nO)Kx6P7uQm=CO9`DbPkY6_+W6NUzWX$5uK6-)~*2I6u@9hg`!SAgaf2!pI~ zF!d19+7NB``^sOl!%%yzoen@AEHyPC?k{j(D9^sAJ#z`Ub24(#EkrKdWYmmZiyAWq z6v_O6ToEcC#B@g8m>pmifoWUu-H1HV4S=be3g#r3E?|7XWI{Yp&+uwIj&mq)1H5oy z`JnRebVD@Gr|~kY#WY16>&~n|JhEXIvqJ#uZT&K%Pz?rB0KC`gmD>8hL4*c+5AKh; zBgcBS);Kr^bj=Z=@2DS^XOFZBT8ruL7=ws-Vjiu!QW<^$NH$YKmSX4l%k)5WgoQSHKK% zWCmBjEHW^O6)=ZfnfVp44*Z<2fO#~9d0YVtU*T|q?xUB+T8F=39 z3b-1o!8NXct0R$f^N5}_H70EQggD3jj;&j^a&;U#)zM=@OjxXAKv?9Y*yyMh{X*kn zq9;X1gvI($f2~@yY}v9it%A;fyENCF{{DB={s)D|#D+yjIa-7G1vs{BX$2=l#|1}6 zB~XVJ9XfQ544N1k9XGB;MA+EYE!wqkZQH(myT55!X%7kuj*E_&>gXF4>ew$dBrM3$ zFK()%Ph7}95<4L-Zc--~mjtWl=%~<0>a|61bR>0&1*h?0aTDUlQjAM5&1Ph*HJdJf zM~FO7G@68_q8Jp0#-j-+4w}<`Fs)HbXdtctjRjXn@Hav86AN$v_>F{6u@E*2wE(so z3gKcjO3^3+T&XXgzbN{H`*;)&E6f*@)v|A0!`{?9Hf}$YAlpW z3)BvbD{70{!`luG0(>y|iH6u|Ir&0~gu<7mHw4^*0QLiS>gEIAkpEJWwDjYkTst8b zcoY6XnU-`Yr0NUR7Fx<9wHl*gVk<(8hfr~Vjfd2J@#6x1ztmo&Rz`oqzE0Jmkd|2nj%Y5xLnON1&R%)p$JK3~4pzyB{Ae0@NFpx+pgv14i@jLL!B z&x`@RV>t8?m7-_pIr;&;Krhjc=oN69H|QrAUsR?BV+*|I6H^P~uME7YIx<3G*F_DG z6KW2H&=M-E9Tblz%-MQDgY!lHXgF}WASj~os0_VDpBV@AC({5bJOL%5=_m;;MoZAQ zXgOMkHlR&t8%jaD(GheE9Y?3pd2|uwpj>nfINxnV7<*)4jF2lH@>~tsp^nH68g>L! zN|e@oV$n31*?)uPpt)!zT8&l#_uhr}KsVb9JoON|gsz|r;HdC0mFS#Xd(K%uj6%md zBq4X}KlrKg1^Vh6k5bX^=-00>6nqaxfDxbvG`hnK%P@?N;TeI^Gu6T67BnWrNYvxk z4^tEAP%Ri!YNI;H8OHENs0nn4F5sstbfiFN@++9SOk>8GF){U-MvNol#582gNXJbA zKYlP;@lXyfXcpQDrM3^s?Ib!2amtJXV}=k-nO01DrW4bZ>CN7!!}$J&mHqqAd6$JBbZ<>f$`cH!-RQ$&}T%Ft3wOg*Lv(}HnjIx=pI zJLALnF{7ApCJHEKvk!n`vgxcT-SnHI>{!dO&Oa#9Y)^pNNrX-_f&Tor=W`HsE&Jnd zKPB%qlsV3vWzI3_%tfYiPe9fB02v%fCbWW1&5XTJMmcUDSadQVZHvlZv)w3;m_5 z*1mcmH>Mi2^FdlG8wgCx3!Q^r6aoE+GT2yPYSW+}C2KutHS{IglV(6)+7G>HFZ85+ z(5_RVH(k>D(+zYK+PEG~2F?_TY=A)<&=gb^Sh0*|g1kBlDQE%AU*;hbT8L_**)UUD zit3|fFppUSGbNZKq7~4NH^R`c8Cd@o)CO$@*1sJFh@HUvcR))&2=c}O+PhG1bOQB7 zr%)eg?LO!X3~Fh>TF;^Z=mNBibTkBIpH=z$s0BI#0q>wOl z7y6aCqE|J99_EC`fXqD-<)P820A_6Skr^$5;pltXmnrw9Px*W*d;j~xARUXK%UAz< zw6{(#D6+9y6{&L>bsnqM(vjMgxowqoy~yrA-~Kt2uT%MR)jCxNRzFpzgRd~- z24JcVz*HLoOKk%T&J!4^KV)PyFwJITPo^HRoKp5nP0OWKeKSbd>wpn9zh!_vrC3ftu(M90Vwjpy2qp zP%jPk1V2G>o*L{G5*-&592^=I7atYY%Bx2QFDnV_pNE%~MlX$EFPL;i23dXg`72x> ztCv33a6Vc*J{oQBul)Dd@cqBWXnuUH!F(sgM~x4PiI0p3ijND>{Q7_8*I)DNui*oN zVM-VQ{-VNQy4yNXa~fz(#6T;xfiYoG;|G3Ca&T~1OmKYUxQNgxgEcCHL&8F1LSw^X z2ak^lN(deLxBE~HG3>AW4b%JwX(bS3r5|LCEm(^>SaT22$}~j7gj#K@r%-E<(7)(e zOV-o+={R1aJN~P@(tNdU(>}}^F3d_LLW?9qBRugd&r$z?X+=kAKBKLnqrWbL7|kVC zvtzyr7o$;)(`;*@wu${x##S=%Uz3Tag&S{8R^s2qmZ;H9{8FrmS}9Kb+kL8rn5Ov( zY7rC>H|?(y3HlO-?3ZRz3fHy z4*QCI%YI`2=fF90t)O@J=lr?BTsRlaC3B0p72IlWJ-3D+a_b-ubl-9%lqEw@-IOcSe`4%hcuT zZtL#rigeF)Z*;%tKI&9mInVKqyc6G?Z^w7$`|<<$LHr0lh@ZwUB!@IrVkd=RiurswoF`pU)z;w;e=a*A&# zO2&E$4z#PMNZYq2h*RnVVxeMgBnF6P=~i&B)2j)T zEn3(-qqJ)E`sM2!c5j%G7#}w!Dn9nRO;gNML-=Va2a{7BGEN^lFBvgY(6#<|W{W8N zvHsEB4-Qge5x2y4#DTPxnk&bm_Jl}8KG1jnP5V37vR~i59UhQnI&p!|?%U;fQwLJB zX?vn0=W|>+DE`W zU2rARTxzWtoKu5S&e>ncIFNt-^0bMUOb5>MM*@3q_i>G8Nhy@h7hE4wMQ7 zdBR{(Uf)NlugJ4jEAmBWkqogsAc5)w-cuj}01gGvLogJmj|J7o@|a&OS{@4)AN4Ws z4W*HlmX?(@GR@zAp$Jd&qNX-=awXayfsb+kxy(r-h*ak|d zt66O>+4nsYoOfXVnyoublCk$jVj%VTD}t1iJataILrC0?W0HCYD5)EBEnb4^uHNP^ zT9)@$JL)anEw_0CsoYjk?{op0^;9=p*W$+K3D{lT!1oa#34n*n1G4;e(!h9GI3@B@ z0(Q+)Ydl(#C>gH^*j`GCP^6R?QJOqfl(O)EEZiqc!ZQUNj+^58cqASPl~a#|o23Z~ z)=O8jl4qowJLsi{cP0$HWIl6-FZ6D6qM3szva zcEGMmKl>|EgvgvPl)|DfiF*%8Dc>p55bv4edr3pZt)lcgDZ8{rq7*>e>`45p@m0ay zU*7uMb7|GrysxC)hvQEE!4uFq|()dFqCKfj)akY#j0th*@Jk= zFDT>ot&#l}uajEmhmWhbPyky5Cb4c~}4inMjQg43^a z((jPOQ+kO6p1!|VO4ue!dH716)Il_yJ*Y^e3uGffGPY49OS@6!!Tfbu(X3Tc}cdyNp7Mb!PsMs{5!=~%7+M~3~*r{6-q)H_TdAB zk;DglJW%i8`b<6^0P&alLirQ-i*~I zM#4aM`<4W8>b7`k&bHKfdto?%umqG7v+LGfP2cIms*s75yogeSF8PqG}J2Mb>}_*aTEQ zXF!3m7Ns%knROr>He)uyQqBfuBZ!MFkPEY!*~)AInWrVFhSEXYyU3(4+dz!G1S+If zAU3u}ZJ1rmPFP@Q%WOv(%x=_<*~{z!QSveftC=W^Imqm1_Av)QsO-QT(o_aVKrHTr zt};haHggOXSx%rF<~S&Fa$y-F4@AcT<`i=pgu`nfqI!U`{Va0^)KOk&FU*_LK+$yr z)af_TEl@aQfVg-8R1cRx`PG}bOqWwYP+bYCt2^i}y2oTOSCKa?X!tO>s2|L^azL!^ z56dkDF#F0w_d$4l05h~l=rMDRDFlJL2vk@DK=}2CWuEKIE#@XHW8FZ-%pDM#2QuF? zw?Tk^0+L?|ddA#i?lKRU`yliV0Xgm=^Oz|DnQ<6;&J?2`m?vmB^Ax>co`Hn-5@ftr z%yUqU{J^|nUNb*|8qXF4^%@{|+JSIRRR;E;26F=`vW8Q*lU^b`&=7V}*E+`siXbOh~pd?6Qeqr7*&FED2Fv$5=Kw|$HbUZTXz6LOn z&{zuD#%yc08;GQH*;VXn_5hp8o`gwiK6{V-i9=jX4%Y3sA>0&h9k-Laz}?|K>jYhO zU0q!Vou6*FE=so%rkLOBUg_TJ2yf>7v}xoP{v>~s|B3&Vw+NMm20}}rtKctO7k<Tm*jjXz`YDU#ZRe!CD zt8vwAt2L?STCI1riM?FR&Q%-+rYMy zZBN@k+ljUxWwSg=o-1#ZZ_AJ6A8Y7p)T`0BM%x;_Ys{$epvEu82F5|gQN}RibmIo& zF5@+0v0Y`m=5_&g!|cY}&9mEKci8TQ-CH}grc~2hvq{Z%HG9<@S~Ifd)S3%xrq;}; z`BTl(T2igRhQ)q_9d;WuCH1 zd1`Vtbuf9D#+s&@mYJTJTbX;CgUs8^kIe5KInXAya_s9Eb`U z_es^`PQJ#5q|+f>`tA`oiLx;`Te=@xUfw9d*WV!(&O6U#)c!_3#kFd@QHe_ z5&W+-4&l~0-YZow%vMTm?fNUT6?N}C1pBdQaVow<&o1DH%Z$u9jvR7l`tsP)HBVQ6AxEWtrgZCtneN zUXuGE@26!VqmD1+{_I&QfT*xhZ*eU1;O`1=uq%(Z5mz<#yh1KmoQ-&f>cm@|^oB!A zvhmJrJU83+O@Yc5h8D`7-q_*q1uT_3#O%G{go>#Y|?9Cq}#z&(q7FUgigM>Eh$x%4|3}U*yzANu5Os;Cvq?`g3jg zNm9;;mkK$o_7!oH&oW?kD~GbvMdnf=esGQ}HNQ4)6dQ{nN>7D&V`tJ5drddT2J{v; z9R6W>(TSX#+6G(+<_XubnKzl@8@q90FR=n~Rs;-A?<+R^tT$5pIYqrvDzsJL>jBlj zVUTiI#J`r#8Y1Ey8hl%;?AwEs(Mm~ihH`9;!r@q`>H5UEZ3Pb77jgJ@>3S~(&!yPO zq;qjewnEXAcxwfFlnvibqp;VSL@XutIQ^2MM$y*rl+=YV*A)m6m#&4dN^$s>e%iF; z*h$gKF~$7oykZ!wg$+{TZ*a*7YBOqWlSGkpXR$aVZJ-_A(LZ=4sVCt<0kk z-&U*TS*qbhdc&ur3$zH;nZAk!=VWSsAab0et(>@6wzn4zpJ2*$PxFY6q~W%{%1TRr zV>jg*rJaYf6PZT^YI_KiUFu;Z*_QS=+q=x80HSG6ZWok#=ndP&M|O06x?OzYqY&HA zRhB8K%A*b9qXI5|sIvI8p8i9xnOwZ1U`L_2u`vifq(<5L3iPcakAiC==4f%suP0Lc zcCjR0#5Kx3Q!nq+AqCv%((k?%an-V{Ws0Sp){kOD+k@$g3gp*#kh4+#uml1hQ%t2E z-ev9d@`p(?5+lZ+7wc*hY(|v}I6N!Kh^znb7S}PW17tz6?i`rSBBSzhK2a7&n1 zUM@;XJeX*EqX6sEdxaVZ}L*#Y9#Nif0@RU7hfoVwN|*34Pwbz$B+yj*vx0FEKwme%yJJrJAJ|KRhGq)_r??f}|UL{I(w*ZdR+Q zz4&v3_IY);4;M{_B;~?31#(d1l-jTmvOgh8^e$UgS5&Kx)w&Z0>~yf!-!k=@x}X&q zNCsk8(g6FL)l6WhPL_NlX-R70N+8O%#Wk@VZfSmODG&_b9#Im7MvIVZL#F9Sp0EE9&oRcuP@(e1U6bkbU$I zSj4JaT#$Pf`Z^WBaGAzO^Q^9#D7R9?9%;A_@DGgw_Jpyfo02BtTgh!i_{7pNpjI0( zDmhzynVq&lyi8yR z&#N8l-&@>xn8$Tj7Crgh-Y_TSro!MOkfbAa1^aX@6cL34WQaWs~10uTHxtgtM~j|i~4_`4#CHNY4gs?>ntTZ zBB8W*qV2N+TrC~1E0CY4kAUm873GV>se}Lri89TYJ|`|V8dCNoW%ZVgYfXz+u3WOp z!B5c}7Ar7mfFxjk157xe#M#m%)5Wq3os;rm$)f==R6#MR)D{TJM@fq16G>4&@m>PX zgc-pt_>_9^hB*q}Vb@EUqo~V(gOmaX>7`7C94S<(F+y!HR3S5<>_9md0m`w>eZUbo zyXpw@p;2m|#tI>2>#1uLxNhx3=`4>I8dC&L2}&1t)uARLNy6^$WUbwq(;Nh zX<1Cl?sgGpDr%!pas3Dvae$bUc_tBbLYLIOr3xKVNo7zM zCV{%}k~6rT!wNWF#Ak!V???1j28efxbCok|l*M`S#bi80eFwU3`4ZC9-GHgrgX$WS zsj@NI8KS}EQYgu1orQ|2k!Y5S14L7Az5Ha6NbX|4;S>`Llf_7y_6CTld8C57 zCfZ&HwcHNq-u?9Qj56Q64|+L0QmH>529;|`U9CVwpb}FS4L^Cxd0;Rb!xY@SEDZjE z!CVPTP!qCj&lloZ=U`U-Xq0i4D8JiqsBlI0zB6ZPgEHFj1L1Kkn05N!Qkv7=M^*QK zMSpn@#IGin`Wnd*eFH_F;S9F6LR0_UNabqUNUWn_VI(@O z{!t3^3PC=64GQ~oAL6N(50Av2q#Mn6lyjc?v=A^P&vLw>azw#7XC1{OirOYr+}%VR zMSH|%5kFJ!3=t3i{ht{mKBa#!bvU1YWsQ=S$KhZn(ZzDv@e39=EyDEyojFEaPSK-D zm*Tru72Kov;uIx`QoE79SyV?smuYHArvX}Bd;Fd*W?%5x5s@6oYfw*SP(xq!m^JgubIU`!xx@yz9wdR)U#1@KS6zv1&^HWdZj6C^0 zo&)W_9Gd@o+WO0(@xSjR-n6`R6v>&C1a(XncFqbDks70JFgDi9 zZ+nPx(Mm;ryA!@Al+DU3;5ilE-m9Z1-;tkgBegul&C2gZ;D8&Z;T|-tnd*Dv&dpo4 zZ=bd`&b)HZ=6yT&L~gG&!gqRjnEiw;v3pGNQ|!^sL-b9FrM-v&1uJ(&#M}Bo7XmG^ zhXRUQT;-W<{xkQyYvS)IFvX6rd^WC7b}0AksQoYyR@cgc0rL$NmUEOzgO#$8I{FLz zIHGuG-p)dCjgtrye%bO)3-~xr#Ky8fEy(-y9A%jL1}65^%IpDS>2_UNKWm#hKM_KI zlb%xKNeklQ?_E zN%4Ljci%4a3s_XTxPt;iLv15PK{bD-ed&H4?Mi3w+i8km+?Mo*Y5#+G#Xx>JDPjQ{ zzTx9V;GI)Rv** zff2DHsLEl$rpodn{DgM26C=J=jt0L3xme+ot`TC;xN>GzNhF$pbVPb1W9f zJA{R)|AV|`r|?=@_60Zz+Iumy_iMDhKZf>R0KER%U19??4?*B-Ky#LYZzk0f;WIZ- z8C4ctPn=7cEL|hP-h-6`WnuNi(^}^)ytYOu1neXyv8m-xEl3G82(fI81`kkggH+&C z7DfGoR8T>qoz_NN%AA34Qr4(DDt~Vj<<<}Zq%l=prS>-#+@r$5h>4;6fzgAu1~>$Z zp8NWw4Kw@npu)lCgGc#@)0d`ZI!pxSoq8*}aMXE|yxCHhcpI_JtGAdtb$n)Qs)?kK z>wM&~Dd#in@n{lm3<}w>W1<;v!`Jxz9jq=%DuqZPHdehbm%9FgsX~6U# zpizDR_}5cJ`Gw^hT{q>Vg4ZRrr=K2y%DA%V_6l*%Q>;rgcoGc7b<4sij*i7@w=BAN z)9TzAVABJzV${~2P3@FRLDwedTc`RP4)JeS-phV!Z|Dm8s$JQ5ZMN;x0=!4lS3L!x zd983i`|3lJtUk>4clQeL?`-z-yD4b8C^xshzHQB3elG>AD}mLfyCbi4KLRuTs|Sx{ zeQ*D<-9w@$`nGQMVI64~jNEOq7~tj{zIxr5Eha-ot;i3Q1%Lxyk_N2W1BQM&g1-GS zf)>FDO8S@8GbW1@)A(!}Y`2n`poVMIemlqEEp(Ex@#wDQJJ)X8SX=WnN$h!INcL<~ ztiP*hHcVDjA9X{25xxyVMcl)$zZgS>4p`|-$0vhCJi{+hiJ|lF`+4ivC>v>iy@UgS z+ool@!rJE46%Z7YDGIIwK>>VU8faZjZUC#v*w5~isI4r&w$wB>73C?g1iYc2-Vg(V z35`Pa-KZ?=oT&I_DRfblGOCqyy7@@G0MpGPm~Nhf=_Ujr#d`TsQ_)K=7cCMYI8|NV z&pWq4Nr!o5GCoP?mADz14M|E$ULke{Sp>-KQJ2Y+@Jc&KNgOOq_Y^=V@wW6OK5Ae1 zG0YZmuw75k^Q$t9F&ANs=_yX5eC=@QJP>*h3|5GH*+^p^2qHri5JbR{N&tJPAcAi= zi6jHY8*q&R*R6dh9b=q08pfTTVuSBQ=AatEsY~t1aJ(7Tn^ywsfT?>Balt_V;y|*J zj3AqValk@!1a40vc*7&LpA_;*k4HOq?3K10wts{j~)h?kRiD7@gj^a?zVxLLeD#}MHrUl!!lUmT@kHE}q zwDUp$nkqx-Kn-3Fe9CHL`whL9%OW-b=I*`O3c0y1zRZ8P$=4BUmxrisX)iOA3rkwLQnW7Nfh zW2f-3Jb7<2UIIhZ5h{}G)kKmbR3zC;MUr*NcqXX<1oqNg4Aye77jkhVNnx@J)ow5l z{Rm3I_E-;7>QEd);7i(*4!{5!k`NM#;fp(%b9BVE4X%pavHK6OCBYW7h|qD|iF+GT zl~gwyNE)nc`-0T(YX=I^!2&qx_YK3fN_fK{P!B%1%BX&YT)Le)G1sCO@CfYAW8Kf^ zAH1~3m7153Dvde~Z|`SH8^_5R+xHsVvvGSfSxusOL*FD#BflxzR_#+b zv=A8VF-Ww-+hC}&zF zBPiKRkVyMq-{4xfhVv6r*=KMe(^%-8^m*_>plVQl1kAM*+3$D40o z{n6pggT77M_w49oHUv?9QMNjk!wv1A*IzER<RH4{`Th30p?QSh(dh7aCo8o z8&0QHfSE^F_oPpu>t5jecXs7wJ%&1Pyh|#>jwaNDpl+Fd528)-Z?2R2^lfiXbQpEP zbxiVG)ueM<-XZOg{hiyHFJ9aU=;793M3)8Nk^G=*)cNYer*AS!mYJU|dOfJUy<4XN zjZIJz*?2rH3?`=#TcD|(r?RF)LuX=3jK8_!DlZ-${Oh}%ZiG)Ucb?`kpe1ZcSW?bh znf9z49jiK`9J$A5g5KKwET~#kqjBAuHEWN}KC$4WIW=Z~^uZ}>=5JWBa?Q%M3)atB z8NMZCUFhaxn@_AgxOMf)g~!+|Ke^__G5fW%*CfrFJv%vc zP4J4brm$U6d&9TRSvm8Y`LpLGFQ2t~{-LSIl8#RcnHG{9K4s4Q1+!KqubjQ%o7F3A zQn&2ecW9T*H)Cf9huSBvnY|tc=eh2sSDA0rjvRjHZoDOskEK^Zon^2%C%wYYUom%H zak#SD+PG`m_FW^ym~HWU%$BaYeTqd+dgYm5Tk?xM2J48OQBLtx3^S8xfDf;JrGb(> zMLf{1gNO&&fp^=aSL(+^+b6HOm!mGpNWS?y9%wu-tXJpI31`WXGG8P0rS^GcTl}iL z{CG05`a^OCmQzGIWhV(T4i{!w=D>JjNQF-3oq@waiJ8b8S6^~!xjM+WK7%KQ%L-`= zrm`?=5RWBcAPMJ*sQrkSMcfulRe^e}DqP0k#KQEHwAEnT)|zc=o|7Ow#0-VN<6bx= z+ZKDhax26Rh4Nb%>INDMv7LY`?RfI|h5fJXi;2{v$0#r07eRb>TITTw4kcOrdU5PADjTkg?aPkg>kRP9T-yI&^Mr@AR}Imfqeu zdn?m4<`nNYG9aX@gR6hujqjgi;Yw?OO(v;*aU%15(Yqxg?rj&R7%XkAm?fgYS}SVT zSGFauTz-L>K`phlrzr1Bw45|T{a7n|I#l*_TGzOuu163hi&><;<`xmfsJ_m!ycP_3 zB6hyQ;h#t+BlWcmg?HJm~Voi7XXdpGP!gOU;2_v9}4S;vkB}lBxgw1(m$CzV1e66SL5Mh zJTMd92i6r@*khM`SQgM>!8GA0Pim4%?!W^(*pm)-Nec|W&{M3T@#I2?v#Sx-BP!hm zj?lp#cW}oo=rV%Z=#KoSp@F8}fJK{|Sya0cb&19CY^>^3m#{ChjvdIMot0$fF6Ozxj^IiMNZK|$YW@$_|;H9 zIct2v&IC0!YhfbQ-?gBtCEu#^t{LUEV@^$+FeZM)H?>taecFOk@dv|BpQ<(bwEy0I z%WdQqx!&G-Qa!#oVTgl0ad<;mTs__-_wQ4Xug_n874&}K$s$9K`L*!ri|r;$JALcz zeV_hjZ-BLm2??bRxN`r*ltf!tm#AHUTNcX8tt%5;hYQ4%YQpRFIdiT?oEvE)uRC$U z|5C3boxiIs@6Gkr%f7yPVw2RdOMQFiTO)Cea1+_3cVFB8@X!mvLu+LZco6bpj*YyW zrUTbq^|<(Vdy6Z6Xq5L}yL{!*Y7<$gmzTHMJ?cP~JsxTaGD1Y3qAyP9ZQtA9ztMb? z;bc+{9+-vMEZidp7UE#N{k)M>sau3~W6k(Q7WpVF+_-q-Cj0HnQdXpx@P{l?Ec}}G z;Wic=LKM(2)@no?hMF7u7Yhp#7A3^nPhUD?*$h(`|5pNWI*aRo`q9PVryouh6qq-P zhH*=BaZnb%l@0nv7?pa$>ShoiND%ahk9l{V-!B~7KgD$JEPpGkLz;^NsothBF`0>@ zzd!iV`$h5*>LOV1+`0sN`DeY%!sQ@SrC*n)l-7V%g3%&gO3HcC(;tVlA|YT4AfHyg zu9v64PT7zw67rJTJ@tl>I5UsITR~pjp)y7?3=i)|hLhp_@NhCL4-dn`1gn?p>S*pd z&NQA<436r?M5b8Paq1v7+BoJksY@J*BX%4;20L2eGovy5!=K}sGt`9#8n&=Kb(@8@hho_Udz$r)KfqA%f9;3yhwgLxoSO<{}daW*I?yJMO`>&1aa2&^9 z)?4VOpI)^m11w-*s!07@0YB=h*Ty`(#U2k(!SDbMCvp5hy@3SctZhmm-3?HJPvR`2 zbssAzW@ae3(HhXsB6)hoQbj(KaZr>GX5@lqKEpF;u%8KjHYrQ@iUxJd8ZrMe9(9@e z9ge_nO$2@=1b%BGtKXCln-sN@-8!+L$4j%tX0J$p6d+?Z;BSb{Vch2Qn2Y%CMQl1^ zd*&E6<=~?y%F7>_&X%JZ&wAtVBcRb&yAm7Yk2kiZKQK?-!;kLKe_BTe;zwG;-uHfZ zES*V1JL!j85@(o=$WOZyN6!I)VG+YyJRM+4$H8lE zaKr1(&8x@G9|iq;#-Oz)!*d;ec=?cS7AD<5N*hBGNdT4s_EMMwge0)ILB$v z96o#@HRr&MfjetW?jJocVpQLo1FsIxw0U>(&Z(F7&phw6ZsOt5df3*{XZ%bpf_wIF z4BDZe-EfuS>qiT&n&cTjHRZ{QQcxP69ud%gcx00hb5O?A<45iD&Yj9O$?3x^FOBUz zGN0VePQQ1^obG$Y_h}oOz+r(A{TvJyo=$EsbBV)@yYW)#)xp3`Tb5S8Ky~=4B#*fa ztt(3aW>^!)VI#DUs{(0@_wWM+Lzzr=;{{*w2kiO=+pdCao9GiN>|$e4+B?@`V5vd^EW_boz!R3A*7#rf17gM z+67KimD?Clxs}XNl23|H^0+6UvrXP6G881;jd`VButPU#ow{KiZoTg3bpnZ8r#Gdv zFRxr_No6TZ%#*SzSI(*Wd9Bn!s^;e=>?IJfH#$9^U;GhkcpCfLTB0ozRP!$!~#ECVNa`?CGn!E6w_mfgf2 zha-KL*+TYv_5u4`JNWaF{R{{D6s{T9jqAnrgF`<-aO`I?m%z>A7IEKltGG>E3b&g( z1;>7#bFa7$9OlY&I-LOy{xsLMfqj=AaOkI>Zh&rzZh>~(XQwV#cMXpDJkY(=z0>`s zE9DU{@Dg90x8qHGBfb^ip6|kY@;{))h|E1k2Rn zVz3e^P81h46Q#~dci3=E_gy&Pc3z@n+3P5F_Vj7laX{{K6MoQ-lz?LIaYroNzjh*P zFOcfi0yda)E^q0Y8Px$}_Ei&zOjGf~j{Jepqg+WqJ5hpV%^9$&neHqaw}M{pFx>#P z3J(`>FR}`D(~-V-EsynEi;6L4ZyASM8gZ~NO(emvb04&0O(9iub=@mV)Rx-6hs}4Y z3EXhA=Ovh}*vnvUrSQFOz8;Gi=>E<1#GzGF5bkVS{fr$<$%+J9-{>Bb_Sj##rL=@| zGI%`k6h;Sjo9yY(SS)%T7I@iw<}6>(xBiJHbHukFPv#ezVP$=4CWNV%5Q zc&%DF&r%sLl8oIID+iH+MNpPhCDpK#l%U@d*l&G+1F>oC>JjD+O7M(9=3n>{Yf~()m&e%dtV~lI5gA$=O z93_CIu=lVO_7s-F-osMZ(-VrZ1DtW8`)eF~4-s3w!8Cvj4H0vjdH04f0X z5e%iX;9QEaqvAvqIPD}2n=>tL^4O?rehw1swS4OvQl!#W-lDW53i^N(D6*=O zhEkXa%U7j=aB3w;Av1-7G8?0M4ZG>bi`Wxa2dzdY(wWe&r`a&5_tbGA_95G%5A5BV zvU7K0%4E}b`!^rlbHGMQ64ygnwgVx;fwYuD#(Pfg>mY$Dy<3*lIk8Qshl8PXwh^{5 zzFQzl^CwMdH@Sf z>K%U(jxvD-$F?Ny73itP3UGd^8s1Kx@J|GitBNo~y2iT-q})=MSL=G~r9YnB2T3PO z->lnkuPC#0Rxw3G^MU9FlHD#3FHE~%&UpodT1T}hhK4j zGKYUCkV!a|mlnhJAL;&&2hX38CMoL`X_DCWLg1}Khu5X-F-g-DTdJuZA~^v2m@mQ! z4^BF?_o5gbCV}$tQlVt&_MIr5+}9`Dfga@1OVKkECXO2b%}hSJOObEFib@gpO6_Zm zQ{Z?I><5M8E{k%Z*XO4bIQs+Jd{j?3@#4BrG*oQDf?bl*f(1(!FEC3fa0UuAk>1km z^V1UW@$(zcP?%I^_kKpRsYm8U0S^DE)(Qg<%bc5wH31&r5_pq*+Cl#nno^;;0P8mDc z7miE`u)9>-1X(KJIk}dj{qY>>5RBAnI5dA>0aolz8wZTZxCQ*V5}Xf$O)$5l(R2gP zB}Fb#ku%sjuagh7A@^PbZDr-N;F&_>l41WhV^Wm0-PPr5+q3p|{qQz?BG< z;0_pusl#aZ*nrKzi!?)T(CUjA&z?SkaF9etZ(4x+NI1whV6<3h?L>KM~vXA;dnRzV-JU1 zoVA;~63f2@ivQVW1p^JCucwcKV=|Dx@?XlYl3GmX3I~G>F-@>^m`fg-XzIv^Hd*D3Pad=bNvv8^^>#sLo zgDB=EoV2>h7Qy?ReGTtB&4%j%*iUf&O5iGUw(wHB7F-2leH*}+{x#uR!qow;V0Ynq zz}toE&GoN%1K~^mhH+!KaqvcPF>s2@`pyDb170oedl0|%r75|GnDTE}9=J*j+|$P} zJGpQQYj$sHvzZ!xuGQA?y)<~FX7|!C-88tH6)wL76jp1P)f9uGDU4FAux5K{_F4_U zR)cS8{-;@Oieav5c7$eMr#4)qKvU>#wKaS*4Q{5voi(_#21jXdlm_pjHfy99wx<== z@IPyIAI)bU4eqMJT{XCYRwfPD30*e1x#s9*5JAtzODvqG#P=ya6?%f*cE*fMgR#+12|R+_l3d{&@OPOvo{>L z4E)kstR;YMX<@T8`1?y+z`5FLLcfaz^i^gc8Z4pPc+ zSh5AY)gac^fa?U3c?~!+*#iz%_JZ-P4%~}207jbOXbc>ZrBoUN6&twRCmyII!VyUZ z?nPS!_c-l_`r8iHGfi#ST7zb%FhQndZnQ;3PjW-%@WLpNQ zSPu6x&4i1F4#N@6<8a5)2Dpta8?GJ7g)|(1G?c(WUl^6)-ZV2pOkKtq;6_YiI1IbyVs z0)+H{!=$tvSuG5wh0$qYcb_ANlIEtN)W9kCB&R*Y;5`E&TTPEaL%JXi zV$g`A;Nkv*nz{w`+ZKV4@C4q+288)fKEM2g4Mah_FgGaBe>^@QB|+RRaIJ$NK+M%n zg*cYJPEc6Pls#+OUPXwjfRJ`qnE#Z?Tw@=ILOI~XaR0EtAIX_|0D3_D)X5RiF=Y!- zRj4n#BWHws5Z4$WRwr=xhW@^3Or?&0BAzdR5Onk7bN<`2tn1eTZ7hEQ-g%^9p^)S= z8m0M&9R4p(YX^9{(J;+U)a+mGFEordpoW@n&nc+4=Ktz~0k;71`{wST-l!DyvAVKi zR9f~DU~hQlfO`aRbBzfZH5<@S)wMufG~e7fRFfY8b>aVmb3x7c|HWw~sK-xGA8-s; z^E<%byHHe5^SzsjTr}U@TjZnp-yHO_wk2FOB5L}#8-{wK52zEk9#&UYfIgHx z0e22u9=I}a+01DgpdQSjkC3L^ab4hB{S4ud&wq1MpkDur(^df-)<&yq#{Go){>yzt z^|W4WDAVhIb)Lwc?}p_6>NJgE9t=h`{+qKwZkq2M>*xQAJA_(uamXI> zYpNN5YHQ-bje>C=2j71_I+enkzyHRNJYKX6UCaMT`LLw+)9sp$-PM}jLxp5VM7 zou``CgpfLh*tp+W_6F+KQXQv*ktfvGQ&R`Z{s#9!y`Z1la3@eZz9DL?-H00Vk?@^1 zpt_ulCUJ$x4WY8G+)&h+O9QtNoO}6m59*9w0}OGRhVVQI&J)}qaHmjv_MPFU(m39+ ztOd}*jb&ZSrf6fW)R@sS>mSz$@fshXYXY*-{H*bX(B9T3HyTytS~D!sipqT5KOjOw zdJpS|JdkrOJ8K!dBf9L2(C-XKBWTj$;jB{5>Ri3Q%dG{WjQTPkqgv`26h4)e$f zT5iSBqAI9gIV_-#XiPaQLip-(*ap==Y2~mjs)){(!xC~pH_G7(s1YgxI?icrq2z8{ zwQ`t4wYZVxumy~ZWwE8Er^4y082gF1~O?B=c z9;jyT@9YyZ)wxg1_f7gJBFcuRHQ4@n>f?~(9kfs5w zsbSI9rZ)YjMAQ{Upvh<|ibBC?A__t=Fr>DDb3@HgbJQB3aS-bactI*oG{A!ZHw;om zL)viU3KJm^(nYB`MW9fKWmqh9JixJlI}qTB0EHrdz-ta^nyJ4IXb3E@!(a$@_>Z|X z`ByIgshodf425!{p!8t1X3qaA$p`A~td{zH`9Xjgg923iIEc5#xuUl4>i{+PMedCH+foqLgqBihrg@!_S0N_MG>8!WjTg6|BwD; z-yjBhw>@eKzqo(p%=$YJYGv(Nf2aeid6@d$SeoeaR1+ap41~r)ZNK3(1>A4nFih>E zf4*VU|JeKgslUJfsw$OX{2Vw<)pAPU#AcoPE^-RQ*&@OL|H=NoJ*{v5lMh($(HHcQ z!<;==0})gP*}dWPsF>r?Cscy+(NpvcJx4FlOY{mAphBS3Z;`@P{=%_tr1L3`0bl!=a`^C%l#Mpw{HL^%g!;f&BK0oq&{ z*`s#Aj|_n!GZ{V_8$i)$8gThPq94#4v=l8vzX2uRgtowR+lo@rPILlgp_Awo>leq`w-FY2NCr~zsSQ=%i_xx-W%41<0NSCez$>TxEnHrIf2 z=IV0wIWyA23eE%p59o=?Fob8J6zH{7=(qhS1IjdTj+_}%G~$|bZMgQFJJ*xz%Z=m$ zxe#uarj6#j<{@9tG|zO{bj^aL>7qz!@No9n2o2anjV&G|)8EF!|}bzyF`lhY#vl{u9QZ2F4RsXNLsi z!U<+bbr@R>%g2@-%olfce04#cxXLijhpMA&2#~Gr=m^ZBP?$%I#6|;In+EeJQJqQ4 zU@ozlGy~?+HkeIYVJ4-*xK4xFbV8j^SJ7@5<2n=xlqn3^0EyP4DX0<1k` z(R|=#<{}eXfU2R{z%?yGwb3uY)BFKk({kj3mcTe(1&hNPApUDn3$zZ1{{~nhQh@w# zgps}j_{HsPc7aT>5A{L^Kt|jTr2Y^rZHIxlW}pG+7>tag$QPYKBhWcm^iHGUz)Our z7hyTL26He7Wb#QU7slXim{;cVSydlqSY0$0 zE1L&x`44{_(rOS)dAomB{c=8og*H?wA!QDy%+)B>w6sPAetiY)0Gj5cjs0ts;8gKJ zC8x?QsvLG|*T@b{f^4As^gvb}fvnaCqS`_wr@euY4u=MWz=xRu#BDKj+iLg_`+-EB z2l99m-36lk3Kav9)WC4i1F3cZV!;SNd#*dzn;XClZq>FOU48xzU^+#G1_zYh{K+1&2@UqaycH{b2#Y zQ30`G6G8*03{!I)HZjUSE^yfR;J~QB=-}w#|HO|_=*lnVk@5Jxg9Q=2DGq)CPLcWU$RZ9s~^9)zv za4Y;BPQ>?J5n(Mc>bv-0Yf!YBJi5FyW4=`rI$Wwj|0{mS5SDC6@PC|Pa z5y8NnIRp7<1C+8a@JK;Gdv^hay9ONH2Ott{xCvZ5H-r0~Tghz!0`Qvq0`hJpO--2Y zKAIt#nVN%|lbQ>f>oA$C!!&Ngd-6T_e*7TbmmkkZ@KgDPdyYG{Y9Is-J;#8&Cp)c-qGIIe$;-^{v{y6R%j-) z650#i!XROk5GYI%B7|6BnvfvO6_yHr2y297VY9GZ*e_%XXN9Liq3}T{5jjy1tBPi^ zj@UqKA~qL0i`_(Tv7b0t^cRE02r*imFD@2WiOJ#?F+sb>$h@R9}{yWxX*_CiQ7$Qi;~@ESvMS9kJdxu-A+Uo@N)h zKQ>E5D>jko&6hoKb4+Vf9TjO)+Jfk*K2XRAK3|q{Yh}Hzm!S8XrGna%}8x ztK-dae!}$RowIg1o;{RyY;V}sab~ICoW6ct9lMV>m1ib74e3K2wY}e#h}SQsAKz}0 zEDLJNG_$1ZXiPIpy9!X-^Tb&oe~FSCCNj~{3bd9~TQDITrd>qI`26UA4$IB-qWE}q z&Z+y3QbT!;C|R6!v{Hu_RG?yqXQYxzajs{nrIU<>t+7s`HlzZnO==N%O50LWwr!2x z93~k_A6iG8=+`T50MxRzOiVW(g!mpY-?%DV=|$20hK_UyZFdTjcC-x{Qbf>!%Q8aay?+o8QF)%zdctUFE z9$vrjzvP}0>%XVXL7n_Q<^Bju%* zS4LWkOd$QmMTG+OAtOmGF$8D-e&NVX$LmLjxSL1F62%rHt*RJ>HX^MGprjZN$$c*g zA)$Suhd4^cc5+?nEL;_(CfG3LR}8)0b{3X~;1O8rk}wRa;Xx{qDx{lPsU^++VaD7k zj=}Nkc1XsChcRs++!Q6!TRB9$Er*2nB8g*TR#MtOrx_wSNWKWSEpBdPw~ij9Uj+Sd z+^Jm{mZ+^r$J1QuPjUsShcVSrmXuo^uw=X`k~+lLaJ^7KU5q!_i=okaL828%gGTYv z-~@k2oKr*|>WFQJM^rRPWVT46h#L&AQDhW#BeiIhSyEoq!cuY+mhy*&%hGgtl5C?d z8SEoV=Z<8aJLh-A$7iIUj}&bgX>{F<3tsP$8=LjLyTpw3a~Qle;Lx7b?Ynk|Z<}cP zef!!SsoQKMrRze{hSrLMRyr??mq>k58GiMpkusevzK2hsEF`sbA$U0^Zgq*4I+@4G zC9{lAMMK_jY$)i|PB7#_s|!hBsw~Z$JR>qXN?IcuGL~XPo|mi-kKUYaCdY{WG1Ze= z4QZ`TZSK-DI%#-9{?G+j`a{l_GQ|~_*1bCJusw2fSXg9asPDR_D|(xxmdRKeC38|j zz9QsH&9LEhdu%9@_s3;Bs=3&bGOQ;MGKA{PW|6los)3kXR)om8?IdP%u8 z7E3Rd-8uKgF<r}v~%P+KriEn^Gn4qUW&(;WNCrC2q+_Z zNswgxO*Tsu^>mkd=D};I-1hW<`@8q7+_)902kAm156hdkOUb`ssaRR5lZN7TvQ&I! zMEmwVM>H@??-E`qpW-E>VfRLCxE3$#NdS3gd~-GT?VDbCE)9EjZqOvh{jJ%ZzBAr~ zaROO15cS;s_e!-7yhN%|O#!V7lq5HY=8BTCGG4lxTU^-dE~M<#*yXARRC`V#Sy9O4 zzL!?WD_~GSqu!TvttZ7P{Uv3bj{aehjZJ%9E;LKWhAi;fDHN^1XtrOZ#tFCV2J zs7F4joKJ4%CqON`_nGJ$YL?E)WM#2*6c$~Gy-IBdejZX^N8lKJ~NnD}jXcH0(%kj7SGK!ZOjZ^d@}z>C z%dcKt_I5Q%+c#|3A<<Uta!( z?WDIQ{ar-80dzF!*_fAFL545lxy$V9fS_skEF~t!&xv)ENDb}^sV-fcbIne&%Xlqa zO3#1}FiCdTizK6)PO?Y|qz2W-N&c9VW+$i5+3u)c0r5%TXnooMrg9u)$xHP_Jpxg6 z2e$x(-JPJ=nGah|=^*U>48m(2?q^W2?*Y}*ROF^x;P26S>luv;uej1$tR&Fbo%54L- zuPwI|6e8)|E)e?LqqE#@bdKALI&gc?d2T z8K7+Ij<$jl)R0WyZ9#juZA>sf^zD^)vR|Exx z1_XaCs4AR68OZ~i>;#Gv4^UZ-1~r^Js2MS+0U|&m4+hnhC&=a;C^H4_4Jb6ng9>yD zDBaeBQo{@ijxnHsnFdn34%7&pxgt<}%m!u0JWzhj0X51DRh=>)*zg39uZy|Hj7#4I zT8vY$!}9`kt0Gs8>%a}0nlqYQ5U(*`6ZrAY z`~-d;zm?y|U*?}_D{75eXW+QKwE^02;I}tuuWRpWi?v?_jnG6GE&M1f6SfJbgonUA zBT*6^fotw0_7+Ep`Ql$Xci?@Kb+2?EbY(WpYr-xDo?NcOXZc7(<>jTe7W+URpcsDsw7tVxk_r4 z3stC{#;&5B$*zN454$0DL3VEpRSg3SafV+ErwkViw+!#A8ml^0tzXr%YGT#gss%=FVnc^K$c5^K-M}T+!LZxx4ci=c&#! zoQrDyUh~gd9c#^~wZ2w*t(UcJYuBvZz4pY~b8By}{k~3m-9B|k*Zr~X+PW!qGwWv6 zy)~i#mU%j#QX4hL-Zw+;!{@2ouq-_LuJ}u?+hMgPJcBgIGnZ9!~ zJg;yCx6{&grlsZaifc)_kzW5ggIpKg|7vHPP!L$r6AjOSstV# zH6|JB`@Iv>1{o)X=(_s}A6OaU^&>*}G*Q18D;E1YGCWTFfQf(Uta|b|{QTAqtZXVd z*9ku>J;ws>5oZXgSaQuo57(0wd12wvXE#$J^Qj;BzoL{E z#zISu&f?7EDO>RosV$HsT3h+0lPuCp^sA8sl2U<|>hyaTJ|}VcWcYKtr|-#)j~*Wl zpP$;3S0`|Xy=H@QVOM&_O^0{wZ&00y-V@)`y+$&e`01`4^&dEJ#5gZA^`kjP5=TOG zhR=DY{Jgz~__>?)$7RJOp@V!}CP%&T?60N{a{5esWF^l0WGEnoK{9Fo)gHo9n%*+)NorG9(ly>3GpL2UGVR5ZNBhrb*Z2|ZiLmgMvhWr6 zR234Q+E0+X%jIEvu^MP7B0DGIreCp<#T~#(p7Np%hNmBV;N*eW7w^Tn9}J%r8(>@w zMZmUxW^8Lw7yuvObC67ibB;Kl!#sJQe)5Mb(oh{JKeKFa8a7c0-IZ;Ub3R&iVXY+xau*!sfI{oW}44DJYuVZhl!e?%&Z|`{J6dU-ooh7ZU ztbYy6&si0b{E|(?-gvpCPj`G5az9;24#oqssYvg61;lqFJ!p~0!Fo)(KCMXfH1M7} z{RVu;ei>AE1AgI+X^pRTKjZE4y+ioUdw%L*Jm)KB?{A=IBMF-Ke*Q^$YeNttXrt1_ z-y&`iRO>x-`FmoBl??^HEM^0KH5rqtrC%9RK@JDG1(z)PRVJF!%Rgg_^FCbCHJ*i% zN$NaX3T$v`XL0(p#Hh&!v9rpEbEFjF=Oh?OwO4P6$*cs_vy9QT9NN!wfX|+jQKoKQ zLeE1l{2n{%QzGU3_c5|QWxtwj{(I6QJ4PnIejRBXBcG5-$3o*~_B{FnUR~-8Fyjn= z{E`rFcliUUlnr&yBZrjdMyogk^6qq*R;u?(Y}q8kKJ*fsrx{^SJl?Q~USIOp(m93?cKBA%bP*GFeCAjl$a@ zd56rVh?$}F!1}-6$Z_}#kG|R&)xdiz*_1KAhbi-BBBrh|XCR#Dtqlc=;G0cM)-1?A zwYfWFAVp8#Z%@J7*++S!44Z&0sB{KP7l&cm*TnGPy>a`mrkZ#vK0=%qVX|T{KKRw1 zy{eHJCmPlq zJ}Hbldp-KL<9KW~q`jK(#OIR9u*R~C&NEt7HAFssWO~Ft6MbT-Don_TJ$uoCETyZB zz9ZLc4KR~@rK*rVYQuoO4uRODpNcb1%bB0@Q*i!AwGSpuz`aTr)WnLtABIUp?g0%B zQKxRMj;R=^8~8&=TUwh8F)O)@2zRwCFjAS?yen50*$|l5mY+oZ!d*BQMA|vTM;G~bA^=6cTt^myA^2p#7;Wr(Bxk6lj|39-k@@-APQ8LRn724 zsmus%F%a4>jL;SXq5Yx~+I!XnOukwQD$HzB{UdM9lek#wcgF{1ayzjFdrb1i318(F z*ebIfUWrwy4Tf#fL`>R#H9|~^yz6PXJlEs=#Sgr4l?*YGN{tUwd55W)oYVK=_@cQr zVg|O5SEUKW<@ftf2=Abuo}7a@vJNQ0I{Wuqfl#r4y%<7ZsoD}G7s8aVhNs9mIoJ*& z;?Eltg}2`-TVBAbmn=^9ZXp|#b%zA~3|Wy9>f;$Q+2@Tzznbdf1u}3Bi)1oQodE0| z*oOP>_s^8~!h}y%Cjd*JRDlU#`ij-W5$Xi!`qhcy7vwp188P_WP3i+Ijl(&~ulEQc)xjMn=%p z0;wd@BvK^klR^Dp?~dWI#2dGTI=SO*quBDov=U_4VEhAANeyF54CznM+)wjP%4D9p z$TWrusfmjx<9w)yJKiUArTlAo&64WftVjLiS>ag>jJ{BvU)cnT6c}HgFRx z`uAdGngSUPz|$}}plogmPo=|H`47LQxUYQX)_JT9EOCN$wKh#s!0Fw&@KkSc9UOL008PjG*NA|_^ z4haNh|IX8=&+fejvBxv#&N^Ub2tlmYN%9#vGfDof$Z*1gWGau0h7*bYkjn`VpUjcx zOz<`W!^=Dx3H40yfO?+rXaKFrSc@}WC#2w^tTp?S$+V5oC=XED?N0`+U8eK7nt(su z8Spcm8_48B!re~KNP~OBZWEhl?H-f~iupiseFf4bG z>)h>23@`Hz=<-sb0gg|2N?tzZvWm$q;InEg#CSP1>`J4tv1?=2Mz5>Uc>I>Bo2PD?QltIE z)SkrlMApc|zNv$19Q7ZT>g7ls8r7k7X%m7d0*!j(KM5ush`rA{*m6MTww5$wPlHy^6Iz_NLx#&oY{R;S&hc3z8WJ5%b zY}f@;6e_tkVYGbW>;QsUTae*kNre)FvA1a0bsqZfV1L?HXV^6W7PBU-ec{dDDt9kI z2+g%DZUAyPxp1eZoQ{<)W95yF*eMEnKwJG(YjDgoI$cYRQUa%gh-o4{X?yYD0q++bwuF8={~Iw6sjY zFhmOxnGHkqb0Q4ULIgwf3%Y4J4ck%&lH-)_kBM{%M1k?j4P$!B=F|=A=OivSrC$~{ zMg*>$;Mif%fVSqopvSg!FH*Xznr)qawQP6fBe_}({r5l#R91qV;VBy)ESC*MJK>p$ zSIf_Dm7^3ZF^n+4oTSxYnFPE?fL9E7j~L#YFCXIp^K&+FDK@-IBv*j3*p{*>H8naV z!n}0Ls?8~zf;Lqj)^AF1pu^~mA?YT=<3!S^vk`D1tH+6u*Skc>>~Ufy9-bU7!-U{& zz9p-Qc=GHj?$&3*uuwBea)Eh4ZtJe(WZh+ZDW(y!9-6*#3NYitE${hzLXejst8{S_8t`UObS@t`qm+=pLQEvFVOh!Y<+i0wBxSthd zeI?rLXgrbr*&SON?ZG$S@;B{|%H`mblAqf`3%{C-EC{;cIZPru=rfo^88_`!H82UH z6O8fLWXQXuZn@C=doax0F}VZ8SGGOW=@CUHeVR<3DVsy&G+F6CR!;W|kwIk+3$#^f{(#U}e9;f~VvfRI z%mdhq8J@|aYGt1-0*wNsgs6KE_1X&tU%cf_cMQq%*5aGRF)4TiBjgu6$geO3nPefG4?COU<#7h<>1+Oyw*bfJBXA)$Y)i8PZb zWUY`KmNX&2pVnb1)Vh1$B@D@P_-AIHEDoUJ-ds!aUk`ZU?=UlOKEqQzPjbG=;f7f!kNa&fW&6@Ma-)!T`6Ta6IpNqTL7SQ zGJyWCge~N}+8D;8&X7^kT}PK&`WqW3LQmv*!eGuwkfBxSGU=wY{z-=Cm$7m%b^A$X zJ1j7iV2>q_Y>dToshiP|0oz!4u#H8RWkSU4Y+#HanbD93;RW&X9LtPZvf(+bEd@EU zez#1L5?Wz+wDG|)r7^8=`Bn|AxYo@YG9DJ)CZ(Y)1~fyD`o<|Ep4dTLmGdhYS2L0{ zFn(;dwe=>GhirH|1{)rq@V^|HGdE^Xb*3Q_3=cp2cI*5r2Yo-QN-Ow{UEX_=sH(K` zKvZ5R<{UeG)nrhvXO8YWaKs2N^O#oWMZ@PiR<%`UbAPvoCvZor+H2Rzn+}9)o=1(; z*wmeJCOzEgTAH$a-Rc@DLa6L{XvpP6Q_P@-vOW|m9?HsI zGCbYK%A}r8FFA~f6Ki1#lj9>X3GfNWVT|OSlVfMf(QE=7BqL!m9p2U%_P3}0iXmx* zIGI$2q@kFUmJC)mvRz;!n@qG{v#=HT!`0EnAa7h@4CWDFFae!D(;4nHl09^W2lFr_1rg(%oRTD`6a&RLkw}g! zkNQAfiNv1Hgi6gw{1tcoUFJ3@+jz3TzCa}5%1Xgmq;8gaw3Sj1K>cjs4eY(}Y^>P9 zN^`t4$moTqu;G_lvfeO-Y#Az3&(g8$upy&|JVjk{$hw)pCzD%sFui7Z0Wn8=$dJ5h z1fEbj7*e}JiJO&0yt2if4kv4g4_P8mjYw-yFIt^=fvhutE~Ufi8i8m;& zzZ%0{c+W-{o`F!4c3+(u;WZf6yiH0fPZ|%En|-ayLYOMJ4sbLhp!`{-E7b(2BkYVyAUXxakbHYvblRL+(6mxJ{psum(^*j10iPoh0unHl&{< z57mLO{v>quOsGNnNvOe?ldJ~mCmRDgEIpa;R;J)6R@=?VWDP7mJD3cynaL2Voyj9sVNH@}%rQ6}$7$45Ur#>o`LHc_Sn!V1T6M=IuWIUWUs82gnPg)T+SjW>q0#D*; zF3?hKN5Tr?`LOkJu|S3+Y3Vv?5Ld!EX-TdgVZ>)O|#&Qm*~*w*5_4`wJH`v-agWUcE5J zqi>K;Q+G36LdOgGK?yHO^m7vS(oX64(T!=xk3g+miXRi3Hy$Utt~MLq-`sHiZgKQ#_c(|OLRc4lxpt{c}g|V8MzfdZ=m#{6-1hE8N9r`Kng`V z?>R73WFEOI(7QVQn1ttK!&B0-kbCx)tcAWf!K(QAB{37Z_FY=3->CTLiRPtbtU&G; zS~`fcDZLRQY~O!$-5JN{*+VC)+eOPOYYQ1 zas|Ftk>X|S>=iuF-%J|+dXEU79WNf7JpQ2h#9iUY&^|lbIMR-^66n#!Q{M;Fg$yEf zKNXYe#HrRjYG;n67Gv`fm)}k`Us;=d=#Jy#E52>K26Y1gXe3kbWGOK`vA2hlUcj9Z z;f^Jy34yJT3DB?^k4e~byCWakyeB)~xBg)GNX|j)>JZ&+B0cVt-7Xa<`SmSlk3V!E zA{DR07p+Wfds5p@Cx_*RnG7G>MfC31+JRysdXTy%Ly_X5?YFpN`VEKd?2LQ&E{yKy z)hV#gd_bhvv@N_2U%B<-(3M}zSATjwri(*QuTd>b&=W67mnURvK9}{0Tmh}<874c{ zt=)iDr%s&zP>4GwD@6Vme(77KLmzA|EAOOuX+Y!%m zKw6T?XhmaOvm$BbzF7x;+-Keqy)9&CeA1jXOP8(uedUj95`GI_@Bc^O>fNgk{;_j? z(r-&v&sp`u%4tgy=Gqv>2FHhmghbmc*|*}rK8KaFlBP|cl`u14h5wQO)1;K}9l`4p zexEvT&dfP87f(x?yEFda?A_BROdmTtI6h(S{OP~X_BK>dy^hj`ef~?7sdE%fLhsc(i+D$lHw!2Qu zhOuy{Q8pTqyI}p9ge>_PsSf{umoP*olkGb)Zxbl5AOq!Myxko*`J*XAeu>C%jc7m- za#h@_A;)8Q(qeK5a}Xx5XaCi0yV2I9jz~%IK@LCoH!Cz8)p?p5aB7@ z10+v@nAMm2))$Sq4)Wr~Ofpb_aX8QjSuq%}^w1}2eDj;KIus!U)qtD&_v-fr=Ry=(}li5=DuU;mmTwt_zw1QA4$16X2a)9 zOKmkb+Uq5WBt7$?ANGE@1^MaTFlLhMfG+r)Nh6Gn*h;F6?$ExuL#_OF#Q5&^k;_@8 zz88d%0mCPHJG%QF&pMZvNx0vEo{mylku}^^qJ8!gCVuu2vffhH8uSy^XUj@WDCIho zQ5`0#r>od@ITSIMy24Er9jl5!Nlny z(0|(A_coTIu zp2!kF5yTB5B5CeG+)fh#Rxpie*eQWJQLYnhM7uiBE_Z2T0C2O9Qt`YT~ zYM2tDhAAP>EFn<8G&1D{cY-j)DMqs91qDRfRA~q2p>l}%0Wky5RMNp1AQP`0;Ip_4 zh=Yl%#_5#~@R`Y~5caVx5=%#GkmYue7A7`JX-I}t5YvGyhZr_e%s{(XI>T5tK+5#B zmd9<1Q#Qw^#M^Pt-ixVCh1Nj9*;N_aQ061 zK}WsQ+b**)R7ZV)sQ3 zb{Ia+uftrB=n@J@^J_1z5$6KfpW@j*d%fm4uV7~@^BTP({*?4{(h7&QzpVXrjfv!3 zqx-~%2cMjM?Kle4hO~wYb@Vki^|~c4nD+D3sSXK?W-Us9-O+rJ);>&3&ZL=RB-T$| z_>6SELAJs1-O8|;68nrXUjuH?0mP_#dNMmV=Um{>HKrTagew!>j<`Bfdsi1~GSeEp zyIrE4bzS|1QOeF|I{mhV#Jk&#+#AFKGS&W1hAAaYU{7GMOlDIH49jlB*Ms_kFB&qa z=93Pj0S)oJL49+X@21laB?q2!WXUUDNmbxXhz}Xqln$i*-AI4x^9tC0AJK}EqfF#; z$N}SCSziyxjG4Qmn0Y0Hj5e}?1&l@YzL!8cs6icwL$6-MfjY3aOMO`k8BB9CzCt+Dj_GAWN(S(RNSeJ@x}Gz%sb{OTZOUR`c7@22l5?WdfsvY-Cr&DE=_$`kKH@OY$&MdH?l9#P5o<6V)y7u zTGkoUrpT?~+e2*(d31V-Xgrb@IC5yvY8b{IQ<@v| zM4*ATaF*DX1_*aW+MH|=0IyUAdOX4Tiyf7-4ap$&qydo}BOk#ReSlI%Dvxe)7fBWz zkbqsCtgPhyaCjfsP?cTwrgUt~Hww(vjAfdX^k9rV6>`d}aCE?(t{ zC!Ett+qQh&26NbHp+7ql<+ahO;C1MkF)jzzt&7Sd*tNU}N1}+k@@Oig^;2%F#b>hy zll;M1hE#Hp>D)HK;P-*Sp9+J2{vMq7md^u)?)=3v$3W^~d|T2T4(}!;DJzqRThf~( zk%lGdOv!D^D%dWpAU%eYgO8UisZgP4@uCV9$-Js1vhlD1?PjMWtHANfx^O77J6J^f zf<5^puuq)=XD6BQ<2g8-`W)=BEnuHqlWPlB$=$gAV3i!s#c>O`-?$X+Aa@mxkA47y zMuWxy3>sU5DWjLBzs6S+rkScq1T)4ZnpD+@@u21eoUy#3xuLnMd8&B@#*CClV9F?i zA!9?{jqkvB;|KE-`EWjtp9%I)zws;hbzlXR%J1P1@(=l!{CmEH|EjH{b%C>(t+gGs zU9>&4eY69#BeY|*6SSe)80{?W585BKOSFGz*J?Lvw`+H4_kmT^DeXCJj`pRtOsFW> z3DpEAp}x>mXd}1_UBEV~uP_*_qsD=KRIm^#M1gJ8A~?^vO4tClQ9Fgb!Xe?fkR@CY zt_rt>JmG|v4&_8Yl-#Y%x8ykTPYuLsOSgQQWL~UVt6e~M%t%t z0!x{w&EfUHE@C`(#UPox%7NIdH@1->>|#LgJsrT_q%PHh4A|lW%ulELm-bxR#}17< zW2v89x1~(G0ry{pc$)Msa2VfM7sG}aoYVKj?8rXIf}t^y5n&snw}UYNBr)Dzl(lzv z0hyv?SFZ!J#?qL!R~id7!NkI{CUUS4HZ68`h+}-rlI8K{*v`VtE$MT1ff$u!>E8ew zLFv^9j-?Nwt%2MOX^EM6(hRms+dw{>cIf^e=E1)UW9H155*-+vJ-|_N>vJK0mRV^e zlD^GI1?nbI8Ek-LILzPr*)y;dvK~?}HNUwAb64p0U-6~@l}^oeW`$!4Xs0L$)HOKU-I%)7GV z_%SnVe5y7(q`p}{?4%GmdBXG{$Dj$TH%~SX8!C)Da4Ig#QA)tC3lgz(>DI=BM;x*u z_Kg9Pq@W3@VdgX@&Kq4gY?!7XzT8?Gz&H)L1o+r8+P}Q z-z#fH#cWwCER!v3MT=QkE7Sw)2;xjY$3^c6`jS~~!QP+&tpfUi`VwrbI+0y%W$C3z zswh=SWjN0RU>8s_LNb-6sN}}P>~DN!L8|wlH_=?Yk$P$m*oQz)N_wHCuBg;hmJ9bR zo0=#!be5Wy<$|6zX@lp(&Ztx}iy80u%WMbSEDge7EOB>q99evu=pRbc{IK*9jJ3SL zQmCzV4xR%RBPI2`WocosEZxYNH2kpD=BxRB7e`5;T2Z<*_2i6^4gmp^2lVsVxNoq@ zubUtlePvRIRuv?+DNan!q|eFInAH%N*$iUCj`$6)03`23z|d0{MG07aQ(E z6`4WK12}L~#17m%0E3*~)4GQAcGUO9Dw&l|WUt$~$3Y@32w(fMO!?Zhg&CB$Yhiyu za(^iFPz|JJ{EC%Z{V-$)-rE<ir6qWUEXDsxB)e=PQI2V^-;;{UJL8Tm zTX$@qyfq{^G9ol&bHq+C(rGypOMT_7Fu^3)a#@I_TQ9aBJuD>@!0}Ou!W5JUx^hRl z(wQP@ifqU9#FM3xuV4kWeRBqm43+lm?042tQjbvf#ZtGc!thbOCUtX^9D6~77DJzE z`FBbyV+71ec3KfOX<$Q%m$+3jFBxfWF9Iev9`j`VIJ^T(lW-E2a@F0rXF4eyHdv%? zMR3+anw=9IM>btreu;$T%mWD|mvqm)!aV80nRAcK%CQEP4Bf=o$dLG`#Y<iEw51@Q(A!Wqum?(v(L~oVO4mbc`T(-0`zF8u_HcM+T$CS>}P}=jMLgSfn z36vli`@mRq!EI!ql>MQ#GCTAr6{~eSqLZ>nbe7an*5BDCOK!3rj))`|NlF-;=jk9? zOf=Q#8+iDFSsKpv==Ov4oDsH8UOksMb{a?mojGizN(onFDH)Du!67q11gu0k0gQ{{ zO8Uoh(z%r|_t?4SIMqrfPMWsx7?{TN1rF4ilOjVyBc=6JlIVHm7HI(Me<&|C@%CZGWC}h=p1;c}rl+8xC z0)>MM6s$L|)B@uRc9YE$xFx|B?uFqvC%D-RLcr%#Jci3|*y@G2ZeD!`gZYJ)UB3W# zl&~8aIF>#nFe)5X4fBr*K~7;IVIhDG7k#L)Rt)CzkPd_ShY5^ySR4;G)(qvst$3OS zYOb8d9f?pNC*&bc?5KtbU^e0arXlszo4w-8eucdLv#$}WvJ|=ox)?Anf%cUZmz^w2 zEz2u=2<839zq0>&hs@ttW!L@&zXQsif$_?Be`T-A)O*Ul3;G*`yZQcyzp@AaLj;1l zp8U^o(2gf%N7?V+@o?)OD!a&j|0Vnxgcp|m3jL)Ky0Cr`cZpBIFb3|^fm|*^%%A^G z!QQMf@O<@OyLBDlMT{S$K}Q34YoKWlz6Wr(Uf}nE>pBL4?+aE$zMAoxN#(!E@MLf75|1C? zw*ah*mX-fjft3;aZ2^AxpP%(@uO>rt9DW(VBVW{9`}>!xLM-F~aLo@i1@J4@e1_j& z%m)ry1Xn>*z}vx10@YRD#MdeRHH0U7YX%pEbcA1Pz6;+IeqG?Mfx+d!5%6ShW5MPr z6n;_s6n<9uZ!Z5c`>AC=h4QUGR+FcQE1RkjfSOE&d;Bac|c(V|s_Ap8-hgpb^3h&fp0=$!t z1OFz2xejWo4r)G~RJfB0Coo_0mW80FG&h0Y`uX59iFF*@9K=>331D_l6}u@7GZR%XG<1buWhm7R!rFt0VO5Z9 zyMR$*51=PbaAVp4SZ_vxQDSX17Z=FI1}^=Hg5Ja7ci&Pz&EG}HD^+N6}4st@L8YmYM*G; zJ`vPD5!5~r)jrWdpNxc_V70SVdj>SJPNzwb-asyS-ayu|PF(t(le6TmNqp9J^tePVnBwD9l0{|^$ol*9l4 literal 0 HcmV?d00001 diff --git a/src/app/fonts/Avenir/Metropolis-Regular.otf b/src/app/fonts/Avenir/Metropolis-Regular.otf new file mode 100644 index 0000000000000000000000000000000000000000..737760b5df73bf4e48e8d17146a574e8deabc80d GIT binary patch literal 23124 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 Ktr*Wz`TKukRV^_9 literal 0 HcmV?d00001 diff --git a/src/app/fonts/Avenir/avenir_regular.eot b/src/app/fonts/Avenir/avenir_regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..243609993babb41450372112d29ee3bb99439139 GIT binary patch literal 18823 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/app/fonts/Avenir/avenir_regular.ttf b/src/app/fonts/Avenir/avenir_regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2ff74a0fa8d1b7c417e5a24e36a4ea5d1ccc596f GIT binary patch literal 40968 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%0AUr}0 z(5Jw;K}yAW=4GxqoO7`Yp#;(rGS39~a?@mB3FDwlN{U|Eh9{W=C^Lw2GThjS*#>L? zyJ!Y+>d-dSXJA?lF6MWE!$b)RURc+4$S;kH>otJ3U=6ceaVc+D)@KZHQLSaxLjqo2h5YjFY76cx+P^y4!Ooq=TTV$rip1yWI&w;?J#m+{y5U|x@?w0=`$uvV9glF zF#%eZfm@Bs&m#u|lxgHrY%jKgi|tC$&egX5odqfVDa-k5-Bo&StUEptq^ z2B+*t4LBu+Z;?|`?gnML)NU+Iu~%_x#-t9oY;M(2aI=oMRe4k>>MM$;XDl0A1KR^% zqrjP(M}idaFesG#BM5UZoUT*Vp3FONSuI^j%Q{zmfqOw7-~HJ=}aTn zT*ofvo83rT)W7NxWnIm#hs-4VTt;1%=D+ug%h4xT5;fb*yPyDkM%X*pp{AIu= zJ&MtU$N3cM!ZSF}Io#WLlQ|c42y7XOM_S}8pV}zO;ZWKRXbKhc#8^F zKRB@tK1+4japk0i@Q;Q=2Htho2!E8T;2XFEezw>j17E1+kZT2eR9526ajU5bcTbzK zPFVwA*0q@N*JE~PnJq}|!Aix8dhqI{jW$v{o)C55PHUH(vo})+vvn`l1vg>Eax-ng zTz)I&^lg~GZ^!)I4=vpRpOd>VqYu&Dv>oq?y9e*jy_a@USX?cZh-<`Bu?(yB<-!mv z=y`ewr@g*Ihv<8Hgbvc<^bEZ~N5pmX7@fhJK@NzO^dg>&{y~T7WjaY8qFo~N5nA9B zeMTSCC)hji1GM`EeU2U6uV4;-lD?wT^d;KrC;A1?SNCE(+lO&IiMD(eEqb3EU3vAA z$69F=Bl7(i{~y5K%5j>a=jcJKC?~K#^k@2&j$yaMQF@!crfqWD;L0}KG zSS!}yOq~tFCHRc_*XT|7*}PA$(;M)=ew1FqI`cTaE8H|GJob2UEVIX~9!@1(E>}py zB5rBit)WN5Rt>!x`ZV-w*sbAa4SO`~RnXM@rsg*_zp44nfTjy-sPi**ex{bw?^5Z0 zEw8^Augml6@&cMJpwk07J*eY@I=)-VWkC^~FQCj9Q0f6t>H$#d0kB9f>j7NW15nlj zP}T!b*28j{I$zUt#1ir0Y%~(i?NLQpQdG;;Dq#;qAes{AA1;Ukw52fbw!x!992`2@ zYi}7`QE(1zDKzvUFfp{OU~kzm2){t1r%=%nDpVOg$EX7TzICl zt-nlP4}v;hiNFc8-cv#sGQHE*RiF!uG zv}UEOfTK3)2m8n9djJ$Tpj#vL@j6`d@ckzAwF&nxmimAr z11krP@g4hA3gVwjQS2irh~Bd!qJK$xPwGPdM)W^J!#(gb9aoEPK-!5{Ke`96J%H_F z;3pJqrvq1J!W-cpbkT_K{s}rUiNCFuvM{bR>1(MBbJ&RQ#r)uN0RCQw=VS1Exvo*F zQ?E39&J}nk+&f*m_oPW;E@&PcF6LqXM9hVU{WRWxg}Iun%>&Ja;{~{Oi20$paJ*

&=a0<;&4uGdbf$ezbERHlUar7g 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 literal 0 HcmV?d00001 diff --git a/src/app/fonts/Avenir/avenir_regular.woff b/src/app/fonts/Avenir/avenir_regular.woff new file mode 100644 index 0000000000000000000000000000000000000000..096ad999e21712decaa1f9b8cb3717ae554188b4 GIT binary patch literal 22116 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 literal 0 HcmV?d00001 diff --git a/src/app/fonts/Avenir/style.css b/src/app/fonts/Avenir/style.css new file mode 100644 index 0000000..073bbb1 --- /dev/null +++ b/src/app/fonts/Avenir/style.css @@ -0,0 +1,10 @@ +@font-face { + font-family: 'Avenir'; + src: url('avenir_regular.eot'); + src: url('avenir_regular.eot?#iefix') format('embedded-opentype'), + url('avenir_regular.woff') format('woff'), + url('avenir_regular.ttf') format('truetype'), + url('avenir_regular.svg#avenirregular') format('svg'); + font-weight: normal; + font-style: normal; +} \ No newline at end of file diff --git a/src/app/globals.css b/src/app/globals.css index 6b717ad..ee651f5 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -2,20 +2,132 @@ @tailwind components; @tailwind utilities; +@import url('https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap'); + :root { - --background: #ffffff; - --foreground: #171717; + --background: #ffffff; + --foreground: #171717; } @media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; - } + :root { + --background: #171717; + --foreground: #ededed; + } } body { - color: var(--foreground); - background: var(--background); - font-family: Arial, Helvetica, sans-serif; + color: var(--foreground); + background: var(--background); + font-family: Arial, Helvetica, sans-serif; } + +.home-background { + z-index: -1; + background-color: #2f4f4f; + height: 100vh; + width: 100vw; + position: absolute; + top: 0; + left: 0; + overflow: hidden; +} + +.home-background h2 { + font-family: 'Montserrat' sans-serif; + font-weight: bold; + font-size: 3vw; + text-transform: uppercase; + text-shadow: 3px 3px #16a085; +} + +.home-background .bg-1 { + position: absolute; + left: 0; + right: 0; + bottom: 0; + height: 40vw; + background-image: url('/assets/images/background.svg'); + background-size: cover; +} + +.home-background .bg-2 { + z-index: 999; + position: absolute; + top: 0; + bottom: 0; + right: 0; + left: 0; + background-image: url('/assets/images/background-moutains.svg'); + background-repeat: no-repeat; + background-position: bottom; + background-size: contain; +} + +.home-background .train { + position: absolute; + bottom: 0; + left: -50vw; + width: 100vw; + height: 22.5vw; + /* overflow: hidden; */ +} + +.train.moving { + animation: moving-train 20s linear infinite; +} + +.train .train-text { + font-family: 'Montserrat' sans-serif; + position: absolute; + top: -50px; + left: 25vw; + word-wrap: normal; + max-width: 250px; + height: 80px; + padding-left: 5px; + border-left: solid 1px #FFF; +} + +.train .moving-train { + display: flex; + align-items: baseline; +} + +.moving-train .wagon-l { + background-image: url('/assets/images/XGC_T2_AB_L.gif'); + background-size: contain; + background-repeat: no-repeat; + background-position: bottom right; + height: 3.7vw; + width: 16vw; +} + +.moving-train .wagon-m { + background-image: url('/assets/images/BRGC_T2_R.gif'); + background-size: contain; + background-repeat: no-repeat; + background-position: bottom; + height: 5vw; + width: 11.5vw; +} + +.moving-train .wagon-r { + background-image: url('/assets/images/XGC_T2_R.gif'); + background-size: contain; + background-repeat: no-repeat; + background-position: bottom left; + height: 3.7vw; + width: 16vw; +} + +@keyframes moving-train { + 0% { + left: -50vw; + ; + } + + 100% { + left: 125vw; + } +} \ No newline at end of file diff --git a/src/app/layout.js b/src/app/layout.js deleted file mode 100644 index 9800bf8..0000000 --- a/src/app/layout.js +++ /dev/null @@ -1,30 +0,0 @@ -import localFont from "next/font/local"; -import "./globals.css"; - -const geistSans = localFont({ - src: "./fonts/GeistVF.woff", - variable: "--font-geist-sans", - weight: "100 900", -}); -const geistMono = localFont({ - src: "./fonts/GeistMonoVF.woff", - variable: "--font-geist-mono", - weight: "100 900", -}); - -export const metadata = { - title: "Create Next App", - description: "Generated by create next app", -}; - -export default function RootLayout({ children }) { - return ( - - - {children} - - - ); -} diff --git a/src/app/lib/auth.js b/src/app/lib/auth.js new file mode 100644 index 0000000..37a35cf --- /dev/null +++ b/src/app/lib/auth.js @@ -0,0 +1,20 @@ +import { db } from "./db"; +import { cookies } from "next/headers"; + +export async function getUserFromSession() { + const sessionId = (await cookies()).get('session')?.value; + + if (!sessionId) { + return null; + } + + const [rows] = await (await db).query('SELECT * FROM sessions WHERE SESSION_ID = ?', [sessionId]); + if (rows.length === 0) { + return null; + } + + const [userRows] = await (await db).query('SELECT * FROM users WHERE USER_ID = ?', [rows[0].USER_ID]); + + + return { user: userRows.length ? userRows[0] : null, session: rows.length ? rows[0] : null }; +} \ No newline at end of file diff --git a/src/app/lib/authContext.js b/src/app/lib/authContext.js new file mode 100644 index 0000000..8899527 --- /dev/null +++ b/src/app/lib/authContext.js @@ -0,0 +1,37 @@ +'use client' + +import { createContext, useContext, useEffect, useState } from 'react'; + +export const AuthContext = createContext(); + +export function AuthProvider({ children }) { + const [user, setUser] = useState(null); + + useEffect(() => { + async function fetchUser() { + try { + const response = await fetch('/api/auth/user', { method: 'GET' }); + if (response.ok) { + const data = await response.json(); + setUser(data); + } else { + setUser({ isLoggedIn: false }); + } + } catch (error) { + console.error(error); + setUser({ isLoggedIn: false }); + } + } + fetchUser(); + }, []); + + return ( + + {children} + + ); +} + +export function useAuth() { + return useContext(AuthContext); +} \ No newline at end of file diff --git a/src/app/lib/authMiddleware.js b/src/app/lib/authMiddleware.js new file mode 100644 index 0000000..6bcab98 --- /dev/null +++ b/src/app/lib/authMiddleware.js @@ -0,0 +1,18 @@ +import { db } from "./db"; + +export async function middleware(handler) { + return async (req, res) => { + const sessionId = req.cookies.session; + if (!sessionId) { + return NextResponse.json({ message: 'Unauthorized' }, { status: 401 }); + } + + const [rows] = await (await db).query('SELECT * FROM sessions WHERE SESSION_ID = ?', [sessionId]); + if (rows.length === 0) { + return NextResponse.json({ message: 'Unauthorized' }, { status: 401 }); + } + + req.user = rows[0].USER_ID; + return handler(req); + }; +} \ No newline at end of file diff --git a/src/app/lib/db.js b/src/app/lib/db.js new file mode 100644 index 0000000..d71a31c --- /dev/null +++ b/src/app/lib/db.js @@ -0,0 +1,8 @@ +import { createConnection } from "mysql2/promise"; + +export const db = createConnection({ + host: "192.168.1.7", //"88.167.179.152", + user: 'infogare', + password: 'QTftGGEi3qUxcQON$', + database: 'infogare', +}); \ No newline at end of file diff --git a/src/app/lib/mailer.js b/src/app/lib/mailer.js new file mode 100644 index 0000000..542c365 --- /dev/null +++ b/src/app/lib/mailer.js @@ -0,0 +1,98 @@ +import nodemailer from 'nodemailer'; + +const transporter = nodemailer.createTransport({ + host: process.env.EMAIL_SMTP, + port: process.env.EMAIL_PORT, + secure: true, + auth: { + user: process.env.EMAIL_USER, + pass: process.env.EMAIL_PASS + } +}); + +const baseMail = (title, body) => { + return ` + + + + + + + + +

+ + + `; +} + +export { baseMail, transporter }; \ No newline at end of file diff --git a/src/app/lib/socket_server.js b/src/app/lib/socket_server.js new file mode 100644 index 0000000..5aa6e91 --- /dev/null +++ b/src/app/lib/socket_server.js @@ -0,0 +1,23 @@ +import { Server } from "socket.io"; + +let io; + +export function initSocketServer(server) { + if (!io) { + io = new Server(server); + + io.on('connection', (socket) => { + console.log('Client connected'); + + socket.on('disconnect', () => { + console.log('Client disconnected'); + }); + }); + } +} + +export function notifyClients(event, data) { + if (io) { + io.emit(event, data); + } +} \ No newline at end of file diff --git a/src/app/page.js b/src/app/page.js deleted file mode 100644 index 61edd89..0000000 --- a/src/app/page.js +++ /dev/null @@ -1,101 +0,0 @@ -import Image from "next/image"; - -export default function Home() { - return ( -
-
- Next.js logo -
    -
  1. - Get started by editing{" "} - - src/app/page.js - - . -
  2. -
  3. Save and see your changes instantly.
  4. -
- - -
- -
- ); -} diff --git a/src/app/styles/departs/trains.css b/src/app/styles/departs/trains.css new file mode 100644 index 0000000..f6d3879 --- /dev/null +++ b/src/app/styles/departs/trains.css @@ -0,0 +1,1517 @@ +/* -- compass -- */ +/* -- sass files -- */ +/* -- colors -- */ +/* -- colors (screen) -- */ +/* -- widths -- */ +/* -- base -- */ +@import url("https://fonts.googleapis.com/css?family=Roboto:100,300,100italic,300italic"); + +html, body { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + -moz-text-size-adjust: none; + -ms-text-size-adjust: none; + -webkit-text-size-adjust: none; + text-size-adjust: none; + overflow-x: hidden; + -moz-background-size: contain; + -o-background-size: contain; + -webkit-background-size: contain; + background-size: contain; +} + +body { + font-family: 'Achemine'; + font-size: 1vh; + font-weight: normal; + line-height: 1; +} + +*, +:after, +:before { + outline: none; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +*:focus, +*:active, +:after:focus, +:after:active, +:before:focus, +:before:active { + outline: none; +} + +a { + color: inherit; + text-decoration: none; +} + +.rows { + position: relative; + left: 0; + width: 100%; + height: 100%; + -moz-transition: left 0.3s ease; + -o-transition: left 0.3s ease; + -webkit-transition: left 0.3s ease; + transition: left 0.3s ease; +} + +.rows .row-group { + height: 10%; +} + +.rows .row-group:hover { + cursor: default; +} + +.rows .row-group>.row { + display: table; + table-layout: fixed; + width: 100%; + height: 100%; + color: #fff; +} + +.rows .row-group>.row>div { + display: table-cell; + overflow: hidden; + line-height: 1.2; + vertical-align: text-bottom; +} + +.rows .row-group-hidden { + display: none; +} + + +/* -- sizes -- */ + +.rows .row-group.row-group-2 { + height: 20%; +} + +.rows .row-group.row-group-10 { + height: 100%; +} + + +/* -- bar -- */ + +.row-group-bar { + position: absolute; + bottom: 0; + height: 10%; + padding-left: 2vh; +} + +.row-group-bar.row-group-bar-yellow { + background: #ffbf51 !important; +} + +.row-group-bar.row-group-bar-yellow .text-scroll-x { + color: #003a79; + font-style: normal !important; +} + +.row-group-bar.row-group-bar-red { + background: #cd0037 !important; +} + +.row-group-bar.row-group-bar-red .text-scroll-x { + color: #ffffff; + font-style: normal !important; +} + +.row-group-bar.row-group-bar-purple { + background: #50077D !important; +} + +.row-group-bar.row-group-bar-purple .text-scroll-x { + color: #ffffff; + font-style: normal !important; +} + +.row-group-bar.row-group-bar-black { + background: #000000; +} + +.row-group-bar.row-group-bar-black .text-scroll-x { + color: #ffffff; + font-style: normal !important; +} + +.row-group-bar .col-first { + width: auto !important; + vertical-align: middle !important; +} + +.row-group-bar .col-first .bar-informations { + font-size: 7em; +} + +.row-group-bar .col-first .bar-informations { + font-size: 7em; +} + +.row-group-bar .col-second { + width: 30vh; + text-align: center; + vertical-align: bottom !important; +} + + +/* -- selection -- */ + +::selection { + color: white; + background: #006f94; +} + +::-moz-selection { + color: white; + background: #006f94; +} + +.alert { + position: relative; + margin-bottom: 20px; + padding: 20px 20px 20px 80px; + color: #fff; + font-size: 16px; + font-family: 'Roboto'; + line-height: 1.3; + background: #e74c3c; +} + +.alert.alert-flash { + position: fixed; + top: 7px; + right: 0; + margin-bottom: 0; + z-index: 5000; + animation: alert 4s ease forwards; +} + +.alert.alert-success { + background: #006f94; +} + +.alert.alert-success .icon { + background: #006f94; +} + +.alert.alert-success .icon:before { + content: '\e116'; +} + +.alert.alert-info { + color: #878787; + background: #ededed; +} + +.alert.alert-info .icon { + background: #e0e0e0; +} + +.alert.alert-info .icon:before { + content: '\e60a'; +} + +.alert .icon { + position: absolute; + top: 0; + left: 0; + width: 60px; + height: 100%; + padding: 22px 0; + font-family: 'icomoon'; + text-align: center; + background: #d62c1a; +} + +.alert .icon:before { + content: '\e117'; +} + +@keyframes alert { + 0% { + opacity: 0; + transform: translateX(100%); + } + + 10% { + opacity: 1; + transform: translateX(0%); + } + + 90% { + opacity: 1; + transform: translateX(0%); + } + + 100% { + opacity: 0; + transform: translateX(100%); + } +} + +.sidebar { + position: fixed; + z-index: 5001; + height: 100%; + overflow: hidden; + color: #fff; + font-family: 'Roboto'; + font-size: 16px; + line-height: 1.4; + background: #1c1d26; + -moz-transition: width 0.3s ease, left 0.3s ease, right 0.3s ease; + -o-transition: width 0.3s ease, left 0.3s ease, right 0.3s ease; + -webkit-transition: width 0.3s ease, left 0.3s ease, right 0.3s ease; + transition: width 0.3s ease, left 0.3s ease, right 0.3s ease; +} + +.sidebar.sidebar-left { + width: 76px; + left: -76px; +} + +.sidebar.sidebar-left:hover { + left: 0; +} + +.sidebar.sidebar-left:hover~.rows { + left: 76px; +} + +.sidebar.sidebar-right { + width: 450px; + right: -450px; +} + +.sidebar .sidebar-toggle, +.sidebar .sidebar-header { + display: block; + height: 76px; + line-height: 76px; + margin-bottom: 5px; + text-align: center; + background: #006f94; +} + +.sidebar .sidebar-toggle.sidebar-toggle, +.sidebar .sidebar-header.sidebar-toggle { + position: absolute; + top: 0; + z-index: 5000; + width: 100%; + font-size: 1.8em; + visibility: visible; + opacity: 1; + -moz-transition-delay: 0s; + -o-transition-delay: 0s; + -webkit-transition-delay: 0s; + transition-delay: 0s; +} + +.sidebar .sidebar-inner { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + padding-right: 20px; + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + box-sizing: content-box; + overflow-y: auto; + overflow-x: hidden; + opacity: 0; + -moz-transition: visibility 0s ease 0.2s; + -o-transition: visibility 0s ease 0.2s; + -webkit-transition: visibility 0s ease; + -webkit-transition-delay: 0.2s; + transition: visibility 0s ease 0.2s; + -moz-transition: opacity 0.2s ease; + -o-transition: opacity 0.2s ease; + -webkit-transition: opacity 0.2s ease; + transition: opacity 0.2s ease; +} + +.sidebar .sidebar-inner li { + width: 450px; + position: relative; +} + +.sidebar .sidebar-inner li.sidebar-header a { + padding: 0; + color: #fff; + font-size: 1.3em; + font-family: "Roboto", Helvetica, sans-serif; + font-weight: bold; +} + +.sidebar .sidebar-inner li.sidebar-title { + padding: 20px 40px; + font-size: 1.2em; + font-weight: 500; +} + +.sidebar .sidebar-inner li a { + display: block; + padding: 15px 40px; + color: rgba(250, 250, 250, 0.8); + -moz-transition: color 0.2s ease; + -o-transition: color 0.2s ease; + -webkit-transition: color 0.2s ease; + transition: color 0.2s ease; +} + +.sidebar .sidebar-inner li a:hover, +.sidebar .sidebar-inner li a:focus { + color: #fff; +} + +.sidebar .sidebar-inner li span[class^="icon-"], +.sidebar .sidebar-inner li a.sidebar-btn { + display: inline-block; + position: absolute; + right: 0; + top: 0; + padding: 15px 30px; +} + +.sidebar-overlay { + display: none; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 5000; +} + + +/* -- sidebar-active -- */ + +.sidebar-active { + position: fixed; + z-index: 4000; + top: 0; + left: 0; + width: 76px; + height: 100%; +} + +.sidebar-active:hover~.sidebar-left { + left: 0; +} + +.sidebar-active:hover~.rows { + left: 76px; +} + + +/* -- toggleSidebar -- */ + +.toggle-left .sidebar-left { + left: 0 !important; + width: 450px; +} + +.toggle-left .sidebar-left .sidebar-toggle { + visibility: hidden !important; + opacity: 0; + -moz-transition: visibility 0s ease 0.2s; + -o-transition: visibility 0s ease 0.2s; + -webkit-transition: visibility 0s ease; + -webkit-transition-delay: 0.2s; + transition: visibility 0s ease 0.2s; + -moz-transition: opacity 0.2s ease; + -o-transition: opacity 0.2s ease; + -webkit-transition: opacity 0.2s ease; + transition: opacity 0.2s ease; +} + +.toggle-left .sidebar-left .sidebar-inner { + visibility: visible; + opacity: 1; +} + +.toggle-left .sidebar-overlay { + display: block; +} + +.toggle-left .rows { + left: 450px !important; +} + +.toggle-right .sidebar-right { + right: 0 !important; +} + +.toggle-right .sidebar-right .sidebar-toggle { + visibility: hidden !important; + opacity: 0; + -moz-transition: visibility 0s ease 0.2s; + -o-transition: visibility 0s ease 0.2s; + -webkit-transition: visibility 0s ease; + -webkit-transition-delay: 0.2s; + transition: visibility 0s ease 0.2s; + -moz-transition: opacity 0.2s ease; + -o-transition: opacity 0.2s ease; + -webkit-transition: opacity 0.2s ease; + transition: opacity 0.2s ease; +} + +.toggle-right .sidebar-right .sidebar-inner { + visibility: visible; + opacity: 1; +} + +.toggle-right .sidebar-overlay { + display: block; +} + +.toggle-right .rows { + left: -450px !important; +} + + +/* -- informations -- */ + +.bar-informations { + display: inline-block; + white-space: nowrap; + font-style: italic; +} + + +/* -- clock -- */ + +.bar-clock { + display: inline-block; + position: relative; + z-index: 5000; + width: 80%; + height: 7.5vh; + font-size: 5vh; + font-weight: 700; + line-height: 1.5; + border: solid 0.5vh #fff; + border-bottom: none; + border-radius: 0.8vh 0.8vh 0 0; + background: #003a79; +} + +.bar-clock small { + display: inline-block; + color: #ff9f17; +} + + +/* -- blink -- */ + +.animation-blink { + position: relative; +} + +.animation-blink .animation-blink-1, +.animation-blink .animation-blink-2 { + position: absolute; + top: 50%; + transform: translateY(-50%); + will-change: visibility; + animation: blink 4s steps(2, start) infinite; + -webkit-animation: blink 4s steps(2, start) infinite; +} + +.animation-blink .animation-blink-2 { + visibility: hidden; + animation-delay: 2s; + -webkit-animation-delay: 2s; +} + +.animation-blink .animation-blink-clock { + animation: blink 1.5s steps(2, start) infinite; + -webkit-animation: blink 1.5s steps(2, start) infinite; +} + +@keyframes blink { + from { + visibility: visible; + } + + to { + visibility: hidden; + } +} + +@-webkit-keyframes blink { + from { + visibility: visible; + } + + to { + visibility: hidden; + } +} + +/* -- provenance in departures -- */ + +.scroll-provenance { + animation: scrollstop 3s linear infinite; + -webkit-animation: scrollstop 3s linear infinite; +} + +@-webkit-keyframes scrollstop { + from { + transform: translateX(0%); + } + + to { + transform: translateX(-100%); + } +} + +@keyframes scrollstop { + from { + transform: translateX(0%); + } + + to { + transform: translateX(-100%); + } +} + +/* -- scroll-x -- */ + +.animation-scroll-x { + transform: translateZ(0); + will-change: transform; + animation: scrollX 0s linear infinite; + -webkit-animation: scrollX 0s linear infinite; +} + +@keyframes scrollX { + from { + transform: translateX(0%); + } + + to { + transform: translateX(-100%); + } +} + +@-webkit-keyframes scrollX { + from { + transform: translateX(0%); + } + + to { + transform: translateX(-100%); + } +} + + +@keyframes scrollY { + + /* 0% { transform: translateY(100%); } + 25% { transform: translateY(-100%); } + 50% { transform: translateY(100%); } + 75% { transform: translateY(0%); } + 100% { transform: translateY(-100%); } */ + from { + transform: translateY(0%); + } + + 50% { + transform: translateY(100%); + } + + to { + transform: translateY(100%); + } +} + +@-webkit-keyframes scrollY { + from { + transform: translateY(0%); + } + + to { + transform: translateY(100%); + animation-timing-function: ease-in-out + } +} + +/* -- scroll-y -- */ + +.row-group-informations .scroll-y { + transform: translateZ(0); + will-change: transform; + position: absolute; +} + +.row-group-train .scroll-y { + transform: translateZ(0); + will-change: transform; + position: relative; +} + + +/* -- texts -- */ + +.text-scroll-x { + display: inline-block; + padding-left: 100%; + color: rgba(255, 255, 255, 0.7); + font-size: 8em; + white-space: nowrap; +} + +.text-scroll-x span { + display: inline; +} + +.text-scroll-x span:after { + content: ''; + display: inline-block; + width: 2.5vh; + height: 2.5vh; + margin: 0 1.5vh; + margin-bottom: 0.5vh; + border-radius: 50%; + background: #f5f900; +} + +.text-scroll-x span:last-child:after { + display: none; +} + +.text-type { + line-height: 1; + font-size: 3.3em; + font-weight: 100; + font-family: 'Achemine'; + display: inline-block; +} + +.text-number { + line-height: 1; + font-size: 4em; + font-weight: bold; + display: inline-block; +} + +.text-time { + color: #f5f900; + font-size: 6.5em; + font-weight: bold; +} + +.text-time-rer { + color: #f5f900; + font-size: 5em; + font-weight: bold; +} + +.text-time.minutes { + font-size: 5em; +} + +.text-time.retard { + color: #f9a200; +} + +.text-features-1 { + margin-top: 2%; + font-size: 3.5em; + font-weight: bold; +} + +.text-features-2 { + color: #fff; + font-size: 0.8em; + font-weight: bold; +} + +.text-features-3 { + color: #f5f900; + font-size: 3.5em; + font-weight: bold; +} + + +/* -- background -- */ + +.row-background { + position: absolute; + right: 5vh; + bottom: 10vh; + width: 23vh; + height: 90%; + background-repeat: no-repeat; +} + + +/* -- cols -- */ + +.row-group { + height: 10%; +} + +.row-group .row { + position: relative; +} + +.row-group .row .col-first { + width: 17vh; +} + +.row-group .row .col-first-details { + display: relative; + color: #f5f900; + width: 60vh; + font-size: 5em; + text-align: center; + white-space: nowrap; +} + +.row-group .row .col-second { + position: relative; +} + +.row-group .row .col-second-first { + width: 20vh; + vertical-align: middle !important; +} + +.row-group .row .col-second-second { + width: 24vh; +} + +.row-group .row .col-second-third { + font-size: 8em; + white-space: nowrap; +} + +.row-group .row .col-second-merged { + width: 44vh; +} + +.row-group .row .col-second-merged>div { + display: table; +} + +.row-group .row .col-second-merged>div>div { + display: table-cell; + vertical-align: middle; +} + +.row-group .row .col-hide { + display: block; + position: relative; + width: 0; + overflow: visible !important; +} + +.row-group .row .col-hide .col-hide-inner { + position: absolute; + top: 0; + bottom: 0; + right: -1vh; + width: 100vh; + overflow: hidden; +} + +.row-group .row .col-third { + position: relative; + z-index: 1; + width: 18vh; + overflow: visible !important; +} + + +/* -- sizes -- */ + +.rows .row-group-2 .row:nth-of-type(1) { + height: 55%; +} + +.rows .row-group-2 .row:nth-of-type(1)>div { + line-height: 1; +} + +.rows .row-group-2 .row:nth-of-type(1) .col-second-first { + vertical-align: text-bottom !important; +} + +.rows .row-group-2 .row:nth-of-type(1) .col-second-first .animation-blink { + height: 6vh; +} + +.rows .row-group-2 .row:nth-of-type(1) .col-second-third { + font-size: 10em; +} + +.rows .row-group-2 .row:nth-of-type(1) .col-second-third .animation-rotate { + height: 11vh; +} + +.rows .row-group-2 .row:nth-of-type(1) .col-second-third .animation-rotate div { + margin-bottom: 1vh; +} + +.rows .row-group-2 .row:nth-of-type(1) .text-time { + font-size: 7.5em; +} + +.rows .row-group-2 .row:nth-of-type(1) .text-time.minutes { + font-size: 5em; +} + +.rows .row-group-2 .row:nth-of-type(1) .train-track { + height: 11vh; + width: 11vh; + font-size: 7.5em; + line-height: 1.4; +} + +.rows .row-group-2 .row:nth-of-type(1) .train-track.train-track-p:before { + width: 10.25vh; + height: 10.25vh; +} + +.rows .row-group-2 .row:nth-of-type(1) .train-track.train-track-h:not(.train-track-view) { + line-height: 0.4; +} + +.rows .row-group-2 .row:nth-of-type(2) { + height: 45%; +} + +.rows .row-group-2 .row:nth-of-type(2)>div { + line-height: 1.05; +} + + +/* -- styles -- */ + +.rows.rows-departures.scroll-y { + transform: translateZ(0); + will-change: transform; + animation: scrollY 10s linear infinite; + -webkit-animation: scrollY 10s linear infinite; +} + +.rows.rows-departures, +.rows.rows-transilien { + background: #0064aa; +} + +.rows.rows-departures .row-group:nth-of-type(odd), +.rows.rows-transilien .row-group:nth-of-type(odd) { + background: #0064aa; +} + +.rows.rows-departures .row-group:nth-of-type(odd) .train-track-h:not(.train-track-view), +.rows.rows-transilien .row-group:nth-of-type(odd) .train-track-h:not(.train-track-view) { + color: #0064aa; +} + +.rows.rows-departures .row-group:nth-of-type(even), +.rows.rows-transilien .row-group:nth-of-type(even) { + background: #003a79; +} + +.rows.rows-departures .row-group:nth-of-type(even) .train-track-h:not(.train-track-view), +.rows.rows-transilien .row-group:nth-of-type(even) .train-track-h:not(.train-track-view) { + color: #003a79; +} + +.rows.rows-departures .row-background, +.rows.rows-transilien .row-background { + background-image: url(../../assets/row-background-departures.svg); +} + +.rows.rows-arrivals { + background: #217a42; +} + +.rows.rows-arrivals .row-group:nth-of-type(odd) { + background: #217a42; +} + +.rows.rows-arrivals .row-group:nth-of-type(odd) .train-track-h:not(.train-track-view) { + color: #217a42; +} + +.rows.rows-arrivals .row-group:nth-of-type(even) { + background: #0c5639; +} + +.rows.rows-arrivals .row-group:nth-of-type(even) .train-track-h:not(.train-track-view) { + color: #0c5639; +} + +.rows.rows-arrivals .row-background { + background-image: url(../../assets/row-background-arrivals.svg); +} + +.rows.rows-error { + background: #ec0e0e; +} + +.rows.rows-error .row-group:nth-of-type(odd) { + background: #a00e0e; +} + + +/* -- logo -- */ + +.train-logo { + height: 6vh; + background: no-repeat center; + -moz-background-size: contain; + -o-background-size: contain; + -webkit-background-size: contain; + background-size: contain; +} + +.train-logo.train-logo-sncf { + background-image: url(../../assets/logos-monochrome/logo-sncf.svg); +} + +.train-logo.train-logo-inoui { + background-image: url(../../assets/logos-monochrome/logo-inoui.svg); +} + +.train-logo.train-logo-ter { + background-image: url(../../assets/logos-monochrome/logo-ter.svg); +} + +.train-logo.train-logo-tgv { + background-image: url(../../assets/logos-monochrome/logo-tgv.svg); +} + +.train-logo.train-logo-ice { + background-image: url(../../assets/logos-monochrome/logo-ice.svg); +} + +.train-logo.train-logo-lyria { + background-image: url(../../assets/logos-monochrome/logo-lyria.svg); +} + +.train-logo.train-logo-ouigo { + background-image: url(../../assets/logos-monochrome/logo-ouigo.svg); +} + +.train-logo.train-logo-ouigo-classique { + background-image: url(../../assets/logos-monochrome/logo-ouigo-classique.svg); +} + +.train-logo.train-logo-ler { + background-image: url(../../assets/logos-monochrome/logo-ler.svg); +} + +.train-logo.train-logo-fluo { + background-image: url(../../assets/logos-monochrome/logo-fluo.svg); +} + +.train-logo.train-logo-occitanie { + background-image: url(../../assets/logos-monochrome/logo-occitanie.svg); +} + +.train-logo.train-logo-intercite { + background-image: url(../../assets/logos-monochrome/logo-intercites.svg); + margin-left: 10%; + margin-right: 10%; +} + +.train-logo.train-logo-aleop { + background-image: url(../../assets/logos-monochrome/logo-aleop.svg); +} + +.train-logo.train-logo-auvergne-rhone-alpes { + background-image: url(../../assets/logos-monochrome/logo-auvergerhonealpes.svg); +} + +.train-logo.train-logo-breizhgo { + background-image: url(../../assets/logos-monochrome/logo-breizhgo.svg); +} + +.train-logo.train-logo-db { + background-image: url(../../assets/logos-monochrome/logo-db.svg); +} + +.train-logo.train-logo-ter-hauts-de-france { + background-image: url(../../assets/logos-monochrome/logo-hautsdefrance.svg); +} + +.train-logo.train-logo-lio { + background-image: url(../../assets/logos-monochrome/logo-lio.svg); +} + +.train-logo.train-logo-ter-metrolor { + background-image: url(../../assets/logos-monochrome/logo-metrolor.svg); +} + +.train-logo.train-logo-mobigo { + background-image: url(../../assets/logos-monochrome/logo-mobigo.svg); +} + +.train-logo.train-logo-nomad { + background-image: url(../../assets/logos-monochrome/logo-nomad.svg); +} + +.train-logo.train-logo-remi { + background-image: url(../../assets/logos-monochrome/logo-remi.svg); +} + +.train-logo.train-logo-renfe-ave { + background-image: url(../../assets/logos-monochrome/logo-renfeave.svg); +} + +.train-logo.train-logo-sbb { + background-image: url(../../assets/logos-monochrome/logo-sbb.svg); +} + +.train-logo.train-logo-sncf-1985 { + background-image: url(../../assets/logos-monochrome/logo-sncf1985.svg); +} + +.train-logo.train-logo-sncf-1992 { + background-image: url(../../assets/logos-monochrome/logo-sncf1992.svg); +} + +.train-logo.train-logo-ter-alsace { + background-image: url(../../assets/logos-monochrome/logo-teralsace.svg); +} + +.train-logo.train-logo-ter-aquitaine { + background-image: url(../../assets/logos-monochrome/logo-teraquitaine.svg); +} + +.train-logo.train-logo-ter-basse-normandie { + background-image: url(../../assets/logos-monochrome/logo-terbassenormandie.svg); +} + +.train-logo.train-logo-ter-bourgogne { + background-image: url(../../assets/logos-monochrome/logo-terbourgogne.svg); +} + +.train-logo.train-logo-ter-bretagne { + background-image: url(../../assets/logos-monochrome/logo-terbretagne.svg); +} + +.train-logo.train-logo-ter-centre { + background-image: url(../../assets/logos-monochrome/logo-tercentre.svg); +} + +.train-logo.train-logo-ter-languedoc-roussillon { + background-image: url(../../assets/logos-monochrome/logo-terlanguedocroussillon.svg); +} + +.train-logo.train-logo-ter-midi-pyrenees { + background-image: url(../../assets/logos-monochrome/logo-termidipyrenees.svg); +} + +.train-logo.train-logo-ter-nord-pas-de-calais { + background-image: url(../../assets/logos-monochrome/logo-ternordpasdecalais.svg); +} + +.train-logo.train-logo-poitou-charentes { + background-image: url(../../assets/logos-monochrome/logo-terpoitoucharentes.svg); +} + +.train-logo.train-logo-thello { + background-image: url(../../assets/logos-monochrome/logo-thello.svg); +} + +.train-logo.train-logo-tram-train { + background-image: url(../../assets/logos-monochrome/logo-tramtrain.svg); +} + +.train-logo.train-logo-zou { + background-image: url(../../assets/logos-monochrome/logo-zou.svg); +} + +.train-logo.train-logo-eurostar { + background-image: url(../../assets/logos-monochrome/logo-eurostar.svg); +} + +.train-logo.train-logo-thalys { + background-image: url(../../assets/logos-monochrome/logo-thalys.svg); +} + +.train-logo.train-logo-rer-a { + background-image: url(../../assets/logos-monochrome/logo-rer-a.svg); +} + +.train-logo.train-logo-rer-b { + background-image: url(../../assets/logos-monochrome/logo-rer-b.svg); +} + +.train-logo.train-logo-rer-c { + background-image: url(../../assets/logos-monochrome/logo-rer-c.svg); +} + +.train-logo.train-logo-rer-d { + background-image: url(../../assets/logos-monochrome/logo-rer-d.svg); +} + +.train-logo.train-logo-rer-e { + background-image: url(../../assets/logos-monochrome/logo-rer-e.svg); +} + +.train-logo.train-logo-t-h { + background-image: url(../../assets/logos-monochrome/logo-t-h.svg); +} + +.train-logo.train-logo-t-j { + background-image: url(../../assets/logos-monochrome/logo-t-j.svg); +} + +.train-logo.train-logo-t-k { + background-image: url(../../assets/logos-monochrome/logo-t-k.svg); +} + +.train-logo.train-logo-t-l { + background-image: url(../../assets/logos-monochrome/logo-t-l.svg); +} + +.train-logo.train-logo-t-n { + background-image: url(../../assets/logos-monochrome/logo-t-n.svg); +} + +.train-logo.train-logo-t-p { + background-image: url(../../assets/logos-monochrome/logo-t-p.svg); +} + +.train-logo.train-logo-t-r { + background-image: url(../../assets/logos-monochrome/logo-t-r.svg); +} + +.train-logo.train-logo-t-u { + background-image: url(../../assets/logos-monochrome/logo-t-u.svg); +} + +.train-logo.train-logo-lunea { + background-image: url(../../assets/logos-monochrome/logo-lunea.svg); +} + +.train-logo.train-logo-teoz { + background-image: url(../../assets/logos-monochrome/logo-teoz.svg); +} + +.train-logo.train-logo-frecciarossa { + background-image: url(../../assets/logos-monochrome/logo-frecciarossa.svg); +} + +.train-logo.train-logo-trenitalia { + background-image: url(../../assets/logos-monochrome/logo-trenitalia.svg); +} + +.train-logo.train-logo-cfl { + background-image: url(../../assets/logos-monochrome/logo-cfl.svg); +} + +.train-logo.train-logo-sncb { + background-image: url(../../assets/logos-monochrome/logo-sncb.svg); +} + + +/* -- rer --*/ + +.rer.train-lng { + height: 75%; + background: no-repeat center; + -moz-background-size: contain; + -o-background-size: contain; + -webkit-background-size: contain; + background-size: contain; +} + +.rer.train-lng.train-long { + background-image: url(../../assets/train_long.png); +} + +.rer.train-lng.train-court { + background-image: url(../../assets/train_court.png); +} + +.rer-hour-mode { + font-size: 4em; +} + +/* -- type - number -- */ + +.train-type-number { + display: inline-block; +} + + +/* -- information-dynamic -- */ + +.train-information-dynamic { + position: absolute; + right: 0; + top: 0.7vh; + bottom: 0.7vh; + width: 55vh; + padding-left: 2vh; + font-size: 4em; + line-height: 1; + border-left: 0.5vh #fff solid; +} + +.row-group:nth-of-type(odd) .train-information-dynamic { + background-color: #0064aa; +} + +.row-group:nth-of-type(even) .train-information-dynamic { + background-color: #003a79; +} + +.train-information-dynamic.train-information-dynamic-yellow { + color: #f5f900; + border-color: #f5f900; +} + +.train-information-dynamic-station { + display: block; + width: 100%; + overflow: hidden; +} + + +/* -- track -- */ + +.train-track { + display: none; + position: absolute; + top: 0.75vh; + right: 3vh; + width: 8vh; + height: 8vh; + font-size: 5.6em; + font-weight: bold; + line-height: 1.3; + text-align: center; + border: solid 0.35vh #fff; + border-radius: 10%; + z-index: 1000; +} + +.train-track span { + display: none; +} + +.train-track.train-track-view { + display: block; +} + +.train-track.train-track-view span { + display: inline; +} + +.train-track.train-track-view h1, +.train-track.train-track-view small { + display: none; +} + +.train-track.train-track-p { + display: block; +} + +.train-track.train-track-p.train-track-view { + background: transparent !important; +} + +.train-track.train-track-p.train-track-view:before { + content: ''; + position: absolute; + z-index: -1; + display: block; + width: 7.25vh; + height: 7.25vh; +} + +.train-track.train-track-p.train-track-view.train-track-y:before { + box-shadow: 1.25vh 1.25vh 0 #f5f900; +} + +.train-track.train-track-p.train-track-view.train-track-b:before { + box-shadow: 1.25vh 1.25vh 0 #115db6; +} + +.train-track.train-track-p.train-track-y { + background: #f5f900; +} + +.train-track.train-track-p.train-track-b { + background: #115db6; +} + +.train-track.train-track-h:not(.train-track-view) { + display: block; + line-height: 0.4; + background: #fff; +} + +.train-track.train-track-h:not(.train-track-view) h1 { + margin: 0; + font-size: 0.75em; +} + +.train-track.train-track-h:not(.train-track-view) small { + font-size: 0.4em; +} + +.train-track.train-track-view.noview { + border: dashed 0.35vh #fff; +} + +.train-track.train-track-car { + border: none; + background: url(../../assets/logos-monochrome/track-car.svg) no-repeat center; + background-size: cover; +} + + +/* -- rotate -- */ + +.animation-rotate { + height: 10vh; + overflow: hidden; + transform: translateZ(0); + will-change: transform; +} + +.animation-rotate .animation-rotate-inner { + height: 100%; + animation: rotate 9s linear infinite; + -webkit-animation: rotate 9s linear infinite; +} + +.animation-rotate .animation-rotate-inner div { + margin-bottom: 0.5vh; +} + +@keyframes rotate { + 33% { + transform: translateY(0%); + } + + 50%, + 83.33% { + transform: translateY(-100%); + } + + 100% { + transform: translateY(-200%); + } +} + +@-webkit-keyframes rotate { + 33% { + transform: translateY(0%); + } + + 50%, + 83.33% { + transform: translateY(-100%); + } + + 100% { + transform: translateY(-200%); + } +} + + +/* -- dynamic -- */ + +.animation-dynamic { + transform: translateX(100%) translateZ(0); + will-change: transform; + animation: dynamic 13s linear infinite; + -webkit-animation: dynamic 13s linear infinite; +} + +@keyframes dynamic { + 0% { + transform: translateX(100%) translateZ(0); + } + + 20%, + 60% { + transform: translateX(0%) translateZ(0); + } + + 80% { + transform: translateX(100%) translateZ(0); + } +} + +@-webkit-keyframes dynamic { + 0% { + transform: translateX(100%) translateZ(0); + } + + 20%, + 60% { + transform: translateX(0%) translateZ(0); + } + + 80% { + transform: translateX(100%) translateZ(0); + } +} + + +/* -- animation-dynamic-station -- */ + +.animation-dynamic-station { + width: calc(100% - 0vh); + transform: translateZ(0); + will-change: width; + animation: dynamic_station 13s linear infinite; + -webkit-animation: dynamic_station 13s linear infinite; +} + +@keyframes dynamic_station { + 0% { + width: calc(100% - 0vh); + } + + 20%, + 60% { + width: calc(100% - 55vh); + } + + 80% { + width: calc(100% - 0vh); + } +} + +@-webkit-keyframes dynamic_station { + 0% { + width: calc(100% - 0vh); + } + + 20%, + 60% { + width: calc(100% - 55vh); + } + + 80% { + width: calc(100% - 0vh); + } +} \ No newline at end of file diff --git a/src/app/theme.js b/src/app/theme.js new file mode 100644 index 0000000..fa603f6 --- /dev/null +++ b/src/app/theme.js @@ -0,0 +1,105 @@ +'use client'; + +import { outlinedInputClasses } from '@mui/material'; +import { createTheme } from '@mui/material/styles'; +import { Roboto } from 'next/font/google'; + +const roboto = Roboto({ + weight: ['300', '400', '500', '700'], + subsets: ['latin'], + display: 'swap', +}); + +const theme = createTheme({ + palette: { + mode: 'dark', + background: { + default: '#121212', + paper: '#1e1e1e', + }, + primary: { + main: '#217a42', + }, + secondary: { + main: '#0c5639', + }, + error: { + main: '#f44336', + }, + warning: { + main: '#ff9800', + }, + info: { + main: '#2196f3', + }, + success: { + main: '#4caf50', + }, + }, + typography: { + fontFamily: roboto.style.fontFamily, + h5: { + fontWeight: 400, + fontSize: '1.5rem', + } + }, + components: { + MuiCssBaseline: { + styleOverrides: ` + :root { + ${roboto.style.fontFamily} + } + `, + }, + MuiTextField: { + defaultProps: { + variant: 'outlined', + margin: 'dense', + }, + styleOverrides: { + root: { + '--TextField-brandBorderColor': '#217a42', + '--TextField-brandHoverBorderColor': '#FFFFFF', + '--TextField-brandFocusBorderColor': '#0c5639', + '& label.Mui-focused': { + color: 'var(--TextField-brandFocusBorderColor)', + }, + '& label': { + color: 'var(--TextField-brandBorderColor)', + }, + }, + }, + }, + MuiOutlinedInput: { + styleOverrides: { + notchedOutline: { + borderColor: 'var(--TextField-brandBorderColor)', + }, + root: { + [`&:hover .${outlinedInputClasses.notchedOutline}`]: { + borderColor: 'var(--TextField-brandHoverBorderColor)', + }, + [`&.Mui-focused .${outlinedInputClasses.notchedOutline}`]: { + borderColor: 'var(--TextField-brandFocusBorderColor)', + }, + [`& .${outlinedInputClasses.input}`]: { + color: '#FFFFFF', + }, + }, + }, + }, + MuiButton: { + defaultProps: { + variant: 'contained', + color: 'primary', + }, + }, + MuiAppBar: { + styleOverrides: { + + }, + }, + }, +}); + +export default theme; \ No newline at end of file