From dfd0c529cbca71fcaaad0d3133a171d33c0d9a17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mahir=20Re=C5=A1idovi=C4=87?= <148394365+mresidovic1@users.noreply.github.com> Date: Thu, 3 Apr 2025 16:31:56 +0200 Subject: [PATCH 01/97] Feature/refactoring (#9) * feature(refactoring) * feature(refactoring) * feature(refactoring) --- package-lock.json | 928 +++++++++++++++++++++++++++++++++++-- package.json | 9 +- src/assets/fonts/.gitkeep | 0 src/assets/icons/.gitkeep | 0 src/assets/images/.gitkeep | 0 src/components/.gitkeep | 0 src/data/.gitkeep | 0 src/hooks/.gitkeep | 0 src/pages/.gitkeep | 0 src/routes/.gitkeep | 0 src/sections/.gitkeep | 0 src/services/.gitkeep | 0 src/store/.gitkeep | 0 src/styles/.gitkeep | 0 src/utils/.gitkeep | 0 vite.config.js | 19 + 16 files changed, 927 insertions(+), 29 deletions(-) create mode 100644 src/assets/fonts/.gitkeep create mode 100644 src/assets/icons/.gitkeep create mode 100644 src/assets/images/.gitkeep create mode 100644 src/components/.gitkeep create mode 100644 src/data/.gitkeep create mode 100644 src/hooks/.gitkeep create mode 100644 src/pages/.gitkeep create mode 100644 src/routes/.gitkeep create mode 100644 src/sections/.gitkeep create mode 100644 src/services/.gitkeep create mode 100644 src/store/.gitkeep create mode 100644 src/styles/.gitkeep create mode 100644 src/utils/.gitkeep diff --git a/package-lock.json b/package-lock.json index f37c1db..0adf998 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,15 @@ "name": "web-admin", "version": "0.0.0", "dependencies": { + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.0", + "@mui/icons-material": "^7.0.1", + "@mui/material": "^7.0.1", + "@reduxjs/toolkit": "^2.6.1", "react": "^19.0.0", - "react-dom": "^19.0.0" + "react-dom": "^19.0.0", + "react-redux": "^9.2.0", + "react-router-dom": "^7.4.1" }, "devDependencies": { "@eslint/js": "^9.21.0", @@ -41,7 +48,6 @@ "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", @@ -97,7 +103,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/parser": "^7.27.0", @@ -131,7 +136,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.9", @@ -173,7 +177,6 @@ "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==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -183,7 +186,6 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -217,7 +219,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.27.0" @@ -261,11 +262,22 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", @@ -280,7 +292,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.26.2", @@ -299,7 +310,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -309,7 +319,6 @@ "version": "7.27.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -319,6 +328,158 @@ "node": ">=6.9.0" } }, + "node_modules/@emotion/babel-plugin": { + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", + "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.3.3", + "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/babel-plugin/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/@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.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", + "@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/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.14.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz", + "integrity": "sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "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/use-insertion-effect-with-fallbacks": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "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/@esbuild/aix-ppc64": { "version": "0.25.2", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", @@ -965,7 +1126,6 @@ "version": "0.3.8", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -980,7 +1140,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" @@ -990,7 +1149,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" @@ -1000,20 +1158,285 @@ "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": "7.0.1", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.0.1.tgz", + "integrity": "sha512-T5DNVnSD9pMbj4Jk/Uphz+yvj9dfpl2+EqsOuJtG12HxEihNG5pd3qzX5yM1Id4dDwKRvM3dPVcxyzavTFhJeA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.0.1.tgz", + "integrity": "sha512-x8Em7LISFQ6s/KeZj6ZKwJHq2WttRNe9KJLWFa72eQx7B53s/TzMKOEjGKB/YyhOx+bqqSv1pMvK373M4Xf07A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.10" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^7.0.1", + "@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": "7.0.1", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.0.1.tgz", + "integrity": "sha512-tQwjIIsn/UUSCHoCIQVkANuLua67h7Ro9M9gIHoGWaFbJFuF6cSO4Oda2olDVqIs4SWG+PaDChuu6SngxsaoyQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.10", + "@mui/core-downloads-tracker": "^7.0.1", + "@mui/system": "^7.0.1", + "@mui/types": "^7.4.0", + "@mui/utils": "^7.0.1", + "@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": "^7.0.1", + "@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/private-theming": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.0.1.tgz", + "integrity": "sha512-1kQ7REYjjzDukuMfTbAjm3pLEhD7gUMC2bWhg9VD6f6sHzyokKzX0XHzlr3IdzNWBjPytGkzHpPIRQrUOoPLCQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.10", + "@mui/utils": "^7.0.1", + "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": "7.0.1", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.0.1.tgz", + "integrity": "sha512-BeGe4xZmF7tESKhmctYrL54Kl25kGHPKVdZYM5qj5Xz76WM/poY+d8EmAqUesT6k2rbJWPp2gtOAXXinNCGunQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.10", + "@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": "7.0.1", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.0.1.tgz", + "integrity": "sha512-pK+puz0hRPHEKGlcPd80mKYD3jpyi0uVIwWffox1WZgPTQMw2dCKLcD+9ndMDJADnrKzmKlpoH756PPFh2UvWA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.10", + "@mui/private-theming": "^7.0.1", + "@mui/styled-engine": "^7.0.1", + "@mui/types": "^7.4.0", + "@mui/utils": "^7.0.1", + "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.4.0", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.4.0.tgz", + "integrity": "sha512-TxJ4ezEeedWHBjOmLtxI203a9DII9l4k83RXmz1PYSAmnyEcK2PglTNmJGxswC/wM5cdl9ap2h8lnXvt2swAGQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.10" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.0.1.tgz", + "integrity": "sha512-SJKrrebNpmK9rJCnVL29nGPhPXQYtBZmb7Dsp0f58uIUhQfAKcBXHE4Kjs06SX4CwqeCuwEVgcHY+MgAO6XQ/g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.10", + "@mui/types": "^7.4.0", + "@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/@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/@reduxjs/toolkit": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.6.1.tgz", + "integrity": "sha512-SSlIqZNYhqm/oMkXbtofwZSt9lrncblzo6YcZ9zoX+zLngRBrCOjK4lNLdkNucJF58RHOWrD9txT3bT3piH7Zw==", + "license": "MIT", + "dependencies": { + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.38.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.38.0.tgz", @@ -1339,6 +1762,12 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", @@ -1353,11 +1782,22 @@ "dev": true, "license": "MIT" }, + "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": "19.0.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.12.tgz", "integrity": "sha512-V6Ar115dBDrjbtXSrS+/Oruobc+qVbbUxDFC1RSbRqLt5SYvxxyIDrSC85RWml54g+jfNeEMZhEj7wW07ONQhA==", - "dev": true, "license": "MIT", "dependencies": { "csstype": "^3.0.2" @@ -1373,6 +1813,21 @@ "@types/react": "^19.0.0" } }, + "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/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" + }, "node_modules/@vitejs/plugin-react": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", @@ -1456,6 +1911,21 @@ "dev": true, "license": "Python-2.0" }, + "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", @@ -1511,7 +1981,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" @@ -1555,6 +2024,15 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "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-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1589,6 +2067,40 @@ "dev": true, "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/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-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -1608,14 +2120,12 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, "license": "MIT" }, "node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -1636,6 +2146,16 @@ "dev": true, "license": "MIT" }, + "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": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.128", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz", @@ -1643,6 +2163,15 @@ "dev": true, "license": "ISC" }, + "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/esbuild": { "version": "0.25.2", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", @@ -1698,7 +2227,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" @@ -1919,6 +2447,12 @@ "node": ">=16.0.0" } }, + "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", @@ -1972,6 +2506,15 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -2018,6 +2561,33 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "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", + "dependencies": { + "react-is": "^16.7.0" + } + }, + "node_modules/hoist-non-react-statics/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==", + "license": "MIT" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -2028,11 +2598,20 @@ "node": ">= 4" } }, + "node_modules/immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -2055,6 +2634,27 @@ "node": ">=0.8.19" } }, + "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/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2089,7 +2689,6 @@ "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": { @@ -2109,7 +2708,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -2125,6 +2723,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", @@ -2176,6 +2780,12 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -2199,6 +2809,18 @@ "dev": true, "license": "MIT" }, + "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==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -2226,7 +2848,6 @@ "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/nanoid": { @@ -2262,6 +2883,15 @@ "dev": true, "license": "MIT" }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -2316,7 +2946,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" @@ -2325,6 +2954,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", @@ -2345,11 +2992,25 @@ "node": ">=8" } }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "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", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, "license": "ISC" }, "node_modules/postcss": { @@ -2391,6 +3052,23 @@ "node": ">= 0.8.0" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/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==", + "license": "MIT" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -2422,6 +3100,35 @@ "react": "^19.1.0" } }, + "node_modules/react-is": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.1.0.tgz", + "integrity": "sha512-Oe56aUPnkHyyDxxkvqtd7KkdQP5uIUfHxd5XTb3wE9d/kRnZLmKbDB0GWk919tdQ+mxxPtG6EAs6RMT6i1qtHg==", + "license": "MIT" + }, + "node_modules/react-redux": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, "node_modules/react-refresh": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", @@ -2432,11 +3139,113 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.4.1.tgz", + "integrity": "sha512-Vmizn9ZNzxfh3cumddqv3kLOKvc7AskUT0dC1prTabhiEi0U4A33LmkDOJ79tXaeSqCqMBXBU/ySX88W85+EUg==", + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0", + "turbo-stream": "2.4.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.4.1.tgz", + "integrity": "sha512-L3/4tig0Lvs6m6THK0HRV4eHUdpx0dlJasgCxXKnavwhh4tKYgpuZk75HRYNoRKDyDWi9QgzGXsQ1oQSBlWpAA==", + "license": "MIT", + "dependencies": { + "react-router": "7.4.1" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "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/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" + } + }, + "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/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-from": { "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" @@ -2498,6 +3307,12 @@ "semver": "bin/semver.js" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2521,6 +3336,15 @@ "node": ">=8" } }, + "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", @@ -2544,6 +3368,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "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/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -2557,6 +3387,24 @@ "node": ">=8" } }, + "node_modules/supports-preserve-symlinks-flag": { + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/turbo-stream": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", + "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", + "license": "ISC" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -2611,6 +3459,15 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/vite": { "version": "6.2.4", "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.4.tgz", @@ -2716,6 +3573,21 @@ "dev": true, "license": "ISC" }, + "node_modules/yaml": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", + "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", + "dev": true, + "license": "ISC", + "optional": true, + "peer": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index e3d4f98..c80a749 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,15 @@ "preview": "vite preview" }, "dependencies": { + "@emotion/react": "^11.14.0", + "@emotion/styled": "^11.14.0", + "@mui/icons-material": "^7.0.1", + "@mui/material": "^7.0.1", + "@reduxjs/toolkit": "^2.6.1", "react": "^19.0.0", - "react-dom": "^19.0.0" + "react-dom": "^19.0.0", + "react-redux": "^9.2.0", + "react-router-dom": "^7.4.1" }, "devDependencies": { "@eslint/js": "^9.21.0", diff --git a/src/assets/fonts/.gitkeep b/src/assets/fonts/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/icons/.gitkeep b/src/assets/icons/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/images/.gitkeep b/src/assets/images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/components/.gitkeep b/src/components/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/data/.gitkeep b/src/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/hooks/.gitkeep b/src/hooks/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/pages/.gitkeep b/src/pages/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/routes/.gitkeep b/src/routes/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/sections/.gitkeep b/src/sections/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/services/.gitkeep b/src/services/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/store/.gitkeep b/src/store/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/styles/.gitkeep b/src/styles/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/utils/.gitkeep b/src/utils/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/vite.config.js b/vite.config.js index 8b0f57b..3246c16 100644 --- a/vite.config.js +++ b/vite.config.js @@ -4,4 +4,23 @@ import react from '@vitejs/plugin-react' // https://vite.dev/config/ export default defineConfig({ plugins: [react()], + resolve: { + alias: { + "@src": "/src", + "@assets": "/src/assets", + "@fonts": "/src/assets/fonts", + "@icons": "/src/assets/icons", + "@images": "/src/assets/images", + "@components": "/src/components", + "@pages": "/src/pages", + "@data": "/src/data", + "@hooks": "/src/hooks", + "@routes": "/src/routes", + "@sections": "/src/sections", + "@styles": "/src/styles", + "@utils": "/src/utils", + "@store": "/src/store", + "@services": "/src/services", + }, + }, }) From 5935c97dc0178f97c4dce661549ed1604cd85542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mahir=20Re=C5=A1idovi=C4=87?= <148394365+mresidovic1@users.noreply.github.com> Date: Thu, 3 Apr 2025 22:58:02 +0200 Subject: [PATCH 02/97] Feature/login page layout (#11) * feature(refactoring) * feature(refactoring) * feature(refactoring) * feature(login-page-layout) --- index.html | 2 + package-lock.json | 12 +++ package.json | 1 + src/App.css | 25 ++++++ src/App.jsx | 36 ++------ src/assets/images/Bazaar.png | Bin 0 -> 2463443 bytes src/assets/images/background.jpg | Bin 0 -> 1442780 bytes src/components/CustomButton.jsx | 13 +++ src/components/CustomButtonStyles.jsx | 25 ++++++ src/components/CustomTextField.jsx | 41 +++++++++ src/components/CustomTextFieldStyles.jsx | 17 ++++ src/components/SocialLoginButton.jsx | 13 +++ src/components/SocialLoginButtonStyles.jsx | 31 +++++++ src/pages/LoginPage.jsx | 95 +++++++++++++++++++++ src/sections/LoginFormSection.jsx | 70 +++++++++++++++ src/sections/LoginFormSectionStyles.jsx | 16 ++++ src/styles/theme.js | 40 +++++++++ 17 files changed, 410 insertions(+), 27 deletions(-) create mode 100644 src/assets/images/Bazaar.png create mode 100644 src/assets/images/background.jpg create mode 100644 src/components/CustomButton.jsx create mode 100644 src/components/CustomButtonStyles.jsx create mode 100644 src/components/CustomTextField.jsx create mode 100644 src/components/CustomTextFieldStyles.jsx create mode 100644 src/components/SocialLoginButton.jsx create mode 100644 src/components/SocialLoginButtonStyles.jsx create mode 100644 src/pages/LoginPage.jsx create mode 100644 src/sections/LoginFormSection.jsx create mode 100644 src/sections/LoginFormSectionStyles.jsx create mode 100644 src/styles/theme.js diff --git a/index.html b/index.html index 0c589ec..c498134 100644 --- a/index.html +++ b/index.html @@ -4,6 +4,8 @@ + +
- Edit src/App.jsx and save to test HMR
-
- Click on the Vite and React logos to learn more -
- > +H{THaA_c>KSYCHG7tBAl{wAZc95S9sl12dL8Kme9pb}^V8 zdAlpSR-0L86t7Rkk*lvnkuTzSn@Vzn|79d|0=wR=j=qr&bVJ_&fg1|C9>|fili~W5 zo19-~rx45$#%6S?3Kg6soL`d$!sx1?bv*CL>SF0F`-s3zZr8r>T5FA-E}rhnfa3*8 z=!VZROE`&JaWu3!W~!x`8_8@f_E}d~F3n|opihc@x^fkArC48TzPc0Vp!UsislO&4ubwGn63olT&BVSgpg$ygYRk%DL~Q znxBX>(G0I0vC$b%@0N<&Z4XhL2_2Q2Mm|d<8)fyXzl(blwd^$WksRKSR=|oE nw;8g;n1qZ(C0zO zIv>jU!HH2<-vifYcp#XhJ_6fglW6{R{g&(2K+D^-+&C*2&XgrD@+2QOIoC2ApFZ9t zodAI0iu<6nz~^jF_0#m~!NjhP1)78#S8fs1ki`3hPD{@KD|p(5aNHfdzp>k11aH)w zfOO{V?J>u98kOs#)cdYV#D8&V?AeR1*MtkyhkaM}4;2~9WoD+oIyAm85#vo@vd+wK z0C2m01oFQ2r^Ze4Z%IlU`d5w$C!`H h%*1nm6t||4a|NY_zRR~4WlK_Vuw5D(3}C2$3Ye3Pk@>nopUR{ac~be zTncxEe%g@+Kb{A7Q(1-)GsnbDfiM)Yp1eff-FUznG%0Dy_YR{uI
rMSY^e{?`jWfBl>j7328d%;;GC(Y8;&+-uVTL$K8QjaA?W zI@?o;BmYfZaRb~5WhT&Oc`QI^pG$F_JU`F}^aMm)qk6R&0dVjRGMouP#jyDT#d}20 z*m$=Z+?!dz2lX^$VRLm0O^pAAVxO;+OYu0^V?UShB`X;ZoXn2U%DqbH5yl->5^fEu zf6lm|_Jc8Dm_7x*{u4zi;JO*u4p `r0AK)F6 *B$ z{9cD{$ N}S(i`1Jv7;i}*I1gi zFUec`uvkDSUi~}87{CB67=q-x8L `*zUJ(tT#N)vpkg@ >Ge3Sdk%73JfHy-Zeuyi+U^_ef^w*a-E66`;fxhD$>4@T##;%tLZ0wylG8*t z(hz2gr5ZF6rYyKg^7>%RX_NC%(4n(v-a2_F&EwNYAuMWNCE=e_ z#l1-{$Azdf{Cg>{gYTt=PG8%sZQ-=~gb+P>A8Q$K{zny5oCQFOu(>mv#6N62wW)K? zD*@ueTR2KmbDO#Hm?9d<+uoJXe-o}VDb4WkI24D&^0RxNs>0zFG@E_A7bvekA&gr; za!&cuhD$4r;~=nP!;yP~MdnKpncSa36J&M`On1bteG9TG(bgh^d*R?|y9<8z{Ra{< zWrKS$P7fsC7m$fa`E ?2%h)k#!2Au|4RlG;u zEp9pe`94sw&A&5xb!bCq-uN@z+S%7J{7n~ufnEMKkYeZto} Y0=ad3TQmFauo19wR!7)lST%6Rq8~c$(*cL% zzabPEqq7Cc5eL?M eGv|&;eLHsQ3%?|q=gqo6(qL1(|5b4N;^yp)e zzd#i+x^w@Fkv7H80Fg-pNYRD<*%kC3XioAUXl_Aj5pnz$PVhoh6!z{Gt>v9_O*I9a zVthRR5=Yc9@aLxUm3(?UgM|%A`0mr;R$boQXkWvs-zF!uG*ND#C#LPVCiWD{t_BY) zVtu_*NFQaDY|5l|?vG*a-~#=EgpitAiel^1mkMT);$gVVs~BqLc$@gQ30iT+ 7OzL6OWPLgUct16cTIK@O*f$1+tm_ayvhOZ?W5)BKUnu$1JE#N+t+PAq7v zk)HJnt>PvRNtPqmt WAK 9=WIw)uTdS*y#YGDfSxhZZB zA>n=wpaX!(Fxr;^JGkgfVck22M6tJFv-&pSZ@^4o#nL(u|(+eMQu6>EC1*EZh^a zWV(kV<~v?%Hty`g=)fjl_3hHU_Tw+%;$PV`3He0((xqUjt%o?St-N=({!dRZS*0o( zHttsD3ubDuD?&;(a4hD|zRdy1KfU !R2BL>cxrcl^#6R6qG~{P&`O@s*U#BW9{y+V-H`n~8&JwXHvI1-v4R<``!q6p!}u zbaU+V5=Hp;n|-}#G;!*Ttj{KbaDU3;@6pH%#8N+~25e5F8EOY_0|`v(yhXA#1eq(3 z^1)C%aH{R{-43`y=U2e6N$r)0%O-4&@-!cgByCN#{e2>R=-M`PWD$29S{Jg;g~RhS zIbmuVnr(Z_G1YuK4&24h+b;&HKc{Meb;CQcz~KA$k;e@l+6+&gW)$s}R0N2UEz0Z* zyc_i{1m+E^h;sc$U8P=<*>D#S*={y_&ndXG&6Lsfyl; rm?yUbI95W;$b>#t5C5`JZZ9>{m@)fygql_Uf!`O|! z2C}&nL0VeNi)r}CGho8@p(ETXv|j^@f%&=w8>XGh`7IB17?WVr7qreeYEu4tx_Vn4 zbiNhiJHBKtJVUl60x8?m+iJ0bKUVLG^`!evp7MC#xEQBh$dS)(qV%>oev|nj1MlxR z2{w<&bd&6f88fCn-86cF^%E1N=;yJ2m>jw(sicZA4ThM%kvf;XK#zUuYjC16Mc50^Djvv-sC?diOOr@ zp;27}$=9M|qX0MIzna!62=1RQ-HHIW((a795$1RQwKARo4m|um7CmcFkSlLA$a(u_ z>fsV )GDoJ4D{bES9rRAd?L4KN3%7f=JNvdjXVDasRrfS9WohjAm^MH86 ziZHwx>asfu*X{T-8V6p}#%dE*CWknB?@|7bKKs$#tgyE|!m0&zvs>47I9XUFniF7- z`+>g@N19KTX44p6sENC_qnr~uG@(tyt-ot(NgOMTjswzi^NXvTA|8b%ob$pl(djH> zg?8%ziSHkQD?pu(`BRO5xglnGlRuV+?%pEx%z=*xRNRUPPfheban6=}zUdXsTbKqD z82knrhktjGGjuLA3|ZdZ@%mleh8y9baaR#8`WMKIy WP zN%hT(;=qvZFKp{Ne{?yJ*tgk Mf{FuW3Dwe64g|iWZFs zPMmOAh%?SD=rYs82Oe7a^KS#C;q_H?%Po%=YbbcXe{5Lj-=os?edwED=e0R!CODEe zeO*AvtO||HW~vsdiZSr9dDusR7o B6fCe|un>&549s zuK}adgNwgF_!}7ciTk%jH-J0t+v7if8S>A4P#hXl0Xxws1Fzfh%D+HlcPv|dfOFee z5A+xC8D0V@ssxU>w=9XFAD^f~2$wY4gn`fS^e!X9#Eg(SA{??q?(FBoI<^mU{B#`u z_YFa9fS-9HIXNN8rBr)k^^Z7XmW|DCpbaipuy~+*Ze;JvmZus{+VSsIaXzprD&k!L z20>go? QCM*LTKl$P z&u=bkV@!VB+KZosR^zwybv$SNeR$$TQM(+w$IC}mZDuLpJC;S4;~yo$q4jKe=QrwY zoj)*BDUGptF{`8#e}}Mwacaq4R;lv#!${A}=dTUcW+8Q4$n2-1&{ZY0;I2(hM?~e0 zj~@Ho*&RgVIAjjZeEEHKU8r-z@;c_~W-cQRO&Taa&DR!Ph$iP;Wrnn7FlGB)qHA~l zJOY18w1~+ymC}~Jl2yai*L7KtT FFf^g!fV7;csQ!@6@oaDTE4e@ zAh=tJTMXhiCZgf%(=I=%uv%E){&HmQdO$~QjI2HmK+8e8gSfao@D<*)XiDF9@JL?= z!8W#<-3o{9zcnau*(gnSi;#;%)5Us+Tf(2sbiyEgjfGi~?>T#uxeT>p%cXu^RqPOs zWJ&i^;iC1^k0SmxkyHDZQXP8b6I`h@6=QwAy{(2s%K|>De`|RD6I$C{pnw8s)xGd~ z8ReH4H3$(vD2hd&`6f8{y|bv~7ob@#;roS|{@NmPyOkG{n(~Qs;!B(dos1GdY)J=g zu(FH^c3rxfAK`oAAQscuKmMv2llT7ur3OIvzs&;s>VIJK?sbKGa5Y9S6D|XS`u`!V z@k|1noiL{oi=Y?Jf5<}sWxfPdf9erX#QwPA{8``E0 VaxbFI~K0Jq@k6b1|ZS!3k$^$*{aP{<~z?Nb{48${(ga7tD+0 zE>QdFSa6o2Q-($T?TgHULRI@T*PQs;p#Vkia?Z~Rq{>DcxNHUmxJ9(c--2!GAz4^^ z)7nnC@lLUE*2S7$O2y9?=!Dlc-YB|o?uRe m$TtIXgKkd>v%Z$N0To_FD*;VtC2qq06-q*7iRQ4tNj}2= zu_~0vo;`i& oYDV z^1YUi0scD$GyU&(_gV?2?nZNlP9>JA?@kNHkfP#|n;9C};+8&4d_ps_Ob9i{!uBad z+4^M2`
UDTz=<+&DPl$Ci80PzmHzdb(Dg_60W6z_-S!@ZcvYy2~}8;<}!i z{i`2EB~0&p&1voYv>ZMxwhj-mvuFIO(|>7g7K>`(3Q$ On`HfPN;%s0QPe_)m+%HlY^HgZ^x1TC>APw@ z{Z1EZ@mCYYpFR?Qx|M!%YXkIGVKz#SsOl*iS(nBU*SK9`{mQXSg-jM`JqG>J!rK{$ z)^%pX@71x1>`DZ072*WX<5sy<@>?@Mv)w3wTy4f&;&1t4yih5QeKfbwa(4zMtfgyy zH=iZ1spa=BWNs$9jN#I0j#jvwqAgatt_a6Fu90Cf;RzCVK!m~F UbP}Wva|QZk!ka^4_@GbPo*klfFbZ%KPur% z7w|Bf@J<<5WSzW_|Fp(*x^B%_U?D}k>T;z~C_6hOYSA=zWKpcAKHQkS7_igXMx5uJ zu5+I_(e=43GpND~<1di^NA{_2v)uR7JS;}avMI avZ56dgghHA}2&H7hu zGI(X?AF5-(o(yw6vxakr_D>6YP(wNp 96S+=mLXKUUe1Ro3uLsImf4yzd z^!(Lz*LrtyI|-#e{7>~A`?varT=~@OPw_GV(U!tYXV=LnG}(Ws!|Q*CTgFO4^L=SD z4M14;_ e4h5V1p^`^}~@lh{6&0l#Ge*h$uz|PL_uH=N_9~002^u)1*#A*p|lkCB0 zt)Yr5+Juxy+T5FM(Zl-O5nt~XnQqy)D`4m_()qJTRC3`(6EsooXw*Qw*tAKF%Tn9` z0!RDK$%=g}B@+?P!>id=R3*{2zWi`TKK+8i>ua1ON0K3YxMMeY-U49TpPy`7i=4~) zvH6amar4ql1FA1-1wv4YXpUK;%0POFnAZ_$L~>xh9^d2}V#C=lp2T}KcgImjR-f0= z)tbv!+I{60rPgTt@D9~-x6QAoT~$vasJ6eZ(x1bWaP=&fty>q{`wvTFz9I19?)JHd zr^kU@TZV`c!mzS>je?Cu0;?r!!;heW9XCVo`PzgnKig~iY;}=4ZPv5)E!$m5s=4;H zhwXI%FOI~cUWIAAuA_fTybil2%bM)%3V1XTXP5t=kGd|tdo?_vct@WrkG$AMu;%B| zu~v#pqi0dS;IA**aSFYiOQ)_2{DlwLqG5%fh-8SeQ#vgH;r~1pre&QJPD+GJq+X;J zEtF014(D*%^W{JTL9AJ8@xc*SDs7-l7*%X`K=A=*_u#5!NNA?UCS6|@Qgxjtw7#6- z;d|aJt N!# zptzp-^ts${M)wK>1y9W3t1@zFr6RX#XNDd%tIOl-w{txLcUhd4ul88jTN7X8u3vrq zWwmzuCh$EY>9wn`gX~_w?G62%u79@X-PQ{eZlukaIY54M-aBr;rcT%CHX*;t{C?B( z+cYAa!EV3>hUgNbSHpGiER& IQz=eMC%Sm&m2Dx5ualP;+|Fv$(8vPc)lAk((Lh~AV Du*j1)Voz#M-ek|Mf~Dyc~n z=Mgb{G)+LD{tdfmEM3_ZXF @aX z!YIZk{UsnaN)p?s9Cnll+@xhQ=pl(;PFqMT2l8%3^3O`79R{pKj1f-sjBSfZ2F~i> zai3`7YqZuD91`|;ccs^e0$cN zLJrf>WQ(7mO|UKJt>4EQ*W|+v>kgvE{BhPZJe>)`k2Y2lG_#5Kd??2 yQbHqhw1fkOKHInT z!}|kJfGwl_RpG>HPUHnziVwP*dtNaQZK_0|BWMBnX3kZ+<_;txN2vKJ1i7 |6PAXn-H%iskkfWMOs*7S|p#|_zJ7p?T*^9tTp=8qHTm! zRE8dp{DPbcpVQbYmCG6FXnoO9tEX4S>%OPKr_eDfrvws*PgSPL1;xW zWTwkiQxq#78QsRnZaa->V)jTrO;f+Ou&hrbC~_LKFpPT{w0m}VJlpC|ZbS=d2V37{ zON#TRGA@OGG=fz2|3cVwgKc`uxUBoK3M7F@o}@|cGW+QSSE;iXwLKQQ6BBm*-B#!9 zc4zYS@8~fQM`3s|4nhyMK-TNK|EhopPV2=2`fzIRL|2{~^}S zHY8ZUwe9OnOt>&%tu!b)Lo(Q%{pZ6-Q84 rs@ zLFk (Au+x-)_X^XT!a11~1%BS6nq zOjY4C>z+$te-OZV5G5h}9Y5 2Jq9;wXA1cKsy5Z}Jksnn#pt$czxT80NeHr7g zLL71CNv~`EAvtWR-De({MC9QxS6N@GKzd3=h;B*i_FW+JpvC?eg~{I8O3Y2;(Fz{I zIAzViN=YQuU>xG-!$! UxNG8ZMd?a2 zyex`9Z(4n6sRdq6R|eQ)pW&<=QC2wQMEv8}IK2tD7>o2NPRa-SD 64(hNqtM%(E)GHsBY+;)oLRu2`uUGhD`QPB$QPitZtP~EZ(5-n!dleO6XQ7TCCu* z&}O B_*7~3$a`#?456baAVaU=(f1?T+OY4(2 zQ}Qb6-Ta(tNbGoaN#4;P>17!@kEgAqzTArKDihMOT~6E&mSw}cA(mFwx! suwUk*PrJ2(0H0m{ z=ZSe(!)e)hK8QWImJ7@WhMFkH<0e1X;qppoRXUL`r%>Y6PHWa|m$S2T8Q|{Tiov$3 ze-*D~HeMPWd&dK1Txr-*;DBX(ue;8x`02#Gxle~y?z?ilcNPA|8)9ur#2?xyj(7OS zYte@Mk1a6YaWL@T>DwT{y!*CF;0*D#|M?G2H~_gUL~~Ey;IHkBHf%T4Iy*0`o&ks( z*d8E|Fbts*s(Nhy1k5KkXO)Q_8i(D`dg4%0VWv~!1v%tmQU_`#_W7y*zyKkmIY4~( zmuElrzLDBhc?v?Ge8tJkmVFvDWWk&+Oc;h0JM|DAB1)U153(RB!{&@=j9WioAY4hM zqEv+d;sLGmg1>7rLllQ>Z@fGp!v#QJG}-^s<^K+pGy4|uo7jUtByaS64gi#I-)Nab z|Bab}_SXR^Gmox}Z^q=t9i1Fqts0XD B>V^ zyyiSv3^vRv-!ZdW2%9Z+W@ >FegXQ$4lK?GK _41gEdN+ zf8^ wg{YvZ1C*L%3Tkl*#v`(d?D)twM+P(UA{L9}1|+g#3xgFx)76st-JZLx2h zsRdVBPjX&ZpJ}KOxLvBPDu`70Ox6``6wAGtu}gSGr1e_j&UaR)Zi~EO=aeRu#wFcu z-F!n4COQw%lw11|DLw2cDaVYH6hOJK_W=+(f43Btkz2sINi5;t42JnC2m_}74B`s} zs5d9pL{O;5e9pD^9ecaLUm&-_Q`DEO&79*DN$8jU-(j~_lfeUtKYbJC5U4n1Nzwqm z`F(d`F`W-b=fu}`o%tJ?N4R$P0^4sMRj_vNQx;8%@}{(=u&VtOWBB#^H3`(-UiE=# z*CaDos>2KAlW=}sX(5o)tt#&5zon_RUd(v`ZjySv>PpNwt&=onhG`jhg6u%a(!Z1V z+;>m<(|enueES1%J?(1{n`!-N;YQfja3#qudxbaj%@mETFi(wH!Ygx0Z4?bIqBKuf z)y_VbthnT(bAVd5B#n{SfR7c6m582aa_mFTD#p1KRB0u+(7WsB*`0c4; xF_ z9qjVWB@u?EloVIMx{eW1^r7)v{?g6oR>DJE<}TmS6`@{k_-$KGHhcQNTaeFxcfaKb zc4q`BM++LQoY13VZ3T5)I7pxX23;@XvNMg U|$`~fcRT40<3NeuIcwQk#eiV zP<>&-2!h=A_1h}%IQ#g5=_%42v(K_4{i;Bx9ato=3fA{DF_#JlOQsivKZqkE+(kCk zrbsUzk6-JoAx4`$iLnf}vww@t75;~>k&+Ch56mfc>x4-%w}KVq$BOROv)M=bcI6<9 zyEkMt*03I$!+G)VpKaoOAOKuc(tHB_yVRC3|0%WnD6@^qm;zxX#x5*l)5xF>AN%pd z1Z2Fphn1a)hG9C`>s+*2n4v;4phlo}s1?gQu Fiw_r5dLeRqA_j{RvIG<}btQ{3xtC2ij8G=6M|6bYupYe7wJ<5{9GM7F!ao zBVY4C_lqlb{(sG~Wme!DpL@T4LRS^g&{5of+2s~df3wT^g~o||0QXyLN2y$%ACl68 zXaO(=UbJtf&Gnm)yi}2puos zmF- &h)a5np1W)44yNR55+ zKYjAQk}k)17X(uCeG0vs` fL|yt1y>%7i zHHd2={Ditw+BzgTy}uh@RSZXJ`jtv#I8tN~m@Fk{82O9N&h;CO_U AaqYokYSIM`qa+lq0dX^3*c3A4p84si3W@Zy!b;uKVU zv*kKIzWpKonvz+v9d1AuQHKISPMBtNKp4&q+nMhf(3M?PWzOqu0>0@*Sh2UWxUB0C z+Ozv*+=u5Gx^?p2ed1y2uyhQz`E#>o$kBGO=+5`!+{Li0Id+LE{!Ci8C3+xo9HxE- z=~8< X_7~y0cecp_<
hO?yM)2#c&+)91G`kNf?ZjX? z(2I;;Og?1!Dlx5>ba~eDU_KRF ?7}|7AWI=zmhDyY3sAp=8SdBe6RpkYkPjE~k~GA$0!wSnFQz1^ z-Zcem)bkD%DKJIVL|JKkwWJ40FKG)xe8{NYd-?fPU9=NQh&vQZe*K~9X!Iop+)b~G z>~mR~t*&I9d~4F>^76w|t=WX0VJMmZvq{0?mA%=Ey}sS)d#_1g9U%V}`cMWxL^+~i zE+V8LWg?vYUKRgETD1hU4?^tGjxT!=)34$8a8YHXnp|r;t|PXxz$O0Ii0>J1O{q91 z)rL8b);lhn64omv-3X;@-3s%dzKKS@NaPF84K5d;hO4^iTI-6MKg* >4oz2T5% z!5EROsW^IbzUcHN#>e?Zd(zf@jcM|w;s;Nd197i!@D2-=Qqw cApRoJv(>@>vf}>jc8S+k z*~ d zX}>If9YY~6N&&UbWKQ9AGH_BRTB(_wiUx=cIw+!NyB2Z$ib*JucUw=0yE*?8gHhZ& zs>oh^evwkxnQyD@NuKk(wZ ma=Z9a@YLhQHZ$||&5iTh^>0lKT;7Fx$tH7^ z9;}o<$AmU0AO;i1L|~`8M!30dix3-R z^Q)O307miJ_zrjk&-ba9i3oK1613Pe-GXFGU#Q@e)?Gm%fHI#ulH6n4zM|Z5 HibQ z DsV6$4lJ%c(uGH|-)VSkB-8$&nG*tN?>+veY(m3O2ew8e@!pNlKe} zGk)*!M;zCHT>=KS{HhKr=E={o?CliqgbsFv>I>Pqv1JFV#&SVPtfwkx0&kLclq}W* zh}Bb`*35FeNco{fvgRc`;g;^mxA$R<