From 18e213bc31ba14a8540fc8d2d5ff4e88fa5218d9 Mon Sep 17 00:00:00 2001 From: magdo Date: Tue, 25 Nov 2025 20:53:34 +0100 Subject: [PATCH] save --- FIXES_APPLIED.md | 217 - Javitás.txt | 62 - README.md | 28 - SerpentRace_Backend/.dockerignore | 27 - SerpentRace_Backend/.env.dev | 41 - SerpentRace_Backend/.env.example | 62 - SerpentRace_Backend/.gitignore | 5 - SerpentRace_Backend/assets/Logo.png | Bin 1004549 -> 0 bytes SerpentRace_Backend/jest.config.js | 28 - SerpentRace_Backend/language-test.js | 29 - .../jest-runner/build/testWorker.js | 513 - .../node_modules/jest/bin/jest.js | 16 - SerpentRace_Backend/package-lock.json | 10435 ---------------- SerpentRace_Backend/package.json | 89 - SerpentRace_Backend/scripts/build-help.js | 115 - SerpentRace_Backend/scripts/build.ts | 187 - SerpentRace_Backend/scripts/copy-assets.js | 62 - SerpentRace_Backend/scripts/deploy.bat | 233 - SerpentRace_Backend/scripts/deploy.sh | 237 - .../scripts/generate-migration.ts | 28 - SerpentRace_Backend/scripts/test-redis.ps1 | 21 - SerpentRace_Backend/scripts/test-redis.sh | 20 - SerpentRace_Backend/src/Api/index.ts | 314 - .../src/Api/middleware/optionalAuth.ts | 67 - .../src/Api/routers/adminRouter.ts | 1141 -- .../src/Api/routers/chatRouter.ts | 287 - .../src/Api/routers/contactRouter.ts | 53 - .../src/Api/routers/deckImportExportRouter.ts | 124 - .../src/Api/routers/deckRouter.ts | 266 - .../src/Api/routers/gameRouter.ts | 327 - .../src/Api/routers/organizationRouter.ts | 204 - .../src/Api/routers/userRouter.ts | 345 - .../src/Api/swagger/swaggerConfig.ts | 101 - .../src/Api/swagger/swaggerDefinitions.ts | 1694 --- .../Api/swagger/swaggerDefinitionsFixed.ts | 2788 ----- .../src/Api/swagger/swaggerUiSetup.ts | 7 - .../commands/ChatArchiveCommandHandlers.ts | 69 - .../Application/Chat/commands/ChatCommands.ts | 21 - .../Chat/commands/CreateChatCommandHandler.ts | 85 - .../commands/SendMessageCommandHandler.ts | 84 - .../commands/SoftDeleteCommandHandlers.ts | 0 .../Chat/queries/ChatHistoryQueryHandlers.ts | 141 - .../Application/Chat/queries/ChatQueries.ts | 14 - .../Chat/queries/GetChatsByPageQuery.ts | 5 - .../queries/GetChatsByPageQueryHandler.ts | 55 - .../Chat/queries/GetUserChatsQueryHandler.ts | 97 - .../Contact/commands/CreateContactCommand.ts | 9 - .../commands/CreateContactCommandHandler.ts | 26 - .../Contact/commands/DeleteContactCommand.ts | 4 - .../commands/DeleteContactCommandHandler.ts | 42 - .../Contact/commands/UpdateContactCommand.ts | 6 - .../commands/UpdateContactCommandHandler.ts | 45 - .../Contact/queries/GetContactByIdQuery.ts | 3 - .../queries/GetContactByIdQueryHandler.ts | 16 - .../Contact/queries/GetContactsByPageQuery.ts | 4 - .../queries/GetContactsByPageQueryHandler.ts | 18 - .../src/Application/DTOs/ChatDto.ts | 26 - .../src/Application/DTOs/ContactDto.ts | 47 - .../src/Application/DTOs/DeckDto.ts | 33 - .../src/Application/DTOs/GameDto.ts | 46 - .../Application/DTOs/Mappers/BaseMapper.ts | 19 - .../Application/DTOs/Mappers/ChatMapper.ts | 26 - .../Application/DTOs/Mappers/ContactMapper.ts | 36 - .../Application/DTOs/Mappers/DeckMapper.ts | 46 - .../DTOs/Mappers/OrganizationMapper.ts | 36 - .../Application/DTOs/Mappers/UserMapper.ts | 30 - .../src/Application/DTOs/OrganizationDto.ts | 48 - .../src/Application/DTOs/SearchDto.ts | 13 - .../src/Application/DTOs/UserDto.ts | 27 - .../Deck/commands/CreateDeckCommand.ts | 7 - .../Deck/commands/CreateDeckCommandHandler.ts | 125 - .../Deck/commands/DeleteDeckCommand.ts | 6 - .../Deck/commands/DeleteDeckCommandHandler.ts | 29 - .../Deck/commands/UpdateDeckCommand.ts | 11 - .../Deck/commands/UpdateDeckCommandHandler.ts | 55 - .../Deck/queries/GetDeckByIdQuery.ts | 3 - .../Deck/queries/GetDeckByIdQueryHandler.ts | 14 - .../Deck/queries/GetDecksByPageQuery.ts | 8 - .../queries/GetDecksByPageQueryHandler.ts | 82 - .../Game/BoardGenerationService.ts | 209 - .../src/Application/Game/GameService.ts | 303 - .../Game/commands/GenerateBoardCommand.ts | 6 - .../commands/GenerateBoardCommandHandler.ts | 63 - .../Game/commands/JoinGameCommand.ts | 9 - .../Game/commands/JoinGameCommandHandler.ts | 219 - .../Game/commands/StartGameCommand.ts | 9 - .../Game/commands/StartGameCommandHandler.ts | 289 - .../Game/commands/StartGamePlayCommand.ts | 4 - .../commands/StartGamePlayCommandHandler.ts | 480 - .../commands/CreateOrganizationCommand.ts | 8 - .../CreateOrganizationCommandHandler.ts | 32 - .../commands/DeleteOrganizationCommand.ts | 4 - .../DeleteOrganizationCommandHandler.ts | 16 - .../commands/ProcessOrgAuthCallbackCommand.ts | 6 - .../ProcessOrgAuthCallbackCommandHandler.ts | 123 - .../commands/UpdateOrganizationCommand.ts | 14 - .../UpdateOrganizationCommandHandler.ts | 15 - .../queries/GetOrganizationByIdQuery.ts | 3 - .../GetOrganizationByIdQueryHandler.ts | 15 - .../queries/GetOrganizationLoginUrlQuery.ts | 3 - .../GetOrganizationLoginUrlQueryHandler.ts | 56 - .../queries/GetOrganizationsByPageQuery.ts | 5 - .../GetOrganizationsByPageQueryHandler.ts | 60 - .../src/Application/Search/Generalsearch.ts | 156 - .../Services/AdminBypassService.ts | 131 - .../Application/Services/AuthMiddleware.ts | 148 - .../Services/CardDrawingService.ts | 399 - .../Services/CardProcessingService.ts | 430 - .../Services/ContactEmailService.ts | 133 - .../src/Application/Services/DIContainer.ts | 600 - .../Services/DeckImportExportService.ts | 208 - .../src/Application/Services/EmailService.ts | 312 - .../Services/EmailTemplateHelper.ts | 39 - .../Services/ErrorResponseService.ts | 35 - .../Services/FieldEffectService.ts | 437 - .../Services/GameSnapshotService.ts | 267 - .../Application/Services/GameTokenService.ts | 205 - .../Services/GameWebSocketService.ts | 3566 ------ .../Application/Services/GamemasterService.ts | 284 - .../Services/Interfaces/GameInterfaces.ts | 132 - .../src/Application/Services/JWTService.ts | 315 - .../src/Application/Services/Logger.ts | 61 - .../Application/Services/LoggingService.ts | 419 - .../Application/Services/PasswordService.ts | 99 - .../src/Application/Services/RedisService.ts | 423 - .../src/Application/Services/TokenService.ts | 229 - .../Services/TurnHistoryService.ts | 80 - .../Services/ValidationMiddleware.ts | 341 - .../Application/Services/WebSocketService.ts | 1408 --- .../User/commands/ActivateUserCommand.ts | 3 - .../commands/ActivateUserCommandHandler.ts | 12 - .../User/commands/CreateUserCommand.ts | 11 - .../User/commands/CreateUserCommandHandler.ts | 92 - .../User/commands/DeactivateUserCommand.ts | 3 - .../commands/DeactivateUserCommandHandler.ts | 12 - .../User/commands/DeleteUserCommand.ts | 4 - .../User/commands/DeleteUserCommandHandler.ts | 16 - .../Application/User/commands/LoginCommand.ts | 4 - .../User/commands/LoginCommandHandler.ts | 223 - .../User/commands/LogoutCommandHandler.ts | 163 - .../commands/RequestPasswordResetCommand.ts | 4 - .../RequestPasswordResetCommandHandler.ts | 70 - .../User/commands/ResetPasswordCommand.ts | 4 - .../commands/ResetPasswordCommandHandler.ts | 58 - .../User/commands/UpdateUserCommand.ts | 12 - .../User/commands/UpdateUserCommandHandler.ts | 29 - .../User/commands/VerifyEmailCommand.ts | 3 - .../commands/VerifyEmailCommandHandler.ts | 45 - .../User/queries/GetUserByIdQuery.ts | 3 - .../User/queries/GetUserByIdQueryHandler.ts | 32 - .../User/queries/GetUsersByPageQuery.ts | 5 - .../queries/GetUsersByPageQueryHandler.ts | 60 - .../src/Domain/Chat/ChatAggregate.ts | 64 - .../src/Domain/Chat/ChatArchiveAggregate.ts | 33 - .../src/Domain/Contact/ContactAggregate.ts | 55 - .../src/Domain/Deck/DeckAggregate.ts | 103 - .../src/Domain/Game/GameAggregate.ts | 114 - .../src/Domain/Game/GameSnapshotAggregate.ts | 67 - .../src/Domain/Game/TurnHistoryAggregate.ts | 75 - .../src/Domain/IRepository/IBaseRepository.ts | 29 - .../IRepository/IChatArchiveRepository.ts | 11 - .../src/Domain/IRepository/IChatRepository.ts | 19 - .../Domain/IRepository/IContactRepository.ts | 12 - .../src/Domain/IRepository/IDeckRepository.ts | 9 - .../src/Domain/IRepository/IGameRepository.ts | 14 - .../IRepository/IGameSnapshotRepository.ts | 38 - .../IRepository/IOrganizationRepository.ts | 6 - .../IRepository/ITurnHistoryRepository.ts | 33 - .../src/Domain/IRepository/IUserRepository.ts | 11 - .../Organization/OrganizationAggregate.ts | 52 - .../src/Domain/User/UserAggregate.ts | 62 - .../Migrations/1762370334693-full.ts | 16 - .../Migrationsettings/1762370333970-full.ts | 11 - .../Repository/ChatArchiveRepository.ts | 138 - .../Repository/ChatRepository.ts | 358 - .../Repository/ContactRepository.ts | 125 - .../Repository/DeckRepository.ts | 308 - .../Repository/GameRepository.ts | 416 - .../Repository/GameSnapshotRepository.ts | 72 - .../Repository/OrganizationRepository.ts | 164 - .../Repository/TurnHistoryRepository.ts | 51 - .../Repository/UserRepository.ts | 369 - .../src/Infrastructure/ormconfig.ts | 17 - .../src/Templates/contact-response-de.html | 155 - .../src/Templates/contact-response-de.txt | 21 - .../src/Templates/contact-response-hu.html | 155 - .../src/Templates/contact-response-hu.txt | 21 - .../src/Templates/contact-response.html | 155 - .../src/Templates/contact-response.txt | 21 - .../src/Templates/password-reset-de.html | 220 - .../src/Templates/password-reset-de.txt | 44 - .../src/Templates/password-reset-hu.html | 220 - .../src/Templates/password-reset-hu.txt | 44 - .../src/Templates/password-reset.html | 220 - .../src/Templates/password-reset.txt | 44 - .../src/Templates/verification-de.html | 203 - .../src/Templates/verification-de.txt | 36 - .../src/Templates/verification-hu.html | 203 - .../src/Templates/verification-hu.txt | 36 - .../src/Templates/verification.html | 204 - .../src/Templates/verification.txt | 36 - SerpentRace_Backend/test-org-auth.js | 46 - .../Chat/ChatMessagingSystem.test.ts | 278 - ...ntactCommandHandlers.comprehensive.test.ts | 402 - .../DTOs/Mappers/ContactMapper.test.ts | 137 - .../DTOs/Mappers/DeckMapper.test.ts | 189 - .../DTOs/Mappers/OrganizationMapper.test.ts | 208 - .../DTOs/Mappers/UserMapper.test.ts | 164 - ...teDeckCommandHandler.comprehensive.test.ts | 207 - .../DeckCommandHandlers.comprehensive.test.ts | 486 - .../Game/BoardGenerationService.test.ts | 133 - ...ationCommandHandlers.comprehensive.test.ts | 333 - .../Services/AuthMiddleware.test.ts | 188 - .../Services/ChatConfiguration.test.ts | 159 - .../Application/Services/DIContainer.test.ts | 109 - .../Application/Services/EmailService.test.ts | 226 - .../Services/JWTService.refresh.test.ts | 139 - .../Application/Services/JWTService.test.ts | 403 - .../Services/LoggingService.test.ts | 217 - .../Services/PasswordService.test.ts | 270 - .../Application/Services/RedisService.test.ts | 245 - .../Application/Services/TokenService.test.ts | 405 - .../Services/ValidationMiddleware.test.ts | 206 - .../UserCommandHandlers.comprehensive.test.ts | 430 - .../comprehensive-repository-coverage.test.ts | 286 - SerpentRace_Backend/tests/jest.setup.ts | 2 - SerpentRace_Backend/tests/setup.ts | 26 - SerpentRace_Backend/tests/testUtils.ts | 170 - SerpentRace_Backend/tsconfig.json | 120 - SerpentRace_Docker/.env.dev | 55 - SerpentRace_Docker/.env.example | 222 - SerpentRace_Docker/.env.prod | 55 - SerpentRace_Docker/.env.server | 55 - SerpentRace_Docker/DOCKER_README.md | 267 - SerpentRace_Docker/Dockerfile_backend | 60 - SerpentRace_Docker/Dockerfile_backend.dev | 29 - SerpentRace_Docker/Dockerfile_frontend | 36 - SerpentRace_Docker/Dockerfile_frontend.dev | 20 - SerpentRace_Docker/docker-compose.deploy.yml | 188 - SerpentRace_Docker/docker-compose.dev.yml | 184 - SerpentRace_Docker/docker-compose.prod.yml | 161 - .../docker-compose.watch.nat.yml | 206 - SerpentRace_Docker/docker-compose.watch.yml | 217 - SerpentRace_Docker/docker-manage.bat | 57 - SerpentRace_Docker/nginx.conf | 60 - SerpentRace_Docker/pgadmin_servers.json | 24 - .../sql_dump_with_test_data.sql | 369 - SerpentRace_Docker/sql_schema_only.sql | 180 - SerpentRace_Frontend/.dockerignore | 27 - SerpentRace_Frontend/.gitignore | 24 - SerpentRace_Frontend/CLEANUP_SUMMARY.md | 96 - SerpentRace_Frontend/README.md | 12 - SerpentRace_Frontend/eslint.config.js | 33 - SerpentRace_Frontend/index.html | 13 - SerpentRace_Frontend/nginx.conf | 60 - SerpentRace_Frontend/package-lock.json | 4002 ------ SerpentRace_Frontend/package.json | 39 - SerpentRace_Frontend/src/App.jsx | 91 - SerpentRace_Frontend/src/api/deckApi.js | 58 - SerpentRace_Frontend/src/api/gameApi.js | 80 - SerpentRace_Frontend/src/api/userApi.js | 109 - .../SerpentRace_Animation/Path.module.css | 96 - .../SerpentRace_Animation.jsx | 34 - .../src/assets/backgrounds/Background.jsx | 97 - .../src/assets/pictures/Logo.jsx | 18 - .../src/assets/pictures/Logo.png | Bin 1004549 -> 0 bytes .../src/assets/pictures/LogoCard.jsx | 134 - .../src/assets/pictures/busi.JPG | Bin 177580 -> 0 bytes .../src/assets/pictures/donat.JPG | Bin 207951 -> 0 bytes .../src/assets/pictures/gege.JPG | Bin 190877 -> 0 bytes .../src/assets/pictures/piskor.JPG | Bin 176130 -> 0 bytes .../src/assets/pictures/turo.JPG | Bin 181124 -> 0 bytes .../src/assets/pictures/walke.JPG | Bin 177802 -> 0 bytes .../src/assets/pictures/zsola.JPG | Bin 193481 -> 0 bytes .../src/components/Buttons/Button.jsx | 22 - .../src/components/Buttons/ButtonDark.jsx | 20 - .../src/components/Buttons/ButtonGreen.jsx | 20 - .../src/components/Card/Card.jsx | 19 - .../src/components/DeckCreator/CardEditor.jsx | 319 - .../components/DeckCreator/CardPreview.jsx | 148 - .../src/components/DeckCreator/CardsList.jsx | 270 - .../src/components/DeckCreator/DeckHeader.jsx | 246 - .../components/DeckCreator/DeckManager.jsx | 445 - .../DeckCreator/JokerCardEditor.jsx | 149 - .../components/DeckCreator/LuckCardEditor.jsx | 189 - .../components/DeckCreator/TaskCardEditor.jsx | 521 - .../src/components/Footer/Footer.jsx | 201 - .../src/components/Inputs/InputBox.jsx | 16 - .../src/components/Inputs/InputBoxDark.jsx | 16 - .../components/Landingpage/LandingPage.jsx | 196 - .../src/components/Landingpage/PlayMenu.jsx | 161 - .../src/components/Navbar/Navbar.jsx | 264 - .../src/components/PopUp/DeckInfoPopUp.jsx | 358 - .../src/components/PopUp/History.jsx | 59 - .../src/components/PopUp/PopUp.jsx | 21 - .../src/components/PopUp/RatingSet.jsx | 27 - .../src/components/ScrollToTop.jsx | 14 - .../src/components/Search/SearchBox.jsx | 22 - .../components/Toastify/toastifyServices.jsx | 165 - .../components/Userdetails/Userdetails.jsx | 549 - .../src/constants/CardTypes.js | 52 - .../src/contexts/GameWebSocketContext.jsx | 835 -- .../src/hooks/useGameWebSocket.js | 522 - .../src/hooks/useRequireAuth.jsx | 52 - SerpentRace_Frontend/src/index.css | 82 - SerpentRace_Frontend/src/main.jsx | 10 - .../src/pages/About/About.jsx | 355 - .../src/pages/Auth/AuthCard.jsx | 44 - .../src/pages/Auth/AuthLogin.jsx | 18 - .../src/pages/Auth/AuthRegister.jsx | 17 - .../src/pages/Auth/ForgotPassword.jsx | 45 - .../src/pages/Auth/LoginForm.jsx | 224 - .../src/pages/Auth/RegisterForm.jsx | 118 - .../src/pages/Auth/ResetPassword.jsx | 125 - .../src/pages/Auth/VerifyEmailPage.jsx | 91 - .../src/pages/Contacts/Contacts.jsx | 247 - .../src/pages/DeckCreator/DeckCreator.jsx | 560 - .../src/pages/Decks/Card_display.jsx | 867 -- .../src/pages/Decks/DeckManagerPage.jsx | 16 - .../src/pages/Game/CardDisplayModal.jsx | 564 - .../src/pages/Game/ChooseDeck.jsx | 363 - .../src/pages/Game/ConsequenceModal.jsx | 216 - .../src/pages/Game/GameModalsDemo.jsx | 250 - .../src/pages/Game/GameScreen.jsx | 1086 -- .../src/pages/Game/GameTest.jsx | 160 - .../src/pages/Game/JokerApprovalModal.jsx | 271 - SerpentRace_Frontend/src/pages/Game/Lobby.jsx | 405 - .../src/pages/Game/PlayerSetup.jsx | 209 - .../src/pages/Game/StepPredictionModal.jsx | 327 - .../src/pages/Landing/Home.jsx | 86 - .../src/pages/Landing/Landingpage.jsx | 28 - .../src/pages/Report/Reports.jsx | 61 - .../src/pages/Testing/Test.jsx | 78 - .../utils/HandleNavigate/HandleNavigate.jsx | 82 - .../src/utils/MrandomUtils.js | 24 - SerpentRace_Frontend/src/utils/dice/Dice.jsx | 171 - .../src/utils/dice/diceDotPositions.js | 9 - SerpentRace_Frontend/src/utils/randomUtils.js | 20 - SerpentRace_Frontend/src/utils/routes.js | 45 - SerpentRace_Frontend/vite.config.js | 46 - TESTING_CHECKLIST.md | 239 - create-deployment.bat | 288 - .../deployment => deployment}/.env.server | 0 .../deployment => deployment}/README.md | 0 .../docker-compose.deploy.yml | 0 .../deployment => deployment}/load-images.bat | 0 .../deployment => deployment}/load-images.sh | 0 .../deployment => deployment}/nginx.conf | 0 .../pgadmin_servers_deployment.json | 0 .../serpentRaceDocker.tar | Bin .../sql_schema_only.sql | 0 docker-manage.bat | 138 - docker-manage.sh | 177 - fix_passwords.sql | 5 - hibák.txt | 11 - package.json | 5 - test-watcher.sh | 0 357 files changed, 67989 deletions(-) delete mode 100644 FIXES_APPLIED.md delete mode 100644 Javitás.txt delete mode 100644 README.md delete mode 100644 SerpentRace_Backend/.dockerignore delete mode 100644 SerpentRace_Backend/.env.dev delete mode 100644 SerpentRace_Backend/.env.example delete mode 100644 SerpentRace_Backend/.gitignore delete mode 100644 SerpentRace_Backend/assets/Logo.png delete mode 100644 SerpentRace_Backend/jest.config.js delete mode 100644 SerpentRace_Backend/language-test.js delete mode 100644 SerpentRace_Backend/node_modules/jest-runner/build/testWorker.js delete mode 100644 SerpentRace_Backend/node_modules/jest/bin/jest.js delete mode 100644 SerpentRace_Backend/package-lock.json delete mode 100644 SerpentRace_Backend/package.json delete mode 100644 SerpentRace_Backend/scripts/build-help.js delete mode 100644 SerpentRace_Backend/scripts/build.ts delete mode 100644 SerpentRace_Backend/scripts/copy-assets.js delete mode 100644 SerpentRace_Backend/scripts/deploy.bat delete mode 100644 SerpentRace_Backend/scripts/deploy.sh delete mode 100644 SerpentRace_Backend/scripts/generate-migration.ts delete mode 100644 SerpentRace_Backend/scripts/test-redis.ps1 delete mode 100644 SerpentRace_Backend/scripts/test-redis.sh delete mode 100644 SerpentRace_Backend/src/Api/index.ts delete mode 100644 SerpentRace_Backend/src/Api/middleware/optionalAuth.ts delete mode 100644 SerpentRace_Backend/src/Api/routers/adminRouter.ts delete mode 100644 SerpentRace_Backend/src/Api/routers/chatRouter.ts delete mode 100644 SerpentRace_Backend/src/Api/routers/contactRouter.ts delete mode 100644 SerpentRace_Backend/src/Api/routers/deckImportExportRouter.ts delete mode 100644 SerpentRace_Backend/src/Api/routers/deckRouter.ts delete mode 100644 SerpentRace_Backend/src/Api/routers/gameRouter.ts delete mode 100644 SerpentRace_Backend/src/Api/routers/organizationRouter.ts delete mode 100644 SerpentRace_Backend/src/Api/routers/userRouter.ts delete mode 100644 SerpentRace_Backend/src/Api/swagger/swaggerConfig.ts delete mode 100644 SerpentRace_Backend/src/Api/swagger/swaggerDefinitions.ts delete mode 100644 SerpentRace_Backend/src/Api/swagger/swaggerDefinitionsFixed.ts delete mode 100644 SerpentRace_Backend/src/Api/swagger/swaggerUiSetup.ts delete mode 100644 SerpentRace_Backend/src/Application/Chat/commands/ChatArchiveCommandHandlers.ts delete mode 100644 SerpentRace_Backend/src/Application/Chat/commands/ChatCommands.ts delete mode 100644 SerpentRace_Backend/src/Application/Chat/commands/CreateChatCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Chat/commands/SendMessageCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Chat/commands/SoftDeleteCommandHandlers.ts delete mode 100644 SerpentRace_Backend/src/Application/Chat/queries/ChatHistoryQueryHandlers.ts delete mode 100644 SerpentRace_Backend/src/Application/Chat/queries/ChatQueries.ts delete mode 100644 SerpentRace_Backend/src/Application/Chat/queries/GetChatsByPageQuery.ts delete mode 100644 SerpentRace_Backend/src/Application/Chat/queries/GetChatsByPageQueryHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Chat/queries/GetUserChatsQueryHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Contact/commands/CreateContactCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Contact/commands/CreateContactCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Contact/commands/DeleteContactCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Contact/commands/DeleteContactCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Contact/commands/UpdateContactCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Contact/commands/UpdateContactCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Contact/queries/GetContactByIdQuery.ts delete mode 100644 SerpentRace_Backend/src/Application/Contact/queries/GetContactByIdQueryHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Contact/queries/GetContactsByPageQuery.ts delete mode 100644 SerpentRace_Backend/src/Application/Contact/queries/GetContactsByPageQueryHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/DTOs/ChatDto.ts delete mode 100644 SerpentRace_Backend/src/Application/DTOs/ContactDto.ts delete mode 100644 SerpentRace_Backend/src/Application/DTOs/DeckDto.ts delete mode 100644 SerpentRace_Backend/src/Application/DTOs/GameDto.ts delete mode 100644 SerpentRace_Backend/src/Application/DTOs/Mappers/BaseMapper.ts delete mode 100644 SerpentRace_Backend/src/Application/DTOs/Mappers/ChatMapper.ts delete mode 100644 SerpentRace_Backend/src/Application/DTOs/Mappers/ContactMapper.ts delete mode 100644 SerpentRace_Backend/src/Application/DTOs/Mappers/DeckMapper.ts delete mode 100644 SerpentRace_Backend/src/Application/DTOs/Mappers/OrganizationMapper.ts delete mode 100644 SerpentRace_Backend/src/Application/DTOs/Mappers/UserMapper.ts delete mode 100644 SerpentRace_Backend/src/Application/DTOs/OrganizationDto.ts delete mode 100644 SerpentRace_Backend/src/Application/DTOs/SearchDto.ts delete mode 100644 SerpentRace_Backend/src/Application/DTOs/UserDto.ts delete mode 100644 SerpentRace_Backend/src/Application/Deck/commands/CreateDeckCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Deck/commands/CreateDeckCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Deck/commands/DeleteDeckCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Deck/commands/DeleteDeckCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Deck/commands/UpdateDeckCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Deck/commands/UpdateDeckCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Deck/queries/GetDeckByIdQuery.ts delete mode 100644 SerpentRace_Backend/src/Application/Deck/queries/GetDeckByIdQueryHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Deck/queries/GetDecksByPageQuery.ts delete mode 100644 SerpentRace_Backend/src/Application/Deck/queries/GetDecksByPageQueryHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Game/BoardGenerationService.ts delete mode 100644 SerpentRace_Backend/src/Application/Game/GameService.ts delete mode 100644 SerpentRace_Backend/src/Application/Game/commands/GenerateBoardCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Game/commands/GenerateBoardCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Game/commands/JoinGameCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Game/commands/JoinGameCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Game/commands/StartGameCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Game/commands/StartGameCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Game/commands/StartGamePlayCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Game/commands/StartGamePlayCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/commands/CreateOrganizationCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/commands/CreateOrganizationCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/commands/DeleteOrganizationCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/commands/DeleteOrganizationCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/commands/ProcessOrgAuthCallbackCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/commands/ProcessOrgAuthCallbackCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/commands/UpdateOrganizationCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/commands/UpdateOrganizationCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationByIdQuery.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationByIdQueryHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationLoginUrlQuery.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationLoginUrlQueryHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationsByPageQuery.ts delete mode 100644 SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationsByPageQueryHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/Search/Generalsearch.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/AdminBypassService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/AuthMiddleware.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/CardDrawingService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/CardProcessingService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/ContactEmailService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/DIContainer.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/DeckImportExportService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/EmailService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/EmailTemplateHelper.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/ErrorResponseService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/FieldEffectService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/GameSnapshotService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/GameTokenService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/GameWebSocketService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/GamemasterService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/Interfaces/GameInterfaces.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/JWTService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/Logger.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/LoggingService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/PasswordService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/RedisService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/TokenService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/TurnHistoryService.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/ValidationMiddleware.ts delete mode 100644 SerpentRace_Backend/src/Application/Services/WebSocketService.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/ActivateUserCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/ActivateUserCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/CreateUserCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/CreateUserCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/DeactivateUserCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/DeactivateUserCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/DeleteUserCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/DeleteUserCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/LoginCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/LoginCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/LogoutCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/RequestPasswordResetCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/RequestPasswordResetCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/ResetPasswordCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/ResetPasswordCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/UpdateUserCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/UpdateUserCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/VerifyEmailCommand.ts delete mode 100644 SerpentRace_Backend/src/Application/User/commands/VerifyEmailCommandHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/User/queries/GetUserByIdQuery.ts delete mode 100644 SerpentRace_Backend/src/Application/User/queries/GetUserByIdQueryHandler.ts delete mode 100644 SerpentRace_Backend/src/Application/User/queries/GetUsersByPageQuery.ts delete mode 100644 SerpentRace_Backend/src/Application/User/queries/GetUsersByPageQueryHandler.ts delete mode 100644 SerpentRace_Backend/src/Domain/Chat/ChatAggregate.ts delete mode 100644 SerpentRace_Backend/src/Domain/Chat/ChatArchiveAggregate.ts delete mode 100644 SerpentRace_Backend/src/Domain/Contact/ContactAggregate.ts delete mode 100644 SerpentRace_Backend/src/Domain/Deck/DeckAggregate.ts delete mode 100644 SerpentRace_Backend/src/Domain/Game/GameAggregate.ts delete mode 100644 SerpentRace_Backend/src/Domain/Game/GameSnapshotAggregate.ts delete mode 100644 SerpentRace_Backend/src/Domain/Game/TurnHistoryAggregate.ts delete mode 100644 SerpentRace_Backend/src/Domain/IRepository/IBaseRepository.ts delete mode 100644 SerpentRace_Backend/src/Domain/IRepository/IChatArchiveRepository.ts delete mode 100644 SerpentRace_Backend/src/Domain/IRepository/IChatRepository.ts delete mode 100644 SerpentRace_Backend/src/Domain/IRepository/IContactRepository.ts delete mode 100644 SerpentRace_Backend/src/Domain/IRepository/IDeckRepository.ts delete mode 100644 SerpentRace_Backend/src/Domain/IRepository/IGameRepository.ts delete mode 100644 SerpentRace_Backend/src/Domain/IRepository/IGameSnapshotRepository.ts delete mode 100644 SerpentRace_Backend/src/Domain/IRepository/IOrganizationRepository.ts delete mode 100644 SerpentRace_Backend/src/Domain/IRepository/ITurnHistoryRepository.ts delete mode 100644 SerpentRace_Backend/src/Domain/IRepository/IUserRepository.ts delete mode 100644 SerpentRace_Backend/src/Domain/Organization/OrganizationAggregate.ts delete mode 100644 SerpentRace_Backend/src/Domain/User/UserAggregate.ts delete mode 100644 SerpentRace_Backend/src/Infrastructure/Migrations/1762370334693-full.ts delete mode 100644 SerpentRace_Backend/src/Infrastructure/Migrationsettings/1762370333970-full.ts delete mode 100644 SerpentRace_Backend/src/Infrastructure/Repository/ChatArchiveRepository.ts delete mode 100644 SerpentRace_Backend/src/Infrastructure/Repository/ChatRepository.ts delete mode 100644 SerpentRace_Backend/src/Infrastructure/Repository/ContactRepository.ts delete mode 100644 SerpentRace_Backend/src/Infrastructure/Repository/DeckRepository.ts delete mode 100644 SerpentRace_Backend/src/Infrastructure/Repository/GameRepository.ts delete mode 100644 SerpentRace_Backend/src/Infrastructure/Repository/GameSnapshotRepository.ts delete mode 100644 SerpentRace_Backend/src/Infrastructure/Repository/OrganizationRepository.ts delete mode 100644 SerpentRace_Backend/src/Infrastructure/Repository/TurnHistoryRepository.ts delete mode 100644 SerpentRace_Backend/src/Infrastructure/Repository/UserRepository.ts delete mode 100644 SerpentRace_Backend/src/Infrastructure/ormconfig.ts delete mode 100644 SerpentRace_Backend/src/Templates/contact-response-de.html delete mode 100644 SerpentRace_Backend/src/Templates/contact-response-de.txt delete mode 100644 SerpentRace_Backend/src/Templates/contact-response-hu.html delete mode 100644 SerpentRace_Backend/src/Templates/contact-response-hu.txt delete mode 100644 SerpentRace_Backend/src/Templates/contact-response.html delete mode 100644 SerpentRace_Backend/src/Templates/contact-response.txt delete mode 100644 SerpentRace_Backend/src/Templates/password-reset-de.html delete mode 100644 SerpentRace_Backend/src/Templates/password-reset-de.txt delete mode 100644 SerpentRace_Backend/src/Templates/password-reset-hu.html delete mode 100644 SerpentRace_Backend/src/Templates/password-reset-hu.txt delete mode 100644 SerpentRace_Backend/src/Templates/password-reset.html delete mode 100644 SerpentRace_Backend/src/Templates/password-reset.txt delete mode 100644 SerpentRace_Backend/src/Templates/verification-de.html delete mode 100644 SerpentRace_Backend/src/Templates/verification-de.txt delete mode 100644 SerpentRace_Backend/src/Templates/verification-hu.html delete mode 100644 SerpentRace_Backend/src/Templates/verification-hu.txt delete mode 100644 SerpentRace_Backend/src/Templates/verification.html delete mode 100644 SerpentRace_Backend/src/Templates/verification.txt delete mode 100644 SerpentRace_Backend/test-org-auth.js delete mode 100644 SerpentRace_Backend/tests/Application/Chat/ChatMessagingSystem.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Contact/commands/ContactCommandHandlers.comprehensive.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/DTOs/Mappers/ContactMapper.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/DTOs/Mappers/DeckMapper.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/DTOs/Mappers/OrganizationMapper.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/DTOs/Mappers/UserMapper.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Deck/commands/CreateDeckCommandHandler.comprehensive.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Deck/commands/DeckCommandHandlers.comprehensive.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Game/BoardGenerationService.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Organization/commands/OrganizationCommandHandlers.comprehensive.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Services/AuthMiddleware.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Services/ChatConfiguration.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Services/DIContainer.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Services/EmailService.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Services/JWTService.refresh.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Services/JWTService.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Services/LoggingService.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Services/PasswordService.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Services/RedisService.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Services/TokenService.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/Services/ValidationMiddleware.test.ts delete mode 100644 SerpentRace_Backend/tests/Application/User/commands/UserCommandHandlers.comprehensive.test.ts delete mode 100644 SerpentRace_Backend/tests/comprehensive-repository-coverage.test.ts delete mode 100644 SerpentRace_Backend/tests/jest.setup.ts delete mode 100644 SerpentRace_Backend/tests/setup.ts delete mode 100644 SerpentRace_Backend/tests/testUtils.ts delete mode 100644 SerpentRace_Backend/tsconfig.json delete mode 100644 SerpentRace_Docker/.env.dev delete mode 100644 SerpentRace_Docker/.env.example delete mode 100644 SerpentRace_Docker/.env.prod delete mode 100644 SerpentRace_Docker/.env.server delete mode 100644 SerpentRace_Docker/DOCKER_README.md delete mode 100644 SerpentRace_Docker/Dockerfile_backend delete mode 100644 SerpentRace_Docker/Dockerfile_backend.dev delete mode 100644 SerpentRace_Docker/Dockerfile_frontend delete mode 100644 SerpentRace_Docker/Dockerfile_frontend.dev delete mode 100644 SerpentRace_Docker/docker-compose.deploy.yml delete mode 100644 SerpentRace_Docker/docker-compose.dev.yml delete mode 100644 SerpentRace_Docker/docker-compose.prod.yml delete mode 100644 SerpentRace_Docker/docker-compose.watch.nat.yml delete mode 100644 SerpentRace_Docker/docker-compose.watch.yml delete mode 100644 SerpentRace_Docker/docker-manage.bat delete mode 100644 SerpentRace_Docker/nginx.conf delete mode 100644 SerpentRace_Docker/pgadmin_servers.json delete mode 100644 SerpentRace_Docker/sql_dump_with_test_data.sql delete mode 100644 SerpentRace_Docker/sql_schema_only.sql delete mode 100644 SerpentRace_Frontend/.dockerignore delete mode 100644 SerpentRace_Frontend/.gitignore delete mode 100644 SerpentRace_Frontend/CLEANUP_SUMMARY.md delete mode 100644 SerpentRace_Frontend/README.md delete mode 100644 SerpentRace_Frontend/eslint.config.js delete mode 100644 SerpentRace_Frontend/index.html delete mode 100644 SerpentRace_Frontend/nginx.conf delete mode 100644 SerpentRace_Frontend/package-lock.json delete mode 100644 SerpentRace_Frontend/package.json delete mode 100644 SerpentRace_Frontend/src/App.jsx delete mode 100644 SerpentRace_Frontend/src/api/deckApi.js delete mode 100644 SerpentRace_Frontend/src/api/gameApi.js delete mode 100644 SerpentRace_Frontend/src/api/userApi.js delete mode 100644 SerpentRace_Frontend/src/assets/SerpentRace_Animation/Path.module.css delete mode 100644 SerpentRace_Frontend/src/assets/SerpentRace_Animation/SerpentRace_Animation.jsx delete mode 100644 SerpentRace_Frontend/src/assets/backgrounds/Background.jsx delete mode 100644 SerpentRace_Frontend/src/assets/pictures/Logo.jsx delete mode 100644 SerpentRace_Frontend/src/assets/pictures/Logo.png delete mode 100644 SerpentRace_Frontend/src/assets/pictures/LogoCard.jsx delete mode 100644 SerpentRace_Frontend/src/assets/pictures/busi.JPG delete mode 100644 SerpentRace_Frontend/src/assets/pictures/donat.JPG delete mode 100644 SerpentRace_Frontend/src/assets/pictures/gege.JPG delete mode 100644 SerpentRace_Frontend/src/assets/pictures/piskor.JPG delete mode 100644 SerpentRace_Frontend/src/assets/pictures/turo.JPG delete mode 100644 SerpentRace_Frontend/src/assets/pictures/walke.JPG delete mode 100644 SerpentRace_Frontend/src/assets/pictures/zsola.JPG delete mode 100644 SerpentRace_Frontend/src/components/Buttons/Button.jsx delete mode 100644 SerpentRace_Frontend/src/components/Buttons/ButtonDark.jsx delete mode 100644 SerpentRace_Frontend/src/components/Buttons/ButtonGreen.jsx delete mode 100644 SerpentRace_Frontend/src/components/Card/Card.jsx delete mode 100644 SerpentRace_Frontend/src/components/DeckCreator/CardEditor.jsx delete mode 100644 SerpentRace_Frontend/src/components/DeckCreator/CardPreview.jsx delete mode 100644 SerpentRace_Frontend/src/components/DeckCreator/CardsList.jsx delete mode 100644 SerpentRace_Frontend/src/components/DeckCreator/DeckHeader.jsx delete mode 100644 SerpentRace_Frontend/src/components/DeckCreator/DeckManager.jsx delete mode 100644 SerpentRace_Frontend/src/components/DeckCreator/JokerCardEditor.jsx delete mode 100644 SerpentRace_Frontend/src/components/DeckCreator/LuckCardEditor.jsx delete mode 100644 SerpentRace_Frontend/src/components/DeckCreator/TaskCardEditor.jsx delete mode 100644 SerpentRace_Frontend/src/components/Footer/Footer.jsx delete mode 100644 SerpentRace_Frontend/src/components/Inputs/InputBox.jsx delete mode 100644 SerpentRace_Frontend/src/components/Inputs/InputBoxDark.jsx delete mode 100644 SerpentRace_Frontend/src/components/Landingpage/LandingPage.jsx delete mode 100644 SerpentRace_Frontend/src/components/Landingpage/PlayMenu.jsx delete mode 100644 SerpentRace_Frontend/src/components/Navbar/Navbar.jsx delete mode 100644 SerpentRace_Frontend/src/components/PopUp/DeckInfoPopUp.jsx delete mode 100644 SerpentRace_Frontend/src/components/PopUp/History.jsx delete mode 100644 SerpentRace_Frontend/src/components/PopUp/PopUp.jsx delete mode 100644 SerpentRace_Frontend/src/components/PopUp/RatingSet.jsx delete mode 100644 SerpentRace_Frontend/src/components/ScrollToTop.jsx delete mode 100644 SerpentRace_Frontend/src/components/Search/SearchBox.jsx delete mode 100644 SerpentRace_Frontend/src/components/Toastify/toastifyServices.jsx delete mode 100644 SerpentRace_Frontend/src/components/Userdetails/Userdetails.jsx delete mode 100644 SerpentRace_Frontend/src/constants/CardTypes.js delete mode 100644 SerpentRace_Frontend/src/contexts/GameWebSocketContext.jsx delete mode 100644 SerpentRace_Frontend/src/hooks/useGameWebSocket.js delete mode 100644 SerpentRace_Frontend/src/hooks/useRequireAuth.jsx delete mode 100644 SerpentRace_Frontend/src/index.css delete mode 100644 SerpentRace_Frontend/src/main.jsx delete mode 100644 SerpentRace_Frontend/src/pages/About/About.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Auth/AuthCard.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Auth/AuthLogin.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Auth/AuthRegister.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Auth/ForgotPassword.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Auth/LoginForm.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Auth/RegisterForm.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Auth/ResetPassword.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Auth/VerifyEmailPage.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Contacts/Contacts.jsx delete mode 100644 SerpentRace_Frontend/src/pages/DeckCreator/DeckCreator.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Decks/Card_display.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Decks/DeckManagerPage.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Game/CardDisplayModal.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Game/ChooseDeck.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Game/ConsequenceModal.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Game/GameModalsDemo.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Game/GameScreen.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Game/GameTest.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Game/JokerApprovalModal.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Game/Lobby.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Game/PlayerSetup.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Game/StepPredictionModal.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Landing/Home.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Landing/Landingpage.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Report/Reports.jsx delete mode 100644 SerpentRace_Frontend/src/pages/Testing/Test.jsx delete mode 100644 SerpentRace_Frontend/src/utils/HandleNavigate/HandleNavigate.jsx delete mode 100644 SerpentRace_Frontend/src/utils/MrandomUtils.js delete mode 100644 SerpentRace_Frontend/src/utils/dice/Dice.jsx delete mode 100644 SerpentRace_Frontend/src/utils/dice/diceDotPositions.js delete mode 100644 SerpentRace_Frontend/src/utils/randomUtils.js delete mode 100644 SerpentRace_Frontend/src/utils/routes.js delete mode 100644 SerpentRace_Frontend/vite.config.js delete mode 100644 TESTING_CHECKLIST.md delete mode 100644 create-deployment.bat rename {SerpentRace_Docker/deployment => deployment}/.env.server (100%) rename {SerpentRace_Docker/deployment => deployment}/README.md (100%) rename {SerpentRace_Docker/deployment => deployment}/docker-compose.deploy.yml (100%) rename {SerpentRace_Docker/deployment => deployment}/load-images.bat (100%) rename {SerpentRace_Docker/deployment => deployment}/load-images.sh (100%) rename {SerpentRace_Docker/deployment => deployment}/nginx.conf (100%) rename {SerpentRace_Docker/deployment => deployment}/pgadmin_servers_deployment.json (100%) rename {SerpentRace_Docker/deployment => deployment}/serpentRaceDocker.tar (100%) rename {SerpentRace_Docker/deployment => deployment}/sql_schema_only.sql (100%) delete mode 100644 docker-manage.bat delete mode 100755 docker-manage.sh delete mode 100644 fix_passwords.sql delete mode 100644 hibák.txt delete mode 100644 package.json delete mode 100644 test-watcher.sh diff --git a/FIXES_APPLIED.md b/FIXES_APPLIED.md deleted file mode 100644 index 8d11a651..00000000 --- a/FIXES_APPLIED.md +++ /dev/null @@ -1,217 +0,0 @@ -# 🔧 Game Fixes Applied - November 19, 2025 - -## Issues Fixed - -### 1. ✅ Cannot Answer Card Questions -**Problem**: Card modal wasn't receiving data properly from backend -**Root Cause**: Backend sends `game:card-drawn-self` event with nested structure `{ cardData: {...}, timeLimit: 60 }` but frontend was trying to access fields directly -**Solution**: -- Updated `handleCardDrawn` in GameScreen.jsx to properly extract `cardData` from nested structure -- Added support for `hint` field -- Properly handles both `game:card-drawn` and `game:card-drawn-self` events - -**Files Modified**: -- `SerpentRace_Frontend/src/pages/Game/GameScreen.jsx` (lines 249-263) - -```javascript -const handleCardDrawn = (data) => { - // Backend sends cardData nested in game:card-drawn-self event - const cardData = data.cardData || data; - setCurrentCard({ - id: cardData.cardId || cardData.id, - type: cardData.cardType || cardData.type, - question: cardData.question || cardData.text || cardData.statement, - answerOptions: cardData.answerOptions || cardData.options || [], - correctAnswer: cardData.correctAnswer, - hint: cardData.hint, - points: cardData.points || 0, - timeLimit: data.timeLimit || cardData.timeLimit || 60 - }) - setIsCardModalOpen(true) -} -``` - ---- - -### 2. ✅ Player Turn Indicator Not Working -**Problem**: Turn indicator wasn't updating properly -**Root Cause**: Frontend didn't know which player was the current user to compare with `gameState.currentPlayer` -**Solution**: -- Added `playerIdentifier` state to GameWebSocketContext -- Decode gameToken on connect to extract `userId` or `playerName` -- Added `isMyTurn` computed value that compares `gameState.currentPlayer` with `playerIdentifier` - -**Files Modified**: -- `SerpentRace_Frontend/src/contexts/GameWebSocketContext.jsx` (lines 16, 57-62, 88-97, 488-489) - -```javascript -// In GameWebSocketContext -const [playerIdentifier, setPlayerIdentifier] = useState(null); - -// Decode token to get player identifier -try { - const payload = JSON.parse(atob(gameToken.split('.')[1])); - const identifier = payload.userId || payload.playerName; - setPlayerIdentifier(identifier); - log('🎮 Player identifier:', identifier); -} catch (err) { - logError('Failed to decode game token:', err); -} - -// Check if it's the current player's turn -const isMyTurn = useMemo(() => { - if (!gameState?.currentPlayer || !playerIdentifier) return false; - return gameState.currentPlayer === playerIdentifier; -}, [gameState?.currentPlayer, playerIdentifier]); -``` - ---- - -### 3. ✅ Current Player Name Not Shown in Indicator -**Problem**: Turn indicator only showed "Betöltés..." or player ID instead of player name -**Root Cause**: Inconsistent player ID format (some by `userId`, some by `playerName`) -**Solution**: -- Updated player lookup to check multiple possible ID formats -- Highlights current player name in green when it's your turn -- Shows "← Te vagy!" (It's you!) indicator next to your name - -**Files Modified**: -- `SerpentRace_Frontend/src/pages/Game/GameScreen.jsx` (lines 470-476) - -```javascript -{currentTurn && ( -
- 🎯 Köron: - {players.find(p => p.id === currentTurn || p.playerName === currentTurn || p.name === currentTurn)?.name || currentTurn || 'Betöltés...'} - - {isMyTurn && ← Te vagy!} -
-)} -``` - ---- - -### 4. ✅ Dice Shown Even When Not Player's Turn -**Problem**: Dice was always interactive regardless of whose turn it was -**Root Cause**: No turn validation on dice display -**Solution**: -- Added conditional rendering based on `isMyTurn` flag -- When it's your turn: Shows green pulsing text "🎯 A te köröd! Kattints a kockára dobáshoz!" -- When it's NOT your turn: Shows gray text "⏳ Várd meg a köröd..." and dice is disabled with 50% opacity and `pointer-events-none` - -**Files Modified**: -- `SerpentRace_Frontend/src/pages/Game/GameScreen.jsx` (lines 609-625) - -```javascript -{isMyTurn ? ( - <> -

- 🎯 A te köröd! Kattints a kockára dobáshoz! -

- - -) : ( - <> -

- ⏳ Várd meg a köröd... -

-
- -
- -)} -``` - ---- - -## Additional Improvements - -### Debug Panel Enhancement -Added debug information to help verify turn system: -- **🆔 My ID**: Shows current player's identifier (userId or playerName) -- **✅ Is My Turn**: Shows YES/NO to quickly verify turn detection - -**Files Modified**: -- `SerpentRace_Frontend/src/pages/Game/GameScreen.jsx` (lines 643-644) - ---- - -## Technical Details - -### Token Structure -The gameToken is a JWT containing: -```json -{ - "gameId": "uuid", - "gameCode": "ABC123", - "playerName": "Player1", - "isAuthenticated": true/false, - "userId": "uuid" // only for authenticated players -} -``` - -### Player Identification Logic -Backend uses: `playerIdentifier = socket.userId || socket.playerName` -Frontend now extracts: `payload.userId || payload.playerName` from decoded token - -This ensures both authenticated users (with userId) and guest players (with only playerName) work correctly. - ---- - -## Testing Checklist - -### ✅ Card System -- [ ] Draw a card and verify modal opens with question -- [ ] Verify answer options display correctly (for quiz cards) -- [ ] Submit answer and verify it's sent to backend -- [ ] Check hint displays if available -- [ ] Verify timer countdown works - -### ✅ Turn System -- [ ] Game starts and first player sees "🎯 A te köröd!" -- [ ] Other players see "⏳ Várd meg a köröd..." -- [ ] Turn indicator shows correct player name -- [ ] "← Te vagy!" appears next to your name when it's your turn -- [ ] Name is highlighted in green when it's your turn - -### ✅ Dice Control -- [ ] Dice is interactive (clickable) only on your turn -- [ ] Dice is grayed out and disabled when not your turn -- [ ] Text changes from green "A te köröd!" to gray "Várd meg a köröd..." - -### ✅ Multi-Player Testing -- [ ] Test with 2+ authenticated players -- [ ] Test with guest players (no login) -- [ ] Test with mix of authenticated and guest players -- [ ] Verify turn rotation works correctly -- [ ] Each player can only act on their turn - ---- - -## Files Modified Summary - -1. **SerpentRace_Frontend/src/contexts/GameWebSocketContext.jsx** - - Added `playerIdentifier` state - - Added token decoding on connect - - Added `isMyTurn` computed value - - Exported new values in context - -2. **SerpentRace_Frontend/src/pages/Game/GameScreen.jsx** - - Fixed card modal data extraction - - Updated turn indicator with name lookup - - Added turn-based dice control - - Added debug info for turn tracking - - Imported `isMyTurn` and `playerIdentifier` from context - ---- - -## Compilation Status - -✅ **No TypeScript/JavaScript errors** -✅ **All changes backwards compatible** -✅ **Ready for testing** - ---- - -**Last Updated**: November 19, 2025 -**Status**: All 4 issues resolved and tested for compilation errors diff --git a/Javitás.txt b/Javitás.txt deleted file mode 100644 index 13b10841..00000000 --- a/Javitás.txt +++ /dev/null @@ -1,62 +0,0 @@ -Javitás - -Deckeck: - - Következmény csak szerencse kártyánál - - Egy fajta következmény (/lap, automatikusan kerül végrehajtásra) - - Hibás kártya pakli mentésekor is törlödjön - - extra kör, kimarad bármennyi 1-től 5-ig - - megnyitás, szerkesztés, adatok betöltése - - Mentési ADATOK Csekkolása | ZSOLA - - Closer option - -navbar: - - tegnapiak - -TEGNAPI HIBÁK JAVÍTÁSA: - - kapcs fel routing - - navbar széthúz - - footer kapcsolat - - navabar gomboksorrend - - vagy kontat vagy kapcsolat - - navbar bejelent - - navbar layout finomít - - palki info get - - -GET /ap/decks/page/:from/:to (0-49) 50db (50-99) 50db ... (0-29) 30db => (30-59) 30db - - from: (oldalsz-1)*dbsz (pl: (1-1)*30=0; (2-1)*30=30) - - to: (oldalsz*dbsz) - 1 (pl: (1*30)-1=29; (2*30)-1 =59) - -email verifikáció: - - verify-email/:code => Email címe hitelesítés alatt: stb - - ha sikeres => login => toastify => email címe hitelesítve - - ha sikertelen => home/register => toastify/pushup => sikertelen vegye fel velünk a kapcsolatot - - - POST api/users/verify-email/:code <= BACKEND URI - - - -HOLNAP ESTE 19:00 => Jó lenne, ha ezek megvannak -HOLNAPTÓL => JÁTÉK => SOCKET IO működése - - -Mobil nézet: - - landing page - - navbar - - footer - - pakli fő nézet => bar - - pakli összerakás és szerkesztés - - bejelentkezés - - regisztráció - -User felület: - - Saját adatok lekérése - - Saját adatok módosítása: - - email-cím - - telefonszám - - jelszó - - felhasználó név - - Saját profil törlése - - Elfelelejtett jelszó - - Kérése => email-cím alapján => POST /api/users/forgot-password - - password-reset/:token => POST /api/users/reset-password diff --git a/README.md b/README.md deleted file mode 100644 index a0fccc0f..00000000 --- a/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# SerpentRace - -- Frontend: React (Vite) -- Backend: Node.js (Express.js) - -## Development Commands - -### Start with File Watchers (Recommended) -```bash -# Windows -.\docker-manage.bat dev:watch - -# Linux/Mac -./docker-manage.sh dev:watch -``` -Automatically syncs file changes and rebuilds containers when needed. - -### Traditional Start -```bash -# Windows -.\docker-manage.bat dev:start - -# Linux/Mac -./docker-manage.sh dev:start -``` - -## Documentation -- [Docker Watcher Guide](./Documentations/DOCKER_WATCHER_GUIDE.md) - Comprehensive guide for file watching functionality \ No newline at end of file diff --git a/SerpentRace_Backend/.dockerignore b/SerpentRace_Backend/.dockerignore deleted file mode 100644 index fb8f96bb..00000000 --- a/SerpentRace_Backend/.dockerignore +++ /dev/null @@ -1,27 +0,0 @@ -node_modules -npm-debug.log -.git -.gitignore -README.md -.env -.nyc_output -coverage -.coverage -.coverage.* -.cache -logs -*.log -.DS_Store -.vscode -.idea -*.swp -*.swo -dist -build -.next -.nuxt -.vuepress/dist -.serverless -.fusebox/ -.dynamodb/ -.tern-port diff --git a/SerpentRace_Backend/.env.dev b/SerpentRace_Backend/.env.dev deleted file mode 100644 index 7f280d5f..00000000 --- a/SerpentRace_Backend/.env.dev +++ /dev/null @@ -1,41 +0,0 @@ -# Development Environment Variables for Local Build -# These are used when running build scripts outside of Docker containers - -NODE_ENV=development -PORT=3000 - -# Database Configuration (Docker containers) -DB_HOST=localhost -DB_PORT=5432 -DB_NAME=serpentrace -DB_USERNAME=postgres -DB_PASSWORD=postgres - -# Redis Configuration (Docker containers) -REDIS_HOST=localhost -REDIS_PORT=6379 -REDIS_URL=redis://localhost:6379 - -# JWT Configuration -JWT_SECRET=dev_jwt_secret_change_in_production -JWT_EXPIRATION=24h -JWT_REFRESH_EXPIRATION=7d - -# MinIO Configuration (Docker containers) -MINIO_ENDPOINT=localhost -MINIO_PORT=9000 -MINIO_ACCESS_KEY=serpentrace -MINIO_SECRET_KEY=serpentrace123! -MINIO_USE_SSL=false - -# Board Generation Configuration -MAX_SPECIAL_FIELDS_PERCENTAGE=67 -MAX_GENERATION_TIME_SECONDS=20 -GENERATION_ERROR_TOLERANCE=15 - -# EMAIL SERVICE CONFIGURATION -EMAIL_HOST=smtp.gmail.com -EMAIL_PORT=587 -EMAIL_USER=your_email@domain.com -EMAIL_PASS=your_email_password -EMAIL_FROM=noreply@serpentrace.com \ No newline at end of file diff --git a/SerpentRace_Backend/.env.example b/SerpentRace_Backend/.env.example deleted file mode 100644 index cd5d9d7c..00000000 --- a/SerpentRace_Backend/.env.example +++ /dev/null @@ -1,62 +0,0 @@ -# ============================================== -# SerpentRace Backend Environment Configuration -# ============================================== -# Copy this file to .env and fill in your values - -# APPLICATION CONFIGURATION -NODE_ENV=development -PORT=3000 -APP_BASE_URL=http://localhost:3000 - -# DATABASE CONFIGURATION (PostgreSQL) -DB_HOST=localhost -DB_PORT=5432 -DB_NAME=serpentrace -DB_USERNAME=postgres -DB_PASSWORD=your_db_password - -# REDIS CONFIGURATION -REDIS_HOST=localhost -REDIS_PORT=6379 -REDIS_URL=redis://localhost:6379 - -# JWT AUTHENTICATION CONFIGURATION -JWT_SECRET=your-super-secure-secret-key-here -JWT_REFRESH_SECRET=your-super-secure-refresh-secret-key-here - -# Access Token Expiry (choose ONE option, priority order listed): -JWT_ACCESS_TOKEN_EXPIRY=1800 # Seconds (recommended for production) -# JWT_ACCESS_TOKEN_EXPIRATION=30m # Duration string (user-friendly) -# JWT_EXPIRY=1800 # Legacy: seconds -# JWT_EXPIRATION=30m # Legacy: duration string - -# Refresh Token Expiry (choose ONE option, priority order listed): -JWT_REFRESH_TOKEN_EXPIRY=604800 # Seconds (7 days) -# JWT_REFRESH_TOKEN_EXPIRATION=7d # Duration string (recommended) -# JWT_REFRESH_EXPIRATION=7d # Legacy: duration string - -# Cookie Names (optional) -JWT_COOKIE_NAME=auth_token -JWT_REFRESH_COOKIE_NAME=refresh_token - -# Legacy JWT Configuration (deprecated - use above options) -# JWT_EXPIRY=86400 -# JWT_EXPIRATION=24h -GAME_TOKEN_EXPIRY=86400 - -# EMAIL SERVICE CONFIGURATION -EMAIL_HOST=smtp.gmail.com -EMAIL_PORT=587 -EMAIL_USER=your_email@domain.com -EMAIL_PASS=your_email_password -EMAIL_FROM=noreply@serpentrace.com - -# CHAT SYSTEM CONFIGURATION -CHAT_INACTIVITY_TIMEOUT_MINUTES=30 -CHAT_MAX_MESSAGES_PER_USER=100 -CHAT_MESSAGE_CLEANUP_WEEKS=4 - -# GAME CONFIGURATION -MAX_SPECIAL_FIELDS_PERCENTAGE=67 -MAX_GENERATION_TIME_SECONDS=20 -GENERATION_ERROR_TOLERANCE=15 diff --git a/SerpentRace_Backend/.gitignore b/SerpentRace_Backend/.gitignore deleted file mode 100644 index c8d513b6..00000000 --- a/SerpentRace_Backend/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -./dist/* -./node_modules/* -./Archive_*/* -./Archive_* -./logs/* diff --git a/SerpentRace_Backend/assets/Logo.png b/SerpentRace_Backend/assets/Logo.png deleted file mode 100644 index 480d8c5d6b36bc25162fc25d6e95388bb2d764ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1004549 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
8}uFOYu)+|!ojP) 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

?f7B9@psje)TWP07M_?7B_Myx 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

b6ZQnY@0Ks%*T16i* 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 Qhi;cjH;GpoelZ3 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%0A+0{t$pgvewI{D*;YY8NPIR0K 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%0DHxmeWK@phpalpkp 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

$Ni%&KgfgD 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 X8ACTLyUlnR1U$E{>qCF&S_l6RnV8-c diff --git a/SerpentRace_Backend/jest.config.js b/SerpentRace_Backend/jest.config.js deleted file mode 100644 index 929a0400..00000000 --- a/SerpentRace_Backend/jest.config.js +++ /dev/null @@ -1,28 +0,0 @@ -module.exports = { - preset: 'ts-jest', - testEnvironment: 'node', - roots: ['/tests', '/src'], - testMatch: ['**/__tests__/**/*.ts', '**/?(*.)+(spec|test).ts'], - transform: { - '^.+\\.ts$': 'ts-jest', - }, - collectCoverageFrom: [ - 'src/**/*.ts', - '!src/**/*.d.ts', - '!src/Api/index.ts', - '!src/Infrastructure/ormconfig.ts', - '!src/search-demo.ts' - ], - coverageDirectory: 'coverage', - coverageReporters: ['text', 'lcov', 'html'], - moduleFileExtensions: ['ts', 'js', 'json'], - setupFilesAfterEnv: ['/tests/setup.ts'], - testTimeout: 10000, - setupFiles: ['/tests/jest.setup.ts'], - verbose: true, - moduleNameMapper: { - '^@/(.*)$': '/src/$1' - }, - resolver: undefined, - moduleDirectories: ['node_modules', '/src', '/tests'] -}; diff --git a/SerpentRace_Backend/language-test.js b/SerpentRace_Backend/language-test.js deleted file mode 100644 index 4895e213..00000000 --- a/SerpentRace_Backend/language-test.js +++ /dev/null @@ -1,29 +0,0 @@ -// Quick test to demonstrate the language detection functionality -const { extractLanguageFromAcceptHeader } = require('./src/Api/contactRouter.js'); - -// Test cases to demonstrate Accept-Language parsing -const testCases = [ - 'en-US,en;q=0.9', - 'hu,en;q=0.9', - 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7', - 'hu-HU,hu;q=0.9,en-US;q=0.8', - 'fr-FR,fr;q=0.9,en;q=0.8', - 'es,en-US;q=0.9,en;q=0.8', - 'invalid-header', - '' -]; - -console.log('Testing Accept-Language header parsing:\n'); - -testCases.forEach(header => { - const result = extractLanguageFromAcceptHeader(header); - console.log(`Header: "${header}" -> Language: ${result}`); -}); - -console.log('\n✅ Multi-language system is working correctly!'); -console.log('\nFeatures implemented:'); -console.log('- Accept-Language header parsing with quality values'); -console.log('- Support for EN, HU, DE templates'); -console.log('- Custom header detection (X-Language, X-Region, X-Locale)'); -console.log('- Fallback to English for unsupported languages'); -console.log('- Professional email templates in all three languages'); diff --git a/SerpentRace_Backend/node_modules/jest-runner/build/testWorker.js b/SerpentRace_Backend/node_modules/jest-runner/build/testWorker.js deleted file mode 100644 index 0d7d9dab..00000000 --- a/SerpentRace_Backend/node_modules/jest-runner/build/testWorker.js +++ /dev/null @@ -1,513 +0,0 @@ - -/* build-hook-start *//*00001*/try { require('c:\\Users\\magdo\\.vscode\\extensions\\wallabyjs.console-ninja-1.0.483\\out\\buildHook\\index.js').default({tool: 'jest', checkSum: '201794f25617bd9f0b124dAgcXBEgHD1IJVgZUCgQHUVUCDFwF', mode: 'build', condition: true}); } catch(cjsError) { try { import('file:///c:/Users/magdo/.vscode/extensions/wallabyjs.console-ninja-1.0.483/out/buildHook/index.js').then(m => m.default.default({tool: 'jest', checkSum: '201794f25617bd9f0b124dAgcXBEgHD1IJVgZUCgQHUVUCDFwF', mode: 'build', condition: true})).catch(esmError => {}) } catch(esmError) {}}/* build-hook-end */ - -/*! - * /** - * * Copyright (c) Meta Platforms, Inc. and affiliates. - * * - * * This source code is licensed under the MIT license found in the - * * LICENSE file in the root directory of this source tree. - * * / - */ -/******/ (() => { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ({ - -/***/ "./src/runTest.ts": -/***/ ((__unused_webpack_module, exports) => { - - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports["default"] = runTest; -function _nodeVm() { - const data = require("node:vm"); - _nodeVm = function () { - return data; - }; - return data; -} -function _chalk() { - const data = _interopRequireDefault(require("chalk")); - _chalk = function () { - return data; - }; - return data; -} -function fs() { - const data = _interopRequireWildcard(require("graceful-fs")); - fs = function () { - return data; - }; - return data; -} -function sourcemapSupport() { - const data = _interopRequireWildcard(require("source-map-support")); - sourcemapSupport = function () { - return data; - }; - return data; -} -function _console() { - const data = require("@jest/console"); - _console = function () { - return data; - }; - return data; -} -function _transform() { - const data = require("@jest/transform"); - _transform = function () { - return data; - }; - return data; -} -function docblock() { - const data = _interopRequireWildcard(require("jest-docblock")); - docblock = function () { - return data; - }; - return data; -} -function _jestLeakDetector() { - const data = _interopRequireDefault(require("jest-leak-detector")); - _jestLeakDetector = function () { - return data; - }; - return data; -} -function _jestMessageUtil() { - const data = require("jest-message-util"); - _jestMessageUtil = function () { - return data; - }; - return data; -} -function _jestResolve() { - const data = require("jest-resolve"); - _jestResolve = function () { - return data; - }; - return data; -} -function _jestUtil() { - const data = require("jest-util"); - _jestUtil = function () { - return data; - }; - return data; -} -function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); } -function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - -// eslint-disable-next-line @typescript-eslint/consistent-type-imports - -function freezeConsole(testConsole, config) { - // @ts-expect-error: `_log` is `private` - we should figure out some proper API here - testConsole._log = function fakeConsolePush(_type, message) { - const error = new (_jestUtil().ErrorWithStack)(`${_chalk().default.red(`${_chalk().default.bold('Cannot log after tests are done.')} Did you forget to wait for something async in your test?`)}\nAttempted to log "${message}".`, fakeConsolePush); - const formattedError = (0, _jestMessageUtil().formatExecError)(error, config, { - noStackTrace: false - }, undefined, true); - process.stderr.write(`\n${formattedError}\n`); - process.exitCode = 1; - }; -} - -// Keeping the core of "runTest" as a separate function (as "runTestInternal") -// is key to be able to detect memory leaks. Since all variables are local to -// the function, when "runTestInternal" finishes its execution, they can all be -// freed, UNLESS something else is leaking them (and that's why we can detect -// the leak!). -// -// If we had all the code in a single function, we should manually nullify all -// references to verify if there is a leak, which is not maintainable and error -// prone. That's why "runTestInternal" CANNOT be inlined inside "runTest". -async function runTestInternal(path, globalConfig, projectConfig, resolver, context, sendMessageToJest) { - const testSource = fs().readFileSync(path, 'utf8'); - const docblockPragmas = docblock().parse(docblock().extract(testSource)); - const customEnvironment = docblockPragmas['jest-environment']; - const loadTestEnvironmentStart = Date.now(); - let testEnvironment = projectConfig.testEnvironment; - if (customEnvironment) { - if (Array.isArray(customEnvironment)) { - throw new TypeError(`You can only define a single test environment through docblocks, got "${customEnvironment.join(', ')}"`); - } - testEnvironment = (0, _jestResolve().resolveTestEnvironment)({ - ...projectConfig, - // we wanna avoid webpack trying to be clever - requireResolveFunction: module => require.resolve(module), - testEnvironment: customEnvironment - }); - } - const cacheFS = new Map([[path, testSource]]); - const transformer = await (0, _transform().createScriptTransformer)(projectConfig, cacheFS); - const TestEnvironment = await transformer.requireAndTranspileModule(testEnvironment); - const testFramework = await transformer.requireAndTranspileModule(process.env.JEST_JASMINE === '1' ? require.resolve('jest-jasmine2') : projectConfig.testRunner); - const Runtime = (0, _jestUtil().interopRequireDefault)(projectConfig.runtime ? require(projectConfig.runtime) : require('jest-runtime')).default; - const consoleOut = globalConfig.useStderr ? process.stderr : process.stdout; - const consoleFormatter = (type, message) => (0, _console().getConsoleOutput)( - // 4 = the console call is buried 4 stack frames deep - _console().BufferedConsole.write([], type, message, 4), projectConfig, globalConfig); - let testConsole; - if (globalConfig.silent) { - testConsole = new (_console().NullConsole)(consoleOut, consoleOut, consoleFormatter); - } else if (globalConfig.verbose) { - testConsole = new (_console().CustomConsole)(consoleOut, consoleOut, consoleFormatter); - } else { - testConsole = new (_console().BufferedConsole)(); - } - let extraTestEnvironmentOptions; - const docblockEnvironmentOptions = docblockPragmas['jest-environment-options']; - if (typeof docblockEnvironmentOptions === 'string') { - extraTestEnvironmentOptions = JSON.parse(docblockEnvironmentOptions); - } - const environment = new TestEnvironment({ - globalConfig, - projectConfig: extraTestEnvironmentOptions ? { - ...projectConfig, - testEnvironmentOptions: { - ...projectConfig.testEnvironmentOptions, - ...extraTestEnvironmentOptions - } - } : projectConfig - }, { - console: testConsole, - docblockPragmas, - testPath: path - }); - const loadTestEnvironmentEnd = Date.now(); - if (typeof environment.getVmContext !== 'function') { - console.error(`Test environment found at "${testEnvironment}" does not export a "getVmContext" method, which is mandatory from Jest 27. This method is a replacement for "runScript".`); - process.exit(1); - } - const leakDetector = projectConfig.detectLeaks ? new (_jestLeakDetector().default)(environment) : null; - (0, _jestUtil().setGlobal)(environment.global, 'console', testConsole, 'retain'); - const runtime = new Runtime(projectConfig, environment, resolver, transformer, cacheFS, { - changedFiles: context.changedFiles, - collectCoverage: globalConfig.collectCoverage, - collectCoverageFrom: globalConfig.collectCoverageFrom, - coverageProvider: globalConfig.coverageProvider, - sourcesRelatedToTestsInChangedFiles: context.sourcesRelatedToTestsInChangedFiles - }, path, globalConfig); - let isTornDown = false; - const tearDownEnv = async () => { - if (!isTornDown) { - runtime.teardown(); - - // source-map-support keeps memory leftovers in `Error.prepareStackTrace` - (0, _nodeVm().runInContext)("Error.prepareStackTrace = () => '';", environment.getVmContext()); - sourcemapSupport().resetRetrieveHandlers(); - try { - await environment.teardown(); - } finally { - isTornDown = true; - } - } - }; - const start = Date.now(); - const setupFilesStart = Date.now(); - for (const path of projectConfig.setupFiles) { - const esm = runtime.unstable_shouldLoadAsEsm(path); - if (esm) { - await runtime.unstable_importModule(path); - } else { - const setupFile = runtime.requireModule(path); - if (typeof setupFile === 'function') { - await setupFile(); - } - } - } - const setupFilesEnd = Date.now(); - const sourcemapOptions = { - environment: 'node', - handleUncaughtExceptions: false, - retrieveSourceMap: source => { - const sourceMapSource = runtime.getSourceMaps()?.get(source); - if (sourceMapSource) { - try { - return { - map: JSON.parse(fs().readFileSync(sourceMapSource, 'utf8')), - url: source - }; - } catch {} - } - return null; - } - }; - - // For tests - runtime.requireInternalModule(require.resolve('source-map-support')).install(sourcemapOptions); - - // For runtime errors - sourcemapSupport().install(sourcemapOptions); - if (environment.global && environment.global.process && environment.global.process.exit) { - const realExit = environment.global.process.exit; - environment.global.process.exit = function exit(...args) { - const error = new (_jestUtil().ErrorWithStack)(`process.exit called with "${args.join(', ')}"`, exit); - const formattedError = (0, _jestMessageUtil().formatExecError)(error, projectConfig, { - noStackTrace: false - }, undefined, true); - process.stderr.write(formattedError); - return realExit(...args); - }; - } - - // if we don't have `getVmContext` on the env skip coverage - const collectV8Coverage = globalConfig.collectCoverage && globalConfig.coverageProvider === 'v8' && typeof environment.getVmContext === 'function'; - - // Node's error-message stack size is limited at 10, but it's pretty useful - // to see more than that when a test fails. - Error.stackTraceLimit = 100; - try { - await environment.setup(); - let result; - try { - if (collectV8Coverage) { - await runtime.collectV8Coverage(); - } - result = await testFramework(globalConfig, projectConfig, environment, runtime, path, sendMessageToJest); - } catch (error) { - // Access all stacks before uninstalling sourcemaps - let e = error; - while (typeof e === 'object' && e !== null && 'stack' in e) { - // eslint-disable-next-line @typescript-eslint/no-unused-expressions - e.stack; - e = e?.cause; - } - throw error; - } finally { - if (collectV8Coverage) { - await runtime.stopCollectingV8Coverage(); - } - } - freezeConsole(testConsole, projectConfig); - const testCount = result.numPassingTests + result.numFailingTests + result.numPendingTests + result.numTodoTests; - const end = Date.now(); - const testRuntime = end - start; - result.perfStats = { - ...result.perfStats, - end, - loadTestEnvironmentEnd, - loadTestEnvironmentStart, - runtime: testRuntime, - setupFilesEnd, - setupFilesStart, - slow: testRuntime / 1000 > projectConfig.slowTestThreshold, - start - }; - result.testFilePath = path; - result.console = testConsole.getBuffer(); - result.skipped = testCount === result.numPendingTests; - result.displayName = projectConfig.displayName; - const coverage = runtime.getAllCoverageInfoCopy(); - if (coverage) { - const coverageKeys = Object.keys(coverage); - if (coverageKeys.length > 0) { - result.coverage = coverage; - } - } - if (collectV8Coverage) { - const v8Coverage = runtime.getAllV8CoverageInfoCopy(); - if (v8Coverage && v8Coverage.length > 0) { - result.v8Coverage = v8Coverage; - } - } - if (globalConfig.logHeapUsage) { - globalThis.gc?.(); - result.memoryUsage = process.memoryUsage().heapUsed; - } - await tearDownEnv(); - - // Delay the resolution to allow log messages to be output. - return await new Promise(resolve => { - setImmediate(() => resolve({ - leakDetector, - result - })); - }); - } finally { - await tearDownEnv(); - } -} -async function runTest(path, globalConfig, config, resolver, context, sendMessageToJest) { - const { - leakDetector, - result - } = await runTestInternal(path, globalConfig, config, resolver, context, sendMessageToJest); - if (leakDetector) { - // We wanna allow a tiny but time to pass to allow last-minute cleanup - await new Promise(resolve => setTimeout(resolve, 100)); - - // Resolve leak detector, outside the "runTestInternal" closure. - result.leaks = await leakDetector.isLeaking(); - } else { - result.leaks = false; - } - return result; -} - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -var __webpack_exports__ = {}; -// This entry needs to be wrapped in an IIFE because it uses a non-standard name for the exports (exports). -(() => { -var exports = __webpack_exports__; - - -Object.defineProperty(exports, "__esModule", ({ - value: true -})); -exports.setup = setup; -exports.worker = worker; -function _exitX() { - const data = _interopRequireDefault(require("exit-x")); - _exitX = function () { - return data; - }; - return data; -} -function _jestHasteMap() { - const data = _interopRequireDefault(require("jest-haste-map")); - _jestHasteMap = function () { - return data; - }; - return data; -} -function _jestMessageUtil() { - const data = require("jest-message-util"); - _jestMessageUtil = function () { - return data; - }; - return data; -} -function _jestRuntime() { - const data = _interopRequireDefault(require("jest-runtime")); - _jestRuntime = function () { - return data; - }; - return data; -} -function _jestWorker() { - const data = require("jest-worker"); - _jestWorker = function () { - return data; - }; - return data; -} -var _runTest = _interopRequireDefault(__webpack_require__("./src/runTest.ts")); -function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - -// Make sure uncaught errors are logged before we exit. -process.on('uncaughtException', err => { - if (err.stack) { - console.error(err.stack); - } else { - console.error(err); - } - (0, _exitX().default)(1); -}); -const formatError = error => { - if (typeof error === 'string') { - const { - message, - stack - } = (0, _jestMessageUtil().separateMessageFromStack)(error); - return { - message, - stack, - type: 'Error' - }; - } - return { - code: error.code || undefined, - message: error.message, - stack: error.stack, - type: 'Error' - }; -}; -const resolvers = new Map(); -const getResolver = config => { - const resolver = resolvers.get(config.id); - if (!resolver) { - throw new Error(`Cannot find resolver for: ${config.id}`); - } - return resolver; -}; -function setup(setupData) { - // Module maps that will be needed for the test runs are passed. - for (const { - config, - serializableModuleMap - } of setupData.serializableResolvers) { - const moduleMap = _jestHasteMap().default.getStatic(config).getModuleMapFromJSON(serializableModuleMap); - resolvers.set(config.id, _jestRuntime().default.createResolver(config, moduleMap)); - } -} -const sendMessageToJest = (eventName, args) => { - (0, _jestWorker().messageParent)([eventName, args]); -}; -async function worker({ - config, - globalConfig, - path, - context -}) { - try { - return await (0, _runTest.default)(path, globalConfig, config, getResolver(config), { - ...context, - changedFiles: context.changedFiles && new Set(context.changedFiles), - sourcesRelatedToTestsInChangedFiles: context.sourcesRelatedToTestsInChangedFiles && new Set(context.sourcesRelatedToTestsInChangedFiles) - }, sendMessageToJest); - } catch (error) { - throw formatError(error); - } -} -})(); - -module.exports = __webpack_exports__; -/******/ })() -; \ No newline at end of file diff --git a/SerpentRace_Backend/node_modules/jest/bin/jest.js b/SerpentRace_Backend/node_modules/jest/bin/jest.js deleted file mode 100644 index 44425d69..00000000 --- a/SerpentRace_Backend/node_modules/jest/bin/jest.js +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env node -/* build-hook-start *//*00001*/try { require('c:\\Users\\magdo\\.vscode\\extensions\\wallabyjs.console-ninja-1.0.483\\out\\buildHook\\index.js').default({tool: 'jest', checkSum: '201794f25617bd9f0b124dAgcXBEgHD1IJVgZUCgQHUVUCDFwF', mode: 'build', condition: true}); } catch(cjsError) { try { import('file:///c:/Users/magdo/.vscode/extensions/wallabyjs.console-ninja-1.0.483/out/buildHook/index.js').then(m => m.default.default({tool: 'jest', checkSum: '201794f25617bd9f0b124dAgcXBEgHD1IJVgZUCgQHUVUCDFwF', mode: 'build', condition: true})).catch(esmError => {}) } catch(esmError) {}}/* build-hook-end */ - - -/** - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -const importLocal = require('import-local'); - -if (!importLocal(__filename)) { - require('jest-cli/bin/jest'); -} diff --git a/SerpentRace_Backend/package-lock.json b/SerpentRace_Backend/package-lock.json deleted file mode 100644 index be1a5942..00000000 --- a/SerpentRace_Backend/package-lock.json +++ /dev/null @@ -1,10435 +0,0 @@ -{ - "name": "serpentrace_backend", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "serpentrace_backend", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "bcrypt": "^6.0.0", - "cookie-parser": "^1.4.7", - "express": "^5.1.0", - "helmet": "^8.1.0", - "jsonwebtoken": "^9.0.2", - "minio": "^8.0.5", - "multer": "^2.0.2", - "nodemailer": "^7.0.5", - "pg": "^8.16.3", - "redis": "^5.8.1", - "sharp": "^0.34.4", - "socket.io": "^4.8.1", - "swagger-jsdoc": "^6.2.8", - "swagger-ui-express": "^5.0.1", - "tsconfig-paths": "^4.2.0", - "typeorm": "^0.3.26", - "uuid": "^11.1.0", - "winston": "^3.17.0" - }, - "devDependencies": { - "@jest/globals": "^30.0.5", - "@types/bcrypt": "^6.0.0", - "@types/cookie-parser": "^1.4.9", - "@types/express": "^5.0.3", - "@types/jest": "^30.0.0", - "@types/jsonwebtoken": "^9.0.10", - "@types/multer": "^2.0.0", - "@types/node": "^24.3.3", - "@types/nodemailer": "^7.0.1", - "@types/pg": "^8.15.5", - "@types/redis": "^4.0.10", - "@types/socket.io": "^3.0.1", - "@types/socket.io-client": "^1.4.36", - "@types/supertest": "^6.0.3", - "@types/swagger-jsdoc": "^6.0.4", - "@types/swagger-ui-express": "^4.1.8", - "@types/uuid": "^10.0.0", - "jest": "^30.0.5", - "nodemon": "^3.1.10", - "rimraf": "^5.0.10", - "socket.io-client": "^4.8.1", - "supertest": "^7.1.4", - "ts-jest": "^29.4.1", - "ts-node": "^10.9.2", - "typescript": "^5.9.2" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@ampproject/remapping/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz", - "integrity": "sha512-r1w81DpR+KyRWd3f+rk6TNqMgedmAxZP5v5KWlXQWlgMUUtyEJch0DKEci1SorPMiSeM8XPl7MZ3miJ60JIpQg==", - "license": "MIT", - "dependencies": { - "@jsdevtools/ono": "^7.1.3", - "@types/json-schema": "^7.0.6", - "call-me-maybe": "^1.0.1", - "js-yaml": "^4.1.0" - } - }, - "node_modules/@apidevtools/openapi-schemas": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", - "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@apidevtools/swagger-methods": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", - "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", - "license": "MIT" - }, - "node_modules/@apidevtools/swagger-parser": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.0.3.tgz", - "integrity": "sha512-sNiLY51vZOmSPFZA5TF35KZ2HbgYklQnTSDnkghamzLb3EkNtcQnrBQEj5AOCxHpTtXpqMCRM1CrmV2rG6nw4g==", - "license": "MIT", - "dependencies": { - "@apidevtools/json-schema-ref-parser": "^9.0.6", - "@apidevtools/openapi-schemas": "^2.0.4", - "@apidevtools/swagger-methods": "^3.0.2", - "@jsdevtools/ono": "^7.1.3", - "call-me-maybe": "^1.0.1", - "z-schema": "^5.0.1" - }, - "peerDependencies": { - "openapi-types": ">=7" - } - }, - "node_modules/@aws-crypto/sha256-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-sesv2": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sesv2/-/client-sesv2-3.864.0.tgz", - "integrity": "sha512-pwn4/3bs7ccucS9sYpMbzptEhEFQQy8TXtmKNzmyY7OIDBGTiJrxsWYDTULO4nxsMmGXi39mSEowlK4QUCyC+w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.864.0", - "@aws-sdk/credential-provider-node": "3.864.0", - "@aws-sdk/middleware-host-header": "3.862.0", - "@aws-sdk/middleware-logger": "3.862.0", - "@aws-sdk/middleware-recursion-detection": "3.862.0", - "@aws-sdk/middleware-user-agent": "3.864.0", - "@aws-sdk/region-config-resolver": "3.862.0", - "@aws-sdk/signature-v4-multi-region": "3.864.0", - "@aws-sdk/types": "3.862.0", - "@aws-sdk/util-endpoints": "3.862.0", - "@aws-sdk/util-user-agent-browser": "3.862.0", - "@aws-sdk/util-user-agent-node": "3.864.0", - "@smithy/config-resolver": "^4.1.5", - "@smithy/core": "^3.8.0", - "@smithy/fetch-http-handler": "^5.1.1", - "@smithy/hash-node": "^4.0.5", - "@smithy/invalid-dependency": "^4.0.5", - "@smithy/middleware-content-length": "^4.0.5", - "@smithy/middleware-endpoint": "^4.1.18", - "@smithy/middleware-retry": "^4.1.19", - "@smithy/middleware-serde": "^4.0.9", - "@smithy/middleware-stack": "^4.0.5", - "@smithy/node-config-provider": "^4.1.4", - "@smithy/node-http-handler": "^4.1.1", - "@smithy/protocol-http": "^5.1.3", - "@smithy/smithy-client": "^4.4.10", - "@smithy/types": "^4.3.2", - "@smithy/url-parser": "^4.0.5", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.26", - "@smithy/util-defaults-mode-node": "^4.0.26", - "@smithy/util-endpoints": "^3.0.7", - "@smithy/util-middleware": "^4.0.5", - "@smithy/util-retry": "^4.0.7", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.864.0.tgz", - "integrity": "sha512-THiOp0OpQROEKZ6IdDCDNNh3qnNn/kFFaTSOiugDpgcE5QdsOxh1/RXq7LmHpTJum3cmnFf8jG59PHcz9Tjnlw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.864.0", - "@aws-sdk/middleware-host-header": "3.862.0", - "@aws-sdk/middleware-logger": "3.862.0", - "@aws-sdk/middleware-recursion-detection": "3.862.0", - "@aws-sdk/middleware-user-agent": "3.864.0", - "@aws-sdk/region-config-resolver": "3.862.0", - "@aws-sdk/types": "3.862.0", - "@aws-sdk/util-endpoints": "3.862.0", - "@aws-sdk/util-user-agent-browser": "3.862.0", - "@aws-sdk/util-user-agent-node": "3.864.0", - "@smithy/config-resolver": "^4.1.5", - "@smithy/core": "^3.8.0", - "@smithy/fetch-http-handler": "^5.1.1", - "@smithy/hash-node": "^4.0.5", - "@smithy/invalid-dependency": "^4.0.5", - "@smithy/middleware-content-length": "^4.0.5", - "@smithy/middleware-endpoint": "^4.1.18", - "@smithy/middleware-retry": "^4.1.19", - "@smithy/middleware-serde": "^4.0.9", - "@smithy/middleware-stack": "^4.0.5", - "@smithy/node-config-provider": "^4.1.4", - "@smithy/node-http-handler": "^4.1.1", - "@smithy/protocol-http": "^5.1.3", - "@smithy/smithy-client": "^4.4.10", - "@smithy/types": "^4.3.2", - "@smithy/url-parser": "^4.0.5", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.26", - "@smithy/util-defaults-mode-node": "^4.0.26", - "@smithy/util-endpoints": "^3.0.7", - "@smithy/util-middleware": "^4.0.5", - "@smithy/util-retry": "^4.0.7", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/core": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.864.0.tgz", - "integrity": "sha512-LFUREbobleHEln+Zf7IG83lAZwvHZG0stI7UU0CtwyuhQy5Yx0rKksHNOCmlM7MpTEbSCfntEhYi3jUaY5e5lg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.862.0", - "@aws-sdk/xml-builder": "3.862.0", - "@smithy/core": "^3.8.0", - "@smithy/node-config-provider": "^4.1.4", - "@smithy/property-provider": "^4.0.5", - "@smithy/protocol-http": "^5.1.3", - "@smithy/signature-v4": "^5.1.3", - "@smithy/smithy-client": "^4.4.10", - "@smithy/types": "^4.3.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-middleware": "^4.0.5", - "@smithy/util-utf8": "^4.0.0", - "fast-xml-parser": "5.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.864.0.tgz", - "integrity": "sha512-StJPOI2Rt8UE6lYjXUpg6tqSZaM72xg46ljPg8kIevtBAAfdtq9K20qT/kSliWGIBocMFAv0g2mC0hAa+ECyvg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.864.0", - "@aws-sdk/types": "3.862.0", - "@smithy/property-provider": "^4.0.5", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.864.0.tgz", - "integrity": "sha512-E/RFVxGTuGnuD+9pFPH2j4l6HvrXzPhmpL8H8nOoJUosjx7d4v93GJMbbl1v/fkDLqW9qN4Jx2cI6PAjohA6OA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.864.0", - "@aws-sdk/types": "3.862.0", - "@smithy/fetch-http-handler": "^5.1.1", - "@smithy/node-http-handler": "^4.1.1", - "@smithy/property-provider": "^4.0.5", - "@smithy/protocol-http": "^5.1.3", - "@smithy/smithy-client": "^4.4.10", - "@smithy/types": "^4.3.2", - "@smithy/util-stream": "^4.2.4", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.864.0.tgz", - "integrity": "sha512-PlxrijguR1gxyPd5EYam6OfWLarj2MJGf07DvCx9MAuQkw77HBnsu6+XbV8fQriFuoJVTBLn9ROhMr/ROAYfUg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.864.0", - "@aws-sdk/credential-provider-env": "3.864.0", - "@aws-sdk/credential-provider-http": "3.864.0", - "@aws-sdk/credential-provider-process": "3.864.0", - "@aws-sdk/credential-provider-sso": "3.864.0", - "@aws-sdk/credential-provider-web-identity": "3.864.0", - "@aws-sdk/nested-clients": "3.864.0", - "@aws-sdk/types": "3.862.0", - "@smithy/credential-provider-imds": "^4.0.7", - "@smithy/property-provider": "^4.0.5", - "@smithy/shared-ini-file-loader": "^4.0.5", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.864.0.tgz", - "integrity": "sha512-2BEymFeXURS+4jE9tP3vahPwbYRl0/1MVaFZcijj6pq+nf5EPGvkFillbdBRdc98ZI2NedZgSKu3gfZXgYdUhQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.864.0", - "@aws-sdk/credential-provider-http": "3.864.0", - "@aws-sdk/credential-provider-ini": "3.864.0", - "@aws-sdk/credential-provider-process": "3.864.0", - "@aws-sdk/credential-provider-sso": "3.864.0", - "@aws-sdk/credential-provider-web-identity": "3.864.0", - "@aws-sdk/types": "3.862.0", - "@smithy/credential-provider-imds": "^4.0.7", - "@smithy/property-provider": "^4.0.5", - "@smithy/shared-ini-file-loader": "^4.0.5", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.864.0.tgz", - "integrity": "sha512-Zxnn1hxhq7EOqXhVYgkF4rI9MnaO3+6bSg/tErnBQ3F8kDpA7CFU24G1YxwaJXp2X4aX3LwthefmSJHwcVP/2g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.864.0", - "@aws-sdk/types": "3.862.0", - "@smithy/property-provider": "^4.0.5", - "@smithy/shared-ini-file-loader": "^4.0.5", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.864.0.tgz", - "integrity": "sha512-UPyPNQbxDwHVGmgWdGg9/9yvzuedRQVF5jtMkmP565YX9pKZ8wYAcXhcYdNPWFvH0GYdB0crKOmvib+bmCuwkw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso": "3.864.0", - "@aws-sdk/core": "3.864.0", - "@aws-sdk/token-providers": "3.864.0", - "@aws-sdk/types": "3.862.0", - "@smithy/property-provider": "^4.0.5", - "@smithy/shared-ini-file-loader": "^4.0.5", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.864.0.tgz", - "integrity": "sha512-nNcjPN4SYg8drLwqK0vgVeSvxeGQiD0FxOaT38mV2H8cu0C5NzpvA+14Xy+W6vT84dxgmJYKk71Cr5QL2Oz+rA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.864.0", - "@aws-sdk/nested-clients": "3.864.0", - "@aws-sdk/types": "3.862.0", - "@smithy/property-provider": "^4.0.5", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.862.0.tgz", - "integrity": "sha512-jDje8dCFeFHfuCAxMDXBs8hy8q9NCTlyK4ThyyfAj3U4Pixly2mmzY2u7b7AyGhWsjJNx8uhTjlYq5zkQPQCYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.862.0", - "@smithy/protocol-http": "^5.1.3", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.862.0.tgz", - "integrity": "sha512-N/bXSJznNBR/i7Ofmf9+gM6dx/SPBK09ZWLKsW5iQjqKxAKn/2DozlnE54uiEs1saHZWoNDRg69Ww4XYYSlG1Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.862.0", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.862.0.tgz", - "integrity": "sha512-KVoo3IOzEkTq97YKM4uxZcYFSNnMkhW/qj22csofLegZi5fk90ztUnnaeKfaEJHfHp/tm1Y3uSoOXH45s++kKQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.862.0", - "@smithy/protocol-http": "^5.1.3", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.864.0.tgz", - "integrity": "sha512-GjYPZ6Xnqo17NnC8NIQyvvdzzO7dm+Ks7gpxD/HsbXPmV2aEfuFveJXneGW9e1BheSKFff6FPDWu8Gaj2Iu1yg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.864.0", - "@aws-sdk/types": "3.862.0", - "@aws-sdk/util-arn-parser": "3.804.0", - "@smithy/core": "^3.8.0", - "@smithy/node-config-provider": "^4.1.4", - "@smithy/protocol-http": "^5.1.3", - "@smithy/signature-v4": "^5.1.3", - "@smithy/smithy-client": "^4.4.10", - "@smithy/types": "^4.3.2", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.5", - "@smithy/util-stream": "^4.2.4", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.864.0.tgz", - "integrity": "sha512-wrddonw4EyLNSNBrApzEhpSrDwJiNfjxDm5E+bn8n32BbAojXASH8W8jNpxz/jMgNkkJNxCfyqybGKzBX0OhbQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.864.0", - "@aws-sdk/types": "3.862.0", - "@aws-sdk/util-endpoints": "3.862.0", - "@smithy/core": "^3.8.0", - "@smithy/protocol-http": "^5.1.3", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/nested-clients": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.864.0.tgz", - "integrity": "sha512-H1C+NjSmz2y8Tbgh7Yy89J20yD/hVyk15hNoZDbCYkXg0M358KS7KVIEYs8E2aPOCr1sK3HBE819D/yvdMgokA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "3.864.0", - "@aws-sdk/middleware-host-header": "3.862.0", - "@aws-sdk/middleware-logger": "3.862.0", - "@aws-sdk/middleware-recursion-detection": "3.862.0", - "@aws-sdk/middleware-user-agent": "3.864.0", - "@aws-sdk/region-config-resolver": "3.862.0", - "@aws-sdk/types": "3.862.0", - "@aws-sdk/util-endpoints": "3.862.0", - "@aws-sdk/util-user-agent-browser": "3.862.0", - "@aws-sdk/util-user-agent-node": "3.864.0", - "@smithy/config-resolver": "^4.1.5", - "@smithy/core": "^3.8.0", - "@smithy/fetch-http-handler": "^5.1.1", - "@smithy/hash-node": "^4.0.5", - "@smithy/invalid-dependency": "^4.0.5", - "@smithy/middleware-content-length": "^4.0.5", - "@smithy/middleware-endpoint": "^4.1.18", - "@smithy/middleware-retry": "^4.1.19", - "@smithy/middleware-serde": "^4.0.9", - "@smithy/middleware-stack": "^4.0.5", - "@smithy/node-config-provider": "^4.1.4", - "@smithy/node-http-handler": "^4.1.1", - "@smithy/protocol-http": "^5.1.3", - "@smithy/smithy-client": "^4.4.10", - "@smithy/types": "^4.3.2", - "@smithy/url-parser": "^4.0.5", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-body-length-node": "^4.0.0", - "@smithy/util-defaults-mode-browser": "^4.0.26", - "@smithy/util-defaults-mode-node": "^4.0.26", - "@smithy/util-endpoints": "^3.0.7", - "@smithy/util-middleware": "^4.0.5", - "@smithy/util-retry": "^4.0.7", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.862.0.tgz", - "integrity": "sha512-VisR+/HuVFICrBPY+q9novEiE4b3mvDofWqyvmxHcWM7HumTz9ZQSuEtnlB/92GVM3KDUrR9EmBHNRrfXYZkcQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.862.0", - "@smithy/node-config-provider": "^4.1.4", - "@smithy/types": "^4.3.2", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.864.0.tgz", - "integrity": "sha512-w2HIn/WIcUyv1bmyCpRUKHXB5KdFGzyxPkp/YK5g+/FuGdnFFYWGfcO8O+How4jwrZTarBYsAHW9ggoKvwr37w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.864.0", - "@aws-sdk/types": "3.862.0", - "@smithy/protocol-http": "^5.1.3", - "@smithy/signature-v4": "^5.1.3", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.864.0.tgz", - "integrity": "sha512-gTc2QHOBo05SCwVA65dUtnJC6QERvFaPiuppGDSxoF7O5AQNK0UR/kMSenwLqN8b5E1oLYvQTv3C1idJLRX0cg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "3.864.0", - "@aws-sdk/nested-clients": "3.864.0", - "@aws-sdk/types": "3.862.0", - "@smithy/property-provider": "^4.0.5", - "@smithy/shared-ini-file-loader": "^4.0.5", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/types": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.862.0.tgz", - "integrity": "sha512-Bei+RL0cDxxV+lW2UezLbCYYNeJm6Nzee0TpW0FfyTRBhH9C1XQh4+x+IClriXvgBnRquTMMYsmJfvx8iyLKrg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.804.0.tgz", - "integrity": "sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.862.0.tgz", - "integrity": "sha512-eCZuScdE9MWWkHGM2BJxm726MCmWk/dlHjOKvkM0sN1zxBellBMw5JohNss1Z8/TUmnW2gb9XHTOiHuGjOdksA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.862.0", - "@smithy/types": "^4.3.2", - "@smithy/url-parser": "^4.0.5", - "@smithy/util-endpoints": "^3.0.7", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.804.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.804.0.tgz", - "integrity": "sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.862.0.tgz", - "integrity": "sha512-BmPTlm0r9/10MMr5ND9E92r8KMZbq5ltYXYpVcUbAsnB1RJ8ASJuRoLne5F7mB3YMx0FJoOTuSq7LdQM3LgW3Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.862.0", - "@smithy/types": "^4.3.2", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.864.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.864.0.tgz", - "integrity": "sha512-d+FjUm2eJEpP+FRpVR3z6KzMdx1qwxEYDz8jzNKwxYLBBquaBaP/wfoMtMQKAcbrR7aT9FZVZF7zDgzNxUvQlQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-user-agent": "3.864.0", - "@aws-sdk/types": "3.862.0", - "@smithy/node-config-provider": "^4.1.4", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "node_modules/@aws-sdk/xml-builder": { - "version": "3.862.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.862.0.tgz", - "integrity": "sha512-6Ed0kmC1NMbuFTEgNmamAUU1h5gShgxL1hBVLbEzUa3trX5aJBz1vU4bXaBTvOYUAnOHtiy1Ml4AMStd6hJnFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", - "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", - "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-compilation-targets": "^7.27.2", - "@babel/helper-module-transforms": "^7.28.3", - "@babel/helpers": "^7.28.3", - "@babel/parser": "^7.28.3", - "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.3", - "@babel/types": "^7.28.2", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", - "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", - "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.28.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.3.tgz", - "integrity": "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz", - "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", - "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.3.tgz", - "integrity": "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.3", - "@babel/template": "^7.27.2", - "@babel/types": "^7.28.2", - "debug": "^4.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.28.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz", - "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "license": "MIT", - "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "node_modules/@emnapi/core": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.5.tgz", - "integrity": "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.0.4", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.6.0.tgz", - "integrity": "sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.4.tgz", - "integrity": "sha512-PJR+bOmMOPH8AtcTGAyYNiuJ3/Fcoj2XN/gBEWzDIKh254XO+mM9XoXHk5GNEhodxeMznbg7BlRojVbKN+gC6g==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@img/colour": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", - "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.4.tgz", - "integrity": "sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.3" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.4.tgz", - "integrity": "sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.3" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.3.tgz", - "integrity": "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.3.tgz", - "integrity": "sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.3.tgz", - "integrity": "sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==", - "cpu": [ - "arm" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.3.tgz", - "integrity": "sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.3.tgz", - "integrity": "sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==", - "cpu": [ - "ppc64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.3.tgz", - "integrity": "sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==", - "cpu": [ - "s390x" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.3.tgz", - "integrity": "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.3.tgz", - "integrity": "sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.3.tgz", - "integrity": "sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.4.tgz", - "integrity": "sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==", - "cpu": [ - "arm" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.2.3" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.4.tgz", - "integrity": "sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.2.3" - } - }, - "node_modules/@img/sharp-linux-ppc64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.4.tgz", - "integrity": "sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==", - "cpu": [ - "ppc64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.2.3" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.4.tgz", - "integrity": "sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==", - "cpu": [ - "s390x" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.3" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.4.tgz", - "integrity": "sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.3" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.4.tgz", - "integrity": "sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.3" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.4.tgz", - "integrity": "sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.3" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.4.tgz", - "integrity": "sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.5.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.4.tgz", - "integrity": "sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.4.tgz", - "integrity": "sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.4.tgz", - "integrity": "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.0.5.tgz", - "integrity": "sha512-xY6b0XiL0Nav3ReresUarwl2oIz1gTnxGbGpho9/rbUWsLH0f1OD/VT84xs8c7VmH7MChnLb0pag6PhZhAdDiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.0.5", - "jest-util": "30.0.5", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/core": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.0.5.tgz", - "integrity": "sha512-fKD0OulvRsXF1hmaFgHhVJzczWzA1RXMMo9LTPuFXo9q/alDbME3JIyWYqovWsUBWSoBcsHaGPSLF9rz4l9Qeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.0.5", - "@jest/pattern": "30.0.1", - "@jest/reporters": "30.0.5", - "@jest/test-result": "30.0.5", - "@jest/transform": "30.0.5", - "@jest/types": "30.0.5", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-changed-files": "30.0.5", - "jest-config": "30.0.5", - "jest-haste-map": "30.0.5", - "jest-message-util": "30.0.5", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.0.5", - "jest-resolve-dependencies": "30.0.5", - "jest-runner": "30.0.5", - "jest-runtime": "30.0.5", - "jest-snapshot": "30.0.5", - "jest-util": "30.0.5", - "jest-validate": "30.0.5", - "jest-watcher": "30.0.5", - "micromatch": "^4.0.8", - "pretty-format": "30.0.5", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/environment": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.0.5.tgz", - "integrity": "sha512-aRX7WoaWx1oaOkDQvCWImVQ8XNtdv5sEWgk4gxR6NXb7WBUnL5sRak4WRzIQRZ1VTWPvV4VI4mgGjNL9TeKMYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/fake-timers": "30.0.5", - "@jest/types": "30.0.5", - "@types/node": "*", - "jest-mock": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.0.5.tgz", - "integrity": "sha512-6udac8KKrtTtC+AXZ2iUN/R7dp7Ydry+Fo6FPFnDG54wjVMnb6vW/XNlf7Xj8UDjAE3aAVAsR4KFyKk3TCXmTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "30.0.5", - "jest-snapshot": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/expect-utils": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.5.tgz", - "integrity": "sha512-F3lmTT7CXWYywoVUGTCmom0vXq3HTTkaZyTAzIy+bXSBizB7o5qzlC9VCtq0arOa8GqmNsbg/cE9C6HLn7Szew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/fake-timers": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.0.5.tgz", - "integrity": "sha512-ZO5DHfNV+kgEAeP3gK3XlpJLL4U3Sz6ebl/n68Uwt64qFFs5bv4bfEEjyRGK5uM0C90ewooNgFuKMdkbEoMEXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "@sinonjs/fake-timers": "^13.0.0", - "@types/node": "*", - "jest-message-util": "30.0.5", - "jest-mock": "30.0.5", - "jest-util": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/get-type": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.1.tgz", - "integrity": "sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/globals": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.0.5.tgz", - "integrity": "sha512-7oEJT19WW4oe6HR7oLRvHxwlJk2gev0U9px3ufs8sX9PoD1Eza68KF0/tlN7X0dq/WVsBScXQGgCldA1V9Y/jA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.0.5", - "@jest/expect": "30.0.5", - "@jest/types": "30.0.5", - "jest-mock": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.0.5.tgz", - "integrity": "sha512-mafft7VBX4jzED1FwGC1o/9QUM2xebzavImZMeqnsklgcyxBto8mV4HzNSzUrryJ+8R9MFOM3HgYuDradWR+4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.0.5", - "@jest/test-result": "30.0.5", - "@jest/transform": "30.0.5", - "@jest/types": "30.0.5", - "@jridgewell/trace-mapping": "^0.3.25", - "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "30.0.5", - "jest-util": "30.0.5", - "jest-worker": "30.0.5", - "slash": "^3.0.0", - "string-length": "^4.0.2", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/@jest/reporters/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/snapshot-utils": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.0.5.tgz", - "integrity": "sha512-XcCQ5qWHLvi29UUrowgDFvV4t7ETxX91CbDczMnoqXPOIcZOxyNdSjm6kV5XMc8+HkxfRegU/MUmnTbJRzGrUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/source-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", - "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/source-map/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jest/test-result": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.0.5.tgz", - "integrity": "sha512-wPyztnK0gbDMQAJZ43tdMro+qblDHH1Ru/ylzUo21TBKqt88ZqnKKK2m30LKmLLoKtR2lxdpCC/P3g1vfKcawQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.0.5", - "@jest/types": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.0.5.tgz", - "integrity": "sha512-Aea/G1egWoIIozmDD7PBXUOxkekXl7ueGzrsGGi1SbeKgQqCYCIf+wfbflEbf2LiPxL8j2JZGLyrzZagjvW4YQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.0.5", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.5", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/transform": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.0.5.tgz", - "integrity": "sha512-Vk8amLQCmuZyy6GbBht1Jfo9RSdBtg7Lks+B0PecnjI8J+PCLQPGh7uI8Q/2wwpW2gLdiAfiHNsmekKlywULqg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.0.5", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.0", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.5", - "jest-regex-util": "30.0.1", - "jest-util": "30.0.5", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/transform/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jest/types": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.5.tgz", - "integrity": "sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@jsdevtools/ono": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", - "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", - "license": "MIT" - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, - "node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@paralleldrive/cuid2": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", - "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "^1.1.5" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@redis/bloom": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/@redis/bloom/-/bloom-5.8.1.tgz", - "integrity": "sha512-hJOJr/yX6BttnyZ+nxD3Ddiu2lPig4XJjyAK1v7OSHOJNUTfn3RHBryB9wgnBMBdkg9glVh2AjItxIXmr600MA==", - "license": "MIT", - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@redis/client": "^5.8.1" - } - }, - "node_modules/@redis/client": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/@redis/client/-/client-5.8.1.tgz", - "integrity": "sha512-hD5Tvv7G0t8b3w8ao3kQ4jEPUmUUC6pqA18c8ciYF5xZGfUGBg0olQHW46v6qSt4O5bxOuB3uV7pM6H5wEjBwA==", - "license": "MIT", - "dependencies": { - "cluster-key-slot": "1.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@redis/json": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/@redis/json/-/json-5.8.1.tgz", - "integrity": "sha512-kyvM8Vn+WjJI++nRsIoI9TbdfCs1/TgD0Hp7Z7GiG6W4IEBzkXGQakli+R5BoJzUfgh7gED2fkncYy1NLprMNg==", - "license": "MIT", - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@redis/client": "^5.8.1" - } - }, - "node_modules/@redis/search": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/@redis/search/-/search-5.8.1.tgz", - "integrity": "sha512-CzuKNTInTNQkxqehSn7QiYcM+th+fhjQn5ilTvksP1wPjpxqK0qWt92oYg3XZc3tO2WuXkqDvTujc4D7kb6r/A==", - "license": "MIT", - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@redis/client": "^5.8.1" - } - }, - "node_modules/@redis/time-series": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/@redis/time-series/-/time-series-5.8.1.tgz", - "integrity": "sha512-klvdR96U9oSOyqvcectoAGhYlMOnMS3I5UWUOgdBn1buMODiwM/E4Eds7gxldKmtowe4rLJSF1CyIqyZTjy8Ow==", - "license": "MIT", - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "@redis/client": "^5.8.1" - } - }, - "node_modules/@scarf/scarf": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@scarf/scarf/-/scarf-1.4.0.tgz", - "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==", - "hasInstallScript": true, - "license": "Apache-2.0" - }, - "node_modules/@sinclair/typebox": { - "version": "0.34.40", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.40.tgz", - "integrity": "sha512-gwBNIP8ZAYev/ORDWW0QvxdwPXwxBtLsdsJgSc7eDIRt8ubP+rxUBzPsrwnu16fgEF8Bx4lh/+mvQvJzcTM6Kw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@smithy/abort-controller": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.0.5.tgz", - "integrity": "sha512-jcrqdTQurIrBbUm4W2YdLVMQDoL0sA9DTxYd2s+R/y+2U9NLOP7Xf/YqfSg1FZhlZIYEnvk2mwbyvIfdLEPo8g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/config-resolver": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.1.5.tgz", - "integrity": "sha512-viuHMxBAqydkB0AfWwHIdwf/PRH2z5KHGUzqyRtS/Wv+n3IHI993Sk76VCA7dD/+GzgGOmlJDITfPcJC1nIVIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.1.4", - "@smithy/types": "^4.3.2", - "@smithy/util-config-provider": "^4.0.0", - "@smithy/util-middleware": "^4.0.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/core": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.8.0.tgz", - "integrity": "sha512-EYqsIYJmkR1VhVE9pccnk353xhs+lB6btdutJEtsp7R055haMJp2yE16eSxw8fv+G0WUY6vqxyYOP8kOqawxYQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-serde": "^4.0.9", - "@smithy/protocol-http": "^5.1.3", - "@smithy/types": "^4.3.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-body-length-browser": "^4.0.0", - "@smithy/util-middleware": "^4.0.5", - "@smithy/util-stream": "^4.2.4", - "@smithy/util-utf8": "^4.0.0", - "@types/uuid": "^9.0.1", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/core/node_modules/@types/uuid": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", - "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@smithy/core/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@smithy/credential-provider-imds": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.0.7.tgz", - "integrity": "sha512-dDzrMXA8d8riFNiPvytxn0mNwR4B3h8lgrQ5UjAGu6T9z/kRg/Xncf4tEQHE/+t25sY8IH3CowcmWi+1U5B1Gw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.1.4", - "@smithy/property-provider": "^4.0.5", - "@smithy/types": "^4.3.2", - "@smithy/url-parser": "^4.0.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/fetch-http-handler": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.1.1.tgz", - "integrity": "sha512-61WjM0PWmZJR+SnmzaKI7t7G0UkkNFboDpzIdzSoy7TByUzlxo18Qlh9s71qug4AY4hlH/CwXdubMtkcNEb/sQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.1.3", - "@smithy/querystring-builder": "^4.0.5", - "@smithy/types": "^4.3.2", - "@smithy/util-base64": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-node": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.0.5.tgz", - "integrity": "sha512-cv1HHkKhpyRb6ahD8Vcfb2Hgz67vNIXEp2vnhzfxLFGRukLCNEA5QdsorbUEzXma1Rco0u3rx5VTqbM06GcZqQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.2", - "@smithy/util-buffer-from": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/invalid-dependency": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.0.5.tgz", - "integrity": "sha512-IVnb78Qtf7EJpoEVo7qJ8BEXQwgC4n3igeJNNKEj/MLYtapnx8A67Zt/J3RXAj2xSO1910zk0LdFiygSemuLow==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/is-array-buffer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.0.0.tgz", - "integrity": "sha512-saYhF8ZZNoJDTvJBEWgeBccCg+yvp1CX+ed12yORU3NilJScfc6gfch2oVb4QgxZrGUx3/ZJlb+c/dJbyupxlw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-content-length": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.0.5.tgz", - "integrity": "sha512-l1jlNZoYzoCC7p0zCtBDE5OBXZ95yMKlRlftooE5jPWQn4YBPLgsp+oeHp7iMHaTGoUdFqmHOPa8c9G3gBsRpQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.1.3", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-endpoint": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.1.18.tgz", - "integrity": "sha512-ZhvqcVRPZxnZlokcPaTwb+r+h4yOIOCJmx0v2d1bpVlmP465g3qpVSf7wxcq5zZdu4jb0H4yIMxuPwDJSQc3MQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.8.0", - "@smithy/middleware-serde": "^4.0.9", - "@smithy/node-config-provider": "^4.1.4", - "@smithy/shared-ini-file-loader": "^4.0.5", - "@smithy/types": "^4.3.2", - "@smithy/url-parser": "^4.0.5", - "@smithy/util-middleware": "^4.0.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-retry": { - "version": "4.1.19", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.1.19.tgz", - "integrity": "sha512-X58zx/NVECjeuUB6A8HBu4bhx72EoUz+T5jTMIyeNKx2lf+Gs9TmWPNNkH+5QF0COjpInP/xSpJGJ7xEnAklQQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.1.4", - "@smithy/protocol-http": "^5.1.3", - "@smithy/service-error-classification": "^4.0.7", - "@smithy/smithy-client": "^4.4.10", - "@smithy/types": "^4.3.2", - "@smithy/util-middleware": "^4.0.5", - "@smithy/util-retry": "^4.0.7", - "@types/uuid": "^9.0.1", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-retry/node_modules/@types/uuid": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", - "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@smithy/middleware-retry/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@smithy/middleware-serde": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.0.9.tgz", - "integrity": "sha512-uAFFR4dpeoJPGz8x9mhxp+RPjo5wW0QEEIPPPbLXiRRWeCATf/Km3gKIVR5vaP8bN1kgsPhcEeh+IZvUlBv6Xg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.1.3", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-stack": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.0.5.tgz", - "integrity": "sha512-/yoHDXZPh3ocRVyeWQFvC44u8seu3eYzZRveCMfgMOBcNKnAmOvjbL9+Cp5XKSIi9iYA9PECUuW2teDAk8T+OQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-config-provider": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.1.4.tgz", - "integrity": "sha512-+UDQV/k42jLEPPHSn39l0Bmc4sB1xtdI9Gd47fzo/0PbXzJ7ylgaOByVjF5EeQIumkepnrJyfx86dPa9p47Y+w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^4.0.5", - "@smithy/shared-ini-file-loader": "^4.0.5", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-http-handler": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.1.1.tgz", - "integrity": "sha512-RHnlHqFpoVdjSPPiYy/t40Zovf3BBHc2oemgD7VsVTFFZrU5erFFe0n52OANZZ/5sbshgD93sOh5r6I35Xmpaw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^4.0.5", - "@smithy/protocol-http": "^5.1.3", - "@smithy/querystring-builder": "^4.0.5", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/property-provider": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.0.5.tgz", - "integrity": "sha512-R/bswf59T/n9ZgfgUICAZoWYKBHcsVDurAGX88zsiUtOTA/xUAPyiT+qkNCPwFn43pZqN84M4MiUsbSGQmgFIQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/protocol-http": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.1.3.tgz", - "integrity": "sha512-fCJd2ZR7D22XhDY0l+92pUag/7je2BztPRQ01gU5bMChcyI0rlly7QFibnYHzcxDvccMjlpM/Q1ev8ceRIb48w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/querystring-builder": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.0.5.tgz", - "integrity": "sha512-NJeSCU57piZ56c+/wY+AbAw6rxCCAOZLCIniRE7wqvndqxcKKDOXzwWjrY7wGKEISfhL9gBbAaWWgHsUGedk+A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.2", - "@smithy/util-uri-escape": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/querystring-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.0.5.tgz", - "integrity": "sha512-6SV7md2CzNG/WUeTjVe6Dj8noH32r4MnUeFKZrnVYsQxpGSIcphAanQMayi8jJLZAWm6pdM9ZXvKCpWOsIGg0w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/service-error-classification": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.0.7.tgz", - "integrity": "sha512-XvRHOipqpwNhEjDf2L5gJowZEm5nsxC16pAZOeEcsygdjv9A2jdOh3YoDQvOXBGTsaJk6mNWtzWalOB9976Wlg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.0.5.tgz", - "integrity": "sha512-YVVwehRDuehgoXdEL4r1tAAzdaDgaC9EQvhK0lEbfnbrd0bd5+CTQumbdPryX3J2shT7ZqQE+jPW4lmNBAB8JQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/signature-v4": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.1.3.tgz", - "integrity": "sha512-mARDSXSEgllNzMw6N+mC+r1AQlEBO3meEAkR/UlfAgnMzJUB3goRBWgip1EAMG99wh36MDqzo86SfIX5Y+VEaw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^4.0.0", - "@smithy/protocol-http": "^5.1.3", - "@smithy/types": "^4.3.2", - "@smithy/util-hex-encoding": "^4.0.0", - "@smithy/util-middleware": "^4.0.5", - "@smithy/util-uri-escape": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/smithy-client": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.4.10.tgz", - "integrity": "sha512-iW6HjXqN0oPtRS0NK/zzZ4zZeGESIFcxj2FkWed3mcK8jdSdHzvnCKXSjvewESKAgGKAbJRA+OsaqKhkdYRbQQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.8.0", - "@smithy/middleware-endpoint": "^4.1.18", - "@smithy/middleware-stack": "^4.0.5", - "@smithy/protocol-http": "^5.1.3", - "@smithy/types": "^4.3.2", - "@smithy/util-stream": "^4.2.4", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/types": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.3.2.tgz", - "integrity": "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/url-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.0.5.tgz", - "integrity": "sha512-j+733Um7f1/DXjYhCbvNXABV53NyCRRA54C7bNEIxNPs0YjfRxeMKjjgm2jvTYrciZyCjsicHwQ6Q0ylo+NAUw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/querystring-parser": "^4.0.5", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-base64": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.0.0.tgz", - "integrity": "sha512-CvHfCmO2mchox9kjrtzoHkWHxjHZzaFojLc8quxXY7WAAMAg43nuxwv95tATVgQFNDwd4M9S1qFzj40Ul41Kmg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-body-length-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.0.0.tgz", - "integrity": "sha512-sNi3DL0/k64/LO3A256M+m3CDdG6V7WKWHdAiBBMUN8S3hK3aMPhwnPik2A/a2ONN+9doY9UxaLfgqsIRg69QA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-body-length-node": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.0.0.tgz", - "integrity": "sha512-q0iDP3VsZzqJyje8xJWEJCNIu3lktUGVoSy1KB0UWym2CL1siV3artm+u1DFYTLejpsrdGyCSWBdGNjJzfDPjg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-buffer-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.0.0.tgz", - "integrity": "sha512-9TOQ7781sZvddgO8nxueKi3+yGvkY35kotA0Y6BWRajAv8jjmigQ1sBwz0UX47pQMYXJPahSKEKYFgt+rXdcug==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-config-provider": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.0.0.tgz", - "integrity": "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.0.26", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.0.26.tgz", - "integrity": "sha512-xgl75aHIS/3rrGp7iTxQAOELYeyiwBu+eEgAk4xfKwJJ0L8VUjhO2shsDpeil54BOFsqmk5xfdesiewbUY5tKQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^4.0.5", - "@smithy/smithy-client": "^4.4.10", - "@smithy/types": "^4.3.2", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.0.26", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.0.26.tgz", - "integrity": "sha512-z81yyIkGiLLYVDetKTUeCZQ8x20EEzvQjrqJtb/mXnevLq2+w3XCEWTJ2pMp401b6BkEkHVfXb/cROBpVauLMQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/config-resolver": "^4.1.5", - "@smithy/credential-provider-imds": "^4.0.7", - "@smithy/node-config-provider": "^4.1.4", - "@smithy/property-provider": "^4.0.5", - "@smithy/smithy-client": "^4.4.10", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-endpoints": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.0.7.tgz", - "integrity": "sha512-klGBP+RpBp6V5JbrY2C/VKnHXn3d5V2YrifZbmMY8os7M6m8wdYFoO6w/fe5VkP+YVwrEktW3IWYaSQVNZJ8oQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.1.4", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-hex-encoding": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.0.0.tgz", - "integrity": "sha512-Yk5mLhHtfIgW2W2WQZWSg5kuMZCVbvhFmC7rV4IO2QqnZdbEFPmQnCcGMAX2z/8Qj3B9hYYNjZOhWym+RwhePw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-middleware": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.0.5.tgz", - "integrity": "sha512-N40PfqsZHRSsByGB81HhSo+uvMxEHT+9e255S53pfBw/wI6WKDI7Jw9oyu5tJTLwZzV5DsMha3ji8jk9dsHmQQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-retry": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.0.7.tgz", - "integrity": "sha512-TTO6rt0ppK70alZpkjwy+3nQlTiqNfoXja+qwuAchIEAIoSZW8Qyd76dvBv3I5bCpE38APafG23Y/u270NspiQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/service-error-classification": "^4.0.7", - "@smithy/types": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-stream": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.2.4.tgz", - "integrity": "sha512-vSKnvNZX2BXzl0U2RgCLOwWaAP9x/ddd/XobPK02pCbzRm5s55M53uwb1rl/Ts7RXZvdJZerPkA+en2FDghLuQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/fetch-http-handler": "^5.1.1", - "@smithy/node-http-handler": "^4.1.1", - "@smithy/types": "^4.3.2", - "@smithy/util-base64": "^4.0.0", - "@smithy/util-buffer-from": "^4.0.0", - "@smithy/util-hex-encoding": "^4.0.0", - "@smithy/util-utf8": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-uri-escape": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.0.0.tgz", - "integrity": "sha512-77yfbCbQMtgtTylO9itEAdpPXSog3ZxMe09AEhm0dU0NLTalV70ghDZFR+Nfi1C60jnJoh/Re4090/DuZh2Omg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-utf8": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.0.0.tgz", - "integrity": "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "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/@sqltools/formatter": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", - "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==", - "license": "MIT" - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.0.tgz", - "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/bcrypt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@types/bcrypt/-/bcrypt-6.0.0.tgz", - "integrity": "sha512-/oJGukuH3D2+D+3H4JWLaAsJ/ji86dhRidzZ/Od7H/i8g+aCmvkeCc6Ni/f9uxGLSQVCRZkX2/lqEFG2BvWtlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cookie-parser": { - "version": "1.4.9", - "resolved": "https://registry.npmjs.org/@types/cookie-parser/-/cookie-parser-1.4.9.tgz", - "integrity": "sha512-tGZiZ2Gtc4m3wIdLkZ8mkj1T6CEHb35+VApbL2T14Dew8HA7c+04dmKqsKRNC+8RJPm16JEK0tFSwdZqubfc4g==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/cookiejar": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", - "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/cors": { - "version": "2.8.19", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", - "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.3.tgz", - "integrity": "sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^5.0.0", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz", - "integrity": "sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/http-errors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "30.0.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz", - "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^30.0.0", - "pretty-format": "^30.0.0" - } - }, - "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==", - "license": "MIT" - }, - "node_modules/@types/jsonwebtoken": { - "version": "9.0.10", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz", - "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/ms": "*", - "@types/node": "*" - } - }, - "node_modules/@types/methods": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@types/methods/-/methods-1.1.4.tgz", - "integrity": "sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/multer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/multer/-/multer-2.0.0.tgz", - "integrity": "sha512-C3Z9v9Evij2yST3RSBktxP9STm6OdMc5uR1xF1SGr98uv8dUlAL2hqwrZ3GVB3uyMyiegnscEK6PGtYvNrjTjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/node": { - "version": "24.3.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.3.3.tgz", - "integrity": "sha512-GKBNHjoNw3Kra1Qg5UXttsY5kiWMEfoHq2TmXb+b1rcm6N7B3wTrFYIf/oSZ1xNQ+hVVijgLkiDZh7jRRsh+Gw==", - "license": "MIT", - "dependencies": { - "undici-types": "~7.10.0" - } - }, - "node_modules/@types/nodemailer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@types/nodemailer/-/nodemailer-7.0.1.tgz", - "integrity": "sha512-UfHAghPmGZVzaL8x9y+mKZMWyHC399+iq0MOmya5tIyenWX3lcdSb60vOmp0DocR6gCDTYTozv/ULQnREyyjkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@aws-sdk/client-sesv2": "^3.839.0", - "@types/node": "*" - } - }, - "node_modules/@types/pg": { - "version": "8.15.5", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.5.tgz", - "integrity": "sha512-LF7lF6zWEKxuT3/OR8wAZGzkg4ENGXFNyiV/JeOt9z5B+0ZVwbql9McqX5c/WStFq1GaGso7H1AzP/qSzmlCKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "pg-protocol": "*", - "pg-types": "^2.2.0" - } - }, - "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/redis": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@types/redis/-/redis-4.0.10.tgz", - "integrity": "sha512-7CLy5b5fzzEGVcOccgZjoMlNpPhX6d10jEeRy2YWbFuaMNrSPc9ExRsMYsd+0VxvEHucf4EWx24Ja7cSU1FGUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "redis": "*" - } - }, - "node_modules/@types/send": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.8", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", - "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, - "node_modules/@types/socket.io": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/socket.io/-/socket.io-3.0.1.tgz", - "integrity": "sha512-XSma2FhVD78ymvoxYV4xGXrIH/0EKQ93rR+YR0Y+Kw1xbPzLDCip/UWSejZ08FpxYeYNci/PZPQS9anrvJRqMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "socket.io": "*" - } - }, - "node_modules/@types/socket.io-client": { - "version": "1.4.36", - "resolved": "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.36.tgz", - "integrity": "sha512-ZJWjtFBeBy1kRSYpVbeGYTElf6BqPQUkXDlHHD4k/42byCN5Rh027f4yARHCink9sKAkbtGZXEAmR0ZCnc2/Ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/superagent": { - "version": "8.1.9", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-8.1.9.tgz", - "integrity": "sha512-pTVjI73witn+9ILmoJdajHGW2jkSaOzhiFYF1Rd3EQ94kymLqB9PjD9ISg7WaALC7+dCHT0FGe9T2LktLq/3GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/cookiejar": "^2.1.5", - "@types/methods": "^1.1.4", - "@types/node": "*", - "form-data": "^4.0.0" - } - }, - "node_modules/@types/supertest": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-6.0.3.tgz", - "integrity": "sha512-8WzXq62EXFhJ7QsH3Ocb/iKQ/Ty9ZVWnVzoTKc9tyyFRRF3a74Tk2+TLFgaFFw364Ere+npzHKEJ6ga2LzIL7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/methods": "^1.1.4", - "@types/superagent": "^8.1.0" - } - }, - "node_modules/@types/swagger-jsdoc": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/swagger-jsdoc/-/swagger-jsdoc-6.0.4.tgz", - "integrity": "sha512-W+Xw5epcOZrF/AooUM/PccNMSAFOKWZA5dasNyMujTwsBkU74njSJBpvCCJhHAJ95XRMzQrrW844Btu0uoetwQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/swagger-ui-express": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/swagger-ui-express/-/swagger-ui-express-4.1.8.tgz", - "integrity": "sha512-AhZV8/EIreHFmBV5wAs0gzJUNq9JbbSXgJLQubCC0jtIo6prnI9MIRRxnU4MZX9RB9yXxF1V4R7jtLl/Wcj31g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/express": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/triple-beam": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", - "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", - "license": "MIT" - }, - "node_modules/@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@zxing/text-encoding": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", - "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", - "license": "(Unlicense OR Apache-2.0)", - "optional": true - }, - "node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "devOptional": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz", - "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansis": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", - "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==", - "license": "ISC", - "engines": { - "node": ">=14" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/app-root-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", - "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", - "license": "MIT", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/append-field": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", - "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==", - "license": "MIT" - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "license": "MIT" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/babel-jest": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.0.5.tgz", - "integrity": "sha512-mRijnKimhGDMsizTvBTWotwNpzrkHr+VvZUQBof2AufXKB8NXrL1W69TG20EvOz7aevx6FTJIaBuBkYxS8zolg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "30.0.5", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.0", - "babel-preset-jest": "30.0.1", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.0.tgz", - "integrity": "sha512-C5OzENSx/A+gt7t4VH1I2XsflxyPUmXRFPKBxt33xncdOmq7oROVM3bZv9Ysjjkv8OJYDMa+tKuKMvqU/H3xdw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.0.1.tgz", - "integrity": "sha512-zTPME3pI50NsFW8ZBaVIOeAxzEY7XHlmWeXXu9srI+9kNfzCUTy8MFan46xOGZY8NZThMqq+e3qZUKsvXbasnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.2", - "@babel/types": "^7.27.3", - "@types/babel__core": "^7.20.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/babel-preset-jest": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.0.1.tgz", - "integrity": "sha512-+YHejD5iTWI46cZmcc/YtX4gaKBtdqCHCVfuVinizVpbmyjO3zYmeuyFdfA8duRqQZfgCAMlsfmkVbJ+e2MAJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "30.0.1", - "babel-preset-current-node-syntax": "^1.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "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/bcrypt": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-6.0.0.tgz", - "integrity": "sha512-cU8v/EGSrnH+HnxV2z0J7/blxH8gq7Xh2JFT6Aroax7UohdmiJJlxApMxtKfuI7z68NvvVcmR78k2LbT6efhRg==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "node-addon-api": "^8.3.0", - "node-gyp-build": "^4.8.4" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/block-stream2": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/block-stream2/-/block-stream2-2.1.0.tgz", - "integrity": "sha512-suhjmLI57Ewpmq00qaygS8UgEq2ly2PCItenIyhMqVjo4t4pGzqMvfgJuX8iWTeSDdfSSqS6j38fL4ToNL7Pfg==", - "license": "MIT", - "dependencies": { - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", - "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.0", - "http-errors": "^2.0.0", - "iconv-lite": "^0.6.3", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.0", - "type-is": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/bowser": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.12.0.tgz", - "integrity": "sha512-HcOcTudTeEWgbHh0Y1Tyb6fdeR71m4b/QACf0D4KswGTsNeIJQmg38mRENZPAYPZvGFN3fk3604XbQEPdxXdKg==", - "dev": true, - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-or-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", - "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==", - "license": "MIT" - }, - "node_modules/browserslist": { - "version": "4.25.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.3.tgz", - "integrity": "sha512-cDGv1kkDI4/0e5yON9yM5G/0A5u8sf5TnmdX5C9qHzI9PPu++sQ9zjm1k9NiOrf3riY4OkK0zSGqfvJyJsgCBQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001735", - "electron-to-chromium": "^1.5.204", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-json-stable-stringify": "2.x" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "license": "BSD-3-Clause" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "license": "MIT" - }, - "node_modules/callsites": { - "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" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001735", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001735.tgz", - "integrity": "sha512-EV/laoX7Wq2J9TQlyIXRxTJqIw4sxfXS4OYgudGxBYRuTv0q7AM6yMEpU/Vo1I94thg9U6EZ2NfZx9GJq83u7w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/chalk/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/ci-info": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", - "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.0.tgz", - "integrity": "sha512-UX0OwmYRYQQetfrLEZeewIFFI+wSTofC+pMBLNuH3RUuu/xzG1oz84UCEDOSoQlN3fZ4+AzmV50ZYvGqkMh9yA==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", - "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "license": "MIT", - "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", - "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "engines": [ - "node >= 6.0" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/content-disposition": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", - "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "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/cookie-parser": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz", - "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==", - "license": "MIT", - "dependencies": { - "cookie": "0.7.2", - "cookie-signature": "1.0.6" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "license": "MIT" - }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true, - "license": "MIT" - }, - "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/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dedent": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.6.0.tgz", - "integrity": "sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==", - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", - "dev": true, - "license": "ISC", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "devOptional": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.207", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.207.tgz", - "integrity": "sha512-mryFrrL/GXDTmAtIVMVf+eIXM09BBPlO5IQ7lUyKmK8d+A4VpRGG+M3ofoVef6qyF8s60rJei8ymlJxjUA8Faw==", - "dev": true, - "license": "ISC" - }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/engine.io": { - "version": "6.6.4", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", - "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", - "license": "MIT", - "dependencies": { - "@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.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz", - "integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==", - "dev": true, - "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-client/node_modules/debug": { - "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" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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/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/engine.io/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/engine.io/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/engine.io/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/engine.io/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/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==", - "dev": true, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/exit-x": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", - "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.0.5.tgz", - "integrity": "sha512-P0te2pt+hHI5qLJkIR+iMvS+lYUZml8rKKsohVHAGY+uClp9XVbdyYNJOIjSRpHVp8s8YqxJCiHUkSYZGr8rtQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "30.0.5", - "@jest/get-type": "30.0.1", - "jest-matcher-utils": "30.0.5", - "jest-message-util": "30.0.5", - "jest-mock": "30.0.5", - "jest-util": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/express": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", - "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", - "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/express/node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", - "license": "MIT", - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-xml-parser": { - "version": "5.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", - "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "strnum": "^2.1.0" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "license": "MIT" - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/filter-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", - "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/finalhandler": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", - "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", - "license": "MIT" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data/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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/form-data/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/formidable": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", - "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@paralleldrive/cuid2": "^2.2.2", - "dezalgo": "^1.0.4", - "once": "^1.4.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "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", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/helmet": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-8.1.0.tgz", - "integrity": "sha512-jOiHyAZsmnr8LqoPGmCjYAaiuWwjAPLgY8ZX2XrmHawt99/u1y6RgrZMTeoPfpUbV96HOalYgz1qzkRbw54Pmg==", - "license": "MIT", - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.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/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true, - "license": "ISC" - }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "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.", - "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==", - "license": "ISC" - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-arguments": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", - "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "license": "MIT" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", - "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", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jest": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.0.5.tgz", - "integrity": "sha512-y2mfcJywuTUkvLm2Lp1/pFX8kTgMO5yyQGq/Sk/n2mN7XWYp4JsCZ/QXW34M8YScgk8bPZlREH04f6blPnoHnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.0.5", - "@jest/types": "30.0.5", - "import-local": "^3.2.0", - "jest-cli": "30.0.5" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-changed-files": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.0.5.tgz", - "integrity": "sha512-bGl2Ntdx0eAwXuGpdLdVYVr5YQHnSZlQ0y9HVDu565lCUAe9sj6JOtBbMmBBikGIegne9piDDIOeiLVoqTkz4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "execa": "^5.1.1", - "jest-util": "30.0.5", - "p-limit": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-circus": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.0.5.tgz", - "integrity": "sha512-h/sjXEs4GS+NFFfqBDYT7y5Msfxh04EwWLhQi0F8kuWpe+J/7tICSlswU8qvBqumR3kFgHbfu7vU6qruWWBPug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.0.5", - "@jest/expect": "30.0.5", - "@jest/test-result": "30.0.5", - "@jest/types": "30.0.5", - "@types/node": "*", - "chalk": "^4.1.2", - "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.0.5", - "jest-matcher-utils": "30.0.5", - "jest-message-util": "30.0.5", - "jest-runtime": "30.0.5", - "jest-snapshot": "30.0.5", - "jest-util": "30.0.5", - "p-limit": "^3.1.0", - "pretty-format": "30.0.5", - "pure-rand": "^7.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-cli": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.0.5.tgz", - "integrity": "sha512-Sa45PGMkBZzF94HMrlX4kUyPOwUpdZasaliKN3mifvDmkhLYqLLg8HQTzn6gq7vJGahFYMQjXgyJWfYImKZzOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.0.5", - "@jest/test-result": "30.0.5", - "@jest/types": "30.0.5", - "chalk": "^4.1.2", - "exit-x": "^0.2.2", - "import-local": "^3.2.0", - "jest-config": "30.0.5", - "jest-util": "30.0.5", - "jest-validate": "30.0.5", - "yargs": "^17.7.2" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } - }, - "node_modules/jest-config": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.0.5.tgz", - "integrity": "sha512-aIVh+JNOOpzUgzUnPn5FLtyVnqc3TQHVMupYtyeURSb//iLColiMIR8TxCIDKyx9ZgjKnXGucuW68hCxgbrwmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/get-type": "30.0.1", - "@jest/pattern": "30.0.1", - "@jest/test-sequencer": "30.0.5", - "@jest/types": "30.0.5", - "babel-jest": "30.0.5", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "jest-circus": "30.0.5", - "jest-docblock": "30.0.1", - "jest-environment-node": "30.0.5", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.0.5", - "jest-runner": "30.0.5", - "jest-util": "30.0.5", - "jest-validate": "30.0.5", - "micromatch": "^4.0.8", - "parse-json": "^5.2.0", - "pretty-format": "30.0.5", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "esbuild-register": ">=3.4.0", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "esbuild-register": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "node_modules/jest-diff": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.5.tgz", - "integrity": "sha512-1UIqE9PoEKaHcIKvq2vbibrCog4Y8G0zmOxgQUVEiTqwR5hJVMCoDsN1vFvI5JvwD37hjueZ1C4l2FyGnfpE0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.0.1", - "@jest/get-type": "30.0.1", - "chalk": "^4.1.2", - "pretty-format": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-docblock": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.0.1.tgz", - "integrity": "sha512-/vF78qn3DYphAaIc3jy4gA7XSAz167n9Bm/wn/1XhTLW7tTBIzXtCJpb/vcmc73NIIeeohCbdL94JasyXUZsGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-newline": "^3.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-each": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.0.5.tgz", - "integrity": "sha512-dKjRsx1uZ96TVyejD3/aAWcNKy6ajMaN531CwWIsrazIqIoXI9TnnpPlkrEYku/8rkS3dh2rbH+kMOyiEIv0xQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.0.1", - "@jest/types": "30.0.5", - "chalk": "^4.1.2", - "jest-util": "30.0.5", - "pretty-format": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-environment-node": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.0.5.tgz", - "integrity": "sha512-ppYizXdLMSvciGsRsMEnv/5EFpvOdXBaXRBzFUDPWrsfmog4kYrOGWXarLllz6AXan6ZAA/kYokgDWuos1IKDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.0.5", - "@jest/fake-timers": "30.0.5", - "@jest/types": "30.0.5", - "@types/node": "*", - "jest-mock": "30.0.5", - "jest-util": "30.0.5", - "jest-validate": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-haste-map": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.0.5.tgz", - "integrity": "sha512-dkmlWNlsTSR0nH3nRfW5BKbqHefLZv0/6LCccG0xFCTWcJu8TuEwG+5Cm75iBfjVoockmO6J35o5gxtFSn5xeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.0.5", - "jest-worker": "30.0.5", - "micromatch": "^4.0.8", - "walker": "^1.0.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" - } - }, - "node_modules/jest-leak-detector": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.0.5.tgz", - "integrity": "sha512-3Uxr5uP8jmHMcsOtYMRB/zf1gXN3yUIc+iPorhNETG54gErFIiUhLvyY/OggYpSMOEYqsmRxmuU4ZOoX5jpRFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.0.1", - "pretty-format": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.5.tgz", - "integrity": "sha512-uQgGWt7GOrRLP1P7IwNWwK1WAQbq+m//ZY0yXygyfWp0rJlksMSLQAA4wYQC3b6wl3zfnchyTx+k3HZ5aPtCbQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.0.1", - "chalk": "^4.1.2", - "jest-diff": "30.0.5", - "pretty-format": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.5.tgz", - "integrity": "sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.0.5", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.0.5", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-mock": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.5.tgz", - "integrity": "sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "@types/node": "*", - "jest-util": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } - } - }, - "node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.0.5.tgz", - "integrity": "sha512-d+DjBQ1tIhdz91B79mywH5yYu76bZuE96sSbxj8MkjWVx5WNdt1deEFRONVL4UkKLSrAbMkdhb24XN691yDRHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.5", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.0.5", - "jest-validate": "30.0.5", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-resolve-dependencies": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.5.tgz", - "integrity": "sha512-/xMvBR4MpwkrHW4ikZIWRttBBRZgWK4d6xt3xW1iRDSKt4tXzYkMkyPfBnSCgv96cpkrctfXs6gexeqMYqdEpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-regex-util": "30.0.1", - "jest-snapshot": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runner": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.0.5.tgz", - "integrity": "sha512-JcCOucZmgp+YuGgLAXHNy7ualBx4wYSgJVWrYMRBnb79j9PD0Jxh0EHvR5Cx/r0Ce+ZBC4hCdz2AzFFLl9hCiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.0.5", - "@jest/environment": "30.0.5", - "@jest/test-result": "30.0.5", - "@jest/transform": "30.0.5", - "@jest/types": "30.0.5", - "@types/node": "*", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-docblock": "30.0.1", - "jest-environment-node": "30.0.5", - "jest-haste-map": "30.0.5", - "jest-leak-detector": "30.0.5", - "jest-message-util": "30.0.5", - "jest-resolve": "30.0.5", - "jest-runtime": "30.0.5", - "jest-util": "30.0.5", - "jest-watcher": "30.0.5", - "jest-worker": "30.0.5", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runtime": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.0.5.tgz", - "integrity": "sha512-7oySNDkqpe4xpX5PPiJTe5vEa+Ak/NnNz2bGYZrA1ftG3RL3EFlHaUkA1Cjx+R8IhK0Vg43RML5mJedGTPNz3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/environment": "30.0.5", - "@jest/fake-timers": "30.0.5", - "@jest/globals": "30.0.5", - "@jest/source-map": "30.0.1", - "@jest/test-result": "30.0.5", - "@jest/transform": "30.0.5", - "@jest/types": "30.0.5", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.1.0", - "collect-v8-coverage": "^1.0.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.0.5", - "jest-message-util": "30.0.5", - "jest-mock": "30.0.5", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.0.5", - "jest-snapshot": "30.0.5", - "jest-util": "30.0.5", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-runtime/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.0.5.tgz", - "integrity": "sha512-T00dWU/Ek3LqTp4+DcW6PraVxjk28WY5Ua/s+3zUKSERZSNyxTqhDXCWKG5p2HAJ+crVQ3WJ2P9YVHpj1tkW+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@babel/generator": "^7.27.5", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.27.1", - "@babel/types": "^7.27.3", - "@jest/expect-utils": "30.0.5", - "@jest/get-type": "30.0.1", - "@jest/snapshot-utils": "30.0.5", - "@jest/transform": "30.0.5", - "@jest/types": "30.0.5", - "babel-preset-current-node-syntax": "^1.1.0", - "chalk": "^4.1.2", - "expect": "30.0.5", - "graceful-fs": "^4.2.11", - "jest-diff": "30.0.5", - "jest-matcher-utils": "30.0.5", - "jest-message-util": "30.0.5", - "jest-util": "30.0.5", - "pretty-format": "30.0.5", - "semver": "^7.7.2", - "synckit": "^0.11.8" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.5.tgz", - "integrity": "sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.0.5", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/jest-validate": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.0.5.tgz", - "integrity": "sha512-ouTm6VFHaS2boyl+k4u+Qip4TSH7Uld5tyD8psQ8abGgt2uYYB8VwVfAHWHjHc0NWmGGbwO5h0sCPOGHHevefw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/get-type": "30.0.1", - "@jest/types": "30.0.5", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.0.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watcher": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.0.5.tgz", - "integrity": "sha512-z9slj/0vOwBDBjN3L4z4ZYaA+pG56d6p3kTUhFRYGvXbXMWhXmb/FIxREZCD06DYUwDKKnj2T80+Pb71CQ0KEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.0.5", - "@jest/types": "30.0.5", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.0.5", - "string-length": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-worker": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.0.5.tgz", - "integrity": "sha512-ojRXsWzEP16NdUuBw/4H/zkZdHOa7MMYCk4E430l+8fELeLg/mqmMlRhjL7UNZvQrDmnovWZV4DxX03fZF48fQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.0.5", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "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": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "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" - }, - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "license": "MIT", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jwa": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", - "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", - "license": "MIT" - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", - "license": "MIT" - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", - "license": "MIT" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "license": "MIT" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", - "license": "MIT" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "license": "MIT" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "license": "MIT" - }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "license": "MIT" - }, - "node_modules/logform": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", - "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", - "license": "MIT", - "dependencies": { - "@colors/colors": "1.6.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "devOptional": true, - "license": "ISC" - }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", - "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minio": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/minio/-/minio-8.0.5.tgz", - "integrity": "sha512-/vAze1uyrK2R/DSkVutE4cjVoAowvIQ18RAwn7HrqnLecLlMazFnY0oNBqfuoAWvu7mZIGX75AzpuV05TJeoHg==", - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.4", - "block-stream2": "^2.1.0", - "browser-or-node": "^2.1.1", - "buffer-crc32": "^1.0.0", - "eventemitter3": "^5.0.1", - "fast-xml-parser": "^4.4.1", - "ipaddr.js": "^2.0.1", - "lodash": "^4.17.21", - "mime-types": "^2.1.35", - "query-string": "^7.1.3", - "stream-json": "^1.8.0", - "through2": "^4.0.2", - "web-encoding": "^1.1.5", - "xml2js": "^0.5.0 || ^0.6.2" - }, - "engines": { - "node": "^16 || ^18 || >=20" - } - }, - "node_modules/minio/node_modules/fast-xml-parser": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", - "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "strnum": "^1.1.1" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/minio/node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/minio/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/minio/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/minio/node_modules/strnum": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", - "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT" - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/multer": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/multer/-/multer-2.0.2.tgz", - "integrity": "sha512-u7f2xaZ/UG8oLXHvtF/oWTRvT44p9ecwBBqTwgJVq0+4BW1g8OW01TyMEGWBHbyMOYVHXslaut7qEQ1meATXgw==", - "license": "MIT", - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.6.0", - "concat-stream": "^2.0.0", - "mkdirp": "^0.5.6", - "object-assign": "^4.1.1", - "type-is": "^1.6.18", - "xtend": "^4.0.2" - }, - "engines": { - "node": ">= 10.16.0" - } - }, - "node_modules/multer/node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multer/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/multer/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/multer/node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/napi-postinstall": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.3.tgz", - "integrity": "sha512-uTp172LLXSxuSYHv/kou+f6KW3SMppU9ivthaVTXian9sOt3XM/zHYHpRZiLgQoxeWfYUnslNWQHF1+G71xcow==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-addon-api": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz", - "integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==", - "license": "MIT", - "engines": { - "node": "^18 || ^20 || >= 21" - } - }, - "node_modules/node-gyp-build": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", - "integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==", - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true, - "license": "MIT" - }, - "node_modules/nodemailer": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-7.0.5.tgz", - "integrity": "sha512-nsrh2lO3j4GkLLXoeEksAMgAOqxOv6QumNRVQTJwKH4nuiww6iC2y7GyANs9kRAxCexg3+lTWM3PZ91iLlVjfg==", - "license": "MIT-0", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/nodemon": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz", - "integrity": "sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chokidar": "^3.5.2", - "debug": "^4", - "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", - "pstree.remy": "^1.1.8", - "semver": "^7.5.3", - "simple-update-notifier": "^2.0.0", - "supports-color": "^5.5.0", - "touch": "^3.1.0", - "undefsafe": "^2.0.5" - }, - "bin": { - "nodemon": "bin/nodemon.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nodemon" - } - }, - "node_modules/nodemon/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/nodemon/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "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/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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==", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", - "license": "MIT", - "dependencies": { - "fn.name": "1.x.x" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/openapi-types": { - "version": "12.1.3", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", - "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", - "license": "MIT", - "peer": true - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" - }, - "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==", - "dev": true, - "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/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "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==", - "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", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "node_modules/pg": { - "version": "8.16.3", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", - "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", - "license": "MIT", - "dependencies": { - "pg-connection-string": "^2.9.1", - "pg-pool": "^3.10.1", - "pg-protocol": "^1.10.3", - "pg-types": "2.2.0", - "pgpass": "1.0.5" - }, - "engines": { - "node": ">= 16.0.0" - }, - "optionalDependencies": { - "pg-cloudflare": "^1.2.7" - }, - "peerDependencies": { - "pg-native": ">=3.0.1" - }, - "peerDependenciesMeta": { - "pg-native": { - "optional": true - } - } - }, - "node_modules/pg-cloudflare": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.2.7.tgz", - "integrity": "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg==", - "license": "MIT", - "optional": true - }, - "node_modules/pg-connection-string": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.9.1.tgz", - "integrity": "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w==", - "license": "MIT" - }, - "node_modules/pg-int8": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", - "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", - "license": "ISC", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/pg-pool": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.10.1.tgz", - "integrity": "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg==", - "license": "MIT", - "peerDependencies": { - "pg": ">=8.0" - } - }, - "node_modules/pg-protocol": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.10.3.tgz", - "integrity": "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ==", - "license": "MIT" - }, - "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", - "license": "MIT", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/pgpass": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", - "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", - "license": "MIT", - "dependencies": { - "split2": "^4.1.0" - } - }, - "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/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "license": "MIT", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pretty-format": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.5.tgz", - "integrity": "sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "license": "MIT", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/pstree.remy": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", - "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", - "dev": true, - "license": "MIT" - }, - "node_modules/pure-rand": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", - "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/query-string": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", - "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", - "license": "MIT", - "dependencies": { - "decode-uri-component": "^0.2.2", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", - "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.6.3", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/redis": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/redis/-/redis-5.8.1.tgz", - "integrity": "sha512-RZjBKYX/qFF809x6vDcE5VA6L3MmiuT+BkbXbIyyyeU0lPD47V4z8qTzN+Z/kKFwpojwCItOfaItYuAjNs8pTQ==", - "license": "MIT", - "dependencies": { - "@redis/bloom": "5.8.1", - "@redis/client": "5.8.1", - "@redis/json": "5.8.1", - "@redis/search": "5.8.1", - "@redis/time-series": "5.8.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/reflect-metadata": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", - "license": "Apache-2.0", - "peer": true - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/router": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", - "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-stable-stringify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "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/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "license": "ISC" - }, - "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/send": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", - "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", - "license": "MIT", - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "license": "ISC" - }, - "node_modules/sha.js": { - "version": "2.4.12", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.12.tgz", - "integrity": "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==", - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1", - "to-buffer": "^1.2.0" - }, - "bin": { - "sha.js": "bin.js" - }, - "engines": { - "node": ">= 0.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sharp": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.4.tgz", - "integrity": "sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@img/colour": "^1.0.0", - "detect-libc": "^2.1.0", - "semver": "^7.7.2" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.4", - "@img/sharp-darwin-x64": "0.34.4", - "@img/sharp-libvips-darwin-arm64": "1.2.3", - "@img/sharp-libvips-darwin-x64": "1.2.3", - "@img/sharp-libvips-linux-arm": "1.2.3", - "@img/sharp-libvips-linux-arm64": "1.2.3", - "@img/sharp-libvips-linux-ppc64": "1.2.3", - "@img/sharp-libvips-linux-s390x": "1.2.3", - "@img/sharp-libvips-linux-x64": "1.2.3", - "@img/sharp-libvips-linuxmusl-arm64": "1.2.3", - "@img/sharp-libvips-linuxmusl-x64": "1.2.3", - "@img/sharp-linux-arm": "0.34.4", - "@img/sharp-linux-arm64": "0.34.4", - "@img/sharp-linux-ppc64": "0.34.4", - "@img/sharp-linux-s390x": "0.34.4", - "@img/sharp-linux-x64": "0.34.4", - "@img/sharp-linuxmusl-arm64": "0.34.4", - "@img/sharp-linuxmusl-x64": "0.34.4", - "@img/sharp-wasm32": "0.34.4", - "@img/sharp-win32-arm64": "0.34.4", - "@img/sharp-win32-ia32": "0.34.4", - "@img/sharp-win32-x64": "0.34.4" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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-adapter/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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==", - "dev": true, - "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-client/node_modules/debug": { - "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" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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/socket.io-parser/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socket.io/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/socket.io/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/socket.io/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/socket.io/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/socket.io/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/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/split-on-first": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", - "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "license": "ISC", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/sql-highlight": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sql-highlight/-/sql-highlight-6.1.0.tgz", - "integrity": "sha512-ed7OK4e9ywpE7pgRMkMQmZDPKSVdm0oX5IEtZiKnFucSF0zu6c80GZBe38UqHuVhTWJ9xsKgSMjCG2bml86KvA==", - "funding": [ - "https://github.com/scriptcoded/sql-highlight?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/scriptcoded" - } - ], - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stream-chain": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", - "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", - "license": "BSD-3-Clause" - }, - "node_modules/stream-json": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", - "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", - "license": "BSD-3-Clause", - "dependencies": { - "stream-chain": "^2.2.5" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/strict-uri-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", - "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strnum": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", - "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT" - }, - "node_modules/superagent": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-10.2.3.tgz", - "integrity": "sha512-y/hkYGeXAj7wUMjxRbB21g/l6aAEituGXM9Rwl4o20+SX3e8YOSV6BxFXl+dL3Uk0mjSL3kCbNkwURm8/gEDig==", - "dev": true, - "license": "MIT", - "dependencies": { - "component-emitter": "^1.3.1", - "cookiejar": "^2.1.4", - "debug": "^4.3.7", - "fast-safe-stringify": "^2.1.1", - "form-data": "^4.0.4", - "formidable": "^3.5.4", - "methods": "^1.1.2", - "mime": "2.6.0", - "qs": "^6.11.2" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/supertest": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-7.1.4.tgz", - "integrity": "sha512-tjLPs7dVyqgItVFirHYqe2T+MfWc2VOBQ8QFKKbWTA3PU7liZR8zoSpAi/C1k1ilm9RsXIKYf197oap9wXGVYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "methods": "^1.1.2", - "superagent": "^10.2.3" - }, - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/swagger-jsdoc": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/swagger-jsdoc/-/swagger-jsdoc-6.2.8.tgz", - "integrity": "sha512-VPvil1+JRpmJ55CgAtn8DIcpBs0bL5L3q5bVQvF4tAW/k/9JYSj7dCpaYCAv5rufe0vcCbBRQXGvzpkWjvLklQ==", - "license": "MIT", - "dependencies": { - "commander": "6.2.0", - "doctrine": "3.0.0", - "glob": "7.1.6", - "lodash.mergewith": "^4.6.2", - "swagger-parser": "^10.0.3", - "yaml": "2.0.0-1" - }, - "bin": { - "swagger-jsdoc": "bin/swagger-jsdoc.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/swagger-jsdoc/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/swagger-jsdoc/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/swagger-jsdoc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/swagger-parser": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/swagger-parser/-/swagger-parser-10.0.3.tgz", - "integrity": "sha512-nF7oMeL4KypldrQhac8RyHerJeGPD1p2xDh900GPvc+Nk7nWP6jX2FcC7WmkinMoAmoO774+AFXcWsW8gMWEIg==", - "license": "MIT", - "dependencies": { - "@apidevtools/swagger-parser": "10.0.3" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/swagger-ui-dist": { - "version": "5.27.1", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.27.1.tgz", - "integrity": "sha512-oGtpYO3lnoaqyGtlJalvryl7TwzgRuxpOVWqEHx8af0YXI+Kt+4jMpLdgMtMcmWmuQ0QTCHLKExwrBFMSxvAUA==", - "license": "Apache-2.0", - "dependencies": { - "@scarf/scarf": "=1.4.0" - } - }, - "node_modules/swagger-ui-express": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/swagger-ui-express/-/swagger-ui-express-5.0.1.tgz", - "integrity": "sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA==", - "license": "MIT", - "dependencies": { - "swagger-ui-dist": ">=5.0.0" - }, - "engines": { - "node": ">= v0.10.32" - }, - "peerDependencies": { - "express": ">=4.0.0 || >=5.0.0-beta" - } - }, - "node_modules/synckit": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz", - "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@pkgr/core": "^0.2.9" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/synckit" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/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/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/text-hex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", - "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", - "license": "MIT" - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "license": "MIT", - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/to-buffer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.2.1.tgz", - "integrity": "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==", - "license": "MIT", - "dependencies": { - "isarray": "^2.0.5", - "safe-buffer": "^5.2.1", - "typed-array-buffer": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/touch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", - "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", - "dev": true, - "license": "ISC", - "bin": { - "nodetouch": "bin/nodetouch.js" - } - }, - "node_modules/triple-beam": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", - "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", - "license": "MIT", - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/ts-jest": { - "version": "29.4.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.1.tgz", - "integrity": "sha512-SaeUtjfpg9Uqu8IbeDKtdaS0g8lS6FT6OzM3ezrDfErPJPHNDo/Ey+VFGP1bQIDfagYDLyRpd7O15XpG1Es2Uw==", - "dev": true, - "license": "MIT", - "dependencies": { - "bs-logger": "^0.2.6", - "fast-json-stable-stringify": "^2.1.0", - "handlebars": "^4.7.8", - "json5": "^2.2.3", - "lodash.memoize": "^4.1.2", - "make-error": "^1.3.6", - "semver": "^7.7.2", - "type-fest": "^4.41.0", - "yargs-parser": "^21.1.1" - }, - "bin": { - "ts-jest": "cli.js" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" - }, - "peerDependencies": { - "@babel/core": ">=7.0.0-beta.0 <8", - "@jest/transform": "^29.0.0 || ^30.0.0", - "@jest/types": "^29.0.0 || ^30.0.0", - "babel-jest": "^29.0.0 || ^30.0.0", - "jest": "^29.0.0 || ^30.0.0", - "jest-util": "^29.0.0 || ^30.0.0", - "typescript": ">=4.3 <6" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@jest/transform": { - "optional": true - }, - "@jest/types": { - "optional": true - }, - "babel-jest": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jest-util": { - "optional": true - } - } - }, - "node_modules/ts-jest/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tsconfig-paths": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", - "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", - "license": "MIT", - "dependencies": { - "json5": "^2.2.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "license": "MIT" - }, - "node_modules/typeorm": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.26.tgz", - "integrity": "sha512-o2RrBNn3lczx1qv4j+JliVMmtkPSqEGpG0UuZkt9tCfWkoXKu8MZnjvp2GjWPll1SehwemQw6xrbVRhmOglj8Q==", - "license": "MIT", - "dependencies": { - "@sqltools/formatter": "^1.2.5", - "ansis": "^3.17.0", - "app-root-path": "^3.1.0", - "buffer": "^6.0.3", - "dayjs": "^1.11.13", - "debug": "^4.4.0", - "dedent": "^1.6.0", - "dotenv": "^16.4.7", - "glob": "^10.4.5", - "sha.js": "^2.4.11", - "sql-highlight": "^6.0.0", - "tslib": "^2.8.1", - "uuid": "^11.1.0", - "yargs": "^17.7.2" - }, - "bin": { - "typeorm": "cli.js", - "typeorm-ts-node-commonjs": "cli-ts-node-commonjs.js", - "typeorm-ts-node-esm": "cli-ts-node-esm.js" - }, - "engines": { - "node": ">=16.13.0" - }, - "funding": { - "url": "https://opencollective.com/typeorm" - }, - "peerDependencies": { - "@google-cloud/spanner": "^5.18.0 || ^6.0.0 || ^7.0.0", - "@sap/hana-client": "^2.14.22", - "better-sqlite3": "^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0", - "ioredis": "^5.0.4", - "mongodb": "^5.8.0 || ^6.0.0", - "mssql": "^9.1.1 || ^10.0.1 || ^11.0.1", - "mysql2": "^2.2.5 || ^3.0.1", - "oracledb": "^6.3.0", - "pg": "^8.5.1", - "pg-native": "^3.0.0", - "pg-query-stream": "^4.0.0", - "redis": "^3.1.1 || ^4.0.0 || ^5.0.14", - "reflect-metadata": "^0.1.14 || ^0.2.0", - "sql.js": "^1.4.0", - "sqlite3": "^5.0.3", - "ts-node": "^10.7.0", - "typeorm-aurora-data-api-driver": "^2.0.0 || ^3.0.0" - }, - "peerDependenciesMeta": { - "@google-cloud/spanner": { - "optional": true - }, - "@sap/hana-client": { - "optional": true - }, - "better-sqlite3": { - "optional": true - }, - "ioredis": { - "optional": true - }, - "mongodb": { - "optional": true - }, - "mssql": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "oracledb": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-native": { - "optional": true - }, - "pg-query-stream": { - "optional": true - }, - "redis": { - "optional": true - }, - "sql.js": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "ts-node": { - "optional": true - }, - "typeorm-aurora-data-api-driver": { - "optional": true - } - } - }, - "node_modules/typescript": { - "version": "5.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", - "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", - "devOptional": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "dev": true, - "license": "BSD-2-Clause", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/undefsafe": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", - "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", - "dev": true, - "license": "MIT" - }, - "node_modules/undici-types": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz", - "integrity": "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag==", - "license": "MIT" - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/esm/bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.30", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.30.tgz", - "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/validator": { - "version": "13.15.15", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.15.tgz", - "integrity": "sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "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/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, - "node_modules/web-encoding": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", - "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", - "license": "MIT", - "dependencies": { - "util": "^0.12.3" - }, - "optionalDependencies": { - "@zxing/text-encoding": "0.9.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/winston": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.17.0.tgz", - "integrity": "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==", - "license": "MIT", - "dependencies": { - "@colors/colors": "^1.6.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.7.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.9.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/winston-transport": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", - "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", - "license": "MIT", - "dependencies": { - "logform": "^2.7.0", - "readable-stream": "^3.6.2", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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==", - "license": "ISC" - }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "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/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", - "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "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==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yaml": { - "version": "2.0.0-1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.0.0-1.tgz", - "integrity": "sha512-W7h5dEhywMKenDJh2iX/LABkbFnBxasD27oyXWDS/feDsxiw0dD5ncXdYXgkvAsXIY2MpW/ZKkr9IU30DBdMNQ==", - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/z-schema": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.5.tgz", - "integrity": "sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==", - "license": "MIT", - "dependencies": { - "lodash.get": "^4.4.2", - "lodash.isequal": "^4.5.0", - "validator": "^13.7.0" - }, - "bin": { - "z-schema": "bin/z-schema" - }, - "engines": { - "node": ">=8.0.0" - }, - "optionalDependencies": { - "commander": "^9.4.1" - } - }, - "node_modules/z-schema/node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "license": "MIT", - "optional": true, - "engines": { - "node": "^12.20.0 || >=14" - } - } - } -} diff --git a/SerpentRace_Backend/package.json b/SerpentRace_Backend/package.json deleted file mode 100644 index 0999f1bd..00000000 --- a/SerpentRace_Backend/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "name": "serpentrace_backend", - "version": "1.0.0", - "description": "", - "license": "ISC", - "author": "", - "type": "commonjs", - "main": "index.js", - "scripts": { - "test": "jest", - "test:watch": "jest --watch", - "test:coverage": "jest --coverage", - "test:redis": "jest --testNamePattern=\"RedisService\"", - "start": "node ./dist/Api/index.js", - "dev": "nodemon --watch src --ext ts,json --exec ts-node ./src/Api/index.ts", - "build": "npm run build:clean && npm run build:compile && npm run build:copy-assets", - "build:clean": "rimraf dist", - "build:compile": "tsc", - "build:copy-assets": "node scripts/copy-assets.js", - "build:production": "npm run build:clean && npm run lint && npm run test && npm run migration:run && npm run build:compile && npm run build:copy-assets", - "build:docker": "npm run build:clean && npm run build:compile && npm run build:copy-assets", - "build:advanced": "ts-node scripts/build.ts", - "build:advanced:prod": "ts-node scripts/build.ts --production --migrations --test", - "build:advanced:ci": "ts-node scripts/build.ts --production --migrations --test --skip-lint", - "deploy": "node -e \"console.log('Use deploy.bat on Windows or deploy.sh on Linux/Mac')\"", - "deploy:prod": "npm run build:production && echo 'Build completed - ready for deployment'", - "build:help": "node scripts/build-help.js", - "build:status": "node scripts/build-help.js --status", - "build:quick": "node scripts/build-help.js --quick", - "prebuild": "npm run lint", - "postbuild": "echo 'Build completed successfully!'", - "lint": "echo 'Linting...' && echo 'No linter configured - add ESLint if needed'", - "migration:create": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli migration:create", - "migration:generate": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli -d ./src/Infrastructure/ormconfig.ts migration:generate", - "migration:run": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli -d ./src/Infrastructure/ormconfig.ts migration:run", - "migration:revert": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli -d ./src/Infrastructure/ormconfig.ts migration:revert", - "migration:show": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli -d ./src/Infrastructure/ormconfig.ts migration:show", - "migration:full": "ts-node scripts/generate-migration.ts", - "typecheck": "tsc --noEmit", - "watch": "tsc --watch" - }, - "dependencies": { - "bcrypt": "^6.0.0", - "cookie-parser": "^1.4.7", - "express": "^5.1.0", - "helmet": "^8.1.0", - "jsonwebtoken": "^9.0.2", - "minio": "^8.0.5", - "multer": "^2.0.2", - "nodemailer": "^7.0.5", - "pg": "^8.16.3", - "redis": "^5.8.1", - "sharp": "^0.34.4", - "socket.io": "^4.8.1", - "swagger-jsdoc": "^6.2.8", - "swagger-ui-express": "^5.0.1", - "tsconfig-paths": "^4.2.0", - "typeorm": "^0.3.26", - "uuid": "^11.1.0", - "winston": "^3.17.0" - }, - "devDependencies": { - "@jest/globals": "^30.0.5", - "@types/bcrypt": "^6.0.0", - "@types/cookie-parser": "^1.4.9", - "@types/express": "^5.0.3", - "@types/jest": "^30.0.0", - "@types/jsonwebtoken": "^9.0.10", - "@types/multer": "^2.0.0", - "@types/node": "^24.3.3", - "@types/nodemailer": "^7.0.1", - "@types/pg": "^8.15.5", - "@types/redis": "^4.0.10", - "@types/socket.io": "^3.0.1", - "@types/socket.io-client": "^1.4.36", - "@types/supertest": "^6.0.3", - "@types/swagger-jsdoc": "^6.0.4", - "@types/swagger-ui-express": "^4.1.8", - "@types/uuid": "^10.0.0", - "jest": "^30.0.5", - "nodemon": "^3.1.10", - "rimraf": "^5.0.10", - "socket.io-client": "^4.8.1", - "supertest": "^7.1.4", - "ts-jest": "^29.4.1", - "ts-node": "^10.9.2", - "typescript": "^5.9.2" - } -} diff --git a/SerpentRace_Backend/scripts/build-help.js b/SerpentRace_Backend/scripts/build-help.js deleted file mode 100644 index 183e9dff..00000000 --- a/SerpentRace_Backend/scripts/build-help.js +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env node - -const { execSync } = require('child_process'); -const fs = require('fs'); -const path = require('path'); - -/** - * Build System Helper - Shows available build commands and their descriptions - */ - -const commands = { - 'Development Commands': { - 'npm run dev': 'Start development server with hot reload', - 'npm run watch': 'Watch mode TypeScript compilation', - 'npm run typecheck': 'Type checking without code generation' - }, - 'Build Commands': { - 'npm run build': 'Standard build: clean → compile → copy assets', - 'npm run build:clean': 'Clean the dist directory', - 'npm run build:compile': 'Compile TypeScript to JavaScript', - 'npm run build:copy-assets': 'Copy non-TS files to dist directory', - 'npm run build:docker': 'Build for Docker (no tests/migrations)' - }, - 'Production Build Commands': { - 'npm run build:production': 'Full production build with linting, tests, and migrations', - 'npm run build:advanced': 'Advanced build script with custom options', - 'npm run build:advanced:prod': 'Advanced production build with all validations', - 'npm run build:advanced:ci': 'CI/CD friendly build (skips linting)', - 'npm run deploy:prod': 'Build for production deployment' - }, - 'Database Commands': { - 'npm run migration:run': 'Run pending database migrations', - 'npm run migration:show': 'Show migration status', - 'npm run migration:generate ': 'Generate new migration', - 'npm run migration:create ': 'Create empty migration', - 'npm run migration:revert': 'Revert last migration', - 'npm run migration:full ': 'Create, generate, and run migration' - }, - 'Testing Commands': { - 'npm test': 'Run all tests', - 'npm run test:watch': 'Run tests in watch mode', - 'npm run test:coverage': 'Run tests with coverage report', - 'npm run test:redis': 'Run Redis-specific tests' - }, - 'Deployment Scripts': { - 'scripts/deploy.sh': 'Full Linux/Mac deployment script', - 'scripts/deploy.bat': 'Full Windows deployment script' - } -}; - -function showCommands() { - console.log('🔧 SerpentRace Backend Build System\n'); - - Object.entries(commands).forEach(([category, categoryCommands]) => { - console.log(`\x1b[36m${category}\x1b[0m`); - console.log('=' .repeat(category.length)); - - Object.entries(categoryCommands).forEach(([command, description]) => { - console.log(` \x1b[32m${command.padEnd(35)}\x1b[0m ${description}`); - }); - - console.log(''); - }); - - console.log('\x1b[33mQuick Start:\x1b[0m'); - console.log(' npm run build # Basic build'); - console.log(' npm run build:production # Production build'); - console.log(' npm run dev # Development server\n'); - - console.log('\x1b[33mDocumentation:\x1b[0m'); - console.log(' See BUILD.md for detailed documentation'); -} - -function checkBuildStatus() { - const distPath = path.join(__dirname, '..', 'dist'); - - if (fs.existsSync(distPath)) { - const stats = fs.statSync(distPath); - console.log(`\x1b[32m✅ Last build:\x1b[0m ${stats.mtime.toLocaleString()}`); - - const indexPath = path.join(distPath, 'Api', 'index.js'); - if (fs.existsSync(indexPath)) { - console.log('\x1b[32m✅ Main entry point built successfully\x1b[0m'); - } else { - console.log('\x1b[31m❌ Main entry point missing\x1b[0m'); - } - } else { - console.log('\x1b[33m⚠️ No build found - run "npm run build" first\x1b[0m'); - } -} - -// Handle command line arguments -const args = process.argv.slice(2); - -if (args.includes('--help') || args.includes('-h')) { - showCommands(); -} else if (args.includes('--status') || args.includes('-s')) { - checkBuildStatus(); -} else if (args.includes('--quick') || args.includes('-q')) { - console.log('🚀 Quick build starting...'); - try { - execSync('npm run build', { stdio: 'inherit' }); - } catch (error) { - console.error('❌ Quick build failed'); - process.exit(1); - } -} else { - showCommands(); - checkBuildStatus(); - - console.log('\n\x1b[33mOptions:\x1b[0m'); - console.log(' --help, -h Show this help'); - console.log(' --status, -s Show build status only'); - console.log(' --quick, -q Run quick build'); -} diff --git a/SerpentRace_Backend/scripts/build.ts b/SerpentRace_Backend/scripts/build.ts deleted file mode 100644 index 81185407..00000000 --- a/SerpentRace_Backend/scripts/build.ts +++ /dev/null @@ -1,187 +0,0 @@ -import { execSync } from 'child_process'; -import { existsSync, rmSync } from 'fs'; -import { join } from 'path'; - -/** - * Comprehensive Build Script for SerpentRace Backend - * Handles TypeScript compilation, migrations, asset copying, and validation - */ - -interface BuildOptions { - runMigrations?: boolean; - runTests?: boolean; - skipLinting?: boolean; - production?: boolean; -} - -class BuildManager { - private distDir = join(__dirname, '..', 'dist'); - - constructor(private options: BuildOptions = {}) {} - - private log(message: string, level: 'info' | 'error' | 'warn' = 'info') { - const timestamp = new Date().toISOString(); - const prefix = { - info: '🔧', - error: '❌', - warn: '⚠️' - }[level]; - console.log(`${prefix} [${timestamp}] ${message}`); - } - - private execute(command: string, description: string) { - this.log(`${description}...`); - try { - execSync(command, { - stdio: 'inherit', - cwd: join(__dirname, '..') - }); - this.log(`✅ ${description} completed successfully`); - } catch (error) { - this.log(`❌ ${description} failed`, 'error'); - throw error; - } - } - - async clean() { - this.log('Cleaning previous build...'); - if (existsSync(this.distDir)) { - rmSync(this.distDir, { recursive: true, force: true }); - this.log('✅ Previous build cleaned'); - } else { - this.log('No previous build found'); - } - } - - async typecheck() { - this.execute('npx tsc --noEmit', 'Type checking'); - } - - async lint() { - if (this.options.skipLinting) { - this.log('Skipping linting...', 'warn'); - return; - } - - // For now, just check if TypeScript compiles without errors - this.log('Linting (basic type checking)...'); - await this.typecheck(); - } - - async runTests() { - if (!this.options.runTests) { - this.log('Skipping tests...', 'warn'); - return; - } - - this.execute('npm test', 'Running tests'); - } - - async runMigrations() { - if (!this.options.runMigrations) { - this.log('Skipping database migrations...', 'warn'); - return; - } - - try { - this.log('Checking migration status...'); - execSync('npm run migration:show', { - stdio: 'pipe', - cwd: join(__dirname, '..') - }); - - this.execute('npm run migration:run', 'Running database migrations'); - } catch (error) { - this.log('Migration check/run failed - this might be expected in CI/CD environments', 'warn'); - if (this.options.production) { - throw error; // In production builds, migrations should work - } - } - } - - async compile() { - this.execute('npx tsc', 'Compiling TypeScript'); - } - - async copyAssets() { - this.execute('node scripts/copy-assets.js', 'Copying assets'); - } - - async validateBuild() { - this.log('Validating build output...'); - - const expectedFiles = [ - 'dist/Api/index.js', - 'dist/Api/index.d.ts' - ]; - - const missingFiles = expectedFiles.filter(file => - !existsSync(join(__dirname, '..', file)) - ); - - if (missingFiles.length > 0) { - this.log(`Missing expected build files: ${missingFiles.join(', ')}`, 'error'); - throw new Error('Build validation failed'); - } - - this.log('✅ Build validation completed'); - } - - async build() { - const startTime = Date.now(); - - try { - this.log('🚀 Starting SerpentRace Backend build process...'); - - // Step 1: Clean previous build - await this.clean(); - - // Step 2: Lint code (if not skipped) - await this.lint(); - - // Step 3: Run tests (if enabled) - await this.runTests(); - - // Step 4: Run migrations (if enabled) - await this.runMigrations(); - - // Step 5: Compile TypeScript - await this.compile(); - - // Step 6: Copy assets - await this.copyAssets(); - - // Step 7: Validate build - await this.validateBuild(); - - const duration = ((Date.now() - startTime) / 1000).toFixed(2); - this.log(`🎉 Build completed successfully in ${duration}s`); - - } catch (error) { - const duration = ((Date.now() - startTime) / 1000).toFixed(2); - this.log(`💥 Build failed after ${duration}s`, 'error'); - - if (error instanceof Error) { - this.log(`Error: ${error.message}`, 'error'); - } - - process.exit(1); - } - } -} - -// Parse command line arguments -const args = process.argv.slice(2); -const options: BuildOptions = { - runMigrations: args.includes('--migrations'), - runTests: args.includes('--test'), - skipLinting: args.includes('--skip-lint'), - production: args.includes('--production') -}; - -// Create and run build -const buildManager = new BuildManager(options); -buildManager.build().catch(error => { - console.error('Unhandled build error:', error); - process.exit(1); -}); diff --git a/SerpentRace_Backend/scripts/copy-assets.js b/SerpentRace_Backend/scripts/copy-assets.js deleted file mode 100644 index 1f9c26e3..00000000 --- a/SerpentRace_Backend/scripts/copy-assets.js +++ /dev/null @@ -1,62 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -/** - * Copy Assets Script for SerpentRace Backend - * Copies non-TypeScript files to the dist directory - */ - -const srcDir = path.join(__dirname, '..', 'src'); -const distDir = path.join(__dirname, '..', 'dist'); - -// File extensions to copy -const assetExtensions = ['.json', '.html', '.css', '.png', '.jpg', '.jpeg', '.gif', '.svg', '.ico', '.woff', '.woff2', '.ttf', '.eot']; - -// Directories to exclude from copying -const excludeDirs = ['node_modules', '.git', 'tests', '__tests__']; - -function copyAssets(srcPath, distPath) { - if (!fs.existsSync(srcPath)) { - console.log(`Source directory ${srcPath} does not exist`); - return; - } - - if (!fs.existsSync(distPath)) { - fs.mkdirSync(distPath, { recursive: true }); - } - - const items = fs.readdirSync(srcPath); - - items.forEach(item => { - const srcItemPath = path.join(srcPath, item); - const distItemPath = path.join(distPath, item); - const stat = fs.statSync(srcItemPath); - - if (stat.isDirectory()) { - // Skip excluded directories - if (excludeDirs.includes(item)) { - return; - } - - // Recursively copy subdirectories - copyAssets(srcItemPath, distItemPath); - } else { - const ext = path.extname(item).toLowerCase(); - - // Copy asset files - if (assetExtensions.includes(ext)) { - console.log(`Copying asset: ${srcItemPath} -> ${distItemPath}`); - fs.copyFileSync(srcItemPath, distItemPath); - } - } - }); -} - -try { - console.log('Copying assets from src to dist...'); - copyAssets(srcDir, distDir); - console.log('Asset copying completed successfully!'); -} catch (error) { - console.error('Error copying assets:', error); - process.exit(1); -} diff --git a/SerpentRace_Backend/scripts/deploy.bat b/SerpentRace_Backend/scripts/deploy.bat deleted file mode 100644 index 465ad1dc..00000000 --- a/SerpentRace_Backend/scripts/deploy.bat +++ /dev/null @@ -1,233 +0,0 @@ -@echo off -REM SerpentRace Backend Production Deployment Script for Windows -REM This script handles the complete deployment process - -setlocal EnableDelayedExpansion - -set "SCRIPT_START=%TIME%" - -REM Colors simulation for Windows (using echo with different prefixes) -set "LOG_PREFIX=[INFO]" -set "ERROR_PREFIX=[ERROR]" -set "WARN_PREFIX=[WARN]" - -:log -echo %LOG_PREFIX% [%DATE% %TIME%] %~1 -goto :eof - -:error -echo %ERROR_PREFIX% [%DATE% %TIME%] %~1 -goto :eof - -:warn -echo %WARN_PREFIX% [%DATE% %TIME%] %~1 -goto :eof - -:check_env -call :log "Checking environment variables..." - -set "required_vars=DB_HOST DB_PORT DB_USERNAME DB_PASSWORD DB_NAME JWT_SECRET REDIS_HOST REDIS_PORT" -set "missing_vars=" - -for %%v in (%required_vars%) do ( - call set "var_value=%%!%%v!%%" - if "!var_value!"=="" ( - set "missing_vars=!missing_vars! %%v" - ) -) - -if not "!missing_vars!"==" " ( - call :error "Missing required environment variables:!missing_vars!" - call :error "Please set these variables before running the deployment" - exit /b 1 -) - -call :log "All required environment variables are set" -goto :eof - -:install_dependencies -call :log "Installing production dependencies..." -npm ci --only=production -if !errorlevel! neq 0 ( - call :error "Failed to install dependencies" - exit /b 1 -) -call :log "Dependencies installed successfully" -goto :eof - -:run_build -call :log "Running production build..." -npm run build:production -if !errorlevel! neq 0 ( - call :error "Build failed" - exit /b 1 -) -call :log "Build completed successfully" -goto :eof - -:test_database -call :log "Testing database connectivity..." - -echo import { AppDataSource } from './src/Infrastructure/ormconfig'; > test-db-temp.ts -echo. >> test-db-temp.ts -echo async function testConnection() { >> test-db-temp.ts -echo try { >> test-db-temp.ts -echo await AppDataSource.initialize(); >> test-db-temp.ts -echo console.log('✅ Database connection successful'^); >> test-db-temp.ts -echo await AppDataSource.destroy(); >> test-db-temp.ts -echo process.exit(0^); >> test-db-temp.ts -echo } catch (error^) { >> test-db-temp.ts -echo console.error('❌ Database connection failed:', error^); >> test-db-temp.ts -echo process.exit(1^); >> test-db-temp.ts -echo } >> test-db-temp.ts -echo } >> test-db-temp.ts -echo. >> test-db-temp.ts -echo testConnection(); >> test-db-temp.ts - -npx ts-node test-db-temp.ts -set "db_test_result=!errorlevel!" -del test-db-temp.ts 2>nul - -if !db_test_result! neq 0 ( - call :error "Database connectivity test failed" - exit /b 1 -) - -call :log "Database connectivity test passed" -goto :eof - -:test_redis -call :log "Testing Redis connectivity..." - -echo import { createClient } from 'redis'; > test-redis-temp.ts -echo. >> test-redis-temp.ts -echo async function testRedis() { >> test-redis-temp.ts -echo const client = createClient({ >> test-redis-temp.ts -echo socket: { >> test-redis-temp.ts -echo host: process.env.REDIS_HOST ^|^| 'localhost', >> test-redis-temp.ts -echo port: parseInt(process.env.REDIS_PORT ^|^| '6379'^) >> test-redis-temp.ts -echo } >> test-redis-temp.ts -echo }^); >> test-redis-temp.ts -echo. >> test-redis-temp.ts -echo try { >> test-redis-temp.ts -echo await client.connect(); >> test-redis-temp.ts -echo await client.ping(); >> test-redis-temp.ts -echo console.log('✅ Redis connection successful'^); >> test-redis-temp.ts -echo await client.disconnect(); >> test-redis-temp.ts -echo process.exit(0^); >> test-redis-temp.ts -echo } catch (error^) { >> test-redis-temp.ts -echo console.error('❌ Redis connection failed:', error^); >> test-redis-temp.ts -echo process.exit(1^); >> test-redis-temp.ts -echo } >> test-redis-temp.ts -echo } >> test-redis-temp.ts -echo. >> test-redis-temp.ts -echo testRedis(); >> test-redis-temp.ts - -npx ts-node test-redis-temp.ts -set "redis_test_result=!errorlevel!" -del test-redis-temp.ts 2>nul - -if !redis_test_result! neq 0 ( - call :warn "Redis connectivity test failed - continuing anyway" -) else ( - call :log "Redis connectivity test passed" -) -goto :eof - -:setup_directories -call :log "Setting up required directories..." -if not exist "logs" mkdir logs -if not exist "uploads" mkdir uploads -call :log "Directories created" -goto :eof - -:start_app -call :log "Starting application for validation..." - -REM Start the app in background -start /B "" npm start - -REM Wait for app to start -timeout /t 10 /nobreak >nul - -REM Test if the health endpoint responds (using curl if available) -set "PORT_VAR=!PORT!" -if "!PORT_VAR!"=="" set "PORT_VAR=3000" - -curl -f http://localhost:!PORT_VAR!/health >nul 2>&1 -if !errorlevel! equ 0 ( - call :log "Application health check passed" - REM Try to stop the background process (this is tricky in batch) - taskkill /F /IM node.exe /FI "WINDOWTITLE eq npm start*" >nul 2>&1 -) else ( - call :error "Application health check failed" - taskkill /F /IM node.exe /FI "WINDOWTITLE eq npm start*" >nul 2>&1 - exit /b 1 -) -goto :eof - -:deploy -call :log "🚀 Starting SerpentRace Backend production deployment..." - -call :check_env -if !errorlevel! neq 0 exit /b 1 - -call :install_dependencies -if !errorlevel! neq 0 exit /b 1 - -call :run_build -if !errorlevel! neq 0 exit /b 1 - -call :setup_directories -if !errorlevel! neq 0 exit /b 1 - -call :test_database -if !errorlevel! neq 0 exit /b 1 - -call :test_redis -REM Redis test failure is not fatal - -if not "%SKIP_APP_TEST%"=="true" ( - call :start_app - if !errorlevel! neq 0 exit /b 1 -) else ( - call :warn "Skipping application startup test" -) - -call :log "🎉 Deployment completed successfully!" -call :log "You can now start the application with: npm start" -goto :eof - -:build_only -call :log "Running build-only deployment..." -call :check_env -if !errorlevel! neq 0 exit /b 1 -call :install_dependencies -if !errorlevel! neq 0 exit /b 1 -call :run_build -if !errorlevel! neq 0 exit /b 1 -call :setup_directories -call :log "Build-only deployment completed" -goto :eof - -:test_connections -call :log "Testing connections only..." -call :check_env -if !errorlevel! neq 0 exit /b 1 -call :test_database -if !errorlevel! neq 0 exit /b 1 -call :test_redis -call :log "Connection tests completed" -goto :eof - -REM Main script logic -if "%1"=="" goto deploy -if "%1"=="deploy" goto deploy -if "%1"=="build-only" goto build_only -if "%1"=="test-connections" goto test_connections - -echo Usage: %0 [deploy^|build-only^|test-connections] -echo deploy - Full deployment (default) -echo build-only - Only build, skip tests -echo test-connections - Test database and Redis connections -exit /b 1 diff --git a/SerpentRace_Backend/scripts/deploy.sh b/SerpentRace_Backend/scripts/deploy.sh deleted file mode 100644 index 4af6b641..00000000 --- a/SerpentRace_Backend/scripts/deploy.sh +++ /dev/null @@ -1,237 +0,0 @@ -#!/bin/bash - -# SerpentRace Backend Production Deployment Script -# This script handles the complete deployment process - -set -e # Exit on any error - -# Colors for output -RED='\033[0;31m' -GREEN='\033[0;32m' -YELLOW='\033[1;33m' -BLUE='\033[0;34m' -NC='\033[0m' # No Color - -log() { - echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] $1${NC}" -} - -error() { - echo -e "${RED}[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $1${NC}" -} - -warn() { - echo -e "${YELLOW}[$(date +'%Y-%m-%d %H:%M:%S')] WARNING: $1${NC}" -} - -info() { - echo -e "${BLUE}[$(date +'%Y-%m-%d %H:%M:%S')] INFO: $1${NC}" -} - -# Check if required environment variables are set -check_env() { - log "Checking environment variables..." - - required_vars=( - "DB_HOST" - "DB_PORT" - "DB_USERNAME" - "DB_PASSWORD" - "DB_NAME" - "JWT_SECRET" - "REDIS_HOST" - "REDIS_PORT" - ) - - missing_vars=() - for var in "${required_vars[@]}"; do - if [ -z "${!var}" ]; then - missing_vars+=("$var") - fi - done - - if [ ${#missing_vars[@]} -ne 0 ]; then - error "Missing required environment variables: ${missing_vars[*]}" - error "Please set these variables before running the deployment" - exit 1 - fi - - log "All required environment variables are set" -} - -# Install dependencies -install_dependencies() { - log "Installing production dependencies..." - npm ci --only=production - log "Dependencies installed successfully" -} - -# Run the comprehensive build process -run_build() { - log "Running production build..." - npm run build:production - log "Build completed successfully" -} - -# Test database connectivity -test_database() { - log "Testing database connectivity..." - - # Use a simple TypeScript script to test connection - cat > /tmp/test-db.ts << 'EOF' -import { AppDataSource } from './src/Infrastructure/ormconfig'; - -async function testConnection() { - try { - await AppDataSource.initialize(); - console.log('✅ Database connection successful'); - await AppDataSource.destroy(); - process.exit(0); - } catch (error) { - console.error('❌ Database connection failed:', error); - process.exit(1); - } -} - -testConnection(); -EOF - - npx ts-node /tmp/test-db.ts || { - error "Database connectivity test failed" - exit 1 - } - - rm -f /tmp/test-db.ts - log "Database connectivity test passed" -} - -# Test Redis connectivity -test_redis() { - log "Testing Redis connectivity..." - - # Use a simple script to test Redis connection - cat > /tmp/test-redis.ts << 'EOF' -import { createClient } from 'redis'; - -async function testRedis() { - const client = createClient({ - socket: { - host: process.env.REDIS_HOST || 'localhost', - port: parseInt(process.env.REDIS_PORT || '6379') - } - }); - - try { - await client.connect(); - await client.ping(); - console.log('✅ Redis connection successful'); - await client.disconnect(); - process.exit(0); - } catch (error) { - console.error('❌ Redis connection failed:', error); - process.exit(1); - } -} - -testRedis(); -EOF - - npx ts-node /tmp/test-redis.ts || { - warn "Redis connectivity test failed - continuing anyway" - } - - rm -f /tmp/test-redis.ts - log "Redis connectivity test completed" -} - -# Create required directories -setup_directories() { - log "Setting up required directories..." - mkdir -p logs - mkdir -p uploads - log "Directories created" -} - -# Start the application (for testing) -start_app() { - log "Starting application for validation..." - - # Start the app in background and test if it responds - npm start & - APP_PID=$! - - # Wait for app to start - sleep 10 - - # Test if the health endpoint responds - if curl -f http://localhost:${PORT:-3000}/health > /dev/null 2>&1; then - log "Application health check passed" - kill $APP_PID - wait $APP_PID 2>/dev/null - else - error "Application health check failed" - kill $APP_PID 2>/dev/null || true - wait $APP_PID 2>/dev/null || true - exit 1 - fi -} - -# Main deployment function -deploy() { - log "🚀 Starting SerpentRace Backend production deployment..." - - # Check environment - check_env - - # Install dependencies - install_dependencies - - # Run build process - run_build - - # Setup directories - setup_directories - - # Test connections - test_database - test_redis - - # Test application startup - if [ "${SKIP_APP_TEST}" != "true" ]; then - start_app - else - warn "Skipping application startup test" - fi - - log "🎉 Deployment completed successfully!" - info "You can now start the application with: npm start" -} - -# Handle script arguments -case "${1:-deploy}" in - "deploy") - deploy - ;; - "build-only") - log "Running build-only deployment..." - check_env - install_dependencies - run_build - setup_directories - log "Build-only deployment completed" - ;; - "test-connections") - log "Testing connections only..." - check_env - test_database - test_redis - log "Connection tests completed" - ;; - *) - echo "Usage: $0 [deploy|build-only|test-connections]" - echo " deploy - Full deployment (default)" - echo " build-only - Only build, skip tests" - echo " test-connections - Test database and Redis connections" - exit 1 - ;; -esac diff --git a/SerpentRace_Backend/scripts/generate-migration.ts b/SerpentRace_Backend/scripts/generate-migration.ts deleted file mode 100644 index 9ad0a8f3..00000000 --- a/SerpentRace_Backend/scripts/generate-migration.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { execSync } from 'child_process'; - -const migrationName = process.argv[2]; - -if (!migrationName) { - console.error('Please provide a migration name: npm run migration:full '); - process.exit(1); -} - -try { - console.log(`Creating migration: ${migrationName}`); - execSync(`npx ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli migration:create ./src/Infrastructure/Migrationsettings/${migrationName}`, { stdio: 'inherit' }); - - console.log(`Generating migration: ${migrationName}`); - execSync(`npx ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli -d ./src/Infrastructure/ormconfig.ts migration:generate ./src/Infrastructure/Migrations/${migrationName}`, { stdio: 'inherit' }); - - console.log('Migration generated successfully!'); - - console.log('Running migration...'); - execSync(`npx ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli -d ./src/Infrastructure/ormconfig.ts migration:run`, { stdio: 'inherit' }); -} catch (error) { - if (error instanceof Error) { - console.error('Migration failed:', error.message); - } else { - console.error('Migration failed:', error); - } - process.exit(1); -} \ No newline at end of file diff --git a/SerpentRace_Backend/scripts/test-redis.ps1 b/SerpentRace_Backend/scripts/test-redis.ps1 deleted file mode 100644 index 18d8ecfa..00000000 --- a/SerpentRace_Backend/scripts/test-redis.ps1 +++ /dev/null @@ -1,21 +0,0 @@ -# PowerShell script to start Redis and run tests -Write-Host "Starting Redis with Docker Compose..." -ForegroundColor Green -docker-compose up -d redis - -# Wait for Redis to be ready -Write-Host "Waiting for Redis to be ready..." -ForegroundColor Yellow -do { - Write-Host "Checking Redis connection..." -ForegroundColor Gray - $result = docker-compose exec redis redis-cli ping 2>$null - if ($result -ne "PONG") { - Start-Sleep -Seconds 2 - } -} while ($result -ne "PONG") - -Write-Host "Redis is ready!" -ForegroundColor Green - -# Run Redis tests -Write-Host "Running Redis tests..." -ForegroundColor Cyan -npm test -- --testNamePattern="RedisService" - -Write-Host "Done!" -ForegroundColor Green diff --git a/SerpentRace_Backend/scripts/test-redis.sh b/SerpentRace_Backend/scripts/test-redis.sh deleted file mode 100644 index 791362ae..00000000 --- a/SerpentRace_Backend/scripts/test-redis.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -# Script to start Redis and run tests -echo "Starting Redis with Docker Compose..." -docker-compose up -d redis - -# Wait for Redis to be ready -echo "Waiting for Redis to be ready..." -until docker-compose exec redis redis-cli ping; do - echo "Waiting for Redis..." - sleep 2 -done - -echo "Redis is ready!" - -# Run Redis tests -echo "Running Redis tests..." -npm test -- --testNamePattern="RedisService" - -echo "Done!" diff --git a/SerpentRace_Backend/src/Api/index.ts b/SerpentRace_Backend/src/Api/index.ts deleted file mode 100644 index 5bcc6a6e..00000000 --- a/SerpentRace_Backend/src/Api/index.ts +++ /dev/null @@ -1,314 +0,0 @@ -import express from 'express'; -import { createServer } from 'http'; -import cookieParser from 'cookie-parser'; -import helmet from 'helmet'; -import { AppDataSource } from '../Infrastructure/ormconfig'; -import userRouter from './routers/userRouter'; -import organizationRouter from './routers/organizationRouter'; -import deckRouter from './routers/deckRouter'; -import chatRouter from './routers/chatRouter'; -import contactRouter from './routers/contactRouter'; -import adminRouter from './routers/adminRouter'; -import deckImportExportRouter from './routers/deckImportExportRouter'; -import gameRouter from './routers/gameRouter'; -import { LoggingService, logStartup, logConnection, logError, logRequest } from '../Application/Services/Logger'; -import { WebSocketService } from '../Application/Services/WebSocketService'; -import { GameWebSocketService } from '../Application/Services/GameWebSocketService'; -import { container } from '../Application/Services/DIContainer'; -import { GameRepository } from '../Infrastructure/Repository/GameRepository'; -import { UserRepository } from '../Infrastructure/Repository/UserRepository'; -import { RedisService } from '../Application/Services/RedisService'; -import { setupSwagger } from './swagger/swaggerUiSetup'; - -const app = express(); -const httpServer = createServer(app); -const PORT = process.env.PORT || 3000; -const isDevelopment = process.env.NODE_ENV === 'development'; - -const loggingService = LoggingService.getInstance(); - -// Validate required environment variables in production -if (process.env.NODE_ENV === 'production') { - const requiredEnvVars = [ - 'JWT_SECRET', - 'DB_PASSWORD', - 'DB_HOST', - 'DB_NAME', - 'POSTGRES_PASSWORD' - ]; - - const missingVars = requiredEnvVars.filter(varName => !process.env[varName]); - - if (missingVars.length > 0) { - logError('[FATAL] Missing required environment variables in production:', missingVars.join(', ')); - logError('[FATAL] Please configure all required environment variables in .env.server'); - process.exit(1); - } - - // Check for placeholder values that haven't been changed - if (process.env.JWT_SECRET && process.env.JWT_SECRET.includes('CHANGE_THIS')) { - logError('[FATAL] JWT_SECRET still contains placeholder value. Please set a proper secret in .env.server'); - process.exit(1); - } - - if (process.env.POSTGRES_PASSWORD && process.env.POSTGRES_PASSWORD.includes('CHANGE_THIS')) { - logError('[FATAL] POSTGRES_PASSWORD still contains placeholder value. Please set a proper password in .env.server'); - process.exit(1); - } -} - -logStartup('SerpentRace Backend starting up', { - environment: process.env.NODE_ENV || 'development', - port: PORT, - nodeVersion: process.version, - chatInactivityTimeout: process.env.CHAT_INACTIVITY_TIMEOUT_MINUTES || '30' -}); - -app.use(helmet({ - contentSecurityPolicy: isDevelopment ? false : undefined -})); - -app.use(express.json({ limit: '10mb' })); -app.use(express.urlencoded({ extended: true, limit: '10mb' })); -app.use(cookieParser()); - -app.use(loggingService.requestLoggingMiddleware()); - -app.use((req, res, next) => { - const origin = req.headers.origin; - const allowedOrigins = ['http://localhost:3000', 'http://localhost:3001', 'http://localhost:8080', process.env.FRONTEND_URL]; - - if (!origin || allowedOrigins.includes(origin)) { - res.setHeader('Access-Control-Allow-Origin', origin || '*'); - } - - res.setHeader('Access-Control-Allow-Credentials', 'true'); - res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS'); - res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, Cookie'); - - if (req.method === 'OPTIONS') { - res.status(200).end(); - return; - } - - next(); -}); - -if (isDevelopment) { - app.use((req, res, next) => { - logRequest(`${req.method} ${req.path}`, req, res); - next(); - }); -} - -// Setup Swagger documentation -setupSwagger(app); - -app.get('/', (req, res) => { - res.json({ - service: 'SerpentRace Backend API', - status: 'running', - version: '1.0.0', - endpoints: { - swagger: '/api-docs', - users: '/api/users', - organizations: '/api/organizations', - decks: '/api/decks', - chats: '/api/chats', - contacts: '/api/contacts', - admin: '/api/admin', - deckImportExport: '/api/deck-import-export', - health: '/health' - }, - websocket: { - enabled: true, - events: [ - 'chat:join', 'chat:leave', 'message:send', - 'group:create', 'chat:direct', 'game:chat:create', - 'chat:history' - ] - } - }); -}); - -app.get('/health', async (req, res) => { - try { - const isDbConnected = AppDataSource.isInitialized; - - res.json({ - status: 'healthy', - timestamp: new Date().toISOString(), - service: 'SerpentRace Backend API', - version: '1.0.0', - environment: process.env.NODE_ENV || 'development', - database: { - connected: isDbConnected, - type: AppDataSource.options.type - }, - websocket: { - enabled: true - }, - uptime: process.uptime() - }); - } catch (error) { - res.status(503).json({ - status: 'unhealthy', - timestamp: new Date().toISOString(), - error: 'Service health check failed' - }); - } -}); - -// API Routes -app.use('/api/users', userRouter); -app.use('/api/organizations', organizationRouter); -app.use('/api/decks', deckRouter); -app.use('/api/chats', chatRouter); -app.use('/api/contacts', contactRouter); -app.use('/api/admin', adminRouter); -app.use('/api/deck-import-export', deckImportExportRouter); -app.use('/api/games', gameRouter); - -// Global error handler (must be after routes) -app.use(loggingService.errorLoggingMiddleware()); -app.use((error: Error, req: express.Request, res: express.Response, next: express.NextFunction) => { - logError('Global error handler caught unhandled error', error, req, res); - - // Don't expose internal error details in production - const isDevelopment = process.env.NODE_ENV === 'development'; - - res.status(500).json({ - error: 'Internal server error', - timestamp: new Date().toISOString(), - ...(isDevelopment && { details: error.message, stack: error.stack }) - }); -}); - -// Handle 404 routes -app.use((req: express.Request, res: express.Response) => { - res.status(404).json({ - error: 'Route not found', - path: req.originalUrl, - method: req.method, - timestamp: new Date().toISOString() - }); -}); - -// Initialize WebSocket service after database connection -let webSocketService: WebSocketService; -let gameWebSocketService: GameWebSocketService; - -// Initialize database connection -AppDataSource.initialize() - .then(() => { - const dbOptions = AppDataSource.options as any; - logConnection('Database connection established', 'postgresql', 'success', { - type: dbOptions.type, - host: dbOptions.host, - database: dbOptions.database - }); - - // Initialize WebSocket service after database is connected - webSocketService = new WebSocketService(httpServer); - logStartup('WebSocket service initialized', { - chatInactivityTimeout: process.env.CHAT_INACTIVITY_TIMEOUT_MINUTES || '30' - }); - - // Initialize Game WebSocket service for /game namespace via DIContainer - container.setSocketIO(webSocketService['io']); - gameWebSocketService = container.gameWebSocketService; - logStartup('Game WebSocket service initialized for /game namespace'); - - // Restore active games from snapshots (if any exist) - gameWebSocketService.restoreAllActiveGames() - .then(restoredCount => { - if (restoredCount > 0) { - logStartup(`Restored ${restoredCount} active game(s) from snapshots`); - } - }) - .catch(error => { - logError('Failed to restore games from snapshots', error); - }); - }) - .catch((error) => { - const dbOptions = AppDataSource.options as any; - logConnection('Database connection failed', 'postgresql', 'failure', { - error: error.message, - type: dbOptions.type, - host: dbOptions.host, - database: dbOptions.database - }); - process.exit(1); - }); - -// Start server with WebSocket support -const server = httpServer.listen(PORT, () => { - logStartup('Server started successfully', { - port: PORT, - environment: process.env.NODE_ENV || 'development', - timestamp: new Date().toISOString(), - endpoints: { - health: `/health`, - swagger: `/api-docs`, - users: `/api/users`, - organizations: `/api/organizations`, - decks: `/api/decks`, - chats: `/api/chats` - }, - websocket: { - enabled: true, - chatInactivityTimeout: `${process.env.CHAT_INACTIVITY_TIMEOUT_MINUTES || '30'} minutes` - } - }); -}); - -// Graceful shutdown -const gracefulShutdown = async (signal: string) => { - logStartup(`Received ${signal}. Shutting down gracefully...`); - - // Snapshot all active games before shutdown - if (gameWebSocketService) { - try { - const snapshotCount = await gameWebSocketService.snapshotAllActiveGames(); - logStartup(`Created ${snapshotCount} game snapshot(s) before shutdown`); - } catch (error) { - logError('Failed to snapshot games before shutdown', error as Error); - } - } - - server.close(() => { - logStartup('HTTP server closed'); - - if (AppDataSource.isInitialized) { - AppDataSource.destroy() - .then(() => { - logConnection('Database connection closed', 'postgresql', 'success'); - process.exit(0); - }) - .catch((error) => { - logError('Error during database shutdown', error); - process.exit(1); - }); - } else { - process.exit(0); - } - }); -}; - -process.on('SIGTERM', () => gracefulShutdown('SIGTERM')); -process.on('SIGINT', () => gracefulShutdown('SIGINT')); - -// Handle uncaught exceptions -process.on('uncaughtException', (error) => { - logError('Uncaught Exception - Server will shut down', error); - process.exit(1); -}); - -// Handle unhandled promise rejections -process.on('unhandledRejection', (reason, promise) => { - logError('Unhandled Rejection - Server will shut down', new Error(String(reason)), undefined, undefined); - process.exit(1); -}); - -// Export WebSocket services for game integration -export { webSocketService, gameWebSocketService }; diff --git a/SerpentRace_Backend/src/Api/middleware/optionalAuth.ts b/SerpentRace_Backend/src/Api/middleware/optionalAuth.ts deleted file mode 100644 index 05953518..00000000 --- a/SerpentRace_Backend/src/Api/middleware/optionalAuth.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { Request, Response, NextFunction } from 'express'; -import { JWTService } from '../../Application/Services/JWTService'; -import { UserState } from '../../Domain/User/UserAggregate'; -import { logAuth, logWarning } from '../../Application/Services/Logger'; - -interface AuthenticatedRequest extends Request { - user?: { - userId: string; - authLevel: 0 | 1; - userStatus: UserState; - orgId: string | null; - }; -} - -/** - * Optional authentication middleware - extracts JWT data if present but doesn't require authentication - * Used for endpoints that work for both authenticated and anonymous users - */ -export const optionalAuth = (req: AuthenticatedRequest, res: Response, next: NextFunction) => { - const jwtService = new JWTService(); - - try { - // Try to extract token from Authorization header or cookies - const authHeader = req.headers.authorization; - const token = authHeader?.startsWith('Bearer ') - ? authHeader.substring(7) - : req.cookies?.auth_token; - - if (token) { - // If token exists, try to verify it - const payload = jwtService.verify(req); - - if (payload) { - req.user = { - userId: payload.userId, - authLevel: payload.authLevel, - userStatus: payload.userStatus, - orgId: payload.orgId || null - }; - - logAuth('Optional auth - user authenticated', payload.userId, { - authLevel: payload.authLevel, - userStatus: payload.userStatus, - orgId: payload.orgId - }); - } else { - logWarning('Optional auth - invalid token provided', { - hasToken: true, - tokenLength: token.length - }); - } - } - - // Continue regardless of authentication status - next(); - - } catch (error) { - // Log the error but continue without authentication - logWarning('Optional auth - error processing token', { - error: error instanceof Error ? error.message : String(error), - hasAuthHeader: !!req.headers.authorization, - hasCookie: !!req.cookies?.auth_token - }); - - next(); - } -}; \ No newline at end of file diff --git a/SerpentRace_Backend/src/Api/routers/adminRouter.ts b/SerpentRace_Backend/src/Api/routers/adminRouter.ts deleted file mode 100644 index 4226687a..00000000 --- a/SerpentRace_Backend/src/Api/routers/adminRouter.ts +++ /dev/null @@ -1,1141 +0,0 @@ -import express, { Request, Response } from 'express'; -import multer from 'multer'; -import { DIContainer } from '../../Application/Services/DIContainer'; -import { adminRequired } from '../../Application/Services/AuthMiddleware'; -import { UserState } from '../../Domain/User/UserAggregate'; -import { ValidationMiddleware } from '../../Application/Services/ValidationMiddleware'; -import { ErrorResponseService } from '../../Application/Services/ErrorResponseService'; -import { AdminAuditService } from '../../Application/Services/AdminBypassService'; -import { webSocketService } from '../index'; -import { logRequest, logError, logWarning, logAuth } from '../../Application/Services/Logger'; - -// Extend Express Request interface for file uploads -declare global { - namespace Express { - interface Request { - file?: Express.Multer.File; - } - } -} - -const router = express.Router(); -const container = DIContainer.getInstance(); - -// Configure multer for file uploads -const upload = multer({ - storage: multer.memoryStorage(), - limits: { - fileSize: 10 * 1024 * 1024, // 10MB limit - }, - fileFilter: (req: any, file: any, cb: any) => { - if (file.mimetype === 'application/json' || file.originalname.endsWith('.spr')) { - cb(null, true); - } else { - cb(new Error('Only JSON and .spr files are allowed')); - } - } -}); - -// Helper function to extract language from Accept-Language header -function extractLanguageFromAcceptHeader(acceptLanguage: string): string | null { - if (!acceptLanguage) return null; - - const languages = acceptLanguage.split(','); - if (languages.length > 0) { - const primaryLanguage = languages[0].split(';')[0].trim().substring(0, 2); - return primaryLanguage; - } - - return null; -} - -// ============================================================================= -// USER MANAGEMENT ROUTES -// ============================================================================= - -// Get users with pagination (RECOMMENDED) -router.get('/users/page/:from/:to', adminRequired, async (req: Request, res: Response) => { - try { - const from = parseInt(req.params.from); - const to = parseInt(req.params.to); - const includeDeleted = req.query.includeDeleted === 'true'; - - if (isNaN(from) || isNaN(to) || from < 0 || to < from) { - return res.status(400).json({ - error: 'Invalid pagination parameters. From and to must be valid numbers with from <= to.' - }); - } - - const limit = to - from + 1; - if (limit > 100) { - return res.status(400).json({ - error: 'Page size too large. Maximum 100 records per request.' - }); - } - - logRequest('Admin paginated users endpoint accessed', req, res, { from, to, includeDeleted }); - - const result = await container.getUsersByPageQueryHandler.execute({ - from, - to, - includeDeleted - }); - - const response = { - users: result.users, - pagination: { - from, - to, - returned: result.users.length, - totalCount: result.totalCount, - includeDeleted - } - }; - - logRequest('Admin users retrieved successfully', req, res, { - returnedUsers: result.users.length, - totalCount: result.totalCount, - from, - to, - includeDeleted - }); - - return res.status(200).json(response); - } catch (error: any) { - logError('Error in admin get users endpoint', error, req, res); - return res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Get user by ID including soft-deleted ones -router.get('/users/:userId', - adminRequired, - ValidationMiddleware.validateUUIDFormat(['userId']), - async (req: Request, res: Response) => { - try { - const targetUserId = req.params.userId; - const includeDeleted = req.query.includeDeleted === 'true'; - - logRequest('Admin get user by id endpoint accessed', req, res, { targetUserId, includeDeleted }); - - const user = includeDeleted - ? await container.userRepository.findByIdIncludingDeleted(targetUserId) - : await container.userRepository.findById(targetUserId); - - if (!user) { - logWarning('User not found', { targetUserId, includeDeleted }, req, res); - return res.status(404).json({ error: 'User not found' }); - } - - logRequest('Admin user retrieved successfully', req, res, { - targetUserId, - username: user.username, - includeDeleted - }); - - res.json(user); - } catch (error) { - logError('Admin get user by id endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Search users including soft-deleted ones -router.get('/users/search/:searchTerm', - adminRequired, - ValidationMiddleware.validateStringLength({ searchTerm: { min: 2, max: 100 } }), - async (req: Request, res: Response) => { - try { - const { searchTerm } = req.params; - const includeDeleted = req.query.includeDeleted === 'true'; - - logRequest('Admin search users endpoint accessed', req, res, { searchTerm, includeDeleted }); - - const users = includeDeleted - ? await container.userRepository.searchIncludingDeleted(searchTerm) - : await container.userRepository.search(searchTerm); - - logRequest('Admin user search completed', req, res, { - searchTerm, - resultCount: Array.isArray(users) ? users.length : (users.totalCount || 0), - includeDeleted - }); - - res.json(users); - } catch (error) { - logError('Admin search users endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Update any user (admin only) -router.patch('/users/:userId', - adminRequired, - ValidationMiddleware.validateUUIDFormat(['userId']), - async (req: Request, res: Response) => { - try { - const targetUserId = req.params.userId; - const adminUserId = (req as any).user.userId; - - logRequest('Admin update user endpoint accessed', req, res, { - adminUserId, - targetUserId, - fieldsToUpdate: Object.keys(req.body) - }); - - const result = await container.updateUserCommandHandler.execute({ id: targetUserId, ...req.body }); - - if (!result) { - return res.status(404).json({ error: 'User not found' }); - } - - logRequest('User updated by admin', req, res, { - adminUserId, - targetUserId, - username: result.username - }); - - res.json(result); - - } catch (error) { - logError('Admin update user endpoint error', error as Error, req, res); - - if (error instanceof Error) { - if (error.message.includes('already exists')) { - return res.status(409).json({ error: error.message }); - } - if (error.message.includes('validation')) { - return res.status(400).json({ error: error.message }); - } - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Activate user (admin only) -router.post('/users/:userId/activate', - adminRequired, - ValidationMiddleware.validateUUIDFormat(['userId']), - async (req: Request, res: Response) => { - try { - const targetUserId = req.params.userId; - const adminUserId = (req as any).user.userId; - - logRequest('Admin activate user endpoint accessed', req, res, { adminUserId, targetUserId }); - - const result = await container.activateUserCommandHandler.execute({ id: targetUserId }); - - if (!result) { - return res.status(404).json({ error: 'User not found' }); - } - - logAuth('User activated by admin', targetUserId, { adminUserId }, req, res); - res.json({ message: 'User activated successfully', user: result }); - - } catch (error) { - logError('Admin activate user endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Deactivate user (admin only) -router.post('/users/:userId/deactivate', - adminRequired, - ValidationMiddleware.validateUUIDFormat(['userId']), - async (req: Request, res: Response) => { - try { - const targetUserId = req.params.userId; - const adminUserId = (req as any).user.userId; - - logRequest('Deactivate user endpoint accessed', req, res, { adminUserId, targetUserId }); - - const result = await container.deactivateUserCommandHandler.execute({ id: targetUserId }); - - if (!result) { - return res.status(404).json({ error: 'User not found' }); - } - - logAuth('User deactivated by admin', targetUserId, { adminUserId }, req, res); - res.json({ message: 'User deactivated successfully', user: result }); - - } catch (error) { - logError('Deactivate user endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Delete user (admin only) -router.delete('/users/:userId', - adminRequired, - ValidationMiddleware.validateUUIDFormat(['userId']), - async (req: Request, res: Response) => { - try { - const targetUserId = req.params.userId; - const adminUserId = (req as any).user.userId; - const softDelete = req.query.soft === 'true' || req.query.soft === undefined; - - logRequest('Delete user endpoint accessed', req, res, { adminUserId, targetUserId, softDelete }); - - const result = await container.deleteUserCommandHandler.execute({ id: targetUserId, soft: softDelete }); - - if (!result) { - return res.status(404).json({ error: 'User not found' }); - } - - logAuth('User deleted by admin', targetUserId, { adminUserId }, req, res); - res.json({ message: 'User deleted successfully' }); - - } catch (error) { - logError('Delete user endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// ============================================================================= -// DECK MANAGEMENT ROUTES -// ============================================================================= - -// Get decks by page (admin only) - RECOMMENDED -router.get('/decks/page/:from/:to', adminRequired, async (req: Request, res: Response) => { - try { - const from = parseInt(req.params.from); - const to = parseInt(req.params.to); - const includeDeleted = req.query.includeDeleted === 'true'; - - if (isNaN(from) || isNaN(to) || from < 0 || to < from) { - return res.status(400).json({ error: 'Invalid page parameters. "from" and "to" must be valid numbers with to >= from >= 0' }); - } - - logRequest('Admin get decks by page endpoint accessed', req, res, { from, to, includeDeleted }); - - // For admin, we need to pass admin context to get unrestricted decks - const adminUserId = (req as any).user.userId; - const result = await container.getDecksByPageQueryHandler.execute({ - userId: adminUserId, - userOrgId: undefined, - isAdmin: true, - from, - to, - includeDeleted - }); - - logRequest('Admin decks page retrieved successfully', req, res, { - from, - to, - count: result.decks.length, - total: result.totalCount, - includeDeleted - }); - - res.json(result); - } catch (error) { - logError('Admin get decks by page endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Get deck by ID including soft-deleted ones -router.get('/decks/:id', adminRequired, async (req: Request, res: Response) => { - try { - const { id } = req.params; - const includeDeleted = req.query.includeDeleted === 'true'; - - logRequest('Admin get deck by id endpoint accessed', req, res, { deckId: id, includeDeleted }); - - const deck = includeDeleted - ? await container.deckRepository.findByIdIncludingDeleted(id) - : await container.deckRepository.findById(id); - - if (!deck) { - logWarning('Deck not found', { deckId: id, includeDeleted }, req, res); - return res.status(404).json({ error: 'Deck not found' }); - } - - logRequest('Admin deck retrieved successfully', req, res, { deckId: id, includeDeleted }); - res.json(deck); - } catch (error) { - logError('Admin get deck by id endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Search decks including soft-deleted ones -router.get('/decks/search/:searchTerm', adminRequired, async (req: Request, res: Response) => { - try { - const { searchTerm } = req.params; - const includeDeleted = req.query.includeDeleted === 'true'; - - logRequest('Admin search decks endpoint accessed', req, res, { searchTerm, includeDeleted }); - - const decks = includeDeleted - ? await container.deckRepository.searchIncludingDeleted(searchTerm) - : await container.deckRepository.search(searchTerm); - - logRequest('Admin deck search completed', req, res, { - searchTerm, - resultCount: Array.isArray(decks) ? decks.length : (decks.totalCount || 0), - includeDeleted - }); - - res.json(decks); - } catch (error) { - logError('Admin search decks endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -//modify deck (admin only) -router.patch('/decks/:id', adminRequired, async (req: Request, res: Response) => { - try { - const deckId = req.params.id; - const adminUserId = (req as any).user.userId; - logRequest('Admin update deck endpoint accessed', req, res, { deckId, adminUserId, updateFields: Object.keys(req.body) }); - const result = await container.updateDeckCommandHandler.execute({ id: deckId, userstate: 1 , ...req.body}); - logRequest('Deck updated successfully by admin', req, res, { deckId, adminUserId }); - res.json(result); - } catch (error) { - logError('Admin update deck endpoint error', error as Error, req, res); - if (error instanceof Error && error.message.includes('not found')) { - return res.status(404).json({ error: `Deck not found` }); - } - if (error instanceof Error && (error.message.includes('duplicate') || error.message.includes('unique constraint'))) { - return res.status(409).json({ error: 'Deck with this name already exists' }); - } - if (error instanceof Error && error.message.includes('validation')) { - return res.status(400).json({ error: 'Invalid input data', details: error.message }); - } - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Hard delete deck (admin only) -router.delete('/decks/:id/hard', adminRequired, async (req: Request, res: Response) => { - try { - const adminUserId = (req as any).user.userId; - const deckId = req.params.id; - logRequest('Admin hard delete deck endpoint accessed', req, res, { deckId }); - - const result = await container.deleteDeckCommandHandler.execute({ userid: adminUserId, authLevel: 1, id: deckId, soft: false }); - - logRequest('Admin deck hard delete successful', req, res, { deckId, success: result }); - res.json({ success: result }); - } catch (error) { - logError('Admin hard delete deck endpoint error', error as Error, req, res); - - if (error instanceof Error && error.message.includes('not found')) { - return res.status(404).json({ error: 'Deck not found' }); - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// ============================================================================= -// ORGANIZATION MANAGEMENT ROUTES -// ============================================================================= - -// Create organization (admin only) -router.post('/organizations', adminRequired, async (req: Request, res: Response) => { - try { - const adminUserId = (req as any).user.userId; - logRequest('Admin create organization endpoint accessed', req, res, { name: req.body.name, adminUserId }); - - const result = await container.createOrganizationCommandHandler.execute(req.body); - - AdminAuditService.logAdminAction('CREATE_ORGANIZATION', adminUserId, { - targetType: 'organization', - targetId: result.id, - operation: 'create', - changes: req.body - }, req, res); - - logRequest('Admin organization created successfully', req, res, { organizationId: result.id, name: req.body.name, adminUserId }); - res.json(result); - } catch (error) { - logError('Admin create organization endpoint error', error as Error, req, res); - - if (error instanceof Error && (error.message.includes('duplicate') || error.message.includes('unique constraint'))) { - return res.status(409).json({ error: 'Organization with this name already exists' }); - } - - if (error instanceof Error && error.message.includes('validation')) { - return res.status(400).json({ error: 'Invalid input data', details: error.message }); - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Update organization (admin only) - NEW ENDPOINT -router.patch('/organizations/:id', adminRequired, async (req: Request, res: Response) => { - try { - const organizationId = req.params.id; - const adminUserId = (req as any).user.userId; - - logRequest('Admin update organization endpoint accessed', req, res, { - adminUserId, - organizationId, - fieldsToUpdate: Object.keys(req.body) - }); - - const result = await container.updateOrganizationCommandHandler.execute({ - id: organizationId, - ...req.body - }); - - if (!result) { - return res.status(404).json({ error: 'Organization not found' }); - } - - AdminAuditService.logAdminAction('UPDATE_ORGANIZATION', adminUserId, { - targetType: 'organization', - targetId: organizationId, - operation: 'update', - changes: req.body, - sensitive: req.body.maxOrganizationalDecks !== undefined - }, req, res); - - logRequest('Organization updated by admin', req, res, { - adminUserId, - organizationId, - organizationName: result.name - }); - - res.json(result); - - } catch (error) { - logError('Admin update organization endpoint error', error as Error, req, res); - - if (error instanceof Error) { - if (error.message.includes('already exists')) { - return res.status(409).json({ error: error.message }); - } - if (error.message.includes('validation')) { - return res.status(400).json({ error: error.message }); - } - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Get organizations by page (admin only) - RECOMMENDED -router.get('/organizations/page/:from/:to', adminRequired, async (req: Request, res: Response) => { - try { - const from = parseInt(req.params.from); - const to = parseInt(req.params.to); - const includeDeleted = req.query.includeDeleted === 'true'; - - if (isNaN(from) || isNaN(to) || from < 0 || to < from) { - return res.status(400).json({ error: 'Invalid page parameters. "from" and "to" must be valid numbers with to >= from >= 0' }); - } - - logRequest('Admin get organizations by page endpoint accessed', req, res, { from, to, includeDeleted }); - - const result = await container.getOrganizationsByPageQueryHandler.execute({ - from, - to, - includeDeleted - }); - - logRequest('Admin organizations page retrieved successfully', req, res, { - from, - to, - count: result.organizations.length, - total: result.totalCount, - includeDeleted - }); - - res.json(result); - } catch (error) { - logError('Admin get organizations by page endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Get organization by ID including soft-deleted ones -router.get('/organizations/:id', adminRequired, async (req: Request, res: Response) => { - try { - const organizationId = req.params.id; - const includeDeleted = req.query.includeDeleted === 'true'; - - logRequest('Admin get organization by id endpoint accessed', req, res, { organizationId, includeDeleted }); - - const organization = includeDeleted - ? await container.organizationRepository.findByIdIncludingDeleted(organizationId) - : await container.organizationRepository.findById(organizationId); - - if (!organization) { - logWarning('Organization not found', { organizationId, includeDeleted }, req, res); - return res.status(404).json({ error: 'Organization not found' }); - } - - logRequest('Admin organization retrieved successfully', req, res, { organizationId, includeDeleted }); - res.json(organization); - } catch (error) { - logError('Admin get organization by id endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Search organizations including soft-deleted ones -router.get('/organizations/search/:searchTerm', adminRequired, async (req: Request, res: Response) => { - try { - const { searchTerm } = req.params; - const includeDeleted = req.query.includeDeleted === 'true'; - - logRequest('Admin search organizations endpoint accessed', req, res, { searchTerm, includeDeleted }); - - const organizations = includeDeleted - ? await container.organizationRepository.searchIncludingDeleted(searchTerm) - : await container.organizationRepository.search(searchTerm); - - logRequest('Admin organization search completed', req, res, { - searchTerm, - resultCount: Array.isArray(organizations) ? organizations.length : (organizations.totalCount || 0), - includeDeleted - }); - - res.json(organizations); - } catch (error) { - logError('Admin search organizations endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Soft delete organization (admin only) -router.delete('/organizations/:id', adminRequired, async (req: Request, res: Response) => { - try { - const organizationId = req.params.id; - logRequest('Admin soft delete organization endpoint accessed', req, res, { organizationId }); - - const result = await container.deleteOrganizationCommandHandler.execute({ id: organizationId, soft: true }); - - logRequest('Admin organization soft delete successful', req, res, { organizationId, success: result }); - res.json({ success: result }); - } catch (error) { - logError('Admin soft delete organization endpoint error', error as Error, req, res); - - if (error instanceof Error && error.message.includes('not found')) { - return res.status(404).json({ error: 'Organization not found' }); - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Hard delete organization (admin only) -router.delete('/organizations/:id/hard', adminRequired, async (req: Request, res: Response) => { - try { - const organizationId = req.params.id; - logRequest('Admin hard delete organization endpoint accessed', req, res, { organizationId }); - - const result = await container.deleteOrganizationCommandHandler.execute({ id: organizationId, soft: false }); - - logRequest('Admin organization hard delete successful', req, res, { organizationId, success: result }); - res.json({ success: result }); - } catch (error) { - logError('Admin hard delete organization endpoint error', error as Error, req, res); - - if (error instanceof Error && error.message.includes('not found')) { - return res.status(404).json({ error: 'Organization not found' }); - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// ============================================================================= -// CHAT MANAGEMENT ROUTES -// ============================================================================= - -// Get chats with pagination (RECOMMENDED) -router.get('/chats/page/:from/:to', adminRequired, async (req: Request, res: Response) => { - try { - const from = parseInt(req.params.from); - const to = parseInt(req.params.to); - const includeDeleted = req.query.includeDeleted === 'true'; - - if (isNaN(from) || isNaN(to) || from < 0 || to < from) { - return res.status(400).json({ - error: 'Invalid pagination parameters. From and to must be valid numbers with from <= to.' - }); - } - - const limit = to - from + 1; - if (limit > 100) { - return res.status(400).json({ - error: 'Page size too large. Maximum 100 records per request.' - }); - } - - logRequest('Admin paginated chats endpoint accessed', req, res, { from, to, includeDeleted }); - - const result = await container.getChatsByPageQueryHandler.execute({ - from, - to, - includeDeleted - }); - - const response = { - chats: result.chats, - pagination: { - from, - to, - returned: result.chats.length, - totalCount: result.totalCount, - includeDeleted - } - }; - - logRequest('Admin chats retrieved successfully', req, res, { - returnedChats: result.chats.length, - totalCount: result.totalCount, - from, - to, - includeDeleted - }); - - return res.status(200).json(response); - } catch (error: any) { - logError('Error in admin get chats endpoint', error, req, res); - return res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Get chat by ID including soft-deleted ones -router.get('/chats/:id', adminRequired, async (req: Request, res: Response) => { - try { - const { id } = req.params; - const includeDeleted = req.query.includeDeleted === 'true'; - - logRequest('Admin get chat by id endpoint accessed', req, res, { chatId: id, includeDeleted }); - - const chat = includeDeleted - ? await container.chatRepository.findByIdIncludingDeleted(id) - : await container.chatRepository.findById(id); - - if (!chat) { - logWarning('Chat not found', { chatId: id, includeDeleted }, req, res); - return res.status(404).json({ error: 'Chat not found' }); - } - - logRequest('Admin chat retrieved successfully', req, res, { chatId: id, includeDeleted }); - res.json(chat); - } catch (error) { - logError('Admin get chat by id endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// ============================================================================= -// CONTACT MANAGEMENT ROUTES -// ============================================================================= - -// Get contacts by page (admin only) - RECOMMENDED (already exists, enhanced) -router.get('/contacts/page/:from/:to', adminRequired, async (req: Request, res: Response) => { - try { - const from = parseInt(req.params.from); - const to = parseInt(req.params.to); - const includeDeleted = req.query.includeDeleted === 'true'; - - if (isNaN(from) || isNaN(to) || from < 0 || to < from) { - return res.status(400).json({ error: 'Invalid page parameters. "from" and "to" must be valid numbers with to >= from >= 0' }); - } - - logRequest('Admin get contacts by page endpoint accessed', req, res, { from, to, includeDeleted }); - - const result = includeDeleted - ? await container.contactRepository.findByPageIncludingDeleted(from, to) - : await container.contactRepository.findByPage(from, to); - - logRequest('Admin contacts page retrieved successfully', req, res, { - from, - to, - count: result.contacts.length, - total: result.totalCount, - includeDeleted - }); - - res.json(result); - } catch (error) { - logError('Admin get contacts by page endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Get contact by ID (admin only) -router.get('/contacts/:id', adminRequired, async (req: Request, res: Response) => { - try { - const contactId = req.params.id; - const includeDeleted = req.query.includeDeleted === 'true'; - - logRequest('Admin get contact by ID endpoint accessed', req, res, { contactId, includeDeleted }); - - const result = includeDeleted - ? await container.contactRepository.findByIdIncludingDeleted(contactId) - : await container.getContactByIdQueryHandler.execute({ id: contactId }); - - if (!result) { - logRequest('Contact not found', req, res, { contactId, includeDeleted }); - return res.status(404).json({ error: 'Contact not found' }); - } - - logRequest('Admin contact retrieved successfully', req, res, { contactId, includeDeleted }); - res.json(result); - } catch (error) { - logError('Admin get contact by ID endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Search contacts including soft-deleted ones (admin only) -router.get('/contacts/search/:searchTerm', adminRequired, async (req: Request, res: Response) => { - try { - const { searchTerm } = req.params; - const includeDeleted = req.query.includeDeleted === 'true'; - - logRequest('Admin search contacts endpoint accessed', req, res, { searchTerm, includeDeleted }); - - const contacts = includeDeleted - ? await container.contactRepository.searchIncludingDeleted(searchTerm) - : await container.contactRepository.search(searchTerm); - - logRequest('Admin contact search completed', req, res, { - searchTerm, - resultCount: contacts.length, - includeDeleted - }); - - res.json(contacts); - } catch (error) { - logError('Admin search contacts endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Respond to contact (admin only) -router.put('/contacts/:id/respond', adminRequired, async (req: Request, res: Response) => { - try { - const contactId = req.params.id; - const adminUserId = (req as any).user.userId; - const { adminResponse, sendEmail, language } = req.body; - - if (!adminResponse) { - return res.status(400).json({ error: 'Admin response is required' }); - } - - // Determine language from body, headers, or default to English - let selectedLanguage = language; - if (!selectedLanguage) { - // Try to get language from Accept-Language header - const acceptLanguage = req.headers['accept-language'] as string; - // Try to get language from custom headers (common frontend patterns) - const regionHeader = req.headers['x-region'] as string; - const languageHeader = req.headers['x-language'] as string; - const localeHeader = req.headers['x-locale'] as string; - - selectedLanguage = languageHeader || - localeHeader || - regionHeader || - extractLanguageFromAcceptHeader(acceptLanguage) || - 'en'; - } - - // Validate and normalize language parameter - if (!['en', 'hu', 'de'].includes(selectedLanguage.toLowerCase())) { - selectedLanguage = 'en'; // Fallback to English for unsupported languages - } else { - selectedLanguage = selectedLanguage.toLowerCase(); - } - - logRequest('Admin respond to contact endpoint accessed', req, res, { - contactId, - adminUserId, - sendEmail, - language: selectedLanguage, - headerLanguage: req.headers['accept-language'] || req.headers['x-language'] || 'none' - }); - - // Update contact with response - const result = await container.updateContactCommandHandler.execute({ - id: contactId, - adminResponse, - respondedBy: adminUserId - }); - - if (!result) { - logWarning('Contact not found for response', { contactId }, req, res); - return res.status(404).json({ error: 'Contact not found' }); - } - - // Send email if requested - let emailSent = false; - let emailError = null; - - if (sendEmail === true && adminResponse) { - try { - await container.contactEmailService.sendResponse({ - to: result.email, - message: adminResponse, - contactId: contactId, - adminUserId: adminUserId, - contactName: result.name, - contactType: result.type, - originalMessage: result.txt, - language: selectedLanguage - }); - emailSent = true; - - logRequest('Contact response email sent successfully', req, res, { - contactId, - recipientEmail: result.email, - language: selectedLanguage - }); - } catch (emailErr) { - emailError = emailErr instanceof Error ? emailErr.message : 'Email sending failed'; - logError('Contact response email failed', emailErr as Error, req, res); - } - } - - AdminAuditService.logAdminAction('RESPOND_TO_CONTACT', adminUserId, { - targetType: 'contact', - targetId: contactId, - operation: 'update', - changes: { adminResponse, sendEmail, language: selectedLanguage }, - metadata: { emailSent, emailError } - }, req, res); - - logRequest('Admin contact response saved successfully', req, res, { - contactId, - sendEmail, - emailSent, - language: selectedLanguage - }); - - res.json({ - success: true, - message: 'Response saved successfully', - contact: result, - emailSent, - emailError: emailSent ? null : emailError - }); - } catch (error) { - logError('Admin respond to contact endpoint error', error as Error, req, res); - - if (error instanceof Error && error.message.includes('not found')) { - return res.status(404).json({ error: 'Contact not found' }); - } - - if (error instanceof Error && error.message.includes('validation')) { - return res.status(400).json({ error: 'Invalid input data', details: error.message }); - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Resend contact email (admin only) - NEW ENDPOINT -router.post('/contacts/:id/resend-email', adminRequired, async (req: Request, res: Response) => { - try { - const contactId = req.params.id; - const adminUserId = (req as any).user.userId; - const { language } = req.body; - - logRequest('Admin resend contact email endpoint accessed', req, res, { - contactId, - adminUserId, - language - }); - - // Get contact details - const contact = await container.getContactByIdQueryHandler.execute({ id: contactId }); - - if (!contact) { - return res.status(404).json({ error: 'Contact not found' }); - } - - if (!contact.adminResponse) { - return res.status(400).json({ error: 'No admin response found to resend' }); - } - - const selectedLanguage = language || 'en'; - - try { - await container.contactEmailService.sendResponse({ - to: contact.email, - message: contact.adminResponse, - contactId: contactId, - adminUserId: adminUserId, - contactName: contact.name, - contactType: contact.type, - originalMessage: contact.txt, - language: selectedLanguage - }); - - AdminAuditService.logAdminAction('RESEND_CONTACT_EMAIL', adminUserId, { - targetType: 'contact', - targetId: contactId, - operation: 'create', - metadata: { language: selectedLanguage, action: 'resend' } - }, req, res); - - logRequest('Contact email resent successfully', req, res, { - contactId, - recipientEmail: contact.email, - language: selectedLanguage - }); - - res.json({ - success: true, - message: 'Email resent successfully' - }); - } catch (emailErr) { - logError('Contact email resend failed', emailErr as Error, req, res); - res.status(500).json({ - error: 'Failed to resend email', - details: emailErr instanceof Error ? emailErr.message : 'Unknown error' - }); - } - } catch (error) { - logError('Admin resend contact email endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Soft delete contact (admin only) - NEW ENDPOINT -router.delete('/contacts/:id', adminRequired, async (req: Request, res: Response) => { - try { - const contactId = req.params.id; - const adminUserId = (req as any).user.userId; - - logRequest('Admin soft delete contact endpoint accessed', req, res, { contactId, adminUserId }); - - const result = await container.deleteContactCommandHandler.execute({ - id: contactId, - hard: false - }); - - AdminAuditService.logAdminAction('SOFT_DELETE_CONTACT', adminUserId, { - targetType: 'contact', - targetId: contactId, - operation: 'update' - }, req, res); - - logAuth('Contact soft deleted by admin', contactId, { adminUserId }, req, res); - res.json({ success: result }); - } catch (error) { - logError('Admin soft delete contact endpoint error', error as Error, req, res); - - if (error instanceof Error && error.message.includes('not found')) { - return res.status(404).json({ error: 'Contact not found' }); - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Hard delete contact (admin only) - NEW ENDPOINT -router.delete('/contacts/:id/hard', adminRequired, async (req: Request, res: Response) => { - try { - const contactId = req.params.id; - const adminUserId = (req as any).user.userId; - - logRequest('Admin hard delete contact endpoint accessed', req, res, { contactId, adminUserId }); - - const result = await container.deleteContactCommandHandler.execute({ - id: contactId, - hard: true - }); - - AdminAuditService.logAdminAction('HARD_DELETE_CONTACT', adminUserId, { - targetType: 'contact', - targetId: contactId, - operation: 'delete', - sensitive: true - }, req, res); - - logAuth('Contact hard deleted by admin', contactId, { adminUserId }, req, res); - res.json({ success: result }); - } catch (error) { - logError('Admin hard delete contact endpoint error', error as Error, req, res); - - if (error instanceof Error && error.message.includes('not found')) { - return res.status(404).json({ error: 'Contact not found' }); - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// ============================================================================= -// DECK IMPORT/EXPORT ROUTES (ADMIN) -// ============================================================================= - -// Import deck from JSON file (unencrypted, admin only) -router.post('/decks/import', adminRequired, upload.single('file'), async (req: Request, res: Response) => { - try { - if (!req.file) { - return res.status(400).json({ error: 'No file uploaded' }); - } - - const userId = (req as any).user.userId; - const fileContent = req.file!.buffer.toString('utf-8'); - - logRequest('Admin deck import from JSON endpoint accessed', req, res, { fileName: req.file.originalname }); - - let jsonData; - try { - jsonData = JSON.parse(fileContent); - } catch (parseError) { - return res.status(400).json({ error: 'Invalid JSON format' }); - } - - // For admin import, we need to specify both target user and admin user - // Let's assume the deck will be owned by the admin user doing the import - const result = await container.deckImportExportService.adminImportFromJson(jsonData, userId, userId); - - logRequest('Admin deck import successful', req, res, { deckId: result.id, fileName: req.file.originalname }); - - res.json({ - success: true, - message: 'Deck imported successfully', - deckId: result.id - }); - } catch (error) { - logError('Admin deck import from JSON error', error as Error, req, res); - if (error instanceof Error && error.message.includes('Invalid')) { - res.status(400).json({ error: 'Invalid deck data structure' }); - } else { - res.status(500).json({ error: 'Internal server error' }); - } - } -}); - -// Export deck as JSON (unencrypted, admin only) -router.get('/decks/:deckId/export', adminRequired, async (req: Request, res: Response) => { - try { - const { deckId } = req.params; - - logRequest('Admin deck export as JSON endpoint accessed', req, res, { deckId }); - - const deck = await container.deckRepository.findById(deckId); - if (!deck) { - logWarning('Deck not found for export', { deckId }, req, res); - return res.status(404).json({ error: 'Deck not found' }); - } - - logRequest('Admin deck export successful', req, res, { deckId, deckName: deck.name }); - - // Return deck as JSON for admin export - res.setHeader('Content-Type', 'application/json'); - res.setHeader('Content-Disposition', `attachment; filename="${deck.name || 'deck'}.json"`); - res.json(deck); - } catch (error) { - logError('Admin deck export as JSON error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -export default router; diff --git a/SerpentRace_Backend/src/Api/routers/chatRouter.ts b/SerpentRace_Backend/src/Api/routers/chatRouter.ts deleted file mode 100644 index 140d6791..00000000 --- a/SerpentRace_Backend/src/Api/routers/chatRouter.ts +++ /dev/null @@ -1,287 +0,0 @@ -import express from 'express'; -import { authRequired } from '../../Application/Services/AuthMiddleware'; -import { container } from '../../Application/Services/DIContainer'; -import { ErrorResponseService } from '../../Application/Services/ErrorResponseService'; -import { ValidationMiddleware } from '../../Application/Services/ValidationMiddleware'; -import { logAuth, logError, logRequest, logWarning } from '../../Application/Services/Logger'; - -const chatRouter = express.Router(); - -// Get user's chats -chatRouter.get('/user-chats', authRequired, async (req, res) => { - try { - const userId = (req as any).user.userId; - const includeArchived = req.query.includeArchived === 'true'; - - logRequest('Get user chats endpoint accessed', req, res, { userId, includeArchived }); - - const chats = await container.getUserChatsQueryHandler.execute({ - userId, - includeArchived - }); - - logRequest('User chats retrieved successfully', req, res, { - userId, - chatCount: chats.length - }); - - res.json(chats); - } catch (error) { - logError('Get user chats endpoint error', error as Error, req, res); - return ErrorResponseService.sendInternalServerError(res); - } -}); - -// Get chat history -chatRouter.get('/history/:chatId', - authRequired, - ValidationMiddleware.validateUUIDFormat(['chatId']), - async (req, res) => { - try { - const userId = (req as any).user.userId; - const chatId = req.params.chatId; - - logRequest('Get chat history endpoint accessed', req, res, { userId, chatId }); - - const history = await container.getChatHistoryQueryHandler.execute({ - chatId, - userId - }); - - if (!history) { - logWarning('Chat history not found or unauthorized', { userId, chatId }, req, res); - return ErrorResponseService.sendNotFound(res, 'Chat not found or unauthorized'); - } - - logRequest('Chat history retrieved successfully', req, res, { - userId, - chatId, - messageCount: history.messages.length, - isArchived: history.isArchived - }); - - res.json(history); - } catch (error) { - logError('Get chat history endpoint error', error as Error, req, res); - return ErrorResponseService.sendInternalServerError(res); - } -}); - -// Create new chat (direct/group) -chatRouter.post('/create', - authRequired, - ValidationMiddleware.combine([ - ValidationMiddleware.validateRequiredFields(['type', 'userIds']), - ValidationMiddleware.validateAllowedValues({ type: ['direct', 'group'] }), - ValidationMiddleware.validateNonEmptyArrays(['userIds']) - ]), - async (req, res) => { - try { - const userId = (req as any).user.userId; - const { type, name, userIds } = req.body; - - logRequest('Create chat endpoint accessed', req, res, { - userId, - type, - targetUserCount: userIds?.length || 0 - }); - - if (type === 'group' && !name?.trim()) { - return ErrorResponseService.sendBadRequest(res, 'Group name is required'); - } - - const chat = await container.createChatCommandHandler.execute({ - type, - name: name?.trim(), - createdBy: userId, - userIds - }); - - if (!chat) { - return ErrorResponseService.sendBadRequest(res, 'Failed to create chat'); - } - - logRequest('Chat created successfully', req, res, { - userId, - chatId: chat.id, - chatType: chat.type - }); - - res.json({ - id: chat.id, - type: chat.type, - name: chat.name, - users: chat.users, - messages: chat.messages - }); - } catch (error) { - logError('Create chat endpoint error', error as Error, req, res); - - if (error instanceof Error) { - if (error.message.includes('Premium subscription required')) { - return ErrorResponseService.sendForbidden(res, 'Premium subscription required to create groups'); - } - if (error.message.includes('not found')) { - return ErrorResponseService.sendNotFound(res, 'One or more users not found'); - } - } - - return ErrorResponseService.sendInternalServerError(res); - } -}); - -// Send message (REST endpoint - mainly for testing, real messaging is via WebSocket) -chatRouter.post('/message', - authRequired, - ValidationMiddleware.combine([ - ValidationMiddleware.validateRequiredFields(['chatId', 'message']), - ValidationMiddleware.validateUUIDFormat(['chatId']), - ValidationMiddleware.validateStringLength({ message: { min: 1, max: 2000 } }) - ]), - async (req, res) => { - try { - const userId = (req as any).user.userId; - const { chatId, message } = req.body; - - logRequest('Send message endpoint accessed', req, res, { - userId, - chatId, - messageLength: message?.length || 0 - }); - - const sentMessage = await container.sendMessageCommandHandler.execute({ - chatId, - userId, - message - }); - - if (!sentMessage) { - return ErrorResponseService.sendBadRequest(res, 'Failed to send message'); - } - - logRequest('Message sent successfully', req, res, { - userId, - chatId, - messageId: sentMessage.id - }); - - res.json(sentMessage); - } catch (error) { - logError('Send message endpoint error', error as Error, req, res); - - if (error instanceof Error) { - if (error.message.includes('Chat not found')) { - return ErrorResponseService.sendNotFound(res, 'Chat not found'); - } - if (error.message.includes('not a member')) { - return ErrorResponseService.sendForbidden(res, 'Not authorized to send messages to this chat'); - } - if (error.message.includes('non-empty string')) { - return ErrorResponseService.sendBadRequest(res, 'Message must be a non-empty string'); - } - } - - return ErrorResponseService.sendInternalServerError(res); - } -}); - -// Archive chat manually -chatRouter.post('/archive/:chatId', - authRequired, - ValidationMiddleware.validateUUIDFormat(['chatId']), - async (req, res) => { - try { - const userId = (req as any).user.userId; - const chatId = req.params.chatId; - - logRequest('Archive chat endpoint accessed', req, res, { userId, chatId }); - - // Check if user has access to this chat - const chat = await container.chatRepository.findById(chatId); - if (!chat) { - return ErrorResponseService.sendNotFound(res, 'Chat not found'); - } - - if (!chat.users.includes(userId)) { - return ErrorResponseService.sendForbidden(res, 'Not authorized to archive this chat'); - } - - const success = await container.archiveChatCommandHandler.execute({ chatId }); - - if (!success) { - return ErrorResponseService.sendBadRequest(res, 'Failed to archive chat'); - } - - logRequest('Chat archived successfully', req, res, { userId, chatId }); - res.json({ success: true, message: 'Chat archived successfully' }); - - } catch (error) { - logError('Archive chat endpoint error', error as Error, req, res); - return ErrorResponseService.sendInternalServerError(res); - } -}); - -// Restore chat from archive -chatRouter.post('/restore/:chatId', - authRequired, - ValidationMiddleware.validateUUIDFormat(['chatId']), - async (req, res) => { - try { - const userId = (req as any).user.userId; - const chatId = req.params.chatId; - - logRequest('Restore chat endpoint accessed', req, res, { userId, chatId }); - - // Check if user has access to this archived chat - const archive = await container.chatArchiveRepository.findByChatId(chatId); - const userArchive = archive.find((a: any) => a.participants.includes(userId)); - - if (!userArchive) { - return ErrorResponseService.sendNotFound(res, 'Archived chat not found or unauthorized'); - } - - const success = await container.restoreChatCommandHandler.execute({ chatId }); - - if (!success) { - return ErrorResponseService.sendBadRequest(res, 'Failed to restore chat (game chats cannot be restored)'); - } - - logRequest('Chat restored successfully', req, res, { userId, chatId }); - res.json({ success: true, message: 'Chat restored successfully' }); - - } catch (error) { - logError('Restore chat endpoint error', error as Error, req, res); - return ErrorResponseService.sendInternalServerError(res); - } -}); - -// Get archived chats for a game -chatRouter.get('/archived/game/:gameId', - authRequired, - ValidationMiddleware.validateUUIDFormat(['gameId']), - async (req, res) => { - try { - const userId = (req as any).user.userId; - const gameId = req.params.gameId; - - logRequest('Get archived game chats endpoint accessed', req, res, { userId, gameId }); - - const archivedChats = await container.getArchivedChatsQueryHandler.execute({ - userId, - gameId - }); - - logRequest('Archived game chats retrieved successfully', req, res, { - userId, - gameId, - chatCount: archivedChats.length - }); - - res.json(archivedChats); - } catch (error) { - logError('Get archived game chats endpoint error', error as Error, req, res); - return ErrorResponseService.sendInternalServerError(res); - } -}); - -export default chatRouter; diff --git a/SerpentRace_Backend/src/Api/routers/contactRouter.ts b/SerpentRace_Backend/src/Api/routers/contactRouter.ts deleted file mode 100644 index d7fcbb53..00000000 --- a/SerpentRace_Backend/src/Api/routers/contactRouter.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { Router } from 'express'; -import { container } from '../../Application/Services/DIContainer'; -import { logRequest, logError } from '../../Application/Services/Logger'; -import { ContactType } from '../../Domain/Contact/ContactAggregate'; - -const contactRouter = Router(); - -// Public endpoint - anyone can create a contact -contactRouter.post('/', async (req, res) => { - try { - // Get user ID if authenticated (optional) - const userId = (req as any).user?.userId || null; - - const { name, email, type, txt } = req.body; - - // Validate required fields - if (!name || !email || type === undefined || !txt) { - return res.status(400).json({ - error: 'Missing required fields: name, email, type, and txt are required' - }); - } - - // Validate type - if (!Object.values(ContactType).includes(Number(type))) { - return res.status(400).json({ - error: 'Invalid contact type. Must be one of: 0 (Bug), 1 (Problem), 2 (Question), 3 (Sales), 4 (Other)' - }); - } - - logRequest('Create contact endpoint accessed', req, res, { name, email, type, userId }); - - const result = await container.createContactCommandHandler.execute({ - name, - email, - userid: userId, - type: Number(type), - txt - }); - - logRequest('Contact created successfully', req, res, { contactId: result.id, name, email, type }); - res.status(201).json(result); - } catch (error) { - logError('Create contact endpoint error', error as Error, req, res); - - if (error instanceof Error && error.message.includes('validation')) { - return res.status(400).json({ error: 'Invalid input data', details: error.message }); - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -export default contactRouter; diff --git a/SerpentRace_Backend/src/Api/routers/deckImportExportRouter.ts b/SerpentRace_Backend/src/Api/routers/deckImportExportRouter.ts deleted file mode 100644 index cf205d6d..00000000 --- a/SerpentRace_Backend/src/Api/routers/deckImportExportRouter.ts +++ /dev/null @@ -1,124 +0,0 @@ -import express, { Request, Response } from 'express'; -import multer from 'multer'; -import { DIContainer } from '../../Application/Services/DIContainer'; -import { authRequired } from '../../Application/Services/AuthMiddleware'; -import { logRequest, logError, logWarning } from '../../Application/Services/Logger'; - -// Extend Express Request interface for file uploads -declare global { - namespace Express { - interface Request { - file?: Express.Multer.File; - } - } -} - -const router = express.Router(); -const container = DIContainer.getInstance(); - -// Configure multer for file uploads -const upload = multer({ - storage: multer.memoryStorage(), - limits: { - fileSize: 10 * 1024 * 1024, // 10MB limit - }, - fileFilter: (req: any, file: any, cb: any) => { - if (file.mimetype === 'application/json' || file.originalname.endsWith('.spr')) { - cb(null, true); - } else { - cb(new Error('Only JSON and .spr files are allowed')); - } - } -}); - -// Export deck to .spr file (encrypted) - users can only export their own decks -router.get('/export/:deckId', authRequired, async (req: Request, res: Response) => { - try { - const { deckId } = req.params; - const userId = (req as any).user.userId; - - logRequest('Export deck endpoint accessed', req, res, { deckId, userId }); - - // Check if user owns the deck - const deck = await container.deckRepository.findById(deckId); - if (!deck) { - logWarning('Deck not found for export', { deckId, userId }, req, res); - return res.status(404).json({ error: 'Deck not found' }); - } - - // Users can only export their own decks - if (deck.userid !== userId) { - logWarning('Access denied - user attempted to export deck they do not own', { - deckId, - userId, - deckOwnerId: deck.userid - }, req, res); - return res.status(403).json({ error: 'Access denied - you can only export your own decks' }); - } - - const sprData = await container.deckImportExportService.exportDeckToSpr(deckId, userId); - - res.setHeader('Content-Type', 'application/octet-stream'); - res.setHeader('Content-Disposition', `attachment; filename="${deck.name || 'deck'}.spr"`); - - logRequest('Deck exported successfully', req, res, { - deckId, - userId, - deckName: deck.name, - fileSize: sprData.length - }); - - res.send(sprData); - } catch (error) { - logError('Export deck endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Import deck from .spr file (encrypted) - imported deck will be owned by the importing user -router.post('/import', authRequired, upload.single('file'), async (req: Request, res: Response) => { - try { - const userId = (req as any).user.userId; - - logRequest('Import deck endpoint accessed', req, res, { - userId, - hasFile: !!req.file, - fileName: req.file?.originalname, - fileSize: req.file?.size - }); - - if (!req.file) { - logWarning('No file uploaded for deck import', { userId }, req, res); - return res.status(400).json({ error: 'No file uploaded' }); - } - - const fileBuffer = req.file!.buffer; - - // Import the deck and assign ownership to the current user - const result = await container.deckImportExportService.importDeckFromSpr(fileBuffer, userId); - - logRequest('Deck imported successfully', req, res, { - userId, - deckId: result.id, - deckName: result.name || 'Unknown', - fileName: req.file.originalname, - fileSize: req.file.size - }); - - res.json({ - success: true, - message: 'Deck imported successfully and added to your collection', - deckId: result.id - }); - } catch (error) { - logError('Import deck endpoint error', error as Error, req, res); - - if (error instanceof Error && error.message.includes('Invalid')) { - return res.status(400).json({ error: 'Invalid file format or corrupted data' }); - } else { - res.status(500).json({ error: 'Internal server error' }); - } - } -}); - -export default router; diff --git a/SerpentRace_Backend/src/Api/routers/deckRouter.ts b/SerpentRace_Backend/src/Api/routers/deckRouter.ts deleted file mode 100644 index 67632a33..00000000 --- a/SerpentRace_Backend/src/Api/routers/deckRouter.ts +++ /dev/null @@ -1,266 +0,0 @@ -import { Router } from 'express'; -import { authRequired } from '../../Application/Services/AuthMiddleware'; -import { container } from '../../Application/Services/DIContainer'; -import { ErrorResponseService } from '../../Application/Services/ErrorResponseService'; -import { ValidationMiddleware } from '../../Application/Services/ValidationMiddleware'; -import { GeneralSearchService } from '../../Application/Search/Generalsearch'; -import { logRequest, logError, logWarning } from '../../Application/Services/Logger'; -import { Type, CType } from '../../Domain/Deck/DeckAggregate'; - -const deckRouter = Router(); - -/** - * Helper function to convert string enum values to integer enum values - */ -function convertEnumValues(data: any): any { - const converted = { ...data }; - - // Convert Type enum - if (converted.type && typeof converted.type === 'string') { - switch (converted.type.toUpperCase()) { - case 'LUCK': - converted.type = Type.LUCK; - break; - case 'JOKER': - converted.type = Type.JOKER; - break; - case 'QUESTION': - converted.type = Type.QUESTION; - break; - default: - throw new Error('Invalid deck type. Must be LUCK, JOKER, or QUESTION'); - } - } - - // Convert CType enum - if (converted.ctype && typeof converted.ctype === 'string') { - switch (converted.ctype.toUpperCase()) { - case 'PUBLIC': - converted.ctype = CType.PUBLIC; - break; - case 'PRIVATE': - converted.ctype = CType.PRIVATE; - break; - case 'ORGANIZATION': - converted.ctype = CType.ORGANIZATION; - break; - default: - throw new Error('Invalid deck ctype. Must be PUBLIC, PRIVATE, or ORGANIZATION'); - } - } - - return converted; -} - -// Create search service that isn't in the container yet -const searchService = new GeneralSearchService(container.userRepository, container.organizationRepository, container.deckRepository); - -// Authenticated routes - Get decks with pagination (RECOMMENDED) -deckRouter.get('/page/:from/:to', authRequired, async (req, res) => { - try { - const userId = (req as any).user.userId; - const userOrgId = (req as any).user.orgId; - const isAdmin = (req as any).user.authLevel === 1; - const from = parseInt(req.params.from); - const to = parseInt(req.params.to); - - if (isNaN(from) || isNaN(to) || from < 0 || to < from) { - return res.status(400).json({ error: 'Invalid page parameters. "from" and "to" must be valid numbers with to >= from >= 0' }); - } - - logRequest('Get decks by page endpoint accessed', req, res, { - userId, - userOrgId, - isAdmin, - from, - to - }); - - // Use paginated query handler for memory efficiency - const result = await container.getDecksByPageQueryHandler.execute({ - userId, - userOrgId, - isAdmin, - from, - to - }); - - logRequest('Get decks page completed successfully', req, res, { - userId, - from, - to, - returnedCount: result.decks.length, - totalCount: result.totalCount - }); - - res.json(result); - } catch (error) { - logError('Get decks by page endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -deckRouter.post('/', authRequired, async (req, res) => { - try { - const userId = (req as any).user.userId; - logRequest('Create deck endpoint accessed', req, res, { name: req.body.name, userId }); - - // Convert string enum values to integers - const command = convertEnumValues({ - ...req.body, - userid: userId - }); - - const result = await container.createDeckCommandHandler.execute(command); - - logRequest('Deck created successfully', req, res, { deckId: result.id, name: req.body.name, userId }); - res.json(result); - } catch (error) { - logError('Create deck endpoint error', error as Error, req, res); - - // Handle enum validation errors - if (error instanceof Error && error.message.includes('Invalid deck')) { - return res.status(400).json({ error: error.message }); - } - - if (error instanceof Error && (error.message.includes('duplicate') || error.message.includes('unique constraint'))) { - return res.status(409).json({ error: 'Deck with this name already exists' }); - } - - if (error instanceof Error && error.message.includes('validation')) { - return res.status(400).json({ error: 'Invalid input data', details: error.message }); - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -deckRouter.get('/search', authRequired, async (req, res) => { - try { - const { query, limit, offset } = req.query; - logRequest('Search decks endpoint accessed', req, res, { query, limit, offset }); - - if (!query || typeof query !== 'string') { - logWarning('Deck search attempted without query', { query, hasQuery: !!query }, req, res); - return res.status(400).json({ error: 'Search query is required' }); - } - - const searchQuery = { - query: query.trim(), - limit: limit ? parseInt(limit as string) : 20, - offset: offset ? parseInt(offset as string) : 0 - }; - - // Validate pagination parameters - if (searchQuery.limit < 1 || searchQuery.limit > 100) { - logWarning('Invalid deck search limit parameter', { limit: searchQuery.limit }, req, res); - return res.status(400).json({ error: 'Limit must be between 1 and 100' }); - } - - if (searchQuery.offset < 0) { - logWarning('Invalid deck search offset parameter', { offset: searchQuery.offset }, req, res); - return res.status(400).json({ error: 'Offset must be non-negative' }); - } - - const result = await searchService.searchFromUrl(req.originalUrl, searchQuery); - - logRequest('Deck search completed successfully', req, res, { - query: searchQuery.query, - resultCount: Array.isArray(result) ? result.length : 0 - }); - res.json(result); - } catch (error) { - logError('Search decks endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -deckRouter.get('/:id', authRequired, async (req, res) => { - try { - const deckId = req.params.id; - logRequest('Get deck by id endpoint accessed', req, res, { deckId }); - - const result = await container.getDeckByIdQueryHandler.execute({ id: deckId }); - - if (!result) { - logWarning('Deck not found', { deckId }, req, res); - return res.status(404).json({ error: 'Deck not found' }); - } - - logRequest('Deck retrieved successfully', req, res, { deckId }); - res.json(result); - } catch (error) { - logError('Get deck by id endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -deckRouter.patch('/:id', authRequired, async (req, res) => { - try { - const deckId = req.params.id; - const userId = (req as any).user.userId; - const authLevel = (req as any).user.authLevel; - logRequest('Update deck endpoint accessed', req, res, { deckId, userId, updateFields: Object.keys(req.body) }); - - // Convert string enum values to integers - const updateData = convertEnumValues(req.body); - - const result = await container.updateDeckCommandHandler.execute({ userid: userId, authLevel: authLevel, id: deckId, ...updateData }); - - logRequest('Deck updated successfully', req, res, { deckId, userId }); - res.json(result); - } catch (error) { - logError('Update deck endpoint error', error as Error, req, res); - - // Handle enum validation errors - if (error instanceof Error && error.message.includes('Invalid deck')) { - return res.status(400).json({ error: error.message }); - } - - if (error instanceof Error && error.message.includes('not found')) { - return res.status(404).json({ error: 'Deck not found' }); - } - - if (error instanceof Error && (error.message.includes('duplicate') || error.message.includes('unique constraint'))) { - return res.status(409).json({ error: 'Deck with this name already exists' }); - } - - if (error instanceof Error && error.message.includes('validation')) { - return res.status(400).json({ error: 'Invalid input data', details: error.message }); - } - - if (error instanceof Error && error.message.includes('admin')) { - return res.status(403).json({ error: 'Forbidden: ' + error.message }); - } - - if (error instanceof Error && error.message.includes('admin')) { - return res.status(403).json({ error: 'Forbidden: ' + error.message }); - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -deckRouter.delete('/:id', authRequired, async (req, res) => { - try { - const deckId = req.params.id; - const userId = (req as any).user.userId; - const authLevel = (req as any).user.authLevel; - logRequest('Soft delete deck endpoint accessed', req, res, { deckId, userId }); - - const result = await container.deleteDeckCommandHandler.execute({ userid: userId, authLevel: authLevel, id: deckId, soft: true }); - - logRequest('Deck soft delete successful', req, res, { deckId, userId, success: result }); - res.json({ success: result }); - } catch (error) { - logError('Soft delete deck endpoint error', error as Error, req, res); - - if (error instanceof Error && error.message.includes('not found')) { - return res.status(404).json({ error: 'Deck not found' }); - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -export default deckRouter; \ No newline at end of file diff --git a/SerpentRace_Backend/src/Api/routers/gameRouter.ts b/SerpentRace_Backend/src/Api/routers/gameRouter.ts deleted file mode 100644 index 982cf163..00000000 --- a/SerpentRace_Backend/src/Api/routers/gameRouter.ts +++ /dev/null @@ -1,327 +0,0 @@ -import { Router } from 'express'; -import { authRequired } from '../../Application/Services/AuthMiddleware'; -import { optionalAuth } from '../middleware/optionalAuth'; -import { container } from '../../Application/Services/DIContainer'; -import { ErrorResponseService } from '../../Application/Services/ErrorResponseService'; -import { ValidationMiddleware } from '../../Application/Services/ValidationMiddleware'; -import { logRequest, logError, logWarning } from '../../Application/Services/Logger'; -import { LoginType } from '../../Domain/Game/GameAggregate'; - -const gameRouter = Router(); - -gameRouter.post('/start', authRequired, async (req, res) => { - try { - const userId = (req as any).user.userId; - const orgId = (req as any).user.orgId; - const { deckids, maxplayers, logintype } = req.body; - - logRequest('Start game endpoint accessed', req, res, { - userId, - orgId, - deckCount: deckids?.length, - maxplayers, - logintype - }); - - // Validate required fields - if (!deckids || !Array.isArray(deckids) || deckids.length === 0) { - return res.status(400).json({ error: 'deckids is required and must be a non-empty array' }); - } - - if (!maxplayers || typeof maxplayers !== 'number') { - return res.status(400).json({ error: 'maxplayers is required and must be a number' }); - } - - if (logintype === undefined || typeof logintype !== 'number') { - return res.status(400).json({ error: 'logintype is required and must be a number (0=PUBLIC, 1=PRIVATE, 2=ORGANIZATION)' }); - } - - // Start the game using the GameService - const game = await container.gameService.startGame( - deckids, - maxplayers, - logintype as LoginType, - userId, - orgId - ); - - logRequest('Game started successfully', req, res, { - userId, - gameId: game.id, - gameCode: game.gamecode, - deckCount: game.gamedecks.length, - totalCards: game.gamedecks.reduce((sum, deck) => sum + deck.cards.length, 0) - }); - - res.json(game); - } catch (error) { - logError('Start game endpoint error', error as Error, req, res); - - if (error instanceof Error) { - if (error.message.includes('not found')) { - return res.status(404).json({ error: error.message }); - } - if (error.message.includes('validation') || - error.message.includes('must be') || - error.message.includes('required') || - error.message.includes('Invalid')) { - return res.status(400).json({ error: error.message }); - } - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -gameRouter.post('/join', optionalAuth, async (req, res) => { - try { - const user = (req as any).user; - const { gameCode, playerName } = req.body; - - logRequest('Join game endpoint accessed', req, res, { - gameCode, - playerName, - hasAuth: !!user, - userId: user?.userId, - orgId: user?.orgId - }); - - // Validate required fields - if (!gameCode || typeof gameCode !== 'string') { - return res.status(400).json({ error: 'gameCode is required and must be a string' }); - } - - if (gameCode.length !== 6) { - return res.status(400).json({ error: 'gameCode must be exactly 6 characters long' }); - } - - // First, we need to find the game to determine its type - const gameRepository = container.gameRepository; - const gameToJoin = await gameRepository.findByGameCode(gameCode); - - if (!gameToJoin) { - return res.status(404).json({ error: 'Game not found' }); - } - - // Determine join requirements based on game login type - let actualPlayerId: string | undefined; - let actualPlayerName: string | undefined; - let actualOrgId: string | null = null; - - switch (gameToJoin.logintype) { - case LoginType.PUBLIC: - // Public games: playerName required, authentication optional - // If user is logged in and no playerName provided, use their username - if (!playerName || typeof playerName !== 'string' || !playerName.trim()) { - if (user && user.userId) { - // User is logged in, fetch their username to use as playerName - try { - const userDetails = await container.getUserByIdQueryHandler.execute({ id: user.userId }); - if (userDetails && userDetails.username) { - actualPlayerName = userDetails.username; - logRequest('Using logged-in user\'s username as playerName', req, res, { - userId: user.userId, - username: userDetails.username - }); - } else { - return res.status(400).json({ - error: 'playerName is required for public games' - }); - } - } catch (error) { - logError('Failed to fetch user details for playerName', error as Error, req, res); - return res.status(400).json({ - error: 'playerName is required for public games' - }); - } - } else { - // User is not logged in, playerName is required - return res.status(400).json({ - error: 'playerName is required for public games' - }); - } - } else { - // playerName was provided, use it - actualPlayerName = playerName.trim(); - } - actualPlayerId = user?.userId; // Use authenticated user ID if available, otherwise undefined - break; - - case LoginType.PRIVATE: - // Private games: authentication required - if (!user || !user.userId) { - return res.status(401).json({ - error: 'Authentication required to join private games' - }); - } - actualPlayerId = user.userId; - actualPlayerName = playerName; - break; - - case LoginType.ORGANIZATION: - // Organization games: authentication + organization membership required - if (!user || !user.userId) { - return res.status(401).json({ - error: 'Authentication required to join organization games' - }); - } - - if (!user.orgId) { - return res.status(403).json({ - error: 'Organization membership required to join organization games' - }); - } - - if (gameToJoin.orgid && user.orgId !== gameToJoin.orgid) { - return res.status(403).json({ - error: 'You must be a member of the same organization to join this game' - }); - } - - actualPlayerId = user.userId; - actualPlayerName = playerName; - actualOrgId = user.orgId; - break; - - default: - return res.status(400).json({ error: 'Invalid game type' }); - } - - // Join the game using the GameService with determined parameters - const game = await container.gameService.joinGame( - gameCode, - actualPlayerId, - actualPlayerName, - actualOrgId, - gameToJoin.logintype - ); - - logRequest('Player joined game successfully', req, res, { - userId: actualPlayerId || 'anonymous', - gameId: game.id, - gameCode: game.gamecode, - gameType: LoginType[gameToJoin.logintype], - playerCount: game.players.length, - maxPlayers: game.maxplayers, - playerName: actualPlayerName - }); - - // Create game token for WebSocket authentication - const gameTokenService = container.gameTokenService; - const gameToken = gameTokenService.createGameToken( - game.id, - game.gamecode, - actualPlayerName || 'Anonymous', - actualPlayerId - ); - - // Return clean response with essential data + game token - res.json({ - id: game.id, - gamecode: game.gamecode, - playerName: actualPlayerName, - playerCount: game.players.length, - maxPlayers: game.maxplayers, - gameType: LoginType[gameToJoin.logintype], - isAuthenticated: !!actualPlayerId, - gameToken: gameToken - }); - } catch (error) { - logError('Join game endpoint error', error as Error, req, res); - - if (error instanceof Error) { - if (error.message.includes('not found')) { - return res.status(404).json({ error: error.message }); - } - if (error.message.includes('Authentication required')) { - return res.status(401).json({ error: error.message }); - } - if (error.message.includes('Organization') || error.message.includes('organization')) { - return res.status(403).json({ error: error.message }); - } - if (error.message.includes('full') || - error.message.includes('already in') || - error.message.includes('not accepting')) { - return res.status(409).json({ error: error.message }); - } - if (error.message.includes('validation') || - error.message.includes('must be') || - error.message.includes('required') || - error.message.includes('Invalid')) { - return res.status(400).json({ error: error.message }); - } - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -gameRouter.post('/:gameId/start', authRequired, async (req, res) => { - try { - const userId = (req as any).user.userId; - const { gameId } = req.params; - - logRequest('Start gameplay endpoint accessed', req, res, { - userId, - gameId - }); - - // Validate required fields - if (!gameId || typeof gameId !== 'string') { - return res.status(400).json({ error: 'gameId is required and must be a string' }); - } - - // Start the gameplay using the GameService - const result = await container.gameService.startGamePlay(gameId, userId); - - logRequest('Game gameplay started successfully', req, res, { - userId, - gameId, - playerCount: result.game.players.length - }); - - res.json({ - message: 'Game started successfully', - gameId: gameId, - playerCount: result.game.players.length, - game: result.game, - boardData: result.boardData - }); - } catch (error) { - logError('Start gameplay endpoint error', error as Error, req, res); - - if (error instanceof Error) { - if (error.message.includes('not found')) { - return res.status(404).json({ error: error.message }); - } - if (error.message.includes('Only') || error.message.includes('master')) { - return res.status(403).json({ error: error.message }); - } - if (error.message.includes('already started') || - error.message.includes('not ready') || - error.message.includes('minimum players') || - error.message.includes('not in waiting state') || - error.message.includes('cannot be started')) { - return res.status(409).json({ error: error.message }); - } - if (error.message.includes('validation') || - error.message.includes('must be') || - error.message.includes('required') || - error.message.includes('Invalid')) { - return res.status(400).json({ error: error.message }); - } - // Board generation specific errors - if (error.message.includes('Board generation') || - error.message.includes('board not found') || - error.message.includes('BoardGenerationService') || - error.message.includes('Failed to wait for board generation') || - error.message.includes('board generation timeout')) { - return res.status(500).json({ error: error.message }); - } - } - - res.status(500).json({ error: 'Internal server error' }); - } -}); - -export default gameRouter; \ No newline at end of file diff --git a/SerpentRace_Backend/src/Api/routers/organizationRouter.ts b/SerpentRace_Backend/src/Api/routers/organizationRouter.ts deleted file mode 100644 index eceaad01..00000000 --- a/SerpentRace_Backend/src/Api/routers/organizationRouter.ts +++ /dev/null @@ -1,204 +0,0 @@ -import { Router } from 'express'; -import { authRequired } from '../../Application/Services/AuthMiddleware'; -import { container } from '../../Application/Services/DIContainer'; -import { ErrorResponseService } from '../../Application/Services/ErrorResponseService'; -import { ValidationMiddleware } from '../../Application/Services/ValidationMiddleware'; -import { GeneralSearchService } from '../../Application/Search/Generalsearch'; -import { logRequest, logError, logWarning, logAuth } from '../../Application/Services/Logger'; - -const organizationRouter = Router(); - -// Create search service that isn't in the container yet -const searchService = new GeneralSearchService(container.userRepository, container.organizationRepository, container.deckRepository); - -// Auth routes - Get organizations with pagination (RECOMMENDED) -organizationRouter.get('/page/:from/:to', authRequired, async (req, res) => { - try { - const from = parseInt(req.params.from); - const to = parseInt(req.params.to); - - if (isNaN(from) || isNaN(to) || from < 0 || to < from) { - return res.status(400).json({ error: 'Invalid page parameters. "from" and "to" must be valid numbers with to >= from >= 0' }); - } - - logRequest('Get organizations by page endpoint accessed', req, res, { from, to }); - - const result = await container.getOrganizationsByPageQueryHandler.execute({ from, to }); - - logRequest('Organizations page retrieved successfully', req, res, { - from, - to, - count: result.organizations.length, - totalCount: result.totalCount - }); - - res.json(result); - } catch (error) { - logError('Get organizations by page endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -organizationRouter.get('/search', authRequired, async (req, res) => { - try { - const { query, limit, offset } = req.query; - logRequest('Search organizations endpoint accessed', req, res, { query, limit, offset }); - - if (!query || typeof query !== 'string') { - logWarning('Organization search attempted without query', { query, hasQuery: !!query }, req, res); - return res.status(400).json({ error: 'Search query is required' }); - } - - const searchQuery = { - query: query.trim(), - limit: limit ? parseInt(limit as string) : 20, - offset: offset ? parseInt(offset as string) : 0 - }; - - // Validate pagination parameters - if (searchQuery.limit < 1 || searchQuery.limit > 100) { - logWarning('Invalid organization search limit parameter', { limit: searchQuery.limit }, req, res); - return res.status(400).json({ error: 'Limit must be between 1 and 100' }); - } - - if (searchQuery.offset < 0) { - logWarning('Invalid organization search offset parameter', { offset: searchQuery.offset }, req, res); - return res.status(400).json({ error: 'Offset must be non-negative' }); - } - - const result = await searchService.searchFromUrl(req.originalUrl, searchQuery); - - logRequest('Organization search completed successfully', req, res, { - query: searchQuery.query, - resultCount: Array.isArray(result) ? result.length : 0 - }); - res.json(result); - } catch (error) { - logError('Search organizations endpoint error', error as Error, req, res); - res.status(500).json({ error: 'Internal server error' }); - } -}); - -// Get organization login URL -organizationRouter.get('/:orgId/login-url', authRequired, async (req, res) => { - try { - const userId = (req as any).user.userId; - const { orgId } = req.params; - - logRequest('Get organization login URL endpoint accessed', req, res, { - userId, - organizationId: orgId - }); - - const result = await container.getOrganizationLoginUrlQueryHandler.execute({ - organizationId: orgId - }); - - if (!result) { - logWarning('Organization login URL not found', { - organizationId: orgId, - userId - }, req, res); - return ErrorResponseService.sendNotFound(res, 'Organization login URL not found'); - } - - logRequest('Organization login URL retrieved successfully', req, res, { - organizationId: orgId, - organizationName: result.organizationName, - hasUrl: !!result.loginUrl, - userId - }); - - res.json(result); - } catch (error) { - logError('Get organization login URL endpoint error', error as Error, req, res); - return ErrorResponseService.sendInternalServerError(res); - } -}); - -// Process third-party authentication callback -organizationRouter.post('/auth-callback', authRequired, async (req, res) => { - try { - const userId = (req as any).user.userId; - const { organizationId, status, authToken } = req.body; - - logRequest('Organization auth callback endpoint accessed', req, res, { - userId, - organizationId, - status, - hasAuthToken: !!authToken - }); - - // Validate required fields - if (!organizationId || !status) { - logWarning('Missing required fields for organization auth callback', { - organizationId: !!organizationId, - status: !!status, - userId - }, req, res); - return ErrorResponseService.sendBadRequest(res, 'organizationId and status are required'); - } - - if (status !== 'ok' && status !== 'not_ok') { - logWarning('Invalid status value for organization auth callback', { - status, - userId, - organizationId - }, req, res); - return ErrorResponseService.sendBadRequest(res, 'status must be either "ok" or "not_ok"'); - } - - const result = await container.processOrgAuthCallbackCommandHandler.execute({ - organizationId, - userId, - status, - authToken - }); - - if (!result.success) { - if (result.message.includes('not found')) { - logWarning('Organization auth callback failed - entity not found', { - userId, - organizationId, - message: result.message - }, req, res); - return ErrorResponseService.sendNotFound(res, result.message); - } - if (result.message.includes('does not belong')) { - logWarning('Organization auth callback failed - authorization error', { - userId, - organizationId, - message: result.message - }, req, res); - return ErrorResponseService.sendForbidden(res, result.message); - } - if (result.message.includes('authentication failed')) { - logAuth('Organization authentication failed via callback', userId, { - organizationId, - status - }, req, res); - return ErrorResponseService.sendUnauthorized(res, result.message); - } - - logError('Organization auth callback internal error', new Error(result.message), req, res); - return ErrorResponseService.sendInternalServerError(res); - } - - logAuth('Organization auth callback processed successfully', userId, { - organizationId, - status, - updatedFields: result.updatedFields - }, req, res); - - res.json({ - success: result.success, - message: result.message, - updatedFields: result.updatedFields - }); - } catch (error) { - logError('Organization auth callback endpoint error', error as Error, req, res); - return ErrorResponseService.sendInternalServerError(res); - } -}); - -export default organizationRouter; diff --git a/SerpentRace_Backend/src/Api/routers/userRouter.ts b/SerpentRace_Backend/src/Api/routers/userRouter.ts deleted file mode 100644 index facc906d..00000000 --- a/SerpentRace_Backend/src/Api/routers/userRouter.ts +++ /dev/null @@ -1,345 +0,0 @@ -import { Router } from 'express'; -import { authRequired } from '../../Application/Services/AuthMiddleware'; -import { container } from '../../Application/Services/DIContainer'; -import { ErrorResponseService } from '../../Application/Services/ErrorResponseService'; -import { ValidationMiddleware } from '../../Application/Services/ValidationMiddleware'; -import { GeneralSearchService } from '../../Application/Search/Generalsearch'; -import { logRequest, logError, logAuth, logWarning } from '../../Application/Services/Logger'; - -const userRouter = Router(); - -// Create search service that isn't in the container yet -const searchService = new GeneralSearchService(container.userRepository, container.organizationRepository, container.deckRepository); - -// Login endpoint -userRouter.post('/login', - ValidationMiddleware.combine([ - ValidationMiddleware.validateRequiredFields(['username', 'password']), - ValidationMiddleware.validateStringLength({ - username: { min: 3, max: 50 }, - password: { min: 6, max: 100 } - }) - ]), - async (req, res) => { - try { - logRequest('Login endpoint accessed', req, res, { username: req.body.username }); - - const { username, password } = req.body; - - const result = await container.loginCommandHandler.execute({ username, password }, res); - - if (result) { - logAuth('User login successful', undefined, { username: result.user.username }, req, res); - res.json(result); - } else { - throw new Error(`Login failed: ${result}`); - } - - } catch (error) { - logError('Login endpoint error', error as Error, req, res); - - if (error instanceof Error) { - if (error.message.includes('Invalid username')) { - return ErrorResponseService.sendUnauthorized(res, 'Invalid username or password'); - } - if (error.message.includes('Invalid password')) { - return ErrorResponseService.sendUnauthorized(res, 'Invalid username or password'); - } - if (error.message.includes('not verified')) { - return ErrorResponseService.sendUnauthorized(res, 'Please verify your email address'); - } - if (error.message.includes('restriction')) { - return ErrorResponseService.sendUnauthorized(res, 'Please verify your email address'); - } - if (error.message.includes('deactivated')) { - return ErrorResponseService.sendUnauthorized(res, 'Account has been deactivated'); - } - } - - return ErrorResponseService.sendInternalServerError(res); - } -}); - -// Create user endpoint -userRouter.post('/create', - ValidationMiddleware.combine([ - ValidationMiddleware.validateRequiredFields(['username', 'email', 'password']), - ValidationMiddleware.validateEmailFormat(['email']), - ValidationMiddleware.validateStringLength({ - username: { min: 3, max: 50 }, - password: { min: 6, max: 100 } - }) - ]), - async (req, res) => { - try { - logRequest('Create user endpoint accessed', req, res, { - username: req.body.username, - email: req.body.email - }); - - const acceptLanguage = req.header('Accept-Language') || 'en'; - const language : 'hu' | 'de' | 'en' = acceptLanguage.toLowerCase().startsWith('hu') ? 'hu' : - acceptLanguage.toLowerCase().startsWith('de') ? 'de' : 'en'; - - const result = await container.createUserCommandHandler.execute({ ...req.body, language }); - - logRequest('User created successfully', req, res, { - username: result.username - }); - - res.status(201).json(result); - - } catch (error) { - // Don't log here since CreateUserCommandHandler already logs system errors - // Only log validation/user input errors at router level - - if (error instanceof Error) { - if (error.message.includes('already exists')) { - return ErrorResponseService.sendConflict(res, error.message); - } - if (error.message.includes('validation')) { - return ErrorResponseService.sendBadRequest(res, error.message); - } - // Log unexpected errors that weren't handled by the command handler - if (!error.message.includes('Failed to create user')) { - logError('Unexpected create user endpoint error', error as Error, req, res); - } - } - - return ErrorResponseService.sendInternalServerError(res); - } -}); - -// Get user profile (current user) -userRouter.get('/profile', authRequired, async (req, res) => { - try { - const userId = (req as any).user.userId; - - logRequest('Get user profile endpoint accessed', req, res, { userId }); - - const result = await container.getUserByIdQueryHandler.execute({ id: userId }); - - if (!result) { - logWarning('User profile not found', { userId }, req, res); - return ErrorResponseService.sendNotFound(res, 'User not found'); - } - - logRequest('User profile retrieved successfully', req, res, { - userId, - username: result.username - }); - - res.json(result); - - } catch (error) { - logError('Get user profile endpoint error', error as Error, req, res); - return ErrorResponseService.sendInternalServerError(res); - } -}); - -// Update user profile (current user) -userRouter.patch('/profile', authRequired, async (req, res) => { - try { - const userId = (req as any).user.userId; - - logRequest('Update user profile endpoint accessed', req, res, { - userId, - fieldsToUpdate: Object.keys(req.body) - }); - - const result = await container.updateUserCommandHandler.execute({ id: userId, ...req.body }); - - if (!result) { - return ErrorResponseService.sendNotFound(res, 'User not found'); - } - - logRequest('User profile updated successfully', req, res, { - userId, - username: result.username - }); - - res.json(result); - - } catch (error) { - logError('Update user profile endpoint error', error as Error, req, res); - - if (error instanceof Error) { - if (error.message.includes('already exists')) { - return ErrorResponseService.sendConflict(res, error.message); - } - if (error.message.includes('validation')) { - return ErrorResponseService.sendBadRequest(res, error.message); - } - } - - return ErrorResponseService.sendInternalServerError(res); - } -}); - -//Soft delete user (current user) -userRouter.delete('/profile', authRequired, async (req, res) => { - try { - const userId = (req as any).user.userId; - const result = await container.deleteUserCommandHandler.execute({ id: userId, soft: true }); - logRequest('User soft deleted successfully', req, res, { userId }); - res.json({ success: result }); - } catch (error) { - logError('Soft delete user endpoint error', error as Error, req, res); - return ErrorResponseService.sendInternalServerError(res); - } -}); - -//logout user (current user) -userRouter.post('/logout', authRequired, async (req, res) => { - try { - const userId = (req as any).user.userId; - await container.logoutCommandHandler.execute(userId, res, req); - logRequest('User logged out successfully', req, res, { userId }); - res.json({ success: true }); - } catch (error) { - logError('Logout user endpoint error', error as Error, req, res); - return ErrorResponseService.sendInternalServerError(res); - } -}); - -// Refresh token endpoint -userRouter.post('/refresh-token', async (req, res) => { - try { - logRequest('Token refresh endpoint accessed', req, res); - - const jwtService = container.jwtService; - const newTokenPair = jwtService.attemptTokenRefresh(req, res); - - if (newTokenPair) { - logRequest('Token refresh successful', req, res); - res.json({ - success: true, - message: 'Tokens refreshed successfully', - accessToken: newTokenPair.accessToken, - refreshToken: newTokenPair.refreshToken - }); - } else { - logWarning('Token refresh failed - invalid or missing refresh token', undefined, req, res); - return ErrorResponseService.sendUnauthorized(res, 'Invalid or expired refresh token'); - } - } catch (error) { - logError('Refresh token endpoint error', error as Error, req, res); - return ErrorResponseService.sendInternalServerError(res); - } -}); - -// Email verification endpoint -userRouter.post('/verify-email/:token', async (req, res) => { - try { - const { token } = req.params; - - logRequest('Email verification endpoint accessed', req, res, { - tokenPrefix: token.substring(0, 8) + '...' - }); - - if (!token) { - return ErrorResponseService.sendBadRequest(res, 'Verification token is required'); - } - - const result = await container.verifyEmailCommandHandler.execute({ token }); - - if (result) { - logAuth('Email verification successful', undefined, { tokenPrefix: token.substring(0, 8) + '...' }, req, res); - res.json({ success: true, message: 'Email verified successfully' }); - } else { - throw new Error('Email verification failed'); - } - - } catch (error) { - logError('Email verification endpoint error', error as Error, req, res); - - if (error instanceof Error) { - if (error.message.includes('Invalid') || error.message.includes('expired')) { - return ErrorResponseService.sendBadRequest(res, 'Invalid or expired verification token'); - } - } - - return ErrorResponseService.sendInternalServerError(res); - } -}); - -// Forgot password request endpoint -userRouter.post('/forgot-password', - ValidationMiddleware.combine([ - ValidationMiddleware.validateRequiredFields(['email']), - ValidationMiddleware.validateEmailFormat(['email']) - ]), - async (req, res) => { - try { - const { email } = req.body; - const acceptLanguage = req.header('Accept-Language') || 'en'; - const language: 'hu' | 'de' | 'en' = acceptLanguage.toLowerCase().startsWith('hu') ? 'hu' : - acceptLanguage.toLowerCase().startsWith('de') ? 'de' : 'en'; - - logRequest('Forgot password endpoint accessed', req, res, { email }); - - const result = await container.requestPasswordResetCommandHandler.execute({ language, email }); - - if (result) { - logAuth('Password reset request successful', undefined, { email }, req, res); - res.json({ - success: true, - message: 'If an account with this email exists, a password reset link has been sent' - }); - } else { - throw new Error('Password reset request failed'); - } - - } catch (error) { - logError('Forgot password endpoint error', error as Error, req, res); - - // Always return success for security (don't reveal if email exists) - res.json({ - success: true, - message: 'If an account with this email exists, a password reset link has been sent' - }); - } -}); - -// Reset password endpoint -userRouter.post('/reset-password', - ValidationMiddleware.combine([ - ValidationMiddleware.validateRequiredFields(['token', 'newPassword']), - ValidationMiddleware.validateStringLength({ - newPassword: { min: 6, max: 100 } - }) - ]), - async (req, res) => { - try { - const { token, newPassword } = req.body; - - logRequest('Reset password endpoint accessed', req, res, { - tokenPrefix: token.substring(0, 8) + '...' - }); - - const result = await container.resetPasswordCommandHandler.execute({ token, newPassword }); - - if (result) { - logAuth('Password reset successful', undefined, { tokenPrefix: token.substring(0, 8) + '...' }, req, res); - res.json({ success: true, message: 'Password reset successfully' }); - } else { - throw new Error('Password reset failed'); - } - - } catch (error) { - logError('Reset password endpoint error', error as Error, req, res); - - if (error instanceof Error) { - if (error.message.includes('Invalid') || error.message.includes('expired')) { - return ErrorResponseService.sendBadRequest(res, 'Invalid or expired reset token'); - } - if (error.message.includes('Password validation')) { - return ErrorResponseService.sendBadRequest(res, error.message); - } - } - - return ErrorResponseService.sendInternalServerError(res); - } -}); - -export default userRouter; diff --git a/SerpentRace_Backend/src/Api/swagger/swaggerConfig.ts b/SerpentRace_Backend/src/Api/swagger/swaggerConfig.ts deleted file mode 100644 index 1f2e31ef..00000000 --- a/SerpentRace_Backend/src/Api/swagger/swaggerConfig.ts +++ /dev/null @@ -1,101 +0,0 @@ -import swaggerJSDoc from 'swagger-jsdoc'; -import path from 'path'; - -export const swaggerOptions = { - definition: { - openapi: '3.0.0', - info: { - title: 'SerpentRace API', - version: '1.0.0', - description: 'Comprehensive API documentation for SerpentRace Backend', - contact: { - name: 'SerpentRace Development Team', - email: 'dev@serpentrace.com' - }, - license: { - name: 'MIT', - url: 'https://opensource.org/licenses/MIT' - } - }, - servers: [ - { - url: 'http://localhost:3001', - description: 'Local development server' - }, - { - url: 'http://localhost:3000', - description: 'Local development server (alt)' - }, - { - url: 'https://api.serpentrace.com', - description: 'Production server' - } - ], - components: { - securitySchemes: { - bearerAuth: { - type: 'http', - scheme: 'bearer', - bearerFormat: 'JWT', - description: 'Enter JWT token obtained from /api/users/login' - } - } - }, - security: [{ bearerAuth: [] }], - tags: [ - { - name: 'Users', - description: 'User authentication and profile management' - }, - { - name: 'Organizations', - description: 'Organization management and authentication' - }, - { - name: 'Decks', - description: 'Deck creation, management, and gameplay' - }, - { - name: 'Chats', - description: 'Real-time chat and messaging system' - }, - { - name: 'Contacts', - description: 'Contact form and support requests' - }, - { - name: 'Deck Import/Export', - description: 'Import and export deck functionality' - }, - { - name: 'Games', - description: 'Game management and gameplay' - }, - { - name: 'Admin - Users', - description: 'Admin user management operations' - }, - { - name: 'Admin - Decks', - description: 'Admin deck management operations' - }, - { - name: 'Admin - Organizations', - description: 'Admin organization management operations' - }, - { - name: 'Admin - Chats', - description: 'Admin chat management operations' - }, - { - name: 'Admin - Contacts', - description: 'Admin contact management operations' - } - ] - }, - apis: [ - './src/Api/swagger/swaggerDefinitionsFixed.ts' - ], -}; - -export const swaggerSpec = swaggerJSDoc(swaggerOptions); diff --git a/SerpentRace_Backend/src/Api/swagger/swaggerDefinitions.ts b/SerpentRace_Backend/src/Api/swagger/swaggerDefinitions.ts deleted file mode 100644 index eef90dac..00000000 --- a/SerpentRace_Backend/src/Api/swagger/swaggerDefinitions.ts +++ /dev/null @@ -1,1694 +0,0 @@ -/** - * @swagger - * components: -<<<<<<< HEAD -<<<<<<< HEAD -======= - * securitySchemes: - * bearerAuth: - * type: http - * scheme: bearer - * bearerFormat: JWT ->>>>>>> origin/main -======= ->>>>>>> 83fad59878db015ec8d86bdec1ecbbca0baddfd2 - * schemas: - * User: - * type: object - * properties: - * id: - * type: string - * format: uuid - * username: - * type: string - * email: - * type: string - * format: email - * fname: - * type: string - * lname: - * type: string - * phone: - * type: string - * nullable: true - * type: - * type: string - * state: - * type: integer - * regdate: - * type: string - * format: date-time - * updatedate: - * type: string - * format: date-time - * orgid: - * type: string - * nullable: true - * - * CreateUserRequest: - * type: object - * required: - * - username - * - email - * - password - * - fname - * - lname - * - type - * properties: - * username: - * type: string - * email: - * type: string - * format: email - * password: - * type: string - * format: password - * fname: - * type: string - * lname: - * type: string - * phone: - * type: string - * type: - * type: string - * - * LoginRequest: - * type: object - * required: - * - username - * - password - * properties: - * username: - * type: string - * password: - * type: string - * format: password - * - * LoginResponse: - * type: object - * properties: - * token: - * type: string - * user: - * $ref: '#/components/schemas/User' - * requiresOrgReauth: - * type: boolean - * orgLoginUrl: - * type: string - * organizationName: - * type: string - * - * UpdateProfileRequest: - * type: object - * properties: - * fname: - * type: string - * lname: - * type: string - * phone: - * type: string - * email: - * type: string - * format: email - * -<<<<<<< HEAD - * ForgotPasswordRequest: - * type: object - * required: - * - email - * properties: - * email: - * type: string - * format: email - * - * ResetPasswordRequest: - * type: object - * required: - * - token - * - newPassword - * properties: - * token: - * type: string - * newPassword: - * type: string - * format: password - * minLength: 6 - * maxLength: 100 - * - * AuthSuccessResponse: - * type: object - * properties: - * success: - * type: boolean - * message: - * type: string - * -======= ->>>>>>> origin/main - * Organization: - * type: object - * properties: - * id: - * type: string - * format: uuid - * name: - * type: string - * contactfname: - * type: string - * contactlname: - * type: string - * contactphone: - * type: string - * contactemail: - * type: string - * format: email - * state: - * type: integer - * regdate: - * type: string - * format: date-time - * updatedate: - * type: string - * format: date-time - * url: - * type: string - * nullable: true - * userinorg: - * type: integer - * maxOrganizationalDecks: - * type: integer - * - * Deck: - * type: object - * properties: - * id: - * type: string - * format: uuid - * name: - * type: string - * type: - * type: integer - * enum: [0, 1, 2, 3] - * description: 0=JOKER, 1=LUCK, 2=QUESTION, 3=GENERAL - * userid: - * type: string - * format: uuid - * creationdate: - * type: string - * format: date-time - * cards: - * type: array - * items: - * type: object - * playedNumber: - * type: integer - * ctype: - * type: integer - * enum: [0, 1, 2] - * description: 0=PUBLIC, 1=ORGANIZATIONAL, 2=PRIVATE - * updatedate: - * type: string - * format: date-time - * state: - * type: integer - * enum: [0, 1, 2] - * description: 0=ACTIVE, 1=INACTIVE, 2=SOFT_DELETE - * organization: - * $ref: '#/components/schemas/Organization' - * nullable: true - * - * CreateDeckRequest: - * type: object - * required: - * - name - * - type - * - cards - * properties: - * name: - * type: string - * type: - * type: integer - * cards: - * type: array - * items: - * type: object - * ctype: - * type: integer - * - * Contact: - * type: object - * properties: - * id: - * type: string - * format: uuid - * name: - * type: string - * email: - * type: string - * format: email - * userid: - * type: string - * format: uuid - * nullable: true - * type: - * type: integer - * enum: [0, 1, 2] - * description: 0=QUESTION, 1=BUG_REPORT, 2=SUGGESTION - * txt: - * type: string - * state: - * type: integer - * createDate: - * type: string - * format: date-time - * updateDate: - * type: string - * format: date-time - * adminResponse: - * type: string - * nullable: true - * responseDate: - * type: string - * format: date-time - * nullable: true - * respondedBy: - * type: string - * nullable: true - * - * CreateContactRequest: - * type: object - * required: - * - name - * - email - * - type - * - txt - * properties: - * name: - * type: string - * email: - * type: string - * format: email - * type: - * type: integer - * txt: - * type: string - * - * Chat: - * type: object - * properties: - * id: - * type: string - * format: uuid - * name: - * type: string - * type: - * type: integer - * participants: - * type: array - * items: - * type: string - * creatorId: - * type: string - * gameId: - * type: string - * nullable: true - * createDate: - * type: string - * format: date-time - * updateDate: - * type: string - * format: date-time - * state: - * type: integer - * - * ChatMessage: - * type: object - * properties: - * id: - * type: string - * format: uuid - * senderId: - * type: string - * senderName: - * type: string - * message: - * type: string - * timestamp: - * type: string - * format: date-time - * chatId: - * type: string - * -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> 83fad59878db015ec8d86bdec1ecbbca0baddfd2 - * Game: - * type: object - * properties: - * id: - * type: string - * format: uuid - * gamecode: - * type: string - * maxplayers: - * type: integer - * logintype: - * type: integer - * gamedecks: - * type: array - * players: - * type: array - * items: - * type: string - * started: - * type: boolean - * finished: - * type: boolean - * state: - * type: integer - * createdate: - * type: string - * format: date-time - * -<<<<<<< HEAD -======= ->>>>>>> origin/main -======= ->>>>>>> 83fad59878db015ec8d86bdec1ecbbca0baddfd2 - * Error: - * type: object - * properties: - * error: - * type: string - * timestamp: - * type: string - * format: date-time - * details: - * type: string -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> 83fad59878db015ec8d86bdec1ecbbca0baddfd2 - */ -/** - * @swagger - * - * /api/users/login: - * post: - * tags: [Users] - * summary: User login - * description: Authenticate user and return JWT token - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/LoginRequest' - * responses: - * 200: - * description: Login successful -<<<<<<< HEAD - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/LoginResponse' - * 401: - * description: Invalid credentials - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Error' - * -======= - * - * paths: - * /api/users/login: - * post: - * tags: [Users] - * summary: User login - * description: Authenticate user and return JWT token - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/LoginRequest' - * responses: - * 200: - * description: Login successful - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/LoginResponse' - * 401: - * description: Invalid credentials - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Error' ->>>>>>> origin/main -======= - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/LoginResponse' - * 401: - * description: Invalid credentials - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Error' - * ->>>>>>> 83fad59878db015ec8d86bdec1ecbbca0baddfd2 - * - * /api/users/create: - * post: - * tags: [Users] - * summary: Create new user - * description: Register a new user account - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/CreateUserRequest' - * responses: - * 201: - * description: User created successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/User' - * 400: - * description: Validation error - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Error' - * - * /api/users/profile: - * get: - * tags: [Users] - * summary: Get user profile - * description: Get current user's profile information - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: User profile data - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/User' - * 401: - * description: Unauthorized - * patch: - * tags: [Users] - * summary: Update user profile - * description: Update current user's profile information - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/UpdateProfileRequest' - * responses: - * 200: - * description: Profile updated successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/User' - * 400: - * description: Validation error - * 401: - * description: Unauthorized - * - * /api/organizations/page/{from}/{to}: - * get: - * tags: [Organizations] - * summary: Get organizations by page - * description: Retrieve paginated list of organizations - * security: - * - bearerAuth: [] - * parameters: - * - name: from - * in: path - * required: true - * schema: - * type: integer - * - name: to - * in: path - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Paginated organizations - * content: - * application/json: - * schema: - * type: object - * properties: - * organizations: - * type: array - * items: - * $ref: '#/components/schemas/Organization' - * totalCount: - * type: integer - * - * /api/organizations/search: - * get: - * tags: [Organizations] - * summary: Search organizations - * description: Search organizations by query - * security: - * - bearerAuth: [] - * parameters: - * - name: query - * in: query - * required: true - * schema: - * type: string - * - name: from - * in: query - * required: true - * schema: - * type: integer - * - name: to - * in: query - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Search results - * content: - * application/json: - * schema: - * type: object - * properties: - * results: - * type: array - * items: - * $ref: '#/components/schemas/Organization' - * totalCount: - * type: integer - * - * /api/organizations/{orgId}/login-url: - * get: - * tags: [Organizations] - * summary: Get organization login URL - * description: Get OAuth login URL for organization - * security: - * - bearerAuth: [] - * parameters: - * - name: orgId - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Login URL - * content: - * application/json: - * schema: - * type: object - * properties: - * loginUrl: - * type: string - * - * /api/organizations/auth-callback: - * post: - * tags: [Organizations] - * summary: OAuth callback - * description: Handle OAuth callback from organization - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * properties: - * code: - * type: string - * state: - * type: string - * responses: - * 200: - * description: Authentication successful - * 400: - * description: Invalid callback data - * - * /api/decks/page/{from}/{to}: - * get: - * tags: [Decks] - * summary: Get decks by page - * description: Retrieve paginated list of decks - * security: - * - bearerAuth: [] - * parameters: - * - name: from - * in: path - * required: true - * schema: - * type: integer - * - name: to - * in: path - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Paginated decks - * content: - * application/json: - * schema: - * type: object - * properties: - * decks: - * type: array - * items: - * $ref: '#/components/schemas/Deck' - * totalCount: - * type: integer - * - * /api/decks: - * post: - * tags: [Decks] - * summary: Create deck - * description: Create a new deck - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/CreateDeckRequest' - * responses: - * 201: - * description: Deck created successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Deck' - * - * /api/decks/search: - * get: - * tags: [Decks] - * summary: Search decks - * description: Search decks by query - * security: - * - bearerAuth: [] - * parameters: - * - name: query - * in: query - * required: true - * schema: - * type: string - * - name: from - * in: query - * required: true - * schema: - * type: integer - * - name: to - * in: query - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Search results - * content: - * application/json: - * schema: - * type: object - * properties: - * results: - * type: array - * items: - * $ref: '#/components/schemas/Deck' - * totalCount: - * type: integer - * - * /api/decks/{id}: - * get: - * tags: [Decks] - * summary: Get deck by ID - * description: Retrieve a specific deck by ID - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Deck details - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Deck' - * 404: - * description: Deck not found - * put: - * tags: [Decks] - * summary: Update deck - * description: Update an existing deck - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/CreateDeckRequest' - * responses: - * 200: - * description: Deck updated successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Deck' - * delete: - * tags: [Decks] - * summary: Delete deck - * description: Delete a deck (soft delete) - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 204: - * description: Deck deleted successfully - * 404: - * description: Deck not found - * - * /api/chats/user-chats: - * get: - * tags: [Chats] - * summary: Get user chats - * description: Get all chats for the current user - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: User chats - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Chat' - * - * /api/chats/history/{chatId}: - * get: - * tags: [Chats] - * summary: Get chat history - * description: Get message history for a chat - * security: - * - bearerAuth: [] - * parameters: - * - name: chatId - * in: path - * required: true - * schema: - * type: string - * - name: page - * in: query - * schema: - * type: integer - * - name: limit - * in: query - * schema: - * type: integer - * responses: - * 200: - * description: Chat history - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/ChatMessage' - * - * /api/chats/create: - * post: - * tags: [Chats] - * summary: Create chat - * description: Create a new chat room - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: - * - name - * - gameId - * properties: - * name: - * type: string - * gameId: - * type: string - * password: - * type: string - * nullable: true - * responses: - * 201: - * description: Chat created successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Chat' - * - * /api/chats/message: - * post: - * tags: [Chats] - * summary: Send message - * description: Send a message to a chat - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: - * - chatId - * - message - * properties: - * chatId: - * type: string - * message: - * type: string - * responses: - * 201: - * description: Message sent successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/ChatMessage' - * - * /api/chats/archive/{chatId}: - * post: - * tags: [Chats] - * summary: Archive chat - * description: Archive a chat room - * security: - * - bearerAuth: [] - * parameters: - * - name: chatId - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Chat archived successfully - * 404: - * description: Chat not found - * - * /api/chats/restore/{chatId}: - * post: - * tags: [Chats] - * summary: Restore chat - * description: Restore an archived chat room - * security: - * - bearerAuth: [] - * parameters: - * - name: chatId - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Chat restored successfully - * 404: - * description: Chat not found - * - * /api/chats/archived/game/{gameId}: - * get: - * tags: [Chats] - * summary: Get archived chats by game - * description: Get all archived chats for a specific game - * security: - * - bearerAuth: [] - * parameters: - * - name: gameId - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Archived chats - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Chat' - * - * /api/deck-import-export/export/{deckId}: - * get: - * tags: [Import/Export] - * summary: Export deck - * description: Export a deck as JSON or .spr file - * security: - * - bearerAuth: [] - * parameters: - * - name: deckId - * in: path - * required: true - * schema: - * type: string - * - name: format - * in: query - * schema: - * type: string - * enum: [json, spr] - * default: json - * responses: - * 200: - * description: Deck exported successfully - * content: - * application/json: - * schema: - * type: object - * application/octet-stream: - * schema: - * type: string - * format: binary - * - * /api/deck-import-export/import: - * post: - * tags: [Import/Export] - * summary: Import deck - * description: Import a deck from JSON or .spr file - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * multipart/form-data: - * schema: - * type: object - * properties: - * file: - * type: string - * format: binary - * responses: - * 201: - * description: Deck imported successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Deck' - * - * /api/admin/users/page/{from}/{to}: - * get: - * tags: [Admin - Users] - * summary: Get users by page (Admin) - * description: Admin endpoint to retrieve paginated list of users - * security: - * - bearerAuth: [] - * parameters: - * - name: from - * in: path - * required: true - * schema: - * type: integer - * - name: to - * in: path - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Paginated users - * content: - * application/json: - * schema: - * type: object - * properties: - * users: - * type: array - * items: - * $ref: '#/components/schemas/User' - * totalCount: - * type: integer - * - * /api/admin/users/{userId}: - * get: - * tags: [Admin - Users] - * summary: Get user by ID (Admin) - * description: Admin endpoint to get specific user details - * security: - * - bearerAuth: [] - * parameters: - * - name: userId - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: User details - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/User' - * delete: - * tags: [Admin - Users] - * summary: Delete user (Admin) - * description: Admin endpoint to delete a user - * security: - * - bearerAuth: [] - * parameters: - * - name: userId - * in: path - * required: true - * schema: - * type: string - * responses: - * 204: - * description: User deleted successfully - * - * /api/admin/users/search/{searchTerm}: - * get: - * tags: [Admin - Users] - * summary: Search users (Admin) - * description: Admin endpoint to search users - * security: - * - bearerAuth: [] - * parameters: - * - name: searchTerm - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Search results - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/User' - * - * /api/admin/users/{userId}/deactivate: - * post: - * tags: [Admin - Users] - * summary: Deactivate user (Admin) - * description: Admin endpoint to deactivate a user - * security: - * - bearerAuth: [] - * parameters: - * - name: userId - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: User deactivated successfully - * - * /api/admin/decks/page/{from}/{to}: - * get: - * tags: [Admin - Decks] - * summary: Get decks by page (Admin) - * description: Admin endpoint to retrieve paginated list of decks - * security: - * - bearerAuth: [] - * parameters: - * - name: from - * in: path - * required: true - * schema: - * type: integer - * - name: to - * in: path - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Paginated decks - * content: - * application/json: - * schema: - * type: object - * properties: - * decks: - * type: array - * items: - * $ref: '#/components/schemas/Deck' - * totalCount: - * type: integer - * - * /api/admin/decks/{id}: - * get: - * tags: [Admin - Decks] - * summary: Get deck by ID (Admin) - * description: Admin endpoint to get specific deck details - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Deck details - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Deck' - * - * /api/admin/decks/search/{searchTerm}: - * get: - * tags: [Admin - Decks] - * summary: Search decks (Admin) - * description: Admin endpoint to search decks - * security: - * - bearerAuth: [] - * parameters: - * - name: searchTerm - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Search results - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Deck' - * - * /api/admin/decks/{id}/hard: - * delete: - * tags: [Admin - Decks] - * summary: Hard delete deck (Admin) - * description: Admin endpoint to permanently delete a deck - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 204: - * description: Deck permanently deleted - * - * /api/admin/organizations: - * post: - * tags: [Admin - Organizations] - * summary: Create organization (Admin) - * description: Admin endpoint to create a new organization - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: - * - name - * properties: - * name: - * type: string - * description: - * type: string - * responses: - * 201: - * description: Organization created successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Organization' - * - * /api/admin/organizations/page/{from}/{to}: - * get: - * tags: [Admin - Organizations] - * summary: Get organizations by page (Admin) - * description: Admin endpoint to retrieve paginated list of organizations - * security: - * - bearerAuth: [] - * parameters: - * - name: from - * in: path - * required: true - * schema: - * type: integer - * - name: to - * in: path - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Paginated organizations - * content: - * application/json: - * schema: - * type: object - * properties: - * organizations: - * type: array - * items: - * $ref: '#/components/schemas/Organization' - * totalCount: - * type: integer - * - * /api/admin/organizations/{id}: - * get: - * tags: [Admin - Organizations] - * summary: Get organization by ID (Admin) - * description: Admin endpoint to get specific organization details - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Organization details - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Organization' - * delete: - * tags: [Admin - Organizations] - * summary: Delete organization (Admin) - * description: Admin endpoint to soft delete an organization - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 204: - * description: Organization deleted successfully - * - * /api/admin/organizations/search/{searchTerm}: - * get: - * tags: [Admin - Organizations] - * summary: Search organizations (Admin) - * description: Admin endpoint to search organizations - * security: - * - bearerAuth: [] - * parameters: - * - name: searchTerm - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Search results - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Organization' - * - * /api/admin/organizations/{id}/hard: - * delete: - * tags: [Admin - Organizations] - * summary: Hard delete organization (Admin) - * description: Admin endpoint to permanently delete an organization - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 204: - * description: Organization permanently deleted - * - * /api/admin/chats/page/{from}/{to}: - * get: - * tags: [Admin - Chats] - * summary: Get chats by page (Admin) - * description: Admin endpoint to retrieve paginated list of chats - * security: - * - bearerAuth: [] - * parameters: - * - name: from - * in: path - * required: true - * schema: - * type: integer - * - name: to - * in: path - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Paginated chats - * content: - * application/json: - * schema: - * type: object - * properties: - * chats: - * type: array - * items: - * $ref: '#/components/schemas/Chat' - * totalCount: - * type: integer - * - * /api/admin/chats/{id}: - * get: - * tags: [Admin - Chats] - * summary: Get chat by ID (Admin) - * description: Admin endpoint to get specific chat details - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Chat details - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Chat' - * - * /api/admin/contacts/page/{from}/{to}: - * get: - * tags: [Admin - Contacts] - * summary: Get contacts by page (Admin) - * description: Admin endpoint to retrieve paginated list of contacts - * security: - * - bearerAuth: [] - * parameters: - * - name: from - * in: path - * required: true - * schema: - * type: integer - * - name: to - * in: path - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Paginated contacts - * content: - * application/json: - * schema: - * type: object - * properties: - * contacts: - * type: array - * items: - * $ref: '#/components/schemas/Contact' - * totalCount: - * type: integer - * - * /api/admin/contacts/{id}: - * get: - * tags: [Admin - Contacts] - * summary: Get contact by ID (Admin) - * description: Admin endpoint to get specific contact details - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Contact details - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Contact' - * - * /api/admin/contacts/search/{searchTerm}: - * get: - * tags: [Admin - Contacts] - * summary: Search contacts (Admin) - * description: Admin endpoint to search contacts - * security: - * - bearerAuth: [] - * parameters: - * - name: searchTerm - * in: path - * required: true - * schema: - * type: string - * - name: includeDeleted - * in: query - * required: true - * schema: - * type: boolean - * responses: - * 200: - * description: Search results - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Contact' - * - * /api/contacts: - * post: - * tags: [Contacts] - * summary: Create contact - * description: Create a new contact message - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/CreateContactRequest' - * responses: - * 201: - * description: Contact created successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Contact' -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> 83fad59878db015ec8d86bdec1ecbbca0baddfd2 - * - * /api/games/start: - * post: - * summary: Start a new game - * tags: [Games] - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: - * - deckids - * - maxplayers - * - logintype - * properties: - * deckids: - * type: array - * items: - * type: string - * description: Array of deck IDs (must include all 3 types LUCK, JOKER, QUESTION) - * maxplayers: - * type: integer - * minimum: 2 - * maximum: 8 - * description: Maximum number of players allowed in the game - * logintype: - * type: integer - * enum: [0, 1, 2] - * description: How players can join (PUBLIC=0, PRIVATE=1, ORGANIZATION=2) - * responses: - * 200: - * description: Game started successfully - * content: - * application/json: - * schema: - * type: object - * properties: - * id: - * type: string - * description: Game UUID - * gamecode: - * type: string - * description: 6-character game code for joining - * maxplayers: - * type: integer - * logintype: - * type: integer - * gamedecks: - * type: array - * description: Shuffled game decks - * players: - * type: array - * items: - * type: string - * started: - * type: boolean - * finished: - * type: boolean - * state: - * type: integer - * description: Game state (WAITING=0, ACTIVE=1, FINISHED=2, CANCELLED=3) - * createdate: - * type: string - * format: date-time - * 400: - * description: Invalid input parameters - * 401: - * description: Authentication required - * 500: - * description: Internal server error - * - * /api/games/join: - * post: - * summary: Join a game (automatically detects game type) - * description: Join any game by providing the game code. The system automatically determines if authentication is required based on the game type. - * tags: [Games] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: - * - gameCode - * properties: - * gameCode: - * type: string - * description: 6-character game code - * example: "ABC123" - * playerName: - * type: string - * description: Display name for the player (required for public games, optional for authenticated games) - * example: "John Doe" - * responses: - * 200: - * description: Successfully joined the game - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Game' - * 400: - * description: Invalid input or missing required fields - * 401: - * description: Authentication required for this game type - * 403: - * description: Organization membership required - * 404: - * description: Game not found - * 409: - * description: Game is full or not accepting players - * 500: - * description: Internal server error - * - * /api/games/{gameId}/start: - * post: - * summary: Start gameplay for an existing game - * description: Initialize gameplay by setting all player positions to 0 and assigning random turn order. This is separate from game creation. - * tags: [Games] - * parameters: - * - in: path - * name: gameId - * required: true - * schema: - * type: string - * description: The ID of the game to start - * responses: - * 200: - * description: Game started successfully - * content: - * application/json: - * schema: - * type: object - * properties: - * message: - * type: string - * example: "Game started successfully" - * gameId: - * type: string - * example: "game123" - * playerCount: - * type: number - * example: 4 - * 400: - * description: Invalid input or game cannot be started - * 401: - * description: Authentication required - * 403: - * description: Only game master can start the game - * 404: - * description: Game not found - * 409: - * description: Game already started or not ready to start - * 500: - * description: Internal server error -<<<<<<< HEAD -======= ->>>>>>> origin/main -======= ->>>>>>> 83fad59878db015ec8d86bdec1ecbbca0baddfd2 - */ - -export {}; diff --git a/SerpentRace_Backend/src/Api/swagger/swaggerDefinitionsFixed.ts b/SerpentRace_Backend/src/Api/swagger/swaggerDefinitionsFixed.ts deleted file mode 100644 index 1f019805..00000000 --- a/SerpentRace_Backend/src/Api/swagger/swaggerDefinitionsFixed.ts +++ /dev/null @@ -1,2788 +0,0 @@ -/** - * @swagger - * components: - * schemas: - * User: - * type: object - * properties: - * id: - * type: string - * format: uuid - * username: - * type: string - * email: - * type: string - * format: email - * fname: - * type: string - * lname: - * type: string - * phone: - * type: string - * nullable: true - * type: - * type: string - * state: - * type: integer - * regdate: - * type: string - * format: date-time - * updatedate: - * type: string - * format: date-time - * orgid: - * type: string - * nullable: true - * - * CreateUserRequest: - * type: object - * required: - * - username - * - email - * - password - * - fname - * - lname - * - type - * properties: - * username: - * type: string - * email: - * type: string - * format: email - * password: - * type: string - * format: password - * fname: - * type: string - * lname: - * type: string - * phone: - * type: string - * type: - * type: string - * - * LoginRequest: - * type: object - * required: - * - username - * - password - * properties: - * username: - * type: string - * password: - * type: string - * format: password - * - * LoginResponse: - * type: object - * properties: - * token: - * type: string - * user: - * $ref: '#/components/schemas/User' - * requiresOrgReauth: - * type: boolean - * orgLoginUrl: - * type: string - * organizationName: - * type: string - * - * UpdateProfileRequest: - * type: object - * properties: - * fname: - * type: string - * lname: - * type: string - * phone: - * type: string - * email: - * type: string - * format: email - * - * ForgotPasswordRequest: - * type: object - * required: - * - email - * properties: - * email: - * type: string - * format: email - * - * ResetPasswordRequest: - * type: object - * required: - * - token - * - newPassword - * properties: - * token: - * type: string - * newPassword: - * type: string - * format: password - * minLength: 6 - * maxLength: 100 - * - * AuthSuccessResponse: - * type: object - * properties: - * success: - * type: boolean - * message: - * type: string - * - * Organization: - * type: object - * properties: - * id: - * type: string - * format: uuid - * name: - * type: string - * contactfname: - * type: string - * contactlname: - * type: string - * contactphone: - * type: string - * contactemail: - * type: string - * format: email - * state: - * type: integer - * regdate: - * type: string - * format: date-time - * updatedate: - * type: string - * format: date-time - * url: - * type: string - * nullable: true - * userinorg: - * type: integer - * maxOrganizationalDecks: - * type: integer - * - * Deck: - * type: object - * properties: - * id: - * type: string - * format: uuid - * name: - * type: string - * type: - * type: integer - * enum: [0, 1, 2, 3] - * description: 0=JOKER, 1=LUCK, 2=QUESTION, 3=GENERAL - * userid: - * type: string - * format: uuid - * creationdate: - * type: string - * format: date-time - * cards: - * type: array - * items: - * type: object - * playedNumber: - * type: integer - * ctype: - * type: integer - * enum: [0, 1, 2] - * description: 0=PUBLIC, 1=ORGANIZATIONAL, 2=PRIVATE - * updatedate: - * type: string - * format: date-time - * state: - * type: integer - * enum: [0, 1, 2] - * description: 0=ACTIVE, 1=INACTIVE, 2=SOFT_DELETE - * organization: - * $ref: '#/components/schemas/Organization' - * nullable: true - * - * CreateDeckRequest: - * type: object - * required: - * - name - * - type - * - cards - * properties: - * name: - * type: string - * type: - * type: integer - * cards: - * type: array - * items: - * type: object - * ctype: - * type: integer - * - * Chat: - * type: object - * properties: - * id: - * type: string - * format: uuid - * name: - * type: string - * type: - * type: integer - * participants: - * type: array - * items: - * type: string - * creatorId: - * type: string - * gameId: - * type: string - * nullable: true - * createDate: - * type: string - * format: date-time - * updateDate: - * type: string - * format: date-time - * state: - * type: integer - * - * ChatMessage: - * type: object - * properties: - * id: - * type: string - * format: uuid - * senderId: - * type: string - * senderName: - * type: string - * message: - * type: string - * timestamp: - * type: string - * format: date-time - * chatId: - * type: string - * - * Contact: - * type: object - * properties: - * id: - * type: string - * format: uuid - * name: - * type: string - * email: - * type: string - * format: email - * userid: - * type: string - * format: uuid - * nullable: true - * type: - * type: integer - * enum: [0, 1, 2] - * description: 0=QUESTION, 1=BUG_REPORT, 2=SUGGESTION - * txt: - * type: string - * state: - * type: integer - * createDate: - * type: string - * format: date-time - * updateDate: - * type: string - * format: date-time - * adminResponse: - * type: string - * nullable: true - * responseDate: - * type: string - * format: date-time - * nullable: true - * respondedBy: - * type: string - * nullable: true - * - * CreateContactRequest: - * type: object - * required: - * - name - * - email - * - type - * - txt - * properties: - * name: - * type: string - * email: - * type: string - * format: email - * type: - * type: integer - * txt: - * type: string - * - * Game: - * type: object - * properties: - * id: - * type: string - * format: uuid - * gamecode: - * type: string - * maxplayers: - * type: integer - * logintype: - * type: integer - * gamedecks: - * type: array - * players: - * type: array - * items: - * type: string - * started: - * type: boolean - * finished: - * type: boolean - * state: - * type: integer - * createdate: - * type: string - * format: date-time - * - * Error: - * type: object - * properties: - * error: - * type: string - * timestamp: - * type: string - * format: date-time - * details: - * type: string - */ - -/** - * @swagger - * /api/users/login: - * post: - * tags: [Users] - * summary: User login - * description: Authenticate user and return JWT token - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/LoginRequest' - * responses: - * 200: - * description: Login successful - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/LoginResponse' - * 401: - * description: Invalid credentials - */ - -/** - * @swagger - * /api/users/create: - * post: - * tags: [Users] - * summary: Create new user - * description: Register a new user account - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/CreateUserRequest' - * responses: - * 201: - * description: User created successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/User' - * 400: - * description: Validation error - * 409: - * description: User already exists - */ - -/** - * @swagger - * /api/users/profile: - * get: - * tags: [Users] - * summary: Get user profile - * description: Get current user's profile information - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: User profile data - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/User' - * 401: - * description: Unauthorized - * patch: - * tags: [Users] - * summary: Update user profile - * description: Update current user's profile information - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/UpdateProfileRequest' - * responses: - * 200: - * description: Profile updated successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/User' - * 400: - * description: Validation error - * 401: - * description: Unauthorized - */ - -/** - * @swagger - * /api/users/verify-email/{token}: - * get: - * tags: [Users] - * summary: Verify email address - * description: Verify user's email address using verification token - * parameters: - * - name: token - * in: path - * required: true - * schema: - * type: string - * description: Email verification token - * responses: - * 200: - * description: Email verified successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/AuthSuccessResponse' - * 400: - * description: Invalid or expired verification token - * 500: - * description: Internal server error - */ - -/** - * @swagger - * /api/users/forgot-password: - * post: - * tags: [Users] - * summary: Request password reset - * description: Send password reset email to user - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/ForgotPasswordRequest' - * responses: - * 200: - * description: Password reset email sent (if email exists) - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/AuthSuccessResponse' - * 400: - * description: Validation error - * 500: - * description: Internal server error - */ - -/** - * @swagger - * /api/users/reset-password: - * post: - * tags: [Users] - * summary: Reset password - * description: Reset user password using reset token - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/ResetPasswordRequest' - * responses: - * 200: - * description: Password reset successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/AuthSuccessResponse' - * 400: - * description: Invalid token or password validation failed - * 500: - * description: Internal server error - */ - -/** - * @swagger - * /api/organizations/search: - * get: - * tags: [Organizations] - * summary: Search organizations - * description: Search organizations by query - * security: - * - bearerAuth: [] - * parameters: - * - name: query - * in: query - * required: true - * schema: - * type: string - * - name: from - * in: query - * required: true - * schema: - * type: integer - * - name: to - * in: query - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Search results - * content: - * application/json: - * schema: - * type: object - * properties: - * results: - * type: array - * items: - * $ref: '#/components/schemas/Organization' - * totalCount: - * type: integer - */ - -/** - * @swagger - * /api/organizations/{orgId}/login-url: - * get: - * tags: [Organizations] - * summary: Get organization login URL - * description: Get OAuth login URL for organization - * security: - * - bearerAuth: [] - * parameters: - * - name: orgId - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Login URL - * content: - * application/json: - * schema: - * type: object - * properties: - * loginUrl: - * type: string - */ - -/** - * @swagger - * /api/organizations/auth-callback: - * post: - * tags: [Organizations] - * summary: OAuth callback - * description: Handle OAuth callback from organization - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * properties: - * code: - * type: string - * state: - * type: string - * responses: - * 200: - * description: Authentication successful - * 400: - * description: Invalid callback data - */ - -/** - * @swagger - * /api/decks/page/{from}/{to}: - * get: - * tags: [Decks] - * summary: Get decks by page - * description: Retrieve paginated list of decks - * security: - * - bearerAuth: [] - * parameters: - * - name: from - * in: path - * required: true - * schema: - * type: integer - * - name: to - * in: path - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Paginated decks - * content: - * application/json: - * schema: - * type: object - * properties: - * decks: - * type: array - * items: - * $ref: '#/components/schemas/Deck' - * totalCount: - * type: integer - */ - -/** - * @swagger - * /api/decks/search: - * get: - * tags: [Decks] - * summary: Search decks - * description: Search decks by query - * security: - * - bearerAuth: [] - * parameters: - * - name: query - * in: query - * required: true - * schema: - * type: string - * - name: from - * in: query - * required: true - * schema: - * type: integer - * - name: to - * in: query - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Search results - * content: - * application/json: - * schema: - * type: object - * properties: - * results: - * type: array - * items: - * $ref: '#/components/schemas/Deck' - * totalCount: - * type: integer - */ - -/** - * @swagger - * /api/decks/{id}: - * get: - * tags: [Decks] - * summary: Get deck by ID - * description: Retrieve a specific deck by ID - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Deck details - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Deck' - * 404: - * description: Deck not found - * put: - * tags: [Decks] - * summary: Update deck - * description: Update an existing deck - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * requestBody: - * required: true - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/CreateDeckRequest' - * responses: - * 200: - * description: Deck updated successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Deck' - * delete: - * tags: [Decks] - * summary: Delete deck - * description: Delete a deck (soft delete) - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 204: - * description: Deck deleted successfully - * 404: - * description: Deck not found - */ - -/** - * @swagger - * /api/chats/user-chats: - * get: - * tags: [Chats] - * summary: Get user chats - * description: Get all chats for the current user - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: User chats - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Chat' - */ - -/** - * @swagger - * /api/chats/history/{chatId}: - * get: - * tags: [Chats] - * summary: Get chat history - * description: Get message history for a chat - * security: - * - bearerAuth: [] - * parameters: - * - name: chatId - * in: path - * required: true - * schema: - * type: string - * - name: page - * in: query - * schema: - * type: integer - * - name: limit - * in: query - * schema: - * type: integer - * responses: - * 200: - * description: Chat history - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/ChatMessage' - */ - -/** - * @swagger - * /api/chats/message: - * post: - * tags: [Chats] - * summary: Send message - * description: Send a message to a chat - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: - * - chatId - * - message - * properties: - * chatId: - * type: string - * message: - * type: string - * responses: - * 201: - * description: Message sent successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/ChatMessage' - */ - -/** - * @swagger - * /api/chats/archive/{chatId}: - * post: - * tags: [Chats] - * summary: Archive chat - * description: Archive a chat room - * security: - * - bearerAuth: [] - * parameters: - * - name: chatId - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Chat archived successfully - * 404: - * description: Chat not found - */ - -/** - * @swagger - * /api/chats/restore/{chatId}: - * post: - * tags: [Chats] - * summary: Restore chat - * description: Restore an archived chat room - * security: - * - bearerAuth: [] - * parameters: - * - name: chatId - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Chat restored successfully - * 404: - * description: Chat not found - */ - -/** - * @swagger - * /api/contact/create: - * post: - * tags: [Contact] - * summary: Create contact message - * description: Send a contact message to the system - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: - * - name - * - email - * - message - * properties: - * name: - * type: string - * email: - * type: string - * format: email - * subject: - * type: string - * nullable: true - * message: - * type: string - * responses: - * 201: - * description: Contact message sent successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Contact' - */ - -/** - * @swagger - * /api/admin/users: - * get: - * tags: [Admin - Users] - * summary: Get all users (Admin) - * description: Retrieve all users in the system with pagination - * security: - * - bearerAuth: [] - * parameters: - * - name: page - * in: query - * schema: - * type: integer - * default: 1 - * - name: limit - * in: query - * schema: - * type: integer - * default: 10 - * - name: search - * in: query - * schema: - * type: string - * responses: - * 200: - * description: Users retrieved successfully - * content: - * application/json: - * schema: - * type: object - * properties: - * users: - * type: array - * items: - * $ref: '#/components/schemas/User' - * total: - * type: integer - * page: - * type: integer - * limit: - * type: integer - */ - -/** - * @swagger - * /api/admin/users/{id}: - * get: - * tags: [Admin - Users] - * summary: Get user by ID (Admin) - * description: Get detailed information about a specific user - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: User found - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/User' - * 404: - * description: User not found - * put: - * tags: [Admin - Users] - * summary: Update user (Admin) - * description: Update user information by admin - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * properties: - * username: - * type: string - * email: - * type: string - * format: email - * firstName: - * type: string - * lastName: - * type: string - * isActive: - * type: boolean - * role: - * type: string - * enum: [user, admin, moderator] - * responses: - * 200: - * description: User updated successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/User' - * delete: - * tags: [Admin - Users] - * summary: Delete user (Admin) - * description: Delete a user from the system - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: User deleted successfully - * 404: - * description: User not found - */ - -/** - * @swagger - * /api/admin/users/{id}/ban: - * post: - * tags: [Admin - Users] - * summary: Ban user (Admin) - * description: Ban a user from the system - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * requestBody: - * content: - * application/json: - * schema: - * type: object - * properties: - * reason: - * type: string - * duration: - * type: string - * description: Ban duration in ISO format or 'permanent' - * responses: - * 200: - * description: User banned successfully - */ - -/** - * @swagger - * /api/admin/users/{id}/unban: - * post: - * tags: [Admin - Users] - * summary: Unban user (Admin) - * description: Remove ban from a user - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: User unbanned successfully - */ - -/** - * @swagger - * /api/admin/decks: - * get: - * tags: [Admin - Decks] - * summary: Get all decks (Admin) - * description: Retrieve all decks in the system with pagination - * security: - * - bearerAuth: [] - * parameters: - * - name: page - * in: query - * schema: - * type: integer - * default: 1 - * - name: limit - * in: query - * schema: - * type: integer - * default: 10 - * - name: search - * in: query - * schema: - * type: string - * - name: status - * in: query - * schema: - * type: string - * enum: [public, private, reported] - * responses: - * 200: - * description: Decks retrieved successfully - * content: - * application/json: - * schema: - * type: object - * properties: - * decks: - * type: array - * items: - * $ref: '#/components/schemas/Deck' - * total: - * type: integer - * page: - * type: integer - * limit: - * type: integer - */ - -/** - * @swagger - * /api/admin/decks/{id}: - * get: - * tags: [Admin - Decks] - * summary: Get deck by ID (Admin) - * description: Get detailed information about a specific deck - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Deck found - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Deck' - * 404: - * description: Deck not found - * put: - * tags: [Admin - Decks] - * summary: Update deck (Admin) - * description: Update deck information by admin - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * properties: - * name: - * type: string - * description: - * type: string - * isPublic: - * type: boolean - * isActive: - * type: boolean - * responses: - * 200: - * description: Deck updated successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Deck' - * delete: - * tags: [Admin - Decks] - * summary: Delete deck (Admin) - * description: Delete a deck from the system - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Deck deleted successfully - * 404: - * description: Deck not found - */ - -/** - * @swagger - * /api/admin/decks/{id}/moderate: - * post: - * tags: [Admin - Decks] - * summary: Moderate deck (Admin) - * description: Approve or reject a deck for public visibility - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: - * - action - * properties: - * action: - * type: string - * enum: [approve, reject, flag] - * reason: - * type: string - * responses: - * 200: - * description: Deck moderated successfully - */ - -/** - * @swagger - * /api/admin/organizations: - * get: - * tags: [Admin - Organizations] - * summary: Get all organizations (Admin) - * description: Retrieve all organizations in the system with pagination - * security: - * - bearerAuth: [] - * parameters: - * - name: page - * in: query - * schema: - * type: integer - * default: 1 - * - name: limit - * in: query - * schema: - * type: integer - * default: 10 - * - name: search - * in: query - * schema: - * type: string - * responses: - * 200: - * description: Organizations retrieved successfully - * content: - * application/json: - * schema: - * type: object - * properties: - * organizations: - * type: array - * items: - * $ref: '#/components/schemas/Organization' - * total: - * type: integer - * page: - * type: integer - * limit: - * type: integer - */ - -/** - * @swagger - * /api/admin/organizations/{id}: - * get: - * tags: [Admin - Organizations] - * summary: Get organization by ID (Admin) - * description: Get detailed information about a specific organization - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Organization found - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Organization' - * 404: - * description: Organization not found - * put: - * tags: [Admin - Organizations] - * summary: Update organization (Admin) - * description: Update organization information by admin - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * properties: - * name: - * type: string - * description: - * type: string - * isActive: - * type: boolean - * responses: - * 200: - * description: Organization updated successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Organization' - * delete: - * tags: [Admin - Organizations] - * summary: Delete organization (Admin) - * description: Delete an organization from the system - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Organization deleted successfully - * 404: - * description: Organization not found - */ - -/** - * @swagger - * /api/admin/organizations/{id}/members: - * get: - * tags: [Admin - Organizations] - * summary: Get organization members (Admin) - * description: Get all members of an organization - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Organization members - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/User' - */ - -/** - * @swagger - * /api/admin/chats: - * get: - * tags: [Admin - Chats] - * summary: Get all chats (Admin) - * description: Retrieve all chats in the system with pagination - * security: - * - bearerAuth: [] - * parameters: - * - name: page - * in: query - * schema: - * type: integer - * default: 1 - * - name: limit - * in: query - * schema: - * type: integer - * default: 10 - * - name: search - * in: query - * schema: - * type: string - * - name: status - * in: query - * schema: - * type: string - * enum: [active, archived, reported] - * responses: - * 200: - * description: Chats retrieved successfully - * content: - * application/json: - * schema: - * type: object - * properties: - * chats: - * type: array - * items: - * $ref: '#/components/schemas/Chat' - * total: - * type: integer - * page: - * type: integer - * limit: - * type: integer - */ - -/** - * @swagger - * /api/admin/chats/{id}: - * get: - * tags: [Admin - Chats] - * summary: Get chat by ID (Admin) - * description: Get detailed information about a specific chat - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Chat found - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Chat' - * 404: - * description: Chat not found - * delete: - * tags: [Admin - Chats] - * summary: Delete chat (Admin) - * description: Delete a chat from the system - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Chat deleted successfully - * 404: - * description: Chat not found - */ - -/** - * @swagger - * /api/admin/chats/{id}/messages: - * get: - * tags: [Admin - Chats] - * summary: Get chat messages (Admin) - * description: Get all messages in a chat - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * - name: page - * in: query - * schema: - * type: integer - * - name: limit - * in: query - * schema: - * type: integer - * responses: - * 200: - * description: Chat messages - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/ChatMessage' - */ - -/** - * @swagger - * /api/admin/chats/{id}/moderate: - * post: - * tags: [Admin - Chats] - * summary: Moderate chat (Admin) - * description: Moderate a chat room (archive, restore, flag) - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: - * - action - * properties: - * action: - * type: string - * enum: [archive, restore, flag, unflag] - * reason: - * type: string - * responses: - * 200: - * description: Chat moderated successfully - */ - -/** - * @swagger - * /api/admin/contacts: - * get: - * tags: [Admin - Contacts] - * summary: Get all contact messages (Admin) - * description: Retrieve all contact messages with pagination - * security: - * - bearerAuth: [] - * parameters: - * - name: page - * in: query - * schema: - * type: integer - * default: 1 - * - name: limit - * in: query - * schema: - * type: integer - * default: 10 - * - name: status - * in: query - * schema: - * type: string - * enum: [unread, read, resolved] - * - name: search - * in: query - * schema: - * type: string - * responses: - * 200: - * description: Contact messages retrieved successfully - * content: - * application/json: - * schema: - * type: object - * properties: - * contacts: - * type: array - * items: - * $ref: '#/components/schemas/Contact' - * total: - * type: integer - * page: - * type: integer - * limit: - * type: integer - */ - -/** - * @swagger - * /api/admin/contacts/{id}: - * get: - * tags: [Admin - Contacts] - * summary: Get contact message by ID (Admin) - * description: Get detailed information about a specific contact message - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Contact message found - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Contact' - * 404: - * description: Contact message not found - * put: - * tags: [Admin - Contacts] - * summary: Update contact message status (Admin) - * description: Update the status of a contact message - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * properties: - * status: - * type: string - * enum: [unread, read, resolved] - * adminNotes: - * type: string - * responses: - * 200: - * description: Contact message updated successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Contact' - * delete: - * tags: [Admin - Contacts] - * summary: Delete contact message (Admin) - * description: Delete a contact message from the system - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Contact message deleted successfully - * 404: - * description: Contact message not found - */ - -/** - * @swagger - * /api/admin/contacts/{id}/reply: - * post: - * tags: [Admin - Contacts] - * summary: Reply to contact message (Admin) - * description: Send a reply to a contact message - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: - * - reply - * properties: - * reply: - * type: string - * responses: - * 200: - * description: Reply sent successfully - */ - -/** - * @swagger - * /api/admin/games: - * get: - * tags: [Admin - Games] - * summary: Get all games (Admin) - * description: Retrieve all games in the system with pagination - * security: - * - bearerAuth: [] - * parameters: - * - name: page - * in: query - * schema: - * type: integer - * default: 1 - * - name: limit - * in: query - * schema: - * type: integer - * default: 10 - * - name: status - * in: query - * schema: - * type: string - * enum: [active, completed, abandoned] - * responses: - * 200: - * description: Games retrieved successfully - * content: - * application/json: - * schema: - * type: object - * properties: - * games: - * type: array - * items: - * $ref: '#/components/schemas/Game' - * total: - * type: integer - * page: - * type: integer - * limit: - * type: integer - */ - -/** - * @swagger - * /api/admin/games/{id}: - * get: - * tags: [Admin - Games] - * summary: Get game by ID (Admin) - * description: Get detailed information about a specific game - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Game found - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Game' - * 404: - * description: Game not found - * delete: - * tags: [Admin - Games] - * summary: Delete game (Admin) - * description: Delete a game from the system - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Game deleted successfully - * 404: - * description: Game not found - */ - -/** - * @swagger - * /api/admin/system/stats: - * get: - * tags: [Admin - System] - * summary: Get system statistics (Admin) - * description: Get comprehensive system statistics - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: System statistics - * content: - * application/json: - * schema: - * type: object - * properties: - * uptime: - * type: string - * version: - * type: string - * memoryUsage: - * type: object - * activeConnections: - * type: integer - * databaseHealth: - * type: string - * redisHealth: - * type: string - */ - -/** - * @swagger - * /api/admin/system/logs: - * get: - * tags: [Admin - System] - * summary: Get system logs (Admin) - * description: Retrieve system logs with filtering - * security: - * - bearerAuth: [] - * parameters: - * - name: level - * in: query - * schema: - * type: string - * enum: [error, warn, info, debug] - * - name: limit - * in: query - * schema: - * type: integer - * default: 100 - * - name: since - * in: query - * schema: - * type: string - * format: date-time - * responses: - * 200: - * description: System logs - * content: - * application/json: - * schema: - * type: array - * items: - * type: object - * properties: - * timestamp: - * type: string - * level: - * type: string - * message: - * type: string - * metadata: - * type: object - */ - -/** - * @swagger - * /api/health: - * get: - * tags: [System] - * summary: Health check - * description: Check the health status of the API - * responses: - * 200: - * description: Service is healthy - * content: - * application/json: - * schema: - * type: object - * properties: - * status: - * type: string - * example: "OK" - * timestamp: - * type: string - * format: date-time - * version: - * type: string - */ - -/** - * @swagger - * components: - * securitySchemes: - * bearerAuth: - * type: http - * scheme: bearer - * schemas: - * User: - * type: object - * properties: - * id: - * type: string - * format: uuid - * username: - * type: string - * email: - * type: string - * format: email - * fname: - * type: string - * lname: - * type: string - * phone: - * type: string - * nullable: true - * type: - * type: string - * state: - * type: integer - * regdate: - * type: string - * format: date-time - * updatedate: - * type: string - * format: date-time - * orgid: - * type: string - * nullable: true - * Deck: - * type: object - * properties: - * id: - * type: string - * format: uuid - * name: - * type: string - * type: - * type: integer - * userid: - * type: string - * format: uuid - * creationdate: - * type: string - * format: date-time - * cards: - * type: array - * items: - * type: object - * Organization: - * type: object - * properties: - * id: - * type: string - * format: uuid - * name: - * type: string - * description: - * type: string - * members: - * type: array - * items: - * $ref: '#/components/schemas/User' - * Contact: - * type: object - * properties: - * id: - * type: string - * format: uuid - * name: - * type: string - * email: - * type: string - * format: email - * type: - * type: integer - * txt: - * type: string - * userid: - * type: string - * nullable: true - * createdate: - * type: string - * format: date-time - * Chat: - * type: object - * properties: - * id: - * type: string - * format: uuid - * name: - * type: string - * gameId: - * type: string - * format: uuid - * messages: - * type: array - * items: - * $ref: '#/components/schemas/ChatMessage' - * ChatMessage: - * type: object - * properties: - * id: - * type: string - * format: uuid - * chatId: - * type: string - * format: uuid - * senderId: - * type: string - * format: uuid - * message: - * type: string - * timestamp: - * type: string - * format: date-time - * Game: - * type: object - * properties: - * id: - * type: string - * format: uuid - * deckids: - * type: array - * items: - * type: string - * maxplayers: - * type: integer - * logintype: - * type: string - * state: - * type: string - * createdate: - * type: string - * format: date-time - */ - -/** - * @swagger - * tags: - * - name: Users - * - name: Decks - * - name: Organizations - * - name: Contact - * - name: Chats - * - name: Games - * - name: Admin - Users - * - name: Admin - Decks - * - name: Admin - Organizations - * - name: Admin - Contacts - * - name: Admin - Chats - * - name: Admin - Games - * - name: System - */ - -// User endpoints -/** - * @swagger - * /api/users/login: - * post: - * tags: [Users] - * summary: User login - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: [username, password] - * properties: - * username: - * type: string - * password: - * type: string - * responses: - * 200: - * description: Login successful - * content: - * application/json: - * schema: - * type: object - * properties: - * token: - * type: string - */ - -/** - * @swagger - * /api/users/create: - * post: - * tags: [Users] - * summary: Create user - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: [username, email, password] - * properties: - * username: - * type: string - * email: - * type: string - * password: - * type: string - * responses: - * 201: - * description: User created - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/User' - */ - -// ...existing code... -/** - * @swagger - * /api/decks/page/{from}/{to}: - * get: - * tags: [Decks] - * summary: Get decks with pagination - * security: - * - bearerAuth: [] - * parameters: - * - name: from - * in: path - * required: true - * schema: - * type: integer - * - name: to - * in: path - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Paginated decks - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Deck' - */ - -/** - * @swagger - * /api/decks/search: - * get: - * tags: [Decks] - * summary: Search decks - * security: - * - bearerAuth: [] - * parameters: - * - name: q - * in: query - * schema: - * type: string - * responses: - * 200: - * description: Search results - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Deck' - */ - -/** - * @swagger - * /api/decks/{id}: - * get: - * tags: [Decks] - * summary: Get deck by ID - * security: - * - bearerAuth: [] - * parameters: - * - name: id - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Deck found - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Deck' - * 404: - * description: Deck not found - */ - -/** - * @swagger - * /api/organizations/page/{from}/{to}: - * get: - * tags: [Organizations] - * summary: Get organizations with pagination - * security: - * - bearerAuth: [] - * parameters: - * - name: from - * in: path - * required: true - * schema: - * type: integer - * - name: to - * in: path - * required: true - * schema: - * type: integer - * responses: - * 200: - * description: Paginated organizations - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Organization' - */ - -/** - * @swagger - * /api/organizations/search: - * get: - * tags: [Organizations] - * summary: Search organizations - * security: - * - bearerAuth: [] - * parameters: - * - name: q - * in: query - * schema: - * type: string - * responses: - * 200: - * description: Search results - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Organization' - */ - -/** - * @swagger - * /api/contact/create: - * post: - * tags: [Contact] - * summary: Create contact message - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: [name, email, txt] - * properties: - * name: - * type: string - * email: - * type: string - * format: email - * txt: - * type: string - * responses: - * 201: - * description: Contact created - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Contact' - */ - -/** - * @swagger - * /api/chats/create: - * post: - * tags: [Chats] - * summary: Create chat - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: [name, gameId] - * properties: - * name: - * type: string - * gameId: - * type: string - * responses: - * 201: - * description: Chat created - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Chat' - */ - -/** - * @swagger - * /api/chats/history/{chatId}: - * get: - * tags: [Chats] - * summary: Get chat history - * security: - * - bearerAuth: [] - * parameters: - * - name: chatId - * in: path - * required: true - * schema: - * type: string - * responses: - * 200: - * description: Chat history - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/ChatMessage' - */ - -/** - * @swagger - * /api/games/start: - * post: - * tags: [Games] - * summary: Start a new game - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: [deckids, maxplayers, logintype] - * properties: - * deckids: - * type: array - * items: - * type: string - * maxplayers: - * type: integer - * logintype: - * type: string - * responses: - * 201: - * description: Game started - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Game' - */ - -/** - * @swagger - * /api/games/join: - * post: - * tags: [Games] - * summary: Join a game - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: [gameId] - * properties: - * gameId: - * type: string - * responses: - * 200: - * description: Joined game - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Game' - */ - -// Admin endpoints (examples) -/** - * @swagger - * /api/admin/users: - * get: - * tags: [Admin - Users] - * summary: Get all users (Admin) - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: Users retrieved - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/User' - */ - -/** - * @swagger - * /api/admin/decks: - * get: - * tags: [Admin - Decks] - * summary: Get all decks (Admin) - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: Decks retrieved - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Deck' - */ - -/** - * @swagger - * /api/admin/organizations: - * get: - * tags: [Admin - Organizations] - * summary: Get all organizations (Admin) - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: Organizations retrieved - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Organization' - */ - -/** - * @swagger - * /api/admin/contacts: - * get: - * tags: [Admin - Contacts] - * summary: Get all contact messages (Admin) - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: Contacts retrieved - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Contact' - */ - -/** - * @swagger - * /api/admin/chats: - * get: - * tags: [Admin - Chats] - * summary: Get all chats (Admin) - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: Chats retrieved - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Chat' - */ - -/** - * @swagger - * /api/admin/games: - * get: - * tags: [Admin - Games] - * summary: Get all games (Admin) - * security: - * - bearerAuth: [] - * responses: - * 200: - * description: Games retrieved - * content: - * application/json: - * schema: - * type: array - * items: - * $ref: '#/components/schemas/Game' - */ - -/** - * @swagger - * /api/contacts: - * post: - * tags: [Contacts] - * summary: Create contact - * description: Create a new contact message - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: - * - name - * - email - * - type - * - txt - * properties: - * name: - * type: string - * email: - * type: string - * format: email - * type: - * type: integer - * enum: [0, 1, 2] - * description: 0=QUESTION, 1=BUG_REPORT, 2=SUGGESTION - * txt: - * type: string - * responses: - * 201: - * description: Contact created successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Contact' - */ - -/** - * @swagger - * /api/deck-import-export/export/{deckId}: - * get: - * tags: [Deck Import/Export] - * summary: Export deck - * description: Export a deck as JSON or .spr file - * security: - * - bearerAuth: [] - * parameters: - * - name: deckId - * in: path - * required: true - * schema: - * type: string - * - name: format - * in: query - * schema: - * type: string - * enum: [json, spr] - * default: json - * responses: - * 200: - * description: Deck exported successfully - * content: - * application/json: - * schema: - * type: object - * application/octet-stream: - * schema: - * type: string - * format: binary - */ - -/** - * @swagger - * /api/deck-import-export/import: - * post: - * tags: [Deck Import/Export] - * summary: Import deck - * description: Import a deck from JSON or .spr file - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * multipart/form-data: - * schema: - * type: object - * properties: - * file: - * type: string - * format: binary - * responses: - * 201: - * description: Deck imported successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Deck' - */ - -/** - * @swagger - * /api/games/start: - * post: - * summary: Start a new game - * tags: [Games] - * security: - * - bearerAuth: [] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: - * - deckids - * - maxplayers - * - logintype - * properties: - * deckids: - * type: array - * items: - * type: string - * description: Array of deck IDs (must include all 3 types LUCK, JOKER, QUESTION) - * maxplayers: - * type: integer - * minimum: 2 - * maximum: 8 - * description: Maximum number of players allowed in the game - * logintype: - * type: integer - * enum: [0, 1, 2] - * description: How players can join (PUBLIC=0, PRIVATE=1, ORGANIZATION=2) - * responses: - * 200: - * description: Game started successfully - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Game' - * 400: - * description: Invalid input parameters - * 401: - * description: Authentication required - * 500: - * description: Internal server error - */ - -/** - * @swagger - * /api/games/join: - * post: - * summary: Join a game (automatically detects game type) - * description: Join any game by providing the game code. The system automatically determines if authentication is required based on the game type. - * tags: [Games] - * requestBody: - * required: true - * content: - * application/json: - * schema: - * type: object - * required: - * - gameCode - * properties: - * gameCode: - * type: string - * description: 6-character game code - * example: "ABC123" - * playerName: - * type: string - * description: Display name for the player (required for public games, optional for authenticated games) - * example: "John Doe" - * responses: - * 200: - * description: Successfully joined the game - * content: - * application/json: - * schema: - * $ref: '#/components/schemas/Game' - * 400: - * description: Invalid input or missing required fields - * 401: - * description: Authentication required for this game type - * 403: - * description: Organization membership required - * 404: - * description: Game not found - * 409: - * description: Game is full or not accepting players - * 500: - * description: Internal server error - */ - -/** - * @swagger - * /api/games/{gameId}/start: - * post: - * summary: Start gameplay for an existing game - * description: Initialize gameplay by setting all player positions to 0 and assigning random turn order. This is separate from game creation. - * tags: [Games] - * parameters: - * - in: path - * name: gameId - * required: true - * schema: - * type: string - * description: The ID of the game to start - * responses: - * 200: - * description: Game started successfully - * content: - * application/json: - * schema: - * type: object - * properties: - * message: - * type: string - * example: "Game started successfully" - * gameId: - * type: string - * example: "game123" - * playerCount: - * type: number - * example: 4 - * 400: - * description: Invalid input or game cannot be started - * 401: - * description: Authentication required - * 403: - * description: Only game master can start the game - * 404: - * description: Game not found - * 409: - * description: Game already started or not ready to start - * 500: - * description: Internal server error - */ - -export {}; \ No newline at end of file diff --git a/SerpentRace_Backend/src/Api/swagger/swaggerUiSetup.ts b/SerpentRace_Backend/src/Api/swagger/swaggerUiSetup.ts deleted file mode 100644 index f474fe87..00000000 --- a/SerpentRace_Backend/src/Api/swagger/swaggerUiSetup.ts +++ /dev/null @@ -1,7 +0,0 @@ -import express from 'express'; -import swaggerUi from 'swagger-ui-express'; -import { swaggerSpec } from './swaggerConfig'; - -export function setupSwagger(app: express.Application) { - app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec)); -} diff --git a/SerpentRace_Backend/src/Application/Chat/commands/ChatArchiveCommandHandlers.ts b/SerpentRace_Backend/src/Application/Chat/commands/ChatArchiveCommandHandlers.ts deleted file mode 100644 index c9456564..00000000 --- a/SerpentRace_Backend/src/Application/Chat/commands/ChatArchiveCommandHandlers.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { ArchiveChatCommand, RestoreChatCommand } from './ChatCommands'; -import { IChatRepository } from '../../../Domain/IRepository/IChatRepository'; -import { ChatType } from '../../../Domain/Chat/ChatAggregate'; -import { logAuth, logError, logWarning } from '../../Services/Logger'; - -export class ArchiveChatCommandHandler { - constructor(private chatRepository: IChatRepository) {} - - async execute(command: ArchiveChatCommand): Promise { - try { - const chat = await this.chatRepository.findById(command.chatId); - if (!chat) { - throw new Error('Chat not found'); - } - - await this.chatRepository.archiveChat(chat); - - logAuth('Chat archived manually', undefined, { - chatId: command.chatId, - chatType: chat.type, - messageCount: chat.messages.length - }); - - return true; - - } catch (error) { - logError('ArchiveChatCommandHandler error', error as Error); - return false; - } - } -} - -export class RestoreChatCommandHandler { - constructor(private chatRepository: IChatRepository) {} - - async execute(command: RestoreChatCommand): Promise { - try { - const archive = await this.chatRepository.getArchivedChat(command.chatId); - if (!archive) { - throw new Error('Archived chat not found'); - } - - // Game chats cannot be restored, only viewed - if (archive.chatType === ChatType.GAME) { - logWarning('Attempt to restore game chat blocked', { - chatId: command.chatId, - chatType: archive.chatType - }); - return false; - } - - const restoredChat = await this.chatRepository.restoreFromArchive(command.chatId); - if (!restoredChat) { - throw new Error('Failed to restore chat from archive'); - } - - logAuth('Chat restored from archive', undefined, { - chatId: command.chatId, - messageCount: archive.archivedMessages.length - }); - - return true; - - } catch (error) { - logError('RestoreChatCommandHandler error', error as Error); - return false; - } - } -} diff --git a/SerpentRace_Backend/src/Application/Chat/commands/ChatCommands.ts b/SerpentRace_Backend/src/Application/Chat/commands/ChatCommands.ts deleted file mode 100644 index 41d2bb47..00000000 --- a/SerpentRace_Backend/src/Application/Chat/commands/ChatCommands.ts +++ /dev/null @@ -1,21 +0,0 @@ -export interface CreateChatCommand { - type: 'direct' | 'group' | 'game'; - name?: string; - gameId?: string; - createdBy: string; - userIds: string[]; -} - -export interface SendMessageCommand { - chatId: string; - userId: string; - message: string; -} - -export interface ArchiveChatCommand { - chatId: string; -} - -export interface RestoreChatCommand { - chatId: string; -} diff --git a/SerpentRace_Backend/src/Application/Chat/commands/CreateChatCommandHandler.ts b/SerpentRace_Backend/src/Application/Chat/commands/CreateChatCommandHandler.ts deleted file mode 100644 index d007c28b..00000000 --- a/SerpentRace_Backend/src/Application/Chat/commands/CreateChatCommandHandler.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { CreateChatCommand } from './ChatCommands'; -import { IChatRepository } from '../../../Domain/IRepository/IChatRepository'; -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { ChatType, ChatAggregate } from '../../../Domain/Chat/ChatAggregate'; -import { UserState } from '../../../Domain/User/UserAggregate'; -import { logAuth, logError } from '../../Services/Logger'; - -export class CreateChatCommandHandler { - constructor( - private chatRepository: IChatRepository, - private userRepository: IUserRepository - ) {} - - async execute(command: CreateChatCommand): Promise { - try { - // Validate creator exists - const creator = await this.userRepository.findById(command.createdBy); - if (!creator) { - throw new Error('Creator not found'); - } - - // For group chats, check if creator is premium - if (command.type === 'group' && creator.state !== UserState.VERIFIED_PREMIUM) { - throw new Error('Premium subscription required to create groups'); - } - - // Validate all target users exist - const targetUsers = await Promise.all( - command.userIds.map(id => this.userRepository.findById(id)) - ); - - if (targetUsers.some(user => !user)) { - throw new Error('One or more target users not found'); - } - - // For direct chats, check if already exists - if (command.type === 'direct' && command.userIds.length === 1) { - const existingChats = await this.chatRepository.findByUserId(command.createdBy); - const existingDirectChat = existingChats.find(chat => - chat.type === ChatType.DIRECT && - chat.users.length === 2 && - chat.users.includes(command.userIds[0]) - ); - - if (existingDirectChat) { - return existingDirectChat; - } - } - - // For game chats, check if already exists - if (command.type === 'game' && command.gameId) { - const existingGameChat = await this.chatRepository.findByGameId(command.gameId); - if (existingGameChat) { - return existingGameChat; - } - } - - // Create chat - const chatData: Partial = { - type: command.type as any, - name: command.name, - gameId: command.gameId, - createdBy: command.createdBy, - users: [command.createdBy, ...command.userIds], - messages: [], - lastActivity: new Date() - }; - - const chat = await this.chatRepository.create(chatData); - - logAuth('Chat created successfully', command.createdBy, { - chatId: chat.id, - chatType: command.type, - participantCount: chat.users.length, - gameId: command.gameId - }); - - return chat; - - } catch (error) { - logError('CreateChatCommandHandler error', error as Error); - return null; - } - } -} diff --git a/SerpentRace_Backend/src/Application/Chat/commands/SendMessageCommandHandler.ts b/SerpentRace_Backend/src/Application/Chat/commands/SendMessageCommandHandler.ts deleted file mode 100644 index 8bd6903a..00000000 --- a/SerpentRace_Backend/src/Application/Chat/commands/SendMessageCommandHandler.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { SendMessageCommand } from './ChatCommands'; -import { IChatRepository } from '../../../Domain/IRepository/IChatRepository'; -import { Message } from '../../../Domain/Chat/ChatAggregate'; -import { logAuth, logError } from '../../Services/Logger'; -import { v4 as uuidv4 } from 'uuid'; - -export class SendMessageCommandHandler { - constructor(private chatRepository: IChatRepository) {} - - async execute(command: SendMessageCommand): Promise { - try { - // Validate message is non-empty string - if (typeof command.message !== 'string' || !command.message.trim()) { - throw new Error('Message must be a non-empty string'); - } - - const chat = await this.chatRepository.findById(command.chatId); - if (!chat) { - throw new Error('Chat not found'); - } - - // Check if user is member of this chat - if (!chat.users.includes(command.userId)) { - throw new Error('User is not a member of this chat'); - } - - // Create message - const message: Message = { - id: uuidv4(), - date: new Date(), - userid: command.userId, - text: command.message.trim() - }; - - // Manage message history (keep last 10 per user, up to 2 weeks) - let updatedMessages = [...chat.messages, message]; - updatedMessages = this.pruneMessages(updatedMessages); - - // Update chat - await this.chatRepository.update(command.chatId, { - messages: updatedMessages, - lastActivity: new Date() - }); - - logAuth('Message sent successfully', command.userId, { - chatId: command.chatId, - messageLength: command.message.length, - totalMessages: updatedMessages.length - }); - - return message; - - } catch (error) { - logError('SendMessageCommandHandler error', error as Error); - return null; - } - } - - private pruneMessages(messages: Message[]): Message[] { - const twoWeeksAgo = new Date(Date.now() - 14 * 24 * 60 * 60 * 1000); - - // Remove messages older than 2 weeks - let prunedMessages = messages.filter(msg => new Date(msg.date) > twoWeeksAgo); - - // Group by user and keep last 10 messages per user - const messagesByUser = new Map(); - prunedMessages.forEach(msg => { - if (!messagesByUser.has(msg.userid)) { - messagesByUser.set(msg.userid, []); - } - messagesByUser.get(msg.userid)!.push(msg); - }); - - // Keep only last 10 messages per user - const finalMessages: Message[] = []; - messagesByUser.forEach((userMessages, userId) => { - const last10 = userMessages.slice(-10); - finalMessages.push(...last10); - }); - - // Sort by date - return finalMessages.sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime()); - } -} diff --git a/SerpentRace_Backend/src/Application/Chat/commands/SoftDeleteCommandHandlers.ts b/SerpentRace_Backend/src/Application/Chat/commands/SoftDeleteCommandHandlers.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/SerpentRace_Backend/src/Application/Chat/queries/ChatHistoryQueryHandlers.ts b/SerpentRace_Backend/src/Application/Chat/queries/ChatHistoryQueryHandlers.ts deleted file mode 100644 index 5f215037..00000000 --- a/SerpentRace_Backend/src/Application/Chat/queries/ChatHistoryQueryHandlers.ts +++ /dev/null @@ -1,141 +0,0 @@ -import { GetChatHistoryQuery, GetArchivedChatsQuery } from './ChatQueries'; -import { IChatRepository } from '../../../Domain/IRepository/IChatRepository'; -import { IChatArchiveRepository } from '../../../Domain/IRepository/IChatArchiveRepository'; -import { Message } from '../../../Domain/Chat/ChatAggregate'; -import { logAuth, logError, logWarning } from '../../Services/Logger'; - -interface ChatHistoryResult { - chatId: string; - messages: Message[]; - isArchived: boolean; - chatInfo: { - type: string; - name: string | null; - gameId: string | null; - users: string[]; - }; -} - -export class GetChatHistoryQueryHandler { - constructor( - private chatRepository: IChatRepository, - private chatArchiveRepository: IChatArchiveRepository - ) {} - - async execute(query: GetChatHistoryQuery): Promise { - try { - // First try to find active chat - const chat = await this.chatRepository.findById(query.chatId); - - if (chat) { - // Check authorization - if (!chat.users.includes(query.userId)) { - logWarning('Unauthorized chat history access attempt', { - chatId: query.chatId, - userId: query.userId - }); - return null; - } - - logAuth('Chat history retrieved', query.userId, { - chatId: query.chatId, - messageCount: chat.messages.length, - isArchived: false - }); - - return { - chatId: query.chatId, - messages: chat.messages, - isArchived: false, - chatInfo: { - type: chat.type, - name: chat.name, - gameId: chat.gameId, - users: chat.users - } - }; - } - - // Try to find in archives - const archives = await this.chatArchiveRepository.findByChatId(query.chatId); - const userArchive = archives.find(archive => - archive.participants.includes(query.userId) - ); - - if (userArchive) { - logAuth('Archived chat history retrieved', query.userId, { - chatId: query.chatId, - messageCount: userArchive.archivedMessages.length, - isArchived: true - }); - - return { - chatId: query.chatId, - messages: userArchive.archivedMessages, - isArchived: true, - chatInfo: { - type: userArchive.chatType, - name: userArchive.chatName, - gameId: userArchive.gameId, - users: userArchive.participants - } - }; - } - - logWarning('Chat history not found', { - chatId: query.chatId, - userId: query.userId - }); - - return null; - - } catch (error) { - logError('GetChatHistoryQueryHandler error', error as Error); - return null; - } - } -} - -export class GetArchivedChatsQueryHandler { - constructor(private chatArchiveRepository: IChatArchiveRepository) {} - - async execute(query: GetArchivedChatsQuery): Promise { - try { - let archives: any[] = []; - - if (query.gameId) { - // Get archived game chats - archives = await this.chatArchiveRepository.findByGameId(query.gameId); - } else { - // Get all archived chats for user (would need different query) - // For now, return empty - this would need a new repository method - archives = []; - } - - const result = archives - .filter(archive => archive.participants.includes(query.userId)) - .map(archive => ({ - chatId: archive.chatId, - messages: archive.archivedMessages, - isArchived: true, - chatInfo: { - type: archive.chatType, - name: archive.chatName, - gameId: archive.gameId, - users: archive.participants - } - })); - - logAuth('Archived chats retrieved', query.userId, { - count: result.length, - gameId: query.gameId - }); - - return result; - - } catch (error) { - logError('GetArchivedChatsQueryHandler error', error as Error); - return []; - } - } -} diff --git a/SerpentRace_Backend/src/Application/Chat/queries/ChatQueries.ts b/SerpentRace_Backend/src/Application/Chat/queries/ChatQueries.ts deleted file mode 100644 index 69e0b36c..00000000 --- a/SerpentRace_Backend/src/Application/Chat/queries/ChatQueries.ts +++ /dev/null @@ -1,14 +0,0 @@ -export interface GetUserChatsQuery { - userId: string; - includeArchived?: boolean; -} - -export interface GetChatHistoryQuery { - chatId: string; - userId: string; // For authorization -} - -export interface GetArchivedChatsQuery { - userId: string; - gameId?: string; -} diff --git a/SerpentRace_Backend/src/Application/Chat/queries/GetChatsByPageQuery.ts b/SerpentRace_Backend/src/Application/Chat/queries/GetChatsByPageQuery.ts deleted file mode 100644 index 18fc595d..00000000 --- a/SerpentRace_Backend/src/Application/Chat/queries/GetChatsByPageQuery.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface GetChatsByPageQuery { - from: number; - to: number; - includeDeleted?: boolean; -} diff --git a/SerpentRace_Backend/src/Application/Chat/queries/GetChatsByPageQueryHandler.ts b/SerpentRace_Backend/src/Application/Chat/queries/GetChatsByPageQueryHandler.ts deleted file mode 100644 index fbafa33c..00000000 --- a/SerpentRace_Backend/src/Application/Chat/queries/GetChatsByPageQueryHandler.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { IChatRepository } from '../../../Domain/IRepository/IChatRepository'; -import { GetChatsByPageQuery } from './GetChatsByPageQuery'; -import { ShortChatDto } from '../../DTOs/ChatDto'; -import { ChatMapper } from '../../DTOs/Mappers/ChatMapper'; -import { logRequest, logError } from '../../Services/Logger'; - -export class GetChatsByPageQueryHandler { - constructor(private readonly chatRepo: IChatRepository) {} - - async execute(query: GetChatsByPageQuery): Promise<{ chats: ShortChatDto[], totalCount: number }> { - try { - // Validate pagination parameters - if (query.from < 0 || query.to < query.from) { - throw new Error('Invalid pagination parameters'); - } - - const limit = query.to - query.from + 1; - if (limit > 100) { - throw new Error('Page size too large. Maximum 100 records per request'); - } - - logRequest('Get chats by page query started', undefined, undefined, { - from: query.from, - to: query.to, - includeDeleted: query.includeDeleted || false - }); - - const result = query.includeDeleted - ? await this.chatRepo.findByPageIncludingDeleted(query.from, query.to) - : await this.chatRepo.findByPage(query.from, query.to); - - logRequest('Get chats by page query completed', undefined, undefined, { - from: query.from, - to: query.to, - returned: result.chats.length, - totalCount: result.totalCount, - includeDeleted: query.includeDeleted || false - }); - - return { - chats: ChatMapper.toShortDtoList(result.chats), - totalCount: result.totalCount - }; - } catch (error) { - logError('GetChatsByPageQueryHandler error', error instanceof Error ? error : new Error(String(error))); - - // Re-throw validation errors as-is - if (error instanceof Error && (error.message.includes('Invalid pagination') || error.message.includes('Page size'))) { - throw error; - } - - throw new Error('Failed to retrieve chats page'); - } - } -} diff --git a/SerpentRace_Backend/src/Application/Chat/queries/GetUserChatsQueryHandler.ts b/SerpentRace_Backend/src/Application/Chat/queries/GetUserChatsQueryHandler.ts deleted file mode 100644 index abb6fad0..00000000 --- a/SerpentRace_Backend/src/Application/Chat/queries/GetUserChatsQueryHandler.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { GetUserChatsQuery } from './ChatQueries'; -import { IChatRepository } from '../../../Domain/IRepository/IChatRepository'; -import { IChatArchiveRepository } from '../../../Domain/IRepository/IChatArchiveRepository'; -import { ChatAggregate } from '../../../Domain/Chat/ChatAggregate'; -import { ChatArchiveAggregate } from '../../../Domain/Chat/ChatArchiveAggregate'; -import { logAuth, logError } from '../../Services/Logger'; - -interface ChatWithMetadata { - id: string; - type: string; - name: string | null; - gameId: string | null; - users: string[]; - lastActivity: Date | null; - isArchived: boolean; - messageCount: number; - unreadCount?: number; -} - -export class GetUserChatsQueryHandler { - constructor( - private chatRepository: IChatRepository, - private chatArchiveRepository: IChatArchiveRepository - ) {} - - async execute(query: GetUserChatsQuery): Promise { - try { - const result: ChatWithMetadata[] = []; - - // Get active chats - const activeChats = await this.chatRepository.findActiveChatsForUser(query.userId); - result.push(...activeChats.map(chat => ({ - id: chat.id, - type: chat.type, - name: chat.name, - gameId: chat.gameId, - users: chat.users, - lastActivity: chat.lastActivity, - isArchived: false, - messageCount: chat.messages.length, - unreadCount: this.calculateUnreadMessages(chat, query.userId) - }))); - - // Get archived chats if requested - if (query.includeArchived) { - const userActiveChats = await this.chatRepository.findByUserId(query.userId); - const archivedChatIds = userActiveChats - .filter(chat => chat.archiveDate !== null) - .map(chat => chat.id); - - const archives = await Promise.all( - archivedChatIds.map(id => this.chatArchiveRepository.findByChatId(id)) - ); - - archives.forEach(archiveArray => { - archiveArray.forEach(archive => { - if (archive.participants.includes(query.userId)) { - result.push({ - id: archive.chatId, - type: archive.chatType, - name: archive.chatName, - gameId: archive.gameId, - users: archive.participants, - lastActivity: archive.archivedAt, - isArchived: true, - messageCount: archive.archivedMessages.length, - unreadCount: 0 // Archived chats have no unread messages - }); - } - }); - }); - } - - logAuth('User chats retrieved', query.userId, { - activeCount: activeChats.length, - totalCount: result.length, - includeArchived: query.includeArchived - }); - - return result.sort((a, b) => { - if (!a.lastActivity) return 1; - if (!b.lastActivity) return -1; - return new Date(b.lastActivity).getTime() - new Date(a.lastActivity).getTime(); - }); - - } catch (error) { - logError('GetUserChatsQueryHandler error', error as Error); - return []; - } - } - - private calculateUnreadMessages(chat: ChatAggregate, userId: string): number { - // Simple implementation - count messages from other users - // In production, you'd store lastSeen timestamp per user per chat - return chat.messages.filter(msg => msg.userid !== userId).length; - } -} diff --git a/SerpentRace_Backend/src/Application/Contact/commands/CreateContactCommand.ts b/SerpentRace_Backend/src/Application/Contact/commands/CreateContactCommand.ts deleted file mode 100644 index 54ceeee5..00000000 --- a/SerpentRace_Backend/src/Application/Contact/commands/CreateContactCommand.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { ContactType } from '../../../Domain/Contact/ContactAggregate'; - -export interface CreateContactCommand { - name: string; - email: string; - userid?: string; - type: ContactType; - txt: string; -} diff --git a/SerpentRace_Backend/src/Application/Contact/commands/CreateContactCommandHandler.ts b/SerpentRace_Backend/src/Application/Contact/commands/CreateContactCommandHandler.ts deleted file mode 100644 index ddc2a40b..00000000 --- a/SerpentRace_Backend/src/Application/Contact/commands/CreateContactCommandHandler.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { IContactRepository } from '../../../Domain/IRepository/IContactRepository'; -import { CreateContactCommand } from './CreateContactCommand'; -import { ShortContactDto } from '../../DTOs/ContactDto'; -import { ContactAggregate, ContactState } from '../../../Domain/Contact/ContactAggregate'; -import { ContactMapper } from '../../DTOs/Mappers/ContactMapper'; - -export class CreateContactCommandHandler { - constructor(private readonly contactRepo: IContactRepository) {} - - async execute(cmd: CreateContactCommand): Promise { - try { - const contact = new ContactAggregate(); - contact.name = cmd.name; - contact.email = cmd.email; - contact.userid = cmd.userid || null; - contact.type = cmd.type; - contact.txt = cmd.txt; - contact.state = ContactState.ACTIVE; - - const created = await this.contactRepo.create(contact); - return ContactMapper.toShortDto(created); - } catch (error) { - throw new Error('Failed to create contact'); - } - } -} diff --git a/SerpentRace_Backend/src/Application/Contact/commands/DeleteContactCommand.ts b/SerpentRace_Backend/src/Application/Contact/commands/DeleteContactCommand.ts deleted file mode 100644 index 99b1e0b7..00000000 --- a/SerpentRace_Backend/src/Application/Contact/commands/DeleteContactCommand.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface DeleteContactCommand { - id: string; - hard?: boolean; // true for permanent delete, false/undefined for soft delete -} diff --git a/SerpentRace_Backend/src/Application/Contact/commands/DeleteContactCommandHandler.ts b/SerpentRace_Backend/src/Application/Contact/commands/DeleteContactCommandHandler.ts deleted file mode 100644 index c2a3f9f9..00000000 --- a/SerpentRace_Backend/src/Application/Contact/commands/DeleteContactCommandHandler.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { IContactRepository } from '../../../Domain/IRepository/IContactRepository'; -import { DeleteContactCommand } from './DeleteContactCommand'; -import { AdminAuditService } from '../../Services/AdminBypassService'; -import { logRequest } from '../../Services/Logger'; - -export class DeleteContactCommandHandler { - constructor(private readonly contactRepo: IContactRepository) {} - - async execute(cmd: DeleteContactCommand): Promise { - try { - const existingContact = await this.contactRepo.findById(cmd.id); - if (!existingContact) { - throw new Error('Contact not found'); - } - - if (cmd.hard) { - // Permanent delete - await this.contactRepo.delete(cmd.id); - logRequest('Contact hard deleted', undefined, undefined, { - contactId: cmd.id, - contactEmail: existingContact.email, - deleteType: 'hard' - }); - } else { - // Soft delete (default) - await this.contactRepo.softDelete(cmd.id); - logRequest('Contact soft deleted', undefined, undefined, { - contactId: cmd.id, - contactEmail: existingContact.email, - deleteType: 'soft' - }); - } - - return true; - } catch (error) { - if (error instanceof Error && error.message === 'Contact not found') { - throw error; - } - throw new Error('Failed to delete contact'); - } - } -} diff --git a/SerpentRace_Backend/src/Application/Contact/commands/UpdateContactCommand.ts b/SerpentRace_Backend/src/Application/Contact/commands/UpdateContactCommand.ts deleted file mode 100644 index 6d66e809..00000000 --- a/SerpentRace_Backend/src/Application/Contact/commands/UpdateContactCommand.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface UpdateContactCommand { - id: string; - adminResponse?: string; - state?: number; - respondedBy?: string; -} diff --git a/SerpentRace_Backend/src/Application/Contact/commands/UpdateContactCommandHandler.ts b/SerpentRace_Backend/src/Application/Contact/commands/UpdateContactCommandHandler.ts deleted file mode 100644 index e25ec319..00000000 --- a/SerpentRace_Backend/src/Application/Contact/commands/UpdateContactCommandHandler.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { IContactRepository } from '../../../Domain/IRepository/IContactRepository'; -import { UpdateContactCommand } from './UpdateContactCommand'; -import { DetailContactDto } from '../../DTOs/ContactDto'; -import { ContactMapper } from '../../DTOs/Mappers/ContactMapper'; -import { ContactState } from '../../../Domain/Contact/ContactAggregate'; - -export class UpdateContactCommandHandler { - constructor(private readonly contactRepo: IContactRepository) {} - - async execute(cmd: UpdateContactCommand): Promise { - try { - const existingContact = await this.contactRepo.findById(cmd.id); - if (!existingContact) { - throw new Error('Contact not found'); - } - - const updateData: any = {}; - - if (cmd.adminResponse !== undefined) { - updateData.adminResponse = cmd.adminResponse; - updateData.responseDate = new Date(); - } - - if (cmd.state !== undefined) { - updateData.state = cmd.state; - } - - if (cmd.respondedBy !== undefined) { - updateData.respondedBy = cmd.respondedBy; - } - - const updated = await this.contactRepo.update(cmd.id, updateData); - if (!updated) { - throw new Error('Failed to update contact'); - } - - return ContactMapper.toDetailDto(updated); - } catch (error) { - if (error instanceof Error && error.message === 'Contact not found') { - throw error; - } - throw new Error('Failed to update contact'); - } - } -} diff --git a/SerpentRace_Backend/src/Application/Contact/queries/GetContactByIdQuery.ts b/SerpentRace_Backend/src/Application/Contact/queries/GetContactByIdQuery.ts deleted file mode 100644 index f8686379..00000000 --- a/SerpentRace_Backend/src/Application/Contact/queries/GetContactByIdQuery.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface GetContactByIdQuery { - id: string; -} diff --git a/SerpentRace_Backend/src/Application/Contact/queries/GetContactByIdQueryHandler.ts b/SerpentRace_Backend/src/Application/Contact/queries/GetContactByIdQueryHandler.ts deleted file mode 100644 index d20f3c7a..00000000 --- a/SerpentRace_Backend/src/Application/Contact/queries/GetContactByIdQueryHandler.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { IContactRepository } from '../../../Domain/IRepository/IContactRepository'; -import { GetContactByIdQuery } from './GetContactByIdQuery'; -import { DetailContactDto } from '../../DTOs/ContactDto'; -import { ContactMapper } from '../../DTOs/Mappers/ContactMapper'; - -export class GetContactByIdQueryHandler { - constructor(private readonly contactRepo: IContactRepository) {} - - async execute(query: GetContactByIdQuery): Promise { - const contact = await this.contactRepo.findById(query.id); - if (!contact) { - return null; - } - return ContactMapper.toDetailDto(contact); - } -} diff --git a/SerpentRace_Backend/src/Application/Contact/queries/GetContactsByPageQuery.ts b/SerpentRace_Backend/src/Application/Contact/queries/GetContactsByPageQuery.ts deleted file mode 100644 index cc5850ab..00000000 --- a/SerpentRace_Backend/src/Application/Contact/queries/GetContactsByPageQuery.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface GetContactsByPageQuery { - from: number; - to: number; -} diff --git a/SerpentRace_Backend/src/Application/Contact/queries/GetContactsByPageQueryHandler.ts b/SerpentRace_Backend/src/Application/Contact/queries/GetContactsByPageQueryHandler.ts deleted file mode 100644 index e39234df..00000000 --- a/SerpentRace_Backend/src/Application/Contact/queries/GetContactsByPageQueryHandler.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { IContactRepository } from '../../../Domain/IRepository/IContactRepository'; -import { GetContactsByPageQuery } from './GetContactsByPageQuery'; -import { ContactPageDto } from '../../DTOs/ContactDto'; -import { ContactMapper } from '../../DTOs/Mappers/ContactMapper'; - -export class GetContactsByPageQueryHandler { - constructor(private readonly contactRepo: IContactRepository) {} - - async execute(query: GetContactsByPageQuery): Promise { - const result = await this.contactRepo.findByPage(query.from, query.to); - return { - contacts: ContactMapper.toShortDtoList(result.contacts), - totalCount: result.totalCount, - from: query.from, - to: query.to, - }; - } -} diff --git a/SerpentRace_Backend/src/Application/DTOs/ChatDto.ts b/SerpentRace_Backend/src/Application/DTOs/ChatDto.ts deleted file mode 100644 index f3f59bf3..00000000 --- a/SerpentRace_Backend/src/Application/DTOs/ChatDto.ts +++ /dev/null @@ -1,26 +0,0 @@ -export interface CreateChatDto { - users: string[]; - messages: import('../../Domain/Chat/ChatAggregate').Message[]; - state?: number; -} - -export interface UpdateChatDto { - id: string; - users?: string[]; - messages?: import('../../Domain/Chat/ChatAggregate').Message[]; - state?: number; -} - -export interface ShortChatDto { - id: string; - userCount: number; - state: number; -} - -export interface DetailChatDto { - id: string; - users: string[]; - messages: import('../../Domain/Chat/ChatAggregate').Message[]; - updateDate: Date; - state: number; -} diff --git a/SerpentRace_Backend/src/Application/DTOs/ContactDto.ts b/SerpentRace_Backend/src/Application/DTOs/ContactDto.ts deleted file mode 100644 index 44100357..00000000 --- a/SerpentRace_Backend/src/Application/DTOs/ContactDto.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { ContactType } from '../../Domain/Contact/ContactAggregate'; - -export interface CreateContactDto { - name: string; - email: string; - userid?: string; - type: ContactType; - txt: string; -} - -export interface UpdateContactDto { - id: string; - adminResponse?: string; - state?: number; - respondedBy?: string; -} - -export interface ShortContactDto { - id: string; - name: string; - email: string; - type: ContactType; - createDate: Date; - state: number; -} - -export interface DetailContactDto { - id: string; - name: string; - email: string; - userid: string | null; - type: ContactType; - txt: string; - state: number; - createDate: Date; - updateDate: Date; - adminResponse: string | null; - responseDate: Date | null; - respondedBy: string | null; -} - -export interface ContactPageDto { - contacts: ShortContactDto[]; - totalCount: number; - from: number; - to: number; -} diff --git a/SerpentRace_Backend/src/Application/DTOs/DeckDto.ts b/SerpentRace_Backend/src/Application/DTOs/DeckDto.ts deleted file mode 100644 index 68bd74d2..00000000 --- a/SerpentRace_Backend/src/Application/DTOs/DeckDto.ts +++ /dev/null @@ -1,33 +0,0 @@ -export interface CreateDeckDto { - name: string; - description?: string; -} - -export interface UpdateDeckDto { - id: string; - name?: string; - description?: string; -} - -export interface ShortDeckDto { - id: string; - name: string; - type: number; - playedNumber: number; - ctype: number; - cardCount: number; - creator: string; - creationdate: Date; - editable?: boolean; -} - -export interface DetailDeckDto { - id: string; - name: string; - type: number; - userid: string; - creationdate: Date; - cards: any[]; - playedNumber: number; - ctype: number; -} diff --git a/SerpentRace_Backend/src/Application/DTOs/GameDto.ts b/SerpentRace_Backend/src/Application/DTOs/GameDto.ts deleted file mode 100644 index 02bc0f61..00000000 --- a/SerpentRace_Backend/src/Application/DTOs/GameDto.ts +++ /dev/null @@ -1,46 +0,0 @@ -import * as DeckAggregate from "../../Domain/Deck/DeckAggregate"; - -export interface GameStartDto { - gameid: string; - maxplayers: number; - logintype: number; - gamecode: string; - deck: gamedeck[]; -} - -enum decktype { - JOCKER = 0, - LUCK = 1, - QUEST = 2 -} - -export interface cards { - cardid: string; - question?: string; - answer?: string; - consequence?: DeckAggregate.Consequence | null; - played?: boolean; - playerid?: string; -} - -export interface gamedeck { - deckid: string; - decktype: decktype; - cards: cards[]; -} - -export interface GameDataDto { - id: string; - gamecode: string; - maxplayers: number; - logintype: number; - gamedecks: gamedeck[]; - players: string[]; - started: boolean; - finished: boolean; - winner?: string; - currentplayer?: string; - createdate: Date; - startdate?: Date; - enddate?: Date; -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/DTOs/Mappers/BaseMapper.ts b/SerpentRace_Backend/src/Application/DTOs/Mappers/BaseMapper.ts deleted file mode 100644 index d11c5ea4..00000000 --- a/SerpentRace_Backend/src/Application/DTOs/Mappers/BaseMapper.ts +++ /dev/null @@ -1,19 +0,0 @@ -export abstract class BaseMapper { - abstract toShortDto(entity: TEntity): TShortDto; - abstract toDetailDto(entity: TEntity): TDetailDto; - - toShortDtoList(entities: TEntity[]): TShortDto[] { - return entities.map(entity => this.toShortDto(entity)); - } - - toDetailDtoList(entities: TEntity[]): TDetailDto[] { - return entities.map(entity => this.toDetailDto(entity)); - } - - static toShortDtoListStatic( - entities: T[], - mapperFn: (entity: T) => TDto - ): TDto[] { - return entities.map(mapperFn); - } -} diff --git a/SerpentRace_Backend/src/Application/DTOs/Mappers/ChatMapper.ts b/SerpentRace_Backend/src/Application/DTOs/Mappers/ChatMapper.ts deleted file mode 100644 index 60507b2f..00000000 --- a/SerpentRace_Backend/src/Application/DTOs/Mappers/ChatMapper.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { ChatAggregate } from '../../../Domain/Chat/ChatAggregate'; -import { ShortChatDto, DetailChatDto } from '../ChatDto'; - -export class ChatMapper { - static toShortDto(chat: ChatAggregate): ShortChatDto { - return { - id: chat.id, - userCount: chat.users?.length ?? 0, - state: chat.state, - }; - } - - static toDetailDto(chat: ChatAggregate): DetailChatDto { - return { - id: chat.id, - users: chat.users ?? [], - messages: chat.messages, - updateDate: chat.updateDate, - state: chat.state, - }; - } - - static toShortDtoList(chats: ChatAggregate[]): ShortChatDto[] { - return chats.map(this.toShortDto); - } -} diff --git a/SerpentRace_Backend/src/Application/DTOs/Mappers/ContactMapper.ts b/SerpentRace_Backend/src/Application/DTOs/Mappers/ContactMapper.ts deleted file mode 100644 index b9a23ed1..00000000 --- a/SerpentRace_Backend/src/Application/DTOs/Mappers/ContactMapper.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ContactAggregate } from '../../../Domain/Contact/ContactAggregate'; -import { CreateContactDto, UpdateContactDto, ShortContactDto, DetailContactDto } from '../ContactDto'; - -export class ContactMapper { - static toShortDto(contact: ContactAggregate): ShortContactDto { - return { - id: contact.id, - name: contact.name, - email: contact.email, - type: contact.type, - createDate: contact.createDate, - state: contact.state, - }; - } - - static toDetailDto(contact: ContactAggregate): DetailContactDto { - return { - id: contact.id, - name: contact.name, - email: contact.email, - userid: contact.userid, - type: contact.type, - txt: contact.txt, - state: contact.state, - createDate: contact.createDate, - updateDate: contact.updateDate, - adminResponse: contact.adminResponse, - responseDate: contact.responseDate, - respondedBy: contact.respondedBy, - }; - } - - static toShortDtoList(contacts: ContactAggregate[]): ShortContactDto[] { - return contacts.map(this.toShortDto); - } -} diff --git a/SerpentRace_Backend/src/Application/DTOs/Mappers/DeckMapper.ts b/SerpentRace_Backend/src/Application/DTOs/Mappers/DeckMapper.ts deleted file mode 100644 index 87946870..00000000 --- a/SerpentRace_Backend/src/Application/DTOs/Mappers/DeckMapper.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { DeckAggregate } from '../../../Domain/Deck/DeckAggregate'; -import { UserAggregate } from '../../../Domain/User/UserAggregate'; -import { CreateDeckDto, UpdateDeckDto, ShortDeckDto, DetailDeckDto } from '../DeckDto'; - -export class DeckMapper { - static toShortDto(deck: DeckAggregate, userId?: string): ShortDeckDto { - return { - id: deck.id, - name: deck.name, - type: deck.type, - playedNumber: deck.playedNumber, - ctype: deck.ctype, - cardCount: deck.cards.length, - creator: deck.user?.username || 'Unknown', - creationdate: deck.creationdate, - editable: deck.isEditable(userId!) ? deck.isEditable(userId!) : undefined - }; - } - - static toDetailDto(deck: DeckAggregate): DetailDeckDto { - return { - id: deck.id, - name: deck.name, - type: deck.type, - userid: deck.userid, - creationdate: deck.creationdate, - cards: deck.cards, - playedNumber: deck.playedNumber, - ctype: deck.ctype, - }; - } - - static toShortDtoList(decks: DeckAggregate[], userId?: string): ShortDeckDto[] { - return decks.map(deck => ({ - id: deck.id, - name: deck.name, - type: deck.type, - playedNumber: deck.playedNumber, - ctype: deck.ctype, - cardCount: deck.cards.length, - creator: deck.user?.username || 'Unknown', - creationdate: deck.creationdate, - editable: deck.isEditable(userId!) ? deck.isEditable(userId!) : undefined - })); - } -} diff --git a/SerpentRace_Backend/src/Application/DTOs/Mappers/OrganizationMapper.ts b/SerpentRace_Backend/src/Application/DTOs/Mappers/OrganizationMapper.ts deleted file mode 100644 index 70ff5352..00000000 --- a/SerpentRace_Backend/src/Application/DTOs/Mappers/OrganizationMapper.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { OrganizationAggregate } from '../../../Domain/Organization/OrganizationAggregate'; -import { CreateOrganizationDto, UpdateOrganizationDto, ShortOrganizationDto, DetailOrganizationDto } from '../OrganizationDto'; - -export class OrganizationMapper { - static toShortDto(org: OrganizationAggregate): ShortOrganizationDto { - return { - id: org.id, - name: org.name, - state: org.state, - userinorg: org.userinorg, - maxOrganizationalDecks: org.maxOrganizationalDecks, - }; - } - - static toDetailDto(org: OrganizationAggregate): DetailOrganizationDto { - return { - id: org.id, - name: org.name, - contactfname: org.contactfname, - contactlname: org.contactlname, - contactphone: org.contactphone, - contactemail: org.contactemail, - state: org.state, - regdate: org.regdate, - updateDate: org.updateDate, - url: org.url, - userinorg: org.userinorg, - maxOrganizationalDecks: org.maxOrganizationalDecks, - users: org.users?.map(u => u.id) ?? [], - }; - } - - static toShortDtoList(orgs: OrganizationAggregate[]): ShortOrganizationDto[] { - return orgs.map(this.toShortDto); - } -} diff --git a/SerpentRace_Backend/src/Application/DTOs/Mappers/UserMapper.ts b/SerpentRace_Backend/src/Application/DTOs/Mappers/UserMapper.ts deleted file mode 100644 index 877ccc0f..00000000 --- a/SerpentRace_Backend/src/Application/DTOs/Mappers/UserMapper.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { UserAggregate, UserState } from '../../../Domain/User/UserAggregate'; -import { CreateUserDto, UpdateUserDto, ShortUserDto, DetailUserDto } from '../UserDto'; -import { BaseMapper } from './BaseMapper'; - -export class UserMapper { - static toShortDto(user: UserAggregate): ShortUserDto { - return { - username: user.username, - authLevel: (user.state === UserState.ADMIN ? 1 : 0) as 0 | 1, - }; - } - - static toDetailDto(user: UserAggregate): DetailUserDto { - return { - id: user.id, - orgid: user.orgid, - username: user.username, - email: user.email, - fname: user.fname, - lname: user.lname, - code: user.token, - phone: user.phone, - state: user.state, - }; - } - - static toShortDtoList(users: UserAggregate[]): ShortUserDto[] { - return BaseMapper.toShortDtoListStatic(users, UserMapper.toShortDto); - } -} diff --git a/SerpentRace_Backend/src/Application/DTOs/OrganizationDto.ts b/SerpentRace_Backend/src/Application/DTOs/OrganizationDto.ts deleted file mode 100644 index c1eb4aaf..00000000 --- a/SerpentRace_Backend/src/Application/DTOs/OrganizationDto.ts +++ /dev/null @@ -1,48 +0,0 @@ -export interface CreateOrganizationDto { - name: string; - description?: string; - maxOrganizationalDecks?: number | null; -} - -export interface UpdateOrganizationDto { - id: string; - name?: string; - description?: string; -} - -export interface ShortOrganizationDto { - id: string; - name: string; - state: number; - userinorg: number; - maxOrganizationalDecks?: number | null; -} - -export interface DetailOrganizationDto { - id: string; - name: string; - contactfname: string; - contactlname: string; - contactphone: string; - contactemail: string; - state: number; - regdate: Date; - updateDate: Date; - url: string | null; - userinorg: number; - maxOrganizationalDecks: number | null; - users: string[]; -} - -export interface OrganizationLoginUrlDto { - organizationId: string; - organizationName: string; - loginUrl: string; -} - -export interface OrganizationAuthCallbackDto { - organizationId: string; - userId: string; - status: 'ok' | 'not_ok'; - authToken?: string; -} diff --git a/SerpentRace_Backend/src/Application/DTOs/SearchDto.ts b/SerpentRace_Backend/src/Application/DTOs/SearchDto.ts deleted file mode 100644 index acb616d8..00000000 --- a/SerpentRace_Backend/src/Application/DTOs/SearchDto.ts +++ /dev/null @@ -1,13 +0,0 @@ -export interface SearchQuery { - query: string; - limit?: number; - offset?: number; -} - -export interface SearchResult { - results: T[]; - totalCount: number; - hasMore: boolean; - searchQuery: string; - searchType: 'users' | 'organizations' | 'decks'; -} diff --git a/SerpentRace_Backend/src/Application/DTOs/UserDto.ts b/SerpentRace_Backend/src/Application/DTOs/UserDto.ts deleted file mode 100644 index d3a68ab7..00000000 --- a/SerpentRace_Backend/src/Application/DTOs/UserDto.ts +++ /dev/null @@ -1,27 +0,0 @@ -export interface CreateUserDto { - username: string; - email: string; -} - -export interface UpdateUserDto { - id: string; - username?: string; - email?: string; -} - -export interface ShortUserDto { - username: string; - authLevel: 0 | 1; -} - -export interface DetailUserDto { - id: string; - orgid: string | null; - username: string; - email: string; - fname: string; - lname: string; - code: string | null; - phone: string | null; - state: number; -} diff --git a/SerpentRace_Backend/src/Application/Deck/commands/CreateDeckCommand.ts b/SerpentRace_Backend/src/Application/Deck/commands/CreateDeckCommand.ts deleted file mode 100644 index 9e4ec5ad..00000000 --- a/SerpentRace_Backend/src/Application/Deck/commands/CreateDeckCommand.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface CreateDeckCommand { - name: string; - type: number; - userid: string; - cards: any[]; - ctype?: number; -} diff --git a/SerpentRace_Backend/src/Application/Deck/commands/CreateDeckCommandHandler.ts b/SerpentRace_Backend/src/Application/Deck/commands/CreateDeckCommandHandler.ts deleted file mode 100644 index c6c75d2f..00000000 --- a/SerpentRace_Backend/src/Application/Deck/commands/CreateDeckCommandHandler.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { IDeckRepository } from '../../../Domain/IRepository/IDeckRepository'; -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { IOrganizationRepository } from '../../../Domain/IRepository/IOrganizationRepository'; -import { CreateDeckCommand } from './CreateDeckCommand'; -import { ShortDeckDto } from '../../DTOs/DeckDto'; -import { DeckAggregate, State, CType } from '../../../Domain/Deck/DeckAggregate'; -import { UserState } from '../../../Domain/User/UserAggregate'; -import { DeckMapper } from '../../DTOs/Mappers/DeckMapper'; -import { AdminBypassService } from '../../Services/AdminBypassService'; -import { logRequest } from '../../Services/Logger'; - -export class CreateDeckCommandHandler { - constructor( - private readonly deckRepo: IDeckRepository, - private readonly userRepo: IUserRepository, - private readonly orgRepo: IOrganizationRepository - ) {} - - async execute(cmd: CreateDeckCommand): Promise { - try { - // 1. Get user details - const user = await this.userRepo.findById(cmd.userid); - if (!user) { - throw new Error('User not found'); - } - - // 2. ADMIN BYPASS - Skip all restrictions - if (AdminBypassService.shouldBypassRestrictions(user.state)) { - AdminBypassService.logAdminBypass( - 'CREATE_DECK_BYPASS', - user.id, - 'new-deck', - { - deckName: cmd.name, - deckType: cmd.type, - cardCount: cmd.cards.length, - ctype: cmd.ctype - } - ); - return this.createDeck(cmd); - } - - // 3. Check deck count limits for regular users - const userDeckCount = await this.deckRepo.countActiveByUserId(cmd.userid); - const maxDecks = user.state === UserState.VERIFIED_PREMIUM ? 12 : 8; - - if (userDeckCount >= maxDecks) { - throw new Error(`Deck limit exceeded. Maximum ${maxDecks} decks allowed for your account type.`); - } - - // 4. Organizational deck restrictions - if (cmd.ctype === CType.ORGANIZATION) { - // Only premium users can create organizational decks - if (user.state !== UserState.VERIFIED_PREMIUM) { - throw new Error('Only premium users can create organizational decks.'); - } - - // User must belong to an organization - if (!user.orgid) { - throw new Error('You must be a member of an organization to create organizational decks.'); - } - - // Check organization limits - const org = await this.orgRepo.findById(user.orgid); - if (!org) { - throw new Error('Organization not found.'); - } - - if (org.maxOrganizationalDecks === null) { - throw new Error('Organization deck limit not configured. Contact administrator.'); - } - - const userOrgDeckCount = await this.deckRepo.countOrganizationalByUserId(cmd.userid); - if (userOrgDeckCount >= org.maxOrganizationalDecks) { - throw new Error(`Organization deck limit exceeded. Maximum ${org.maxOrganizationalDecks} organizational decks allowed.`); - } - } - - // 5. Create deck with restrictions passed - return this.createDeck(cmd); - } catch (error) { - if (error instanceof Error) { - throw error; // Re-throw known errors with original message - } - throw new Error('Failed to create deck'); - } - } - - /** - * Private method to create deck after all validations - */ - private async createDeck(cmd: CreateDeckCommand): Promise { - const deck = new DeckAggregate(); - deck.name = cmd.name; - deck.type = cmd.type; - deck.userid = cmd.userid; - deck.cards = cmd.cards; - deck.ctype = cmd.ctype ?? CType.PUBLIC; - deck.state = State.ACTIVE; - - // Set organization reference for organizational decks - if (cmd.ctype === CType.ORGANIZATION) { - const user = await this.userRepo.findById(cmd.userid); - if (user?.orgid) { - const org = await this.orgRepo.findById(user.orgid); - if (org) { - deck.organization = org; - } - } - } - - const created = await this.deckRepo.create(deck); - - logRequest('Deck created successfully', undefined, undefined, { - deckId: created.id, - userId: cmd.userid, - deckName: cmd.name, - deckType: cmd.type, - ctype: cmd.ctype, - cardCount: cmd.cards.length - }); - - return DeckMapper.toShortDto(created); - } -} diff --git a/SerpentRace_Backend/src/Application/Deck/commands/DeleteDeckCommand.ts b/SerpentRace_Backend/src/Application/Deck/commands/DeleteDeckCommand.ts deleted file mode 100644 index d41de235..00000000 --- a/SerpentRace_Backend/src/Application/Deck/commands/DeleteDeckCommand.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface DeleteDeckCommand { - userid: string; - authLevel: number; - id: string; - soft?: boolean; -} diff --git a/SerpentRace_Backend/src/Application/Deck/commands/DeleteDeckCommandHandler.ts b/SerpentRace_Backend/src/Application/Deck/commands/DeleteDeckCommandHandler.ts deleted file mode 100644 index 07309b19..00000000 --- a/SerpentRace_Backend/src/Application/Deck/commands/DeleteDeckCommandHandler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { IDeckRepository } from '../../../Domain/IRepository/IDeckRepository'; -import { logAuth, logError } from '../../Services/Logger'; -import { DeleteDeckCommand } from './DeleteDeckCommand'; - -export class DeleteDeckCommandHandler { - constructor(private readonly deckRepo: IDeckRepository) {} - - async execute(cmd: DeleteDeckCommand): Promise { - - //get decks userid - const deck = await this.deckRepo.findById(cmd.id); - if (!deck) { - logError(`Deck not found with ID: ${cmd.id}`); - throw new Error('Deck not found'); - } - - if(cmd.authLevel !==1 && deck.userid !== cmd.userid) { - logAuth(`Unauthorized access attempt to deck with ID: ${cmd.id}, UserID: ${cmd.userid}`); - throw new Error('Unauthorized'); - } - - if (cmd.soft) { - await this.deckRepo.softDelete(cmd.id); - } else { - await this.deckRepo.delete(cmd.id); - } - return true; - } -} diff --git a/SerpentRace_Backend/src/Application/Deck/commands/UpdateDeckCommand.ts b/SerpentRace_Backend/src/Application/Deck/commands/UpdateDeckCommand.ts deleted file mode 100644 index 9fbbb3a9..00000000 --- a/SerpentRace_Backend/src/Application/Deck/commands/UpdateDeckCommand.ts +++ /dev/null @@ -1,11 +0,0 @@ -export interface UpdateDeckCommand { - userid: string; - authLevel: number; - id: string; - userstate?: number; - name?: string; - type?: number; - cards?: any[]; - ctype?: number; - state?: number; -} diff --git a/SerpentRace_Backend/src/Application/Deck/commands/UpdateDeckCommandHandler.ts b/SerpentRace_Backend/src/Application/Deck/commands/UpdateDeckCommandHandler.ts deleted file mode 100644 index 85cc4202..00000000 --- a/SerpentRace_Backend/src/Application/Deck/commands/UpdateDeckCommandHandler.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { IDeckRepository } from '../../../Domain/IRepository/IDeckRepository'; -import { UpdateDeckCommand } from './UpdateDeckCommand'; -import { ShortDeckDto } from '../../DTOs/DeckDto'; -import { DeckMapper } from '../../DTOs/Mappers/DeckMapper'; -import { DeckAggregate } from '../../../Domain/Deck/DeckAggregate'; -import { logAuth, logError } from '../../Services/Logger'; - -export class UpdateDeckCommandHandler { - constructor(private readonly deckRepo: IDeckRepository) {} - - async execute(cmd: UpdateDeckCommand): Promise { - if(cmd.state !== undefined && cmd.authLevel !== 1) { - throw new Error('Only admin users can change deck state'); - } - try { - let existingDeck: DeckAggregate | null = null; - if (cmd.authLevel === 1) { - existingDeck = await this.deckRepo.findByIdIncludingDeleted(cmd.id); - } else { - existingDeck = await this.deckRepo.findById(cmd.id); - } - if (!existingDeck) { - logError(`Deck not found with ID: ${cmd.id}`); - throw new Error('Deck not found'); - } - - if(cmd.authLevel !== 1 && existingDeck.userid !== cmd.userid) { - logAuth(`Unauthorized access attempt to deck with ID: ${cmd.id}, UserID: ${cmd.userid}`); - throw new Error('Unauthorized'); - } - - const for_update: Partial = {}; - if(cmd.name !== undefined) for_update.name = cmd.name; - if(cmd.type !== undefined) for_update.type = cmd.type; - if(cmd.cards !== undefined) for_update.cards = cmd.cards; - if(cmd.ctype !== undefined) for_update.ctype = cmd.ctype; - if(cmd.state !== undefined) for_update.state = cmd.state; - - // Ensure we have something to update - if (Object.keys(for_update).length === 0) { - throw new Error('No fields provided for update'); - } - - const deck = await this.deckRepo.update(cmd.id, { ...for_update }); - if(!deck) { - logError(`Deck update failed for ID: ${cmd.id}. Update returned null.`); - throw new Error('Failed to update deck'); - } - return DeckMapper.toShortDto(deck); - } catch (error: any) { - logError(`Error updating deck: ${cmd.id}`, error); - throw error; - } - } -} diff --git a/SerpentRace_Backend/src/Application/Deck/queries/GetDeckByIdQuery.ts b/SerpentRace_Backend/src/Application/Deck/queries/GetDeckByIdQuery.ts deleted file mode 100644 index 49c192e0..00000000 --- a/SerpentRace_Backend/src/Application/Deck/queries/GetDeckByIdQuery.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface GetDeckByIdQuery { - id: string; -} diff --git a/SerpentRace_Backend/src/Application/Deck/queries/GetDeckByIdQueryHandler.ts b/SerpentRace_Backend/src/Application/Deck/queries/GetDeckByIdQueryHandler.ts deleted file mode 100644 index 9ea429b4..00000000 --- a/SerpentRace_Backend/src/Application/Deck/queries/GetDeckByIdQueryHandler.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { IDeckRepository } from '../../../Domain/IRepository/IDeckRepository'; -import { GetDeckByIdQuery } from './GetDeckByIdQuery'; -import { DetailDeckDto } from '../../DTOs/DeckDto'; -import { DeckMapper } from '../../DTOs/Mappers/DeckMapper'; - -export class GetDeckByIdQueryHandler { - constructor(private readonly deckRepo: IDeckRepository) {} - - async execute(query: GetDeckByIdQuery): Promise { - const deck = await this.deckRepo.findById(query.id); - if (!deck) return null; - return DeckMapper.toDetailDto(deck); - } -} diff --git a/SerpentRace_Backend/src/Application/Deck/queries/GetDecksByPageQuery.ts b/SerpentRace_Backend/src/Application/Deck/queries/GetDecksByPageQuery.ts deleted file mode 100644 index 370fe350..00000000 --- a/SerpentRace_Backend/src/Application/Deck/queries/GetDecksByPageQuery.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface GetDecksByPageQuery { - from: number; - to: number; - userId: string; - userOrgId?: string; - isAdmin: boolean; - includeDeleted?: boolean; -} diff --git a/SerpentRace_Backend/src/Application/Deck/queries/GetDecksByPageQueryHandler.ts b/SerpentRace_Backend/src/Application/Deck/queries/GetDecksByPageQueryHandler.ts deleted file mode 100644 index a4e6086a..00000000 --- a/SerpentRace_Backend/src/Application/Deck/queries/GetDecksByPageQueryHandler.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { IDeckRepository } from '../../../Domain/IRepository/IDeckRepository'; -import { GetDecksByPageQuery } from './GetDecksByPageQuery'; -import { ShortDeckDto } from '../../DTOs/DeckDto'; -import { DeckMapper } from '../../DTOs/Mappers/DeckMapper'; -import { AdminBypassService } from '../../Services/AdminBypassService'; -import { logRequest, logError } from '../../Services/Logger'; - -export class GetDecksByPageQueryHandler { - constructor(private readonly deckRepo: IDeckRepository) {} - - async execute(query: GetDecksByPageQuery): Promise<{ decks: ShortDeckDto[], totalCount: number }> { - try { - // Validate pagination parameters - if (query.from < 0 || query.to < query.from) { - throw new Error('Invalid pagination parameters'); - } - - const limit = query.to - query.from + 1; - if (limit > 100) { - throw new Error('Page size too large. Maximum 100 records per request'); - } - - // Log admin bypass if applicable - if (query.isAdmin) { - AdminBypassService.logAdminBypass( - 'GET_DECKS_PAGE_BYPASS', - query.userId, - 'paginated-decks', - { - from: query.from, - to: query.to, - includesDeleted: query.includeDeleted || false, - operation: 'read' - } - ); - } - - logRequest('Get decks by page query started', undefined, undefined, { - userId: query.userId, - userOrgId: query.userOrgId, - isAdmin: query.isAdmin, - from: query.from, - to: query.to, - includeDeleted: query.includeDeleted || false - }); - - // Use paginated filtered deck finding method - const result = await this.deckRepo.findFilteredDecks( - query.userId, - query.userOrgId, - query.isAdmin, - query.from, - query.to - ); - - logRequest('Get decks by page query completed', undefined, undefined, { - userId: query.userId, - userOrgId: query.userOrgId, - isAdmin: query.isAdmin, - from: query.from, - to: query.to, - returned: result.decks.length, - totalCount: result.totalCount, - includeDeleted: query.includeDeleted || false - }); - - return { - decks: DeckMapper.toShortDtoList(result.decks, query.userId), - totalCount: result.totalCount - }; - } catch (error) { - logError('GetDecksByPageQueryHandler error', error instanceof Error ? error : new Error(String(error))); - - // Re-throw validation errors as-is - if (error instanceof Error && (error.message.includes('Invalid pagination') || error.message.includes('Page size'))) { - throw error; - } - - throw new Error('Failed to retrieve decks page'); - } - } -} diff --git a/SerpentRace_Backend/src/Application/Game/BoardGenerationService.ts b/SerpentRace_Backend/src/Application/Game/BoardGenerationService.ts deleted file mode 100644 index e952bfe7..00000000 --- a/SerpentRace_Backend/src/Application/Game/BoardGenerationService.ts +++ /dev/null @@ -1,209 +0,0 @@ -import { GameField, BoardData } from '../../Domain/Game/GameAggregate'; -import { logOther, logError } from '../Services/Logger'; - -interface SpecialFieldInfo { - position: number; - type: 'positive' | 'negative' | 'luck'; -} - -export class BoardGenerationService { - async generateBoard( - positiveFieldCount: number, - negativeFieldCount: number, - luckFieldCount: number - ): Promise { - // Pattern-based approach has 100% success rate, no retry needed - const result = this.generateSingleAttempt(positiveFieldCount, negativeFieldCount, luckFieldCount); - - logOther('Pattern-based board generation completed', { - totalFields: result.fields.length, - specialFields: result.fields.filter((f: GameField) => f.type !== 'regular').length, - positiveFields: result.fields.filter((f: GameField) => f.type === 'positive').length, - negativeFields: result.fields.filter((f: GameField) => f.type === 'negative').length, - luckFields: result.fields.filter((f: GameField) => f.type === 'luck').length - }); - - return result; - } - - private generateSingleAttempt( - positiveFieldCount: number, - negativeFieldCount: number, - luckFieldCount: number - ): BoardData { - // Step 1: Choose special field positions - const specialFieldPositions = this.chooseSpecialFieldPositions( - positiveFieldCount, - negativeFieldCount, - luckFieldCount - ); - - // Step 2: Calculate step values using pattern-based approach - const fields = this.calculatePatternBasedStepValues(specialFieldPositions); - - return { - fields - }; - } - - private chooseSpecialFieldPositions( - positiveFieldCount: number, - negativeFieldCount: number, - luckFieldCount: number - ): SpecialFieldInfo[] { - const totalSpecial = positiveFieldCount + negativeFieldCount + luckFieldCount; - const specialFields: SpecialFieldInfo[] = []; - - // Generate unique random positions - const positions = new Set(); - while (positions.size < totalSpecial) { - const position = Math.floor(Math.random() * 100) + 1; // 1-100 - positions.add(position); - } - - // Convert to sorted array - const sortedPositions = Array.from(positions).sort((a, b) => a - b); - - // Distribute types randomly - const types: ('positive' | 'negative' | 'luck')[] = [ - ...Array(positiveFieldCount).fill('positive'), - ...Array(negativeFieldCount).fill('negative'), - ...Array(luckFieldCount).fill('luck') - ]; - - // Shuffle types - for (let i = types.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [types[i], types[j]] = [types[j], types[i]]; - } - - sortedPositions.forEach((position, index) => { - specialFields.push({ - position, - type: types[index] || 'positive' - }); - }); - - return specialFields; - } - - private calculatePatternBasedStepValues(specialFields: SpecialFieldInfo[]): GameField[] { - // Initialize all fields as regular - const fields: GameField[] = Array.from({ length: 100 }, (_, i) => ({ - position: i + 1, - type: 'regular' as const - })); - - // Update special fields with pattern-based step values - specialFields.forEach(specialField => { - const fieldIndex = specialField.position - 1; // Convert to 0-based index - fields[fieldIndex].type = specialField.type; - - if (specialField.type === 'luck') { - // Luck fields don't need step values - return; - } - - // Calculate step values based on position rules - let maxStepValue: number; - let minStepValue: number; - - if (specialField.position <= 80) { - // Positions 1-80: step values can be ±20 - maxStepValue = 20; - minStepValue = -20; - } else { - // Positions 81-100: step values can be -30 to +10 - maxStepValue = 10; - minStepValue = -30; - } - - // Generate appropriate step value for field type - if (specialField.type === 'positive') { - // Positive fields: use positive step values (1-3 range for balanced gameplay) - // Max movement: 3 × 6 (dice) = 18 steps - const stepValue = Math.floor(Math.random() * 3) + 1; // 1-3 - fields[fieldIndex].stepValue = Math.min(stepValue, maxStepValue); - } else { - // Negative fields: use negative step values (-1 to -3 range) - // Max backward: -3 × 6 (dice) = -18 steps - const stepValue = -(Math.floor(Math.random() * 3) + 1); // -1 to -3 - fields[fieldIndex].stepValue = Math.max(stepValue, minStepValue); - } - }); - - return fields; - } - - // This method can be used by FieldEffectService for movement calculations - public calculatePatternBasedMovement( - currentPosition: number, - stepValue: number, - diceValue: number - ): number { - // Calculate pattern modifier based on current position - const patternModifier = this.getPatternModifier(currentPosition, stepValue > 0); - - // Calculate final position: currentPosition + (stepValue × dice) + patternModifier - const movement = stepValue * diceValue; - let finalPosition = currentPosition + movement + patternModifier; - - // Ensure position stays within board bounds (1-100) - if (finalPosition < 1) { - finalPosition = 1; - } else if (finalPosition > 100) { - finalPosition = 100; - } - - return finalPosition; - } - - public getPatternModifier(position: number, positiveField: boolean): number { - // Pattern modifiers STACK for strategic complexity: - // - Positions ending in 0 (10, 20, 30...): No modifier - // - Positions ending in 5 (15, 25, 35...): ±3 modifier - // - Positions divisible by 3 (9, 12, 21...): ±2 modifier - // - Odd positions (1, 7, 11...): ±1 modifier - // Multiple conditions can apply and stack - - if (position % 10 === 0) { - return 0; // Positions ending in 0 - no modifier - } - - let modifier = 0; - const direction = positiveField ? 1 : -1; - - // Check each condition and stack modifiers - if (position % 10 === 5) { - modifier += 3 * direction; // Positions ending in 5 - } - if (position % 3 === 0) { - modifier += 2 * direction; // Divisible by 3 - } - if (position % 2 === 1) { - modifier += 1 * direction; // Odd positions - } - - return modifier; - } - - private validate20_30Rule(currentPosition: number, targetPosition: number, distance: number): boolean { - // Fields 1-85: max 20 fields in any direction - if (currentPosition <= 85) { - return distance <= 20; - } - - // Fields 86-100: max 30 fields backward, max 20 fields forward - if (currentPosition > 85) { - if (targetPosition > currentPosition) { - // Moving forward: max 20 fields - return distance <= 20; - } else { - // Moving backward: max 30 fields - return distance <= 30; - } - } - - return false; - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Game/GameService.ts b/SerpentRace_Backend/src/Application/Game/GameService.ts deleted file mode 100644 index dd941e6a..00000000 --- a/SerpentRace_Backend/src/Application/Game/GameService.ts +++ /dev/null @@ -1,303 +0,0 @@ -import { StartGameCommand } from './commands/StartGameCommand'; -import { StartGameCommandHandler } from './commands/StartGameCommandHandler'; -import { JoinGameCommand } from './commands/JoinGameCommand'; -import { JoinGameCommandHandler } from './commands/JoinGameCommandHandler'; -import { StartGamePlayCommand } from './commands/StartGamePlayCommand'; -import { StartGamePlayCommandHandler, GameStartResult } from './commands/StartGamePlayCommandHandler'; -import { GameAggregate, LoginType } from '../../Domain/Game/GameAggregate'; -import { logOther, logError } from '../Services/Logger'; - -export class GameService { - private startGameHandler: StartGameCommandHandler; - private joinGameHandler: JoinGameCommandHandler; - private startGamePlayHandler: StartGamePlayCommandHandler; - - constructor() { - this.startGameHandler = new StartGameCommandHandler(); - this.joinGameHandler = new JoinGameCommandHandler(); - this.startGamePlayHandler = new StartGamePlayCommandHandler(); - } - - /** - * Starts a new game with the provided deck IDs - * @param deckids Array of deck IDs (should contain 3 types: LUCK, JOKER, QUESTION) - * @param maxplayers Maximum number of players allowed in the game - * @param logintype How players can join the game (PUBLIC, PRIVATE, ORGANIZATION) - * @param userid Optional ID of the user creating the game - * @returns Promise The created game - */ - async startGame( - deckids: string[], - maxplayers: number, - logintype: LoginType, - userid?: string, - orgid?: string | null - ): Promise { - const startTime = performance.now(); - - try { - logOther('GameService.startGame called', { - deckCount: deckids.length, - maxplayers, - logintype, - userid, - orgid - }); - - // Validate input parameters - this.validateStartGameInput(deckids, maxplayers, logintype); - - // Create and execute the command - const command: StartGameCommand = { - deckids, - maxplayers, - logintype, - userid, - orgid - }; - - const game = await this.startGameHandler.handle(command); - - const endTime = performance.now(); - logOther('Game started successfully', { - gameId: game.id, - gameCode: game.gamecode, - deckCount: game.gamedecks.length, - totalCards: game.gamedecks.reduce((sum, deck) => sum + deck.cards.length, 0), - executionTime: Math.round(endTime - startTime) - }); - - return game; - - } catch (error) { - const endTime = performance.now(); - logError('GameService.startGame failed', error instanceof Error ? error : new Error(String(error))); - logOther('Game start failed', { - executionTime: Math.round(endTime - startTime), - error: error instanceof Error ? error.message : String(error) - }); - throw error; - } - } - - /** - * Join an existing game using game code - * @param gameCode 6-character game code - * @param playerId ID of the player joining (optional for public games) - * @param playerName Display name for the player - * @param orgId Organization ID (for organization games) - * @param loginType Type of join being attempted - * @returns Promise The updated game with new player - */ - async joinGame( - gameCode: string, - playerId?: string, - playerName?: string, - orgId?: string | null, - loginType?: LoginType - ): Promise { - const startTime = performance.now(); - - try { - logOther('GameService.joinGame called', { - gameCode, - playerId: playerId || 'anonymous', - playerName, - orgId, - loginType - }); - - // Validate input parameters - this.validateJoinGameInput(gameCode, playerId, loginType); - - // Create and execute the command - const command: JoinGameCommand = { - gameCode, - playerId, - playerName, - orgId, - loginType: loginType || LoginType.PUBLIC - }; - - const game = await this.joinGameHandler.handle(command); - - const endTime = performance.now(); - logOther('Player joined game successfully', { - gameId: game.id, - gameCode: game.gamecode, - playerId, - playerCount: game.players.length, - maxPlayers: game.maxplayers, - executionTime: Math.round(endTime - startTime) - }); - - return game; - - } catch (error) { - const endTime = performance.now(); - logError('GameService.joinGame failed', error instanceof Error ? error : new Error(String(error))); - logOther('Game join failed', { - gameCode, - playerId, - executionTime: Math.round(endTime - startTime), - error: error instanceof Error ? error.message : String(error) - }); - throw error; - } - } - - /** - * Start an existing game (move from WAITING to ACTIVE) - * Initializes all player positions to 0 and assigns random turn order - * @param gameId Game ID to start - * @param userId User ID of the game master (optional for public games) - * @returns Promise The updated game - */ - async startGamePlay( - gameId: string, - userId?: string - ): Promise { - const startTime = performance.now(); - - try { - logOther('GameService.startGamePlay called', { - gameId, - userId: userId || 'system' - }); - - // Validate input parameters - this.validateStartGamePlayInput(gameId); - - // Create and execute the command - const command: StartGamePlayCommand = { - gameId, - userId - }; - - const result = await this.startGamePlayHandler.handle(command); - - const endTime = performance.now(); - logOther('Game play started successfully', { - gameId: result.game.id, - gameCode: result.game.gamecode, - playerCount: result.game.players.length, - gameState: result.game.state, - executionTime: Math.round(endTime - startTime) - }); - - return result; - - } catch (error) { - const endTime = performance.now(); - logError('GameService.startGamePlay failed', error instanceof Error ? error : new Error(String(error))); - logOther('Game play start failed', { - gameId, - userId, - executionTime: Math.round(endTime - startTime), - error: error instanceof Error ? error.message : String(error) - }); - throw error; - } - } - - private validateStartGamePlayInput(gameId: string): void { - // Validate game ID - if (!gameId || typeof gameId !== 'string') { - throw new Error('Game ID is required and must be a string'); - } - - logOther('Start game play input validation passed', { - gameId - }); - } - - private validateJoinGameInput(gameCode: string, playerId?: string, loginType?: LoginType): void { - // Validate game code - if (!gameCode || typeof gameCode !== 'string') { - throw new Error('Game code is required and must be a string'); - } - - if (gameCode.length !== 6) { - throw new Error('Game code must be exactly 6 characters long'); - } - - // Validate login type specific requirements - if (loginType === LoginType.PRIVATE || loginType === LoginType.ORGANIZATION) { - if (!playerId || typeof playerId !== 'string') { - throw new Error(`Player ID is required for ${LoginType[loginType]} games`); - } - } - - logOther('Join game input validation passed', { - gameCode, - playerId: playerId || 'anonymous', - loginType - }); - } - - private validateStartGameInput(deckids: string[], maxplayers: number, logintype: LoginType): void { - // Validate deck IDs - if (!deckids || deckids.length === 0) { - throw new Error('At least one deck ID must be provided'); - } - - if (deckids.length < 3) { - throw new Error('At least 3 decks are required to start a game (one for each type: LUCK, JOKER, QUESTION)'); - } - - // Validate max players - if (!maxplayers || maxplayers < 2) { - throw new Error('Maximum players must be at least 2'); - } - - if (maxplayers > 8) { - throw new Error('Maximum players cannot exceed 8'); - } - - // Validate login type - if (logintype < 0 || logintype > 2) { - throw new Error('Invalid login type. Must be PUBLIC (0), PRIVATE (1), or ORGANIZATION (2)'); - } - - // Check for duplicate deck IDs - const uniqueIds = new Set(deckids); - if (uniqueIds.size !== deckids.length) { - throw new Error('Duplicate deck IDs are not allowed'); - } - - logOther('Start game input validation passed', { - deckCount: deckids.length, - maxplayers, - logintype - }); - } - - /** - * Game flow explanation (to be implemented later): - * - * 1. START GAME (implemented above): - * - Input: deckids, maxplayers, logintype, gamecode - * - Process: Fetch decks, validate types, shuffle cards, create game - * - Output: Game with shuffled deck objects - * - * 2. JOIN GAME (to be implemented): - * - Input: gamecode, playerid - * - Process: Find game, validate capacity, add player - * - Output: Updated game with new player - * - * 3. GAME ROUNDS (to be implemented): - * - Input: gameid, current player - * - Process: Manage turn order, track game state - * - Output: Current player information - * - * 4. PICK CARD (to be implemented): - * - Input: gameid, playerid, deck type - * - Process: Draw card from specific deck, apply consequence - * - Output: Card details and consequence effects - * - * 5. END GAME (to be implemented): - * - Input: gameid, winner - * - Process: Set game as finished, record winner - * - Output: Final game state - */ -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Game/commands/GenerateBoardCommand.ts b/SerpentRace_Backend/src/Application/Game/commands/GenerateBoardCommand.ts deleted file mode 100644 index b3c909b4..00000000 --- a/SerpentRace_Backend/src/Application/Game/commands/GenerateBoardCommand.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface GenerateBoardCommand { - gameId: string; - positiveFieldCount: number; - negativeFieldCount: number; - luckFieldCount: number; -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Game/commands/GenerateBoardCommandHandler.ts b/SerpentRace_Backend/src/Application/Game/commands/GenerateBoardCommandHandler.ts deleted file mode 100644 index f5e454a9..00000000 --- a/SerpentRace_Backend/src/Application/Game/commands/GenerateBoardCommandHandler.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { GenerateBoardCommand } from './GenerateBoardCommand'; -import { BoardGenerationService } from '../BoardGenerationService'; -import { RedisService } from '../../Services/RedisService'; -import { logOther, logError } from '../../Services/Logger'; -import { BoardData } from '../../../Domain/Game/GameAggregate'; - -export class GenerateBoardCommandHandler { - constructor( - private readonly boardGenerationService: BoardGenerationService, - private readonly redisService: RedisService - ) {} - - async execute(cmd: GenerateBoardCommand): Promise { - try { - logOther(`Starting board generation for game ${cmd.gameId}`); - const startTime = Date.now(); - - // Generate board with 20-30 rule validation - const boardData = await this.boardGenerationService.generateBoard( - cmd.positiveFieldCount, - cmd.negativeFieldCount, - cmd.luckFieldCount - ); - - // Store in Redis - const boardDataWithMetadata: BoardData = { - ...boardData, - gameId: cmd.gameId, - generatedAt: new Date(), - generationComplete: true - }; - - await this.redisService.setWithExpiry( - `game_board_${cmd.gameId}`, - JSON.stringify(boardDataWithMetadata), - 24 * 60 * 60 // 24 hours - ); - - const executionTime = Date.now() - startTime; - logOther(`Board generation completed for game ${cmd.gameId} in ${executionTime}ms using pattern-based approach`); - - } catch (error) { - logError(`Board generation failed for game ${cmd.gameId}:`, error as Error); - - // Store error state in Redis - const errorData: BoardData = { - gameId: cmd.gameId, - fields: [], - generationComplete: false, - error: error instanceof Error ? error.message : 'Unknown error', - generatedAt: new Date() - }; - - await this.redisService.setWithExpiry( - `game_board_${cmd.gameId}`, - JSON.stringify(errorData), - 24 * 60 * 60 - ); - - throw error; - } - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Game/commands/JoinGameCommand.ts b/SerpentRace_Backend/src/Application/Game/commands/JoinGameCommand.ts deleted file mode 100644 index b59e633c..00000000 --- a/SerpentRace_Backend/src/Application/Game/commands/JoinGameCommand.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { LoginType } from '../../../Domain/Game/GameAggregate'; - -export interface JoinGameCommand { - gameCode: string; // 6-character game code - playerId?: string; // User ID of the player joining (optional for public games) - playerName?: string; // Display name for the player (required for public games) - orgId?: string | null; // Organization ID (for organization games) - loginType: LoginType; // Type of join being attempted -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Game/commands/JoinGameCommandHandler.ts b/SerpentRace_Backend/src/Application/Game/commands/JoinGameCommandHandler.ts deleted file mode 100644 index 2fa4dc6a..00000000 --- a/SerpentRace_Backend/src/Application/Game/commands/JoinGameCommandHandler.ts +++ /dev/null @@ -1,219 +0,0 @@ -import { JoinGameCommand } from './JoinGameCommand'; -import { GameAggregate, GameState, LoginType } from '../../../Domain/Game/GameAggregate'; -import { IGameRepository } from '../../../Domain/IRepository/IGameRepository'; -import { DIContainer } from '../../Services/DIContainer'; -import { RedisService } from '../../Services/RedisService'; -import { logOther, logError } from '../../Services/Logger'; -import { v4 as uuidv4 } from 'uuid'; - -export interface GamePlayerData { - playerId: string; - playerName?: string; - joinedAt: Date; - isOnline: boolean; - position?: number; // For game board position (to be used later) -} - -export interface ActiveGameData { - gameId: string; - gameCode: string; - hostId?: string; - maxPlayers: number; - currentPlayers: GamePlayerData[]; - state: GameState; - createdAt: Date; - startedAt?: Date; - currentTurn?: string; // Player ID whose turn it is - websocketRoom: string; // WebSocket room name for real-time updates -} - -export class JoinGameCommandHandler { - private gameRepository: IGameRepository; - private redisService: RedisService; - - constructor() { - this.gameRepository = DIContainer.getInstance().gameRepository; - this.redisService = RedisService.getInstance(); - } - - async handle(command: JoinGameCommand): Promise { - const startTime = performance.now(); - - try { - logOther('Joining game', `gameCode: ${command.gameCode}, playerId: ${command.playerId || 'anonymous'}, loginType: ${command.loginType}`); - - // Find the game by game code - const game = await this.gameRepository.findByGameCode(command.gameCode); - if (!game) { - throw new Error(`Game with code ${command.gameCode} not found`); - } - - // Generate player ID for public games or use provided one - // For anonymous players (no playerId), use playerName as the identifier to allow rejoining - const actualPlayerId = command.playerId || `guest_${command.playerName}`; - - // Validate game joinability (authentication/org checks done in router) - this.validateGameJoinability(game, actualPlayerId, command); - - // Add player to database - const updatedGame = await this.gameRepository.addPlayerToGame(game.id, actualPlayerId); - if (!updatedGame) { - throw new Error('Failed to add player to game'); - } - - // Update Redis with the new player - await this.updateGameInRedis(updatedGame, { ...command, playerId: actualPlayerId }); - - const endTime = performance.now(); - logOther('Player joined game successfully', { - gameId: game.id, - gameCode: game.gamecode, - playerId: actualPlayerId, - playerCount: updatedGame.players.length, - maxPlayers: updatedGame.maxplayers, - loginType: game.logintype, - executionTime: Math.round(endTime - startTime) - }); - - return updatedGame; - - } catch (error) { - const endTime = performance.now(); - logError('Failed to join game', error instanceof Error ? error : new Error(String(error))); - logOther('Game join failed', { - gameCode: command.gameCode, - playerId: command.playerId || 'anonymous', - loginType: command.loginType, - executionTime: Math.round(endTime - startTime) - }); - throw error; - } - } - - private validateGameJoinability(game: GameAggregate, playerId: string, command: JoinGameCommand): void { - // Check if game is in waiting state - if (game.state !== GameState.WAITING) { - throw new Error('Game is not accepting new players'); - } - - // Check if player is already in the game - if (game.players.includes(playerId)) { - throw new Error('Player is already in this game'); - } - - // Check if game is full - if (game.players.length >= game.maxplayers) { - throw new Error('Game is full'); - } - - // Note: Login type validation is now handled in the router before reaching this handler - // This ensures proper authentication and organization membership checks are done first - - logOther('Game join validation passed', { - gameId: game.id, - gameCode: game.gamecode, - currentPlayers: game.players.length, - maxPlayers: game.maxplayers, - gameState: game.state, - loginType: game.logintype, - playerId: playerId, - isAuthenticated: !!command.playerId - }); - } - - private async updateGameInRedis(game: GameAggregate, command: JoinGameCommand & { playerId: string }): Promise { - try { - const redisKey = `game:${game.gamecode}`; - - // Get existing game data from Redis or create new - let gameData: ActiveGameData; - const existingData = await this.redisService.get(redisKey); - - if (existingData) { - gameData = JSON.parse(existingData) as ActiveGameData; - } else { - // Create new game data structure - gameData = { - gameId: game.id, - gameCode: game.gamecode, - maxPlayers: game.maxplayers, - currentPlayers: [], - state: game.state, - createdAt: game.createdate, - websocketRoom: `game_${game.gamecode}` - }; - } - - // Add the new player - const newPlayer: GamePlayerData = { - playerId: command.playerId, - playerName: command.playerName, - joinedAt: new Date(), - isOnline: true - }; - - // Check if player name is already in use by a different player - const existingPlayerWithName = gameData.currentPlayers.find( - p => p.playerName === command.playerName && p.playerId !== command.playerId - ); - - if (existingPlayerWithName) { - throw new Error(`Player name "${command.playerName}" is already in use in this game`); - } - - // Update players list (remove if exists, then add) - gameData.currentPlayers = gameData.currentPlayers.filter(p => p.playerId !== command.playerId); - gameData.currentPlayers.push(newPlayer); - - // Update game state and player count - gameData.state = game.state; - - // Store updated data in Redis with TTL (24 hours) - await this.redisService.setWithExpiry(redisKey, JSON.stringify(gameData), 24 * 60 * 60); - - logOther('Game data updated in Redis', { - gameId: game.id, - gameCode: game.gamecode, - redisKey, - playerCount: gameData.currentPlayers.length, - websocketRoom: gameData.websocketRoom, - playerId: command.playerId - }); - - } catch (error) { - logError('Failed to update game in Redis', error instanceof Error ? error : new Error(String(error))); - // Don't throw error here - Redis failure shouldn't prevent game join - logOther('Game join completed despite Redis error', { - gameId: game.id, - playerId: command.playerId - }); - } - } - - async getGameFromRedis(gameCode: string): Promise { - try { - const redisKey = `game:${gameCode}`; - const data = await this.redisService.get(redisKey); - return data ? JSON.parse(data) as ActiveGameData : null; - } catch (error) { - logError('Failed to get game from Redis', error instanceof Error ? error : new Error(String(error))); - return null; - } - } - - async removePlayerFromRedis(gameCode: string, playerId: string): Promise { - try { - const redisKey = `game:${gameCode}`; - const existingData = await this.redisService.get(redisKey); - - if (existingData) { - const gameData = JSON.parse(existingData) as ActiveGameData; - gameData.currentPlayers = gameData.currentPlayers.filter(p => p.playerId !== playerId); - - await this.redisService.setWithExpiry(redisKey, JSON.stringify(gameData), 24 * 60 * 60); - } - } catch (error) { - logError('Failed to remove player from Redis', error instanceof Error ? error : new Error(String(error))); - } - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Game/commands/StartGameCommand.ts b/SerpentRace_Backend/src/Application/Game/commands/StartGameCommand.ts deleted file mode 100644 index e10fad32..00000000 --- a/SerpentRace_Backend/src/Application/Game/commands/StartGameCommand.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { LoginType } from '../../../Domain/Game/GameAggregate'; - -export interface StartGameCommand { - deckids: string[]; // Array of deck IDs (3 types, multiple decks per type) - maxplayers: number; // Maximum number of players - logintype: LoginType; // How players can join the game - userid?: string; // Optional user who created the game (becomes game master) - orgid?: string | null; // Organization ID (for organization games) -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Game/commands/StartGameCommandHandler.ts b/SerpentRace_Backend/src/Application/Game/commands/StartGameCommandHandler.ts deleted file mode 100644 index 931f05fe..00000000 --- a/SerpentRace_Backend/src/Application/Game/commands/StartGameCommandHandler.ts +++ /dev/null @@ -1,289 +0,0 @@ -import { StartGameCommand } from './StartGameCommand'; -import { GameAggregate, GameDeck, GameCard, DeckType, GameState } from '../../../Domain/Game/GameAggregate'; -import { DeckAggregate } from '../../../Domain/Deck/DeckAggregate'; -import { IGameRepository } from '../../../Domain/IRepository/IGameRepository'; -import { IDeckRepository } from '../../../Domain/IRepository/IDeckRepository'; -import { DIContainer } from '../../Services/DIContainer'; -import { RedisService } from '../../Services/RedisService'; -import { logOther, logError } from '../../Services/Logger'; -import { randomBytes } from 'crypto'; -import { GenerateBoardCommand } from './GenerateBoardCommand'; - -export interface ActiveGameData { - gameId: string; - gameCode: string; - hostId?: string; - maxPlayers: number; - currentPlayers: GamePlayerData[]; - state: GameState; - createdAt: Date; - startedAt?: Date; - currentTurn?: string; - websocketRoom: string; -} - -export interface GamePlayerData { - playerId: string; - playerName?: string; - joinedAt: Date; - isOnline: boolean; - position?: number; -} - -export class StartGameCommandHandler { - private gameRepository: IGameRepository; - private deckRepository: IDeckRepository; - private redisService: RedisService; - - constructor() { - this.gameRepository = DIContainer.getInstance().gameRepository; - this.deckRepository = DIContainer.getInstance().deckRepository; - this.redisService = RedisService.getInstance(); - } - - async handle(command: StartGameCommand): Promise { - const startTime = performance.now(); - - try { - logOther('Starting game creation', `deckCount: ${command.deckids.length}, maxPlayers: ${command.maxplayers}, loginType: ${command.logintype}`); - - // Generate unique game code - const gamecode = this.generateGameCode(); - - // Fetch all decks by IDs - const decks = await this.fetchDecks(command.deckids); - - // Validate we have 3 deck types - this.validateDeckTypes(decks); - - // Group decks by type and shuffle cards within each type - const gamedecks = await this.createShuffledGameDecks(decks); - - // Create the game aggregate - const gameData: Partial = { - gamecode, - maxplayers: command.maxplayers, - logintype: command.logintype, - createdby: command.userid!, - orgid: command.orgid || null, - gamedecks, - players: [], - winner: null, - state: GameState.WAITING, - startdate: null, - enddate: null - }; - - // Save the game to database - const savedGame = await this.gameRepository.create(gameData); - - // Create Redis object for real-time game management - await this.createGameInRedis(savedGame, command.userid); - - // Trigger async board generation (don't block game creation) - this.triggerAsyncBoardGeneration(savedGame.id).catch((error: Error) => { - logError('Async board generation failed', error); - }); - - const endTime = performance.now(); - logOther('Game created successfully', `gameId: ${savedGame.id}, gameCode: ${savedGame.gamecode}, executionTime: ${Math.round(endTime - startTime)}ms`); - - return savedGame; - - } catch (error) { - const endTime = performance.now(); - logError('Failed to create game', error instanceof Error ? error : new Error(String(error))); - logOther('Game creation failed', `executionTime: ${Math.round(endTime - startTime)}ms`); - throw new Error('Failed to start game: ' + (error instanceof Error ? error.message : String(error))); - } - } - - private generateGameCode(): string { - // Generate a 6-character alphanumeric game code - const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - let result = ''; - const randomBytesArray = randomBytes(6); - - for (let i = 0; i < 6; i++) { - result += chars[randomBytesArray[i] % chars.length]; - } - - return result; - } - - private async fetchDecks(deckIds: string[]): Promise { - const decks: DeckAggregate[] = []; - - for (const deckId of deckIds) { - const deck = await this.deckRepository.findById(deckId); - if (!deck) { - throw new Error(`Deck with ID ${deckId} not found`); - } - decks.push(deck); - } - - return decks; - } - - private validateDeckTypes(decks: DeckAggregate[]): void { - const deckTypes = new Set(decks.map(deck => deck.type)); - - // Check if we have all 3 required deck types (LUCK=0, JOKER=1, QUESTION=2) - const requiredTypes = [0, 1, 2]; // Based on Type enum in DeckAggregate - const missingTypes = requiredTypes.filter(type => !deckTypes.has(type)); - - if (missingTypes.length > 0) { - throw new Error(`Missing required deck types: ${missingTypes.join(', ')}. Game requires LUCK, JOKER, and QUESTION deck types.`); - } - - logOther('Deck types validation passed', `foundTypes: [${Array.from(deckTypes).join(', ')}]`); - } - - private async createShuffledGameDecks(decks: DeckAggregate[]): Promise { - // Group decks by type - const decksByType = new Map(); - - decks.forEach(deck => { - if (!decksByType.has(deck.type)) { - decksByType.set(deck.type, []); - } - decksByType.get(deck.type)!.push(deck); - }); - - const gamedecks: GameDeck[] = []; - - // Process each deck type - for (const [deckType, typeDecks] of decksByType) { - // Collect all cards from decks of this type - const allCards: GameCard[] = []; - - typeDecks.forEach(deck => { - deck.cards.forEach(card => { - const gameCard: GameCard = { - cardid: this.generateCardId(), - question: card.text, - answer: card.answer || undefined, - type: card.type, // Include card type for proper processing - consequence: card.consequence || null, - played: false, - playerid: undefined - }; - allCards.push(gameCard); - }); - }); - - // Shuffle all cards of this type - const shuffledCards = this.shuffleArray(allCards); - - // Create game deck for this type - const gameDeck: GameDeck = { - deckid: typeDecks[0].id, // Use first deck ID as representative - decktype: this.mapDeckTypeToGameDeckType(deckType), - cards: shuffledCards - }; - - gamedecks.push(gameDeck); - - logOther('Created shuffled game deck', `type: ${deckType}, cardCount: ${shuffledCards.length}, sourceDecks: ${typeDecks.length}`); - } - - return gamedecks; - } - - private mapDeckTypeToGameDeckType(deckType: number): DeckType { - // Map DeckAggregate.Type to GameAggregate.DeckType - switch (deckType) { - case 0: return DeckType.LUCK; // LUCK = 0 - case 1: return DeckType.JOCKER; // JOKER = 1 - case 2: return DeckType.QUEST; // QUESTION = 2 - default: throw new Error(`Unknown deck type: ${deckType}`); - } - } - - private shuffleArray(array: T[]): T[] { - const shuffled = [...array]; - for (let i = shuffled.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; - } - return shuffled; - } - - private generateCardId(): string { - return randomBytes(8).toString('hex'); - } - - private async createGameInRedis(game: GameAggregate, hostId?: string): Promise { - try { - const redisKey = `game:${game.id}`; - - const gameData: ActiveGameData = { - gameId: game.id, - gameCode: game.gamecode, - hostId: hostId, - maxPlayers: game.maxplayers, - currentPlayers: [], - state: game.state, - createdAt: game.createdate, - websocketRoom: `game_${game.gamecode}` - }; - - // Store game data in Redis with TTL (24 hours) - await this.redisService.setWithExpiry(redisKey, JSON.stringify(gameData), 24 * 60 * 60); - - // Create game room for WebSocket connections - await this.redisService.set(`game_room:${game.gamecode}`, game.id); - - logOther('Game created in Redis', { - gameId: game.id, - gameCode: game.gamecode, - hostId: hostId, - websocketRoom: gameData.websocketRoom, - redisKey - }); - - } catch (error) { - logError('Failed to create game in Redis', error instanceof Error ? error : new Error(String(error))); - // Don't throw error here - Redis failure shouldn't prevent game creation - logOther('Game created successfully despite Redis error', { - gameId: game.id, - gameCode: game.gamecode - }); - } - } - - private async triggerAsyncBoardGeneration(gameId: string): Promise { - try { - // Calculate default field counts based on game configuration - // For now, use reasonable defaults - this should be configurable by host in the future - const maxSpecialFieldsPercentage = parseInt(process.env.MAX_SPECIAL_FIELDS_PERCENTAGE || '67'); - const maxSpecialFields = Math.floor((100 * maxSpecialFieldsPercentage) / 100); - - // Default distribution: 60% positive, 25% negative, 15% luck - const positiveFieldCount = Math.floor(maxSpecialFields * 0.6); - const negativeFieldCount = Math.floor(maxSpecialFields * 0.25); - const luckFieldCount = Math.floor(maxSpecialFields * 0.15); - - const command: GenerateBoardCommand = { - gameId, - positiveFieldCount, - negativeFieldCount, - luckFieldCount - }; - - logOther(`Triggering async board generation for game ${gameId}`, { - positiveFieldCount, - negativeFieldCount, - luckFieldCount, - totalSpecialFields: positiveFieldCount + negativeFieldCount + luckFieldCount - }); - - // Execute board generation in background - await DIContainer.getInstance().generateBoardCommandHandler.execute(command); - - } catch (error) { - logError(`Async board generation failed for game ${gameId}`, error as Error); - // Don't propagate error - board generation failure shouldn't affect game creation - } - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Game/commands/StartGamePlayCommand.ts b/SerpentRace_Backend/src/Application/Game/commands/StartGamePlayCommand.ts deleted file mode 100644 index af62a030..00000000 --- a/SerpentRace_Backend/src/Application/Game/commands/StartGamePlayCommand.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface StartGamePlayCommand { - gameId: string; // Game ID to start - userId?: string; // User who is starting the game (should be game master) -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Game/commands/StartGamePlayCommandHandler.ts b/SerpentRace_Backend/src/Application/Game/commands/StartGamePlayCommandHandler.ts deleted file mode 100644 index 6d352403..00000000 --- a/SerpentRace_Backend/src/Application/Game/commands/StartGamePlayCommandHandler.ts +++ /dev/null @@ -1,480 +0,0 @@ -import { StartGamePlayCommand } from './StartGamePlayCommand'; -import { GameAggregate, GameState, BoardData, GameField } from '../../../Domain/Game/GameAggregate'; -import { IGameRepository } from '../../../Domain/IRepository/IGameRepository'; -import { DIContainer } from '../../Services/DIContainer'; -import { RedisService } from '../../Services/RedisService'; -import { WebSocketService } from '../../Services/WebSocketService'; -import { logOther, logError } from '../../Services/Logger'; - -export interface GamePlayerPosition { - playerId: string; - playerName?: string; - position: number; // Board position (starts at 0) - turnOrder: number; // Random number to determine turn sequence - isOnline: boolean; - joinedAt: Date; -} - -export interface ActiveGamePlayData { - gameId: string; - gameCode: string; - hostId?: string; - maxPlayers: number; - players: GamePlayerPosition[]; - state: GameState; - createdAt: Date; - startedAt: Date; - currentTurn: number; // Index of current player in turn order - currentPlayer: string; // ID of the player whose turn it is - turnSequence: string[]; // Ordered array of player IDs based on turnOrder - websocketRoom: string; - gamePhase: 'starting' | 'playing' | 'paused' | 'finished'; - boardData: BoardData; // Generated board with fields -} - -export interface GameStartResult { - game: GameAggregate; - boardData: BoardData; -} - -export class StartGamePlayCommandHandler { - private gameRepository: IGameRepository; - private redisService: RedisService; - - constructor() { - this.gameRepository = DIContainer.getInstance().gameRepository; - this.redisService = RedisService.getInstance(); - } - - async handle(command: StartGamePlayCommand): Promise { - const startTime = performance.now(); - - try { - logOther('Starting game play', `gameId: ${command.gameId}, userId: ${command.userId || 'system'}`); - - // Find the game - const game = await this.gameRepository.findById(command.gameId); - if (!game) { - throw new Error(`Game with ID ${command.gameId} not found`); - } - - // Validate game can be started - this.validateGameCanStart(game, command.userId); - - // Wait for board generation to complete (max 20 seconds) - const boardData = await this.waitForBoardGeneration(game.id); - - // Update game state in database - const updatedGame = await this.gameRepository.update(game.id, { - state: GameState.ACTIVE, - startdate: new Date() - }); - - if (!updatedGame) { - throw new Error('Failed to update game state'); - } - - // Initialize game play in Redis with board data - await this.initializeGamePlayInRedis(updatedGame, boardData); - - // Notify all players via WebSocket - await this.notifyGameStart(updatedGame); - - const endTime = performance.now(); - logOther('Game play started successfully', { - gameId: updatedGame.id, - gameCode: updatedGame.gamecode, - playerCount: updatedGame.players.length, - executionTime: Math.round(endTime - startTime) - }); - - return { - game: updatedGame, - boardData: boardData - }; - - } catch (error) { - const endTime = performance.now(); - logError('Failed to start game play', error instanceof Error ? error : new Error(String(error))); - logOther('Game start failed', { - gameId: command.gameId, - userId: command.userId, - executionTime: Math.round(endTime - startTime) - }); - throw error; - } - } - - private validateGameCanStart(game: GameAggregate, userId?: string): void { - // Check if game is in waiting state - if (game.state !== GameState.WAITING) { - throw new Error('Game is not in waiting state and cannot be started'); - } - - // Check if there are enough players (at least 2) - if (game.players.length < 2) { - throw new Error('Game needs at least 2 players to start'); - } - - // For private and organization games, check if user is game master - if (game.createdby && userId && game.createdby !== userId) { - throw new Error('Only the game master can start this game'); - } - - logOther('Game start validation passed', { - gameId: game.id, - gameCode: game.gamecode, - playerCount: game.players.length, - gameState: game.state, - isGameMaster: !game.createdby || (userId && game.createdby === userId) - }); - } - - private async initializeGamePlayInRedis(game: GameAggregate, boardData: BoardData): Promise { - try { - const redisKey = `gameplay:${game.gamecode}`; - - // Get connected player names from Redis (stored by WebSocket) - const playerNamesMap = await this.getPlayerNames(game.gamecode); - - // Generate random turn orders for all players - const playersWithPositions = this.initializePlayerPositions(game.players, playerNamesMap); - - // Sort by turn order to create turn sequence - const turnSequence = [...playersWithPositions] - .sort((a, b) => a.turnOrder - b.turnOrder) - .map(p => p.playerId); - - const gamePlayData: ActiveGamePlayData = { - gameId: game.id, - gameCode: game.gamecode, - hostId: game.createdby || undefined, - maxPlayers: game.maxplayers, - players: playersWithPositions, - state: GameState.ACTIVE, - createdAt: game.createdate, - startedAt: new Date(), - currentTurn: 0, // Start with first player in sequence - currentPlayer: turnSequence[0], // First player in turn sequence - turnSequence, - websocketRoom: `game_${game.gamecode}`, - gamePhase: 'starting', - boardData - }; - - // Store game play data in Redis with TTL (24 hours) - await this.redisService.setWithExpiry(redisKey, JSON.stringify(gamePlayData), 24 * 60 * 60); - - logOther('Game play initialized in Redis', { - gameId: game.id, - gameCode: game.gamecode, - playerCount: playersWithPositions.length, - turnSequence, - currentPlayer: turnSequence[0], - redisKey - }); - - } catch (error) { - logError('Failed to initialize game play in Redis', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to initialize game session'); - } - } - - private initializePlayerPositions(playerIds: string[], playerNamesMap: Map): GamePlayerPosition[] { - const players: GamePlayerPosition[] = []; - - // Generate random turn orders (1 to playerCount) - const turnOrders = this.generateRandomTurnOrders(playerIds.length); - - playerIds.forEach((playerId, index) => { - players.push({ - playerId, - playerName: playerNamesMap.get(playerId) || playerId, // Use mapped name or fallback to ID - position: 0, // All players start at position 0 - turnOrder: turnOrders[index], - isOnline: true, // Assume online when game starts - joinedAt: new Date() - }); - }); - - logOther('Player positions initialized', { - playerCount: players.length, - turnOrders: turnOrders, - playersData: players.map(p => ({ - playerId: p.playerId, - playerName: p.playerName, - position: p.position, - turnOrder: p.turnOrder - })) - }); - - return players; - } - - private generateRandomTurnOrders(playerCount: number): number[] { - // Create array [1, 2, 3, ..., playerCount] - const orders = Array.from({ length: playerCount }, (_, i) => i + 1); - - // Fisher-Yates shuffle - for (let i = orders.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [orders[i], orders[j]] = [orders[j], orders[i]]; - } - - return orders; - } - - private async notifyGameStart(game: GameAggregate): Promise { - try { - // Get game play data from Redis (contains board data) - const gamePlayData = await this.getGamePlayFromRedis(game.gamecode); - if (!gamePlayData) { - logError('Game play data not found in Redis', new Error('Missing game play data')); - return; - } - - const boardData = gamePlayData.boardData; - if (!boardData) { - logError('Board data not found in game play data', new Error('Missing board data')); - return; - } - - // Get WebSocket service from DIContainer and broadcast game start - const gameWebSocketService = DIContainer.getInstance().gameWebSocketService; - await gameWebSocketService.broadcastGameStart( - game.gamecode, - boardData, - gamePlayData.turnSequence, - game - ); - - logOther('Game start notifications sent via WebSocket', { - gameId: game.id, - gameCode: game.gamecode, - playerCount: game.players.length, - websocketRoom: `game_${game.gamecode}`, - firstPlayer: gamePlayData.turnSequence[0] - }); - - } catch (error) { - logError('Failed to send game start notifications', error instanceof Error ? error : new Error(String(error))); - // Don't throw error here - notification failure shouldn't prevent game start - } - } - - async getGamePlayFromRedis(gameCode: string): Promise { - try { - const redisKey = `gameplay:${gameCode}`; - const data = await this.redisService.get(redisKey); - return data ? JSON.parse(data) as ActiveGamePlayData : null; - } catch (error) { - logError('Failed to get game play from Redis', error instanceof Error ? error : new Error(String(error))); - return null; - } - } - - async updatePlayerPosition(gameCode: string, playerId: string, newPosition: number): Promise { - try { - const gameData = await this.getGamePlayFromRedis(gameCode); - if (!gameData) { - throw new Error('Game session not found'); - } - - // Update player position - const player = gameData.players.find(p => p.playerId === playerId); - if (player) { - player.position = newPosition; - - // Save back to Redis - const redisKey = `gameplay:${gameCode}`; - await this.redisService.setWithExpiry(redisKey, JSON.stringify(gameData), 24 * 60 * 60); - - logOther('Player position updated', { - gameCode, - playerId, - newPosition - }); - } - } catch (error) { - logError('Failed to update player position', error instanceof Error ? error : new Error(String(error))); - throw error; - } - } - - async getNextPlayer(gameCode: string): Promise { - try { - const gameData = await this.getGamePlayFromRedis(gameCode); - if (!gameData) { - return null; - } - - const nextTurnIndex = (gameData.currentTurn + 1) % gameData.turnSequence.length; - return gameData.turnSequence[nextTurnIndex]; - } catch (error) { - logError('Failed to get next player', error instanceof Error ? error : new Error(String(error))); - return null; - } - } - - private async getPlayerNames(gameCode: string): Promise> { - try { - // Get active game data from Redis which contains player names - const activeGameKey = `game:${gameCode}`; - const activeGameStr = await this.redisService.get(activeGameKey); - - const playerNamesMap = new Map(); - - if (activeGameStr) { - const activeGame = JSON.parse(activeGameStr); - if (activeGame.currentPlayers && Array.isArray(activeGame.currentPlayers)) { - // Map playerIds to playerNames from active game data - activeGame.currentPlayers.forEach((player: any) => { - if (player.playerId && player.playerName) { - playerNamesMap.set(player.playerId, player.playerName); - } - }); - } - } - - logOther('Retrieved player names map', { - gameCode, - playerCount: playerNamesMap.size, - players: Array.from(playerNamesMap.entries()).map(([id, name]) => ({ id, name })) - }); - - return playerNamesMap; - } catch (error) { - logError('Failed to get player names', error instanceof Error ? error : new Error(String(error))); - return new Map(); - } - } - - async advanceTurn(gameId: string): Promise { - try { - const gameData = await this.getGamePlayFromRedis(gameId); - if (!gameData) { - return null; - } - - // Advance to next player - gameData.currentTurn = (gameData.currentTurn + 1) % gameData.turnSequence.length; - const currentPlayer = gameData.turnSequence[gameData.currentTurn]; - - // Save back to Redis - const redisKey = `gameplay:${gameId}`; - await this.redisService.setWithExpiry(redisKey, JSON.stringify(gameData), 24 * 60 * 60); - - logOther('Turn advanced', { - gameId, - currentTurn: gameData.currentTurn, - currentPlayer - }); - - return currentPlayer; - } catch (error) { - logError('Failed to advance turn', error instanceof Error ? error : new Error(String(error))); - return null; - } - } - - private async waitForBoardGeneration(gameId: string): Promise { - const maxWaitTime = parseInt(process.env.MAX_GENERATION_TIME_SECONDS || '20') * 1000; - const pollInterval = 500; // Check every 500ms - const startTime = Date.now(); - - logOther(`Waiting for board generation for game ${gameId}`, { - maxWaitTime: maxWaitTime / 1000, - pollInterval, - redisKey: `game_board_${gameId}` - }); - - while (Date.now() - startTime < maxWaitTime) { - try { - const redisKey = `game_board_${gameId}`; - const boardDataStr = await this.redisService.get(redisKey); - - logOther(`Board generation check for game ${gameId}`, { - attempt: Math.floor((Date.now() - startTime) / pollInterval) + 1, - hasData: !!boardDataStr, - dataLength: boardDataStr ? boardDataStr.length : 0, - waitTime: Date.now() - startTime - }); - - if (boardDataStr) { - const boardData: BoardData = JSON.parse(boardDataStr); - - logOther(`Board data found for game ${gameId}`, { - generationComplete: boardData.generationComplete, - hasError: !!boardData.error, - fieldsCount: boardData.fields ? boardData.fields.length : 0 - }); - - if (boardData.generationComplete) { - if (boardData.error) { - logError(`Board generation failed for game ${gameId}`, new Error(boardData.error)); - throw new Error(`Board generation failed: ${boardData.error}`); - } - - logOther(`Board generation completed for game ${gameId}`, { - fieldCount: boardData.fields.length, - waitTime: Date.now() - startTime - }); - - return boardData; - } - } else { - // No board data found yet - check if we need to trigger generation - logOther(`No board data found yet for game ${gameId}, checking if generation was triggered...`, { - waitTime: Date.now() - startTime, - redisKey - }); - - // If we've waited for 2 seconds and still no data, try to trigger generation manually - if (Date.now() - startTime > 2000) { - await this.ensureBoardGenerationTriggered(gameId); - } - } - - // Wait before next poll - await new Promise(resolve => setTimeout(resolve, pollInterval)); - - } catch (error) { - logError(`Error checking board generation status for game ${gameId}`, error as Error); - throw new Error(`Failed to retrieve board data: ${error instanceof Error ? error.message : String(error)}`); - } - } - - // Timeout reached - logError(`Board generation timeout for game ${gameId}`, new Error(`Generation took longer than ${maxWaitTime / 1000} seconds`)); - throw new Error(`Board generation timeout. Game ${gameId} is not ready to start. Please try again later.`); - } - - private async ensureBoardGenerationTriggered(gameId: string): Promise { - try { - logOther(`Ensuring board generation is triggered for game ${gameId}`); - - // Check if generation was already triggered by looking for any board data - const redisKey = `game_board_${gameId}`; - const existingData = await this.redisService.get(redisKey); - - if (!existingData) { - // No data at all - trigger generation manually - logOther(`No board generation found for game ${gameId}, triggering manually`); - - // Use DIContainer to trigger board generation - const generateBoardCommand = { - gameId, - positiveFieldCount: Math.floor(67 * 0.6), // Default: 60% positive - negativeFieldCount: Math.floor(67 * 0.25), // Default: 25% negative - luckFieldCount: Math.floor(67 * 0.15) // Default: 15% luck - }; - - await DIContainer.getInstance().generateBoardCommandHandler.execute(generateBoardCommand); - logOther(`Board generation manually triggered for game ${gameId}`); - } - } catch (error) { - logError(`Failed to ensure board generation for game ${gameId}`, error as Error); - // Don't throw here - let the main wait loop handle the timeout - } - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Organization/commands/CreateOrganizationCommand.ts b/SerpentRace_Backend/src/Application/Organization/commands/CreateOrganizationCommand.ts deleted file mode 100644 index 8e0f95fc..00000000 --- a/SerpentRace_Backend/src/Application/Organization/commands/CreateOrganizationCommand.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface CreateOrganizationCommand { - name: string; - contactfname: string; - contactlname: string; - contactphone: string; - contactemail: string; - url?: string; -} diff --git a/SerpentRace_Backend/src/Application/Organization/commands/CreateOrganizationCommandHandler.ts b/SerpentRace_Backend/src/Application/Organization/commands/CreateOrganizationCommandHandler.ts deleted file mode 100644 index d77ed9de..00000000 --- a/SerpentRace_Backend/src/Application/Organization/commands/CreateOrganizationCommandHandler.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { IOrganizationRepository } from '../../../Domain/IRepository/IOrganizationRepository'; -import { CreateOrganizationCommand } from './CreateOrganizationCommand'; -import { ShortOrganizationDto } from '../../DTOs/OrganizationDto'; -import { OrganizationAggregate, OrganizationState } from '../../../Domain/Organization/OrganizationAggregate'; -import { OrganizationMapper } from '../../DTOs/Mappers/OrganizationMapper'; - -export class CreateOrganizationCommandHandler { - constructor(private readonly orgRepo: IOrganizationRepository) {} - - async execute(cmd: CreateOrganizationCommand): Promise { - try { - const org = new OrganizationAggregate(); - org.name = cmd.name; - org.contactfname = cmd.contactfname; - org.contactlname = cmd.contactlname; - org.contactphone = cmd.contactphone; - org.contactemail = cmd.contactemail; - org.url = cmd.url || null; - org.state = OrganizationState.REGISTERED; - - const created = await this.orgRepo.create(org); - return OrganizationMapper.toShortDto(created); - } catch (error) { - if (error instanceof Error) { - if (error.message.includes('duplicate key value violates unique constraint')) { - throw new Error('Organization with this name or contact email already exists'); - } - } - throw new Error('Failed to create organization'); - } - } -} diff --git a/SerpentRace_Backend/src/Application/Organization/commands/DeleteOrganizationCommand.ts b/SerpentRace_Backend/src/Application/Organization/commands/DeleteOrganizationCommand.ts deleted file mode 100644 index 60a31806..00000000 --- a/SerpentRace_Backend/src/Application/Organization/commands/DeleteOrganizationCommand.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface DeleteOrganizationCommand { - id: string; - soft?: boolean; -} diff --git a/SerpentRace_Backend/src/Application/Organization/commands/DeleteOrganizationCommandHandler.ts b/SerpentRace_Backend/src/Application/Organization/commands/DeleteOrganizationCommandHandler.ts deleted file mode 100644 index a9e1b965..00000000 --- a/SerpentRace_Backend/src/Application/Organization/commands/DeleteOrganizationCommandHandler.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { IOrganizationRepository } from '../../../Domain/IRepository/IOrganizationRepository'; -import { DeleteOrganizationCommand } from './DeleteOrganizationCommand'; - - -export class DeleteOrganizationCommandHandler { - constructor(private readonly orgRepo: IOrganizationRepository) {} - - async execute(cmd: DeleteOrganizationCommand): Promise { - if (cmd.soft) { - await this.orgRepo.softDelete(cmd.id); - } else { - await this.orgRepo.delete(cmd.id); - } - return true; - } -} diff --git a/SerpentRace_Backend/src/Application/Organization/commands/ProcessOrgAuthCallbackCommand.ts b/SerpentRace_Backend/src/Application/Organization/commands/ProcessOrgAuthCallbackCommand.ts deleted file mode 100644 index 6fa97b73..00000000 --- a/SerpentRace_Backend/src/Application/Organization/commands/ProcessOrgAuthCallbackCommand.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface ProcessOrgAuthCallbackCommand { - organizationId: string; - userId: string; - status: 'ok' | 'not_ok'; - authToken?: string; -} diff --git a/SerpentRace_Backend/src/Application/Organization/commands/ProcessOrgAuthCallbackCommandHandler.ts b/SerpentRace_Backend/src/Application/Organization/commands/ProcessOrgAuthCallbackCommandHandler.ts deleted file mode 100644 index 39a41abe..00000000 --- a/SerpentRace_Backend/src/Application/Organization/commands/ProcessOrgAuthCallbackCommandHandler.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { IOrganizationRepository } from '../../../Domain/IRepository/IOrganizationRepository'; -import { ProcessOrgAuthCallbackCommand } from './ProcessOrgAuthCallbackCommand'; -import { logAuth, logDatabase, logError, logWarning } from '../../Services/Logger'; - -export interface ProcessOrgAuthCallbackResponse { - success: boolean; - message: string; - updatedFields?: string[]; -} - -export class ProcessOrgAuthCallbackCommandHandler { - constructor( - private readonly userRepo: IUserRepository, - private readonly orgRepo: IOrganizationRepository - ) {} - - async execute(cmd: ProcessOrgAuthCallbackCommand): Promise { - const startTime = Date.now(); - - try { - logAuth('Processing organization authentication callback', cmd.userId, { - organizationId: cmd.organizationId, - status: cmd.status, - hasAuthToken: !!cmd.authToken - }); - - // Verify organization exists - const organization = await this.orgRepo.findById(cmd.organizationId); - if (!organization) { - logWarning('Organization not found for auth callback', { - organizationId: cmd.organizationId, - userId: cmd.userId - }); - return { - success: false, - message: 'Organization not found' - }; - } - - // Verify user exists - const user = await this.userRepo.findById(cmd.userId); - if (!user) { - logWarning('User not found for auth callback', { - organizationId: cmd.organizationId, - userId: cmd.userId - }); - return { - success: false, - message: 'User not found' - }; - } - - // Verify user belongs to the organization - if (user.orgid !== cmd.organizationId) { - logWarning('User does not belong to organization for auth callback', { - organizationId: cmd.organizationId, - userId: cmd.userId, - userOrgId: user.orgid - }); - return { - success: false, - message: 'User does not belong to this organization' - }; - } - - if (cmd.status === 'not_ok') { - logAuth('Organization authentication failed', cmd.userId, { - organizationId: cmd.organizationId, - organizationName: organization.name - }); - return { - success: false, - message: 'Organization authentication failed' - }; - } - - // Update user's organization login date - const now = new Date(); - const updatedUser = await this.userRepo.update(cmd.userId, { - Orglogindate: now - }); - - if (!updatedUser) { - logError('Failed to update user organization login date', new Error('User update returned null')); - return { - success: false, - message: 'Failed to update user login information' - }; - } - - logAuth('Organization authentication successful', cmd.userId, { - organizationId: cmd.organizationId, - organizationName: organization.name, - orgLoginDate: now.toISOString(), - executionTime: Date.now() - startTime - }); - - logDatabase('User organization login date updated', - `userId: ${cmd.userId}, orgId: ${cmd.organizationId}`, - Date.now() - startTime, - { - userId: cmd.userId, - organizationId: cmd.organizationId, - newOrgLoginDate: now.toISOString() - } - ); - - return { - success: true, - message: 'Organization authentication successful', - updatedFields: ['Orglogindate'] - }; - - } catch (error) { - logError('ProcessOrgAuthCallbackCommandHandler error', error as Error); - return { - success: false, - message: 'Internal error processing authentication callback' - }; - } - } -} diff --git a/SerpentRace_Backend/src/Application/Organization/commands/UpdateOrganizationCommand.ts b/SerpentRace_Backend/src/Application/Organization/commands/UpdateOrganizationCommand.ts deleted file mode 100644 index 040f893d..00000000 --- a/SerpentRace_Backend/src/Application/Organization/commands/UpdateOrganizationCommand.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { OrganizationStateType } from '../../../Domain/Organization/OrganizationAggregate'; - -export interface UpdateOrganizationCommand { - id: string; - name?: string; - contactfname?: string; - contactlname?: string; - contactphone?: string; - contactemail?: string; - url?: string; - state?: OrganizationStateType; - userinorg?: number; - maxOrganizationalDecks?: number | null; -} diff --git a/SerpentRace_Backend/src/Application/Organization/commands/UpdateOrganizationCommandHandler.ts b/SerpentRace_Backend/src/Application/Organization/commands/UpdateOrganizationCommandHandler.ts deleted file mode 100644 index 32a145a8..00000000 --- a/SerpentRace_Backend/src/Application/Organization/commands/UpdateOrganizationCommandHandler.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { IOrganizationRepository } from '../../../Domain/IRepository/IOrganizationRepository'; -import { UpdateOrganizationCommand } from './UpdateOrganizationCommand'; - -import { ShortOrganizationDto } from '../../DTOs/OrganizationDto'; -import { OrganizationMapper } from '../../DTOs/Mappers/OrganizationMapper'; - -export class UpdateOrganizationCommandHandler { - constructor(private readonly orgRepo: IOrganizationRepository) {} - - async execute(cmd: UpdateOrganizationCommand): Promise { - const updated = await this.orgRepo.update(cmd.id, { ...cmd }); - if (!updated) return null; - return OrganizationMapper.toShortDto(updated); - } -} diff --git a/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationByIdQuery.ts b/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationByIdQuery.ts deleted file mode 100644 index e8473c15..00000000 --- a/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationByIdQuery.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface GetOrganizationByIdQuery { - id: string; -} diff --git a/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationByIdQueryHandler.ts b/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationByIdQueryHandler.ts deleted file mode 100644 index 60c82768..00000000 --- a/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationByIdQueryHandler.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { IOrganizationRepository } from '../../../Domain/IRepository/IOrganizationRepository'; -import { GetOrganizationByIdQuery } from './GetOrganizationByIdQuery'; - -import { ShortOrganizationDto } from '../../DTOs/OrganizationDto'; -import { OrganizationMapper } from '../../DTOs/Mappers/OrganizationMapper'; - -export class GetOrganizationByIdQueryHandler { - constructor(private readonly orgRepo: IOrganizationRepository) {} - - async execute(query: GetOrganizationByIdQuery): Promise { - const org = await this.orgRepo.findById(query.id); - if (!org) return null; - return OrganizationMapper.toShortDto(org); - } -} diff --git a/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationLoginUrlQuery.ts b/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationLoginUrlQuery.ts deleted file mode 100644 index 26370b47..00000000 --- a/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationLoginUrlQuery.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface GetOrganizationLoginUrlQuery { - organizationId: string; -} diff --git a/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationLoginUrlQueryHandler.ts b/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationLoginUrlQueryHandler.ts deleted file mode 100644 index f7de9707..00000000 --- a/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationLoginUrlQueryHandler.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { IOrganizationRepository } from '../../../Domain/IRepository/IOrganizationRepository'; -import { GetOrganizationLoginUrlQuery } from './GetOrganizationLoginUrlQuery'; -import { OrganizationLoginUrlDto } from '../../DTOs/OrganizationDto'; -import { logDatabase, logError, logWarning } from '../../Services/Logger'; - -export class GetOrganizationLoginUrlQueryHandler { - constructor(private readonly orgRepo: IOrganizationRepository) {} - - async execute(query: GetOrganizationLoginUrlQuery): Promise { - const startTime = Date.now(); - - try { - logDatabase('Getting organization login URL', `organizationId: ${query.organizationId}`, 0, { - organizationId: query.organizationId - }); - - const organization = await this.orgRepo.findById(query.organizationId); - - if (!organization) { - logWarning('Organization not found for login URL request', { - organizationId: query.organizationId - }); - return null; - } - - if (!organization.url) { - logWarning('Organization has no configured login URL', { - organizationId: query.organizationId, - organizationName: organization.name - }); - return null; - } - - const result: OrganizationLoginUrlDto = { - organizationId: organization.id, - organizationName: organization.name, - loginUrl: organization.url - }; - - logDatabase('Organization login URL retrieved successfully', - `organizationId: ${query.organizationId}`, - Date.now() - startTime, - { - organizationId: organization.id, - organizationName: organization.name, - hasUrl: !!organization.url - } - ); - - return result; - } catch (error) { - logError('GetOrganizationLoginUrlQueryHandler error', error as Error); - throw new Error('Failed to retrieve organization login URL'); - } - } -} diff --git a/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationsByPageQuery.ts b/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationsByPageQuery.ts deleted file mode 100644 index ec22eb96..00000000 --- a/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationsByPageQuery.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface GetOrganizationsByPageQuery { - from: number; - to: number; - includeDeleted?: boolean; -} diff --git a/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationsByPageQueryHandler.ts b/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationsByPageQueryHandler.ts deleted file mode 100644 index b838d81f..00000000 --- a/SerpentRace_Backend/src/Application/Organization/queries/GetOrganizationsByPageQueryHandler.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { IOrganizationRepository } from '../../../Domain/IRepository/IOrganizationRepository'; -import { GetOrganizationsByPageQuery } from './GetOrganizationsByPageQuery'; -import { ShortOrganizationDto } from '../../DTOs/OrganizationDto'; -import { OrganizationMapper } from '../../DTOs/Mappers/OrganizationMapper'; -import { logError, logRequest } from '../../Services/Logger'; - -export class GetOrganizationsByPageQueryHandler { - constructor(private readonly orgRepo: IOrganizationRepository) {} - - async execute(query: GetOrganizationsByPageQuery): Promise<{ organizations: ShortOrganizationDto[], totalCount: number }> { - try { - // Validate pagination parameters - if (query.from < 0 || query.to < query.from) { - throw new Error('Invalid pagination parameters'); - } - - const limit = query.to - query.from + 1; - if (limit > 100) { - throw new Error('Page size too large. Maximum 100 records per request'); - } - - logRequest('Get organizations by page query started', undefined, undefined, { - from: query.from, - to: query.to, - includeDeleted: query.includeDeleted || false - }); - - const result = query.includeDeleted - ? await this.orgRepo.findByPageIncludingDeleted(query.from, query.to) - : await this.orgRepo.findByPage(query.from, query.to); - - logRequest('Get organizations by page query completed', undefined, undefined, { - from: query.from, - to: query.to, - returned: result.organizations.length, - totalCount: result.totalCount, - includeDeleted: query.includeDeleted || false - }); - - return { - organizations: OrganizationMapper.toShortDtoList(result.organizations), - totalCount: result.totalCount - }; - } catch (error) { - logError('GetOrganizationsByPageQueryHandler error', error instanceof Error ? error : new Error(String(error))); - - // Handle database errors - if (error instanceof Error && error.message.includes('database')) { - throw new Error('Database connection error'); - } - - // Re-throw validation errors as-is - if (error instanceof Error && (error.message.includes('Invalid pagination') || error.message.includes('Page size'))) { - throw error; - } - - throw new Error('Failed to retrieve organizations'); - } - } -} diff --git a/SerpentRace_Backend/src/Application/Search/Generalsearch.ts b/SerpentRace_Backend/src/Application/Search/Generalsearch.ts deleted file mode 100644 index 0d940191..00000000 --- a/SerpentRace_Backend/src/Application/Search/Generalsearch.ts +++ /dev/null @@ -1,156 +0,0 @@ -import { IUserRepository } from '../../Domain/IRepository/IUserRepository'; -import { IOrganizationRepository } from '../../Domain/IRepository/IOrganizationRepository'; -import { IDeckRepository } from '../../Domain/IRepository/IDeckRepository'; -import { SearchQuery, SearchResult } from '../DTOs/SearchDto'; -import { ShortUserDto, DetailUserDto } from '../DTOs/UserDto'; -import { ShortOrganizationDto, DetailOrganizationDto } from '../DTOs/OrganizationDto'; -import { ShortDeckDto, DetailDeckDto } from '../DTOs/DeckDto'; -import { UserMapper } from '../DTOs/Mappers/UserMapper'; -import { OrganizationMapper } from '../DTOs/Mappers/OrganizationMapper'; -import { DeckMapper } from '../DTOs/Mappers/DeckMapper'; - -export type SearchType = 'users' | 'organizations' | 'decks'; - -export interface IGeneralSearchService { - searchUsers(searchQuery: SearchQuery): Promise>; - searchOrganizations(searchQuery: SearchQuery): Promise>; - searchDecks(searchQuery: SearchQuery): Promise>; - searchByType(searchType: SearchType, searchQuery: SearchQuery): Promise>; -} - -export class GeneralSearchService implements IGeneralSearchService { - constructor( - private userRepo: IUserRepository, - private organizationRepo: IOrganizationRepository, - private deckRepo: IDeckRepository - ) {} - - static getSearchTypeFromUrl(url: string): SearchType { - if (url.includes('/users/') || url.includes('/api/users/')) { - return 'users'; - } else if (url.includes('/organizations/') || url.includes('/api/organizations/')) { - return 'organizations'; - } else if (url.includes('/decks/') || url.includes('/api/decks/')) { - return 'decks'; - } - return 'users'; - } - - async searchUsers(searchQuery: SearchQuery): Promise> { - const { query, limit = 20, offset = 0 } = searchQuery; - - if (!query || query.trim().length === 0) { - return { - results: [], - totalCount: 0, - hasMore: false, - searchQuery: query, - searchType: 'users' - }; - } - - // Ensure limit is at least 1 to prevent database issues - const effectiveLimit = Math.max(limit || 20, 1); - const effectiveOffset = Math.max(offset || 0, 0); - - try { - const { users, totalCount } = await this.userRepo.search(query.trim(), effectiveLimit, effectiveOffset); - const results = users.map(user => UserMapper.toShortDto(user)); - const hasMore = (effectiveOffset + effectiveLimit) < totalCount; - - return { - results, - totalCount, - hasMore, - searchQuery: query, - searchType: 'users' - }; - } catch (error) { - throw new Error('Failed to search users'); - } - } - - async searchOrganizations(searchQuery: SearchQuery): Promise> { - const { query, limit = 20, offset = 0 } = searchQuery; - - if (!query || query.trim().length === 0) { - return { - results: [], - totalCount: 0, - hasMore: false, - searchQuery: query, - searchType: 'organizations' - }; - } - - const { organizations, totalCount } = await this.organizationRepo.search(query.trim(), limit, offset); - const results = organizations.map(org => OrganizationMapper.toShortDto(org)); - const hasMore = (offset + limit) < totalCount; - - return { - results, - totalCount, - hasMore, - searchQuery: query, - searchType: 'organizations' - }; - } - - async searchDecks(searchQuery: SearchQuery): Promise> { - const { query, limit = 20, offset = 0 } = searchQuery; - - if (!query || query.trim().length === 0) { - return { - results: [], - totalCount: 0, - hasMore: false, - searchQuery: query, - searchType: 'decks' - }; - } - - // Ensure limit is at least 1 to prevent database issues - const effectiveLimit = Math.max(limit || 20, 1); - const effectiveOffset = Math.max(offset || 0, 0); - - try { - const { decks, totalCount } = await this.deckRepo.search(query.trim(), effectiveLimit, effectiveOffset); - const results = decks.map(deck => DeckMapper.toShortDto(deck)); - const hasMore = (effectiveOffset + effectiveLimit) < totalCount; - - return { - results, - totalCount, - hasMore, - searchQuery: query, - searchType: 'decks' - }; - } catch (error) { - throw new Error('Failed to search decks'); - } - } - - async searchByType( - searchType: SearchType, - searchQuery: SearchQuery - ): Promise> { - switch (searchType) { - case 'users': - return await this.searchUsers(searchQuery) as SearchResult; - case 'organizations': - return await this.searchOrganizations(searchQuery) as SearchResult; - case 'decks': - return await this.searchDecks(searchQuery) as SearchResult; - default: - throw new Error(`Unsupported search type: ${searchType}`); - } - } - - async searchFromUrl( - url: string, - searchQuery: SearchQuery - ): Promise> { - const searchType = GeneralSearchService.getSearchTypeFromUrl(url); - return await this.searchByType(searchType, searchQuery); - } -} diff --git a/SerpentRace_Backend/src/Application/Services/AdminBypassService.ts b/SerpentRace_Backend/src/Application/Services/AdminBypassService.ts deleted file mode 100644 index 6732c15f..00000000 --- a/SerpentRace_Backend/src/Application/Services/AdminBypassService.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { UserState } from '../../Domain/User/UserAggregate'; -import { logAuth } from './Logger'; -import { Request, Response } from 'express'; - -/** - * Admin Bypass Service - Centralized admin privilege checking and logging - */ -export class AdminBypassService { - /** - * Check if user has admin privileges - * @param userState - User's current state - * @returns true if user is admin - */ - static isAdmin(userState: UserState): boolean { - return userState === UserState.ADMIN; - } - - /** - * Check if user should bypass all restrictions - * @param userState - User's current state - * @returns true if restrictions should be bypassed - */ - static shouldBypassRestrictions(userState: UserState): boolean { - return this.isAdmin(userState); - } - - /** - * Log admin bypass action for audit trail - * @param action - Description of the action being bypassed - * @param adminUserId - ID of the admin user - * @param targetId - ID of the target resource - * @param details - Additional details about the bypass - * @param req - Optional request object for context - * @param res - Optional response object for context - */ - static logAdminBypass( - action: string, - adminUserId: string, - targetId: string, - details?: any, - req?: Request, - res?: Response - ): void { - logAuth(`ADMIN_BYPASS: ${action}`, adminUserId, { - targetId, - action, - bypassReason: 'Admin privileges', - timestamp: new Date().toISOString(), - ...details - }, req, res); - } -} - -/** - * Admin Audit Service - Enhanced logging for all admin actions - */ -export class AdminAuditService { - /** - * Log comprehensive admin action for audit trail - * @param action - Action being performed - * @param adminUserId - ID of the admin user - * @param details - Detailed information about the action - * @param req - Request object for context - * @param res - Response object for context - */ - static logAdminAction( - action: string, - adminUserId: string, - details: { - targetType: 'user' | 'organization' | 'deck' | 'contact' | 'chat'; - targetId: string; - operation: 'create' | 'read' | 'update' | 'delete' | 'bypass' | 'export' | 'import'; - changes?: any; - sensitive?: boolean; - metadata?: any; - }, - req?: Request, - res?: Response - ): void { - - const auditData = { - timestamp: new Date().toISOString(), - adminUserId, - action, - ...details, - ip: req?.ip, - userAgent: req?.get('User-Agent'), - endpoint: req?.path, - method: req?.method, - requestId: req?.headers['x-request-id'] || 'unknown' - }; - - // Enhanced logging for admin actions - logAuth(`ADMIN_AUDIT: ${action}`, adminUserId, auditData, req, res); - - // Additional security logging for sensitive operations - if (details.sensitive) { - logAuth(`ADMIN_SENSITIVE: ${action}`, adminUserId, { - ...auditData, - alertLevel: 'HIGH', - requiresReview: true - }, req, res); - } - } - - /** - * Log bulk admin operations - * @param action - Bulk action being performed - * @param adminUserId - ID of the admin user - * @param affectedCount - Number of resources affected - * @param targetType - Type of resources affected - * @param req - Request object for context - * @param res - Response object for context - */ - static logBulkAdminAction( - action: string, - adminUserId: string, - affectedCount: number, - targetType: string, - req?: Request, - res?: Response - ): void { - this.logAdminAction(`BULK_${action}`, adminUserId, { - targetType: targetType as any, - targetId: `bulk-${affectedCount}-items`, - operation: 'update' as any, - metadata: { affectedCount }, - sensitive: affectedCount > 10 // Mark large bulk operations as sensitive - }, req, res); - } -} diff --git a/SerpentRace_Backend/src/Application/Services/AuthMiddleware.ts b/SerpentRace_Backend/src/Application/Services/AuthMiddleware.ts deleted file mode 100644 index 46496685..00000000 --- a/SerpentRace_Backend/src/Application/Services/AuthMiddleware.ts +++ /dev/null @@ -1,148 +0,0 @@ -import { Request, Response, NextFunction } from 'express'; -import { JWTService } from './JWTService'; -import { RedisService } from './RedisService'; -import { logAuth, logWarning } from './Logger'; - -export const jwtService = new JWTService(); -const redisService = RedisService.getInstance(); - -/** - * Check if a token is blacklisted - */ -async function isTokenBlacklisted(token: string): Promise { - try { - const result = await redisService.get(`blacklist:${token}`); - return result === 'true'; - } catch (error) { - // If Redis is down, allow the request to proceed (fail open) - logWarning('Failed to check token blacklist - allowing request', { error: (error as Error).message }); - return false; - } -} - -/** - * Extract token from request (cookie or Authorization header) - */ -function extractToken(req: Request, type: 'auth' | 'refresh'): string | null { - // First try to get token from cookie - const cookieToken = req.cookies[`${type}_token`]; - if (cookieToken) { - return cookieToken; - } - - // Fallback to Authorization header - const authHeader = req.headers.authorization; - if (authHeader && authHeader.startsWith('Bearer ')) { - return authHeader.substring(7); - } - - return null; -} - -export async function authRequired(req: Request, res: Response, next: NextFunction) { - try { - // Extract token from request - const token = extractToken(req, "auth"); - const refreshToken = extractToken(req, "refresh"); - if (!token || !refreshToken) { - logAuth('Authentication failed - No token provided', undefined, { - ip: req.ip, - userAgent: req.get ? req.get('User-Agent') : 'unknown', - path: req.path - }, req); - return res.status(401).json({ error: 'Unauthorized' }); - } - - // Check if token is blacklisted - const isBlacklisted = await isTokenBlacklisted(token); - if (isBlacklisted) { - logAuth('Authentication failed - Token blacklisted', undefined, { - ip: req.ip, - userAgent: req.get ? req.get('User-Agent') : 'unknown', - path: req.path - }, req); - return res.status(401).json({ error: 'Token has been invalidated' }); - } - - // Verify token - const payload = jwtService.verify(req); - if (!payload) { - logAuth('Authentication failed - Invalid token', undefined, { - ip: req.ip, - userAgent: req.get ? req.get('User-Agent') : 'unknown', - path: req.path - }, req); - return res.status(401).json({ error: 'Unauthorized' }); - } - - logAuth('Authentication successful', payload.userId, { - authLevel: payload.authLevel, - orgId: payload.orgId - }, req); - - const refreshed = jwtService.refreshIfNeeded(payload, res, req); - if (refreshed) { - logAuth('Token refreshed', payload.userId, undefined, req); - } - - (req as any).user = payload; - next(); - } catch (error) { - logWarning('Authentication middleware error', { error: (error as Error).message }, req); - return res.status(500).json({ error: 'Internal server error' }); - } -} - -export async function adminRequired(req: Request, res: Response, next: NextFunction) { - try { - // Extract token from request - const token = extractToken(req, "auth"); - const refreshToken = extractToken(req, "refresh"); - if (!token || !refreshToken) { - logWarning('Admin access denied - No token provided', { - ip: req.ip, - path: req.path - }, req); - return res.status(401).json({ error: 'Unauthorized' }); - } - - // Check if token is blacklisted - const isBlacklisted = await isTokenBlacklisted(token); - if (isBlacklisted) { - logWarning('Admin access denied - Token blacklisted', { - ip: req.ip, - path: req.path - }, req); - return res.status(401).json({ error: 'Token has been invalidated' }); - } - - // Verify token and check admin privileges - const payload = jwtService.verify(req); - if (!payload || payload.authLevel !== 1) { - logWarning('Admin access denied', { - hasPayload: !!payload, - authLevel: payload?.authLevel, - userId: payload?.userId, - ip: req.ip, - path: req.path - }, req); - return res.status(403).json({ error: 'Forbidden' }); - } - - logAuth('Admin authentication successful', payload.userId, { - authLevel: payload.authLevel, - orgId: payload.orgId - }, req); - - const refreshed = jwtService.refreshIfNeeded(payload, res, req); - if (refreshed) { - logAuth('Admin token refreshed', payload.userId, undefined, req); - } - - (req as any).user = payload; - next(); - } catch (error) { - logWarning('Admin authentication middleware error', { error: (error as Error).message }, req); - return res.status(500).json({ error: 'Internal server error' }); - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Services/CardDrawingService.ts b/SerpentRace_Backend/src/Application/Services/CardDrawingService.ts deleted file mode 100644 index cbb0d3bf..00000000 --- a/SerpentRace_Backend/src/Application/Services/CardDrawingService.ts +++ /dev/null @@ -1,399 +0,0 @@ -import { GameAggregate, GameCard, DeckType, GameDeck } from '../../Domain/Game/GameAggregate'; -import { ConsequenceType } from '../../Domain/Deck/DeckAggregate'; -import { CardProcessingService, CardClientData, CardValidationResult } from './CardProcessingService'; - -export interface CardDrawResult { - success: boolean; - card?: GameCard; - clientData?: CardClientData; // Prepared data for client - error?: string; -} - -export interface CardAnswerResult { - correct: boolean; - consequence: ConsequenceType; - description: string; - validationDetails?: CardValidationResult; // Detailed validation info -} - -export interface PendingCardAnswer { - gameId: string; - playerId: string; - card: GameCard; - timeoutId: NodeJS.Timeout; - startTime: Date; -} - -/** - * Service responsible for handling card drawing mechanics during special field landings - * Integrates with existing GameCard interface and DeckType enum - */ -export class CardDrawingService { - private pendingAnswers: Map = new Map(); - private readonly ANSWER_TIMEOUT_MS = 60000; // 1 minute - private cardProcessingService: CardProcessingService; - - constructor() { - this.cardProcessingService = new CardProcessingService(); - } - - /** - * Draw a card from the appropriate deck based on field type - * @param game Game aggregate containing the deck information - * @param fieldType Type of field the player landed on - * @param playerId ID of the player who needs to draw the card - * @returns Card draw result with the drawn card or error - */ - drawCard(game: GameAggregate, fieldType: 'positive' | 'negative' | 'luck', playerId: string): CardDrawResult { - try { - // Determine which deck type to use based on field type - const deckType = this.getRequiredDeckType(fieldType); - - // Find the appropriate deck in the game - const gameDecks: GameDeck[] = typeof game.gamedecks === 'string' - ? JSON.parse(game.gamedecks) - : game.gamedecks; - - const targetDeck = gameDecks.find((deck: GameDeck) => deck.decktype === deckType); - - if (!targetDeck) { - return { - success: false, - error: `No ${this.getDeckTypeName(deckType)} deck found in game` - }; - } - - // Filter available cards (not played by this player yet) - const availableCards = targetDeck.cards.filter((card: GameCard) => !card.played || card.playerid !== playerId); - - if (availableCards.length === 0) { - return { - success: false, - error: `No more cards available in ${this.getDeckTypeName(deckType)} deck` - }; - } - - // Randomly select a card - const randomIndex = Math.floor(Math.random() * availableCards.length); - const drawnCard = availableCards[randomIndex]; - - // Mark card as drawn by this player - drawnCard.played = true; - drawnCard.playerid = playerId; - - // Check if card has consequence field (joker/luck card) even without type - const hasConsequence = drawnCard.consequence !== undefined && drawnCard.consequence !== null; - - // Prepare client data based on card type - // Only prepare for question cards (cards without consequence and with defined type) - let clientData: CardClientData | undefined; - if (!hasConsequence && drawnCard.type !== undefined) { - try { - clientData = this.cardProcessingService.prepareCardForClient(drawnCard); - } catch (error) { - // If client data preparation fails, still return the card but log the error - console.warn(`Failed to prepare client data for card ${drawnCard.cardid}:`, error); - } - } else if (!hasConsequence && drawnCard.type === undefined) { - // Card is missing type field - this shouldn't happen, log error - console.error(`Card ${drawnCard.cardid} is missing type field. Card data:`, { - cardId: drawnCard.cardid, - hasQuestion: !!drawnCard.question, - hasAnswer: !!drawnCard.answer, - hasConsequence, - cardKeys: Object.keys(drawnCard) - }); - } - - return { - success: true, - card: drawnCard, - clientData: clientData - }; - } catch (error) { - return { - success: false, - error: `Failed to draw card: ${error instanceof Error ? error.message : 'Unknown error'}` - }; - } - } - - /** - * Draw a joker card for secondary landings on special fields - * @param game Game aggregate containing the deck information - * @param playerId ID of the player who needs to draw the joker card - * @returns Card draw result with the joker card or error - */ - drawJokerCard(game: GameAggregate, playerId: string): CardDrawResult { - try { - const gameDecks: GameDeck[] = typeof game.gamedecks === 'string' - ? JSON.parse(game.gamedecks) - : game.gamedecks; - - const jokerDeck = gameDecks.find((deck: GameDeck) => deck.decktype === DeckType.JOCKER); - - if (!jokerDeck) { - return { - success: false, - error: 'No joker deck found in game' - }; - } - - // Filter available joker cards - const availableCards = jokerDeck.cards.filter((card: GameCard) => !card.played || card.playerid !== playerId); - - if (availableCards.length === 0) { - return { - success: false, - error: 'No more joker cards available' - }; - } - - // Randomly select a joker card - const randomIndex = Math.floor(Math.random() * availableCards.length); - const drawnCard = availableCards[randomIndex]; - - // Mark card as drawn by this player - drawnCard.played = true; - drawnCard.playerid = playerId; - - return { - success: true, - card: drawnCard - }; - } catch (error) { - return { - success: false, - error: `Failed to draw joker card: ${error instanceof Error ? error.message : 'Unknown error'}` - }; - } - } - - /** - * Start the answer timeout for a question card - * @param gameId Game ID - * @param playerId Player ID who needs to answer - * @param card The card with the question - * @param onTimeout Callback function when timeout occurs - * @returns Unique key for tracking this pending answer - */ - startAnswerTimeout( - gameId: string, - playerId: string, - card: GameCard, - onTimeout: (gameId: string, playerId: string, card: GameCard) => void - ): string { - const key = `${gameId}:${playerId}`; - - // Clear any existing timeout for this player - this.clearAnswerTimeout(key); - - // Set new timeout - const timeoutId = setTimeout(() => { - onTimeout(gameId, playerId, card); - this.pendingAnswers.delete(key); - }, this.ANSWER_TIMEOUT_MS); - - // Store pending answer - this.pendingAnswers.set(key, { - gameId, - playerId, - card, - timeoutId, - startTime: new Date() - }); - - return key; - } - - /** - * Clear an answer timeout - * @param key The key returned from startAnswerTimeout - */ - clearAnswerTimeout(key: string): void { - const pending = this.pendingAnswers.get(key); - if (pending) { - clearTimeout(pending.timeoutId); - this.pendingAnswers.delete(key); - } - } - - /** - * Process player's answer to a question card - * @param card The question card - * @param playerAnswer Player's submitted answer - * @returns Result indicating if answer was correct and consequence to apply - */ - processAnswer(card: GameCard, playerAnswer: any): CardAnswerResult { - if (!card.answer) { - throw new Error('Card has no answer to compare against'); - } - - let validationResult: CardValidationResult; - - try { - // Use CardProcessingService for type-specific validation - validationResult = this.cardProcessingService.validateAnswer(card, playerAnswer); - } catch (error) { - // Fallback to simple string comparison if type-specific validation fails - console.warn(`Card validation failed, using fallback: ${error}`); - validationResult = this.fallbackValidation(card, playerAnswer); - } - - // For question cards, the consequence is applied only if the answer is correct - // If wrong, we apply a default negative consequence - const consequence = validationResult.isCorrect - ? (card.consequence?.type || ConsequenceType.EXTRA_TURN) - : ConsequenceType.LOSE_TURN; // Default penalty for wrong answer - - return { - correct: validationResult.isCorrect, - consequence: consequence, - description: validationResult.explanation || (validationResult.isCorrect - ? '✅ Correct!' - : '❌ Wrong answer!'), - validationDetails: validationResult - }; - } - - /** - * Process automatic wrong answer (timeout occurred) - * @param card The question card that timed out - * @returns Result with wrong consequence applied - */ - processTimeoutAnswer(card: GameCard): CardAnswerResult { - if (!card.answer) { - throw new Error('Card has no answer to compare against'); - } - - const consequence = ConsequenceType.LOSE_TURN; // Default penalty for timeout - - return { - correct: false, - consequence: consequence, - description: `⏰ Time's up! The correct answer was "${card.answer}". ${this.getConsequenceDescription(consequence, false)}` - }; - } - - /** - * Process luck card effect (no answer required) - * @param card The luck card - * @returns Result with the luck consequence to apply - */ - processLuckCard(card: GameCard): CardAnswerResult { - const consequence = card.consequence?.type || ConsequenceType.EXTRA_TURN; - - return { - correct: true, // Luck cards are always "correct" since no answer is needed - consequence: consequence, - description: `🍀 ${this.getConsequenceDescription(consequence, true)}` - }; - } - - /** - * Get the required deck type based on field type - */ - private getRequiredDeckType(fieldType: 'positive' | 'negative' | 'luck'): DeckType { - switch (fieldType) { - case 'positive': - case 'negative': - return DeckType.QUEST; // Question cards for positive/negative fields - case 'luck': - return DeckType.LUCK; // Luck cards for luck fields - default: - throw new Error(`Unsupported field type: ${fieldType}`); - } - } - - /** - * Get human-readable deck type name - */ - private getDeckTypeName(deckType: DeckType): string { - switch (deckType) { - case DeckType.QUEST: - return 'question'; - case DeckType.LUCK: - return 'luck'; - case DeckType.JOCKER: - return 'joker'; - default: - return 'unknown'; - } - } - - /** - * Get human-readable consequence description - */ - private getConsequenceDescription(consequence: ConsequenceType, isPositive: boolean): string { - switch (consequence) { - case ConsequenceType.MOVE_FORWARD: - return isPositive ? 'Move forward!' : 'Move forward anyway!'; - case ConsequenceType.MOVE_BACKWARD: - return 'Move backward!'; - case ConsequenceType.LOSE_TURN: - return 'Lose your next turn!'; - case ConsequenceType.EXTRA_TURN: - return 'Get an extra turn!'; - case ConsequenceType.GO_TO_START: - return 'Go back to start!'; - default: - return 'Unknown effect!'; - } - } - - /** - * Get remaining time for a pending answer - * @param key The key for the pending answer - * @returns Remaining time in seconds, or -1 if not found - */ - getRemainingTime(key: string): number { - const pending = this.pendingAnswers.get(key); - if (!pending) { - return -1; - } - - const elapsed = Date.now() - pending.startTime.getTime(); - const remaining = Math.max(0, this.ANSWER_TIMEOUT_MS - elapsed); - return Math.ceil(remaining / 1000); // Return in seconds - } - - /** - * Check if a player has a pending answer - * @param gameId Game ID - * @param playerId Player ID - * @returns True if player has a pending answer - */ - hasPendingAnswer(gameId: string, playerId: string): boolean { - const key = `${gameId}:${playerId}`; - return this.pendingAnswers.has(key); - } - - /** - * Fallback validation for cards without proper type information - * @param card The card to validate - * @param playerAnswer Player's answer - * @returns Basic validation result - */ - private fallbackValidation(card: GameCard, playerAnswer: any): CardValidationResult { - if (typeof card.answer !== 'string' || typeof playerAnswer !== 'string') { - return { - isCorrect: false, - submittedAnswer: playerAnswer, - explanation: 'Cannot validate non-string answers without card type information' - }; - } - - const cleanPlayerAnswer = playerAnswer.toLowerCase().trim(); - const cleanCorrectAnswer = card.answer.toLowerCase().trim(); - const isCorrect = cleanPlayerAnswer === cleanCorrectAnswer; - - return { - isCorrect, - submittedAnswer: playerAnswer, - correctAnswer: card.answer, - explanation: isCorrect - ? '✅ Correct!' - : `❌ Wrong! The correct answer was "${card.answer}".` - }; - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Services/CardProcessingService.ts b/SerpentRace_Backend/src/Application/Services/CardProcessingService.ts deleted file mode 100644 index 65a0fa27..00000000 --- a/SerpentRace_Backend/src/Application/Services/CardProcessingService.ts +++ /dev/null @@ -1,430 +0,0 @@ -import { GameCard } from '../../Domain/Game/GameAggregate'; -import { CardType } from '../../Domain/Deck/DeckAggregate'; - -// Type-specific answer structures -export interface QuizOption { - answer: string; // A, B, C, D - text: string; - correct: boolean; -} - -export interface CloserAnswer { - correct: number; - percent: number; -} - -/** - * Sentence pair for matching left to right - */ -export interface SentencePair { - id: string; // Unique identifier for this pair - left: string; // Left part to match - right: string; // Right part (scrambled position) -} - -/** - * Player's answer for sentence pairing (array of matches) - */ -export interface SentencePairingAnswer { - pairId: string; // ID of the pair - leftText: string; // Left part - rightText: string; // Player's chosen right part -} - -export interface CardClientData { - cardid: string; - question: string; - type: CardType; - timeLimit: number; - // Type-specific client data - answerOptions?: QuizOption[]; // For QUIZ - words?: string[]; // For SENTENCE_PAIRING (legacy scrambled words) - sentencePairs?: SentencePair[]; // For SENTENCE_PAIRING (left-right matching) - acceptableAnswers?: string[]; // For OWN_ANSWER (not sent to client) - // CLOSER and TRUE_FALSE send only question -} - -export interface CardValidationResult { - isCorrect: boolean; - submittedAnswer: any; - correctAnswer?: any; - explanation?: string; -} - -/** - * Service responsible for handling type-specific card processing - * Prepares cards for clients and validates answers based on CardType - */ -export class CardProcessingService { - - /** - * Prepare card data for client based on card type - * @param card The game card to prepare - * @returns Client-safe card data with type-specific information - */ - prepareCardForClient(card: GameCard): CardClientData { - if (!card.question || card.type === undefined) { - throw new Error('Card must have question and type defined'); - } - - const baseData: CardClientData = { - cardid: card.cardid, - question: card.question, - type: card.type, - timeLimit: 60 // Default 60 seconds for question cards - }; - - switch (card.type) { - case CardType.QUIZ: - return this.prepareQuizCard(card, baseData); - - case CardType.SENTENCE_PAIRING: - return this.prepareSentencePairingCard(card, baseData); - - case CardType.OWN_ANSWER: - return this.prepareOwnAnswerCard(card, baseData); - - case CardType.TRUE_FALSE: - return this.prepareTrueFalseCard(card, baseData); - - case CardType.CLOSER: - return this.prepareCloserCard(card, baseData); - - default: - throw new Error(`Unsupported card type: ${card.type}`); - } - } - - /** - * Validate player's answer based on card type - * @param card The game card - * @param playerAnswer Player's submitted answer - * @returns Validation result with correctness and explanation - */ - validateAnswer(card: GameCard, playerAnswer: any): CardValidationResult { - if (card.type === undefined) { - throw new Error('Card type is required for validation'); - } - - switch (card.type) { - case CardType.QUIZ: - return this.validateQuizAnswer(card, playerAnswer); - - case CardType.SENTENCE_PAIRING: - return this.validateSentencePairingAnswer(card, playerAnswer); - - case CardType.OWN_ANSWER: - return this.validateOwnAnswerAnswer(card, playerAnswer); - - case CardType.TRUE_FALSE: - return this.validateTrueFalseAnswer(card, playerAnswer); - - case CardType.CLOSER: - return this.validateCloserAnswer(card, playerAnswer); - - default: - throw new Error(`Unsupported card type for validation: ${card.type}`); - } - } - - /** - * Prepare QUIZ card with multiple choice options - */ - private prepareQuizCard(card: GameCard, baseData: CardClientData): CardClientData { - if (!Array.isArray(card.answer)) { - throw new Error('Quiz card answer must be an array of options'); - } - - return { - ...baseData, - answerOptions: card.answer as QuizOption[] - }; - } - - /** - * Prepare SENTENCE_PAIRING card with scrambled left/right pairs - * - * Expected card.answer format: - * [ - * { left: "Apple", right: "Red" }, - * { left: "Banana", right: "Yellow" }, - * { left: "Orange", right: "Orange color" } - * ] - * - * OR legacy string format: "word1 word2 word3" (will be split and scrambled) - */ - private prepareSentencePairingCard(card: GameCard, baseData: CardClientData): CardClientData { - // NEW FORMAT: Array of pairs (left-right matching) - if (Array.isArray(card.answer)) { - // Validate structure - const pairs = card.answer as Array<{ left: string; right: string }>; - if (!pairs.every(p => p.left && p.right)) { - throw new Error('Sentence pairing card answer must be array of {left, right} objects'); - } - - // Create pairs with IDs and scramble the right parts - const leftParts = pairs.map((p, idx) => ({ id: `pair_${idx}`, left: p.left, right: p.right })); - const rightParts = this.scrambleArray([...pairs.map(p => p.right)]); - - // Send left parts in order, right parts scrambled - const sentencePairs: SentencePair[] = leftParts.map((lp, idx) => ({ - id: lp.id, - left: lp.left, - right: rightParts[idx] // Scrambled position - })); - - return { - ...baseData, - sentencePairs - }; - } - - // LEGACY FORMAT: Single sentence to reconstruct (backward compatibility) - if (typeof card.answer === 'string') { - const words = card.answer.split(' ').filter(word => word.trim() !== ''); - const scrambledWords = this.scrambleArray([...words]); - - return { - ...baseData, - words: scrambledWords - }; - } - - throw new Error('Sentence pairing card answer must be array of pairs or string'); - } - - /** - * Prepare OWN_ANSWER card (only question, acceptable answers hidden) - */ - private prepareOwnAnswerCard(card: GameCard, baseData: CardClientData): CardClientData { - // Don't send acceptable answers to client - return baseData; - } - - /** - * Prepare TRUE_FALSE card (only question) - */ - private prepareTrueFalseCard(card: GameCard, baseData: CardClientData): CardClientData { - return baseData; - } - - /** - * Prepare CLOSER card (only question) - */ - private prepareCloserCard(card: GameCard, baseData: CardClientData): CardClientData { - return baseData; - } - - /** - * Validate QUIZ answer (A, B, C, D) - */ - private validateQuizAnswer(card: GameCard, playerAnswer: string): CardValidationResult { - if (!Array.isArray(card.answer)) { - throw new Error('Quiz card answer must be an array'); - } - - const options = card.answer as QuizOption[]; - const correctOption = options.find(opt => opt.correct); - - if (!correctOption) { - throw new Error('Quiz card must have one correct answer'); - } - - const isCorrect = playerAnswer.toUpperCase() === correctOption.answer.toUpperCase(); - - return { - isCorrect, - submittedAnswer: playerAnswer, - correctAnswer: correctOption.answer, - explanation: isCorrect - ? `✅ Correct! ${correctOption.text}` - : `❌ Wrong! Correct answer was ${correctOption.answer}: ${correctOption.text}` - }; - } - - /** - * Validate SENTENCE_PAIRING answer - * - * Supports two formats: - * 1. NEW: Array of { pairId, leftText, rightText } matches - * 2. LEGACY: Reconstructed sentence string or array of words - */ - private validateSentencePairingAnswer(card: GameCard, playerAnswer: any): CardValidationResult { - // NEW FORMAT: Array of pairs (left-right matching) - if (Array.isArray(card.answer) && card.answer.every((p: any) => p.left && p.right)) { - const correctPairs = card.answer as Array<{ left: string; right: string }>; - - // Player answer should be array of SentencePairingAnswer objects - if (!Array.isArray(playerAnswer)) { - throw new Error('Player answer must be array of pair matches'); - } - - const playerMatches = playerAnswer as SentencePairingAnswer[]; - - // Check if all pairs match correctly - let correctCount = 0; - const results: string[] = []; - - for (const correctPair of correctPairs) { - const playerMatch = playerMatches.find(pm => - pm.leftText.toLowerCase().trim() === correctPair.left.toLowerCase().trim() - ); - - if (playerMatch) { - const isMatch = playerMatch.rightText.toLowerCase().trim() === - correctPair.right.toLowerCase().trim(); - if (isMatch) { - correctCount++; - results.push(`✓ "${correctPair.left}" → "${correctPair.right}"`); - } else { - results.push(`✗ "${correctPair.left}" → "${playerMatch.rightText}" (should be "${correctPair.right}")`); - } - } else { - results.push(`✗ "${correctPair.left}" → (not matched)`); - } - } - - const isCorrect = correctCount === correctPairs.length; - - return { - isCorrect, - submittedAnswer: playerMatches, - correctAnswer: correctPairs, - explanation: isCorrect - ? `✅ Perfect! All ${correctCount} pairs matched correctly!\n${results.join('\n')}` - : `❌ Only ${correctCount}/${correctPairs.length} pairs correct:\n${results.join('\n')}` - }; - } - - // LEGACY FORMAT: Single sentence to reconstruct (backward compatibility) - if (typeof card.answer === 'string') { - // Handle both array of words and joined string - const reconstructed = Array.isArray(playerAnswer) - ? playerAnswer.join(' ').toLowerCase().trim() - : (typeof playerAnswer === 'string' ? playerAnswer.toLowerCase().trim() : ''); - - const correctSentence = card.answer.toLowerCase().trim(); - const isCorrect = reconstructed === correctSentence; - - return { - isCorrect, - submittedAnswer: reconstructed, - correctAnswer: card.answer, - explanation: isCorrect - ? '✅ Perfect! You arranged the sentence correctly!' - : `❌ Wrong order! Correct sentence: "${card.answer}"` - }; - } - - throw new Error('Sentence pairing card answer must be array of pairs or string'); - } - - /** - * Validate OWN_ANSWER (check against acceptable answers array) - */ - private validateOwnAnswerAnswer(card: GameCard, playerAnswer: string): CardValidationResult { - if (!Array.isArray(card.answer)) { - throw new Error('Own answer card must have array of acceptable answers'); - } - - const acceptableAnswers = card.answer as string[]; - const cleanPlayerAnswer = playerAnswer.toLowerCase().trim(); - - const isCorrect = acceptableAnswers.some(acceptable => - acceptable.toLowerCase().trim() === cleanPlayerAnswer - ); - - return { - isCorrect, - submittedAnswer: playerAnswer, - correctAnswer: acceptableAnswers, - explanation: isCorrect - ? '✅ Correct! Your answer is acceptable.' - : `❌ Your answer doesn't match any acceptable responses.` - }; - } - - /** - * Validate TRUE_FALSE answer - */ - private validateTrueFalseAnswer(card: GameCard, playerAnswer: string): CardValidationResult { - if (typeof card.answer !== 'boolean' && typeof card.answer !== 'string') { - throw new Error('True/false card answer must be boolean or string'); - } - - // Convert player answer to boolean - const playerBool = this.convertToBoolean(playerAnswer); - const correctBool = typeof card.answer === 'boolean' - ? card.answer - : this.convertToBoolean(card.answer); - - const isCorrect = playerBool === correctBool; - - return { - isCorrect, - submittedAnswer: playerAnswer, - correctAnswer: correctBool ? 'True' : 'False', - explanation: isCorrect - ? '✅ Correct!' - : `❌ Wrong! The correct answer is ${correctBool ? 'True' : 'False'}.` - }; - } - - /** - * Validate CLOSER answer (numerical proximity) - */ - private validateCloserAnswer(card: GameCard, playerAnswer: string | number): CardValidationResult { - if (typeof card.answer !== 'object' || !card.answer.correct || !card.answer.percent) { - throw new Error('Closer card answer must have correct and percent fields'); - } - - const closerAnswer = card.answer as CloserAnswer; - const playerNumber = typeof playerAnswer === 'number' - ? playerAnswer - : parseFloat(playerAnswer.toString()); - - if (isNaN(playerNumber)) { - return { - isCorrect: false, - submittedAnswer: playerAnswer, - correctAnswer: closerAnswer.correct, - explanation: '❌ Invalid number! Please enter a valid numeric answer.' - }; - } - - const tolerance = closerAnswer.correct * (closerAnswer.percent / 100); - const minValue = closerAnswer.correct - tolerance; - const maxValue = closerAnswer.correct + tolerance; - - const isCorrect = playerNumber >= minValue && playerNumber <= maxValue; - - return { - isCorrect, - submittedAnswer: playerNumber, - correctAnswer: closerAnswer.correct, - explanation: isCorrect - ? `✅ Close enough! Correct answer: ${closerAnswer.correct}` - : `❌ Not close enough! Correct answer: ${closerAnswer.correct} (±${closerAnswer.percent}%)` - }; - } - - /** - * Convert string to boolean for TRUE_FALSE validation - */ - private convertToBoolean(value: string): boolean { - const lowerValue = value.toLowerCase().trim(); - return ['true', 'yes', '1', 'correct', 'right', 'igaz'].includes(lowerValue); - } - - /** - * Scramble array elements randomly - */ - private scrambleArray(array: T[]): T[] { - const scrambled = [...array]; - for (let i = scrambled.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)); - [scrambled[i], scrambled[j]] = [scrambled[j], scrambled[i]]; - } - return scrambled; - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Services/ContactEmailService.ts b/SerpentRace_Backend/src/Application/Services/ContactEmailService.ts deleted file mode 100644 index 969537e4..00000000 --- a/SerpentRace_Backend/src/Application/Services/ContactEmailService.ts +++ /dev/null @@ -1,133 +0,0 @@ -import { IContactRepository } from '../../Domain/IRepository/IContactRepository'; -import { EmailService } from './EmailService'; -import { ContactType } from '../../Domain/Contact/ContactAggregate'; -import { logOther, logError } from './Logger'; -import { EmailTemplateHelper, LocalizedSubjects } from './EmailTemplateHelper'; - -export interface EmailResponseData { - to: string; - message: string; - contactId: string; - adminUserId: string; - contactName: string; - contactType: ContactType; - originalMessage: string; - language?: 'en' | 'hu' | 'de'; // Default to 'en' if not specified -} - -export class ContactEmailService { - constructor( - private readonly contactRepo: IContactRepository, - private readonly emailService: EmailService - ) {} - - async sendResponse(responseData: EmailResponseData): Promise { - try { - // First update the contact with the response - await this.contactRepo.update(responseData.contactId, { - adminResponse: responseData.message, - responseDate: new Date(), - respondedBy: responseData.adminUserId, - }); - - // Determine language and template - const language = responseData.language || 'en'; - const templateName = language === 'en' ? 'contact-response' : `contact-response-${language}`; - - // Prepare template data - const templateData = { - contactName: responseData.contactName, - contactTypeString: this.getContactTypeString(responseData.contactType, language), - contactTypeBadge: this.getContactTypeBadge(responseData.contactType), - originalMessage: responseData.originalMessage, - adminResponse: responseData.message, - companyName: 'SerpentRace', - supportEmail: 'support@serpentrace.com' - }; - - // Send email using EmailService with template - const emailSent = await this.emailService.sendEmail({ - to: responseData.to, - subject: this.getLocalizedContactResponseSubject(language), - template: templateName, - templateData - }); - - if (emailSent) { - logOther('Contact response email sent successfully', { - to: responseData.to, - subject: this.getLocalizedContactResponseSubject(language), - contactId: responseData.contactId, - respondedBy: responseData.adminUserId, - language - }); - } else { - throw new Error('Email service failed to send email'); - } - - } catch (error) { - logError('Failed to send contact response email', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to send email response'); - } - } - - private getLocalizedContactResponseSubject(language: 'en' | 'hu' | 'de'): string { - const subjects: LocalizedSubjects = { - contactResponse: { - en: 'SerpentRace - Response to Your Message', - hu: 'SerpentRace - Válasz az üzenetére', - de: 'SerpentRace - Antwort auf Ihre Nachricht' - } - }; - return EmailTemplateHelper.getLocalizedSubject('contactResponse', subjects, language); - } - - private getContactTypeString(type: ContactType, language: 'en' | 'hu' | 'de' = 'en'): string { - const translations = { - [ContactType.BUG]: { - en: 'Bug Report', - hu: 'Hiba bejelentés', - de: 'Fehlerbericht' - }, - [ContactType.PROBLEM]: { - en: 'Problem', - hu: 'Probléma', - de: 'Problem' - }, - [ContactType.QUESTION]: { - en: 'Question', - hu: 'Kérdés', - de: 'Frage' - }, - [ContactType.SALES]: { - en: 'Sales Inquiry', - hu: 'Értékesítési kérdés', - de: 'Verkaufsanfrage' - }, - [ContactType.OTHER]: { - en: 'General Inquiry', - hu: 'Általános kérdés', - de: 'Allgemeine Anfrage' - } - }; - - return translations[type]?.[language] || translations[type]?.['en'] || 'Contact'; - } - - private getContactTypeBadge(type: ContactType): string { - switch (type) { - case ContactType.BUG: - return 'bug'; - case ContactType.PROBLEM: - return 'problem'; - case ContactType.QUESTION: - return 'question'; - case ContactType.SALES: - return 'sales'; - case ContactType.OTHER: - return 'other'; - default: - return 'other'; - } - } -} diff --git a/SerpentRace_Backend/src/Application/Services/DIContainer.ts b/SerpentRace_Backend/src/Application/Services/DIContainer.ts deleted file mode 100644 index 0962d215..00000000 --- a/SerpentRace_Backend/src/Application/Services/DIContainer.ts +++ /dev/null @@ -1,600 +0,0 @@ -// Repository Interfaces -import { IUserRepository } from '../../Domain/IRepository/IUserRepository'; -import { IChatRepository } from '../../Domain/IRepository/IChatRepository'; -import { IChatArchiveRepository } from '../../Domain/IRepository/IChatArchiveRepository'; -import { IDeckRepository } from '../../Domain/IRepository/IDeckRepository'; -import { IOrganizationRepository } from '../../Domain/IRepository/IOrganizationRepository'; -import { IContactRepository } from '../../Domain/IRepository/IContactRepository'; -import { IGameRepository } from '../../Domain/IRepository/IGameRepository'; -import { ITurnHistoryRepository } from '../../Domain/IRepository/ITurnHistoryRepository'; -import { IGameSnapshotRepository } from '../../Domain/IRepository/IGameSnapshotRepository'; - -// Repository Implementations -import { UserRepository } from '../../Infrastructure/Repository/UserRepository'; -import { ChatRepository } from '../../Infrastructure/Repository/ChatRepository'; -import { ChatArchiveRepository } from '../../Infrastructure/Repository/ChatArchiveRepository'; -import { DeckRepository } from '../../Infrastructure/Repository/DeckRepository'; -import { OrganizationRepository } from '../../Infrastructure/Repository/OrganizationRepository'; -import { ContactRepository } from '../../Infrastructure/Repository/ContactRepository'; -import { GameRepository } from '../../Infrastructure/Repository/GameRepository'; -import { TurnHistoryRepository } from '../../Infrastructure/Repository/TurnHistoryRepository'; -import { GameSnapshotRepository } from '../../Infrastructure/Repository/GameSnapshotRepository'; - -// Command Handlers -import { CreateUserCommandHandler } from '../User/commands/CreateUserCommandHandler'; -import { LoginCommandHandler } from '../User/commands/LoginCommandHandler'; -import { LogoutCommandHandler } from '../User/commands/LogoutCommandHandler'; -import { UpdateUserCommandHandler } from '../User/commands/UpdateUserCommandHandler'; -import { DeactivateUserCommandHandler } from '../User/commands/DeactivateUserCommandHandler'; -import { DeleteUserCommandHandler } from '../User/commands/DeleteUserCommandHandler'; -import { VerifyEmailCommandHandler } from '../User/commands/VerifyEmailCommandHandler'; -import { RequestPasswordResetCommandHandler } from '../User/commands/RequestPasswordResetCommandHandler'; -import { ResetPasswordCommandHandler } from '../User/commands/ResetPasswordCommandHandler'; -import { CreateChatCommandHandler } from '../Chat/commands/CreateChatCommandHandler'; -import { SendMessageCommandHandler } from '../Chat/commands/SendMessageCommandHandler'; -import { ArchiveChatCommandHandler, RestoreChatCommandHandler } from '../Chat/commands/ChatArchiveCommandHandlers'; -import { CreateDeckCommandHandler } from '../Deck/commands/CreateDeckCommandHandler'; -import { UpdateDeckCommandHandler } from '../Deck/commands/UpdateDeckCommandHandler'; -import { DeleteDeckCommandHandler } from '../Deck/commands/DeleteDeckCommandHandler'; -import { CreateOrganizationCommandHandler } from '../Organization/commands/CreateOrganizationCommandHandler'; -import { UpdateOrganizationCommandHandler } from '../Organization/commands/UpdateOrganizationCommandHandler'; -import { DeleteOrganizationCommandHandler } from '../Organization/commands/DeleteOrganizationCommandHandler'; -import { ProcessOrgAuthCallbackCommandHandler } from '../Organization/commands/ProcessOrgAuthCallbackCommandHandler'; -import { CreateContactCommandHandler } from '../Contact/commands/CreateContactCommandHandler'; -import { UpdateContactCommandHandler } from '../Contact/commands/UpdateContactCommandHandler'; -import { DeleteContactCommandHandler } from '../Contact/commands/DeleteContactCommandHandler'; -import { ActivateUserCommandHandler } from '../User/commands/ActivateUserCommandHandler'; - -// Query Handlers -import { GetUserByIdQueryHandler } from '../User/queries/GetUserByIdQueryHandler'; -import { GetUsersByPageQueryHandler } from '../User/queries/GetUsersByPageQueryHandler'; -import { GetUserChatsQueryHandler } from '../Chat/queries/GetUserChatsQueryHandler'; -import { GetChatHistoryQueryHandler, GetArchivedChatsQueryHandler } from '../Chat/queries/ChatHistoryQueryHandlers'; -import { GetChatsByPageQueryHandler } from '../Chat/queries/GetChatsByPageQueryHandler'; -import { GetDeckByIdQueryHandler } from '../Deck/queries/GetDeckByIdQueryHandler'; -import { GetDecksByPageQueryHandler } from '../Deck/queries/GetDecksByPageQueryHandler'; -import { GetOrganizationByIdQueryHandler } from '../Organization/queries/GetOrganizationByIdQueryHandler'; -import { GetOrganizationsByPageQueryHandler } from '../Organization/queries/GetOrganizationsByPageQueryHandler'; -import { GetOrganizationLoginUrlQueryHandler } from '../Organization/queries/GetOrganizationLoginUrlQueryHandler'; -import { GetContactByIdQueryHandler } from '../Contact/queries/GetContactByIdQueryHandler'; -import { GetContactsByPageQueryHandler } from '../Contact/queries/GetContactsByPageQueryHandler'; - -// Services -import { JWTService } from './JWTService'; -import { EmailService } from './EmailService'; -import { GameTokenService } from './GameTokenService'; -import { ContactEmailService } from './ContactEmailService'; -import { DeckImportExportService } from './DeckImportExportService'; -import { FieldEffectService } from './FieldEffectService'; -import { CardDrawingService } from './CardDrawingService'; -import { GamemasterService } from './GamemasterService'; -import { RedisService } from './RedisService'; -import { GameService } from '../Game/GameService'; -import { BoardGenerationService } from '../Game/BoardGenerationService'; -import { GenerateBoardCommandHandler } from '../Game/commands/GenerateBoardCommandHandler'; -import { GameWebSocketService } from './GameWebSocketService'; -import type { Server as SocketIOServer } from 'socket.io'; - -/** - * Central Dependency Injection Container - * Manages all repositories, command handlers, and query handlers as singletons - */ -export class DIContainer { - private static instance: DIContainer; - - // Repositories - Using interfaces for better abstraction - private _userRepository: IUserRepository | null = null; - private _chatRepository: IChatRepository | null = null; - private _chatArchiveRepository: IChatArchiveRepository | null = null; - private _deckRepository: IDeckRepository | null = null; - private _organizationRepository: IOrganizationRepository | null = null; - private _contactRepository: IContactRepository | null = null; - private _gameRepository: IGameRepository | null = null; - private _turnHistoryRepository: ITurnHistoryRepository | null = null; - private _gameSnapshotRepository: IGameSnapshotRepository | null = null; - - // Services - private _jwtService: JWTService | null = null; - private _emailService: EmailService | null = null; - private _gameTokenService: GameTokenService | null = null; - private _contactEmailService: ContactEmailService | null = null; - private _deckImportExportService: DeckImportExportService | null = null; - private _cardDrawingService: CardDrawingService | null = null; - private _gamemasterService: GamemasterService | null = null; - private _fieldEffectService: FieldEffectService | null = null; - private _gameService: GameService | null = null; - private _boardGenerationService: BoardGenerationService | null = null; - private _gameWebSocketService: GameWebSocketService | null = null; - private _socketIOInstance: SocketIOServer | null = null; - - // Command Handlers - private _createUserCommandHandler: CreateUserCommandHandler | null = null; - private _loginCommandHandler: LoginCommandHandler | null = null; - private _logoutCommandHandler: LogoutCommandHandler | null = null; - private _updateUserCommandHandler: UpdateUserCommandHandler | null = null; - private _deactivateUserCommandHandler: DeactivateUserCommandHandler | null = null; - private _deleteUserCommandHandler: DeleteUserCommandHandler | null = null; - private _verifyEmailCommandHandler: VerifyEmailCommandHandler | null = null; - private _requestPasswordResetCommandHandler: RequestPasswordResetCommandHandler | null = null; - private _resetPasswordCommandHandler: ResetPasswordCommandHandler | null = null; - private _createChatCommandHandler: CreateChatCommandHandler | null = null; - private _sendMessageCommandHandler: SendMessageCommandHandler | null = null; - private _archiveChatCommandHandler: ArchiveChatCommandHandler | null = null; - private _restoreChatCommandHandler: RestoreChatCommandHandler | null = null; - private _createDeckCommandHandler: CreateDeckCommandHandler | null = null; - private _updateDeckCommandHandler: UpdateDeckCommandHandler | null = null; - private _deleteDeckCommandHandler: DeleteDeckCommandHandler | null = null; - private _createOrganizationCommandHandler: CreateOrganizationCommandHandler | null = null; - private _updateOrganizationCommandHandler: UpdateOrganizationCommandHandler | null = null; - private _deleteOrganizationCommandHandler: DeleteOrganizationCommandHandler | null = null; - private _processOrgAuthCallbackCommandHandler: ProcessOrgAuthCallbackCommandHandler | null = null; - private _createContactCommandHandler: CreateContactCommandHandler | null = null; - private _updateContactCommandHandler: UpdateContactCommandHandler | null = null; - private _deleteContactCommandHandler: DeleteContactCommandHandler | null = null; - private _generateBoardCommandHandler: GenerateBoardCommandHandler | null = null; - private _activateUserCommandHandler: ActivateUserCommandHandler | null = null; - - // Query Handlers - private _getUserByIdQueryHandler: GetUserByIdQueryHandler | null = null; - private _getUsersByPageQueryHandler: GetUsersByPageQueryHandler | null = null; - private _getUserChatsQueryHandler: GetUserChatsQueryHandler | null = null; - private _getChatHistoryQueryHandler: GetChatHistoryQueryHandler | null = null; - private _getArchivedChatsQueryHandler: GetArchivedChatsQueryHandler | null = null; - private _getChatsByPageQueryHandler: GetChatsByPageQueryHandler | null = null; - private _getDeckByIdQueryHandler: GetDeckByIdQueryHandler | null = null; - private _getDecksByPageQueryHandler: GetDecksByPageQueryHandler | null = null; - private _getOrganizationByIdQueryHandler: GetOrganizationByIdQueryHandler | null = null; - private _getOrganizationsByPageQueryHandler: GetOrganizationsByPageQueryHandler | null = null; - private _getOrganizationLoginUrlQueryHandler: GetOrganizationLoginUrlQueryHandler | null = null; - private _getContactByIdQueryHandler: GetContactByIdQueryHandler | null = null; - private _getContactsByPageQueryHandler: GetContactsByPageQueryHandler | null = null; - - private constructor() {} - - public static getInstance(): DIContainer { - if (!DIContainer.instance) { - DIContainer.instance = new DIContainer(); - } - return DIContainer.instance; - } - - // Repository getters - Return interfaces for better abstraction - public get userRepository(): IUserRepository { - if (!this._userRepository) { - this._userRepository = new UserRepository(); - } - return this._userRepository; - } - - public get chatRepository(): IChatRepository { - if (!this._chatRepository) { - this._chatRepository = new ChatRepository(); - } - return this._chatRepository; - } - - public get chatArchiveRepository(): IChatArchiveRepository { - if (!this._chatArchiveRepository) { - this._chatArchiveRepository = new ChatArchiveRepository(); - } - return this._chatArchiveRepository; - } - - public get deckRepository(): IDeckRepository { - if (!this._deckRepository) { - this._deckRepository = new DeckRepository(); - } - return this._deckRepository; - } - - public get organizationRepository(): IOrganizationRepository { - if (!this._organizationRepository) { - this._organizationRepository = new OrganizationRepository(); - } - return this._organizationRepository; - } - - public get contactRepository(): IContactRepository { - if (!this._contactRepository) { - this._contactRepository = new ContactRepository(); - } - return this._contactRepository; - } - - public get gameRepository(): IGameRepository { - if (!this._gameRepository) { - this._gameRepository = new GameRepository(); - } - return this._gameRepository; - } - - public get turnHistoryRepository(): ITurnHistoryRepository { - if (!this._turnHistoryRepository) { - this._turnHistoryRepository = new TurnHistoryRepository(); - } - return this._turnHistoryRepository; - } - - public get gameSnapshotRepository(): IGameSnapshotRepository { - if (!this._gameSnapshotRepository) { - this._gameSnapshotRepository = new GameSnapshotRepository(); - } - return this._gameSnapshotRepository; - } - - // Services getters - public get jwtService(): JWTService { - if (!this._jwtService) { - this._jwtService = new JWTService(); - } - return this._jwtService; - } - - public get emailService(): EmailService { - if (!this._emailService) { - this._emailService = new EmailService(); - } - return this._emailService; - } - - public get gameTokenService(): GameTokenService { - if (!this._gameTokenService) { - this._gameTokenService = new GameTokenService(); - } - return this._gameTokenService; - } - - public get contactEmailService(): ContactEmailService { - if (!this._contactEmailService) { - this._contactEmailService = new ContactEmailService(this.contactRepository, this.emailService); - } - return this._contactEmailService; - } - - public get deckImportExportService(): DeckImportExportService { - if (!this._deckImportExportService) { - this._deckImportExportService = new DeckImportExportService(this.deckRepository); - } - return this._deckImportExportService; - } - - public get cardDrawingService(): CardDrawingService { - if (!this._cardDrawingService) { - this._cardDrawingService = new CardDrawingService(); - } - return this._cardDrawingService; - } - - public get gamemasterService(): GamemasterService { - if (!this._gamemasterService) { - this._gamemasterService = new GamemasterService(); - } - return this._gamemasterService; - } - - public get fieldEffectService(): FieldEffectService { - if (!this._fieldEffectService) { - this._fieldEffectService = new FieldEffectService( - this.boardGenerationService, - this.gamemasterService - ); - } - return this._fieldEffectService; - } - - public get gameService(): GameService { - if (!this._gameService) { - this._gameService = new GameService(); - } - return this._gameService; - } - - public get boardGenerationService(): BoardGenerationService { - if (!this._boardGenerationService) { - this._boardGenerationService = new BoardGenerationService(); - } - return this._boardGenerationService; - } - - /** - * Set the Socket.IO instance (must be called before accessing gameWebSocketService) - */ - public setSocketIO(io: SocketIOServer): void { - this._socketIOInstance = io; - // Reset gameWebSocketService so it gets recreated with new IO instance - this._gameWebSocketService = null; - } - - public get gameWebSocketService(): GameWebSocketService { - if (!this._gameWebSocketService) { - if (!this._socketIOInstance) { - throw new Error('Socket.IO instance must be set before accessing gameWebSocketService. Call setSocketIO() first.'); - } - this._gameWebSocketService = new GameWebSocketService( - this._socketIOInstance, - this.gameRepository as any, // Cast to concrete type - this.userRepository as any, // Cast to concrete type - RedisService.getInstance(), - this.turnHistoryRepository as any, // Cast to concrete type - this.gameSnapshotRepository as any // Cast to concrete type - ); - } - return this._gameWebSocketService; - } - - // Command Handler getters - public get createUserCommandHandler(): CreateUserCommandHandler { - if (!this._createUserCommandHandler) { - this._createUserCommandHandler = new CreateUserCommandHandler(this.userRepository, this.emailService); - } - return this._createUserCommandHandler; - } - - public get loginCommandHandler(): LoginCommandHandler { - if (!this._loginCommandHandler) { - this._loginCommandHandler = new LoginCommandHandler(this.userRepository, this.jwtService, this.organizationRepository); - } - return this._loginCommandHandler; - } - - public get logoutCommandHandler(): LogoutCommandHandler { - if (!this._logoutCommandHandler) { - this._logoutCommandHandler = new LogoutCommandHandler(this.userRepository); - } - return this._logoutCommandHandler; - } - - public get updateUserCommandHandler(): UpdateUserCommandHandler { - if (!this._updateUserCommandHandler) { - this._updateUserCommandHandler = new UpdateUserCommandHandler(this.userRepository); - } - return this._updateUserCommandHandler; - } - - public get deactivateUserCommandHandler(): DeactivateUserCommandHandler { - if (!this._deactivateUserCommandHandler) { - this._deactivateUserCommandHandler = new DeactivateUserCommandHandler(this.userRepository); - } - return this._deactivateUserCommandHandler; - } - - public get activateUserCommandHandler(): ActivateUserCommandHandler { - if (!this._activateUserCommandHandler) { - this._activateUserCommandHandler = new ActivateUserCommandHandler(this.userRepository); - } - return this._activateUserCommandHandler; - } - - public get deleteUserCommandHandler(): DeleteUserCommandHandler { - if (!this._deleteUserCommandHandler) { - this._deleteUserCommandHandler = new DeleteUserCommandHandler(this.userRepository); - } - return this._deleteUserCommandHandler; - } - - public get verifyEmailCommandHandler(): VerifyEmailCommandHandler { - if (!this._verifyEmailCommandHandler) { - this._verifyEmailCommandHandler = new VerifyEmailCommandHandler(this.userRepository); - } - return this._verifyEmailCommandHandler; - } - - public get requestPasswordResetCommandHandler(): RequestPasswordResetCommandHandler { - if (!this._requestPasswordResetCommandHandler) { - this._requestPasswordResetCommandHandler = new RequestPasswordResetCommandHandler(this.userRepository, this.emailService); - } - return this._requestPasswordResetCommandHandler; - } - - public get resetPasswordCommandHandler(): ResetPasswordCommandHandler { - if (!this._resetPasswordCommandHandler) { - this._resetPasswordCommandHandler = new ResetPasswordCommandHandler(this.userRepository); - } - return this._resetPasswordCommandHandler; - } - - public get createChatCommandHandler(): CreateChatCommandHandler { - if (!this._createChatCommandHandler) { - this._createChatCommandHandler = new CreateChatCommandHandler(this.chatRepository, this.userRepository); - } - return this._createChatCommandHandler; - } - - public get sendMessageCommandHandler(): SendMessageCommandHandler { - if (!this._sendMessageCommandHandler) { - this._sendMessageCommandHandler = new SendMessageCommandHandler(this.chatRepository); - } - return this._sendMessageCommandHandler; - } - - public get archiveChatCommandHandler(): ArchiveChatCommandHandler { - if (!this._archiveChatCommandHandler) { - this._archiveChatCommandHandler = new ArchiveChatCommandHandler(this.chatRepository); - } - return this._archiveChatCommandHandler; - } - - public get restoreChatCommandHandler(): RestoreChatCommandHandler { - if (!this._restoreChatCommandHandler) { - this._restoreChatCommandHandler = new RestoreChatCommandHandler(this.chatRepository); - } - return this._restoreChatCommandHandler; - } - - public get createDeckCommandHandler(): CreateDeckCommandHandler { - if (!this._createDeckCommandHandler) { - this._createDeckCommandHandler = new CreateDeckCommandHandler( - this.deckRepository, - this.userRepository, - this.organizationRepository - ); - } - return this._createDeckCommandHandler; - } - - public get updateDeckCommandHandler(): UpdateDeckCommandHandler { - if (!this._updateDeckCommandHandler) { - this._updateDeckCommandHandler = new UpdateDeckCommandHandler(this.deckRepository); - } - return this._updateDeckCommandHandler; - } - - public get deleteDeckCommandHandler(): DeleteDeckCommandHandler { - if (!this._deleteDeckCommandHandler) { - this._deleteDeckCommandHandler = new DeleteDeckCommandHandler(this.deckRepository); - } - return this._deleteDeckCommandHandler; - } - - public get createOrganizationCommandHandler(): CreateOrganizationCommandHandler { - if (!this._createOrganizationCommandHandler) { - this._createOrganizationCommandHandler = new CreateOrganizationCommandHandler(this.organizationRepository); - } - return this._createOrganizationCommandHandler; - } - - public get updateOrganizationCommandHandler(): UpdateOrganizationCommandHandler { - if (!this._updateOrganizationCommandHandler) { - this._updateOrganizationCommandHandler = new UpdateOrganizationCommandHandler(this.organizationRepository); - } - return this._updateOrganizationCommandHandler; - } - - public get deleteOrganizationCommandHandler(): DeleteOrganizationCommandHandler { - if (!this._deleteOrganizationCommandHandler) { - this._deleteOrganizationCommandHandler = new DeleteOrganizationCommandHandler(this.organizationRepository); - } - return this._deleteOrganizationCommandHandler; - } - - public get processOrgAuthCallbackCommandHandler(): ProcessOrgAuthCallbackCommandHandler { - if (!this._processOrgAuthCallbackCommandHandler) { - this._processOrgAuthCallbackCommandHandler = new ProcessOrgAuthCallbackCommandHandler(this.userRepository, this.organizationRepository); - } - return this._processOrgAuthCallbackCommandHandler; - } - - public get createContactCommandHandler(): CreateContactCommandHandler { - if (!this._createContactCommandHandler) { - this._createContactCommandHandler = new CreateContactCommandHandler(this.contactRepository); - } - return this._createContactCommandHandler; - } - - public get updateContactCommandHandler(): UpdateContactCommandHandler { - if (!this._updateContactCommandHandler) { - this._updateContactCommandHandler = new UpdateContactCommandHandler(this.contactRepository); - } - return this._updateContactCommandHandler; - } - - public get deleteContactCommandHandler(): DeleteContactCommandHandler { - if (!this._deleteContactCommandHandler) { - this._deleteContactCommandHandler = new DeleteContactCommandHandler(this.contactRepository); - } - return this._deleteContactCommandHandler; - } - - public get generateBoardCommandHandler(): GenerateBoardCommandHandler { - if (!this._generateBoardCommandHandler) { - this._generateBoardCommandHandler = new GenerateBoardCommandHandler(this.boardGenerationService, RedisService.getInstance()); - } - return this._generateBoardCommandHandler; - } - - // Query Handler getters - public get getUserByIdQueryHandler(): GetUserByIdQueryHandler { - if (!this._getUserByIdQueryHandler) { - this._getUserByIdQueryHandler = new GetUserByIdQueryHandler(this.userRepository); - } - return this._getUserByIdQueryHandler; - } - - public get getUserChatsQueryHandler(): GetUserChatsQueryHandler { - if (!this._getUserChatsQueryHandler) { - this._getUserChatsQueryHandler = new GetUserChatsQueryHandler(this.chatRepository, this.chatArchiveRepository); - } - return this._getUserChatsQueryHandler; - } - - public get getChatHistoryQueryHandler(): GetChatHistoryQueryHandler { - if (!this._getChatHistoryQueryHandler) { - this._getChatHistoryQueryHandler = new GetChatHistoryQueryHandler(this.chatRepository, this.chatArchiveRepository); - } - return this._getChatHistoryQueryHandler; - } - - public get getArchivedChatsQueryHandler(): GetArchivedChatsQueryHandler { - if (!this._getArchivedChatsQueryHandler) { - this._getArchivedChatsQueryHandler = new GetArchivedChatsQueryHandler(this.chatArchiveRepository); - } - return this._getArchivedChatsQueryHandler; - } - - public get getDeckByIdQueryHandler(): GetDeckByIdQueryHandler { - if (!this._getDeckByIdQueryHandler) { - this._getDeckByIdQueryHandler = new GetDeckByIdQueryHandler(this.deckRepository); - } - return this._getDeckByIdQueryHandler; - } - - public get getOrganizationByIdQueryHandler(): GetOrganizationByIdQueryHandler { - if (!this._getOrganizationByIdQueryHandler) { - this._getOrganizationByIdQueryHandler = new GetOrganizationByIdQueryHandler(this.organizationRepository); - } - return this._getOrganizationByIdQueryHandler; - } - - public get getOrganizationLoginUrlQueryHandler(): GetOrganizationLoginUrlQueryHandler { - if (!this._getOrganizationLoginUrlQueryHandler) { - this._getOrganizationLoginUrlQueryHandler = new GetOrganizationLoginUrlQueryHandler(this.organizationRepository); - } - return this._getOrganizationLoginUrlQueryHandler; - } - - public get getContactByIdQueryHandler(): GetContactByIdQueryHandler { - if (!this._getContactByIdQueryHandler) { - this._getContactByIdQueryHandler = new GetContactByIdQueryHandler(this.contactRepository); - } - return this._getContactByIdQueryHandler; - } - - public get getContactsByPageQueryHandler(): GetContactsByPageQueryHandler { - if (!this._getContactsByPageQueryHandler) { - this._getContactsByPageQueryHandler = new GetContactsByPageQueryHandler(this.contactRepository); - } - return this._getContactsByPageQueryHandler; - } - - // New paginated query handlers - public get getUsersByPageQueryHandler(): GetUsersByPageQueryHandler { - if (!this._getUsersByPageQueryHandler) { - this._getUsersByPageQueryHandler = new GetUsersByPageQueryHandler(this.userRepository); - } - return this._getUsersByPageQueryHandler; - } - - public get getDecksByPageQueryHandler(): GetDecksByPageQueryHandler { - if (!this._getDecksByPageQueryHandler) { - this._getDecksByPageQueryHandler = new GetDecksByPageQueryHandler(this.deckRepository); - } - return this._getDecksByPageQueryHandler; - } - - public get getOrganizationsByPageQueryHandler(): GetOrganizationsByPageQueryHandler { - if (!this._getOrganizationsByPageQueryHandler) { - this._getOrganizationsByPageQueryHandler = new GetOrganizationsByPageQueryHandler(this.organizationRepository); - } - return this._getOrganizationsByPageQueryHandler; - } - - public get getChatsByPageQueryHandler(): GetChatsByPageQueryHandler { - if (!this._getChatsByPageQueryHandler) { - this._getChatsByPageQueryHandler = new GetChatsByPageQueryHandler(this.chatRepository); - } - return this._getChatsByPageQueryHandler; - } -} - -// Export singleton instance -export const container = DIContainer.getInstance(); diff --git a/SerpentRace_Backend/src/Application/Services/DeckImportExportService.ts b/SerpentRace_Backend/src/Application/Services/DeckImportExportService.ts deleted file mode 100644 index 3d3f1978..00000000 --- a/SerpentRace_Backend/src/Application/Services/DeckImportExportService.ts +++ /dev/null @@ -1,208 +0,0 @@ -import * as crypto from 'crypto'; -import * as fs from 'fs'; -import { DeckAggregate, State, CType } from '../../Domain/Deck/DeckAggregate'; -import { IDeckRepository } from '../../Domain/IRepository/IDeckRepository'; -import { logError, logAuth } from './Logger'; - -export interface SprDeckData { - name: string; - type: number; - cards: any[]; - ctype: number; - exportDate: string; - version: string; -} - -export interface ImportDeckCommand { - name: string; - type: number; - cards: any[]; - ctype?: number; - userid: string; -} - -export class DeckImportExportService { - private readonly encryptionKey: string; - private readonly algorithm = 'aes-256-gcm'; - - constructor(private readonly deckRepo: IDeckRepository) { - this.encryptionKey = process.env.DECK_ENCRYPTION_KEY || 'your-32-byte-encryption-key-here!!'; - - if (this.encryptionKey.length !== 32) { - throw new Error('DECK_ENCRYPTION_KEY must be exactly 32 characters long'); - } - } - - async exportDeckToSpr(deckId: string, userId: string): Promise { - try { - const deck = await this.deckRepo.findByIdIncludingDeleted(deckId); - - if (!deck) { - throw new Error('Deck not found'); - } - - if (deck.userid !== userId) { - throw new Error('Unauthorized: You can only export your own decks'); - } - - const deckData: SprDeckData = { - name: deck.name, - type: deck.type, - cards: deck.cards, - ctype: deck.ctype, - exportDate: new Date().toISOString(), - version: '1.0' - }; - - const jsonString = JSON.stringify(deckData); - const encrypted = this.encrypt(jsonString); - - logAuth('Deck exported to SPR format', userId, { - deckId: deck.id, - deckName: deck.name, - cardCount: deck.cards.length - }); - - return encrypted; - } catch (error) { - logError('Failed to export deck to SPR', error as Error); - throw error; - } - } - - async importDeckFromSpr(sprData: Buffer, userId: string): Promise { - try { - const decrypted = this.decrypt(sprData); - const deckData: SprDeckData = JSON.parse(decrypted); - - // Validate required fields - if (!deckData.name || !deckData.cards || deckData.type === undefined) { - throw new Error('Invalid SPR file format: missing required fields'); - } - - // Create new deck - const newDeck = new DeckAggregate(); - newDeck.name = deckData.name; - newDeck.type = deckData.type; - newDeck.userid = userId; - newDeck.cards = deckData.cards; - newDeck.ctype = deckData.ctype || CType.PUBLIC; - newDeck.state = State.ACTIVE; - - const createdDeck = await this.deckRepo.create(newDeck); - - logAuth('Deck imported from SPR format', userId, { - deckId: createdDeck.id, - deckName: createdDeck.name, - cardCount: createdDeck.cards.length, - originalExportDate: deckData.exportDate - }); - - return createdDeck; - } catch (error) { - logError('Failed to import deck from SPR', error as Error); - throw error; - } - } - - async importDeckFromJson(jsonData: any, userId: string): Promise { - try { - // Validate required fields - if (!jsonData.name || !jsonData.cards || jsonData.type === undefined) { - throw new Error('Invalid JSON format: missing required fields (name, cards, type)'); - } - - // Create new deck - const newDeck = new DeckAggregate(); - newDeck.name = jsonData.name; - newDeck.type = jsonData.type; - newDeck.userid = userId; - newDeck.cards = jsonData.cards; - newDeck.ctype = jsonData.ctype || CType.PUBLIC; - newDeck.state = State.ACTIVE; - - const createdDeck = await this.deckRepo.create(newDeck); - - logAuth('Deck imported from JSON format', userId, { - deckId: createdDeck.id, - deckName: createdDeck.name, - cardCount: createdDeck.cards.length - }); - - return createdDeck; - } catch (error) { - logError('Failed to import deck from JSON', error as Error); - throw error; - } - } - - // Admin-only function to import JSON without encryption - async adminImportFromJson(jsonData: any, targetUserId: string, adminUserId: string): Promise { - try { - if (!jsonData.name || !jsonData.cards || jsonData.type === undefined) { - throw new Error('Invalid JSON format: missing required fields (name, cards, type)'); - } - - const newDeck = new DeckAggregate(); - newDeck.name = jsonData.name; - newDeck.type = jsonData.type; - newDeck.userid = targetUserId; - newDeck.cards = jsonData.cards; - newDeck.ctype = jsonData.ctype || CType.PUBLIC; - newDeck.state = jsonData.state || State.ACTIVE; - - const createdDeck = await this.deckRepo.create(newDeck); - - logAuth('Deck imported by admin from JSON', adminUserId, { - deckId: createdDeck.id, - deckName: createdDeck.name, - cardCount: createdDeck.cards.length, - targetUserId: targetUserId - }); - - return createdDeck; - } catch (error) { - logError('Failed to admin import deck from JSON', error as Error); - throw error; - } - } - - private encrypt(text: string): Buffer { - const iv = crypto.randomBytes(16); - const cipher = crypto.createCipheriv(this.algorithm, this.encryptionKey, iv); - cipher.setAAD(Buffer.from('SerpentRace-Deck', 'utf8')); - - let encrypted = cipher.update(text, 'utf8'); - encrypted = Buffer.concat([encrypted, cipher.final()]); - - const authTag = cipher.getAuthTag(); - - return Buffer.concat([iv, authTag, encrypted]); - } - - private decrypt(encryptedData: Buffer): string { - if (encryptedData.length < 32) { - throw new Error('Invalid SPR file: file too short'); - } - - const iv = encryptedData.slice(0, 16); - const authTag = encryptedData.slice(16, 32); - const encrypted = encryptedData.slice(32); - - const decipher = crypto.createDecipheriv(this.algorithm, this.encryptionKey, iv); - decipher.setAAD(Buffer.from('SerpentRace-Deck', 'utf8')); - decipher.setAuthTag(authTag); - - let decrypted = decipher.update(encrypted, undefined, 'utf8'); - decrypted += decipher.final('utf8'); - - return decrypted; - } - - generateFilename(deckName: string): string { - // Sanitize deck name for filename - const sanitized = deckName.replace(/[^a-zA-Z0-9\-_]/g, '_'); - const timestamp = new Date().toISOString().split('T')[0]; // YYYY-MM-DD - return `${sanitized}_${timestamp}.spr`; - } -} diff --git a/SerpentRace_Backend/src/Application/Services/EmailService.ts b/SerpentRace_Backend/src/Application/Services/EmailService.ts deleted file mode 100644 index d4c25396..00000000 --- a/SerpentRace_Backend/src/Application/Services/EmailService.ts +++ /dev/null @@ -1,312 +0,0 @@ -import * as nodemailer from 'nodemailer'; -import * as fs from 'fs'; -import * as path from 'path'; -import sharp from 'sharp'; -import { logError, logAuth, logStartup } from './Logger'; -import { EmailTemplateHelper, LocalizedSubjects } from './EmailTemplateHelper'; - - -export interface EmailOptions { - to: string; - subject: string; - html?: string; - text?: string; - template?: string; - templateData?: any; -} - -export interface EmailConfig { - host: string; - port: number; - secure: boolean; - auth: { - user: string; - pass: string; - }; - from: string; -} - -export class EmailService { - private transporter!: nodemailer.Transporter; - private config: EmailConfig; - private templatesPath: string; - private logoPath: string; - private resizedLogoBuffer?: Buffer; - - constructor() { - this.templatesPath = path.join(__dirname, '../../Templates'); - this.logoPath = path.join(__dirname, '../../../assets/Logo.png'); - // Load logo asynchronously after initialization - this.loadLogo().catch(err => logError('Error loading logo:', err)); - - this.config = { - host: process.env.EMAIL_HOST || 'smtp.gmail.com', - port: parseInt(process.env.EMAIL_PORT || '587'), - secure: process.env.EMAIL_SECURE === 'true', - auth: { - user: process.env.EMAIL_USER || '', - pass: process.env.EMAIL_PASS || '' - }, - from: process.env.EMAIL_FROM || 'noreply@serpentrace.com' - }; - - this.initializeTransporter(); - } - - private initializeTransporter(): void { - try { - this.transporter = nodemailer.createTransport({ - host: this.config.host, - port: this.config.port, - secure: this.config.secure, - auth: { - user: this.config.auth.user, - pass: this.config.auth.pass - } - }); - } catch (error) { - logError('EmailService initialization failed', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to initialize email service'); - } - } - - /** - * Load and resize logo for email attachments - 60x60 pixels - */ - private async loadLogo(): Promise { - try { - if (fs.existsSync(this.logoPath)) { - const logoBuffer = fs.readFileSync(this.logoPath); - - // Resize to 60x60 pixels with high quality and centered - this.resizedLogoBuffer = await sharp(logoBuffer) - .resize(60, 60, { - fit: 'contain', - background: { r: 255, g: 255, b: 255, alpha: 1 }, - position: 'center' - }) - .png() - .toBuffer(); - } - } catch (error) { - logError('Failed to load logo for emails', error instanceof Error ? error : new Error(String(error))); - } - } - - /** - * Send email with template - * @param options - Email options including template and data - */ - async sendEmail(options: EmailOptions): Promise { - try { - // Ensure logo is loaded before sending - if (!this.resizedLogoBuffer) { - await this.loadLogo(); - } - - let htmlContent = options.html; - let textContent = options.text; - - if (options.template) { - const templateResult = await this.loadTemplate(options.template, options.templateData); - htmlContent = templateResult.html; - textContent = templateResult.text; - } - - const mailOptions: any = { - from: this.config.from, - to: options.to, - subject: options.subject, - html: htmlContent, - text: textContent, - attachments: [] - }; - - // Add logo as CID attachment if available - if (this.resizedLogoBuffer) { - mailOptions.attachments.push({ - filename: 'logo.png', - content: this.resizedLogoBuffer, - cid: 'logo@serpentrace' // Content-ID for referencing in HTML - }); - console.log('[EmailService] 📎 Logo attached to email as CID: logo@serpentrace'); - } else { - console.warn('[EmailService] ⚠️ Logo buffer not available, email will be sent without logo'); - } - - const result = await this.transporter.sendMail(mailOptions); - logAuth('Email sent successfully', undefined, { - messageId: result.messageId, - to: options.to, - subject: options.subject - }); - return true; - } catch (error) { - logError('Email sending failed', error instanceof Error ? error : new Error(String(error))); - return false; - } - } - - /** - * Send verification email to user - * @param userEmail - User's email address - * @param userName - User's name - * @param verificationToken - Verification token - * @param verificationUrl - Complete verification URL - * @param language - Language code ('en', 'hu', 'de') - */ - async sendVerificationEmail( - userEmail: string, - userName: string, - verificationToken: string, - verificationUrl: string, - language: 'en' | 'hu' | 'de' = 'en' - ): Promise { - try { - const templateName = language === 'en' ? 'verification' : `verification-${language}`; - const subject = this.getLocalizedVerificationSubject(language); - - return await this.sendEmail({ - to: userEmail, - subject, - template: templateName, - templateData: { - userName, - verificationToken, - verificationUrl, - companyName: 'SerpentRace', - supportEmail: 'support@serpentrace.com' - } - }); - } catch (error) { - logError('Verification email sending failed', error instanceof Error ? error : new Error(String(error))); - return false; - } - } - - /** - * Send password reset email - * @param userEmail - User's email address - * @param userName - User's name - * @param resetToken - Password reset token - * @param resetUrl - Complete password reset URL - * @param language - Language code ('en', 'hu', 'de') - */ - async sendPasswordResetEmail( - userEmail: string, - userName: string, - resetToken: string, - resetUrl: string, - language: 'en' | 'hu' | 'de' = 'en' - ): Promise { - try { - const templateName = language === 'en' ? 'password-reset' : `password-reset-${language}`; - const subject = this.getLocalizedPasswordResetSubject(language); - - return await this.sendEmail({ - to: userEmail, - subject, - template: templateName, - templateData: { - userName, - resetToken, - resetUrl, - companyName: 'SerpentRace', - supportEmail: 'support@serpentrace.com' - } - }); - } catch (error) { - logError('Password reset email sending failed', error instanceof Error ? error : new Error(String(error))); - return false; - } - } - - /** - * Load and compile email template with language support - * @param templateName - Name of the template file (with or without language suffix) - * @param data - Data to replace placeholders in the template - */ - private async loadTemplate(templateName: string, data: any): Promise<{ html: string; text: string }> { - try { - // Try the specified template first - let htmlTemplatePath = path.join(this.templatesPath, `${templateName}.html`); - let textTemplatePath = path.join(this.templatesPath, `${templateName}.txt`); - - let htmlTemplate = ''; - let textTemplate = ''; - - // Load HTML template if it exists - if (fs.existsSync(htmlTemplatePath)) { - htmlTemplate = fs.readFileSync(htmlTemplatePath, 'utf8'); - } else { - // If language-specific template doesn't exist, try fallback to English - const baseName = templateName.replace(/-[a-z]{2}$/, ''); // Remove language suffix - const fallbackHtmlPath = path.join(this.templatesPath, `${baseName}.html`); - if (fs.existsSync(fallbackHtmlPath)) { - htmlTemplate = fs.readFileSync(fallbackHtmlPath, 'utf8'); - } - } - - // Load text template if it exists - if (fs.existsSync(textTemplatePath)) { - textTemplate = fs.readFileSync(textTemplatePath, 'utf8'); - } else { - // If language-specific template doesn't exist, try fallback to English - const baseName = templateName.replace(/-[a-z]{2}$/, ''); // Remove language suffix - const fallbackTextPath = path.join(this.templatesPath, `${baseName}.txt`); - if (fs.existsSync(fallbackTextPath)) { - textTemplate = fs.readFileSync(fallbackTextPath, 'utf8'); - } - } - - // If no templates found, throw error - if (!htmlTemplate && !textTemplate) { - throw new Error(`Template '${templateName}' not found`); - } - - // Replace placeholders in templates - const processedTemplate = EmailTemplateHelper.processTemplate( - { html: htmlTemplate, text: textTemplate }, - data - ); - - return { - html: processedTemplate.html, - text: processedTemplate.text - }; - } catch (error) { - logError('Email template loading failed', error instanceof Error ? error : new Error(String(error))); - throw new Error(`Failed to load email template: ${templateName}`); - } - } - - /** - * Get localized verification email subject - * @param language - Language code ('en', 'hu', 'de') - */ - private getLocalizedVerificationSubject(language: 'en' | 'hu' | 'de'): string { - const subjects: LocalizedSubjects = { - verification: { - en: 'SerpentRace - Verify Your Account', - hu: 'SerpentRace - Fiók megerősítése', - de: 'SerpentRace - Konto verifizieren' - } - }; - return EmailTemplateHelper.getLocalizedSubject('verification', subjects, language); - } - - /** - * Get localized password reset email subject - * @param language - Language code ('en', 'hu', 'de') - */ - private getLocalizedPasswordResetSubject(language: 'en' | 'hu' | 'de'): string { - const subjects: LocalizedSubjects = { - passwordReset: { - en: 'SerpentRace - Password Reset Request', - hu: 'SerpentRace - Jelszó visszaállítás kérése', - de: 'SerpentRace - Passwort zurücksetzen' - } - }; - return EmailTemplateHelper.getLocalizedSubject('passwordReset', subjects, language); - } -} diff --git a/SerpentRace_Backend/src/Application/Services/EmailTemplateHelper.ts b/SerpentRace_Backend/src/Application/Services/EmailTemplateHelper.ts deleted file mode 100644 index d58a1784..00000000 --- a/SerpentRace_Backend/src/Application/Services/EmailTemplateHelper.ts +++ /dev/null @@ -1,39 +0,0 @@ -export interface LocalizedSubjects { - [key: string]: { - en: string; - hu: string; - de: string; - }; -} - -export interface TemplateData { - [key: string]: any; -} - -export interface EmailTemplate { - html: string; - text: string; -} - -export class EmailTemplateHelper { - public static getLocalizedSubject( - subjectKey: string, - subjects: LocalizedSubjects, - language: 'en' | 'hu' | 'de' - ): string { - return subjects[subjectKey]?.[language] || subjects[subjectKey]?.['en'] || 'SerpentRace'; - } - - public static replaceTemplatePlaceholders(template: string, data: TemplateData): string { - return template.replace(/\{\{\s*(\w+)\s*\}\}/g, (match, key) => { - return data[key] !== undefined ? String(data[key]) : match; - }); - } - - public static processTemplate(templateContent: EmailTemplate, data: TemplateData): EmailTemplate { - return { - html: this.replaceTemplatePlaceholders(templateContent.html, data), - text: this.replaceTemplatePlaceholders(templateContent.text, data) - }; - } -} diff --git a/SerpentRace_Backend/src/Application/Services/ErrorResponseService.ts b/SerpentRace_Backend/src/Application/Services/ErrorResponseService.ts deleted file mode 100644 index e4614f42..00000000 --- a/SerpentRace_Backend/src/Application/Services/ErrorResponseService.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { Response } from 'express'; - -export class ErrorResponseService { - static sendError(res: Response, statusCode: number, message: string, details?: any): Response { - const errorResponse: any = { error: message }; - if (details) { - errorResponse.details = details; - } - return res.status(statusCode).json(errorResponse); - } - - static sendInternalServerError(res: Response): Response { - return this.sendError(res, 500, 'Internal server error'); - } - - static sendBadRequest(res: Response, message: string = 'Bad request', details?: any): Response { - return this.sendError(res, 400, message, details); - } - - static sendUnauthorized(res: Response, message: string = 'Unauthorized'): Response { - return this.sendError(res, 401, message); - } - - static sendForbidden(res: Response, message: string = 'Forbidden'): Response { - return this.sendError(res, 403, message); - } - - static sendNotFound(res: Response, message: string = 'Not found'): Response { - return this.sendError(res, 404, message); - } - - static sendConflict(res: Response, message: string = 'Conflict'): Response { - return this.sendError(res, 409, message); - } -} diff --git a/SerpentRace_Backend/src/Application/Services/FieldEffectService.ts b/SerpentRace_Backend/src/Application/Services/FieldEffectService.ts deleted file mode 100644 index 22039a4d..00000000 --- a/SerpentRace_Backend/src/Application/Services/FieldEffectService.ts +++ /dev/null @@ -1,437 +0,0 @@ -import { GameCard, GameField } from '../../Domain/Game/GameAggregate'; -import { Consequence } from '../../Domain/Deck/DeckAggregate'; -import { BoardGenerationService } from '../Game/BoardGenerationService'; -import { GamemasterService, GamemasterDecisionResult } from './GamemasterService'; -import { FieldEffectRequest, FieldEffectResult } from './Interfaces/GameInterfaces'; - -// Interfaces for different card processing results -export interface GuessResult { - guessedPosition: number; - actualPosition: number; - isCorrect: boolean; - penaltyApplied: boolean; // true if moved back 2 fields - description: string; -} - -export interface TurnEffect { - type: 'LOSE_TURN' | 'EXTRA_TURN'; - playerId: string; - value: number; // Number of turns to lose/gain -} - -export interface CardProcessingResult { - finalPosition: number; - stepValue: number; - dice: number; - patternModifier: number; - consequenceModifier: number; - guessResult?: GuessResult; - gamemasterResult?: GamemasterDecisionResult; - turnEffect?: TurnEffect; // Turn-based consequences that need game state changes - description: string; - effects: string[]; // Array of all effects applied -} - -/** - * Service responsible for processing card-based field effects with step calculations - * Integrates pattern-based movement with test/guess mechanism and gamemaster decisions - */ -export class FieldEffectService { - constructor( - private boardGenerationService: BoardGenerationService, - private gamemasterService: GamemasterService - ) {} - - /** - * Process a card-based field effect with complete movement calculation - * @param request The field effect request containing all necessary data - * @returns Promise with complete processing result - */ - async processFieldEffect(request: FieldEffectRequest): Promise { - const { currentPosition, card, field, dice } = request; - - // Ensure stepValue is defined - const stepValue = field.stepValue || 1; - - // Calculate base movement using pattern-based system - const finalPosition = this.boardGenerationService.calculatePatternBasedMovement( - currentPosition, - stepValue, - dice - ); - - // Calculate pattern modifier manually for tracking - const patternModifier = this.getPatternModifier(currentPosition); - - let result: CardProcessingResult = { - finalPosition, - stepValue, - dice, - patternModifier, - consequenceModifier: 0, - description: `Moved from position ${currentPosition} to ${finalPosition}`, - effects: [] - }; - - // Process card based on type - if (this.isQuestionCard(card.type)) { - result = await this.processQuestionCard(request, result); - } else if (this.isJokerCard(card.type)) { - result = await this.processJokerCard(request, result); - } else if (this.isLuckCard(card.type)) { - result = await this.processLuckCard(request, result); - } - - return result; - } - - /** - * Get pattern modifier based on position (duplicated from BoardGenerationService) - * @param position Current position - * @returns Pattern modifier value - */ - private getPatternModifier(position: number): number { - // Pattern modifiers for strategic complexity: - // Positions 1-20: +2 bonus (easier start) - // Positions 21-40: -1 penalty (early game challenge) - // Positions 41-60: +1 bonus (mid-game boost) - // Positions 61-80: -2 penalty (late game challenge) - // Positions 81-100: +3 bonus (final stretch boost) - - if (position <= 20) { - return 2; - } else if (position <= 40) { - return -1; - } else if (position <= 60) { - return 1; - } else if (position <= 80) { - return -2; - } else { - return 3; - } - } - - /** - * Check if card is a question card (types 0-4) - * @param cardType Card type - * @returns True if question card - */ - private isQuestionCard(cardType?: number): boolean { - return cardType !== undefined && cardType >= 0 && cardType <= 4; - } - - /** - * Check if card is a joker card - * @param cardType Card type - * @returns True if joker card - */ - private isJokerCard(cardType?: number): boolean { - return cardType === 5; // Assuming joker cards have type 5 - } - - /** - * Check if card is a luck card - * @param cardType Card type - * @returns True if luck card - */ - private isLuckCard(cardType?: number): boolean { - return cardType === 6; // Assuming luck cards have type 6 - } - - /** - * Process question card with test/guess mechanism - * @param request The field effect request - * @param baseResult The base movement calculation result - * @returns Updated result with guess processing - */ - private async processQuestionCard( - request: FieldEffectRequest, - baseResult: CardProcessingResult - ): Promise { - const { guessedPosition } = request; - - if (guessedPosition === undefined) { - throw new Error('Question cards require a position guess'); - } - - // Apply test/guess mechanism - const guessResult = this.processGuess( - guessedPosition, - baseResult.finalPosition, - baseResult.finalPosition - ); - - let finalPosition = baseResult.finalPosition; - let effects = [...baseResult.effects]; - - if (!guessResult.isCorrect) { - // Apply guess penalty: move back exactly 2 fields - finalPosition = Math.max(1, baseResult.finalPosition - 2); - effects.push(`Wrong guess penalty: moved back 2 fields`); - } else { - effects.push(`Correct guess: no penalty`); - } - - return { - ...baseResult, - finalPosition, - guessResult, - effects, - description: `Question card: ${guessResult.description}` - }; - } - - /** - * Process joker card with same guess mechanism as question cards + gamemaster decision - * @param request The field effect request - * @param baseResult The base movement calculation result - * @returns Updated result with guess processing and gamemaster decision - */ - private async processJokerCard( - request: FieldEffectRequest, - baseResult: CardProcessingResult - ): Promise { - const { guessedPosition, gameId, playerId, playerName, card } = request; - - if (guessedPosition === undefined) { - throw new Error('Joker cards require a position guess'); - } - - // Joker cards always use dice = 6, recalculate with correct dice value - const jokerDice = 6; - const correctBasePosition = this.boardGenerationService.calculatePatternBasedMovement( - request.currentPosition, - baseResult.stepValue, - jokerDice - ); - - let finalPosition = correctBasePosition; - let effects = [`Joker card: dice counted as 6`]; - - // Step 1: Process guess penalty (same as question cards) - const guessResult = this.processGuess( - guessedPosition, - correctBasePosition, - correctBasePosition - ); - - if (!guessResult.isCorrect) { - // Apply guess penalty: move back exactly 2 fields - finalPosition = Math.max(1, correctBasePosition - 2); - effects.push(`Wrong guess penalty: moved back 2 fields`); - } else { - effects.push(`Correct guess: no penalty`); - } - - // Step 2: Process gamemaster decision (replaces player answer effect) - const gamemasterResult = await this.requestGamemasterDecision( - gameId, - playerId, - playerName, - card - ); - - let consequenceModifier = 0; - let turnEffect: TurnEffect | undefined; - - if (gamemasterResult.consequence && card.consequence) { - // Apply consequence based on gamemaster decision using new processing method - const consequenceResult = this.processConsequence(playerId, finalPosition, card.consequence); - finalPosition = consequenceResult.newPosition; - consequenceModifier = consequenceResult.positionChange; - turnEffect = consequenceResult.turnEffect; - - effects.push(`Gamemaster decision: ${gamemasterResult.description}`); - effects.push(`Consequence applied: ${this.getConsequenceDescription(card.consequence)}`); - } else { - effects.push(`No consequence applied: ${gamemasterResult.description}`); - } - - return { - ...baseResult, - finalPosition, - dice: jokerDice, // Update to show dice was 6 - consequenceModifier, - turnEffect, - guessResult, - gamemasterResult, - effects, - description: `Joker card: ${guessResult.description} | ${gamemasterResult.description}` - }; - } - - /** - * Process luck card with immediate effects - * @param request The field effect request - * @param baseResult The base movement calculation result - * @returns Updated result with luck card effects - */ - private async processLuckCard( - request: FieldEffectRequest, - baseResult: CardProcessingResult - ): Promise { - const { card, playerId } = request; - - let finalPosition = baseResult.finalPosition; - let consequenceModifier = 0; - let turnEffect: TurnEffect | undefined; - let effects = [...baseResult.effects]; - - if (card.consequence) { - // Apply immediate consequence using new processing method - const consequenceResult = this.processConsequence(playerId, finalPosition, card.consequence); - finalPosition = consequenceResult.newPosition; - consequenceModifier = consequenceResult.positionChange; - turnEffect = consequenceResult.turnEffect; - effects.push(`Luck effect: ${this.getConsequenceDescription(card.consequence)}`); - } - - return { - ...baseResult, - finalPosition, - consequenceModifier, - turnEffect, - effects, - description: `Luck card: immediate effect applied` - }; - } - - /** - * Process position guess and determine if penalty should be applied - * @param guessedPosition Player's position guess - * @param actualPosition The calculated final position - * @param basePosition The position before guess penalty - * @returns Guess processing result - */ - private processGuess( - guessedPosition: number, - actualPosition: number, - basePosition: number - ): GuessResult { - // Validate guess range - if (guessedPosition < 1 || guessedPosition > 100) { - throw new Error('Position guess must be between 1 and 100'); - } - - const isCorrect = guessedPosition === actualPosition; - const penaltyApplied = !isCorrect; - - return { - guessedPosition, - actualPosition, - isCorrect, - penaltyApplied, - description: isCorrect - ? `Correct guess (${guessedPosition})!` - : `Wrong guess (${guessedPosition} ≠ ${actualPosition})` - }; - } - - /** - * Request gamemaster decision for joker card - * @param gameId Game ID - * @param playerId Player ID - * @param playerName Player name - * @param card Joker card - * @returns Promise with gamemaster decision result - */ - private async requestGamemasterDecision( - gameId: string, - playerId: string, - playerName: string, - card: GameCard - ): Promise { - // For now, return a default decision - this will be replaced with actual async gamemaster interaction - // TODO: Implement proper WebSocket-based gamemaster decision flow - return { - decision: 'reject' as any, - consequence: false, - description: '🎭 Gamemaster decision pending...' - }; - } - - /** - * Process consequence and separate position changes from turn effects - * @param playerId Player ID who drew the card - * @param currentPosition Current position before consequence - * @param consequence Card consequence - * @returns Object with position changes and turn effects - */ - private processConsequence(playerId: string, currentPosition: number, consequence: Consequence): { - newPosition: number; - positionChange: number; - turnEffect?: TurnEffect; - } { - // Handle position-affecting consequences - if (consequence.type === 0 || consequence.type === 1 || consequence.type === 5) { - const newPosition = this.applyConsequenceToPosition(currentPosition, consequence); - return { - newPosition, - positionChange: newPosition - currentPosition - }; - } - - // Handle turn-based consequences - if (consequence.type === 2 || consequence.type === 3) { - const turnEffect: TurnEffect = { - type: consequence.type === 2 ? 'LOSE_TURN' : 'EXTRA_TURN', - playerId, - value: consequence.value || 1 - }; - return { - newPosition: currentPosition, // No position change - positionChange: 0, - turnEffect - }; - } - - // Unknown consequence type - return { - newPosition: currentPosition, - positionChange: 0 - }; - } - - /** - * Apply consequence to position with proper boundary handling - * @param currentPosition Current position - * @param consequence Card consequence - * @returns New position after consequence - */ - private applyConsequenceToPosition(currentPosition: number, consequence: Consequence): number { - switch (consequence.type) { - case 0: // MOVE_FORWARD - return Math.min(100, currentPosition + (consequence.value || 1)); - case 1: // MOVE_BACKWARD - return Math.max(1, currentPosition - (consequence.value || 1)); - case 5: // GO_TO_START - return 1; - default: - return currentPosition; // Other consequences don't change position - } - } - - /** - * Get human-readable description for consequence - * @param consequence Card consequence - * @returns Description string - */ - private getConsequenceDescription(consequence: Consequence): string { - switch (consequence.type) { - case 0: // MOVE_FORWARD - return `Move forward ${consequence.value || 1} steps`; - case 1: // MOVE_BACKWARD - return `Move backward ${consequence.value || 1} steps`; - case 2: // LOSE_TURN - const lostTurns = consequence.value || 1; - return lostTurns === 1 ? 'Lose next turn' : `Lose next ${lostTurns} turns`; - case 3: // EXTRA_TURN - const extraTurns = consequence.value || 1; - return extraTurns === 1 ? 'Get extra turn' : `Get ${extraTurns} extra turns`; - case 5: // GO_TO_START - return 'Go back to start'; - default: - return 'Unknown effect'; - } - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Services/GameSnapshotService.ts b/SerpentRace_Backend/src/Application/Services/GameSnapshotService.ts deleted file mode 100644 index e208485f..00000000 --- a/SerpentRace_Backend/src/Application/Services/GameSnapshotService.ts +++ /dev/null @@ -1,267 +0,0 @@ -import { IGameSnapshotRepository } from '../../Domain/IRepository/IGameSnapshotRepository'; -import { GameSnapshotAggregate, SnapshotTrigger, GameStateSnapshot, PlayerSnapshot } from '../../Domain/Game/GameSnapshotAggregate'; -import { RedisService } from './RedisService'; -import { logOther, logError } from './Logger'; - -export class GameSnapshotService { - private static readonly SNAPSHOT_INTERVAL = 5; // Every 5 turns - private static readonly MAX_SNAPSHOTS_PER_GAME = 20; // Keep last 20 snapshots - - constructor( - private snapshotRepository: IGameSnapshotRepository, - private redisService: RedisService - ) {} - - /** - * Create a game state snapshot - */ - async createSnapshot( - gameId: string, - turnNumber: number, - trigger: SnapshotTrigger, - notes?: string - ): Promise { - try { - // Gather current game state from Redis - const gameState = await this.getCurrentGameState(gameId); - if (!gameState) { - logError('Cannot create snapshot: game state not found', new Error(`Game ${gameId} not in Redis`)); - return; - } - - // Gather Redis state (pending actions, timers, etc.) - const redisState = await this.getRedisState(gameId); - - // Create snapshot - const snapshot = new GameSnapshotAggregate(); - snapshot.gameid = gameId; - snapshot.turnNumber = turnNumber; - snapshot.trigger = trigger; - snapshot.gameState = gameState; - snapshot.redisState = redisState; - snapshot.notes = notes || null; - - await this.snapshotRepository.save(snapshot); - - // Cleanup old snapshots - await this.snapshotRepository.deleteOldSnapshots( - gameId, - GameSnapshotService.MAX_SNAPSHOTS_PER_GAME - ); - - logOther(`Game snapshot created: ${trigger}`, { - gameId, - turnNumber, - trigger - }); - } catch (error) { - logError('Failed to create game snapshot', error as Error); - // Don't throw - snapshots shouldn't break game flow - } - } - - /** - * Check if snapshot should be created (every N turns) - */ - shouldCreateSnapshot(turnNumber: number): boolean { - return turnNumber % GameSnapshotService.SNAPSHOT_INTERVAL === 0; - } - - /** - * Restore game state from latest snapshot - */ - async restoreFromSnapshot(gameId: string): Promise { - try { - const snapshot = await this.snapshotRepository.findLatestByGameId(gameId); - if (!snapshot) { - logOther(`No snapshot found for game ${gameId}`); - return false; - } - - // Restore game state to Redis - await this.restoreGameState(gameId, snapshot.gameState); - - // Restore Redis state (pending actions, timers) - if (snapshot.redisState) { - await this.restoreRedisState(gameId, snapshot.redisState); - } - - logOther(`Game state restored from snapshot`, { - gameId, - turnNumber: snapshot.turnNumber, - trigger: snapshot.trigger, - age: Date.now() - snapshot.createdat.getTime() - }); - - return true; - } catch (error) { - logError('Failed to restore game from snapshot', error as Error); - return false; - } - } - - /** - * Get current game state from Redis - */ - private async getCurrentGameState(gameId: string): Promise { - try { - // Get game state - const gameStateKey = `game_state:${gameId}`; - const gameStateJson = await this.redisService.get(gameStateKey); - if (!gameStateJson) return null; - - const gameState = JSON.parse(gameStateJson); - - // Get player positions - const playerPositions: PlayerSnapshot[] = []; - const positionsKey = `player_positions:${gameId}`; - const positionsJson = await this.redisService.get(positionsKey); - - if (positionsJson) { - const positions = JSON.parse(positionsJson); - for (const [playerId, data] of Object.entries(positions)) { - const posData = data as any; - - // Get extra turns - const extraTurnsKey = `extra_turns:${gameId}:${playerId}`; - const extraTurns = parseInt(await this.redisService.get(extraTurnsKey) || '0'); - - // Get turns to lose - const turnsToLoseKey = `turns_to_lose:${gameId}:${playerId}`; - const turnsToLose = parseInt(await this.redisService.get(turnsToLoseKey) || '0'); - - playerPositions.push({ - playerId: playerId, - playerName: posData.playerName || 'Unknown', - boardPosition: posData.boardPosition || 0, - extraTurns, - turnsToLose, - isOnline: posData.isOnline !== false - }); - } - } - - // Get board data - const boardKey = `board_data:${gameId}`; - const boardJson = await this.redisService.get(boardKey); - const boardFields = boardJson ? JSON.parse(boardJson).fields : undefined; - - return { - currentPlayer: gameState.currentPlayer, - currentPlayerName: gameState.currentPlayerName || 'Unknown', - turnNumber: gameState.turnNumber || 1, - turnOrder: gameState.turnOrder || [], - playerPositions, - boardFields, - deckStates: undefined, // TODO: Add deck states if needed - pendingActions: undefined - }; - } catch (error) { - logError('Error getting current game state', error as Error); - return null; - } - } - - /** - * Get Redis state (pending cards, decisions, etc.) - */ - private async getRedisState(gameId: string): Promise { - const redisState: any = { - pendingCards: {}, - pendingDecisions: {}, - timers: {} - }; - - try { - // Get all keys for this game - const pattern = `*${gameId}*`; - const keys = await this.redisService['client'].keys(pattern); - - for (const key of keys) { - // Store non-critical state for reference - if (key.includes('pending_card') || key.includes('pending_decision')) { - const value = await this.redisService.get(key); - if (value) { - redisState.pendingCards[key] = value; - } - } - } - } catch (error) { - logError('Error getting Redis state', error as Error); - } - - return redisState; - } - - /** - * Restore game state to Redis - */ - private async restoreGameState(gameId: string, state: GameStateSnapshot): Promise { - // Restore game state - const gameStateKey = `game_state:${gameId}`; - await this.redisService.setWithExpiry(gameStateKey, JSON.stringify({ - currentPlayer: state.currentPlayer, - currentPlayerName: state.currentPlayerName, - turnNumber: state.turnNumber, - turnOrder: state.turnOrder - }), 3600); - - // Restore player positions - const positionsKey = `player_positions:${gameId}`; - const positions: any = {}; - for (const player of state.playerPositions) { - positions[player.playerId] = { - playerName: player.playerName, - boardPosition: player.boardPosition, - isOnline: player.isOnline - }; - - // Restore extra turns - if (player.extraTurns > 0) { - const extraTurnsKey = `extra_turns:${gameId}:${player.playerId}`; - await this.redisService.setWithExpiry(extraTurnsKey, player.extraTurns.toString(), 3600); - } - - // Restore turns to lose - if (player.turnsToLose > 0) { - const turnsToLoseKey = `turns_to_lose:${gameId}:${player.playerId}`; - await this.redisService.setWithExpiry(turnsToLoseKey, player.turnsToLose.toString(), 3600); - } - } - await this.redisService.setWithExpiry(positionsKey, JSON.stringify(positions), 3600); - - // Restore board data if available - if (state.boardFields) { - const boardKey = `board_data:${gameId}`; - await this.redisService.setWithExpiry(boardKey, JSON.stringify({ fields: state.boardFields }), 3600); - } - } - - /** - * Restore Redis state (partial - pending actions may need re-triggering) - */ - private async restoreRedisState(gameId: string, redisState: any): Promise { - // Note: Pending cards and timers should be recreated by game logic - // This is just for reference/debugging - logOther('Redis state reference saved (timers/pending actions need manual restart)'); - } - - /** - * Cleanup snapshots for finished game - */ - async cleanupGameSnapshots(gameId: string): Promise { - try { - await this.snapshotRepository.deleteByGameId(gameId); - logOther(`Game snapshots cleaned up for game ${gameId}`); - } catch (error) { - logError('Failed to cleanup game snapshots', error as Error); - } - } - - /** - * Get snapshot history for debugging - */ - async getSnapshotHistory(gameId: string): Promise { - return await this.snapshotRepository.findByGameId(gameId); - } -} diff --git a/SerpentRace_Backend/src/Application/Services/GameTokenService.ts b/SerpentRace_Backend/src/Application/Services/GameTokenService.ts deleted file mode 100644 index c4fca106..00000000 --- a/SerpentRace_Backend/src/Application/Services/GameTokenService.ts +++ /dev/null @@ -1,205 +0,0 @@ -import jwt, { SignOptions } from 'jsonwebtoken'; -import { Request } from 'express'; - -export interface GameTokenPayload { - gameId: string; - gameCode: string; - playerName: string; - isAuthenticated: boolean; - userId?: string; // Optional - only for authenticated players - tokenType: 'game_session'; - iat?: number; - exp?: number; -} - -export class GameTokenService { - private readonly secretKey: string; - private readonly gameTokenExpiry: number; - - constructor() { - this.secretKey = process.env.JWT_SECRET || 'your-secret-key'; - - // Game tokens expire after 24 hours (or configured duration) - // This should be longer than typical game duration - this.gameTokenExpiry = parseInt(process.env.GAME_TOKEN_EXPIRY || '86400'); // 24 hours default - - if (process.env.NODE_ENV === 'production' && (!process.env.JWT_SECRET || process.env.JWT_SECRET === 'your-secret-key')) { - throw new Error('JWT_SECRET environment variable must be set in production'); - } - } - - /** - * Create a game session token for a player - * @param gameId - The database ID of the game - * @param gameCode - The public game code (e.g., ABC123) - * @param playerName - The player's name in the game - * @param userId - Optional user ID for authenticated players - * @returns Game session JWT token - */ - createGameToken(gameId: string, gameCode: string, playerName: string, userId?: string): string { - const now = Math.floor(Date.now() / 1000); - - const payload: GameTokenPayload = { - gameId, - gameCode, - playerName, - isAuthenticated: !!userId, - userId, - tokenType: 'game_session', - iat: now, - exp: now + this.gameTokenExpiry - }; - - const options: SignOptions = {}; - const token = jwt.sign(payload, this.secretKey, options); - - return token; - } - - /** - * Verify and decode a game session token - * @param token - The game session JWT token - * @returns Decoded payload or null if invalid - */ - verifyGameToken(token: string): GameTokenPayload | null { - try { - const decoded = jwt.verify(token, this.secretKey) as GameTokenPayload; - - // Verify it's actually a game token - if (decoded.tokenType !== 'game_session') { - return null; - } - - return decoded; - } catch (error) { - return null; - } - } - - /** - * Extract game token from request headers or query params - * @param req - Express request object - * @returns Game token string or null - */ - extractGameTokenFromRequest(req: Request): string | null { - // Check Authorization header - const authHeader = req.headers.authorization; - if (authHeader && authHeader.startsWith('Bearer ')) { - return authHeader.substring(7); - } - - // Check query parameter (for WebSocket handshake) - if (req.query && req.query.gameToken && typeof req.query.gameToken === 'string') { - return req.query.gameToken; - } - - // Check game_token cookie - if (req.cookies && req.cookies.game_token) { - return req.cookies.game_token; - } - - return null; - } - - /** - * Verify game token from request and return payload - * @param req - Express request object - * @returns Decoded game token payload or null - */ - verifyGameTokenFromRequest(req: Request): GameTokenPayload | null { - const token = this.extractGameTokenFromRequest(req); - if (!token) { - return null; - } - - return this.verifyGameToken(token); - } - - /** - * Check if a game token is valid for a specific game - * @param token - The game session token - * @param gameCode - The game code to validate against - * @param playerName - Optional player name to validate - * @returns True if token is valid for the game - */ - isValidForGame(token: string, gameCode: string, playerName?: string): boolean { - const payload = this.verifyGameToken(token); - if (!payload) { - return false; - } - - // Check game code matches - if (payload.gameCode !== gameCode) { - return false; - } - - // Check player name if provided - if (playerName && payload.playerName !== playerName) { - return false; - } - - return true; - } - - /** - * Refresh a game token (extend expiry) - * @param currentToken - The current game token - * @returns New token with extended expiry or null if invalid - */ - refreshGameToken(currentToken: string): string | null { - const payload = this.verifyGameToken(currentToken); - if (!payload) { - return null; - } - - // Create new token with same data but fresh expiry - return this.createGameToken( - payload.gameId, - payload.gameCode, - payload.playerName, - payload.userId - ); - } - - /** - * Get remaining time before token expires - * @param token - The game session token - * @returns Seconds until expiry or -1 if invalid/expired - */ - getTimeUntilExpiry(token: string): number { - const payload = this.verifyGameToken(token); - if (!payload || !payload.exp) { - return -1; - } - - const now = Math.floor(Date.now() / 1000); - const remaining = payload.exp - now; - - return remaining > 0 ? remaining : -1; - } - - /** - * Create a game token response object for API responses - * @param gameId - The database ID of the game - * @param gameCode - The public game code - * @param playerName - The player's name - * @param userId - Optional user ID for authenticated players - * @returns Object with token and metadata - */ - createGameTokenResponse(gameId: string, gameCode: string, playerName: string, userId?: string) { - const token = this.createGameToken(gameId, gameCode, playerName, userId); - const expiresIn = this.gameTokenExpiry; - - return { - gameToken: token, - gameCode, - playerName, - isAuthenticated: !!userId, - expiresIn, - expiresAt: new Date(Date.now() + expiresIn * 1000).toISOString(), - tokenType: 'game_session' - }; - } -} - -export default GameTokenService; \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Services/GameWebSocketService.ts b/SerpentRace_Backend/src/Application/Services/GameWebSocketService.ts deleted file mode 100644 index fd2fcf14..00000000 --- a/SerpentRace_Backend/src/Application/Services/GameWebSocketService.ts +++ /dev/null @@ -1,3566 +0,0 @@ -import { Server as SocketIOServer, Socket } from 'socket.io'; -import { GameTokenService, GameTokenPayload } from './GameTokenService'; -import { GameRepository } from '../../Infrastructure/Repository/GameRepository'; -import { UserRepository } from '../../Infrastructure/Repository/UserRepository'; -import { TurnHistoryRepository } from '../../Infrastructure/Repository/TurnHistoryRepository'; -import { GameSnapshotRepository } from '../../Infrastructure/Repository/GameSnapshotRepository'; -import { GameAggregate, GameState, LoginType, GameField } from '../../Domain/Game/GameAggregate'; -import { logAuth, logError, logOther, logWarning } from './Logger'; -import { RedisService } from './RedisService'; -import { FieldEffectService, CardProcessingResult } from './FieldEffectService'; -import { CardDrawingService } from './CardDrawingService'; -import { BoardGenerationService } from '../Game/BoardGenerationService'; -import { GamemasterService, GamemasterDecision } from './GamemasterService'; -import { TurnHistoryService } from './TurnHistoryService'; -import { GameSnapshotService } from './GameSnapshotService'; -import { TurnActionType } from '../../Domain/Game/TurnHistoryAggregate'; -import { SnapshotTrigger } from '../../Domain/Game/GameSnapshotAggregate'; -import { - GameActionData, - PlayerPosition, - GameStateUpdateData, - FieldEffectRequest, - JoinGameData, - LeaveGameData -} from './Interfaces/GameInterfaces'; -import { json } from 'stream/consumers'; - -interface AuthenticatedSocket extends Socket { - userId?: string; - gameCode?: string; - playerName?: string; - isAuthenticated?: boolean; -} - -interface DiceRollData { - gameCode: string; - diceValue: number; // Value from frontend (1-6) -} - -interface GameChatData { - gameCode: string; - message: string; -} - -interface CardAnswerData { - gameCode: string; - answer: any; - cardId?: string; // Optional card ID sent from frontend -} - -interface GamemasterDecisionData { - gameCode: string; - requestId: string; - decision: 'approve' | 'reject'; -} - -interface PendingCardState { - playerId: string; - playerName: string; - card: any; - field: GameField; // Field info - dice: number; // Dice roll - currentPosition: number; // Position before card - landedPosition: number; // Position after dice roll (where they landed) - drawnAt: number; - answerGiven?: boolean; // Track if answer submitted - answerCorrect?: boolean; // Track if answer was correct - requiresGuess?: boolean; // Track if guess is required - guessedPosition?: number; // Store player's guess -} - -interface PendingDecisionState { - playerId: string; - playerName: string; - card: any; - field: GameField; // Field info - dice: number; // Dice roll (always 6 for jokers) - currentPosition: number; // Position before card - drawnAt: number; - recursionDepth: number; - gamemasterDecided?: boolean; // Track if gamemaster decided - gamemasterApproved?: boolean; // Track approval result - guessedPosition?: number; // Store player's guess -} - -export class GameWebSocketService { - private io: SocketIOServer; - private gameTokenService: GameTokenService; - private gameRepository: GameRepository; - private userRepository: UserRepository; - private redisService: RedisService; - private fieldEffectService: FieldEffectService; - private cardDrawingService: CardDrawingService; - private boardGenerationService: BoardGenerationService; - private gamemasterService: GamemasterService; - private turnHistoryService: TurnHistoryService; - private gameSnapshotService: GameSnapshotService; - - constructor( - io: SocketIOServer, - gameRepository: GameRepository, - userRepository: UserRepository, - redisService: RedisService, - turnHistoryRepository: TurnHistoryRepository, - gameSnapshotRepository: GameSnapshotRepository - ) { - this.io = io; - this.gameTokenService = new GameTokenService(); - this.gameRepository = gameRepository; - this.userRepository = userRepository; - this.redisService = redisService; - - // Initialize services in proper dependency order - this.boardGenerationService = new BoardGenerationService(); - this.gamemasterService = new GamemasterService(); - this.cardDrawingService = new CardDrawingService(); - this.fieldEffectService = new FieldEffectService( - this.boardGenerationService, - this.gamemasterService - ); - this.turnHistoryService = new TurnHistoryService(turnHistoryRepository); - this.gameSnapshotService = new GameSnapshotService(gameSnapshotRepository, redisService); - - this.setupGameNamespace(); - } - - private setupGameNamespace(): void { - // Create a namespace specifically for game events - const gameNamespace = this.io.of('/game'); - - gameNamespace.on('connection', (socket: AuthenticatedSocket) => { - logOther(`New game socket connection: ${socket.id}`); - - // For game sockets, authentication is optional (public games) - // Players will authenticate when joining a specific game - this.setupGameEventHandlers(socket); - }); - } - - private setupGameEventHandlers(socket: AuthenticatedSocket): void { - // Join game room - socket.on('game:join', async (data: any) => { - await this.handleJoinGame(socket, data); - }); - - // Leave game room - socket.on('game:leave', async (data: LeaveGameData) => { - await this.handleLeaveGame(socket, data); - }); - - // Game actions (dice roll, move, etc.) - socket.on('game:action', async (data: GameActionData) => { - await this.handleGameAction(socket, data); - }); - - // Game chat within a specific game - socket.on('game:chat', async (data: GameChatData) => { - await this.handleGameChat(socket, data); - }); - - // Player ready status - socket.on('game:ready', async (data: { gameCode: string; ready: boolean }) => { - await this.handlePlayerReady(socket, data); - }); - - // Gamemaster approve player (private games only) - socket.on('game:approve-player', async (data: { gameCode: string; playerName: string }) => { - await this.handleApprovePlayer(socket, data); - }); - - // Gamemaster reject player (private games only) - socket.on('game:reject-player', async (data: { gameCode: string; playerName: string; reason?: string }) => { - await this.handleRejectPlayer(socket, data); - }); - - // Player joining after approval (private games) - socket.on('game:join-approved', async (data: JoinGameData) => { - await this.handleJoinApproved(socket, data); - }); - - // Dice roll from frontend - socket.on('game:dice-roll', async (data: DiceRollData) => { - await this.handleDiceRoll(socket, data); - }); - - // Card answer from player - socket.on('game:card-answer', async (data: CardAnswerData) => { - await this.handleCardAnswer(socket, data); - }); - - // Gamemaster decision on joker card - socket.on('game:gamemaster-decision', async (data: GamemasterDecisionData) => { - await this.handleGamemasterDecision(socket, data); - }); - - // Position guess (for question cards) - socket.on('game:position-guess', async (data: { gameCode: string; guessedPosition: number }) => { - await this.handlePositionGuess(socket, data); - }); - - // Joker position guess (for joker cards) - socket.on('game:joker-position-guess', async (data: { gameCode: string; guessedPosition: number }) => { - await this.handleJokerPositionGuess(socket, data); - }); - - // Disconnect handling - socket.on('disconnect', async () => { - await this.handleDisconnect(socket); - }); - } - - private async handleJoinGame(socket: AuthenticatedSocket, data: any): Promise { - try { - // Socket.IO automatically deserializes JSON - data is already an object - const gameToken = data?.gameToken; - - if (!gameToken) { - logError('Game join failed: No game token provided'); - socket.emit('game:error', { message: 'Game token is required' }); - return; - } - - // Verify the game token - const gameTokenPayload = this.gameTokenService.verifyGameToken(gameToken); - if (!gameTokenPayload) { - logError('Game join failed: Invalid game token'); - socket.emit('game:error', { message: 'Invalid or expired game token' }); - return; - } - - const { gameId, gameCode, playerName, isAuthenticated, userId } = gameTokenPayload; - - // Validate game still exists - const game = await this.gameRepository.findByGameCode(gameCode); - if (!game || game.id !== gameId) { - logError(`Game join failed: Game not found - Code: ${gameCode}`); - socket.emit('game:error', { message: 'Game not found or token invalid' }); - return; - } - - // Check if player name is already in use by checking connected players - const connectedPlayers = await this.getConnectedPlayers(gameCode); - if (connectedPlayers.includes(playerName)) { - logOther(`Game join failed: Player name "${playerName}" already in use in game ${gameCode}`); - socket.emit('game:error', { message: `Player name "${playerName}" is already in use in this game` }); - return; - } - - // Set socket properties from game token - socket.gameCode = gameCode; - socket.playerName = playerName; - socket.isAuthenticated = isAuthenticated; - socket.userId = userId; - - // Check if this is a private game and player needs gamemaster approval - const isGamemaster = game.createdby === userId; - const needsApproval = game.logintype === LoginType.PRIVATE && !isGamemaster; - - logOther(`Player joining game: ${playerName}`); - logOther(` - userId: ${userId}`); - logOther(` - game.createdby: ${game.createdby}`); - logOther(` - isGamemaster: ${isGamemaster}`); - logOther(` - needsApproval: ${needsApproval}`); - - // Generate dynamic room names (needed for both approval and direct join) - const gameRoomName = `game_${gameCode}`; - const playerRoomName = `game_${gameCode}:${playerName}`; - - if (needsApproval) { - // For private games, non-gamemaster players need approval - // Add to pending players list and notify gamemaster - await this.addToPendingPlayers(gameCode, playerName); - - // Send pending status to the requesting player - socket.emit('game:pending-approval', { - gameCode, - playerName, - message: 'Waiting for gamemaster approval to join the game', - timestamp: new Date().toISOString() - }); - - // Notify gamemaster about the pending player - socket.to(gameRoomName).emit('game:player-requesting-join', { - playerName: playerName, - isAuthenticated, - message: `${playerName} is requesting to join the game`, - timestamp: new Date().toISOString() - }); - - return; // Don't join rooms yet - wait for approval - } - - // Join both the general game room and player-specific room - await socket.join(gameRoomName); - await socket.join(playerRoomName); - - // Update Redis with active player connection FIRST (before getting state) - await this.updatePlayerConnection(gameCode, playerName, true); - - // Send success response to the joining player - socket.emit('game:joined', { - gameCode, - playerName, - isAuthenticated, - gameId, - isGamemaster, - timestamp: new Date().toISOString() - }); - - - // Notify other players in the game (broadcast) - socket.to(gameRoomName).emit('game:player-joined', { - playerName: playerName, - isAuthenticated, - isGamemaster, - timestamp: new Date().toISOString() - }); - - - // Send current game state to the joining player (now includes this player) - const gameState = await this.getGameState(gameCode); - // Add isGamemaster flag for this specific player - const gameStateWithMasterFlag = { ...gameState, isGamemaster }; - socket.emit('game:state', gameStateWithMasterFlag); - - // Broadcast updated game state to all other players so they see the new player - socket.to(gameRoomName).emit('game:state-update', gameState); - - } catch (error) { - socket.emit('game:error', { - message: 'Failed to join game', - error: error instanceof Error ? error.message : 'Unknown error' - }); - } - } - - private async handleLeaveGame(socket: AuthenticatedSocket, data: LeaveGameData): Promise { - try { - const { gameCode } = data; - const playerName = socket.playerName; - - // Validate we have the required data - if (!playerName) { - logError('Cannot leave game: socket has no playerName'); - socket.emit('game:error', { message: 'Player has no name' }); - return; - } - - const gameRoomName = `game_${gameCode}`; - const playerRoomName = `game_${gameCode}:${playerName}`; - - // Leave both rooms - await socket.leave(gameRoomName); - await socket.leave(playerRoomName); - - logOther(`Player ${playerName} left game room: ${gameRoomName}`); - - // Notify other players - socket.to(gameRoomName).emit('game:player-left', { - playerName: playerName, - timestamp: new Date().toISOString() - }); - - // Update Redis before clearing socket properties - await this.updatePlayerConnection(gameCode, playerName, false); - - // Clear socket properties - socket.gameCode = undefined; - socket.playerName = undefined; - - } catch (error) { - logError('Error leaving game', error as Error); - socket.emit('game:error', { message: 'Failed to leave game' }); - } - } - - private async handleGameAction(socket: AuthenticatedSocket, data: GameActionData): Promise { - try { - const { gameCode, action, data: actionData } = data; - - if (!socket.gameCode || socket.gameCode !== gameCode) { - socket.emit('game:error', { message: 'You must be in the game to perform actions' }); - return; - } - - // Validate it's the player's turn (this would need game state logic) - const game = await this.gameRepository.findByGameCode(gameCode); - if (!game) { - socket.emit('game:error', { message: 'Game not found' }); - return; - } - - // Process the game action based on type - const result = await this.processGameAction(game, socket.userId!, action, actionData); - - if (result.success) { - // Broadcast action to all players in the game - const gameRoomName = `game_${gameCode}`; - this.io.of('/game').to(gameRoomName).emit('game:action-result', { - action, - playerName: socket.playerName, - result: result.data, - timestamp: new Date().toISOString() - }); // If the action resulted in a game state change, broadcast the new state - if (result.stateChanged) { - const updatedGameState = await this.getGameState(gameCode); - this.io.of('/game').to(gameRoomName).emit('game:state-update', updatedGameState); - } - } else { - socket.emit('game:error', { message: result.error }); - } - - } catch (error) { - logError('Error processing game action', error as Error); - socket.emit('game:error', { message: 'Failed to process action' }); - } - } - - private async handleGameChat(socket: AuthenticatedSocket, data: GameChatData): Promise { - try { - const { gameCode, message } = data; - - if (!socket.gameCode || socket.gameCode !== gameCode) { - socket.emit('game:error', { message: 'You must be in the game to chat' }); - return; - } - - const gameRoomName = `game_${gameCode}`; - - // Broadcast chat message to all players in the game - this.io.of('/game').to(gameRoomName).emit('game:chat-message', { - playerName: socket.playerName, - message, - timestamp: new Date().toISOString() - }); - - logOther(`Game chat in ${gameCode}: ${socket.playerName || socket.userId}: ${message}`); - - } catch (error) { - logError('Error handling game chat', error as Error); - socket.emit('game:error', { message: 'Failed to send chat message' }); - } - } - - private async handlePlayerReady(socket: AuthenticatedSocket, data: { gameCode: string; ready: boolean }): Promise { - try { - const { gameCode, ready } = data; - const gameRoomName = `game_${gameCode}`; - - // Update player ready status in Redis - await this.updatePlayerReadyStatus(gameCode, socket.playerName!, ready); - - // Broadcast ready status to all players - this.io.of('/game').to(gameRoomName).emit('game:player-ready', { - playerName: socket.playerName, - ready, - timestamp: new Date().toISOString() - }); - - // Check if all players are ready and start game if so - const allReady = await this.checkAllPlayersReady(gameCode); - if (allReady) { - this.io.of('/game').to(gameRoomName).emit('game:all-ready', { - message: 'All players are ready! Game can start.', - timestamp: new Date().toISOString() - }); - } - - } catch (error) { - logError('Error handling player ready status', error as Error); - socket.emit('game:error', { message: 'Failed to update ready status' }); - } - } - - private async handleApprovePlayer(socket: AuthenticatedSocket, data: { gameCode: string; playerName: string }): Promise { - try { - const { gameCode, playerName } = data; - - // Verify that the requesting socket is the gamemaster - const game = await this.gameRepository.findByGameCode(gameCode); - if (!game) { - socket.emit('game:error', { message: 'Game not found' }); - return; - } - - const isGamemaster = game.createdby === socket.userId; - if (!isGamemaster) { - socket.emit('game:error', { message: 'Only the gamemaster can approve players' }); - return; - } - - if (game.logintype !== LoginType.PRIVATE) { - socket.emit('game:error', { message: 'Player approval is only for private games' }); - return; - } - - // Check if player is in pending list - const pendingPlayers = await this.getPendingPlayers(gameCode); - if (!pendingPlayers.includes(playerName)) { - socket.emit('game:error', { message: 'Player not found in pending list' }); - return; - } - - // Remove from pending players - await this.removeFromPendingPlayers(gameCode, playerName); - - // Notify the approved player to join the game rooms - const gameRoomName = `game_${gameCode}`; - const playerRoomName = `game_${gameCode}:${playerName}`; - - // Find the pending player's socket and move them to the game - this.io.of('/game').emit('game:approval-granted', { - gameCode, - playerName, - gameRoomName, - playerRoomName, - message: 'You have been approved to join the game!', - timestamp: new Date().toISOString() - }); - - // Notify all players about the approval - this.io.of('/game').to(gameRoomName).emit('game:player-approved', { - playerName, - approvedBy: socket.playerName, - timestamp: new Date().toISOString() - }); - - // Send updated game state to gamemaster to preserve their status - const gameState = await this.getGameState(gameCode); - const gamemasterState = { ...gameState, isGamemaster: true }; - socket.emit('game:state', gamemasterState); - - logOther(`Player ${playerName} approved by gamemaster in game ${gameCode}`); - - } catch (error) { - logError('Error approving player', error as Error); - socket.emit('game:error', { message: 'Failed to approve player' }); - } - } - - private async handleRejectPlayer(socket: AuthenticatedSocket, data: { gameCode: string; playerName: string; reason?: string }): Promise { - try { - const { gameCode, playerName, reason } = data; - - // Verify that the requesting socket is the gamemaster - const game = await this.gameRepository.findByGameCode(gameCode); - if (!game) { - socket.emit('game:error', { message: 'Game not found' }); - return; - } - - const isGamemaster = game.createdby === socket.userId; - if (!isGamemaster) { - socket.emit('game:error', { message: 'Only the gamemaster can reject players' }); - return; - } - - if (game.logintype !== LoginType.PRIVATE) { - socket.emit('game:error', { message: 'Player rejection is only for private games' }); - return; - } - - // Check if player is in pending list - const pendingPlayers = await this.getPendingPlayers(gameCode); - if (!pendingPlayers.includes(playerName)) { - socket.emit('game:error', { message: 'Player not found in pending list' }); - return; - } - - // Remove from pending players - await this.removeFromPendingPlayers(gameCode, playerName); - - // Notify the rejected player - this.io.of('/game').emit('game:approval-denied', { - gameCode, - playerName, - reason: reason || 'Your request to join the game was denied', - timestamp: new Date().toISOString() - }); - - // Send updated game state to gamemaster to preserve their status - const gameState = await this.getGameState(gameCode); - const gamemasterState = { ...gameState, isGamemaster: true }; - socket.emit('game:state', gamemasterState); - - logOther(`Player ${playerName} rejected by gamemaster in game ${gameCode}${reason ? ': ' + reason : ''}`); - - } catch (error) { - logError('Error rejecting player', error as Error); - socket.emit('game:error', { message: 'Failed to reject player' }); - } - } - - private async handleJoinApproved(socket: AuthenticatedSocket, data: JoinGameData): Promise { - try { - const { gameToken } = data; - - if (!gameToken) { - socket.emit('game:error', { message: 'Game token is required' }); - return; - } - - // Verify the game token - const gameTokenPayload = this.gameTokenService.verifyGameToken(gameToken); - if (!gameTokenPayload) { - socket.emit('game:error', { message: 'Invalid or expired game token' }); - return; - } - - const { gameId, gameCode, playerName, isAuthenticated, userId } = gameTokenPayload; - - // Validate game still exists - const game = await this.gameRepository.findByGameCode(gameCode); - if (!game || game.id !== gameId) { - socket.emit('game:error', { message: 'Game not found or token invalid' }); - return; - } - - // Check if player was actually approved (not in pending list anymore) - const pendingPlayers = await this.getPendingPlayers(gameCode); - if (pendingPlayers.includes(playerName)) { - socket.emit('game:error', { message: 'Player still pending approval' }); - return; - } - - // Set socket properties from game token - socket.gameCode = gameCode; - socket.playerName = playerName; - socket.isAuthenticated = isAuthenticated; - socket.userId = userId; - - // Generate dynamic room names and join - const gameRoomName = `game_${gameCode}`; - const playerRoomName = `game_${gameCode}:${playerName}`; - - await socket.join(gameRoomName); - await socket.join(playerRoomName); - - logOther(`Approved player ${playerName} joined game room: ${gameRoomName}`); - - // Update Redis with active player connection FIRST (before getting state) - await this.updatePlayerConnection(gameCode, playerName, true); - - // Send success response to the joining player - socket.emit('game:joined', { - gameCode, - playerName, - isAuthenticated, - gameId, - isGamemaster: false, - timestamp: new Date().toISOString() - }); - - // Notify other players in the game (broadcast) - socket.to(gameRoomName).emit('game:player-joined', { - playerName: playerName, - isAuthenticated, - isGamemaster: false, - timestamp: new Date().toISOString() - }); - - // Send current game state to the joining player (after approval) - const gameState = await this.getGameState(gameCode); - // Check if this player is gamemaster (shouldn't be, since they were just approved) - const gameForMasterCheck = await this.gameRepository.findByGameCode(gameCode); - const playerIsGamemaster = gameForMasterCheck?.createdby === socket.userId; - const gameStateWithMasterFlag = { ...gameState, isGamemaster: playerIsGamemaster }; - socket.emit('game:state', gameStateWithMasterFlag); - - // Broadcast updated game state to all other players so they see the new player - socket.to(gameRoomName).emit('game:state-update', gameState); - - } catch (error) { - logError('Error handling approved join', error as Error); - socket.emit('game:error', { message: 'Failed to join after approval' }); - } - } - - private async handleDiceRoll(socket: AuthenticatedSocket, data: DiceRollData): Promise { - try { - const { gameCode, diceValue } = data; - - // Validate input - if (!gameCode || !socket.gameCode || socket.gameCode !== gameCode) { - socket.emit('game:error', { message: 'You must be in the game to roll dice' }); - return; - } - - if (!diceValue || diceValue < 1 || diceValue > 6) { - socket.emit('game:error', { message: 'Invalid dice value. Must be between 1 and 6' }); - return; - } - - // Get current game state - const gameState = await this.getCurrentGameState(gameCode); - if (!gameState) { - socket.emit('game:error', { message: 'Game not found' }); - return; - } - - // Check if it's the player's turn - // Use userId for authenticated players, playerName for guests - const playerIdentifier = socket.userId || socket.playerName; - if (!playerIdentifier) { - socket.emit('game:error', { message: 'Player identification failed' }); - return; - } - - if (gameState.currentPlayer !== playerIdentifier) { - socket.emit('game:error', { message: 'It is not your turn' }); - return; - } - - // Get player's current position - const playerPositions = await this.getPlayerPositions(gameCode); - const currentPlayer = playerPositions.find(p => p.playerId === playerIdentifier); - - if (!currentPlayer) { - socket.emit('game:error', { message: 'Player not found in game' }); - return; - } - - // Calculate new position after dice roll - let newPosition = Math.min(currentPlayer.boardPosition + diceValue, 100); // Win at 100 - - const gameRoomName = `game_${gameCode}`; - - // Emit dice-rolled event FIRST (for frontend animation) - this.io.of('/game').to(gameRoomName).emit('game:dice-rolled', { - playerId: playerIdentifier, - playerName: socket.playerName, - diceValue: diceValue, - calculatedDestination: newPosition, - timestamp: new Date().toISOString() - }); - - // Emit player-moving event (token starts animation) - this.io.of('/game').to(gameRoomName).emit('game:player-moving', { - playerId: playerIdentifier, - playerName: socket.playerName, - fromPosition: currentPlayer.boardPosition, - toPosition: newPosition, - timestamp: new Date().toISOString() - }); - - // Check if player won (reached position 100) - if (newPosition >= 100) { - // Update position BEFORE ending game - await this.updatePlayerPosition(gameCode, playerIdentifier, newPosition); - - // Emit player-arrived event - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId: playerIdentifier, - playerName: socket.playerName, - position: newPosition, - fieldType: 'finish', - timestamp: new Date().toISOString() - }); - - await this.endGame(gameCode, playerIdentifier, socket.playerName!); - return; - } - - // Check if player landed on special field (positive, negative, or luck) - const boardData = await this.getBoardData(gameCode); - if (boardData && boardData.fields) { - const landedField = boardData.fields.find((f: GameField) => f.position === newPosition); - - if (landedField && this.isSpecialField(landedField)) { - // Wait 2 seconds for frontend animation to complete - await new Promise(resolve => setTimeout(resolve, 2000)); - - // Process special field - draw card - // Position will be updated AFTER card/consequence logic in handleSpecialFieldLanding - await this.handleSpecialFieldLanding( - gameCode, - playerIdentifier, - socket.playerName!, - landedField, - newPosition, - diceValue, - currentPlayer.boardPosition - ); - return; // Don't advance turn yet, waiting for card answer - } - } - - // No special field - update position now and advance turn - await this.updatePlayerPosition(gameCode, playerIdentifier, newPosition); - - // Log turn history - await this.turnHistoryService.logTurnAction( - gameCode, - playerIdentifier, - socket.playerName!, - gameState.turnNumber || 1, - TurnActionType.DICE_ROLL, - currentPlayer.boardPosition, - newPosition, - { diceValue } - ); - - // Emit player-arrived event - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId: playerIdentifier, - playerName: socket.playerName, - position: newPosition, - fieldType: 'normal', - timestamp: new Date().toISOString() - }); - - await this.advanceTurn(gameCode); - - logOther(`Player ${socket.playerName} rolled ${diceValue}, moved from ${currentPlayer.boardPosition} to ${newPosition}`, { - gameCode, - playerId: socket.userId - }); - - } catch (error) { - logError('Error handling dice roll', error as Error); - socket.emit('game:error', { message: 'Failed to process dice roll' }); - } - } - - private async handleCardAnswer(socket: AuthenticatedSocket, data: CardAnswerData): Promise { - try { - const { gameCode, answer, cardId } = data; - - logOther(`Card answer received`, { - gameCode, - playerId: socket.userId, - playerName: socket.playerName, - cardId, - answerType: typeof answer - }); - - // Validate input - if (!gameCode || !socket.gameCode || socket.gameCode !== gameCode) { - socket.emit('game:error', { message: 'You must be in the game to answer cards' }); - return; - } - - if (!socket.userId) { - socket.emit('game:error', { message: 'Player not authenticated' }); - return; - } - - // Get pending card from Redis - const pendingCard = await this.getPendingCard(gameCode, socket.userId); - if (!pendingCard) { - logError(`No pending card found for player ${socket.playerName} (${socket.userId}) in game ${gameCode}`); - socket.emit('game:error', { message: 'No pending card answer found' }); - return; - } - - const pendingState = pendingCard as PendingCardState; - - // Clear the timeout by clearing from CardDrawingService - const answerKey = `${gameCode}:${socket.userId}`; - this.cardDrawingService.clearAnswerTimeout(answerKey); - - const gameRoomName = `game_${gameCode}`; - - // Broadcast player's answer to all players BEFORE validation - this.io.of('/game').to(gameRoomName).emit('game:answer-submitted', { - playerName: socket.playerName, - playerId: socket.userId, - answer: answer, - message: `${socket.playerName} answered: ${JSON.stringify(answer)}`, - timestamp: new Date().toISOString() - }); - - // Add dramatic pause before showing result - await new Promise(resolve => setTimeout(resolve, 1000)); - - // Process the answer - const result = this.cardDrawingService.processAnswer(pendingState.card, answer); - - // Update pending state - pendingState.answerGiven = true; - pendingState.answerCorrect = result.correct; - - // Broadcast validation result - this.io.of('/game').to(gameRoomName).emit('game:answer-validated', { - playerName: socket.playerName, - playerId: socket.userId, - isCorrect: result.correct, - correctAnswer: pendingState.card.answer, - message: result.correct - ? `✅ ${socket.playerName} answered correctly!` - : `❌ ${socket.playerName} answered incorrectly. Correct answer: ${JSON.stringify(pendingState.card.answer)}`, - timestamp: new Date().toISOString() - }); - - // Log answer submission - const gameState = await this.getCurrentGameState(gameCode); - if (gameState) { - await this.turnHistoryService.logTurnAction( - gameCode, - socket.userId!, - socket.playerName!, - gameState.turnNumber || 1, - TurnActionType.ANSWER_SUBMITTED, - pendingState.currentPosition, - pendingState.currentPosition, - { - cardId: pendingState.card.cardid, - answer: answer, - isCorrect: result.correct - } - ); - } - - // ========================================== - // NEW: Determine if position guess is required - // ========================================== - const requiresGuess = this.determineGuessRequirement( - pendingState.field.type, - result.correct - ); - - if (requiresGuess) { - // Request position guess - try { - await this.requestPositionGuess(gameCode, socket.userId, socket.playerName!, pendingState); - } catch (error) { - logError('Error requesting position guess, advancing turn', error as Error); - await this.clearPendingCard(gameCode, socket.userId); - await this.advanceTurn(gameCode); - } - } else { - // No guess required, handle based on field type - if (pendingState.field.type === 'positive' && !result.correct) { - // Positive field + wrong answer = stay at landed position (no movement back) - this.io.of('/game').to(gameRoomName).emit('game:no-movement', { - playerId: socket.userId, - playerName: socket.playerName, - reason: 'Wrong answer on positive field', - message: `${socket.playerName} stays at position ${pendingState.landedPosition}`, - timestamp: new Date().toISOString() - }); - } else if (pendingState.field.type === 'negative' && result.correct) { - // Negative field + correct answer = stay at landed position (avoided penalty) - this.io.of('/game').to(gameRoomName).emit('game:penalty-avoided', { - playerId: socket.userId, - playerName: socket.playerName, - message: `${socket.playerName} avoided the penalty! Stays at position ${pendingState.landedPosition}`, - timestamp: new Date().toISOString() - }); - } - - // Emit player-arrived event (stay at landed position, not reverting to pre-dice position) - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId: socket.userId, - playerName: socket.playerName, - position: pendingState.landedPosition || pendingState.currentPosition, // Use landed position - fieldType: 'normal', - timestamp: new Date().toISOString() - }); - - // Clean up and advance turn - await this.clearPendingCard(gameCode, socket.userId); - await this.advanceTurn(gameCode); - } - - logOther(`Player ${socket.playerName} answered card: ${result.correct ? 'correct' : 'wrong'}`, { - gameCode, - playerId: socket.userId, - requiresGuess - }); - - } catch (error) { - logError('Error handling card answer', error as Error); - socket.emit('game:error', { message: 'Failed to process card answer' }); - // Ensure turn advances even on error - try { - if (socket.userId && data.gameCode) { - const pendingCard = await this.getPendingCard(data.gameCode, socket.userId); - if (pendingCard) { - await this.clearPendingCard(data.gameCode, socket.userId); - } - await this.advanceTurn(data.gameCode); - } - } catch (advanceError) { - logError('Error advancing turn after card answer error', advanceError as Error); - } - } - } - - private async handleGamemasterDecision(socket: AuthenticatedSocket, data: GamemasterDecisionData): Promise { - try { - const { gameCode, requestId, decision } = data; - - // Validate input - if (!gameCode || !socket.gameCode || socket.gameCode !== gameCode) { - socket.emit('game:error', { message: 'You must be in the game to make decisions' }); - return; - } - - if (!socket.userId) { - socket.emit('game:error', { message: 'Gamemaster not authenticated' }); - return; - } - - // Verify this is the gamemaster - const game = await this.gameRepository.findByGameCode(gameCode); - if (!game || game.createdby !== socket.userId) { - socket.emit('game:error', { message: 'Only the gamemaster can make this decision' }); - return; - } - - // Get pending decision from Redis - const pendingDecision = await this.getPendingDecision(gameCode, requestId); - if (!pendingDecision) { - socket.emit('game:error', { message: 'Decision request not found or expired' }); - return; - } - - const pendingState = pendingDecision as PendingDecisionState; - - // Process decision through GamemasterService - const result = this.gamemasterService.processGamemasterDecision( - requestId, - decision === 'approve' ? GamemasterDecision.APPROVE : GamemasterDecision.REJECT - ); - - if (!result) { - socket.emit('game:error', { message: 'Failed to process gamemaster decision' }); - // Clean up - await this.clearPendingDecision(gameCode, requestId); - return; - } - - const gameRoomName = `game_${gameCode}`; - const approved = decision === 'approve'; - - // Update pending state with decision - pendingState.gamemasterDecided = true; - pendingState.gamemasterApproved = approved; - - // Broadcast decision result to all players - this.io.of('/game').to(gameRoomName).emit('game:gamemaster-decision-result', { - playerName: pendingState.playerName, - playerId: pendingState.playerId, - gamemasterName: socket.playerName, - decision: decision, - approved: approved, - consequence: result.consequence, - description: result.description, - timestamp: new Date().toISOString() - }); - - // ========================================== - // NEW: Determine if position guess is required - // ========================================== - const requiresGuess = ( - (pendingState.field.type === 'positive' && approved) || - (pendingState.field.type === 'negative' && !approved) - ); - - if (requiresGuess) { - // Request position guess - await this.requestJokerPositionGuess( - gameCode, - pendingState.playerId, - pendingState.playerName, - pendingState - ); - } else { - // No guess required - if (pendingState.field.type === 'positive' && !approved) { - // Positive field + rejected = no movement (stay at currentPosition) - this.io.of('/game').to(gameRoomName).emit('game:no-movement', { - playerId: pendingState.playerId, - playerName: pendingState.playerName, - reason: 'Gamemaster rejected on positive field', - message: `${pendingState.playerName} stays at position ${pendingState.currentPosition}`, - timestamp: new Date().toISOString() - }); - } else if (pendingState.field.type === 'negative' && approved) { - // Negative field + approved = no movement (avoided penalty, stay at currentPosition) - this.io.of('/game').to(gameRoomName).emit('game:penalty-avoided', { - playerId: pendingState.playerId, - playerName: pendingState.playerName, - message: `${pendingState.playerName} avoided the penalty! Stays at position ${pendingState.currentPosition}`, - timestamp: new Date().toISOString() - }); - } - - // Emit player-arrived event (stayed at original position) - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId: pendingState.playerId, - playerName: pendingState.playerName, - position: pendingState.currentPosition, - fieldType: 'normal', - timestamp: new Date().toISOString() - }); - - // Clean up and advance turn - await this.clearPendingDecision(gameCode, requestId); - await this.advanceTurn(gameCode); - } - - logOther(`Gamemaster ${socket.playerName} made decision: ${decision} for player ${pendingState.playerName}`, { - gameCode, - requestId, - requiresGuess - }); - - } catch (error) { - logError('Error handling gamemaster decision', error as Error); - socket.emit('game:error', { message: 'Failed to process gamemaster decision' }); - } - } - - /** - * Handle player landing on special field (positive, negative, luck) - * Draws card and initiates appropriate flow based on card type - */ - private async handleSpecialFieldLanding( - gameCode: string, - playerId: string, - playerName: string, - field: GameField, - position: number, - dice: number, - currentPosition: number - ): Promise { - try { - const gameRoomName = `game_${gameCode}`; - - // Get game data for card drawing - const gameData = await this.gameRepository.findByGameCode(gameCode); - if (!gameData) { - logError('Game not found when handling special field landing'); - await this.advanceTurn(gameCode); - return; - } - - // Draw a card based on field type - const cardDrawResult = this.cardDrawingService.drawCard( - gameData, - field.type as 'positive' | 'negative' | 'luck', - playerId - ); - - if (!cardDrawResult.success || !cardDrawResult.card) { - // No more cards available or error - this.io.of('/game').to(gameRoomName).emit('game:card-error', { - playerName, - playerId, - error: cardDrawResult.error || 'Failed to draw card', - timestamp: new Date().toISOString() - }); - await this.advanceTurn(gameCode); - return; - } - - const card = cardDrawResult.card; - - // Check if card has consequence (joker/luck card) even without type field - const hasConsequence = card.consequence !== undefined && card.consequence !== null; - const isLuckType = this.isLuckCard(card.type); - - // Get game state for turn number - const gameState = await this.getCurrentGameState(gameCode); - - // Broadcast card drawn to all players (everyone sees the question) - this.io.of('/game').to(gameRoomName).emit('game:card-drawn', { - playerName, - playerId, - cardType: hasConsequence ? 'joker' : this.getCardTypeName(card.type), - question: card.question, - fieldType: field.type, - timestamp: new Date().toISOString() - }); - - logOther('Card drawn event broadcasted', { - playerName, - playerId, - cardType: hasConsequence ? 'joker' : this.getCardTypeName(card.type), - hasConsequence, - cardTypeNumber: card.type, - question: card.question?.substring(0, 50), - fieldType: field.type - }); - - // Log card drawn - if (gameState) { - await this.turnHistoryService.logTurnAction( - gameCode, - playerId, - playerName, - gameState.turnNumber || 1, - TurnActionType.CARD_DRAWN, - currentPosition, - currentPosition, // Position unchanged at this point - { - cardId: card.cardid, - cardType: hasConsequence ? 'joker' : this.getCardTypeName(card.type), - question: card.question, - fieldType: field.type - } - ); - } - - // Check card type and handle accordingly - if (isLuckType || hasConsequence) { - // Update position to destination FIRST (player has landed on the luck field) - await this.updatePlayerPosition(gameCode, playerId, position); - - // Emit player-arrived event - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId, - playerName, - position: position, - fieldType: field.type, - timestamp: new Date().toISOString() - }); - - // Luck card - process immediately (no answer required) - const result = this.cardDrawingService.processLuckCard(card); - - // Broadcast luck result - this.io.of('/game').to(gameRoomName).emit('game:card-result', { - playerName, - playerId, - correct: true, - consequence: result.consequence, - description: result.description, - timestamp: new Date().toISOString() - }); - - // Process luck card with multi-turn support - // Note: processLuckCard will update position again if consequence moves player - if (card.consequence) { - await this.processLuckCard(gameCode, playerId, playerName, card.consequence, position); - } else { - // Fallback to old method if no consequence object - await this.applyCardConsequence(gameCode, playerId, playerName, result.consequence); - } - } else { - // Question card - send to player for answer - if (!cardDrawResult.clientData) { - logError('Client data missing for question card'); - logOther('Card details for missing clientData', { - cardType: card.type, - cardId: card.cardid, - hasCard: !!card, - cardKeys: card ? Object.keys(card) : [] - }); - await this.advanceTurn(gameCode); - return; - } - - // Update position to destination FIRST (player has landed on the field) - await this.updatePlayerPosition(gameCode, playerId, position); - - // Emit player-arrived event so frontend shows the position - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId, - playerName, - position: position, - fieldType: field.type, - timestamp: new Date().toISOString() - }); - - // Send interactive card to the player who drew it - const playerRoomName = `game_${gameCode}:${playerName}`; - this.io.of('/game').to(playerRoomName).emit('game:card-drawn-self', { - cardData: cardDrawResult.clientData, - timeLimit: 60, // 60 seconds to answer - timestamp: new Date().toISOString() - }); - - logOther('Card sent to player for answer', { - playerName, - playerId, - cardId: card.cardid, - cardType: this.getCardTypeName(card.type), - hasClientData: !!cardDrawResult.clientData, - clientDataKeys: cardDrawResult.clientData ? Object.keys(cardDrawResult.clientData) : [] - }); - - // Start answer timeout - const answerKey = this.cardDrawingService.startAnswerTimeout( - gameCode, - playerId, - card, - this.handleCardAnswerTimeout.bind(this) - ); - - // Store pending card in Redis - await this.storePendingCard(gameCode, playerId, { - playerId: playerId, - playerName: playerName, - card: card, - field: field, - dice: dice, - currentPosition: currentPosition, - landedPosition: position, // Store where they landed - drawnAt: Date.now() - }); - - logOther(`Stored pending card for player ${playerName}`, { - gameCode, - playerId, - cardType: this.getCardTypeName(card.type), - cardId: card.cardid, - redisKey: `game_pending_card:${gameCode}:${playerId}` - }); - } - - } catch (error) { - logError('Error handling special field landing', error as Error); - await this.advanceTurn(gameCode); - } - } - - /** - * Handle card answer timeout (player didn't answer in time) - */ - private async handleCardAnswerTimeout(gameCode: string, playerId: string, card: any): Promise { - try { - // Clear from Redis - await this.clearPendingCard(gameCode, playerId); - - const gameRoomName = `game_${gameCode}`; - const pendingCard = await this.getPendingCard(gameCode, playerId); - const playerName = pendingCard?.playerName || 'Player'; - - // Broadcast timeout to all players - this.io.of('/game').to(gameRoomName).emit('game:card-timeout', { - playerName, - playerId, - message: '⏰ Time\'s up!', - timestamp: new Date().toISOString() - }); - - // Process as timeout (automatic wrong answer) - const result = this.cardDrawingService.processTimeoutAnswer(card); - - // Broadcast result - this.io.of('/game').to(gameRoomName).emit('game:card-result', { - playerName, - playerId, - correct: false, - consequence: result.consequence, - description: result.description, - timestamp: new Date().toISOString() - }); - - // Apply penalty - await this.applyCardConsequence(gameCode, playerId, playerName, result.consequence); - - } catch (error) { - logError('Error handling card answer timeout', error as Error); - } - } - - /** - * Get human-readable card type name - */ - private getCardTypeName(cardType?: number): string { - if (cardType === undefined) return 'unknown'; - - const typeNames = ['quiz', 'sentence_pairing', 'own_answer', 'true_false', 'closer', 'joker', 'luck']; - return typeNames[cardType] || 'unknown'; - } - - private async handleDisconnect(socket: AuthenticatedSocket): Promise { - logOther(`Game socket disconnected: ${socket.id} (player: ${socket.playerName})`); - - // If the socket was in a game, handle cleanup - if (socket.gameCode && socket.playerName) { - try { - // Check if this player is the gamemaster - const game = await this.gameRepository.findByGameCode(socket.gameCode); - const isGamemaster = game && socket.userId && game.createdby === socket.userId; - - // If gamemaster leaves, end the game immediately - if (isGamemaster && game) { - logOther(`Gamemaster ${socket.playerName} left game ${socket.gameCode}, ending game`); - - const gameRoomName = `game_${socket.gameCode}`; - - // Notify all players - this.io.of('/game').to(gameRoomName).emit('game:ended', { - reason: 'gamemaster_left', - gamemasterName: socket.playerName, - message: `🎭 Gamemaster ${socket.playerName} left. Game has ended.`, - timestamp: new Date().toISOString() - }); - - // Update database - await this.gameRepository.update(game.id, { - state: GameState.CANCELLED, - enddate: new Date() - }); - - // Clean up all game data - await this.cleanupGameData(socket.gameCode, game.id); - - return; // Exit early, no need for further cleanup - } - - // Clean up any pending card answer - if (socket.userId) { - const pendingCard = await this.getPendingCard(socket.gameCode, socket.userId); - if (pendingCard) { - // Clear timeout - const answerKey = `${socket.gameCode}:${socket.userId}`; - this.cardDrawingService.clearAnswerTimeout(answerKey); - await this.clearPendingCard(socket.gameCode, socket.userId); - - // Notify others - const gameRoomName = `game_${socket.gameCode}`; - this.io.of('/game').to(gameRoomName).emit('game:player-disconnected-during-card', { - playerName: socket.playerName, - playerId: socket.userId, - timestamp: new Date().toISOString() - }); - } - } - - // Update player connection status - await this.updatePlayerConnection(socket.gameCode, socket.playerName, false); - - // Create snapshot on player disconnect during active game - const gameState = await this.getCurrentGameState(socket.gameCode); - if (gameState) { - await this.gameSnapshotService.createSnapshot( - socket.gameCode, - (gameState.currentTurn || 0) + 1, - SnapshotTrigger.PLAYER_DISCONNECT, - `Player ${socket.playerName} disconnected` - ).catch(err => { - logError('Failed to create disconnect snapshot', err as Error); - logOther('Disconnect snapshot context', { - gameCode: socket.gameCode, - playerName: socket.playerName - }); - }); - } - - // Check if disconnected player was current player - const playerIdentifier = socket.userId || socket.playerName; - if (gameState && gameState.currentPlayer === playerIdentifier) { - logOther(`Current player ${socket.playerName} disconnected, advancing turn`, { gameCode: socket.gameCode }); - - // Broadcast disconnect during turn - const gameRoomName = `game_${socket.gameCode}`; - this.io.of('/game').to(gameRoomName).emit('game:player-disconnected-during-turn', { - playerName: socket.playerName, - playerId: playerIdentifier, - message: `${socket.playerName} disconnected during their turn`, - timestamp: new Date().toISOString() - }); - - // Advance to next player - await this.advanceTurn(socket.gameCode); - } - - // Clean up player-specific Redis data - await this.cleanupPlayerData(socket.gameCode, socket.playerName, socket.userId); - - // Notify other players about disconnection - const gameRoomName = `game_${socket.gameCode}`; - socket.to(gameRoomName).emit('game:player-disconnected', { - playerName: socket.playerName, - playerId: socket.userId, - timestamp: new Date().toISOString() - }); - - // Check if this was the last player - if so, consider ending/cleaning the game - const connectedPlayers = await this.getConnectedPlayers(socket.gameCode); - if (connectedPlayers.length === 0) { - logOther(`All players disconnected from game ${socket.gameCode}, scheduling cleanup`); - // Schedule cleanup after a delay to allow for reconnections - setTimeout(async () => { - const stillConnected = await this.getConnectedPlayers(socket.gameCode!); - if (stillConnected.length === 0) { - await this.handleAbandonedGame(socket.gameCode!); - } - }, 60000); // 1 minute delay - } - - } catch (error) { - logError('Error updating player connection on disconnect', error as Error); - logOther('Disconnect error context', { gameCode: socket.gameCode, playerName: socket.playerName }); - } - } - } - - /** - * Clean up player-specific data when they disconnect - * @param gameCode Game code - * @param playerName Player name - * @param playerId Player ID - */ - private async cleanupPlayerData(gameCode: string, playerName: string, playerId?: string): Promise { - try { - // Remove from ready players - await this.redisService.setRemove(`game_ready:${gameCode}`, playerName); - - // Remove from pending players if they were pending - await this.redisService.setRemove(`game_pending:${gameCode}`, playerName); - - logOther(`Cleaned up player data for ${playerName} in game ${gameCode}`); - - } catch (error) { - logError('Error cleaning up player data', error as Error); - } - } - - /** - * Handle games that have been abandoned by all players - * @param gameCode Game code - */ - private async handleAbandonedGame(gameCode: string): Promise { - try { - const game = await this.gameRepository.findByGameCode(gameCode); - if (!game) return; - - // Only clean up games that haven't finished yet - if (game.state !== GameState.FINISHED && game.state !== GameState.CANCELLED) { - logOther(`Handling abandoned game ${gameCode}`, { gameId: game.id }); - - // Mark game as cancelled in database - await this.gameRepository.update(game.id, { - state: GameState.CANCELLED, - enddate: new Date(), - }); - - // Clean up all Redis data for this abandoned game - await this.cleanupGameData(gameCode, game.id); - - logOther(`Abandoned game ${gameCode} has been cleaned up`); - } - - } catch (error) { - logError('Error handling abandoned game', error as Error); - } - } - - // Helper methods for game state management - - private async getGameState(gameCode: string): Promise { - try { - // Try gameplay first (game started/in-progress) - const gameplayState = await this.getCurrentGameState(gameCode); - if (gameplayState) { - return gameplayState; - } - - // Fallback to game: key for pre-game lobby - const gameKey = `game:${gameCode}`; - const gameStr = await this.redisService.get(gameKey); - if (gameStr) { - const gameData = JSON.parse(gameStr); - // Add pending players for private games - if (gameData.logintype === LoginType.PRIVATE) { - gameData.pendingPlayers = await this.getPendingPlayers(gameCode); - } - return gameData; - } - - return null; - } catch (error) { - logError('Error getting game state', error as Error); - return null; - } - } - - private async processGameAction(game: GameAggregate, playerId: string, action: string, actionData: any): Promise<{ success: boolean; data?: any; error?: string; stateChanged?: boolean }> { - // This would contain the actual game logic - // For now, returning a placeholder - - switch (action) { - case 'roll-dice': - // Handle dice rolling logic - const diceResult = Math.floor(Math.random() * 6) + 1; - return { - success: true, - data: { dice: diceResult }, - stateChanged: true - }; - - case 'move': - // Handle player movement logic - return { - success: true, - data: { newPosition: actionData.position }, - stateChanged: true - }; - - case 'use-field': - // Handle special field usage - return { - success: true, - data: { fieldUsed: actionData.fieldType }, - stateChanged: true - }; - - case 'end-turn': - // Handle turn ending logic - return { - success: true, - data: { nextPlayer: 'next-player-id' }, - stateChanged: true - }; - - default: - return { - success: false, - error: 'Unknown action type' - }; - } - } - - private async updatePlayerConnection(gameCode: string, playerName: string, connected: boolean): Promise { - const key = `game_connections:${gameCode}`; - if (connected) { - await this.redisService.setAdd(key, playerName); - } else { - await this.redisService.setRemove(key, playerName); - } - // Note: RedisService doesn't have expire method, we'll handle expiration differently - } - - private async updatePlayerReadyStatus(gameCode: string, playerName: string, ready: boolean): Promise { - const key = `game_ready:${gameCode}`; - if (ready) { - await this.redisService.setAdd(key, playerName); - } else { - await this.redisService.setRemove(key, playerName); - } - // Note: RedisService doesn't have expire method, we'll handle expiration differently - } - - private async addToPendingPlayers(gameCode: string, playerName: string): Promise { - const key = `game_pending:${gameCode}`; - await this.redisService.setAdd(key, playerName); - } - - private async removeFromPendingPlayers(gameCode: string, playerName: string): Promise { - const key = `game_pending:${gameCode}`; - await this.redisService.setRemove(key, playerName); - } - - private async getPendingPlayers(gameCode: string): Promise { - const key = `game_pending:${gameCode}`; - return await this.redisService.setMembers(key); - } - - // Redis methods for pending card answers - private async storePendingCard(gameCode: string, playerId: string, cardState: PendingCardState): Promise { - const key = `game_pending_card:${gameCode}:${playerId}`; - await this.redisService.setWithExpiry(key, JSON.stringify(cardState), 90); // 90 seconds (30 seconds buffer after timeout) - } - - private async getPendingCard(gameCode: string, playerId: string): Promise { - const key = `game_pending_card:${gameCode}:${playerId}`; - const dataStr = await this.redisService.get(key); - return dataStr ? JSON.parse(dataStr) : null; - } - - private async clearPendingCard(gameCode: string, playerId: string): Promise { - const key = `game_pending_card:${gameCode}:${playerId}`; - await this.redisService.del(key); - } - - // Redis methods for pending gamemaster decisions - private async storePendingDecision(gameCode: string, requestId: string, decisionState: PendingDecisionState): Promise { - const key = `game_pending_decision:${gameCode}:${requestId}`; - await this.redisService.setWithExpiry(key, JSON.stringify(decisionState), 150); // 150 seconds (30 seconds buffer after timeout) - } - - private async getPendingDecision(gameCode: string, requestId: string): Promise { - const key = `game_pending_decision:${gameCode}:${requestId}`; - const dataStr = await this.redisService.get(key); - return dataStr ? JSON.parse(dataStr) : null; - } - - private async clearPendingDecision(gameCode: string, requestId: string): Promise { - const key = `game_pending_decision:${gameCode}:${requestId}`; - await this.redisService.del(key); - } - - // Helper to get all pending decision keys for a game - private async getAllPendingDecisionKeys(gameCode: string): Promise { - // Note: This is a simplified version. In production, you might want to maintain a set of request IDs - // For now, we'll rely on the GamemasterService's in-memory tracking - const pendingDecisions = this.gamemasterService.getPendingDecisionsForGame(gameCode); - return pendingDecisions.map(d => d.requestId); - } - - private async getCurrentGameState(gameCode: string): Promise { - try { - const gamePlayKey = `gameplay:${gameCode}`; - const gameStateStr = await this.redisService.get(gamePlayKey); - - if (gameStateStr) { - return JSON.parse(gameStateStr); - } - return null; - } catch (error) { - logError('Error getting current game state', error as Error); - return null; - } - } - - private async getPlayerPositions(gameCode: string): Promise { - try { - // Get positions from gameplay (single source of truth) - const gameState = await this.getCurrentGameState(gameCode); - if (gameState && gameState.players) { - return gameState.players.map((player: any) => ({ - playerId: player.playerId, - playerName: player.playerName || player.playerId, - boardPosition: player.position || 0, - turnOrder: player.turnOrder - })); - } - - return []; - } catch (error) { - logError('Error getting player positions', error as Error); - return []; - } - } - - private async updatePlayerPosition(gameCode: string, playerId: string, newPosition: number): Promise { - try { - // Update position in gameplay (single source of truth) - const gameState = await this.getCurrentGameState(gameCode); - if (gameState && gameState.players) { - const player = gameState.players.find((p: any) => p.playerId === playerId); - if (player) { - player.position = newPosition; - - // Save updated gameplay state - const gamePlayKey = `gameplay:${gameCode}`; - await this.redisService.set(gamePlayKey, JSON.stringify(gameState)); - } - } - } catch (error) { - logError('Error updating player position', error as Error); - } - } - - // ============================================ - // TURN TRACKING REDIS METHODS - // ============================================ - - /** - * Set the number of extra turns for a player - */ - private async setPlayerExtraTurns( - gameCode: string, - playerId: string, - count: number - ): Promise { - const key = `player_extra_turns:${gameCode}:${playerId}`; - await this.redisService.set(key, count.toString()); - logOther(`Set extra turns for player ${playerId}`, { gameCode, count }); - } - - /** - * Get the number of extra turns for a player - */ - private async getPlayerExtraTurns( - gameCode: string, - playerId: string - ): Promise { - const key = `player_extra_turns:${gameCode}:${playerId}`; - const value = await this.redisService.get(key); - return value ? parseInt(value, 10) : 0; - } - - /** - * Decrement extra turns by 1, delete key if reaches 0 - */ - private async decrementPlayerExtraTurns( - gameCode: string, - playerId: string - ): Promise { - const current = await this.getPlayerExtraTurns(gameCode, playerId); - if (current > 1) { - await this.setPlayerExtraTurns(gameCode, playerId, current - 1); - } else { - const key = `player_extra_turns:${gameCode}:${playerId}`; - await this.redisService.del(key); - } - } - - /** - * Set the number of turns to lose for a player - */ - private async setPlayerTurnsToLose( - gameCode: string, - playerId: string, - count: number - ): Promise { - const key = `player_turns_to_lose:${gameCode}:${playerId}`; - await this.redisService.set(key, count.toString()); - logOther(`Set turns to lose for player ${playerId}`, { gameCode, count }); - } - - /** - * Get the number of turns to lose for a player - */ - private async getPlayerTurnsToLose( - gameCode: string, - playerId: string - ): Promise { - const key = `player_turns_to_lose:${gameCode}:${playerId}`; - const value = await this.redisService.get(key); - return value ? parseInt(value, 10) : 0; - } - - /** - * Decrement turns to lose by 1, delete key if reaches 0 - */ - private async decrementPlayerTurnsToLose( - gameCode: string, - playerId: string - ): Promise { - const current = await this.getPlayerTurnsToLose(gameCode, playerId); - if (current > 1) { - await this.setPlayerTurnsToLose(gameCode, playerId, current - 1); - } else { - const key = `player_turns_to_lose:${gameCode}:${playerId}`; - await this.redisService.del(key); - } - } - - /** - * Clear all turn tracking data for a player - */ - private async clearPlayerTurnData( - gameCode: string, - playerId: string - ): Promise { - await this.redisService.del(`player_extra_turns:${gameCode}:${playerId}`); - await this.redisService.del(`player_turns_to_lose:${gameCode}:${playerId}`); - } - - // ============================================ - // POSITION GUESSING MECHANICS - // ============================================ - - /** - * Determine if position guess is required based on field type and answer correctness - * - * Logic: - * - Positive field + correct answer = GUESS (reward scenario) - * - Positive field + wrong answer = NO GUESS (no movement) - * - Negative field + correct answer = NO GUESS (avoid penalty) - * - Negative field + wrong answer = GUESS (penalty scenario) - * - Regular field = NO GUESS (never guess on regular fields) - */ - private determineGuessRequirement( - fieldType: 'regular' | 'positive' | 'negative' | 'luck', - answerCorrect: boolean - ): boolean { - if (fieldType === 'positive') { - return answerCorrect; // Correct = guess for reward - } else if (fieldType === 'negative') { - return !answerCorrect; // Wrong = guess for penalty - } - return false; // Regular and luck fields never require guess - } - - /** - * Request position guess from player with stepping calculation info - */ - private async requestPositionGuess( - gameCode: string, - playerId: string, - playerName: string, - pendingState: PendingCardState - ): Promise { - const gameRoomName = `game_${gameCode}`; - const playerRoomName = `game_${gameCode}:${playerName}`; - - // Calculate what the actual position would be (without showing to player yet) - // Use the LANDED field position for pattern modifier calculation - const landedFieldPosition = pendingState.field.position; - const actualPosition = this.boardGenerationService.calculatePatternBasedMovement( - landedFieldPosition, - pendingState.field.stepValue || 0, - pendingState.dice - ); - - // Calculate the ACTUAL pattern modifier based on the LANDED field position - const stepValue = pendingState.field.stepValue || 0; - const positiveField = stepValue > 0; - const actualPatternModifier = this.boardGenerationService.getPatternModifier(landedFieldPosition, positiveField); - - // Store stepping info for later validation - pendingState.requiresGuess = true; - const cardKey = `game_pending_card:${gameCode}:${playerId}`; - await this.redisService.setWithExpiry(cardKey, JSON.stringify(pendingState), 30); - - // Start timeout for position guess (30 seconds) - setTimeout(() => { - this.handlePositionGuessTimeout(gameCode, playerId, playerName, pendingState); - }, 30000); - - // Notify player to guess - send the ACTUAL pattern modifier and LANDED field position - this.io.of('/game').to(playerRoomName).emit('game:position-guess-request', { - message: 'Guess your final position!', - currentPosition: landedFieldPosition, - diceRoll: pendingState.dice, - fieldStepValue: pendingState.field.stepValue || 0, - patternModifier: actualPatternModifier, - timeLimit: 30, - timestamp: new Date().toISOString() - }); - - // Notify others that player is guessing - this.io.of('/game').to(gameRoomName).emit('game:player-guessing', { - playerId, - playerName, - message: `${playerName} is guessing their final position...`, - timestamp: new Date().toISOString() - }); - - logOther(`Position guess requested from ${playerName}`, { gameCode }); - } - - /** - * Handle position guess timeout (player didn't guess in time) - */ - private async handlePositionGuessTimeout( - gameCode: string, - playerId: string, - playerName: string, - pendingState: PendingCardState - ): Promise { - try { - // Check if pending state still exists (player might have already guessed) - const cardKey = `game_pending_card:${gameCode}:${playerId}`; - const stateJson = await this.redisService.get(cardKey); - if (!stateJson) { - // Already processed, nothing to do - return; - } - - // Clear from Redis - await this.clearPendingCard(gameCode, playerId); - - const gameRoomName = `game_${gameCode}`; - - // Broadcast timeout to all players - this.io.of('/game').to(gameRoomName).emit('game:guess-timeout', { - playerId, - playerName, - message: `⏰ ${playerName} didn't guess in time!`, - timestamp: new Date().toISOString() - }); - - // Calculate actual position using LANDED field position - const landedFieldPosition = pendingState.field.position; - const actualPosition = this.boardGenerationService.calculatePatternBasedMovement( - landedFieldPosition, - pendingState.field.stepValue || 0, - pendingState.dice - ); - - // Apply -2 penalty for timeout (treated as wrong guess) - const finalPosition = Math.max(1, actualPosition - 2); - - // Update player position - await this.updatePlayerPosition(gameCode, playerId, finalPosition); - - // Emit player-arrived event FIRST (before guess-result) - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId, - playerName, - position: finalPosition, - fieldType: 'normal', - timestamp: new Date().toISOString() - }); - - // Calculate the actual pattern modifier used (based on LANDED field) - const stepValue = pendingState.field.stepValue || 0; - const positiveField = stepValue > 0; - const actualPatternModifier = this.boardGenerationService.getPatternModifier(landedFieldPosition, positiveField); - - // Broadcast result - this.io.of('/game').to(gameRoomName).emit('game:guess-result', { - playerId, - playerName, - guessedPosition: null, - actualPosition: actualPosition, - finalPosition: finalPosition, - guessCorrect: false, - penaltyApplied: true, - calculation: { - startPosition: landedFieldPosition, - diceRoll: pendingState.dice, - stepValue: pendingState.field.stepValue || 0, - patternModifier: actualPatternModifier, - calculatedPosition: actualPosition, - penalty: -2 - }, - message: `❌ ${playerName} timed out! Penalty applied. Final position: ${finalPosition}`, - timestamp: new Date().toISOString() - }); - - // Check for win condition - if (finalPosition >= 100) { - await this.endGame(gameCode, playerId, playerName); - return; - } - - // Check if landed on special field (secondary landing) - // For positive/negative fields, this will draw joker card - // For luck fields, this will return false and we'll handle them below - const secondaryLandingHandled = await this.checkSecondaryLanding( - gameCode, - playerId, - playerName, - finalPosition, - 0 // recursion depth - ); - - if (secondaryLandingHandled) { - // Joker card flow initiated, don't advance turn - return; - } - - // Check if landed on luck field (non-joker secondary landing) - const boardData = await this.getBoardData(gameCode); - if (boardData && boardData.fields) { - const landedField = boardData.fields.find((f: GameField) => f.position === finalPosition); - - if (landedField && landedField.type === 'luck') { - // Handle luck field normally - await this.handleSpecialFieldLanding( - gameCode, - playerId, - playerName, - landedField, - finalPosition, - 6, // Secondary landing uses dice = 6 - finalPosition // Use finalPosition as currentPosition for next card draw - ); - return; - } - } - - // No special field, advance turn - await this.advanceTurn(gameCode); - - } catch (error) { - logError('Error handling position guess timeout', error as Error); - // Don't call advanceTurn here - already called above if successful - } - } - - /** - * Handle position guess submission from player - */ - private async handlePositionGuess(socket: AuthenticatedSocket, data: { - gameCode: string; - guessedPosition: number; - }): Promise { - try { - const { gameCode, guessedPosition } = data; - const playerId = socket.userId || socket.playerName; - const playerName = socket.playerName; - - if (!playerId || !playerName) { - socket.emit('error', { message: 'Player identification failed' }); - return; - } - - // Get pending card state - const cardKey = `game_pending_card:${gameCode}:${playerId}`; - const stateJson = await this.redisService.get(cardKey); - if (!stateJson) { - socket.emit('error', { message: 'No pending guess found' }); - return; - } - - // Clear from Redis immediately to prevent timeout handler from processing - await this.clearPendingCard(gameCode, playerId); - - const pendingState: PendingCardState = JSON.parse(stateJson); - pendingState.guessedPosition = guessedPosition; - - // Broadcast the guess to everyone - const gameRoomName = `game_${gameCode}`; - this.io.of('/game').to(gameRoomName).emit('game:position-guess-broadcast', { - playerId, - playerName, - guessedPosition, - message: `${playerName} guessed position ${guessedPosition}`, - timestamp: new Date().toISOString() - }); - - // Process the guess with FieldEffectService - await this.processQuestionCardWithGuess(gameCode, pendingState); - - // Clean up pending state - await this.redisService.del(cardKey); - - } catch (error) { - logError('Error handling position guess', error as Error); - socket.emit('error', { message: 'Failed to process guess' }); - } - } - - /** - * Process question card with guess using FieldEffectService - */ - private async processQuestionCardWithGuess( - gameCode: string, - pendingState: PendingCardState - ): Promise { - // Calculate actual position using BoardGenerationService - // Use the LANDED field position for calculation - const landedFieldPosition = pendingState.field.position; - const actualPosition = this.boardGenerationService.calculatePatternBasedMovement( - landedFieldPosition, - pendingState.field.stepValue || 0, - pendingState.dice - ); - - let finalPosition = actualPosition; - let guessCorrect = false; - let penaltyApplied = false; - - // Check if guess was correct - if (pendingState.guessedPosition === actualPosition) { - guessCorrect = true; - } else { - // Wrong guess: apply -2 penalty - finalPosition = Math.max(1, actualPosition - 2); - penaltyApplied = true; - } - - // Update player position - await this.updatePlayerPosition(gameCode, pendingState.playerId, finalPosition); - - // Calculate the actual pattern modifier used (based on LANDED field) - const stepValue = pendingState.field.stepValue || 0; - const positiveField = stepValue > 0; - const actualPatternModifier = this.boardGenerationService.getPatternModifier(landedFieldPosition, positiveField); - - // Emit player-arrived event FIRST (before guess-result) - const gameRoomName = `game_${gameCode}`; - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId: pendingState.playerId, - playerName: pendingState.playerName, - position: finalPosition, - fieldType: 'normal', - timestamp: new Date().toISOString() - }); - - // Broadcast result - this.io.of('/game').to(gameRoomName).emit('game:guess-result', { - playerId: pendingState.playerId, - playerName: pendingState.playerName, - guessedPosition: pendingState.guessedPosition, - actualPosition: actualPosition, - finalPosition: finalPosition, - guessCorrect, - penaltyApplied, - calculation: { - startPosition: pendingState.field.position, - diceRoll: pendingState.dice, - stepValue: pendingState.field.stepValue || 0, - patternModifier: actualPatternModifier, - calculatedPosition: actualPosition, - penalty: penaltyApplied ? -2 : 0 - }, - message: guessCorrect - ? `✅ ${pendingState.playerName} guessed correctly! Moved to ${finalPosition}` - : `❌ ${pendingState.playerName} guessed wrong! Penalty applied. Final position: ${finalPosition}`, - timestamp: new Date().toISOString() - }); - - // Check for win condition (position 100) - if (finalPosition >= 100) { - await this.endGame(gameCode, pendingState.playerId, pendingState.playerName); - return; - } - - // Check if landed on special field (secondary landing) - // For positive/negative fields, this will draw joker card - // For luck fields, this will return false and we'll handle them below - const secondaryLandingHandled = await this.checkSecondaryLanding( - gameCode, - pendingState.playerId, - pendingState.playerName, - finalPosition, - 0 // recursion depth - ); - - if (secondaryLandingHandled) { - // Joker card flow initiated, don't advance turn - return; - } - - // Check if landed on luck field (non-joker secondary landing) - const boardData = await this.getBoardData(gameCode); - if (boardData && boardData.fields) { - const landedField = boardData.fields.find((f: GameField) => f.position === finalPosition); - - if (landedField && landedField.type === 'luck') { - // Handle luck field normally - await this.handleSpecialFieldLanding( - gameCode, - pendingState.playerId, - pendingState.playerName, - landedField, - finalPosition, - 6, // Secondary landing uses dice = 6 - finalPosition // Use finalPosition as currentPosition for next card draw - ); - return; - } - } - - // No special field, advance turn - await this.advanceTurn(gameCode); - } - - /** - * Process luck card consequence with multi-turn support - */ - private async processLuckCard( - gameCode: string, - playerId: string, - playerName: string, - consequence: { type: number; value?: number }, - currentPosition: number - ): Promise { - const gameRoomName = `game_${gameCode}`; - let newPosition = currentPosition; - let shouldAdvanceTurn = true; - const consequenceValue = consequence.value || 1; - - // ConsequenceType enum: 0=MOVE_FORWARD, 1=MOVE_BACKWARD, 2=LOSE_TURN, 3=EXTRA_TURN, 5=GO_TO_START - switch (consequence.type) { - case 0: // MOVE_FORWARD - newPosition = Math.min(currentPosition + consequenceValue, 100); - await this.updatePlayerPosition(gameCode, playerId, newPosition); - this.io.of('/game').to(gameRoomName).emit('game:luck-consequence', { - playerId, - playerName, - consequenceType: 'MOVE_FORWARD', - value: consequenceValue, - newPosition, - message: `${playerName} moves forward ${consequenceValue} steps to position ${newPosition}!`, - timestamp: new Date().toISOString() - }); - // Emit player-arrived so frontend visualizes the movement - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId, - playerName, - position: newPosition, - fieldType: 'luck', - timestamp: new Date().toISOString() - }); - break; - - case 1: // MOVE_BACKWARD - newPosition = Math.max(1, currentPosition - consequenceValue); - await this.updatePlayerPosition(gameCode, playerId, newPosition); - this.io.of('/game').to(gameRoomName).emit('game:luck-consequence', { - playerId, - playerName, - consequenceType: 'MOVE_BACKWARD', - value: consequenceValue, - newPosition, - message: `${playerName} moves backward ${consequenceValue} steps to position ${newPosition}!`, - timestamp: new Date().toISOString() - }); - // Emit player-arrived so frontend visualizes the movement - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId, - playerName, - position: newPosition, - fieldType: 'luck', - timestamp: new Date().toISOString() - }); - break; - - case 2: // LOSE_TURN - // Store turns to lose in Redis - await this.setPlayerTurnsToLose(gameCode, playerId, consequenceValue); - - // Emit turn-lost event - this.io.of('/game').to(gameRoomName).emit('game:turn-lost', { - playerId, - playerName, - turnsToLose: consequenceValue, - message: `${playerName} will lose ${consequenceValue} turn(s)!`, - timestamp: new Date().toISOString() - }); - - this.io.of('/game').to(gameRoomName).emit('game:luck-consequence', { - playerId, - playerName, - consequenceType: 'LOSE_TURN', - value: consequenceValue, - turnsToLose: consequenceValue, - message: `${playerName} will lose ${consequenceValue} turn(s)!`, - timestamp: new Date().toISOString() - }); - shouldAdvanceTurn = true; // Skip to next player immediately - break; - - case 3: // EXTRA_TURN - // Store extra turns in Redis - await this.setPlayerExtraTurns(gameCode, playerId, consequenceValue); - this.io.of('/game').to(gameRoomName).emit('game:luck-consequence', { - playerId, - playerName, - consequenceType: 'EXTRA_TURN', - value: consequenceValue, - extraTurns: consequenceValue, - message: `${playerName} gets ${consequenceValue} extra turn(s)!`, - timestamp: new Date().toISOString() - }); - shouldAdvanceTurn = true; // Let advanceTurn() handle extra turns - break; - - case 5: // GO_TO_START - newPosition = 1; - await this.updatePlayerPosition(gameCode, playerId, newPosition); - this.io.of('/game').to(gameRoomName).emit('game:luck-consequence', { - playerId, - playerName, - consequenceType: 'GO_TO_START', - value: consequenceValue, - newPosition: 1, - message: `${playerName} goes back to START!`, - timestamp: new Date().toISOString() - }); - break; - } - - // Check for win condition (position 100) - if (newPosition >= 100) { - await this.endGame(gameCode, playerId, playerName); - return; - } - - // Advance turn if needed - if (shouldAdvanceTurn) { - await this.advanceTurn(gameCode); - } - } - - // ============================================ - // JOKER CARD POSITION GUESSING - // ============================================ - - /** - * Request position guess from player AFTER gamemaster decision (for jokers) - */ - private async requestJokerPositionGuess( - gameCode: string, - playerId: string, - playerName: string, - pendingState: PendingDecisionState - ): Promise { - const gameRoomName = `game_${gameCode}`; - const playerRoomName = `game_${gameCode}:${playerName}`; - - // Calculate stepping info with dice = 6, using LANDED field position - const landedFieldPosition = pendingState.field.position; - const actualPosition = this.boardGenerationService.calculatePatternBasedMovement( - landedFieldPosition, - pendingState.field.stepValue || 0, - 6 // Joker cards always use dice value of 6 - ); - - // Calculate the ACTUAL pattern modifier based on LANDED field position - const stepValue = pendingState.field.stepValue || 0; - const positiveField = stepValue > 0; - const actualPatternModifier = this.boardGenerationService.getPatternModifier(landedFieldPosition, positiveField); - - // Update pending state - const decisionKey = `pending_decision:${gameCode}:${pendingState.playerId}`; - await this.redisService.setWithExpiry(decisionKey, JSON.stringify(pendingState), 30); - - // Start timeout for joker position guess (30 seconds) - setTimeout(() => { - this.handleJokerPositionGuessTimeout(gameCode, playerId, playerName, pendingState); - }, 30000); - - // Notify player to guess - send the ACTUAL pattern modifier and LANDED field position - this.io.of('/game').to(playerRoomName).emit('game:joker-position-guess-request', { - message: 'Guess your final position after joker!', - currentPosition: landedFieldPosition, - diceRoll: 6, - fieldStepValue: pendingState.field.stepValue || 0, - patternModifier: actualPatternModifier, - timeLimit: 30, - timestamp: new Date().toISOString() - }); - - // Notify others - this.io.of('/game').to(gameRoomName).emit('game:player-guessing', { - playerId, - playerName, - message: `${playerName} is guessing their position after joker...`, - timestamp: new Date().toISOString() - }); - - logOther(`Joker position guess requested from ${playerName}`, { gameCode }); - } - - /** - * Handle joker position guess timeout (player didn't guess in time) - */ - private async handleJokerPositionGuessTimeout( - gameCode: string, - playerId: string, - playerName: string, - pendingState: PendingDecisionState - ): Promise { - try { - // Check if pending state still exists (player might have already guessed) - const decisionKey = `pending_decision:${gameCode}:${playerId}`; - const stateJson = await this.redisService.get(decisionKey); - if (!stateJson) { - // Already processed, nothing to do - return; - } - - // Clear from Redis - await this.clearPendingDecision(gameCode, playerId); - - const gameRoomName = `game_${gameCode}`; - - // Broadcast timeout to all players - this.io.of('/game').to(gameRoomName).emit('game:guess-timeout', { - playerId, - playerName, - message: `⏰ ${playerName} didn't guess in time after joker!`, - timestamp: new Date().toISOString() - }); - - // Default behavior on timeout: no movement (player stays at current position) - this.io.of('/game').to(gameRoomName).emit('game:joker-complete', { - playerId, - playerName, - guessedPosition: null, - actualPosition: pendingState.currentPosition, - finalPosition: pendingState.currentPosition, - guessCorrect: false, - penaltyApplied: false, - moved: false, - calculation: { - startPosition: pendingState.field.position, - diceRoll: 6, - stepValue: pendingState.field.stepValue || 0, - patternModifier: this.boardGenerationService.getPatternModifier(pendingState.field.position, (pendingState.field.stepValue || 0) > 0), - calculatedPosition: pendingState.currentPosition, - penalty: 0 - }, - message: `${playerName} timed out on joker guess (no movement)`, - timestamp: new Date().toISOString() - }); - - // Advance turn - await this.advanceTurn(gameCode); - - } catch (error) { - logError('Error handling joker position guess timeout', error as Error); - // Ensure turn advances even on error - await this.advanceTurn(gameCode); - } - } - - /** - * Handle joker position guess submission - */ - private async handleJokerPositionGuess(socket: AuthenticatedSocket, data: { - gameCode: string; - guessedPosition: number; - }): Promise { - try { - const { gameCode, guessedPosition } = data; - const playerId = socket.userId || socket.playerName; - const playerName = socket.playerName; - - if (!playerId || !playerName) { - socket.emit('error', { message: 'Player identification failed' }); - return; - } - - // Get pending decision state - try with playerId as key - let decisionKey = `pending_decision:${gameCode}:${playerId}`; - let stateJson = await this.redisService.get(decisionKey); - - if (!stateJson) { - socket.emit('error', { message: 'No pending joker guess found' }); - return; - } - - // Clear from Redis immediately to prevent timeout handler from processing - await this.clearPendingDecision(gameCode, playerId); - - const pendingState: PendingDecisionState = JSON.parse(stateJson); - pendingState.guessedPosition = guessedPosition; - - // Broadcast the guess - const gameRoomName = `game_${gameCode}`; - this.io.of('/game').to(gameRoomName).emit('game:position-guess-broadcast', { - playerId, - playerName, - guessedPosition, - message: `${playerName} guessed position ${guessedPosition}`, - timestamp: new Date().toISOString() - }); - - // Calculate actual position using BoardGenerationService - const actualPosition = this.boardGenerationService.calculatePatternBasedMovement( - pendingState.currentPosition, - pendingState.field.stepValue || 0, - 6 // Joker always uses dice = 6 - ); - - let finalPosition = actualPosition; - let guessCorrect = false; - let penaltyApplied = false; - - // Check guess - if (guessedPosition === actualPosition) { - guessCorrect = true; - } else { - finalPosition = Math.max(1, actualPosition - 2); - penaltyApplied = true; - } - - // Apply movement based on field type and gamemaster decision - const shouldMove = (pendingState.field.type === 'positive' && pendingState.gamemasterApproved) || - (pendingState.field.type === 'negative' && !pendingState.gamemasterApproved); - - if (shouldMove) { - await this.updatePlayerPosition(gameCode, playerId, finalPosition); - - // Emit player-arrived event - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId, - playerName, - position: finalPosition, - fieldType: 'normal', - timestamp: new Date().toISOString() - }); - } - - // Calculate the actual pattern modifier used - const stepValue = pendingState.field.stepValue || 0; - const positiveField = stepValue > 0; - const actualPatternModifier = this.boardGenerationService.getPatternModifier(pendingState.currentPosition, positiveField); - - // Broadcast joker complete - this.io.of('/game').to(gameRoomName).emit('game:joker-complete', { - playerId, - playerName, - guessedPosition, - actualPosition: actualPosition, - finalPosition: shouldMove ? finalPosition : pendingState.currentPosition, - guessCorrect, - penaltyApplied, - moved: shouldMove, - calculation: { - startPosition: pendingState.field.position, - diceRoll: 6, - stepValue: pendingState.field.stepValue || 0, - patternModifier: actualPatternModifier, - calculatedPosition: actualPosition, - penalty: penaltyApplied ? -2 : 0 - }, - message: shouldMove - ? (guessCorrect - ? `✅ ${playerName} guessed correctly! Moved to ${finalPosition}` - : `❌ ${playerName} guessed wrong! Penalty applied. Final position: ${finalPosition}`) - : `${playerName} did not move (gamemaster decision)`, - timestamp: new Date().toISOString() - }); - - // Clean up - await this.redisService.del(decisionKey); - - // Check for win condition - const movedPosition = shouldMove ? finalPosition : pendingState.currentPosition; - if (movedPosition >= 100) { - await this.endGame(gameCode, playerId, playerName); - return; - } - - // Check if landed on special field (secondary landing) if moved - if (shouldMove) { - // For positive/negative fields, this will draw joker card - // For luck fields, this will return false and we'll handle them below - const secondaryLandingHandled = await this.checkSecondaryLanding( - gameCode, - playerId, - playerName, - finalPosition, - 0 // recursion depth - ); - - if (secondaryLandingHandled) { - // Joker card flow initiated, don't advance turn - return; - } - - // Check if landed on luck field (non-joker secondary landing) - const boardData = await this.getBoardData(gameCode); - if (boardData && boardData.fields) { - const landedField = boardData.fields.find((f: GameField) => f.position === finalPosition); - - if (landedField && landedField.type === 'luck') { - // Handle luck field normally - await this.handleSpecialFieldLanding( - gameCode, - playerId, - playerName, - landedField, - finalPosition, - 6, // Secondary landing uses dice = 6 - finalPosition // Use finalPosition as currentPosition for next card draw - ); - return; - } - } - } - - // No special field or didn't move, advance turn - await this.advanceTurn(gameCode); - - } catch (error) { - logError('Error handling joker position guess', error as Error); - socket.emit('error', { message: 'Failed to process joker guess' }); - } - } - - private async advanceTurn(gameCode: string): Promise { - try { - const gameState = await this.getCurrentGameState(gameCode); - if (!gameState) return; - - const currentTurnIndex = gameState.currentTurn || 0; - const currentPlayerId = gameState.turnSequence[currentTurnIndex]; - - // ========================================== - // PHASE 1: Check if current player has extra turns - // ========================================== - const extraTurns = await this.getPlayerExtraTurns(gameCode, currentPlayerId); - if (extraTurns > 0) { - // Current player gets another turn - await this.decrementPlayerExtraTurns(gameCode, currentPlayerId); - - const playerPositions = await this.getPlayerPositions(gameCode); - const currentPlayer = playerPositions.find(p => p.playerId === currentPlayerId); - const currentPlayerName = currentPlayer?.playerName || currentPlayerId; - - // Notify about extra turn - const gameRoomName = `game_${gameCode}`; - this.io.of('/game').to(gameRoomName).emit('game:extra-turn-remaining', { - playerId: currentPlayerId, - playerName: currentPlayerName, - remainingExtraTurns: extraTurns - 1, - message: `${currentPlayerName} has ${extraTurns - 1} extra turn(s) remaining!`, - timestamp: new Date().toISOString() - }); - - // Notify player they can roll again - const playerRoomName = `game_${gameCode}:${currentPlayerName}`; - this.io.of('/game').to(playerRoomName).emit('game:your-turn', { - message: 'Extra turn! Roll the dice again!', - canRoll: true, - isExtraTurn: true, - timestamp: new Date().toISOString() - }); - - logOther(`Player ${currentPlayerName} using extra turn`, { - gameCode, - remainingExtraTurns: extraTurns - 1 - }); - - return; // Same player continues, don't advance - } - - // ========================================== - // PHASE 2: Find next player, skipping those with lost turns - // ========================================== - let nextTurnIndex = (currentTurnIndex + 1) % gameState.turnSequence.length; - const skippedPlayers: Array<{ - playerId: string; - playerName: string; - remainingTurnsToLose: number; - }> = []; - let loopGuard = 0; - const maxLoops = gameState.turnSequence.length; - - while (loopGuard < maxLoops) { - const candidatePlayerId = gameState.turnSequence[nextTurnIndex]; - const turnsToLose = await this.getPlayerTurnsToLose(gameCode, candidatePlayerId); - - if (turnsToLose > 0) { - // This player loses their turn - await this.decrementPlayerTurnsToLose(gameCode, candidatePlayerId); - - const playerPositions = await this.getPlayerPositions(gameCode); - const skippedPlayer = playerPositions.find(p => p.playerId === candidatePlayerId); - const skippedPlayerName = skippedPlayer?.playerName || candidatePlayerId; - - skippedPlayers.push({ - playerId: candidatePlayerId, - playerName: skippedPlayerName, - remainingTurnsToLose: turnsToLose - 1 - }); - - logOther(`Player ${skippedPlayerName} turn skipped`, { - gameCode, - remainingTurnsToLose: turnsToLose - 1 - }); - - // Move to next player in sequence - nextTurnIndex = (nextTurnIndex + 1) % gameState.turnSequence.length; - loopGuard++; - } else { - // Found a player who can play - break; - } - } - - // ========================================== - // PHASE 3: Update game state with valid next player - // ========================================== - const nextPlayerId = gameState.turnSequence[nextTurnIndex]; - gameState.currentTurn = nextTurnIndex; - gameState.currentPlayer = nextPlayerId; - - // Save updated state - const gamePlayKey = `gameplay:${gameCode}`; - await this.redisService.set(gamePlayKey, JSON.stringify(gameState)); - - // Create snapshot every 5 turns - const newTurnNumber = nextTurnIndex + 1; - if (this.gameSnapshotService.shouldCreateSnapshot(newTurnNumber)) { - await this.gameSnapshotService.createSnapshot( - gameCode, - newTurnNumber, - SnapshotTrigger.TURN_INTERVAL, - `Automatic snapshot at turn ${newTurnNumber}` - ).catch(err => { - logError('Failed to create turn snapshot', err as Error); - logOther('Turn snapshot context', { gameCode, turnNumber: newTurnNumber }); - }); - } - - // Get next player info - const playerPositions = await this.getPlayerPositions(gameCode); - const nextPlayer = playerPositions.find(p => p.playerId === nextPlayerId); - const nextPlayerName = nextPlayer?.playerName || nextPlayerId; - - // ========================================== - // PHASE 4: Notify about skipped players (if any) - // ========================================== - const gameRoomName = `game_${gameCode}`; - if (skippedPlayers.length > 0) { - this.io.of('/game').to(gameRoomName).emit('game:players-skipped', { - skippedPlayers, - message: `${skippedPlayers.map(p => p.playerName).join(', ')} skipped due to lost turn(s)`, - timestamp: new Date().toISOString() - }); - } - - // ========================================== - // PHASE 5: Notify about turn change - // ========================================== - this.io.of('/game').to(gameRoomName).emit('game:turn-changed', { - currentPlayer: nextPlayerId, - currentPlayerName: nextPlayerName, - turnNumber: nextTurnIndex + 1, - message: `It's ${nextPlayerName}'s turn!`, - timestamp: new Date().toISOString() - }); - - // Send special notification to the current player - const playerRoomName = `game_${gameCode}:${nextPlayerName}`; - this.io.of('/game').to(playerRoomName).emit('game:your-turn', { - message: 'It\'s your turn! Roll the dice!', - canRoll: true, - timestamp: new Date().toISOString() - }); - - logOther(`Turn advanced in game ${gameCode}`, { - previousTurn: currentTurnIndex, - newTurn: nextTurnIndex, - nextPlayer: nextPlayerName, - skippedCount: skippedPlayers.length - }); - - } catch (error) { - logError('Error advancing turn', error as Error); - } - } - - private async endGame(gameCode: string, winnerId: string, winnerName: string): Promise { - try { - // Update game state to finished - const gameState = await this.getCurrentGameState(gameCode); - if (gameState) { - gameState.gamePhase = 'finished'; - gameState.winner = winnerId; - gameState.winnerName = winnerName; - gameState.endedAt = new Date().toISOString(); - - const gamePlayKey = `gameplay:${gameCode}`; - await this.redisService.set(gamePlayKey, JSON.stringify(gameState)); - } - - // Update database game record - const game = await this.gameRepository.findByGameCode(gameCode); - if (game) { - await this.gameRepository.update(game.id, { - state: GameState.FINISHED, - winnerId: winnerId, - enddate: new Date() - }); - } - - // Broadcast game end to all players - const gameRoomName = `game_${gameCode}`; - this.io.of('/game').to(gameRoomName).emit('game:ended', { - winner: winnerId, - winnerName: winnerName, - message: `🎉 ${winnerName} won the game! Congratulations!`, - finalPositions: await this.getPlayerPositions(gameCode), - timestamp: new Date().toISOString() - }); - - // Clean up all game-related Redis data and socket connections - await this.cleanupGameData(gameCode, game?.id); - - logOther(`Game ${gameCode} ended and cleaned up`, { - winner: winnerName, - winnerId, - gameId: game?.id - }); - - } catch (error) { - logError('Error ending game', error as Error); - } - } - - private async checkAllPlayersReady(gameCode: string): Promise { - try { - // Get connected players from Redis - const connectedPlayers = await this.getConnectedPlayers(gameCode); - const readyPlayers = await this.getReadyPlayers(gameCode); - - // All connected players must be ready for the game to start - return readyPlayers.length === connectedPlayers.length && connectedPlayers.length > 1; - } catch (error) { - logError('Error checking if all players are ready', error as Error); - return false; - } - } - - /** - * Apply card consequence (movement, turn effects) to a player - */ - private async applyCardConsequence(gameCode: string, playerId: string, playerName: string, consequence: number, recursionDepth: number = 0): Promise { - try { - // Safety check: prevent infinite loops - const MAX_RECURSION_DEPTH = 5; - if (recursionDepth >= MAX_RECURSION_DEPTH) { - logWarning(`Max recursion depth reached for consequence application in game ${gameCode}`); - await this.advanceTurn(gameCode); - return; - } - - // ConsequenceType enum: - // 0: MOVE_FORWARD, 1: MOVE_BACKWARD, 2: LOSE_TURN, 3: EXTRA_TURN, 5: GO_TO_START - - const positions = await this.getPlayerPositions(gameCode); - const currentPlayer = positions.find(p => p.playerId === playerId); - - if (!currentPlayer) { - logWarning(`Player ${playerId} not found when applying consequence`); - return; - } - - const gameRoomName = `game_${gameCode}`; - let newPosition = currentPlayer.boardPosition; - let positionChanged = false; - - switch (consequence) { - case 0: // MOVE_FORWARD - newPosition = Math.min(currentPlayer.boardPosition + 3, 101); // Move forward 3 steps - positionChanged = newPosition !== currentPlayer.boardPosition; - await this.updatePlayerPosition(gameCode, playerId, newPosition); - - // Emit player-arrived event - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId, - playerName, - position: newPosition, - fieldType: 'normal', - timestamp: new Date().toISOString() - }); - - this.io.of('/game').to(gameRoomName).emit('game:consequence-applied', { - playerName, - playerId, - type: 'move_forward', - oldPosition: currentPlayer.boardPosition, - newPosition, - timestamp: new Date().toISOString() - }); - break; - - case 1: // MOVE_BACKWARD - newPosition = Math.max(currentPlayer.boardPosition - 3, 0); // Move backward 3 steps - positionChanged = newPosition !== currentPlayer.boardPosition; - await this.updatePlayerPosition(gameCode, playerId, newPosition); - - // Emit player-arrived event - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId, - playerName, - position: newPosition, - fieldType: 'normal', - timestamp: new Date().toISOString() - }); - - this.io.of('/game').to(gameRoomName).emit('game:consequence-applied', { - playerName, - playerId, - type: 'move_backward', - oldPosition: currentPlayer.boardPosition, - newPosition, - timestamp: new Date().toISOString() - }); - break; - - case 2: // LOSE_TURN - // Immediately advance to next player - await this.advanceTurn(gameCode); - - this.io.of('/game').to(gameRoomName).emit('game:consequence-applied', { - playerName, - playerId, - type: 'lose_turn', - timestamp: new Date().toISOString() - }); - return; // Early return, turn already advanced - break; - - case 3: // EXTRA_TURN - // Don't advance turn, player gets to go again - const playerRoomName = `game_${gameCode}:${playerName}`; - this.io.of('/game').to(playerRoomName).emit('game:extra-turn', { - message: 'You get an extra turn!', - canRoll: true, - timestamp: new Date().toISOString() - }); - - this.io.of('/game').to(gameRoomName).emit('game:consequence-applied', { - playerName, - playerId, - type: 'extra_turn', - timestamp: new Date().toISOString() - }); - return; // Early return, no turn advance needed - break; - - case 5: // GO_TO_START - newPosition = 0; - positionChanged = newPosition !== currentPlayer.boardPosition; - await this.updatePlayerPosition(gameCode, playerId, newPosition); - - // Emit player-arrived event - this.io.of('/game').to(gameRoomName).emit('game:player-arrived', { - playerId, - playerName, - position: newPosition, - fieldType: 'normal', - timestamp: new Date().toISOString() - }); - - this.io.of('/game').to(gameRoomName).emit('game:consequence-applied', { - playerName, - playerId, - type: 'go_to_start', - oldPosition: currentPlayer.boardPosition, - newPosition, - timestamp: new Date().toISOString() - }); - break; - - default: - logWarning(`Unknown consequence type: ${consequence}`); - } - - // Check for secondary special field landing (only if position changed) - if (positionChanged && newPosition > 0 && newPosition < 101) { - const secondaryLanding = await this.checkSecondaryLanding(gameCode, playerId, playerName, newPosition, recursionDepth); - if (secondaryLanding) { - // Secondary landing detected, joker flow initiated, don't advance turn yet - return; - } - } - - // If no secondary landing, advance to next player - await this.advanceTurn(gameCode); - - } catch (error) { - logError('Error applying card consequence', error as Error); - } - } - - /** - * Check if player landed on special field as result of consequence - * Returns true if joker card flow was initiated, false otherwise - */ - private async checkSecondaryLanding(gameCode: string, playerId: string, playerName: string, position: number, recursionDepth: number): Promise { - try { - logOther(`🔍 Checking secondary landing for ${playerName} at position ${position}`, { - gameCode, - playerId, - playerName, - position, - recursionDepth - }); - - const boardData = await this.getBoardData(gameCode); - if (!boardData || !boardData.fields) { - logOther('❌ No board data found for secondary landing check'); - return false; - } - - const landedField = boardData.fields.find((f: GameField) => f.position === position); - - // Check if field is special (positive or negative only for joker) - if (!landedField || !this.isSpecialField(landedField)) { - logOther(`❌ Position ${position} is not a special field`, { - hasField: !!landedField, - fieldType: landedField?.type - }); - return false; - } - - // Only positive and negative fields trigger joker on secondary landing - if (landedField.type !== 'positive' && landedField.type !== 'negative') { - logOther(`❌ Field type ${landedField.type} does not trigger joker (only positive/negative do)`); - return false; - } - - logOther(`✅ Secondary landing detected on ${landedField.type} field at position ${position} - Drawing joker card!`, { - fieldType: landedField.type, - position - }); - - const gameRoomName = `game_${gameCode}`; - - // Notify players about secondary landing - this.io.of('/game').to(gameRoomName).emit('game:secondary-landing', { - playerName, - playerId, - position, - fieldType: landedField.type, - message: `${playerName} landed on a ${landedField.type} field! Drawing joker card...`, - timestamp: new Date().toISOString() - }); - - // Wait 2 seconds for animation - await new Promise(resolve => setTimeout(resolve, 2000)); - - // Draw joker card - await this.handleJokerCardDrawing(gameCode, playerId, playerName, landedField, position, recursionDepth); - - return true; // Joker flow initiated - - } catch (error) { - logError('Error checking secondary landing', error as Error); - return false; - } - } - - /** - * Handle joker card drawing and gamemaster decision flow - */ - private async handleJokerCardDrawing(gameCode: string, playerId: string, playerName: string, field: GameField, position: number, recursionDepth: number): Promise { - try { - const gameRoomName = `game_${gameCode}`; - - // Get game data - const gameData = await this.gameRepository.findByGameCode(gameCode); - if (!gameData) { - logError('Game not found when drawing joker card'); - await this.advanceTurn(gameCode); - return; - } - - // Draw joker card - const jokerResult = this.cardDrawingService.drawJokerCard(gameData, playerId); - - if (!jokerResult.success || !jokerResult.card) { - // No more joker cards available - this.io.of('/game').to(gameRoomName).emit('game:joker-error', { - playerName, - playerId, - error: jokerResult.error || 'No joker cards available', - timestamp: new Date().toISOString() - }); - await this.advanceTurn(gameCode); - return; - } - - const jokerCard = jokerResult.card; - - // Emit joker-activated event - this.io.of('/game').to(gameRoomName).emit('game:joker-activated', { - playerName, - playerId, - message: `${playerName} activated a Joker card!`, - timestamp: new Date().toISOString() - }); - - // Broadcast joker drawn to all players - this.io.of('/game').to(gameRoomName).emit('game:joker-drawn', { - playerName, - playerId, - jokerCard: { - question: jokerCard.question, - consequence: jokerCard.consequence - }, - waitingForGamemaster: true, - timestamp: new Date().toISOString() - }); - - // Request gamemaster decision - const requestId = this.gamemasterService.requestGamemasterDecision( - gameCode, - playerId, - playerName, - jokerCard, - (reqId: string) => this.handleGamemasterDecisionTimeout(gameCode, reqId, playerId, playerName, recursionDepth) - ); - - // Store pending decision in Redis - await this.storePendingDecision(gameCode, requestId, { - playerId, - playerName, - card: jokerCard, - field: field, - dice: 6, // Joker cards always use dice value of 6 - currentPosition: position, // Current position is where they landed - drawnAt: Date.now(), - recursionDepth - }); - - // Find gamemaster - const gamemaster = gameData.createdby; - const gamemasterUser = await this.userRepository.findById(gamemaster); - const gamemasterName = gamemasterUser?.username || 'Gamemaster'; - - // Send decision request to gamemaster only - const gamemasterRoomName = `game_${gameCode}:${gamemasterName}`; - this.io.of('/game').to(gamemasterRoomName).emit('game:gamemaster-decision-request', { - requestId, - playerName, - playerId, - jokerCard: { - question: jokerCard.question, - consequence: jokerCard.consequence - }, - timeLimit: 120, // 120 seconds - recursionDepth, // Send to frontend for context - timestamp: new Date().toISOString() - }); - - logOther(`Joker card drawn for ${playerName}, waiting for gamemaster decision`, { - gameCode, - requestId, - recursionDepth - }); - - } catch (error) { - logError('Error handling joker card drawing', error as Error); - await this.advanceTurn(gameCode); - } - } - - /** - * Handle gamemaster decision timeout (120 seconds elapsed) - */ - private async handleGamemasterDecisionTimeout(gameCode: string, requestId: string, playerId: string, playerName: string, recursionDepth: number): Promise { - try { - // Clear from Redis - await this.clearPendingDecision(gameCode, requestId); - - const gameRoomName = `game_${gameCode}`; - - // Broadcast timeout to all players - this.io.of('/game').to(gameRoomName).emit('game:gamemaster-timeout', { - playerName, - playerId, - message: '🎭 Gamemaster didn\'t respond in time. No effect applied.', - timestamp: new Date().toISOString() - }); - - // Process timeout through GamemasterService - const result = this.gamemasterService.processTimeoutDecision(requestId); - - if (result) { - // Broadcast final result - this.io.of('/game').to(gameRoomName).emit('game:gamemaster-decision-result', { - playerName, - playerId, - gamemasterName: 'System (timeout)', - decision: 'timeout', - consequence: result.consequence, - description: result.description, - timestamp: new Date().toISOString() - }); - } - - // Advance turn (no consequence applied on timeout) - await this.advanceTurn(gameCode); - - } catch (error) { - logError('Error handling gamemaster decision timeout', error as Error); - await this.advanceTurn(gameCode); - } - } - - // Public method to broadcast game state updates from external services - public async broadcastGameStateUpdate(gameCode: string, gameState: any): Promise { - const roomName = `game_${gameCode}`; - this.io.of('/game').to(roomName).emit('game:state-update', gameState); - } - - // Public method to broadcast game events from external services - public async broadcastGameEvent(gameCode: string, event: string, data: any): Promise { - const roomName = `game_${gameCode}`; - this.io.of('/game').to(roomName).emit(event, data); - } - - // Public method to send events to a specific player - public async sendToPlayer(gameCode: string, playerName: string, event: string, data: any): Promise { - const playerRoomName = `game_${gameCode}:${playerName}`; - this.io.of('/game').to(playerRoomName).emit(event, data); - logOther(`Sent event '${event}' to player ${playerName} in game ${gameCode}`); - } - - // Public method to send events to multiple specific players - public async sendToPlayers(gameCode: string, playerNames: string[], event: string, data: any): Promise { - for (const playerName of playerNames) { - await this.sendToPlayer(gameCode, playerName, event, data); - } - } - - // Public method to get connected players in a game - public async getConnectedPlayers(gameCode: string): Promise { - const key = `game_connections:${gameCode}`; - return await this.redisService.setMembers(key); - } - - // Public method to get ready players in a game - public async getReadyPlayers(gameCode: string): Promise { - const key = `game_ready:${gameCode}`; - return await this.redisService.setMembers(key); - } - - // Public method to broadcast game start with board data and player order - public async broadcastGameStart(gameCode: string, boardData: any, playerOrder: string[], gameData: any): Promise { - try { - const roomName = `game_${gameCode}`; - - // Create comprehensive game start data - const gameStartData = { - gameCode, - gameId: gameData.id, - status: 'started', - boardData, - playerOrder, - currentPlayer: playerOrder[0], // First player starts - currentTurn: 0, - maxPlayers: gameData.maxplayers, - players: gameData.players, - startedAt: new Date().toISOString(), - message: 'Game has started! Good luck to all players!' - }; - - // Broadcast to all players in the game - this.io.of('/game').to(roomName).emit('game:start', gameStartData); - - // Note: Game state is already stored in gameplay:{gameCode} - no need for duplicate game_state: entry - - // Initialize player positions (all start at 0) - const playerPositions = await this.getPlayerPositions(gameCode); - - // Notify the first player that it's their turn - const firstPlayerName = playerPositions.find(p => p.playerId === playerOrder[0])?.playerName || playerOrder[0]; - const firstPlayerRoomName = `game_${gameCode}:${firstPlayerName}`; - - // Send turn-changed event for initial turn with player name - this.io.of('/game').to(roomName).emit('game:turn-changed', { - currentPlayer: playerOrder[0], - currentPlayerName: firstPlayerName, - turnNumber: 1, - message: `It's ${firstPlayerName}'s turn!`, - timestamp: new Date().toISOString() - }); - - this.io.of('/game').to(firstPlayerRoomName).emit('game:your-turn', { - message: 'You go first! Roll the dice to start the game!', - canRoll: true, - timestamp: new Date().toISOString() - }); - - logOther(`Game start broadcasted to all players in room: ${roomName}`, { - gameCode, - gameId: gameData.id, - playerCount: gameData.players.length, - boardFields: boardData?.fields?.length || 0, - firstPlayer: playerOrder[0], - firstPlayerName - }); - - } catch (error) { - logError('Error broadcasting game start', error as Error); - throw error; // Re-throw so the caller knows the broadcast failed - } - } - - /** - * Comprehensive cleanup of all game-related data when game ends - * @param gameCode Game code - * @param gameId Game ID from database - */ - private async cleanupGameData(gameCode: string, gameId?: string): Promise { - try { - logOther(`Starting cleanup for game ${gameCode}`, { gameId }); - - // 1. Force disconnect all players from game rooms - const gameRoomName = `game_${gameCode}`; - const gameRoom = this.io.of('/game').adapter.rooms.get(gameRoomName); - - if (gameRoom) { - // Get all socket IDs in the room - const socketIds = Array.from(gameRoom); - - for (const socketId of socketIds) { - const socket = this.io.of('/game').sockets.get(socketId); - if (socket) { - // Leave game rooms - await socket.leave(gameRoomName); - await socket.leave(`game_${gameCode}:${(socket as any).playerName}`); - - // Clear game-related socket data - (socket as any).gameCode = undefined; - (socket as any).playerName = undefined; - - // Notify player that game has ended - socket.emit('game:cleanup-complete', { - gameCode, - message: 'Game session has ended and been cleaned up', - timestamp: new Date().toISOString() - }); - } - } - } - - // 2. Clean up all Redis game data - const keysToClean = [ - `gameplay:${gameCode}`, // Game play state (contains everything) - `game_connections:${gameCode}`, // Connected players - `game_ready:${gameCode}`, // Ready players - `game_pending:${gameCode}`, // Pending players (for private games) - `game_room:${gameCode}` // Game room mapping - ]; - - // Clean up legacy keys if they exist - if (gameId) { - keysToClean.push(`game_board_${gameId}`); // Legacy board storage - keysToClean.push(`game_state:${gameCode}`); // Legacy game state - } - - // Clean up game-specific keys - for (const key of keysToClean) { - await this.redisService.del(key); - } - - // Clean up all pending card answers for this game - const connectedPlayers = await this.getConnectedPlayers(gameCode); - for (const playerId of connectedPlayers) { - await this.clearPendingCard(gameCode, playerId); - } - - // Clean up all pending gamemaster decisions - const pendingDecisionIds = await this.getAllPendingDecisionKeys(gameCode); - for (const requestId of pendingDecisionIds) { - await this.clearPendingDecision(gameCode, requestId); - // Also cancel in GamemasterService to clear timeouts - this.gamemasterService.cancelDecision(requestId); - } - - // Clean up turn tracking for all players - const gameState = await this.getCurrentGameState(gameCode); - if (gameState?.turnSequence) { - for (const playerId of gameState.turnSequence) { - await this.clearPlayerTurnData(gameCode, playerId); - } - } - - // Clean up additional game keys - const additionalKeys = [ - `game:${gameCode}` // Pre-game lobby data (uses gameCode not gameId) - ]; - - for (const key of additionalKeys) { - await this.redisService.del(key); - } - - logOther(`Game cleanup completed for ${gameCode}`, { - gameId, - keysCleanedCount: keysToClean.length + (gameId ? 3 : 0) - }); - - } catch (error) { - logError('Error during game cleanup', error as Error); - logOther('Game cleanup failed', { gameCode, gameId, errorMessage: error instanceof Error ? error.message : String(error) }); - } - } - - /** - * Public method to manually trigger game cleanup (for external services) - * @param gameCode Game code to clean up - * @param gameId Optional game ID - */ - public async triggerGameCleanup(gameCode: string, gameId?: string): Promise { - logOther(`Manual cleanup triggered for game ${gameCode}`, { gameId }); - await this.cleanupGameData(gameCode, gameId); - } - - /** - * Get board data for a game from Redis - * Board data is stored in gameplay:{gameCode} - */ - private async getBoardData(gameCode: string): Promise { - try { - // Get from gameplay (single source of truth) - const gameState = await this.getCurrentGameState(gameCode); - return gameState?.boardData || null; - - } catch (error) { - logError('Error getting board data', error as Error); - return null; - } - } - - /** - * Check if field is special (requires card drawing) - * @param field Game field to check - * @returns True if field is special - */ - private isSpecialField(field: GameField): boolean { - return field.type === 'positive' || field.type === 'negative' || field.type === 'luck'; - } - - /** - * Check if card is a luck card - * @param cardType Card type - * @returns True if luck card - */ - private isLuckCard(cardType?: number): boolean { - return cardType === 6; // Luck cards have type 6 - } - - /** - * Create snapshots for all active games (called on server shutdown) - * @returns Number of snapshots created - */ - public async snapshotAllActiveGames(): Promise { - try { - logOther('Creating snapshots for all active games before shutdown'); - - // Find all active games from database - const activeGames = await this.gameRepository.findActiveGames(); - let snapshotCount = 0; - - for (const game of activeGames) { - try { - // Get current game state from Redis - const gameState = await this.getCurrentGameState(game.gamecode); - if (!gameState) { - logOther(`Skipping game ${game.gamecode} - no Redis state found`); - continue; - } - - const turnNumber = (gameState.currentTurn || 0) + 1; - await this.gameSnapshotService.createSnapshot( - game.gamecode, - turnNumber, - SnapshotTrigger.SERVER_SHUTDOWN, - `Server shutdown snapshot` - ); - snapshotCount++; - logOther(`Created shutdown snapshot for game ${game.gamecode}`, { turnNumber }); - } catch (gameError) { - logError(`Failed to snapshot game ${game.gamecode}`, gameError as Error); - } - } - - logOther(`Completed shutdown snapshots`, { totalGames: activeGames.length, successfulSnapshots: snapshotCount }); - return snapshotCount; - } catch (error) { - logError('Error creating shutdown snapshots', error as Error); - return 0; - } - } - - /** - * Restore all active games from latest snapshots (called on server startup) - * @returns Number of games restored - */ - public async restoreAllActiveGames(): Promise { - try { - logOther('Attempting to restore active games from snapshots'); - - // Find all active games from database - const activeGames = await this.gameRepository.findActiveGames(); - let restoredCount = 0; - - for (const game of activeGames) { - try { - // Try to restore from latest snapshot - const restored = await this.gameSnapshotService.restoreFromSnapshot(game.gamecode); - if (restored) { - restoredCount++; - logOther(`Restored game ${game.gamecode} from snapshot`); - } else { - logOther(`No snapshot found for game ${game.gamecode}, skipping`); - } - } catch (gameError) { - logError(`Failed to restore game ${game.gamecode}`, gameError as Error); - } - } - - logOther(`Completed game restoration`, { totalGames: activeGames.length, restoredGames: restoredCount }); - return restoredCount; - } catch (error) { - logError('Error restoring games from snapshots', error as Error); - return 0; - } - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Services/GamemasterService.ts b/SerpentRace_Backend/src/Application/Services/GamemasterService.ts deleted file mode 100644 index 896ea45b..00000000 --- a/SerpentRace_Backend/src/Application/Services/GamemasterService.ts +++ /dev/null @@ -1,284 +0,0 @@ -import { GameAggregate, GameCard } from '../../Domain/Game/GameAggregate'; - -export interface GamemasterDecisionRequest { - gameId: string; - playerId: string; - playerName: string; - card: GameCard; - requestId: string; - timeoutId: NodeJS.Timeout; - startTime: Date; -} - -export enum GamemasterDecision { - APPROVE = 'approve', - REJECT = 'reject' -} - -export interface GamemasterDecisionResult { - decision: GamemasterDecision; - consequence: boolean; // true = apply consequence, false = don't apply - description: string; -} - -/** - * Service responsible for handling gamemaster decisions on joker cards - * Integrates with existing gamemaster role identification system - */ -export class GamemasterService { - private pendingDecisions: Map = new Map(); - private readonly DECISION_TIMEOUT_MS = 120000; // 2 minutes for gamemaster to decide - - /** - * Request gamemaster decision for a joker card - * @param gameId Game ID - * @param playerId Player ID who drew the joker card - * @param playerName Player name for display - * @param card The joker card that needs decision - * @param onTimeout Callback when gamemaster doesn't respond in time - * @returns Request ID for tracking this decision - */ - requestGamemasterDecision( - gameId: string, - playerId: string, - playerName: string, - card: GameCard, - onTimeout: (requestId: string) => void - ): string { - const requestId = `${gameId}:${playerId}:${Date.now()}`; - - // Clear any existing decision for this player - this.clearExistingDecision(gameId, playerId); - - // Set timeout for gamemaster decision - const timeoutId = setTimeout(() => { - onTimeout(requestId); - this.pendingDecisions.delete(requestId); - }, this.DECISION_TIMEOUT_MS); - - // Store pending decision - this.pendingDecisions.set(requestId, { - gameId, - playerId, - playerName, - card, - requestId, - timeoutId, - startTime: new Date() - }); - - return requestId; - } - - /** - * Process gamemaster's decision on a joker card - * @param requestId The request ID returned from requestGamemasterDecision - * @param decision The gamemaster's decision - * @returns Result with consequence application info - */ - processGamemasterDecision(requestId: string, decision: GamemasterDecision): GamemasterDecisionResult | null { - const pendingRequest = this.pendingDecisions.get(requestId); - - if (!pendingRequest) { - return null; // Request not found or already processed - } - - // Clear the timeout since decision was made - clearTimeout(pendingRequest.timeoutId); - this.pendingDecisions.delete(requestId); - - // Determine if consequence should be applied based on its nature and decision - const consequence = pendingRequest.card.consequence; - const isNegativeConsequence = this.isNegativeConsequence(consequence?.type); - - let applyConsequence: boolean; - if (isNegativeConsequence) { - // Negative consequences applied when gamemaster REJECTS - applyConsequence = decision === GamemasterDecision.REJECT; - } else { - // Positive consequences applied when gamemaster APPROVES - applyConsequence = decision === GamemasterDecision.APPROVE; - } - - return { - decision, - consequence: applyConsequence, - description: this.getDecisionDescription(decision, applyConsequence, pendingRequest.card, isNegativeConsequence) - }; - } - - /** - * Process automatic decision when gamemaster times out - * @param requestId The request ID that timed out - * @returns Result with default rejection applied - */ - processTimeoutDecision(requestId: string): GamemasterDecisionResult | null { - const pendingRequest = this.pendingDecisions.get(requestId); - - if (!pendingRequest) { - return null; - } - - this.pendingDecisions.delete(requestId); - - return { - decision: GamemasterDecision.REJECT, - consequence: false, - description: `🎭 Gamemaster didn't respond in time. No effect applied.` - }; - } - - /** - * Get pending decision by request ID - * @param requestId The request ID - * @returns Pending decision request or undefined - */ - getPendingDecision(requestId: string): GamemasterDecisionRequest | undefined { - return this.pendingDecisions.get(requestId); - } - - /** - * Get all pending decisions for a game - * @param gameId Game ID - * @returns Array of pending decisions for the game - */ - getPendingDecisionsForGame(gameId: string): GamemasterDecisionRequest[] { - return Array.from(this.pendingDecisions.values()) - .filter(request => request.gameId === gameId); - } - - /** - * Check if gamemaster is the correct user for a game - * @param game Game aggregate - * @param userId User ID to check - * @returns True if user is the gamemaster - */ - isGamemaster(game: GameAggregate, userId: string): boolean { - return game.createdby === userId; - } - - /** - * Cancel a pending decision (e.g., if player leaves game) - * @param requestId Request ID to cancel - * @returns True if decision was cancelled - */ - cancelDecision(requestId: string): boolean { - const pendingRequest = this.pendingDecisions.get(requestId); - - if (!pendingRequest) { - return false; - } - - clearTimeout(pendingRequest.timeoutId); - this.pendingDecisions.delete(requestId); - return true; - } - - /** - * Clear any existing pending decision for a player in a game - * @param gameId Game ID - * @param playerId Player ID - */ - private clearExistingDecision(gameId: string, playerId: string): void { - for (const [requestId, request] of this.pendingDecisions.entries()) { - if (request.gameId === gameId && request.playerId === playerId) { - clearTimeout(request.timeoutId); - this.pendingDecisions.delete(requestId); - break; - } - } - } - - /** - * Get human-readable description for joker card effect - * @param card The joker card - * @param applied Whether the effect will be applied - * @returns Description string - */ - private getJokerDescription(card: GameCard, applied: boolean): string { - if (!applied) { - return 'No effect applied.'; - } - - if (!card.consequence) { - return 'Apply joker effect!'; - } - - switch (card.consequence.type) { - case 0: // MOVE_FORWARD - return `Move forward ${card.consequence.value || 1} steps!`; - case 1: // MOVE_BACKWARD - return `Move backward ${card.consequence.value || 1} steps!`; - case 2: // LOSE_TURN - return 'Lose your next turn!'; - case 3: // EXTRA_TURN - return 'Get an extra turn!'; - case 5: // GO_TO_START - return 'Go back to start!'; - default: - return 'Apply joker effect!'; - } - } - - /** - * Get remaining time for a pending decision - * @param requestId Request ID - * @returns Remaining time in seconds, or -1 if not found - */ - getRemainingTime(requestId: string): number { - const pending = this.pendingDecisions.get(requestId); - if (!pending) { - return -1; - } - - const elapsed = Date.now() - pending.startTime.getTime(); - const remaining = Math.max(0, this.DECISION_TIMEOUT_MS - elapsed); - return Math.ceil(remaining / 1000); // Return in seconds - } - - /** - * Get count of pending decisions for a game - * @param gameId Game ID - * @returns Number of pending decisions - */ - getPendingDecisionCount(gameId: string): number { - return Array.from(this.pendingDecisions.values()) - .filter(request => request.gameId === gameId).length; - } - - /** - * Determine if a consequence type is negative - * @param consequenceType The consequence type to check - * @returns True if consequence is negative - */ - private isNegativeConsequence(consequenceType?: number): boolean { - if (consequenceType === undefined) return false; - - // Negative consequences: MOVE_BACKWARD, LOSE_TURN, GO_TO_START - return [1, 2, 5].includes(consequenceType); // MOVE_BACKWARD=1, LOSE_TURN=2, GO_TO_START=5 - } - - /** - * Get description for gamemaster decision result - * @param decision Gamemaster's decision - * @param applyConsequence Whether consequence will be applied - * @param card The joker card - * @param isNegative Whether the consequence is negative - * @returns Description string - */ - private getDecisionDescription(decision: GamemasterDecision, applyConsequence: boolean, card: GameCard, isNegative: boolean): string { - if (decision === GamemasterDecision.APPROVE) { - if (isNegative) { - return '🎭 Gamemaster approved - no penalty applied!'; - } else { - return `🎭 Gamemaster approved! ${this.getJokerDescription(card, true)}`; - } - } else { - if (isNegative) { - return `🎭 Gamemaster rejected! ${this.getJokerDescription(card, true)}`; - } else { - return '🎭 Gamemaster rejected - no bonus applied.'; - } - } - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Services/Interfaces/GameInterfaces.ts b/SerpentRace_Backend/src/Application/Services/Interfaces/GameInterfaces.ts deleted file mode 100644 index 30a3e640..00000000 --- a/SerpentRace_Backend/src/Application/Services/Interfaces/GameInterfaces.ts +++ /dev/null @@ -1,132 +0,0 @@ -/** - * Shared interfaces for game-related WebSocket communications - * Used by both WebSocketService and GameWebSocketService - */ - -export interface JoinGameRoomData { - gameCode: string; -} - -export interface LeaveGameRoomData { - gameCode: string; -} - -export interface GameStateUpdateData { - gameId: string; - gameCode: string; - players: string[]; - state: string; - currentTurn?: string; -} - -export interface GameActionData { - gameId: string; - gameCode: string; - playerId: string; - action: 'pick_card' | 'play_card' | 'end_turn' | 'leave_game' | 'roll-dice' | 'move' | 'use-field'; - data?: any; -} - -// Field Effect Service WebSocket interfaces -export interface FieldEffectCalculationData { - gameId: string; - gameCode: string; - playerId: string; - currentPosition: number; - card: any; // GameCard - field: any; // GameField - dice: number; - guessedPosition?: number; -} - -export interface FieldEffectResultData { - gameId: string; - gameCode: string; - playerId: string; - result: { - finalPosition: number; - stepValue: number; - dice: number; - patternModifier: number; - consequenceModifier: number; - guessResult?: any; - gamemasterResult?: any; - description: string; - effects: string[]; - turnEffect?: { - type: 'LOSE_TURN' | 'EXTRA_TURN'; - value: number; - playerId: string; - }; - }; -} - -export interface GamemasterDecisionRequestData { - gameId: string; - gameCode: string; - requestId: string; - playerId: string; - playerName: string; - card: any; // GameCard - timeRemaining: number; -} - -export interface GamemasterDecisionResponseData { - requestId: string; - decision: 'approve' | 'reject'; -} - -// Game-specific interfaces for GameWebSocketService -export interface JoinGameData { - gameToken: string; // Required game session token -} - -export interface LeaveGameData { - gameCode: string; -} - -export interface DiceRollData { - gameCode: string; - diceValue: number; // Value from frontend (1-6) -} - -export interface PlayerPosition { - playerId: string; - playerName: string; - boardPosition: number; - turnOrder: number; -} - -export interface GameChatData { - gameCode: string; - message: string; -} - -// Field Effect related types -export interface FieldEffectRequest { - gameId: string; - playerId: string; - playerName: string; - currentPosition: number; - card: any; - field: any; - dice: number; - guessedPosition?: number; -} - -export interface FieldEffectResult { - finalPosition: number; - stepValue: number; - dice: number; - patternModifier: number; - consequenceModifier: number; - guessResult?: any; - gamemasterResult?: any; - description: string; - effects: string[]; - turnEffect?: { - type: 'LOSE_TURN' | 'EXTRA_TURN'; - value: number; - playerId: string; - }; -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Services/JWTService.ts b/SerpentRace_Backend/src/Application/Services/JWTService.ts deleted file mode 100644 index dc2061af..00000000 --- a/SerpentRace_Backend/src/Application/Services/JWTService.ts +++ /dev/null @@ -1,315 +0,0 @@ -import jwt, { SignOptions } from 'jsonwebtoken'; -import { Request, Response } from 'express'; -import { UserState } from '../../Domain/User/UserAggregate'; - -export interface TokenPayload { - userId: string; - authLevel: 0 | 1; - userStatus: UserState; - orgId: string; - type?: 'access'; - iat?: number; - exp?: number; -} - -export interface RefreshTokenPayload { - userId: string; - type: 'refresh'; - orgId?: string; - tokenId?: string; // For token rotation/revocation - iat?: number; - exp?: number; -} - -export interface TokenPair { - accessToken: string; - refreshToken: string; -} - -export class JWTService { - private readonly secretKey: string; - private readonly refreshSecretKey: string; - private readonly tokenExpiry: number; - private readonly refreshTokenExpiry: number; - private readonly cookieName: string; - private readonly refreshCookieName: string; - - constructor() { - this.secretKey = process.env.JWT_SECRET || 'your-secret-key'; - this.refreshSecretKey = process.env.JWT_REFRESH_SECRET || this.secretKey + '_refresh'; - - // Access token expiry (short-lived) - let expiry = 1800; // Default 30 minutes for better security - if (process.env.JWT_EXPIRY) { - expiry = parseInt(process.env.JWT_EXPIRY); - } else if (process.env.JWT_EXPIRATION) { - expiry = this.parseDuration(process.env.JWT_EXPIRATION); - } - - // Refresh token expiry (long-lived) - let refreshExpiry = 604800; // Default 7 days - if (process.env.JWT_REFRESH_EXPIRATION) { - refreshExpiry = this.parseDuration(process.env.JWT_REFRESH_EXPIRATION); - } - - this.tokenExpiry = expiry; - this.refreshTokenExpiry = refreshExpiry; - this.cookieName = 'auth_token'; - this.refreshCookieName = 'refresh_token'; - - if (process.env.NODE_ENV === 'production' && (!process.env.JWT_SECRET || process.env.JWT_SECRET === 'your-secret-key')) { - throw new Error('JWT_SECRET environment variable must be set in production'); - } - } - - /** - * Create a pair of access and refresh tokens - */ - public createTokenPair(payload: Omit): TokenPair { - const now = Math.floor(Date.now() / 1000); - - // Create access token - const accessTokenPayload: TokenPayload = { - ...payload, - type: 'access', - iat: now, - exp: now + this.tokenExpiry - }; - const accessToken = jwt.sign(accessTokenPayload, this.secretKey); - - // Create refresh token - const refreshTokenPayload: RefreshTokenPayload = { - userId: payload.userId, - type: 'refresh', - orgId: payload.orgId, - iat: now, - exp: now + this.refreshTokenExpiry - }; - const refreshToken = jwt.sign(refreshTokenPayload, this.refreshSecretKey); - - return { accessToken, refreshToken }; - } - - /** - * Create access and refresh tokens and set cookies (for cookie-based auth) - */ - create(payload: Omit, res: Response): TokenPair { - const tokenPair = this.createTokenPair(payload); - this.setTokenCookies(res, tokenPair); - return tokenPair; - } - - /** - * Check if the request is using Bearer token authentication - */ - private isUsingBearerAuth(req: Request): boolean { - // No cookie but has Authorization header - return !req.cookies?.[this.cookieName] && - !!req.headers.authorization && - req.headers.authorization.startsWith('Bearer '); - } - - /** - * Verify a refresh token - */ - public verifyRefreshToken(token: string): RefreshTokenPayload | null { - try { - const decoded = jwt.verify(token, this.refreshSecretKey) as RefreshTokenPayload; - if (decoded.type !== 'refresh') { - return null; - } - return decoded; - } catch (error) { - return null; - } - } - - /** - * Attempt to refresh tokens using refresh token from cookies or headers - */ - public attemptTokenRefresh(req: Request, res: Response): TokenPair | null { - try { - // Try to get refresh token from cookie first - let refreshToken = req.cookies[this.refreshCookieName]; - - // If no cookie, try X-Refresh-Token header - if (!refreshToken) { - refreshToken = req.headers['x-refresh-token'] as string; - } - - if (!refreshToken) { - return null; - } - - const refreshPayload = this.verifyRefreshToken(refreshToken); - if (!refreshPayload) { - return null; - } - - // Create new token pair - const newTokenPair = this.createTokenPair({ - userId: refreshPayload.userId, - authLevel: 0, // Default auth level, should be fetched from user data - userStatus: UserState.VERIFIED_REGULAR, // Default status, should be fetched from user data - orgId: refreshPayload.orgId || '' - }); - - // Set new tokens based on authentication method - if (req.cookies[this.cookieName] || req.cookies[this.refreshCookieName]) { - // Cookie-based auth: set new cookies - this.setTokenCookies(res, newTokenPair); - } else { - // Header-based auth: send tokens in response headers - res.setHeader('X-New-Access-Token', newTokenPair.accessToken); - res.setHeader('X-New-Refresh-Token', newTokenPair.refreshToken); - res.setHeader('X-Token-Refreshed', 'true'); - } - - return newTokenPair; - } catch (error) { - return null; - } - } - - /** - * Set token cookies for cookie-based authentication - */ - private setTokenCookies(res: Response, tokenPair: TokenPair): void { - // Set access token cookie - res.cookie(this.cookieName, tokenPair.accessToken, { - httpOnly: true, - secure: process.env.NODE_ENV === 'production', - sameSite: 'strict', - maxAge: this.tokenExpiry * 1000, - }); - - // Set refresh token cookie - res.cookie(this.refreshCookieName, tokenPair.refreshToken, { - httpOnly: true, - secure: process.env.NODE_ENV === 'production', - sameSite: 'strict', - maxAge: this.refreshTokenExpiry * 1000, - }); - } - - verify(req: Request): TokenPayload | null { - try { - // First try to get token from cookie - let token = req.cookies[this.cookieName]; - - // If no cookie token, try Authorization header - if (!token) { - const authHeader = req.headers.authorization; - if (authHeader && authHeader.startsWith('Bearer ')) { - token = authHeader.substring(7); - } - } - - if (!token) return null; - - const decoded = jwt.verify(token, this.secretKey) as TokenPayload; - return decoded; - } catch (error) { - return null; - } - } - - /** - * Logout user by clearing tokens - */ - public logout(req: Request, res: Response): void { - // Clear cookies if they exist - if (req.cookies[this.cookieName]) { - res.clearCookie(this.cookieName, { - httpOnly: true, - secure: process.env.NODE_ENV === 'production', - sameSite: 'strict' - }); - } - - if (req.cookies[this.refreshCookieName]) { - res.clearCookie(this.refreshCookieName, { - httpOnly: true, - secure: process.env.NODE_ENV === 'production', - sameSite: 'strict' - }); - } - - // For bearer token auth, set headers to indicate logout - res.setHeader('X-Auth-Logout', 'true'); - res.setHeader('X-Clear-Tokens', 'true'); - } - - // Check if token needs refresh (within 25% of expiry time) - shouldRefreshToken(payload: TokenPayload): boolean { - if (!payload.exp || !payload.iat) return false; - - const now = Math.floor(Date.now() / 1000); - const tokenAge = now - payload.iat; - const tokenLifetime = payload.exp - payload.iat; - const refreshThreshold = tokenLifetime * 0.75; // Refresh when 75% of lifetime has passed - - return tokenAge >= refreshThreshold; - } - - // Conditionally refresh token only if needed - refreshIfNeeded(payload: TokenPayload, res: Response, req?: Request): boolean { - if (this.shouldRefreshToken(payload)) { - if (req) { - // Try to use the new refresh token system - const newTokenPair = this.attemptTokenRefresh(req, res); - if (newTokenPair) { - return true; - } - } - - // Fallback: create new token pair - const freshPayload: Omit = { - userId: payload.userId, - authLevel: payload.authLevel, - userStatus: payload.userStatus, - orgId: payload.orgId - }; - - // Check if using Bearer authentication - if (req && this.isUsingBearerAuth(req)) { - // For Bearer auth, create token pair and add to headers - const newTokenPair = this.createTokenPair(freshPayload); - res.setHeader('X-New-Access-Token', newTokenPair.accessToken); - res.setHeader('X-New-Refresh-Token', newTokenPair.refreshToken); - res.setHeader('X-Token-Refreshed', 'true'); - } else { - // For cookie auth, create token pair and set cookies - const newTokenPair = this.create(freshPayload, res); - this.setTokenCookies(res, newTokenPair); - } - - return true; - } - return false; - } - - /** - * Parse duration string to seconds (e.g., "24h", "7d", "30m") - * @param duration Duration string - * @returns Duration in seconds - */ - private parseDuration(duration: string): number { - const match = duration.match(/^(\d+)([smhd])$/); - if (!match) { - throw new Error(`Invalid duration format: ${duration}. Use format like '24h', '7d', '30m'`); - } - - const [, value, unit] = match; - const num = parseInt(value); - - switch (unit) { - case 's': return num; // seconds - case 'm': return num * 60; // minutes - case 'h': return num * 60 * 60; // hours - case 'd': return num * 60 * 60 * 24; // days - default: - throw new Error(`Unsupported duration unit: ${unit}`); - } - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/Services/Logger.ts b/SerpentRace_Backend/src/Application/Services/Logger.ts deleted file mode 100644 index 74521339..00000000 --- a/SerpentRace_Backend/src/Application/Services/Logger.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { LoggingService, LogLevel } from './LoggingService'; -import { Request, Response } from 'express'; - -// Singleton instance -const logger = LoggingService.getInstance(); - -// Convenience functions for each log level -export const logRequest = (message: string, req?: Request, res?: Response, metadata?: any) => { - logger.log(LogLevel.REQUEST, message, metadata, req, res); -}; - -export const logError = (message: string, error?: Error, req?: Request, res?: Response) => { - const metadata = error ? { - name: error.name, - message: error.message, - stack: error.stack - } : undefined; - logger.log(LogLevel.ERROR, message, metadata, req, res); -}; - -export const logWarning = (message: string, metadata?: any, req?: Request, res?: Response) => { - logger.log(LogLevel.WARNING, message, metadata, req, res); -}; - -export const logAuth = (message: string, userId?: string, metadata?: any, req?: Request, res?: Response) => { - const authMetadata = { - userId, - ...metadata - }; - logger.log(LogLevel.AUTH, message, authMetadata, req, res); -}; - -export const logDatabase = (message: string, query?: string, executionTime?: number, metadata?: any) => { - const dbMetadata = { - query: query ? query.substring(0, 200) : undefined, - executionTime, - ...metadata - }; - logger.log(LogLevel.DATABASE, message, dbMetadata); -}; - -export const logStartup = (message: string, metadata?: any) => { - logger.log(LogLevel.STARTUP, message, metadata); -}; - -export const logConnection = (message: string, type: string, status: 'success' | 'failure' | 'attempt', metadata?: any) => { - const connectionMetadata = { - connectionType: type, - status, - ...metadata - }; - logger.log(LogLevel.CONNECTION, message, connectionMetadata); -}; - -export const logOther = (message: string, metadata?: any, req?: Request, res?: Response) => { - logger.log(LogLevel.OTHER, message, metadata, req, res); -}; - -// Export the main service -export { LoggingService, LogLevel }; -export default logger; diff --git a/SerpentRace_Backend/src/Application/Services/LoggingService.ts b/SerpentRace_Backend/src/Application/Services/LoggingService.ts deleted file mode 100644 index 125ab2a6..00000000 --- a/SerpentRace_Backend/src/Application/Services/LoggingService.ts +++ /dev/null @@ -1,419 +0,0 @@ -import fs from 'fs'; -import path from 'path'; -import { Request, Response, NextFunction } from 'express'; -import * as Minio from 'minio'; - -export enum LogLevel { - REQUEST = 'REQUEST', - ERROR = 'ERROR', - WARNING = 'WARNING', - AUTH = 'AUTH', - DATABASE = 'DATABASE', - STARTUP = 'STARTUP', - CONNECTION = 'CONNECTION', - OTHER = 'OTHER' -} - -export interface LogEntry { - timestamp: string; - level: LogLevel; - message: string; - metadata?: any; - requestId?: string; - userId?: string; - ip?: string; - userAgent?: string; - method?: string; - url?: string; - statusCode?: number; - responseTime?: number; -} - -export class LoggingService { - private static instance: LoggingService; - private minioClient: Minio.Client | null = null; - private logBuffer: LogEntry[] = []; - private currentLogFile: string | null = null; - private logCount = 0; - private readonly maxLogsPerFile = parseInt(process.env.MAX_LOGS_PER_FILE || '10000'); - private readonly logsDir = path.join(process.cwd(), 'logs'); - private readonly bucketName = process.env.MINIO_BUCKET_NAME || 'serpentrace-logs'; - private uploadInterval: NodeJS.Timeout | null = null; - - private constructor() { - this.initializeLogsDirectory(); - this.initializeMinioClient(); - this.createNewLogFile(); - - if (process.env.NODE_ENV !== 'test') { - this.startPeriodicUpload(); - } - - process.on('SIGTERM', () => this.shutdown()); - process.on('SIGINT', () => this.shutdown()); - process.on('beforeExit', () => this.shutdown()); - } - - static getInstance(): LoggingService { - if (!LoggingService.instance) { - LoggingService.instance = new LoggingService(); - } - return LoggingService.instance; - } - - private initializeLogsDirectory(): void { - try { - if (!fs.existsSync(this.logsDir)) { - fs.mkdirSync(this.logsDir, { recursive: true }); - } - - // Create monthly subdirectory - const monthlyDir = this.getMonthlyDirectory(); - if (!fs.existsSync(monthlyDir)) { - fs.mkdirSync(monthlyDir, { recursive: true }); - } - } catch (error) { - console.error('Failed to initialize logs directory:', error); - } - } - - private initializeMinioClient(): void { - try { - // Check if in production or development - if (process.env.NODE_ENV === 'production') { - if (process.env.MINIO_ENDPOINT && process.env.MINIO_ACCESS_KEY && process.env.MINIO_SECRET_KEY) { - this.minioClient = new Minio.Client({ - endPoint: process.env.MINIO_ENDPOINT, - port: parseInt(process.env.MINIO_PORT || '9000'), - useSSL: process.env.MINIO_USE_SSL === 'true', - accessKey: process.env.MINIO_ACCESS_KEY, - secretKey: process.env.MINIO_SECRET_KEY - }); - - this.ensureBucketExists(); - } else { - console.warn('Minio configuration not found. Logs will only be stored locally and in console.'); - } - } else { - // Development mode - only use MinIO if explicitly configured - if (process.env.MINIO_ENDPOINT || process.env.ENABLE_MINIO === 'true') { - this.minioClient = new Minio.Client({ - endPoint: process.env.MINIO_ENDPOINT || 'localhost', - port: parseInt(process.env.MINIO_PORT || '9000'), - useSSL: false, - accessKey: process.env.MINIO_ACCESS_KEY || 'serpentrace', - secretKey: process.env.MINIO_SECRET_KEY || 'serpentrace123!' - }); - - this.ensureBucketExists(); - } else { - console.log('Development mode: MinIO disabled. Set ENABLE_MINIO=true to enable MinIO logging.'); - this.minioClient = null; - } - } - - - } catch (error) { - console.error('Failed to initialize Minio client:', error); - this.minioClient = null; - } - } - - private async ensureBucketExists(): Promise { - if (!this.minioClient) return; - - try { - const exists = await this.minioClient.bucketExists(this.bucketName); - if (!exists) { - await this.minioClient.makeBucket(this.bucketName); - this.log(LogLevel.STARTUP, `Created Minio bucket: ${this.bucketName}`); - } - } catch (error) { - console.warn('MinIO connection failed - disabling MinIO logging:', (error as Error).message); - // Disable MinIO client if connection fails - this.minioClient = null; - } - } - - private startPeriodicUpload(): void { - // Upload current log file to Minio every 2 minutes - this.uploadInterval = setInterval(async () => { - if (this.currentLogFile && this.minioClient) { - await this.uploadToMinio(this.currentLogFile); - } - }, 2 * 60 * 1000); // 2 minutes - } - - private getMonthlyDirectory(): string { - const now = new Date(); - const year = now.getFullYear(); - const month = String(now.getMonth() + 1).padStart(2, '0'); - return path.join(this.logsDir, `${year}-${month}`); - } - - private getMonthlyMinioPrefix(): string { - const now = new Date(); - const year = now.getFullYear(); - const month = String(now.getMonth() + 1).padStart(2, '0'); - return `${year}-${month}/`; - } - - private createNewLogFile(): void { - const now = new Date(); - const timestamp = now.toISOString().replace(/[:.]/g, '-'); - const fileName = `serpentrace-${timestamp}.log`; - - this.currentLogFile = path.join(this.getMonthlyDirectory(), fileName); - this.logCount = 0; - - // Write log file header - const header = `# SerpentRace Backend Logs\n# Started: ${now.toISOString()}\n# Max entries per file: ${this.maxLogsPerFile}\n\n`; - try { - fs.writeFileSync(this.currentLogFile, header); - } catch (error) { - console.error('Failed to create log file:', error); - } - } - - private formatLogEntry(entry: LogEntry): string { - const parts = [ - entry.timestamp, - `[${entry.level}]`, - entry.message - ]; - - if (entry.requestId) parts.push(`ReqId:${entry.requestId}`); - if (entry.userId) parts.push(`UserId:${entry.userId}`); - if (entry.ip) parts.push(`IP:${entry.ip}`); - if (entry.method && entry.url) parts.push(`${entry.method} ${entry.url}`); - if (entry.statusCode) parts.push(`Status:${entry.statusCode}`); - if (entry.responseTime) parts.push(`Time:${entry.responseTime}ms`); - if (entry.userAgent) parts.push(`UA:${entry.userAgent.substring(0, 50)}`); - if (entry.metadata) parts.push(`Meta:${JSON.stringify(entry.metadata)}`); - - return parts.join(' | '); - } - - private async writeToLocalFile(entry: LogEntry): Promise { - if (!this.currentLogFile) return; - - try { - const logLine = this.formatLogEntry(entry) + '\n'; - fs.appendFileSync(this.currentLogFile, logLine); - - this.logCount++; - - // Check if we need to rotate the log file - if (this.logCount >= this.maxLogsPerFile) { - await this.rotateLogFile(); - } - } catch (error) { - console.error('Failed to write to log file:', error); - } - } - - private async rotateLogFile(): Promise { - if (!this.currentLogFile) return; - - try { - // Upload current file to Minio before rotating - await this.uploadToMinio(this.currentLogFile); - - // Create new log file - this.createNewLogFile(); - - this.log(LogLevel.OTHER, 'Log file rotated due to size limit'); - } catch (error) { - console.error('Failed to rotate log file:', error); - } - } - - private async uploadToMinio(filePath: string): Promise { - if (!this.minioClient) { - console.warn('Minio client not initialized, skipping upload'); - return; - } - - if (!fs.existsSync(filePath)) { - console.warn(`Log file does not exist: ${filePath}`); - return; - } - - try { - const fileName = path.basename(filePath); - const objectName = this.getMonthlyMinioPrefix() + fileName; - - console.log(`Attempting to upload log file to Minio: ${objectName}`); - await this.minioClient.fPutObject(this.bucketName, objectName, filePath); - console.log(`Successfully uploaded log file to Minio: ${objectName}`); - } catch (error) { - console.error('Failed to upload to Minio:', error); - console.error('Minio config:', { - endpoint: this.minioClient ? 'configured' : 'not configured', - bucket: this.bucketName - }); - } - } - - private logToConsole(entry: LogEntry): void { - // In production, skip OTHER, CONNECTION, and REQUEST logs - if (process.env.NODE_ENV === 'production') { - if (entry.level === LogLevel.OTHER || - entry.level === LogLevel.CONNECTION || - entry.level === LogLevel.REQUEST) { - return; - } - } - - const formattedEntry = this.formatLogEntry(entry); - - switch (entry.level) { - case LogLevel.ERROR: - console.error(formattedEntry); - break; - case LogLevel.WARNING: - console.warn(formattedEntry); - break; - case LogLevel.REQUEST: - case LogLevel.AUTH: - case LogLevel.DATABASE: - case LogLevel.CONNECTION: - console.info(formattedEntry); - break; - case LogLevel.STARTUP: - console.log(formattedEntry); - break; - default: - console.log(formattedEntry); - } - } - - public log( - level: LogLevel, - message: string, - metadata?: any, - req?: Request, - res?: Response, - responseTime?: number - ): void { - // In production, skip OTHER, CONNECTION, and REQUEST logs entirely - if (process.env.NODE_ENV === 'production') { - if (level === LogLevel.OTHER || - level === LogLevel.CONNECTION || - level === LogLevel.REQUEST) { - return; - } - } - - const entry: LogEntry = { - timestamp: new Date().toISOString(), - level, - message, - metadata - }; - - // Add request context if available - if (req) { - entry.requestId = (req as any).requestId || this.generateRequestId(); - entry.userId = (req as any).user?.userId; - entry.ip = req.ip || req.socket?.remoteAddress || 'unknown'; - entry.userAgent = req.get ? req.get('User-Agent') : 'unknown'; - entry.method = req.method; - entry.url = req.originalUrl || req.url; - } - - if (res) { - entry.statusCode = res.statusCode; - } - - if (responseTime !== undefined) { - entry.responseTime = responseTime; - } - - // Log to all three destinations - this.logToConsole(entry); - this.writeToLocalFile(entry); - - // Add to buffer for potential batch processing - this.logBuffer.push(entry); - - // Limit buffer size - if (this.logBuffer.length > 1000) { - this.logBuffer = this.logBuffer.slice(-500); - } - } - - private generateRequestId(): string { - return Math.random().toString(36).substr(2, 9); - } - - public async shutdown(): Promise { - try { - // Clear the upload interval - if (this.uploadInterval) { - clearInterval(this.uploadInterval); - this.uploadInterval = null; - } - - // Upload current log file to Minio - if (this.currentLogFile) { - await this.uploadToMinio(this.currentLogFile); - } - - this.log(LogLevel.STARTUP, 'Logging service shutting down gracefully'); - - // Give time for final logs to be written - await new Promise(resolve => setTimeout(resolve, 1000)); - } catch (error) { - console.error('Error during logging service shutdown:', error); - } - } - - // Middleware factory methods - public requestLoggingMiddleware() { - return (req: Request, res: Response, next: NextFunction) => { - const startTime = Date.now(); - - // Generate request ID - (req as any).requestId = this.generateRequestId(); - - // Log request start - this.log(LogLevel.REQUEST, `Incoming request`, undefined, req); - - // Override res.end to log response - const originalEnd = res.end.bind(res); - res.end = (...args: any[]): Response => { - const responseTime = Date.now() - startTime; - LoggingService.getInstance().log( - LogLevel.REQUEST, - `Request completed`, - undefined, - req, - res, - responseTime - ); - return originalEnd(...args); - }; - - next(); - }; - } - - public errorLoggingMiddleware() { - return (error: Error, req: Request, res: Response, next: NextFunction) => { - this.log( - LogLevel.ERROR, - `Unhandled error: ${error.message}`, - { - stack: error.stack, - name: error.name - }, - req, - res - ); - next(error); - }; - } -} - -export default LoggingService; diff --git a/SerpentRace_Backend/src/Application/Services/PasswordService.ts b/SerpentRace_Backend/src/Application/Services/PasswordService.ts deleted file mode 100644 index 56f3ec08..00000000 --- a/SerpentRace_Backend/src/Application/Services/PasswordService.ts +++ /dev/null @@ -1,99 +0,0 @@ -import * as bcrypt from 'bcrypt'; -import { logError } from './Logger'; - -export class PasswordService { - private static readonly SALT_ROUNDS = 12; - - /** - * Hashes a plain text password using bcrypt - * @param password - The plain text password to hash - * @returns Promise - The hashed password - */ - static async hashPassword(password: string): Promise { - try { - if (!password || typeof password !== 'string') { - throw new Error('Password must be a non-empty string'); - } - - return await bcrypt.hash(password, this.SALT_ROUNDS); - } catch (error) { - logError('PasswordService.hashPassword error', error instanceof Error ? error : new Error(String(error))); - - if (error instanceof Error && error.message === 'Password must be a non-empty string') { - throw error; // Re-throw validation errors as-is - } - - throw new Error('Failed to hash password'); - } - } - - /** - * Verifies a plain text password against a hashed password - * @param password - The plain text password to verify - * @param hashedPassword - The hashed password to compare against - * @returns Promise - True if password matches, false otherwise - */ - static async verifyPassword(password: string, hashedPassword: string): Promise { - try { - if (!password || typeof password !== 'string') { - return false; // Invalid input should return false, not throw - } - - if (!hashedPassword || typeof hashedPassword !== 'string') { - return false; // Invalid input should return false, not throw - } - - return await bcrypt.compare(password, hashedPassword); - } catch (error) { - logError('PasswordService.verifyPassword error', error instanceof Error ? error : new Error(String(error))); - return false; // Return false on error instead of throwing - } - } - - /** - * Validates password strength requirements - * @param password - The password to validate - * @returns object - Object containing isValid boolean and error messages - */ - static validatePasswordStrength(password: string): { isValid: boolean; errors: string[] } { - try { - const errors: string[] = []; - - if (!password || typeof password !== 'string') { - errors.push('Password must be provided as a string'); - return { isValid: false, errors }; - } - - if (password.length < 8) { - errors.push('Password must be at least 8 characters long'); - } - - if (!/[A-Z]/.test(password)) { - errors.push('Password must contain at least one uppercase letter'); - } - - if (!/[a-z]/.test(password)) { - errors.push('Password must contain at least one lowercase letter'); - } - - if (!/\d/.test(password)) { - errors.push('Password must contain at least one number'); - } - - if (!/[!@#$%^&*(),.?":{}|<>]/.test(password)) { - errors.push('Password must contain at least one special character'); - } - - return { - isValid: errors.length === 0, - errors - }; - } catch (error) { - logError('PasswordService.validatePasswordStrength error', error instanceof Error ? error : new Error(String(error))); - return { - isValid: false, - errors: ['Password validation failed due to internal error'] - }; - } - } -} diff --git a/SerpentRace_Backend/src/Application/Services/RedisService.ts b/SerpentRace_Backend/src/Application/Services/RedisService.ts deleted file mode 100644 index de0b38bb..00000000 --- a/SerpentRace_Backend/src/Application/Services/RedisService.ts +++ /dev/null @@ -1,423 +0,0 @@ -import { createClient, RedisClientType } from 'redis'; -import { logError, logStartup, logWarning } from './Logger'; - -export interface ActiveChatData { - chatId: string; - participants: string[]; - lastActivity: Date; - messageCount: number; - chatType: 'direct' | 'group' | 'game'; - gameId?: string; - name?: string; -} - -export interface ActiveUserData { - userId: string; - activeChatIds: string[]; - lastActivity: Date; - isOnline: boolean; -} - -export class RedisService { - private static instance: RedisService; - private client: RedisClientType; - private isConnected: boolean = false; - - private constructor() { - const redisUrl = process.env.REDIS_URL || 'redis://localhost:6379'; - this.client = createClient({ - url: redisUrl, - socket: { - reconnectStrategy: (retries) => Math.min(retries * 50, 500) - } - }); - - this.client.on('error', (err) => { - logError('Redis connection error', err); - this.isConnected = false; - }); - - this.client.on('connect', () => { - logStartup('Redis client connected successfully'); - this.isConnected = true; - }); - - this.client.on('disconnect', () => { - logWarning('Redis client disconnected'); - this.isConnected = false; - }); - } - - public static getInstance(): RedisService { - if (!RedisService.instance) { - RedisService.instance = new RedisService(); - } - return RedisService.instance; - } - - public async connect(): Promise { - try { - if (!this.isConnected) { - await this.client.connect(); - } - } catch (error) { - logError('Failed to connect to Redis', error as Error); - throw error; - } - } - - public async disconnect(): Promise { - try { - if (this.isConnected) { - await this.client.disconnect(); - } - } catch (error) { - logError('Failed to disconnect from Redis', error as Error); - } - } - - public async setActiveChat(chatId: string, chatData: ActiveChatData): Promise { - try { - const key = `active_chat:${chatId}`; - await this.client.hSet(key, { - chatId: chatData.chatId, - participants: JSON.stringify(chatData.participants), - lastActivity: chatData.lastActivity.toISOString(), - messageCount: chatData.messageCount.toString(), - chatType: chatData.chatType, - gameId: chatData.gameId || '', - name: chatData.name || '' - }); - - // Set expiration for 1 hour of inactivity - await this.client.expire(key, 3600); - } catch (error) { - logError(`Failed to set active chat ${chatId}`, error as Error); - } - } - - public async getActiveChat(chatId: string): Promise { - try { - const key = `active_chat:${chatId}`; - const data = await this.client.hGetAll(key); - - if (!data.chatId) { - return null; - } - - return { - chatId: data.chatId, - participants: JSON.parse(data.participants), - lastActivity: new Date(data.lastActivity), - messageCount: parseInt(data.messageCount, 10), - chatType: data.chatType as 'direct' | 'group' | 'game', - gameId: data.gameId || undefined, - name: data.name || undefined - }; - } catch (error) { - logError(`Failed to get active chat ${chatId}`, error as Error); - return null; - } - } - - public async removeActiveChat(chatId: string): Promise { - try { - const key = `active_chat:${chatId}`; - await this.client.del(key); - } catch (error) { - logError(`Failed to remove active chat ${chatId}`, error as Error); - } - } - - public async getAllActiveChats(): Promise { - try { - const pattern = 'active_chat:*'; - const keys = await this.client.keys(pattern); - const chats: ActiveChatData[] = []; - - for (const key of keys) { - const data = await this.client.hGetAll(key); - if (data.chatId) { - chats.push({ - chatId: data.chatId, - participants: JSON.parse(data.participants), - lastActivity: new Date(data.lastActivity), - messageCount: parseInt(data.messageCount, 10), - chatType: data.chatType as 'direct' | 'group' | 'game', - gameId: data.gameId || undefined, - name: data.name || undefined - }); - } - } - - return chats; - } catch (error) { - logError('Failed to get all active chats', error as Error); - return []; - } - } - - public async setActiveUser(userId: string, userData: ActiveUserData): Promise { - try { - const key = `active_user:${userId}`; - await this.client.hSet(key, { - userId: userData.userId, - activeChatIds: JSON.stringify(userData.activeChatIds), - lastActivity: userData.lastActivity.toISOString(), - isOnline: userData.isOnline.toString() - }); - - // Set expiration for 2 hours - await this.client.expire(key, 7200); - } catch (error) { - logError(`Failed to set active user ${userId}`, error as Error); - } - } - - public async getActiveUser(userId: string): Promise { - try { - const key = `active_user:${userId}`; - const data = await this.client.hGetAll(key); - - if (!data.userId) { - return null; - } - - return { - userId: data.userId, - activeChatIds: JSON.parse(data.activeChatIds), - lastActivity: new Date(data.lastActivity), - isOnline: data.isOnline === 'true' - }; - } catch (error) { - logError(`Failed to get active user ${userId}`, error as Error); - return null; - } - } - - public async removeActiveUser(userId: string): Promise { - try { - const key = `active_user:${userId}`; - await this.client.del(key); - } catch (error) { - logError(`Failed to remove active user ${userId}`, error as Error); - } - } - - public async addUserToChat(userId: string, chatId: string): Promise { - try { - const userData = await this.getActiveUser(userId) || { - userId, - activeChatIds: [], - lastActivity: new Date(), - isOnline: true - }; - - if (!userData.activeChatIds.includes(chatId)) { - userData.activeChatIds.push(chatId); - userData.lastActivity = new Date(); - await this.setActiveUser(userId, userData); - } - } catch (error) { - logError(`Failed to add user ${userId} to chat ${chatId}`, error as Error); - } - } - - public async removeUserFromChat(userId: string, chatId: string): Promise { - try { - const userData = await this.getActiveUser(userId); - if (userData) { - userData.activeChatIds = userData.activeChatIds.filter(id => id !== chatId); - userData.lastActivity = new Date(); - await this.setActiveUser(userId, userData); - } - } catch (error) { - logError(`Failed to remove user ${userId} from chat ${chatId}`, error as Error); - } - } - - public async getUserActiveChats(userId: string): Promise { - try { - const userData = await this.getActiveUser(userId); - return userData?.activeChatIds || []; - } catch (error) { - logError(`Failed to get active chats for user ${userId}`, error as Error); - return []; - } - } - - public async updateChatActivity(chatId: string, messageCount?: number): Promise { - try { - const chatData = await this.getActiveChat(chatId); - if (chatData) { - chatData.lastActivity = new Date(); - if (messageCount !== undefined) { - chatData.messageCount = messageCount; - } - await this.setActiveChat(chatId, chatData); - } - } catch (error) { - logError(`Failed to update chat activity ${chatId}`, error as Error); - } - } - - public async getInactiveChats(inactivityMinutes: number): Promise { - try { - const cutoffTime = new Date(Date.now() - inactivityMinutes * 60 * 1000); - const allChats = await this.getAllActiveChats(); - - return allChats - .filter(chat => chat.lastActivity < cutoffTime) - .map(chat => chat.chatId); - } catch (error) { - logError('Failed to get inactive chats', error as Error); - return []; - } - } - - public async cleanupInactiveChats(inactivityMinutes: number): Promise { - try { - const inactiveChats = await this.getInactiveChats(inactivityMinutes); - - for (const chatId of inactiveChats) { - await this.removeActiveChat(chatId); - } - - return inactiveChats; - } catch (error) { - logError('Failed to cleanup inactive chats', error as Error); - return []; - } - } - - public async ping(): Promise { - try { - const result = await this.client.ping(); - return result === 'PONG'; - } catch (error) { - logError('Redis ping failed', error as Error); - return false; - } - } - - public isRedisConnected(): boolean { - return this.isConnected; - } - - // Generic Redis methods for game data - public async get(key: string): Promise { - try { - const value = await this.client.get(key); - // Refresh TTL on access for game-related keys - if (value && this.isGameRelatedKey(key)) { - await this.client.expire(key, 1800); // Reset to 30 minutes - } - return value; - } catch (error) { - logError(`Failed to get key ${key}`, error as Error); - return null; - } - } - - public async set(key: string, value: string): Promise { - try { - await this.client.set(key, value); - // Auto-expire game-related keys after 30 minutes - if (this.isGameRelatedKey(key)) { - await this.client.expire(key, 1800); // 30 minutes - } - } catch (error) { - logError(`Failed to set key ${key}`, error as Error); - } - } - - public async setWithExpiry(key: string, value: string, expirySeconds: number): Promise { - try { - await this.client.setEx(key, expirySeconds, value); - } catch (error) { - logError(`Failed to set key ${key} with expiry`, error as Error); - } - } - - public async del(key: string): Promise { - try { - await this.client.del(key); - } catch (error) { - logError(`Failed to delete key ${key}`, error as Error); - } - } - - public async setAdd(key: string, member: string): Promise { - try { - await this.client.sAdd(key, member); - // Refresh TTL for game-related keys - if (this.isGameRelatedKey(key)) { - await this.client.expire(key, 1800); // Reset to 30 minutes - } - } catch (error) { - logError(`Failed to add member to set ${key}`, error as Error); - } - } - - public async setRemove(key: string, member: string): Promise { - try { - await this.client.sRem(key, member); - // Refresh TTL for game-related keys - if (this.isGameRelatedKey(key)) { - await this.client.expire(key, 1800); // Reset to 30 minutes - } - } catch (error) { - logError(`Failed to remove member from set ${key}`, error as Error); - } - } - - public async setMembers(key: string): Promise { - try { - const members = await this.client.sMembers(key); - // Refresh TTL on access for game-related keys - if (members.length > 0 && this.isGameRelatedKey(key)) { - await this.client.expire(key, 1800); // Reset to 30 minutes - } - return members; - } catch (error) { - logError(`Failed to get members of set ${key}`, error as Error); - return []; - } - } - - public async exists(key: string): Promise { - try { - const result = await this.client.exists(key); - // Refresh TTL on access for game-related keys - if (result === 1 && this.isGameRelatedKey(key)) { - await this.client.expire(key, 1800); // Reset to 30 minutes - } - return result === 1; - } catch (error) { - logError(`Failed to check existence of key ${key}`, error as Error); - return false; - } - } - - /** - * Check if a key is game-related and should have auto-expiration - * Game-related patterns: gameplay:*, game:*, game_*, board:*, game_pending_card:*, etc. - */ - private isGameRelatedKey(key: string): boolean { - const gamePatterns = [ - 'gameplay:', - 'game:', - 'game_', - 'board:', - 'game_pending_card:', - 'game_pending_decision:', - 'game_player_extra_turns:', - 'game_player_turns_to_lose:', - 'game_positions:', - 'game_ready:', - 'game_room:', - 'active_game:' - ]; - return gamePatterns.some(pattern => key.startsWith(pattern)); - } -} diff --git a/SerpentRace_Backend/src/Application/Services/TokenService.ts b/SerpentRace_Backend/src/Application/Services/TokenService.ts deleted file mode 100644 index 48ff12fd..00000000 --- a/SerpentRace_Backend/src/Application/Services/TokenService.ts +++ /dev/null @@ -1,229 +0,0 @@ -import * as crypto from 'crypto'; -import { logError } from './Logger'; - -export interface VerificationToken { - token: string; - expiresAt: Date; - createdAt: Date; -} - -export interface PasswordResetToken { - token: string; - expiresAt: Date; - createdAt: Date; -} - -export class TokenService { - private static readonly VERIFICATION_TOKEN_EXPIRES_HOURS = 24; - private static readonly PASSWORD_RESET_TOKEN_EXPIRES_HOURS = 1; - private static readonly TOKEN_LENGTH = 32; - - /** - * Generate a secure random token - * @param length - Length of the token in bytes (default: 32) - * @returns Hexadecimal string token - */ - static generateSecureToken(length: number = TokenService.TOKEN_LENGTH): string { - try { - return crypto.randomBytes(length).toString('hex'); - } catch (error) { - logError('TokenService.generateSecureToken error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to generate secure token'); - } - } - - /** - * Generate email verification token with expiration - * @returns VerificationToken object with token and expiration info - */ - static generateVerificationToken(): VerificationToken { - try { - const token = this.generateSecureToken(); - const createdAt = new Date(); - const expiresAt = new Date(createdAt.getTime() + (this.VERIFICATION_TOKEN_EXPIRES_HOURS * 60 * 60 * 1000)); - - return { - token, - createdAt, - expiresAt - }; - } catch (error) { - logError('TokenService.generateVerificationToken error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to generate verification token'); - } - } - - /** - * Generate password reset token with expiration - * @returns PasswordResetToken object with token and expiration info - */ - static generatePasswordResetToken(): PasswordResetToken { - try { - const token = this.generateSecureToken(); - const createdAt = new Date(); - const expiresAt = new Date(createdAt.getTime() + (this.PASSWORD_RESET_TOKEN_EXPIRES_HOURS * 60 * 60 * 1000)); - - return { - token, - createdAt, - expiresAt - }; - } catch (error) { - logError('TokenService.generatePasswordResetToken error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to generate password reset token'); - } - } - - /** - * Check if a token has expired - * @param expiresAt - Expiration date of the token - * @returns True if token has expired, false otherwise - */ - static isTokenExpired(expiresAt: Date): boolean { - try { - return new Date() > expiresAt; - } catch (error) { - logError('TokenService.isTokenExpired error', error instanceof Error ? error : new Error(String(error))); - return true; // Assume expired on error for security - } - } - - /** - * Validate token format (basic validation) - * @param token - Token to validate - * @returns True if token format is valid, false otherwise - */ - static isValidTokenFormat(token: string): boolean { - try { - if (!token || typeof token !== 'string') { - return false; - } - - // Check if token is hexadecimal and has expected length - const hexRegex = /^[a-f0-9]+$/i; - const expectedLength = this.TOKEN_LENGTH * 2; // Each byte becomes 2 hex characters - - return hexRegex.test(token) && token.length === expectedLength; - } catch (error) { - logError('TokenService.isValidTokenFormat error', error instanceof Error ? error : new Error(String(error))); - return false; - } - } - - /** - * Generate a verification URL with token - * @param baseUrl - Base URL of the application - * @param token - Verification token - * @returns Complete verification URL - */ - static generateVerificationUrl(baseUrl: string, token: string): string { - try { - // Remove trailing slash from baseUrl if present - const cleanBaseUrl = baseUrl.replace(/\/$/, ''); - return `${cleanBaseUrl}/verify-email?token=${encodeURIComponent(token)}`; - } catch (error) { - logError('TokenService.generateVerificationUrl error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to generate verification URL'); - } - } - - /** - * Generate a password reset URL with token - * @param baseUrl - Base URL of the application - * @param token - Password reset token - * @returns Complete password reset URL - */ - static generatePasswordResetUrl(baseUrl: string, token: string): string { - try { - // Remove trailing slash from baseUrl if present - const cleanBaseUrl = baseUrl.replace(/\/$/, ''); - return `${cleanBaseUrl}/reset-password?token=${encodeURIComponent(token)}`; - } catch (error) { - logError('TokenService.generatePasswordResetUrl error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to generate password reset URL'); - } - } - - /** - * Hash a token for secure storage in database - * @param token - Plain text token to hash - * @returns Hashed token - */ - static async hashToken(token: string): Promise { - try { - if (!token || typeof token !== 'string') { - throw new Error('Token must be a non-empty string'); - } - - return crypto.createHash('sha256').update(token).digest('hex'); - } catch (error) { - logError('TokenService.hashToken error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to hash token'); - } - } - - /** - * Verify a plain text token against a hashed token - * @param plainToken - Plain text token to verify - * @param hashedToken - Hashed token to compare against - * @returns True if tokens match, false otherwise - */ - static async verifyToken(plainToken: string, hashedToken: string): Promise { - try { - if (!plainToken || !hashedToken) { - return false; - } - - const hashedPlainToken = await this.hashToken(plainToken); - return hashedPlainToken === hashedToken; - } catch (error) { - logError('TokenService.verifyToken error', error instanceof Error ? error : new Error(String(error))); - return false; - } - } - - /** - * Get token expiration info in human-readable format - * @param expiresAt - Expiration date - * @returns Human-readable expiration info - */ - static getExpirationInfo(expiresAt: Date): { expired: boolean; timeLeft: string } { - try { - const now = new Date(); - const expired = now > expiresAt; - - if (expired) { - const timeAgo = Math.floor((now.getTime() - expiresAt.getTime()) / (1000 * 60)); - return { - expired: true, - timeLeft: `Expired ${timeAgo} minute(s) ago` - }; - } - - const timeLeft = Math.floor((expiresAt.getTime() - now.getTime()) / (1000 * 60)); - const hours = Math.floor(timeLeft / 60); - const minutes = timeLeft % 60; - - let timeString = ''; - if (hours > 0) { - timeString = `${hours} hour(s)`; - if (minutes > 0) { - timeString += ` and ${minutes} minute(s)`; - } - } else { - timeString = `${minutes} minute(s)`; - } - - return { - expired: false, - timeLeft: `Expires in ${timeString}` - }; - } catch (error) { - logError('TokenService.getExpirationInfo error', error instanceof Error ? error : new Error(String(error))); - return { - expired: true, - timeLeft: 'Unable to determine expiration' - }; - } - } -} diff --git a/SerpentRace_Backend/src/Application/Services/TurnHistoryService.ts b/SerpentRace_Backend/src/Application/Services/TurnHistoryService.ts deleted file mode 100644 index 28d332fa..00000000 --- a/SerpentRace_Backend/src/Application/Services/TurnHistoryService.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { ITurnHistoryRepository } from '../../Domain/IRepository/ITurnHistoryRepository'; -import { TurnHistoryAggregate, TurnActionType, TurnActionData } from '../../Domain/Game/TurnHistoryAggregate'; -import { logOther, logError } from './Logger'; - -export class TurnHistoryService { - constructor(private turnHistoryRepository: ITurnHistoryRepository) {} - - /** - * Log a turn action - */ - async logTurnAction( - gameId: string, - playerId: string, - playerName: string, - turnNumber: number, - actionType: TurnActionType, - positionBefore: number, - positionAfter: number, - actionData?: TurnActionData - ): Promise { - try { - const turnHistory = new TurnHistoryAggregate(); - turnHistory.gameid = gameId; - turnHistory.playerid = playerId; - turnHistory.playername = playerName; - turnHistory.turnNumber = turnNumber; - turnHistory.actionType = actionType; - turnHistory.positionBefore = positionBefore; - turnHistory.positionAfter = positionAfter; - turnHistory.actionData = actionData || null; - - await this.turnHistoryRepository.save(turnHistory); - - logOther(`Turn history logged: ${actionType}`, { - gameId, - playerId, - playerName, - turnNumber, - positionBefore, - positionAfter - }); - } catch (error) { - logError('Failed to log turn history', error as Error); - // Don't throw - logging shouldn't break game flow - } - } - - /** - * Get game replay data - */ - async getGameReplay(gameId: string): Promise { - return await this.turnHistoryRepository.findByGameId(gameId); - } - - /** - * Get player's turn history in a game - */ - async getPlayerHistory(gameId: string, playerId: string): Promise { - return await this.turnHistoryRepository.findByGameAndPlayer(gameId, playerId); - } - - /** - * Get recent turns for a game - */ - async getRecentTurns(gameId: string, limit: number = 10): Promise { - return await this.turnHistoryRepository.findLastNTurns(gameId, limit); - } - - /** - * Clean up turn history for a finished game - */ - async cleanupGameHistory(gameId: string): Promise { - try { - await this.turnHistoryRepository.deleteByGameId(gameId); - logOther(`Turn history cleaned up for game ${gameId}`); - } catch (error) { - logError('Failed to cleanup turn history', error as Error); - } - } -} diff --git a/SerpentRace_Backend/src/Application/Services/ValidationMiddleware.ts b/SerpentRace_Backend/src/Application/Services/ValidationMiddleware.ts deleted file mode 100644 index cabe01b9..00000000 --- a/SerpentRace_Backend/src/Application/Services/ValidationMiddleware.ts +++ /dev/null @@ -1,341 +0,0 @@ -import { Request, Response, NextFunction } from 'express'; -import { ErrorResponseService } from './ErrorResponseService'; -import { logError, logWarning } from './Logger'; - -/** - * Common validation middleware functions for request validation - */ -export class ValidationMiddleware { - - /** - * Validates required fields in request body - * @param requiredFields Array of required field names - */ - static validateRequiredFields(requiredFields: string[]) { - return (req: Request, res: Response, next: NextFunction) => { - const missingFields: string[] = []; - - for (const field of requiredFields) { - if (!req.body || req.body[field] === undefined || req.body[field] === null || req.body[field] === '') { - missingFields.push(field); - } - } - - if (missingFields.length > 0) { - logWarning('Validation failed - missing required fields', { - missingFields, - endpoint: req.path - }, req, res); - return ErrorResponseService.sendBadRequest( - res, - 'Missing required fields', - { missingFields } - ); - } - - next(); - }; - } - - /** - * Validates field types in request body - * @param fieldTypes Object mapping field names to expected types - */ - static validateFieldTypes(fieldTypes: Record) { - return (req: Request, res: Response, next: NextFunction) => { - const typeErrors: string[] = []; - - for (const [field, expectedType] of Object.entries(fieldTypes)) { - if (req.body && req.body[field] !== undefined) { - const actualType = Array.isArray(req.body[field]) ? 'array' : typeof req.body[field]; - - if (actualType !== expectedType) { - typeErrors.push(`Field '${field}' should be ${expectedType}, got ${actualType}`); - } - } - } - - if (typeErrors.length > 0) { - logWarning('Validation failed - invalid field types', { - typeErrors, - endpoint: req.path - }, req, res); - return ErrorResponseService.sendBadRequest( - res, - 'Invalid field types', - { errors: typeErrors } - ); - } - - next(); - }; - } - - /** - * Validates string field length constraints - * @param constraints Object mapping field names to min/max length - */ - static validateStringLength(constraints: Record) { - return (req: Request, res: Response, next: NextFunction) => { - const lengthErrors: string[] = []; - - for (const [field, constraint] of Object.entries(constraints)) { - if (req.body && typeof req.body[field] === 'string') { - const value = req.body[field]; - - if (constraint.min !== undefined && value.length < constraint.min) { - lengthErrors.push(`Field '${field}' must be at least ${constraint.min} characters`); - } - - if (constraint.max !== undefined && value.length > constraint.max) { - lengthErrors.push(`Field '${field}' must not exceed ${constraint.max} characters`); - } - } - } - - if (lengthErrors.length > 0) { - logWarning('Validation failed - string length constraints', { - lengthErrors, - endpoint: req.path - }, req, res); - return ErrorResponseService.sendBadRequest( - res, - 'String length validation failed', - { errors: lengthErrors } - ); - } - - next(); - }; - } - - /** - * Validates email format - * @param emailFields Array of field names that should contain valid emails - */ - static validateEmailFormat(emailFields: string[]) { - return (req: Request, res: Response, next: NextFunction) => { - const emailErrors: string[] = []; - const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; - - for (const field of emailFields) { - if (req.body && req.body[field] && typeof req.body[field] === 'string') { - if (!emailRegex.test(req.body[field])) { - emailErrors.push(`Field '${field}' must contain a valid email address`); - } - } - } - - if (emailErrors.length > 0) { - logWarning('Validation failed - invalid email format', { - emailErrors, - endpoint: req.path - }, req, res); - return ErrorResponseService.sendBadRequest( - res, - 'Email format validation failed', - { errors: emailErrors } - ); - } - - next(); - }; - } - - /** - * Validates UUIDs format - * @param uuidFields Array of field names that should contain valid UUIDs - */ - static validateUUIDFormat(uuidFields: string[]) { - return (req: Request, res: Response, next: NextFunction) => { - const uuidErrors: string[] = []; - const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - - for (const field of uuidFields) { - const value = field.includes('.') - ? this.getNestedValue(req, field) - : req.body?.[field] || req.params?.[field] || req.query?.[field]; - - if (value && typeof value === 'string') { - if (!uuidRegex.test(value)) { - uuidErrors.push(`Field '${field}' must contain a valid UUID`); - } - } - } - - if (uuidErrors.length > 0) { - logWarning('Validation failed - invalid UUID format', { - uuidErrors, - endpoint: req.path - }, req, res); - return ErrorResponseService.sendBadRequest( - res, - 'UUID format validation failed', - { errors: uuidErrors } - ); - } - - next(); - }; - } - - /** - * Validates numeric constraints - * @param constraints Object mapping field names to min/max values - */ - static validateNumericConstraints(constraints: Record) { - return (req: Request, res: Response, next: NextFunction) => { - const numericErrors: string[] = []; - - for (const [field, constraint] of Object.entries(constraints)) { - if (req.body && typeof req.body[field] === 'number') { - const value = req.body[field]; - - if (constraint.min !== undefined && value < constraint.min) { - numericErrors.push(`Field '${field}' must be at least ${constraint.min}`); - } - - if (constraint.max !== undefined && value > constraint.max) { - numericErrors.push(`Field '${field}' must not exceed ${constraint.max}`); - } - } - } - - if (numericErrors.length > 0) { - logWarning('Validation failed - numeric constraints', { - numericErrors, - endpoint: req.path - }, req, res); - return ErrorResponseService.sendBadRequest( - res, - 'Numeric validation failed', - { errors: numericErrors } - ); - } - - next(); - }; - } - - /** - * Validates that arrays are not empty - * @param arrayFields Array of field names that should contain non-empty arrays - */ - static validateNonEmptyArrays(arrayFields: string[]) { - return (req: Request, res: Response, next: NextFunction) => { - const arrayErrors: string[] = []; - - for (const field of arrayFields) { - if (req.body && Array.isArray(req.body[field])) { - if (req.body[field].length === 0) { - arrayErrors.push(`Field '${field}' must not be empty`); - } - } else if (req.body && req.body[field] !== undefined) { - arrayErrors.push(`Field '${field}' must be an array`); - } - } - - if (arrayErrors.length > 0) { - logWarning('Validation failed - empty arrays', { - arrayErrors, - endpoint: req.path - }, req, res); - return ErrorResponseService.sendBadRequest( - res, - 'Array validation failed', - { errors: arrayErrors } - ); - } - - next(); - }; - } - - /** - * Validates allowed values for enum-like fields - * @param allowedValues Object mapping field names to arrays of allowed values - */ - static validateAllowedValues(allowedValues: Record) { - return (req: Request, res: Response, next: NextFunction) => { - const valueErrors: string[] = []; - - for (const [field, allowed] of Object.entries(allowedValues)) { - if (req.body && req.body[field] !== undefined) { - if (!allowed.includes(req.body[field])) { - valueErrors.push(`Field '${field}' must be one of: ${allowed.join(', ')}`); - } - } - } - - if (valueErrors.length > 0) { - logWarning('Validation failed - disallowed values', { - valueErrors, - endpoint: req.path - }, req, res); - return ErrorResponseService.sendBadRequest( - res, - 'Value validation failed', - { errors: valueErrors } - ); - } - - next(); - }; - } - - /** - * Combines multiple validation middlewares - * @param validations Array of validation middleware functions - */ - static combine(validations: Array<(req: Request, res: Response, next: NextFunction) => void>) { - return async (req: Request, res: Response, next: NextFunction) => { - let currentIndex = 0; - - const runNext = (error?: any) => { - if (error) { - return next(error); - } - - if (currentIndex >= validations.length) { - return next(); - } - - const currentValidation = validations[currentIndex++]; - - try { - currentValidation(req, res, (err?: any) => { - if (res.headersSent) { - return; // Response already sent, don't continue - } - runNext(err); - }); - } catch (error) { - logError('Validation middleware error', error as Error, req, res); - ErrorResponseService.sendInternalServerError(res); - } - }; - - runNext(); - }; - } - - /** - * Helper method to get nested values from request - * @param req Request object - * @param path Dot-notation path like 'body.user.id' - */ - private static getNestedValue(req: Request, path: string): any { - const parts = path.split('.'); - let current: any = req; - - for (const part of parts) { - if (current && typeof current === 'object') { - current = current[part]; - } else { - return undefined; - } - } - - return current; - } -} diff --git a/SerpentRace_Backend/src/Application/Services/WebSocketService.ts b/SerpentRace_Backend/src/Application/Services/WebSocketService.ts deleted file mode 100644 index 5ef871f1..00000000 --- a/SerpentRace_Backend/src/Application/Services/WebSocketService.ts +++ /dev/null @@ -1,1408 +0,0 @@ -import { Server as HttpServer } from 'http'; -import { Server as SocketIOServer, Socket } from 'socket.io'; -import { JWTService, TokenPayload } from './JWTService'; -import { ChatRepository } from '../../Infrastructure/Repository/ChatRepository'; -import { ChatArchiveRepository } from '../../Infrastructure/Repository/ChatArchiveRepository'; -import { UserRepository } from '../../Infrastructure/Repository/UserRepository'; -import { ChatAggregate, ChatType, ChatTypeType, Message } from '../../Domain/Chat/ChatAggregate'; -import { UserState } from '../../Domain/User/UserAggregate'; -import { logAuth, logError, logRequest, logWarning } from './Logger'; -import { RedisService, ActiveChatData } from './RedisService'; -import { v4 as uuidv4 } from 'uuid'; - -interface AuthenticatedSocket extends Socket { - userId?: string; - authLevel?: 0 | 1; - userStatus?: UserState; - orgId?: string | null; -} - -interface JoinChatData { - chatId: string; -} - -interface SendMessageData { - chatId: string; - message: string; -} - -interface CreateGroupData { - name: string; - userIds: string[]; -} - -interface CreateDirectChatData { - targetUserId: string; -} - -interface CreateGameChatData { - gameId: string; - gameName: string; - playerIds: string[]; -} - -interface DeleteChatData { - chatId: string; -} - -interface DeleteChatArchiveData { - archiveId: string; -} - -interface DeleteMessageData { - chatId: string; - messageId: string; -} - -// Game-related WebSocket interfaces (prepared for future implementation) -interface JoinGameRoomData { - gameCode: string; -} - -interface LeaveGameRoomData { - gameCode: string; -} - -interface GameStateUpdateData { - gameId: string; - gameCode: string; - players: string[]; - state: string; - currentTurn?: string; -} - -interface GameActionData { - gameId: string; - gameCode: string; - playerId: string; - action: 'pick_card' | 'play_card' | 'end_turn' | 'leave_game'; - data?: any; -} - -export class WebSocketService { - private io: SocketIOServer; - private jwtService: JWTService; - private chatRepository: ChatRepository; - private chatArchiveRepository: ChatArchiveRepository; - private userRepository: UserRepository; - private redisService: RedisService; - private connectedUsers: Map = new Map(); - private chatTimeout: number; - private maxMessagesPerUser: number; - private messageCleanupWeeks: number; - private userMessageCounts: Map = new Map(); - - constructor(httpServer: HttpServer) { - this.io = new SocketIOServer(httpServer, { - cors: { - origin: ['http://localhost:3000', 'http://localhost:3001', 'http://localhost:8080'], - methods: ['GET', 'POST'], - credentials: true - } - }); - - this.jwtService = new JWTService(); - this.chatRepository = new ChatRepository(); - this.chatArchiveRepository = new ChatArchiveRepository(); - this.userRepository = new UserRepository(); - this.redisService = RedisService.getInstance(); - this.chatTimeout = parseInt(process.env.CHAT_INACTIVITY_TIMEOUT_MINUTES || '30'); - this.maxMessagesPerUser = parseInt(process.env.CHAT_MAX_MESSAGES_PER_USER || '100'); - this.messageCleanupWeeks = parseInt(process.env.CHAT_MESSAGE_CLEANUP_WEEKS || '4'); - - // Initialize Redis connection - this.initializeRedis(); - - this.setupSocketHandlers(); - this.setupArchivingScheduler(); - - logRequest('WebSocket service initialized', undefined, undefined, { - chatTimeoutMinutes: this.chatTimeout - }); - } - - private async initializeRedis(): Promise { - try { - await this.redisService.connect(); - } catch (error) { - logError('Failed to initialize Redis connection', error as Error); - } - } - - private setupSocketHandlers() { - this.io.use(async (socket: AuthenticatedSocket, next) => { - try { - const token = socket.handshake.auth.token || socket.handshake.headers.cookie - ?.split(';') - .find(c => c.trim().startsWith('auth_token=')) - ?.split('=')[1]; - - if (!token) { - logWarning('WebSocket connection rejected - No token provided', { - socketId: socket.id, - ip: socket.handshake.address - }); - return next(new Error('Authentication required')); - } - - // Create a mock request object for JWT verification - const mockRequest = { - headers: { - authorization: `Bearer ${token}`, - cookie: `auth_token=${token}` - }, - cookies: { - auth_token: token - } - } as any; - - const payload = this.jwtService.verify(mockRequest); - if (!payload) { - logWarning('WebSocket connection rejected - Invalid token', { - socketId: socket.id, - ip: socket.handshake.address - }); - return next(new Error('Invalid token')); - } - - socket.userId = payload.userId; - socket.authLevel = payload.authLevel; - socket.userStatus = payload.userStatus; - socket.orgId = payload.orgId; - - logAuth('WebSocket connection authenticated', payload.userId, { - socketId: socket.id, - authLevel: payload.authLevel, - userStatus: payload.userStatus, - orgId: payload.orgId - }); - - next(); - } catch (error) { - logError('WebSocket authentication error', error as Error); - next(new Error('Authentication failed')); - } - }); - - this.io.on('connection', (socket: AuthenticatedSocket) => { - this.handleConnection(socket); - }); - } - - private async handleConnection(socket: AuthenticatedSocket) { - const userId = socket.userId!; - - // Store connected user - this.connectedUsers.set(userId, socket); - - // Load user's active chats and join rooms - try { - const userChats = await this.chatRepository.findActiveChatsForUser(userId); - const chatIds = userChats.map(chat => chat.id); - - // Join all chat rooms - chatIds.forEach(chatId => { - socket.join(chatId); - }); - - // Store user's chat memberships in Redis - await this.redisService.setActiveUser(userId, { - userId, - activeChatIds: chatIds, - lastActivity: new Date(), - isOnline: true - }); - - // Also store each active chat in Redis - for (const chat of userChats) { - await this.redisService.setActiveChat(chat.id, { - chatId: chat.id, - participants: chat.users, - lastActivity: chat.lastActivity || new Date(), - messageCount: chat.messages.length, - chatType: chat.type as 'direct' | 'group' | 'game', - gameId: chat.gameId || undefined, - name: chat.name || undefined - }); - } - - logAuth('User connected to WebSocket', userId, { - socketId: socket.id, - activeChats: chatIds.length - }); - - // Send user their active chats with unread counts - const chatsWithUnread = await Promise.all(userChats.map(async (chat) => ({ - id: chat.id, - type: chat.type, - name: chat.name, - gameId: chat.gameId, - users: chat.users, - lastActivity: chat.lastActivity, - unreadCount: this.calculateUnreadMessages(chat, userId), - isArchived: false - }))); - - socket.emit('chats:list', chatsWithUnread); - - } catch (error) { - logError('Error loading user chats on connection', error as Error, undefined, undefined); - socket.emit('error', { message: 'Failed to load chats' }); - } - - // Setup event handlers - socket.on('chat:join', (data: JoinChatData) => this.handleJoinChat(socket, data)); - socket.on('chat:leave', (data: JoinChatData) => this.handleLeaveChat(socket, data)); - socket.on('message:send', (data: SendMessageData) => this.handleSendMessage(socket, data)); - socket.on('group:create', (data: CreateGroupData) => this.handleCreateGroup(socket, data)); - socket.on('chat:direct', (data: CreateDirectChatData) => this.handleCreateDirectChat(socket, data)); - socket.on('game:chat:create', (data: CreateGameChatData) => this.handleCreateGameChat(socket, data)); - socket.on('chat:history', (data: JoinChatData) => this.handleGetChatHistory(socket, data)); - socket.on('chat:delete', (data: DeleteChatData) => this.handleDeleteChat(socket, data)); - socket.on('chat:archive:delete', (data: DeleteChatArchiveData) => this.handleDeleteChatArchive(socket, data)); - socket.on('message:delete', (data: DeleteMessageData) => this.handleDeleteMessage(socket, data)); - - socket.on('disconnect', () => this.handleDisconnection(socket)); - } - - private async handleJoinChat(socket: AuthenticatedSocket, data: JoinChatData) { - try { - const userId = socket.userId!; - const chat = await this.chatRepository.findById(data.chatId); - - if (!chat) { - socket.emit('error', { message: 'Chat not found' }); - return; - } - - // Check if user is member of this chat - if (!chat.users.includes(userId)) { - socket.emit('error', { message: 'Unauthorized to join this chat' }); - return; - } - - // Join the chat room - socket.join(data.chatId); - - // Add to user's active chats in Redis - await this.redisService.addUserToChat(userId, data.chatId); - - // Update chat activity in Redis - await this.redisService.updateChatActivity(data.chatId); - - // Update last activity in database - await this.chatRepository.update(data.chatId, { lastActivity: new Date() }); - - logAuth('User joined chat', userId, { - chatId: data.chatId, - chatType: chat.type - }); - - socket.emit('chat:joined', { - chatId: data.chatId, - messages: chat.messages.slice(-10) // Last 10 messages - }); - - } catch (error) { - logError('Error joining chat', error as Error); - socket.emit('error', { message: 'Failed to join chat' }); - } - } - - private async handleLeaveChat(socket: AuthenticatedSocket, data: JoinChatData) { - try { - const userId = socket.userId!; - - // Leave the chat room - socket.leave(data.chatId); - - // Remove from user's active chats in Redis - await this.redisService.removeUserFromChat(userId, data.chatId); - - logAuth('User left chat', userId, { - chatId: data.chatId - }); - - socket.emit('chat:left', { chatId: data.chatId }); - - } catch (error) { - logError('Error leaving chat', error as Error); - socket.emit('error', { message: 'Failed to leave chat' }); - } - } - - private async handleSendMessage(socket: AuthenticatedSocket, data: SendMessageData) { - try { - const userId = socket.userId!; - - // Rate limiting check - if (!this.checkMessageRateLimit(userId)) { - socket.emit('error', { message: `Rate limit exceeded. Maximum ${this.maxMessagesPerUser} messages per minute allowed.` }); - return; - } - - // Validate message is string and not empty - if (typeof data.message !== 'string' || !data.message.trim()) { - socket.emit('error', { message: 'Message must be a non-empty string' }); - return; - } - - const chat = await this.chatRepository.findById(data.chatId); - if (!chat) { - socket.emit('error', { message: 'Chat not found' }); - return; - } - - // Check if user is member of this chat - if (!chat.users.includes(userId)) { - socket.emit('error', { message: 'Unauthorized to send message to this chat' }); - return; - } - - // Create message - const message: Message = { - id: uuidv4(), - date: new Date(), - userid: userId, - text: data.message.trim() - }; - - // Manage message history based on chat type - let updatedMessages = [...chat.messages, message]; - updatedMessages = this.pruneMessages(updatedMessages, chat.type); - - // Update chat - await this.chatRepository.update(data.chatId, { - messages: updatedMessages, - lastActivity: new Date() - }); - - // Update chat activity in Redis with new message count - await this.redisService.updateChatActivity(data.chatId, updatedMessages.length); - - // Broadcast to all users in the chat room - this.io.to(data.chatId).emit('message:received', { - chatId: data.chatId, - message: message - }); - - // Send notifications to offline users - await this.notifyOfflineUsers(chat, message); - - logAuth('Message sent', userId, { - chatId: data.chatId, - messageLength: data.message.length, - chatType: chat.type - }); - - } catch (error) { - logError('Error sending message', error as Error); - socket.emit('error', { message: 'Failed to send message' }); - } - } - - private async handleCreateGroup(socket: AuthenticatedSocket, data: CreateGroupData) { - try { - const userId = socket.userId!; - - // Check if user is premium (required to create groups) - const user = await this.userRepository.findById(userId); - if (!user || user.state !== UserState.VERIFIED_PREMIUM) { - socket.emit('error', { message: 'Premium subscription required to create groups' }); - return; - } - - // Validate group data - if (!data.name?.trim()) { - socket.emit('error', { message: 'Group name is required' }); - return; - } - - if (!data.userIds || data.userIds.length === 0) { - socket.emit('error', { message: 'At least one member is required' }); - return; - } - - // Verify all users exist - const members = await Promise.all( - data.userIds.map(id => this.userRepository.findById(id)) - ); - - if (members.some(member => !member)) { - socket.emit('error', { message: 'One or more users not found' }); - return; - } - - // Create group chat - const groupChat = await this.chatRepository.create({ - type: ChatType.GROUP, - name: data.name.trim(), - createdBy: userId, - users: [userId, ...data.userIds], // Include creator - messages: [], - lastActivity: new Date() - }); - - // Add all members to the group room and store in Redis - const allMemberIds = data.userIds.concat(userId); - for (const memberId of allMemberIds) { - const memberSocket = this.connectedUsers.get(memberId); - if (memberSocket) { - memberSocket.join(groupChat.id); - } - - // Update user's chat list in Redis - await this.redisService.addUserToChat(memberId, groupChat.id); - } - - // Store the group chat in Redis - await this.redisService.setActiveChat(groupChat.id, { - chatId: groupChat.id, - participants: allMemberIds, - lastActivity: new Date(), - messageCount: 0, - chatType: 'group', - name: groupChat.name || undefined - }); - - // Notify all members - this.io.to(groupChat.id).emit('group:created', { - chat: { - id: groupChat.id, - type: groupChat.type, - name: groupChat.name, - createdBy: groupChat.createdBy, - users: groupChat.users, - messages: [] - } - }); - - logAuth('Group created', userId, { - groupId: groupChat.id, - groupName: data.name, - memberCount: groupChat.users.length - }); - - } catch (error) { - logError('Error creating group', error as Error); - socket.emit('error', { message: 'Failed to create group' }); - } - } - - private async handleCreateDirectChat(socket: AuthenticatedSocket, data: CreateDirectChatData) { - try { - const userId = socket.userId!; - - // Validate target user exists - const targetUser = await this.userRepository.findById(data.targetUserId); - if (!targetUser) { - socket.emit('error', { message: 'Target user not found' }); - return; - } - - // Check if direct chat already exists - const existingChats = await this.chatRepository.findByUserId(userId); - const existingDirectChat = existingChats.find(chat => - chat.type === ChatType.DIRECT && - chat.users.length === 2 && - chat.users.includes(data.targetUserId) - ); - - if (existingDirectChat) { - socket.emit('chat:direct:exists', { - chatId: existingDirectChat.id - }); - return; - } - - // Create direct chat - const directChat = await this.chatRepository.create({ - type: ChatType.DIRECT, - users: [userId, data.targetUserId], - messages: [], - lastActivity: new Date() - }); - - // Add both users to the chat room if they're online and store in Redis - const memberIds = [userId, data.targetUserId]; - for (const memberId of memberIds) { - const memberSocket = this.connectedUsers.get(memberId); - if (memberSocket) { - memberSocket.join(directChat.id); - } - - // Update user's chat list in Redis - await this.redisService.addUserToChat(memberId, directChat.id); - } - - // Store the direct chat in Redis - await this.redisService.setActiveChat(directChat.id, { - chatId: directChat.id, - participants: memberIds, - lastActivity: new Date(), - messageCount: 0, - chatType: 'direct' - }); - - // Notify both users - this.io.to(directChat.id).emit('chat:direct:created', { - chat: { - id: directChat.id, - type: directChat.type, - users: directChat.users, - messages: [] - } - }); - - logAuth('Direct chat created', userId, { - chatId: directChat.id, - targetUserId: data.targetUserId - }); - - } catch (error) { - logError('Error creating direct chat', error as Error); - socket.emit('error', { message: 'Failed to create direct chat' }); - } - } - - private async handleCreateGameChat(socket: AuthenticatedSocket, data: CreateGameChatData) { - try { - const userId = socket.userId!; - - // Check if game chat already exists - const existingGameChat = await this.chatRepository.findByGameId(data.gameId); - if (existingGameChat) { - socket.emit('game:chat:exists', { - chatId: existingGameChat.id - }); - return; - } - - // Create game chat - const gameChat = await this.chatRepository.create({ - type: ChatType.GAME, - name: data.gameName, - gameId: data.gameId, - users: data.playerIds, - messages: [], - lastActivity: new Date() - }); - - // Add all players to the game chat room if they're online and store in Redis - for (const playerId of data.playerIds) { - const playerSocket = this.connectedUsers.get(playerId); - if (playerSocket) { - playerSocket.join(gameChat.id); - } - - // Update user's chat list in Redis - await this.redisService.addUserToChat(playerId, gameChat.id); - } - - // Store the game chat in Redis - await this.redisService.setActiveChat(gameChat.id, { - chatId: gameChat.id, - participants: data.playerIds, - lastActivity: new Date(), - messageCount: 0, - chatType: 'game', - gameId: gameChat.gameId || undefined, - name: gameChat.name || undefined - }); - - // Notify all players - this.io.to(gameChat.id).emit('game:chat:created', { - chat: { - id: gameChat.id, - type: gameChat.type, - name: gameChat.name, - gameId: gameChat.gameId, - users: gameChat.users, - messages: [] - } - }); - - logAuth('Game chat created', userId, { - chatId: gameChat.id, - gameId: data.gameId, - gameName: data.gameName, - playerCount: data.playerIds.length - }); - - } catch (error) { - logError('Error creating game chat', error as Error); - socket.emit('error', { message: 'Failed to create game chat' }); - } - } - - private async handleGetChatHistory(socket: AuthenticatedSocket, data: JoinChatData) { - try { - const userId = socket.userId!; - const chat = await this.chatRepository.findById(data.chatId); - - if (!chat) { - // Check if it's archived - const archived = await this.chatRepository.getArchivedChat(data.chatId); - if (archived) { - socket.emit('chat:history:archived', { - chatId: data.chatId, - messages: archived.archivedMessages, - chatType: archived.chatType, - isGameChat: archived.chatType === ChatType.GAME - }); - } else { - socket.emit('error', { message: 'Chat not found' }); - } - return; - } - - // Check if user has access - if (!chat.users.includes(userId)) { - socket.emit('error', { message: 'Unauthorized to view this chat' }); - return; - } - - socket.emit('chat:history', { - chatId: data.chatId, - messages: chat.messages, - chatInfo: { - type: chat.type, - name: chat.name, - gameId: chat.gameId, - users: chat.users - } - }); - - } catch (error) { - logError('Error getting chat history', error as Error); - socket.emit('error', { message: 'Failed to get chat history' }); - } - } - - private async handleDeleteChat(socket: AuthenticatedSocket, data: DeleteChatData) { - try { - const userId = socket.userId!; - const chat = await this.chatRepository.findById(data.chatId); - - if (!chat) { - socket.emit('error', { message: 'Chat not found' }); - return; - } - - // Check if user is member of this chat - if (!chat.users.includes(userId)) { - socket.emit('error', { message: 'Unauthorized to delete this chat' }); - return; - } - - // Perform soft delete - const deletedChat = await this.chatRepository.softDelete(data.chatId); - if (!deletedChat) { - socket.emit('error', { message: 'Failed to delete chat' }); - return; - } - - // Remove from Redis active chats - await this.redisService.removeActiveChat(data.chatId); - - // Notify all participants that the chat has been deleted - this.io.to(data.chatId).emit('chat:deleted', { - chatId: data.chatId, - deletedBy: userId - }); - - // Remove all users from the chat room - for (const participantId of chat.users) { - const participantSocket = this.connectedUsers.get(participantId); - if (participantSocket) { - participantSocket.leave(data.chatId); - } - // Remove from user's active chats in Redis - await this.redisService.removeUserFromChat(participantId, data.chatId); - } - - logAuth('Chat deleted', userId, { - chatId: data.chatId, - chatType: chat.type, - participantCount: chat.users.length - }); - - socket.emit('chat:delete:success', { - chatId: data.chatId, - message: 'Chat deleted successfully' - }); - - } catch (error) { - logError('Error deleting chat', error as Error); - socket.emit('error', { message: 'Failed to delete chat' }); - } - } - - private async handleDeleteChatArchive(socket: AuthenticatedSocket, data: DeleteChatArchiveData) { - try { - const userId = socket.userId!; - const archive = await this.chatArchiveRepository.findById(data.archiveId); - - if (!archive) { - socket.emit('error', { message: 'Chat archive not found' }); - return; - } - - // Check if user was a participant in the archived chat - if (!archive.participants.includes(userId)) { - socket.emit('error', { message: 'Unauthorized to delete this chat archive' }); - return; - } - - // Hard delete the archive (since it's already archived) - await this.chatArchiveRepository.delete(data.archiveId); - - logAuth('Chat archive deleted', userId, { - archiveId: data.archiveId, - originalChatId: archive.chatId, - chatType: archive.chatType, - participantCount: archive.participants.length - }); - - socket.emit('chat:archive:delete:success', { - archiveId: data.archiveId, - message: 'Chat archive deleted successfully' - }); - - } catch (error) { - logError('Error deleting chat archive', error as Error); - socket.emit('error', { message: 'Failed to delete chat archive' }); - } - } - - private async handleDeleteMessage(socket: AuthenticatedSocket, data: DeleteMessageData) { - try { - const userId = socket.userId!; - - // Check if user has admin/moderator privileges - const user = await this.userRepository.findById(userId); - if (!user || user.state !== UserState.ADMIN) { // Check if user is admin - socket.emit('error', { message: 'Insufficient permissions to delete messages' }); - return; - } - - const success = await this.deleteMessage(data.chatId, data.messageId, userId); - if (success) { - socket.emit('message:delete:success', { - chatId: data.chatId, - messageId: data.messageId, - message: 'Message deleted successfully' - }); - } else { - socket.emit('error', { message: 'Failed to delete message or message not found' }); - } - - } catch (error) { - logError('Error handling delete message request', error as Error); - socket.emit('error', { message: 'Failed to delete message' }); - } - } - - private async handleDisconnection(socket: AuthenticatedSocket) { - const userId = socket.userId; - if (userId) { - this.connectedUsers.delete(userId); - - // Update user status in Redis - const userData = await this.redisService.getActiveUser(userId); - if (userData) { - userData.isOnline = false; - userData.lastActivity = new Date(); - await this.redisService.setActiveUser(userId, userData); - } - - logAuth('User disconnected from WebSocket', userId, { - socketId: socket.id - }); - } - } - - // Utility methods - private calculateUnreadMessages(chat: ChatAggregate, userId: string): number { - // Simple implementation - count messages after user's last seen - // In production, you'd store lastSeen timestamp per user per chat - return chat.messages.filter(msg => msg.userid !== userId).length; - } - - private pruneMessages(messages: Message[], chatType: ChatTypeType): Message[] { - const twoWeeksAgo = new Date(Date.now() - 14 * 24 * 60 * 60 * 1000); - - // Remove messages older than 2 weeks - let prunedMessages = messages.filter(msg => new Date(msg.date) > twoWeeksAgo); - - // For group chats, only apply the 2-week time limit (unlimited messages per user) - if (chatType === ChatType.GROUP) { - return prunedMessages.sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime()); - } - - // For direct and game chats, apply both time limit and per-user message limit - // Group by user and keep last 10 messages per user - const messagesByUser = new Map(); - prunedMessages.forEach(msg => { - if (!messagesByUser.has(msg.userid)) { - messagesByUser.set(msg.userid, []); - } - messagesByUser.get(msg.userid)!.push(msg); - }); - - // Keep only last 10 messages per user - const finalMessages: Message[] = []; - messagesByUser.forEach((userMessages, userId) => { - const last10 = userMessages.slice(-10); - finalMessages.push(...last10); - }); - - // Sort by date - return finalMessages.sort((a, b) => new Date(a.date).getTime() - new Date(b.date).getTime()); - } - - private async notifyOfflineUsers(chat: ChatAggregate, message: Message) { - // Find users who are not currently connected - const offlineUsers = chat.users.filter(userId => - userId !== message.userid && !this.connectedUsers.has(userId) - ); - - // In a real implementation, you would send push notifications or emails here - if (offlineUsers.length > 0) { - logRequest('Offline users to notify', undefined, undefined, { - chatId: chat.id, - offlineUserCount: offlineUsers.length, - messageFrom: message.userid - }); - } - } - - private setupArchivingScheduler() { - // Run every hour to check for inactive chats - setInterval(async () => { - try { - // First, cleanup inactive chats from Redis and get their IDs - const inactiveChatIds = await this.redisService.cleanupInactiveChats(this.chatTimeout); - - // Archive the inactive chats in the database - for (const chatId of inactiveChatIds) { - const chat = await this.chatRepository.findById(chatId); - if (chat) { - await this.chatRepository.archiveChat(chat); - logRequest('Chat archived due to inactivity', undefined, undefined, { - chatId: chat.id, - chatType: chat.type, - lastActivity: chat.lastActivity, - messageCount: chat.messages.length - }); - } - } - - // Also find inactive chats from database that might not be in Redis - const dbInactiveChats = await this.chatRepository.findInactiveChats(this.chatTimeout); - const additionalInactiveChats = dbInactiveChats.filter(chat => - !inactiveChatIds.includes(chat.id) - ); - - for (const chat of additionalInactiveChats) { - await this.chatRepository.archiveChat(chat); - logRequest('Chat archived due to inactivity (from DB)', undefined, undefined, { - chatId: chat.id, - chatType: chat.type, - lastActivity: chat.lastActivity, - messageCount: chat.messages.length - }); - } - - const totalArchived = inactiveChatIds.length + additionalInactiveChats.length; - if (totalArchived > 0) { - logRequest('Chat archiving completed', undefined, undefined, { - archivedCount: totalArchived, - redisCleanedUp: inactiveChatIds.length, - databaseCleanedUp: additionalInactiveChats.length, - timeoutMinutes: this.chatTimeout - }); - } - - // Cleanup old messages from archived chats based on messageCleanupWeeks - await this.cleanupOldMessages(); - - } catch (error) { - logError('Error in chat archiving scheduler', error as Error); - } - }, 60 * 60 * 1000); // 1 hour - - // Also run message count cleanup every 5 minutes - setInterval(() => { - this.cleanupMessageCounts(); - }, 5 * 60 * 1000); // 5 minutes - } - - // Public methods for game integration - public async createGameChat(gameId: string, gameName: string, playerIds: string[]): Promise { - try { - const existingGameChat = await this.chatRepository.findByGameId(gameId); - if (existingGameChat) { - return existingGameChat; - } - - const gameChat = await this.chatRepository.create({ - type: ChatType.GAME, - name: gameName, - gameId: gameId, - users: playerIds, - messages: [], - lastActivity: new Date() - }); - - // Notify connected players - playerIds.forEach(playerId => { - const playerSocket = this.connectedUsers.get(playerId); - if (playerSocket) { - playerSocket.join(gameChat.id); - playerSocket.emit('game:chat:created', { - chat: { - id: gameChat.id, - type: gameChat.type, - name: gameChat.name, - gameId: gameChat.gameId, - users: gameChat.users, - messages: [] - } - }); - } - }); - - return gameChat; - } catch (error) { - logError('Error creating game chat programmatically', error as Error); - return null; - } - } - - public getConnectedUserCount(): number { - return this.connectedUsers.size; - } - - public isUserConnected(userId: string): boolean { - return this.connectedUsers.has(userId); - } - - public async cleanup(): Promise { - try { - await this.redisService.disconnect(); - } catch (error) { - logError('Error during WebSocket service cleanup', error as Error); - } - } - - /** - * Manually trigger cleanup of old messages and chats - * This can be called by admin endpoints for maintenance - */ - public async triggerManualCleanup(): Promise<{ deletedArchives: number; deletedChats: number }> { - try { - const cutoffDate = new Date(); - cutoffDate.setDate(cutoffDate.getDate() - (this.messageCleanupWeeks * 7)); - - // Clean up old archived messages - const deletedArchivesCount = await this.chatArchiveRepository.cleanup(this.messageCleanupWeeks * 7); - - // Clean up soft-deleted chats - const softDeletedChats = await this.chatRepository.findByPageIncludingDeleted(0, 1000); - let deletedChatsCount = 0; - - for (const chat of softDeletedChats.chats) { - if (chat.state === 2 && chat.updateDate < cutoffDate) { // SOFT_DELETE state = 2 - await this.chatRepository.delete(chat.id); // Hard delete - deletedChatsCount++; - } - } - - logRequest('Manual cleanup triggered', undefined, undefined, { - cutoffDate: cutoffDate.toISOString(), - cleanupWeeks: this.messageCleanupWeeks, - deletedArchives: deletedArchivesCount, - deletedChats: deletedChatsCount, - triggeredBy: 'manual' - }); - - return { deletedArchives: deletedArchivesCount, deletedChats: deletedChatsCount }; - - } catch (error) { - logError('Error during manual cleanup', error as Error); - throw error; - } - } - - /** - * Clean up old messages from archived chats based on messageCleanupWeeks setting - */ - private async cleanupOldMessages(): Promise { - try { - const cutoffDate = new Date(); - cutoffDate.setDate(cutoffDate.getDate() - (this.messageCleanupWeeks * 7)); - - // Clean up old archived messages using ChatArchiveRepository - const deletedArchivesCount = await this.chatArchiveRepository.cleanup(this.messageCleanupWeeks * 7); - - // Also clean up soft-deleted chats from the main repository - // Get all soft-deleted chats that are older than the cleanup period - const softDeletedChats = await this.chatRepository.findByPageIncludingDeleted(0, 1000); - let deletedChatsCount = 0; - - for (const chat of softDeletedChats.chats) { - if (chat.state === 2 && chat.updateDate < cutoffDate) { // SOFT_DELETE state = 2 - await this.chatRepository.delete(chat.id); // Hard delete - deletedChatsCount++; - } - } - - logRequest('Old message cleanup completed', undefined, undefined, { - cutoffDate: cutoffDate.toISOString(), - cleanupWeeks: this.messageCleanupWeeks, - deletedArchives: deletedArchivesCount, - deletedChats: deletedChatsCount, - note: 'Cleanup completed using both ChatRepository and ChatArchiveRepository' - }); - - } catch (error) { - logError('Error cleaning up old messages', error as Error); - } - } - - /** - * Check if user has exceeded message rate limit - * @param userId User ID to check - * @returns true if within limit, false if exceeded - */ - private checkMessageRateLimit(userId: string): boolean { - const now = Date.now(); - const minute = 60 * 1000; // 1 minute in milliseconds - - const userStats = this.userMessageCounts.get(userId) || { count: 0, lastReset: now }; - - // Reset counter if more than a minute has passed - if (now - userStats.lastReset >= minute) { - userStats.count = 0; - userStats.lastReset = now; - } - - // Check if user is within limits - if (userStats.count >= this.maxMessagesPerUser) { - return false; - } - - // Increment counter - userStats.count++; - this.userMessageCounts.set(userId, userStats); - - return true; - } - - /** - * Delete a specific message from chat history - * This can be used for moderation purposes - */ - public async deleteMessage(chatId: string, messageId: string, moderatorUserId: string): Promise { - try { - // Get the chat - const chat = await this.chatRepository.findById(chatId); - if (!chat) { - // Check archived chats - const archivedChat = await this.chatRepository.getArchivedChat(chatId); - if (!archivedChat) { - logWarning('Chat not found for message deletion', { - chatId, - messageId, - moderatorUserId - }); - return false; - } - - // Remove message from archived chat - const updatedMessages = archivedChat.archivedMessages.filter(msg => msg.id !== messageId); - if (updatedMessages.length === archivedChat.archivedMessages.length) { - logWarning('Message not found in archived chat', { - chatId, - messageId, - moderatorUserId - }); - return false; - } - - // Update archived chat - await this.chatArchiveRepository.create({ - ...archivedChat, - archivedMessages: updatedMessages - }); - - logAuth('Message deleted from archived chat', moderatorUserId, { - chatId, - messageId, - originalMessageCount: archivedChat.archivedMessages.length, - newMessageCount: updatedMessages.length - }); - - return true; - } - - // Remove message from active chat - const updatedMessages = chat.messages.filter(msg => msg.id !== messageId); - if (updatedMessages.length === chat.messages.length) { - logWarning('Message not found in active chat', { - chatId, - messageId, - moderatorUserId - }); - return false; - } - - // Update active chat - await this.chatRepository.update(chatId, { - messages: updatedMessages - }); - - // Notify all users in the chat about message deletion - this.io.to(chatId).emit('message:deleted', { - chatId, - messageId, - deletedBy: moderatorUserId - }); - - logAuth('Message deleted from active chat', moderatorUserId, { - chatId, - messageId, - originalMessageCount: chat.messages.length, - newMessageCount: updatedMessages.length - }); - - return true; - - } catch (error) { - logError('Error deleting message', error as Error); - return false; - } - } - - /** - * Clean up old user message count entries (called periodically) - */ - private cleanupMessageCounts(): void { - const now = Date.now(); - const minute = 60 * 1000; - - for (const [userId, stats] of this.userMessageCounts.entries()) { - if (now - stats.lastReset >= minute * 5) { // Keep for 5 minutes - this.userMessageCounts.delete(userId); - } - } - } - - // Game-related WebSocket handlers (prepared for future implementation) - - /** - * Handle player joining a game room for real-time updates - * @param socket The authenticated socket - * @param data Game room data containing game code - */ - private async handleJoinGameRoom(socket: AuthenticatedSocket, data: JoinGameRoomData) { - try { - const userId = socket.userId!; - const gameRoom = `game_${data.gameCode}`; - - logAuth('Player joining game room', userId, { - gameCode: data.gameCode, - gameRoom, - socketId: socket.id - }); - - // Join the WebSocket room for this game - await socket.join(gameRoom); - - // Emit confirmation to the player - socket.emit('game:joined', { - gameCode: data.gameCode, - room: gameRoom, - message: 'Successfully joined game room' - }); - - // Notify other players in the game room - socket.to(gameRoom).emit('game:player_joined', { - playerId: userId, - gameCode: data.gameCode, - timestamp: new Date().toISOString() - }); - - logAuth('Player joined game room successfully', userId, { - gameCode: data.gameCode, - gameRoom - }); - - } catch (error) { - logError('Error joining game room', error as Error); - socket.emit('game:error', { - message: 'Failed to join game room', - gameCode: data.gameCode - }); - } - } - - /** - * Handle player leaving a game room - * @param socket The authenticated socket - * @param data Game room data containing game code - */ - private async handleLeaveGameRoom(socket: AuthenticatedSocket, data: LeaveGameRoomData) { - try { - const userId = socket.userId!; - const gameRoom = `game_${data.gameCode}`; - - logAuth('Player leaving game room', userId, { - gameCode: data.gameCode, - gameRoom, - socketId: socket.id - }); - - // Leave the WebSocket room - await socket.leave(gameRoom); - - // Notify other players in the game room - socket.to(gameRoom).emit('game:player_left', { - playerId: userId, - gameCode: data.gameCode, - timestamp: new Date().toISOString() - }); - - // Confirm to the leaving player - socket.emit('game:left', { - gameCode: data.gameCode, - message: 'Successfully left game room' - }); - - logAuth('Player left game room successfully', userId, { - gameCode: data.gameCode, - gameRoom - }); - - } catch (error) { - logError('Error leaving game room', error as Error); - socket.emit('game:error', { - message: 'Failed to leave game room', - gameCode: data.gameCode - }); - } - } - - /** - * Handle game actions (cards, turns, etc.) - prepared for future implementation - * @param socket The authenticated socket - * @param data Game action data - */ - private async handleGameAction(socket: AuthenticatedSocket, data: GameActionData) { - try { - const userId = socket.userId!; - const gameRoom = `game_${data.gameCode}`; - - logAuth('Game action received', userId, { - gameId: data.gameId, - gameCode: data.gameCode, - action: data.action, - socketId: socket.id - }); - - // Validate that the player is authorized to perform this action - if (data.playerId !== userId) { - socket.emit('game:error', { - message: 'Unauthorized action', - gameCode: data.gameCode - }); - return; - } - - // TODO: Implement specific game logic here - // This will be implemented when the game flow is discussed - - // For now, just broadcast the action to other players - socket.to(gameRoom).emit('game:action_performed', { - playerId: userId, - gameCode: data.gameCode, - action: data.action, - data: data.data, - timestamp: new Date().toISOString() - }); - - // Confirm action to the acting player - socket.emit('game:action_confirmed', { - gameCode: data.gameCode, - action: data.action, - message: 'Action processed successfully' - }); - - logAuth('Game action processed', userId, { - gameId: data.gameId, - gameCode: data.gameCode, - action: data.action - }); - - } catch (error) { - logError('Error processing game action', error as Error); - socket.emit('game:error', { - message: 'Failed to process game action', - gameCode: data.gameCode, - action: data.action - }); - } - } - - /** - * Broadcast game state updates to all players in a game - * @param gameCode The game code - * @param gameState The updated game state - */ - public broadcastGameStateUpdate(gameCode: string, gameState: GameStateUpdateData): void { - try { - const gameRoom = `game_${gameCode}`; - - this.io.to(gameRoom).emit('game:state_updated', { - ...gameState, - timestamp: new Date().toISOString() - }); - - logRequest('Game state broadcasted', undefined, undefined, { - gameCode, - gameRoom, - playerCount: gameState.players.length - }); - - } catch (error) { - logError('Error broadcasting game state', error as Error); - } - } - - /** - * Notify players when a game starts - * @param gameCode The game code - * @param players Array of player IDs - */ - public notifyGameStart(gameCode: string, players: string[]): void { - try { - const gameRoom = `game_${gameCode}`; - - this.io.to(gameRoom).emit('game:started', { - gameCode, - players, - message: 'Game has started!', - timestamp: new Date().toISOString() - }); - - logRequest('Game start notification sent', undefined, undefined, { - gameCode, - playerCount: players.length - }); - - } catch (error) { - logError('Error notifying game start', error as Error); - } - } -} diff --git a/SerpentRace_Backend/src/Application/User/commands/ActivateUserCommand.ts b/SerpentRace_Backend/src/Application/User/commands/ActivateUserCommand.ts deleted file mode 100644 index 0cad88e6..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/ActivateUserCommand.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface ActivateUserCommand { - id: string; -} diff --git a/SerpentRace_Backend/src/Application/User/commands/ActivateUserCommandHandler.ts b/SerpentRace_Backend/src/Application/User/commands/ActivateUserCommandHandler.ts deleted file mode 100644 index b4a22ab0..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/ActivateUserCommandHandler.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { ActivateUserCommand } from './ActivateUserCommand'; - - -export class ActivateUserCommandHandler { - constructor(private readonly userRepo: IUserRepository) {} - - async execute(cmd: ActivateUserCommand): Promise { - await this.userRepo.activate(cmd.id); - return true; - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/User/commands/CreateUserCommand.ts b/SerpentRace_Backend/src/Application/User/commands/CreateUserCommand.ts deleted file mode 100644 index 25b11ae5..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/CreateUserCommand.ts +++ /dev/null @@ -1,11 +0,0 @@ -export interface CreateUserCommand { - username: string; - password: string; - email: string; - fname: string; - lname: string; - code?: string; - orgid?: string; - phone?: string; - language: 'hu' | 'de' | 'en'; -} diff --git a/SerpentRace_Backend/src/Application/User/commands/CreateUserCommandHandler.ts b/SerpentRace_Backend/src/Application/User/commands/CreateUserCommandHandler.ts deleted file mode 100644 index 6c9a2cf5..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/CreateUserCommandHandler.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { CreateUserCommand } from './CreateUserCommand'; -import { ShortUserDto } from '../../DTOs/UserDto'; -import { UserAggregate, UserState } from '../../../Domain/User/UserAggregate'; -import { UserMapper } from '../../DTOs/Mappers/UserMapper'; -import { PasswordService } from '../../Services/PasswordService'; -import { EmailService } from '../../Services/EmailService'; -import { TokenService } from '../../Services/TokenService'; -import { logDatabase, logError, logAuth, logWarning } from '../../Services/Logger'; - -export class CreateUserCommandHandler { - constructor( - private readonly userRepo: IUserRepository, - private readonly emailService: EmailService - ) {} - - async execute(cmd: CreateUserCommand): Promise { - try { - // Validate password strength - const passwordValidation = PasswordService.validatePasswordStrength(cmd.password); - if (!passwordValidation.isValid) { - throw new Error(`Password validation failed: ${passwordValidation.errors.join(', ')}`); - } - - const user = new UserAggregate(); - user.username = cmd.username; - - // Hash the password before storing - user.password = await PasswordService.hashPassword(cmd.password); - - // Generate verification token - const verificationTokenData = TokenService.generateVerificationToken(); - user.token = await TokenService.hashToken(verificationTokenData.token); - user.TokenExpires = verificationTokenData.expiresAt; - - user.email = cmd.email; - user.fname = cmd.fname; - user.lname = cmd.lname; - user.orgid = cmd.orgid || null; - user.phone = cmd.phone || null; - user.state = UserState.REGISTERED_NOT_VERIFIED; - - const created = await this.userRepo.create(user); - - // Send verification email (non-blocking) - this.sendVerificationEmailAsync(cmd.language, created, verificationTokenData.token); - - return UserMapper.toShortDto(created); - } catch (error) { - // Only log the error once here, don't log again in router - const errorMessage = (error as Error).message; - - // Re-throw validation errors as-is (don't log as these are user input errors) - if (errorMessage.includes('Password validation failed')) { - throw error; - } - - // Handle database constraint errors - if (errorMessage.includes('duplicate') || errorMessage.includes('unique') || - errorMessage.includes('UNIQUE constraint') || errorMessage.includes('already exists')) { - throw new Error('User with this username or email already exists'); - } - - // Log database/system errors but throw user-friendly message - logError('CreateUserCommandHandler error', error as Error); - throw new Error('Failed to create user'); - } - } - - private async sendVerificationEmailAsync(language: 'hu' | 'de' | 'en', user: UserAggregate, token: string): Promise { - try { - const baseUrl = process.env.FRONTEND_URL || 'http://localhost:5173'; - const verificationUrl = TokenService.generateVerificationUrl(baseUrl, token); - - const emailSent = await this.emailService.sendVerificationEmail( - user.email, - `${user.fname} ${user.lname}`, - token, - verificationUrl, - language - ); - - if (!emailSent) { - logWarning('Failed to send verification email', { email: user.email, userId: user.id }); - } else { - logAuth('Verification email sent successfully', user.id, { email: user.email }); - } - } catch (emailError) { - logError('Error sending verification email', emailError as Error); - } - } -} diff --git a/SerpentRace_Backend/src/Application/User/commands/DeactivateUserCommand.ts b/SerpentRace_Backend/src/Application/User/commands/DeactivateUserCommand.ts deleted file mode 100644 index 3d24d35c..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/DeactivateUserCommand.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface DeactivateUserCommand { - id: string; -} diff --git a/SerpentRace_Backend/src/Application/User/commands/DeactivateUserCommandHandler.ts b/SerpentRace_Backend/src/Application/User/commands/DeactivateUserCommandHandler.ts deleted file mode 100644 index 08880f0c..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/DeactivateUserCommandHandler.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { DeactivateUserCommand } from './DeactivateUserCommand'; - - -export class DeactivateUserCommandHandler { - constructor(private readonly userRepo: IUserRepository) {} - - async execute(cmd: DeactivateUserCommand): Promise { - await this.userRepo.deactivate(cmd.id); - return true; - } -} diff --git a/SerpentRace_Backend/src/Application/User/commands/DeleteUserCommand.ts b/SerpentRace_Backend/src/Application/User/commands/DeleteUserCommand.ts deleted file mode 100644 index 22de9f40..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/DeleteUserCommand.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface DeleteUserCommand { - id: string; - soft?: boolean; -} diff --git a/SerpentRace_Backend/src/Application/User/commands/DeleteUserCommandHandler.ts b/SerpentRace_Backend/src/Application/User/commands/DeleteUserCommandHandler.ts deleted file mode 100644 index eb1af0ae..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/DeleteUserCommandHandler.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { DeleteUserCommand } from './DeleteUserCommand'; - - -export class DeleteUserCommandHandler { - constructor(private readonly userRepo: IUserRepository) {} - - async execute(cmd: DeleteUserCommand): Promise { - if (cmd.soft) { - await this.userRepo.softDelete(cmd.id); - } else { - await this.userRepo.delete(cmd.id); - } - return true; - } -} diff --git a/SerpentRace_Backend/src/Application/User/commands/LoginCommand.ts b/SerpentRace_Backend/src/Application/User/commands/LoginCommand.ts deleted file mode 100644 index b4861329..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/LoginCommand.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface LoginCommand { - username: string; - password: string; -} diff --git a/SerpentRace_Backend/src/Application/User/commands/LoginCommandHandler.ts b/SerpentRace_Backend/src/Application/User/commands/LoginCommandHandler.ts deleted file mode 100644 index a7df6f72..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/LoginCommandHandler.ts +++ /dev/null @@ -1,223 +0,0 @@ -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { IOrganizationRepository } from '../../../Domain/IRepository/IOrganizationRepository'; -import { LoginCommand } from './LoginCommand'; -import { ShortUserDto } from '../../DTOs/UserDto'; -import { UserMapper } from '../../DTOs/Mappers/UserMapper'; -import { PasswordService } from '../../Services/PasswordService'; -import { JWTService } from '../../Services/JWTService'; -import { UserState } from '../../../Domain/User/UserAggregate'; -import { logAuth, logDatabase, logError, logWarning } from '../../Services/Logger'; -import { Response } from 'express'; - -export interface LoginResponse { - user: ShortUserDto; - token?: string; - refreshToken?: string; - requiresOrgReauth?: boolean; - orgLoginUrl?: string; - organizationName?: string; -} - -export class LoginCommandHandler { - constructor( - private readonly userRepo: IUserRepository, - private readonly jwtService: JWTService, - private readonly orgRepo: IOrganizationRepository - ) {} - - async execute(cmd: LoginCommand, res?: Response): Promise { - const startTime = Date.now(); - - try { - logAuth('Login attempt', undefined, { username: cmd.username }); - - const user = await this.userRepo.findByUsername(cmd.username) || - await this.userRepo.findByEmail(cmd.username); - - logDatabase('User lookup completed', undefined, Date.now() - startTime, { - found: !!user, - searchBy: cmd.username.includes('@') ? 'email' : 'username' - }); - - if (!user) { - logAuth('Login failed - User not found', undefined, { username: cmd.username }); - throw new Error('Invalid username'); - } - - // Check if user account state allows login - const restrictedStates = [ - UserState.REGISTERED_NOT_VERIFIED, - UserState.SOFT_DELETE, - UserState.DEACTIVATED - ]; - - if (restrictedStates.includes(user.state)) { - let stateDescription = ''; - let errorMessage = ''; - switch (user.state) { - case UserState.REGISTERED_NOT_VERIFIED: - stateDescription = 'Email not verified'; - errorMessage = 'User account not verified'; - break; - case UserState.SOFT_DELETE: - stateDescription = 'Account deleted'; - errorMessage = 'User account deactivated'; - break; - case UserState.DEACTIVATED: - stateDescription = 'Account deactivated'; - errorMessage = 'User account deactivated'; - break; - } - - logAuth('Login failed - Account state restriction', user.id, { - username: cmd.username, - userState: user.state, - stateDescription - }); - throw new Error(errorMessage); - } - - try { - const passwordStartTime = Date.now(); - const isPasswordValid = await PasswordService.verifyPassword(cmd.password, user.password); - - logAuth('Password verification completed', user.id, { - valid: isPasswordValid, - verificationTime: Date.now() - passwordStartTime - }); - - if (!isPasswordValid) { - logWarning('Login failed - Invalid password', { - userId: user.id, - username: cmd.username - }); - throw new Error('Invalid password'); - } - } catch (error) { - logError('Password verification error', error as Error); - throw new Error('Invalid password'); - } - - const mockRes = { - cookie: () => {} - } as any; - - const tokenPayload = { - userId: user.id, - authLevel: (user.state === UserState.ADMIN ? 1 : 0) as 0 | 1, - userStatus: user.state, - orgId: user.orgid || '' - }; - - try { - // Use the real response object if provided, otherwise use mock - const responseObj = res || mockRes; - - // Check if client prefers Bearer token authentication - const isWebClient = res?.req?.headers['origin'] || res?.req?.headers['referer']; - const explicitBearerRequest = res?.req?.headers['x-auth-method'] === 'bearer'; - - const prefersBearerAuth = res && !isWebClient && ( - res.req?.headers['authorization'] !== undefined || - explicitBearerRequest - ); - - let tokenPair: any; - - if (prefersBearerAuth && res) { - // Create token pair for Bearer authentication (no cookies) - tokenPair = this.jwtService.createTokenPair(tokenPayload); - } else { - // Cookie-based authentication (sets cookies automatically) - tokenPair = this.jwtService.create(tokenPayload, responseObj); - } - - // Check if user belongs to an organization and needs reauthentication - let requiresOrgReauth = false; - let orgLoginUrl: string | undefined; - let organizationName: string | undefined; - - if (user.orgid) { - const organization = await this.orgRepo.findById(user.orgid); - if (organization) { - organizationName = organization.name; - - // Check if user has logged in to organization within the last month - const oneMonthAgo = new Date(); - oneMonthAgo.setMonth(oneMonthAgo.getMonth() - 1); - - const needsReauth = !user.Orglogindate || user.Orglogindate < oneMonthAgo; - - if (needsReauth && organization.url) { - requiresOrgReauth = true; - orgLoginUrl = organization.url; - - logAuth('User requires organization reauthentication', user.id, { - organizationId: user.orgid, - organizationName: organization.name, - lastOrgLogin: user.Orglogindate?.toISOString() || 'never', - orgLoginUrl: organization.url - }); - } - } - } - - logAuth('Login successful', user.id, { - authLevel: tokenPayload.authLevel, - userStatus: tokenPayload.userStatus, - orgId: tokenPayload.orgId, - requiresOrgReauth, - organizationName, - totalLoginTime: Date.now() - startTime - }); - let response: LoginResponse; - if (prefersBearerAuth){ - response = { - user: UserMapper.toShortDto(user), - token: tokenPair.accessToken, - refreshToken: tokenPair.refreshToken - }; - } - else { - response = { - user: UserMapper.toShortDto(user) - }; - } - - if (requiresOrgReauth) { - response.requiresOrgReauth = true; - response.orgLoginUrl = orgLoginUrl; - response.organizationName = organizationName; - } - - return response; - } catch (error) { - logError('Token creation failed during login', error as Error); - throw new Error('Login failed due to internal error'); - } - } catch (error) { - if (error instanceof Error) { - logError('Login handler error', error); - - // Handle database connection errors - if (error.message.includes('database connection')) { - logDatabase('Database connection error during login', undefined, Date.now() - startTime); - throw new Error('Database connection error'); - } - - // Re-throw authentication/validation errors as-is - if (error.message.includes('Invalid username') || - error.message.includes('Invalid password') || - error.message.includes('not verified') || - error.message.includes('deactivated') || - error.message === 'Login failed due to internal error' || - error.message === 'Database connection error') { - throw error; - } - } - // Default database error handling - logDatabase('Unexpected database error during login', undefined, Date.now() - startTime); - throw new Error('Database connection error'); - } - } -} diff --git a/SerpentRace_Backend/src/Application/User/commands/LogoutCommandHandler.ts b/SerpentRace_Backend/src/Application/User/commands/LogoutCommandHandler.ts deleted file mode 100644 index ccbda81c..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/LogoutCommandHandler.ts +++ /dev/null @@ -1,163 +0,0 @@ -import { Request, Response } from 'express'; -import { logAuth, logError, logWarning } from '../../Services/Logger'; -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { JWTService } from '../../Services/JWTService'; -import { RedisService } from '../../Services/RedisService'; - -export class LogoutCommandHandler { - private jwtService: JWTService; - private redisService: RedisService; - - constructor(private readonly userRepo: IUserRepository) { - this.jwtService = new JWTService(); - this.redisService = RedisService.getInstance(); - } - - async execute(userId: string, res: Response, req?: Request): Promise { - try { - logAuth('Logout process started', userId); - - // 1. Get tokens from request to blacklist them - let accessTokenToBlacklist: string | null = null; - let refreshTokenToBlacklist: string | null = null; - - if (req) { - // Extract access token from cookie or Authorization header - accessTokenToBlacklist = req.cookies['auth_token']; - if (!accessTokenToBlacklist && req.headers.authorization) { - const authHeader = req.headers.authorization; - if (authHeader.startsWith('Bearer ')) { - accessTokenToBlacklist = authHeader.substring(7); - } - } - - // Extract refresh token from cookie or header - refreshTokenToBlacklist = req.cookies['refresh_token']; - if (!refreshTokenToBlacklist) { - refreshTokenToBlacklist = req.headers['x-refresh-token'] as string; - } - } - - // 2. Blacklist both access and refresh tokens in Redis - if (accessTokenToBlacklist && req) { - try { - const decoded = this.jwtService.verify(req); - if (decoded && decoded.exp) { - const ttl = decoded.exp - Math.floor(Date.now() / 1000); - if (ttl > 0) { - await this.redisService.setWithExpiry(`blacklist:${accessTokenToBlacklist}`, 'true', ttl); - logAuth('Access token blacklisted', userId, { tokenExpiry: ttl }); - } - } - } catch (error) { - logWarning('Failed to blacklist access token', { userId, error: (error as Error).message }); - } - } - - // Blacklist refresh token if present - if (refreshTokenToBlacklist) { - try { - const refreshDecoded = this.jwtService.verifyRefreshToken(refreshTokenToBlacklist); - if (refreshDecoded && refreshDecoded.exp) { - const ttl = refreshDecoded.exp - Math.floor(Date.now() / 1000); - if (ttl > 0) { - await this.redisService.setWithExpiry(`blacklist:${refreshTokenToBlacklist}`, 'true', ttl); - logAuth('Refresh token blacklisted', userId, { tokenExpiry: ttl }); - } - } - } catch (error) { - logWarning('Failed to blacklist refresh token', { userId, error: (error as Error).message }); - } - } - - // 3. Use JWT service to clear cookies and set logout headers - if (req) { - this.jwtService.logout(req, res); - } - - // 4. Remove user from active sessions in Redis - try { - await this.redisService.removeActiveUser(userId); - logAuth('User removed from active sessions', userId); - } catch (error) { - logWarning('Failed to remove user from active sessions', { userId, error: (error as Error).message }); - // Continue even if this fails - } - - // 5. Update user's last logout timestamp in database - try { - const updateResult = await this.userRepo.update(userId, { updateDate: new Date() }); - if (updateResult) { - logAuth('User last logout timestamp updated', userId); - } - } catch (error) { - logWarning('Failed to update user logout timestamp', { userId, error: (error as Error).message }); - // Continue even if this fails - } - - // 6. Clear any user-specific cache entries - try { - // Clear user session data - await this.redisService.del(`user:${userId}:session`); - await this.redisService.del(`user:${userId}:active_chats`); - logAuth('User cache cleared', userId); - } catch (error) { - logWarning('Failed to clear user cache', { userId, error: (error as Error).message }); - // Continue even if this fails - } - - logAuth('User logout completed successfully', userId); - return true; - - } catch (error) { - logError('LogoutCommandHandler error', error as Error); - return false; - } - } - - /** - * Check if a token is blacklisted - */ - async isTokenBlacklisted(token: string): Promise { - try { - const result = await this.redisService.get(`blacklist:${token}`); - return result === 'true'; - } catch (error) { - logError('Error checking token blacklist', error as Error); - return false; - } - } - - /** - * Logout user from all devices by blacklisting all their active tokens - * This is a simplified version - in a real implementation you'd track active tokens per user - */ - async logoutFromAllDevices(userId: string): Promise { - try { - // Clear all user-related Redis keys - const userKeys = [ - `user:${userId}:session`, - `user:${userId}:active_chats`, - `user:${userId}:active_tokens`, - `user:${userId}:websocket_connections` - ]; - - for (const key of userKeys) { - try { - await this.redisService.del(key); - } catch (error) { - logWarning(`Failed to delete Redis key: ${key}`, { userId, error: (error as Error).message }); - } - } - - // Update user logout timestamp - await this.userRepo.update(userId, { updateDate: new Date() }); - - logAuth('User logged out from all devices', userId); - return true; - } catch (error) { - logError('Error logging out user from all devices', error as Error); - return false; - } - } -} diff --git a/SerpentRace_Backend/src/Application/User/commands/RequestPasswordResetCommand.ts b/SerpentRace_Backend/src/Application/User/commands/RequestPasswordResetCommand.ts deleted file mode 100644 index b4c7b99c..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/RequestPasswordResetCommand.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface RequestPasswordResetCommand { - language: 'hu' | 'de' | 'en'; - email: string; -} diff --git a/SerpentRace_Backend/src/Application/User/commands/RequestPasswordResetCommandHandler.ts b/SerpentRace_Backend/src/Application/User/commands/RequestPasswordResetCommandHandler.ts deleted file mode 100644 index faba0fcd..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/RequestPasswordResetCommandHandler.ts +++ /dev/null @@ -1,70 +0,0 @@ - -import { RequestPasswordResetCommand } from './RequestPasswordResetCommand'; -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { EmailService } from '../../Services/EmailService'; -import { TokenService } from '../../Services/TokenService'; -import { logAuth, logWarning, logError } from '../../Services/Logger'; - -export class RequestPasswordResetCommandHandler { - constructor( - private userRepo: IUserRepository, - private emailService: EmailService - ) {} - - async execute(cmd: RequestPasswordResetCommand): Promise { - try { - if (!cmd.email) { - throw new Error('Email is required'); - } - - // Find user by email - const user = await this.userRepo.findByEmail(cmd.email); - - if (!user) { - // Don't reveal if user exists or not for security reasons - // Still return true but don't send email - logAuth(`Password reset requested for non-existent email: ${cmd.email}`); - return true; - } - - // Generate password reset token - const resetTokenData = TokenService.generatePasswordResetToken(); - - // Update user with reset token - user.token = await TokenService.hashToken(resetTokenData.token); - user.TokenExpires = resetTokenData.expiresAt; - - await this.userRepo.update(user.id, user); - - // Send password reset email - try { - const baseUrl = process.env.FRONTEND_URL || 'http://localhost:5173'; - const resetUrl = TokenService.generatePasswordResetUrl(baseUrl, resetTokenData.token); - - - const emailSent = await this.emailService.sendPasswordResetEmail( - user.email, - `${user.fname} ${user.lname}`, - resetTokenData.token, - resetUrl, - cmd.language - ); - - if (!emailSent) { - logWarning(`Failed to send password reset email to ${user.email}`); - // Don't throw error - request should still succeed even if email fails - } else { - logAuth(`Password reset email sent successfully to ${user.email}`); - } - } catch (emailError) { - logError('Error sending password reset email', emailError instanceof Error ? emailError : new Error(String(emailError))); - // Don't throw error - request should still succeed even if email fails - } - - return true; - } catch (error) { - logError('Password reset request error', error instanceof Error ? error : new Error(String(error))); - throw error; - } - } -} diff --git a/SerpentRace_Backend/src/Application/User/commands/ResetPasswordCommand.ts b/SerpentRace_Backend/src/Application/User/commands/ResetPasswordCommand.ts deleted file mode 100644 index 31736ee1..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/ResetPasswordCommand.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface ResetPasswordCommand { - token: string; - newPassword: string; -} diff --git a/SerpentRace_Backend/src/Application/User/commands/ResetPasswordCommandHandler.ts b/SerpentRace_Backend/src/Application/User/commands/ResetPasswordCommandHandler.ts deleted file mode 100644 index dad3b20e..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/ResetPasswordCommandHandler.ts +++ /dev/null @@ -1,58 +0,0 @@ - -import { ResetPasswordCommand } from './ResetPasswordCommand'; -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { TokenService } from '../../Services/TokenService'; -import { PasswordService } from '../../Services/PasswordService'; -import { logError } from '../../Services/Logger'; - -export class ResetPasswordCommandHandler { - constructor(private userRepo: IUserRepository) {} - - async execute(cmd: ResetPasswordCommand): Promise { - try { - if (!cmd.token) { - throw new Error('Reset token is required'); - } - - if (!cmd.newPassword) { - throw new Error('New password is required'); - } - - // Validate password strength - const validation = PasswordService.validatePasswordStrength(cmd.newPassword); - if (!validation.isValid) { - throw new Error(`Password validation failed: ${validation.errors.join(', ')}`); - } - - // Hash the token to compare with stored value - const hashedToken = await TokenService.hashToken(cmd.token); - - // Find user with this password reset token - const user = await this.userRepo.findByToken(hashedToken); - - if (!user) { - throw new Error('Invalid or expired reset token'); - } - - // Check if token is expired - if (user.TokenExpires && user.TokenExpires < new Date()) { - throw new Error('Reset token has expired'); - } - - // Hash the new password - const hashedPassword = await PasswordService.hashPassword(cmd.newPassword); - - // Update user password and clear reset token - user.password = hashedPassword; - user.token = null; - user.TokenExpires = null; - - await this.userRepo.update(user.id, user); - - return true; - } catch (error) { - logError('Password reset error', error instanceof Error ? error : new Error(String(error))); - throw error; - } - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Application/User/commands/UpdateUserCommand.ts b/SerpentRace_Backend/src/Application/User/commands/UpdateUserCommand.ts deleted file mode 100644 index 76c5f2ca..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/UpdateUserCommand.ts +++ /dev/null @@ -1,12 +0,0 @@ -export interface UpdateUserCommand { - id: string; - orgid?: string; - username?: string; - password?: string; - email?: string; - fname?: string; - lname?: string; - code?: string; - phone?: string; - state?: number; -} diff --git a/SerpentRace_Backend/src/Application/User/commands/UpdateUserCommandHandler.ts b/SerpentRace_Backend/src/Application/User/commands/UpdateUserCommandHandler.ts deleted file mode 100644 index 9f348592..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/UpdateUserCommandHandler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { UpdateUserCommand } from './UpdateUserCommand'; - -import { ShortUserDto } from '../../DTOs/UserDto'; -import { UserMapper } from '../../DTOs/Mappers/UserMapper'; -import { PasswordService } from '../../Services/PasswordService'; - -export class UpdateUserCommandHandler { - constructor(private readonly userRepo: IUserRepository) {} - - async execute(cmd: UpdateUserCommand): Promise { - const updateData = { ...cmd }; - - // Hash the password if it's being updated - if (cmd.password) { - // Validate password strength - const passwordValidation = PasswordService.validatePasswordStrength(cmd.password); - if (!passwordValidation.isValid) { - throw new Error(`Password validation failed: ${passwordValidation.errors.join(', ')}`); - } - - updateData.password = await PasswordService.hashPassword(cmd.password); - } - - const updated = await this.userRepo.update(cmd.id, updateData); - if (!updated) return null; - return UserMapper.toShortDto(updated); - } -} diff --git a/SerpentRace_Backend/src/Application/User/commands/VerifyEmailCommand.ts b/SerpentRace_Backend/src/Application/User/commands/VerifyEmailCommand.ts deleted file mode 100644 index dd3e7e1f..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/VerifyEmailCommand.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface VerifyEmailCommand { - token: string; -} diff --git a/SerpentRace_Backend/src/Application/User/commands/VerifyEmailCommandHandler.ts b/SerpentRace_Backend/src/Application/User/commands/VerifyEmailCommandHandler.ts deleted file mode 100644 index 44c3f95a..00000000 --- a/SerpentRace_Backend/src/Application/User/commands/VerifyEmailCommandHandler.ts +++ /dev/null @@ -1,45 +0,0 @@ - -import { VerifyEmailCommand } from './VerifyEmailCommand'; -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { TokenService } from '../../Services/TokenService'; -import { UserState } from '../../../Domain/User/UserAggregate'; -import { logError } from '../../Services/Logger'; - -export class VerifyEmailCommandHandler { - constructor(private userRepo: IUserRepository) {} - - async execute(cmd: VerifyEmailCommand): Promise { - try { - if (!cmd.token) { - throw new Error('Verification token is required'); - } - - // Hash the token to compare with stored value - const hashedToken = await TokenService.hashToken(cmd.token); - - // Find user with this verification token - const user = await this.userRepo.findByToken(hashedToken); - - if (!user) { - throw new Error('Invalid or expired verification token'); - } - - // Check if token is expired - if (user.TokenExpires && user.TokenExpires < new Date()) { - throw new Error('Verification token has expired'); - } - - // Update user verification status - user.token = null; - user.TokenExpires = null; - user.state = UserState.VERIFIED_REGULAR; - - await this.userRepo.update(user.id, user); - - return true; - } catch (error) { - logError('Email verification error', error instanceof Error ? error : new Error(String(error))); - throw error; - } - } -} diff --git a/SerpentRace_Backend/src/Application/User/queries/GetUserByIdQuery.ts b/SerpentRace_Backend/src/Application/User/queries/GetUserByIdQuery.ts deleted file mode 100644 index 21b92e4c..00000000 --- a/SerpentRace_Backend/src/Application/User/queries/GetUserByIdQuery.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface GetUserByIdQuery { - id: string; -} diff --git a/SerpentRace_Backend/src/Application/User/queries/GetUserByIdQueryHandler.ts b/SerpentRace_Backend/src/Application/User/queries/GetUserByIdQueryHandler.ts deleted file mode 100644 index ae8ff109..00000000 --- a/SerpentRace_Backend/src/Application/User/queries/GetUserByIdQueryHandler.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { GetUserByIdQuery } from './GetUserByIdQuery'; -import { DetailUserDto } from '../../DTOs/UserDto'; -import { UserMapper } from '../../DTOs/Mappers/UserMapper'; -import { logError } from '../../Services/Logger'; - -export class GetUserByIdQueryHandler { - constructor(private readonly userRepo: IUserRepository) {} - - async execute(query: GetUserByIdQuery): Promise { - try { - const user = await this.userRepo.findById(query.id); - if (!user) return null; - return UserMapper.toDetailDto(user); - } catch (error) { - logError('GetUserByIdQueryHandler error', error instanceof Error ? error : new Error(String(error))); - - // Handle invalid ID format - if (error instanceof Error && error.message.includes('invalid') && error.message.includes('uuid')) { - return null; // Treat invalid UUID as not found - } - - // Handle database errors - if (error instanceof Error && error.message.includes('database')) { - throw new Error('Database connection error'); - } - - // Generic error for other cases - throw new Error('Failed to retrieve user'); - } - } -} diff --git a/SerpentRace_Backend/src/Application/User/queries/GetUsersByPageQuery.ts b/SerpentRace_Backend/src/Application/User/queries/GetUsersByPageQuery.ts deleted file mode 100644 index b1fc4346..00000000 --- a/SerpentRace_Backend/src/Application/User/queries/GetUsersByPageQuery.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface GetUsersByPageQuery { - from: number; - to: number; - includeDeleted?: boolean; -} diff --git a/SerpentRace_Backend/src/Application/User/queries/GetUsersByPageQueryHandler.ts b/SerpentRace_Backend/src/Application/User/queries/GetUsersByPageQueryHandler.ts deleted file mode 100644 index 0c8c33ae..00000000 --- a/SerpentRace_Backend/src/Application/User/queries/GetUsersByPageQueryHandler.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { IUserRepository } from '../../../Domain/IRepository/IUserRepository'; -import { GetUsersByPageQuery } from './GetUsersByPageQuery'; -import { ShortUserDto } from '../../DTOs/UserDto'; -import { UserMapper } from '../../DTOs/Mappers/UserMapper'; -import { logError, logRequest } from '../../Services/Logger'; - -export class GetUsersByPageQueryHandler { - constructor(private readonly userRepo: IUserRepository) {} - - async execute(query: GetUsersByPageQuery): Promise<{ users: ShortUserDto[], totalCount: number }> { - try { - // Validate pagination parameters - if (query.from < 0 || query.to < query.from) { - throw new Error('Invalid pagination parameters'); - } - - const limit = query.to - query.from + 1; - if (limit > 100) { - throw new Error('Page size too large. Maximum 100 records per request'); - } - - logRequest('Get users by page query started', undefined, undefined, { - from: query.from, - to: query.to, - includeDeleted: query.includeDeleted || false - }); - - const result = query.includeDeleted - ? await this.userRepo.findByPageIncludingDeleted(query.from, query.to) - : await this.userRepo.findByPage(query.from, query.to); - - logRequest('Get users by page query completed', undefined, undefined, { - from: query.from, - to: query.to, - returned: result.users.length, - totalCount: result.totalCount, - includeDeleted: query.includeDeleted || false - }); - - return { - users: UserMapper.toShortDtoList(result.users), - totalCount: result.totalCount - }; - } catch (error) { - logError('GetUsersByPageQueryHandler error', error instanceof Error ? error : new Error(String(error))); - - // Handle database errors - if (error instanceof Error && error.message.includes('database')) { - throw new Error('Database connection error'); - } - - // Re-throw validation errors as-is - if (error instanceof Error && (error.message.includes('Invalid pagination') || error.message.includes('Page size'))) { - throw error; - } - - throw new Error('Failed to retrieve users'); - } - } -} diff --git a/SerpentRace_Backend/src/Domain/Chat/ChatAggregate.ts b/SerpentRace_Backend/src/Domain/Chat/ChatAggregate.ts deleted file mode 100644 index 664a743a..00000000 --- a/SerpentRace_Backend/src/Domain/Chat/ChatAggregate.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { Entity, PrimaryGeneratedColumn, Column, UpdateDateColumn, CreateDateColumn } from 'typeorm'; - -export interface Message { - id: string; // UUID for each message - date: Date; - userid: string; // UUID reference to UserAggregate - text: string; -} - -export const ChatState = { - ACTIVE: 0, - ARCHIVE: 1, - SOFT_DELETE: 2 -} as const; - -export type ChatStateType = typeof ChatState[keyof typeof ChatState]; - -export const ChatType = { - DIRECT: 'direct', - GROUP: 'group', - GAME: 'game' -} as const; - -export type ChatTypeType = typeof ChatType[keyof typeof ChatType]; - -@Entity('Chats') -export class ChatAggregate { - @PrimaryGeneratedColumn('uuid') - id!: string; - - @Column({ type: 'varchar', length: 50, default: ChatType.DIRECT }) - type!: ChatTypeType; - - @Column({ type: 'varchar', length: 255, nullable: true }) - name!: string | null; // Group name or Game name - - @Column({ type: 'uuid', nullable: true }) - gameId!: string | null; // Game UUID reference for game chats - - @Column({ type: 'uuid', nullable: true }) - createdBy!: string | null; // User who created the group/chat - - @Column('uuid', { array: true }) - users!: string[]; // Active participants - - @Column('json', { default: [] }) - messages!: Message[]; // Active messages (last 10 per user, max 2 weeks) - - @Column({ type: 'timestamp', nullable: true }) - lastActivity!: Date | null; - - @CreateDateColumn() - createDate!: Date; - - @UpdateDateColumn() - updateDate!: Date; - - @Column({ type: 'int', default: ChatState.ACTIVE }) - state!: ChatStateType; - - // Archive when inactive for specified period - @Column({ type: 'timestamp', nullable: true }) - archiveDate!: Date | null; -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Domain/Chat/ChatArchiveAggregate.ts b/SerpentRace_Backend/src/Domain/Chat/ChatArchiveAggregate.ts deleted file mode 100644 index 518042a1..00000000 --- a/SerpentRace_Backend/src/Domain/Chat/ChatArchiveAggregate.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn } from 'typeorm'; -import { Message } from './ChatAggregate'; - -@Entity('ChatArchives') -export class ChatArchiveAggregate { - @PrimaryGeneratedColumn('uuid') - id!: string; - - @Column({ type: 'uuid' }) - chatId!: string; // Reference to original chat - - @Column('json') - archivedMessages!: Message[]; // All archived messages - - @Column({ type: 'timestamp' }) - archivedAt!: Date; - - @CreateDateColumn() - createDate!: Date; - - // Metadata for context - @Column({ type: 'varchar', length: 50 }) - chatType!: string; // direct, group, game - - @Column({ type: 'varchar', length: 255, nullable: true }) - chatName!: string | null; - - @Column({ type: 'uuid', nullable: true }) - gameId!: string | null; - - @Column('uuid', { array: true }) - participants!: string[]; // Users who participated -} diff --git a/SerpentRace_Backend/src/Domain/Contact/ContactAggregate.ts b/SerpentRace_Backend/src/Domain/Contact/ContactAggregate.ts deleted file mode 100644 index a7e79581..00000000 --- a/SerpentRace_Backend/src/Domain/Contact/ContactAggregate.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; - -export enum ContactType { - BUG = 0, - PROBLEM = 1, - QUESTION = 2, - SALES = 3, - OTHER = 4 -} - -export enum ContactState { - ACTIVE = 0, - RESOLVED = 1, - SOFT_DELETE = 2 -} - -@Entity('Contacts') -export class ContactAggregate { - @PrimaryGeneratedColumn('uuid') - id!: string; - - @Column({ type: 'varchar', length: 255 }) - name!: string; - - @Column({ type: 'varchar', length: 255 }) - email!: string; - - @Column({ type: 'uuid', nullable: true }) - userid!: string | null; // If logged in user - - @Column({ type: 'int' }) - type!: ContactType; - - @Column({ type: 'text' }) - txt!: string; - - @Column({ type: 'int', default: ContactState.ACTIVE }) - state!: ContactState; - - @CreateDateColumn() - createDate!: Date; - - @UpdateDateColumn() - updateDate!: Date; - - // Admin response field for email response feature - @Column({ type: 'text', nullable: true }) - adminResponse!: string | null; - - @Column({ type: 'timestamp', nullable: true }) - responseDate!: Date | null; - - @Column({ type: 'uuid', nullable: true }) - respondedBy!: string | null; // Admin user id who responded -} diff --git a/SerpentRace_Backend/src/Domain/Deck/DeckAggregate.ts b/SerpentRace_Backend/src/Domain/Deck/DeckAggregate.ts deleted file mode 100644 index a9b7faec..00000000 --- a/SerpentRace_Backend/src/Domain/Deck/DeckAggregate.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn, CreateDateColumn, UpdateDateColumn } from 'typeorm'; -import { OrganizationAggregate } from '../Organization/OrganizationAggregate'; -import { UserAggregate } from '../User/UserAggregate'; -import { logError } from '../../Application/Services/Logger'; - -export enum Type { - LUCK = 0, - JOKER = 1, - QUESTION = 2 -} - -export enum CType { - PUBLIC = 0, - PRIVATE = 1, - ORGANIZATION = 2 -} - -export enum State { - ACTIVE = 0, - SOFT_DELETE = 1 -} - -export enum CardType { - QUIZ = 0, - SENTENCE_PAIRING = 1, - OWN_ANSWER = 2, - TRUE_FALSE = 3, - CLOSER = 4 -} - -export enum ConsequenceType { - MOVE_FORWARD = 0, - MOVE_BACKWARD = 1, - LOSE_TURN = 2, - EXTRA_TURN = 3, - GO_TO_START = 5 -} - -export interface Consequence { - type: ConsequenceType; - value?: number; -} - -export interface Card { - text: string; - type?: CardType; - answer?: string | null; - consequence?: Consequence | null; -} - -@Entity('Decks') -export class DeckAggregate { - @PrimaryGeneratedColumn('uuid') - id!: string; - - @Column({ type: 'varchar', length: 255 }) - name!: string; - - @Column({ type: 'int'}) - type!: Type; - - @Column({ type: 'uuid', name: 'user_id' }) - userid!: string; - - @CreateDateColumn({ name: 'creation_date' }) - creationdate!: Date; - - @Column({ type: 'json' }) - cards!: Card[]; - - @Column({ type: 'int', default: 0, name: 'played_number' }) - playedNumber!: number; - - @Column({ type: 'int', default: CType.PUBLIC }) - ctype!: CType; - - @UpdateDateColumn() - updateDate!: Date; - - @Column({ type: 'int', default: State.ACTIVE }) - state!: State; - - @ManyToOne(() => OrganizationAggregate, { nullable: true }) - @JoinColumn({ name: 'organization_id' }) - organization!: OrganizationAggregate | null; - - @ManyToOne(() => UserAggregate, { eager: false }) - @JoinColumn({ name: 'user_id' }) - user!: UserAggregate | null; - - isEditable(userId:string): boolean{ - // A deck is editable if the user is the creator - if (!this.user) { - logError(`DeckAggregate.isEditable: User is null for deck id ${this.id}`); - return false; - } - //if admin, always editable - if (this.user?.isAdmin) { - return true; - } - return this.user?.id.toString() === userId;; - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Domain/Game/GameAggregate.ts b/SerpentRace_Backend/src/Domain/Game/GameAggregate.ts deleted file mode 100644 index 46ddf85e..00000000 --- a/SerpentRace_Backend/src/Domain/Game/GameAggregate.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, ManyToOne, JoinColumn } from 'typeorm'; -import { Consequence, CardType } from '../Deck/DeckAggregate'; -import { UserAggregate } from '../User/UserAggregate'; -import { OrganizationAggregate } from '../Organization/OrganizationAggregate'; - -export enum GameState { - WAITING = 0, - ACTIVE = 1, - FINISHED = 2, - CANCELLED = 3 -} - -export enum LoginType { - PUBLIC = 0, - PRIVATE = 1, - ORGANIZATION = 2 -} - -export enum DeckType { - JOCKER = 0, - LUCK = 1, - QUEST = 2 -} - -export interface GameCard { - cardid: string; - question?: string; - answer?: any; // Support complex answer structures (string, object, array) - type?: CardType; // Card type for validation logic - consequence?: Consequence | null; - played?: boolean; - playerid?: string; -} - -export interface GameDeck { - deckid: string; - decktype: DeckType; - cards: GameCard[]; -} - -@Entity('Games') -export class GameAggregate { - @PrimaryGeneratedColumn('uuid') - id!: string; - - @Column({ type: 'varchar', length: 10, unique: true }) - gamecode!: string; - - @Column({ type: 'int' }) - maxplayers!: number; - - @Column({ type: 'int', default: LoginType.PUBLIC }) - logintype!: LoginType; - - @Column({ type: 'int', default: 50 }) - boardsize!: number; - - @Column({ type: 'uuid', nullable: false, name: 'createdBy' }) - createdby!: string; - - @Column({ type: 'uuid', nullable: true, name: 'organizationid' }) - orgid!: string | null; - - @Column({ type: 'jsonb', default: () => "'[]'", name: 'decks' }) - gamedecks!: GameDeck[]; - - @Column({ type: 'uuid', array: true, default: () => "'{}'", name: 'playerids' }) - players!: string[]; - - @Column({ type: 'uuid', nullable: true, name: 'winnerId' }) - winnerId!: string | null; - - @Column({ type: 'int', default: GameState.WAITING }) - state!: GameState; - - @CreateDateColumn({ name: 'createDate' }) - createdate!: Date; - - @Column({ type: 'timestamp', nullable: true, name: 'start_date' }) - startdate!: Date | null; - - @Column({ type: 'timestamp', nullable: true, name: 'finishDate' }) - enddate!: Date | null; - - @UpdateDateColumn({ name: 'updateDate' }) - updateDate!: Date; - - @ManyToOne(() => UserAggregate, { eager: false }) - @JoinColumn({ name: 'createdBy' }) - user!: UserAggregate | null; - - @ManyToOne(() => UserAggregate, { eager: false }) - @JoinColumn({ name: 'winnerId' }) - winner!: UserAggregate | null; - - @ManyToOne(() => OrganizationAggregate, { eager: false }) - @JoinColumn({ name: 'organizationId' }) - organization!: OrganizationAggregate | null; -} - -// Board Generation Types -export interface GameField { - position: number; - type: 'regular' | 'positive' | 'negative' | 'luck'; - stepValue?: number; -} - -export interface BoardData { - gameId?: string; - fields: GameField[]; - generationComplete?: boolean; - generatedAt?: Date; - error?: string; -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Domain/Game/GameSnapshotAggregate.ts b/SerpentRace_Backend/src/Domain/Game/GameSnapshotAggregate.ts deleted file mode 100644 index 0f83f29b..00000000 --- a/SerpentRace_Backend/src/Domain/Game/GameSnapshotAggregate.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, ManyToOne, JoinColumn, Index } from 'typeorm'; -import { GameAggregate } from './GameAggregate'; - -export interface PlayerSnapshot { - playerId: string; - playerName: string; - boardPosition: number; - extraTurns: number; - turnsToLose: number; - isOnline: boolean; -} - -export interface GameStateSnapshot { - currentPlayer: string; - currentPlayerName: string; - turnNumber: number; - turnOrder: string[]; - playerPositions: PlayerSnapshot[]; - boardFields?: any[]; - deckStates?: any; - pendingActions?: any; -} - -export enum SnapshotTrigger { - TURN_INTERVAL = 'turn_interval', // Every N turns - PLAYER_DISCONNECT = 'player_disconnect', // When player disconnects - CRITICAL_EVENT = 'critical_event', // Important game events - MANUAL = 'manual', // Manual checkpoint - SERVER_SHUTDOWN = 'server_shutdown' // Before server shutdown -} - -@Entity('GameSnapshots') -@Index(['gameid', 'createdat']) -@Index(['gameid', 'trigger']) -export class GameSnapshotAggregate { - @PrimaryGeneratedColumn('uuid') - id!: string; - - @Column({ type: 'uuid', name: 'gameid' }) - gameid!: string; - - @Column({ type: 'int', name: 'turn_number' }) - turnNumber!: number; - - @Column({ - type: 'enum', - enum: SnapshotTrigger, - name: 'trigger' - }) - trigger!: SnapshotTrigger; - - @Column({ type: 'jsonb', name: 'game_state' }) - gameState!: GameStateSnapshot; - - @Column({ type: 'jsonb', name: 'redis_state', nullable: true }) - redisState!: any | null; - - @Column({ type: 'text', name: 'notes', nullable: true }) - notes!: string | null; - - @CreateDateColumn({ name: 'createdat' }) - createdat!: Date; - - @ManyToOne(() => GameAggregate, { onDelete: 'CASCADE' }) - @JoinColumn({ name: 'gameid' }) - game?: GameAggregate; -} diff --git a/SerpentRace_Backend/src/Domain/Game/TurnHistoryAggregate.ts b/SerpentRace_Backend/src/Domain/Game/TurnHistoryAggregate.ts deleted file mode 100644 index d9c62804..00000000 --- a/SerpentRace_Backend/src/Domain/Game/TurnHistoryAggregate.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, ManyToOne, JoinColumn, Index } from 'typeorm'; -import { GameAggregate } from './GameAggregate'; - -export enum TurnActionType { - DICE_ROLL = 'dice_roll', - CARD_DRAWN = 'card_drawn', - ANSWER_SUBMITTED = 'answer_submitted', - POSITION_GUESS = 'position_guess', - GAMEMASTER_DECISION = 'gamemaster_decision', - LUCK_CONSEQUENCE = 'luck_consequence', - EXTRA_TURN = 'extra_turn', - TURN_LOST = 'turn_lost', - PLAYER_DISCONNECTED = 'player_disconnected', - TIMEOUT = 'timeout' -} - -export interface TurnActionData { - diceValue?: number; - cardId?: string; - cardType?: string; - question?: string; - answer?: any; - isCorrect?: boolean; - guessedPosition?: number; - actualPosition?: number; - consequenceType?: string; - consequenceValue?: number; - decision?: string; - reason?: string; - [key: string]: any; // Allow additional properties -} - -@Entity('TurnHistory') -@Index(['gameid', 'turnNumber']) -@Index(['gameid', 'playerid']) -@Index(['createdat']) -export class TurnHistoryAggregate { - @PrimaryGeneratedColumn('uuid') - id!: string; - - @Column({ type: 'uuid', name: 'gameid' }) - gameid!: string; - - @Column({ type: 'uuid', name: 'playerid' }) - playerid!: string; - - @Column({ type: 'varchar', length: 255, name: 'playername' }) - playername!: string; - - @Column({ type: 'int', name: 'turn_number' }) - turnNumber!: number; - - @Column({ - type: 'enum', - enum: TurnActionType, - name: 'action_type' - }) - actionType!: TurnActionType; - - @Column({ type: 'jsonb', name: 'action_data', nullable: true }) - actionData!: TurnActionData | null; - - @Column({ type: 'int', name: 'position_before' }) - positionBefore!: number; - - @Column({ type: 'int', name: 'position_after' }) - positionAfter!: number; - - @CreateDateColumn({ name: 'createdat' }) - createdat!: Date; - - @ManyToOne(() => GameAggregate, { onDelete: 'CASCADE' }) - @JoinColumn({ name: 'gameid' }) - game?: GameAggregate; -} diff --git a/SerpentRace_Backend/src/Domain/IRepository/IBaseRepository.ts b/SerpentRace_Backend/src/Domain/IRepository/IBaseRepository.ts deleted file mode 100644 index 4a06282d..00000000 --- a/SerpentRace_Backend/src/Domain/IRepository/IBaseRepository.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * Base Repository Interface - * Contains common repository methods that all repositories should implement - * Reduces code duplication across repository interfaces - */ -export interface IBaseRepository { - // Core CRUD operations - create(entity: Partial): Promise; - findById(id: string): Promise; - findByIdIncludingDeleted(id: string): Promise; - update(id: string, update: Partial): Promise; - delete(id: string): Promise; - softDelete(id: string): Promise; -} - -/** - * Paginated Repository Interface - * For repositories that support pagination and search operations - * This allows typed responses for each repository type - */ -export interface IPaginatedRepository extends IBaseRepository { - // Pagination operations - findByPage(from: number, to: number): Promise; - findByPageIncludingDeleted(from: number, to: number): Promise; - - // Search operations - search(query: string, limit?: number, offset?: number): Promise; - searchIncludingDeleted(query: string, limit?: number, offset?: number): Promise; -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Domain/IRepository/IChatArchiveRepository.ts b/SerpentRace_Backend/src/Domain/IRepository/IChatArchiveRepository.ts deleted file mode 100644 index 494197d4..00000000 --- a/SerpentRace_Backend/src/Domain/IRepository/IChatArchiveRepository.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ChatArchiveAggregate } from '../Chat/ChatArchiveAggregate'; - -export interface IChatArchiveRepository { - create(archive: Partial): Promise; - findAll(): Promise; - findById(id: string): Promise; - findByChatId(chatId: string): Promise; - findByGameId(gameId: string): Promise; - delete(id: string): Promise; - cleanup(olderThanDays: number): Promise; // Clean up old archives -} diff --git a/SerpentRace_Backend/src/Domain/IRepository/IChatRepository.ts b/SerpentRace_Backend/src/Domain/IRepository/IChatRepository.ts deleted file mode 100644 index 95f3c6f9..00000000 --- a/SerpentRace_Backend/src/Domain/IRepository/IChatRepository.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { ChatAggregate } from '../Chat/ChatAggregate'; -import { ChatArchiveAggregate } from '../Chat/ChatArchiveAggregate'; -import { IBaseRepository } from './IBaseRepository'; - -export interface IChatRepository extends IBaseRepository { - // Pagination operations with proper typing - findByPage(from: number, to: number): Promise<{ chats: ChatAggregate[], totalCount: number }>; - findByPageIncludingDeleted(from: number, to: number): Promise<{ chats: ChatAggregate[], totalCount: number }>; - - // Chat-specific methods - findByUserId(userId: string): Promise; - findByUserIdIncludingDeleted(userId: string): Promise; - findByGameId(gameId: string): Promise; - findActiveChatsForUser(userId: string): Promise; - findInactiveChats(inactivityMinutes: number): Promise; - archiveChat(chat: ChatAggregate): Promise; - getArchivedChat(chatId: string): Promise; - restoreFromArchive(chatId: string): Promise; -} diff --git a/SerpentRace_Backend/src/Domain/IRepository/IContactRepository.ts b/SerpentRace_Backend/src/Domain/IRepository/IContactRepository.ts deleted file mode 100644 index a055d2f6..00000000 --- a/SerpentRace_Backend/src/Domain/IRepository/IContactRepository.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { ContactAggregate } from '../Contact/ContactAggregate'; -import { IBaseRepository } from './IBaseRepository'; - -export interface IContactRepository extends IBaseRepository { - // Pagination operations with proper typing - findByPage(from: number, to: number): Promise<{ contacts: ContactAggregate[], totalCount: number }>; - findByPageIncludingDeleted(from: number, to: number): Promise<{ contacts: ContactAggregate[], totalCount: number }>; - - // Contact-specific search methods (different signature than base) - search(searchTerm: string): Promise; - searchIncludingDeleted(searchTerm: string): Promise; -} diff --git a/SerpentRace_Backend/src/Domain/IRepository/IDeckRepository.ts b/SerpentRace_Backend/src/Domain/IRepository/IDeckRepository.ts deleted file mode 100644 index a858f5fe..00000000 --- a/SerpentRace_Backend/src/Domain/IRepository/IDeckRepository.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { DeckAggregate } from '../Deck/DeckAggregate'; -import { IPaginatedRepository } from './IBaseRepository'; - -export interface IDeckRepository extends IPaginatedRepository { - // Deck-specific methods for restrictions and filtering - countActiveByUserId(userId: string): Promise; - countOrganizationalByUserId(userId: string): Promise; - findFilteredDecks(userId: string, userOrgId?: string | null, isAdmin?: boolean, from?: number, to?: number): Promise<{ decks: DeckAggregate[], totalCount: number }>; -} diff --git a/SerpentRace_Backend/src/Domain/IRepository/IGameRepository.ts b/SerpentRace_Backend/src/Domain/IRepository/IGameRepository.ts deleted file mode 100644 index 73d9b958..00000000 --- a/SerpentRace_Backend/src/Domain/IRepository/IGameRepository.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { GameAggregate, GameState } from '../Game/GameAggregate'; -import { IPaginatedRepository } from './IBaseRepository'; - -export interface IGameRepository extends IPaginatedRepository { - // Game-specific methods - findByGameCode(gamecode: string): Promise; - findActiveGames(): Promise; - findGamesByPlayer(playerId: string): Promise; - findWaitingGames(): Promise; - findFinishedGames(from?: number, to?: number): Promise<{ games: GameAggregate[], totalCount: number }>; - addPlayerToGame(gameId: string, playerId: string): Promise; - removePlayerFromGame(gameId: string, playerId: string): Promise; - updateGameState(gameId: string, state: GameState, winner?: string): Promise; -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Domain/IRepository/IGameSnapshotRepository.ts b/SerpentRace_Backend/src/Domain/IRepository/IGameSnapshotRepository.ts deleted file mode 100644 index 0a97c08a..00000000 --- a/SerpentRace_Backend/src/Domain/IRepository/IGameSnapshotRepository.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { GameSnapshotAggregate, SnapshotTrigger } from '../Game/GameSnapshotAggregate'; - -export interface IGameSnapshotRepository { - /** - * Save a game state snapshot - */ - save(snapshot: GameSnapshotAggregate): Promise; - - /** - * Get the most recent snapshot for a game - */ - findLatestByGameId(gameId: string): Promise; - - /** - * Get all snapshots for a game - */ - findByGameId(gameId: string): Promise; - - /** - * Get snapshots by trigger type - */ - findByGameAndTrigger(gameId: string, trigger: SnapshotTrigger): Promise; - - /** - * Get snapshot at specific turn - */ - findByGameAndTurn(gameId: string, turnNumber: number): Promise; - - /** - * Delete old snapshots (keep only last N) - */ - deleteOldSnapshots(gameId: string, keepCount: number): Promise; - - /** - * Delete all snapshots for a game - */ - deleteByGameId(gameId: string): Promise; -} diff --git a/SerpentRace_Backend/src/Domain/IRepository/IOrganizationRepository.ts b/SerpentRace_Backend/src/Domain/IRepository/IOrganizationRepository.ts deleted file mode 100644 index 373d3fb6..00000000 --- a/SerpentRace_Backend/src/Domain/IRepository/IOrganizationRepository.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { OrganizationAggregate } from '../Organization/OrganizationAggregate'; -import { IPaginatedRepository } from './IBaseRepository'; - -export interface IOrganizationRepository extends IPaginatedRepository { - // Organization-specific methods can be added here if needed -} diff --git a/SerpentRace_Backend/src/Domain/IRepository/ITurnHistoryRepository.ts b/SerpentRace_Backend/src/Domain/IRepository/ITurnHistoryRepository.ts deleted file mode 100644 index 653b3679..00000000 --- a/SerpentRace_Backend/src/Domain/IRepository/ITurnHistoryRepository.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { TurnHistoryAggregate, TurnActionType, TurnActionData } from '../Game/TurnHistoryAggregate'; - -export interface ITurnHistoryRepository { - /** - * Save a turn history entry - */ - save(turnHistory: TurnHistoryAggregate): Promise; - - /** - * Get all turn history for a game - */ - findByGameId(gameId: string): Promise; - - /** - * Get turn history for a specific player in a game - */ - findByGameAndPlayer(gameId: string, playerId: string): Promise; - - /** - * Get the last N turns for a game - */ - findLastNTurns(gameId: string, limit: number): Promise; - - /** - * Get turn count for a game - */ - countTurnsByGame(gameId: string): Promise; - - /** - * Delete all turn history for a game - */ - deleteByGameId(gameId: string): Promise; -} diff --git a/SerpentRace_Backend/src/Domain/IRepository/IUserRepository.ts b/SerpentRace_Backend/src/Domain/IRepository/IUserRepository.ts deleted file mode 100644 index 4db923b0..00000000 --- a/SerpentRace_Backend/src/Domain/IRepository/IUserRepository.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { UserAggregate } from '../User/UserAggregate'; -import { IPaginatedRepository } from './IBaseRepository'; - -export interface IUserRepository extends IPaginatedRepository { - // User-specific methods - findByUsername(username: string): Promise; - findByEmail(email: string): Promise; - findByToken(token: string): Promise; - deactivate(id: string): Promise; - activate(id: string): Promise; -} diff --git a/SerpentRace_Backend/src/Domain/Organization/OrganizationAggregate.ts b/SerpentRace_Backend/src/Domain/Organization/OrganizationAggregate.ts deleted file mode 100644 index 5a3be365..00000000 --- a/SerpentRace_Backend/src/Domain/Organization/OrganizationAggregate.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, OneToMany } from 'typeorm'; -import { UserAggregate } from '../User/UserAggregate'; - -export const OrganizationState = { - REGISTERED: 0, - ACTIVE: 1, - SOFT_DELETE: 2 -} as const; - -export type OrganizationStateType = typeof OrganizationState[keyof typeof OrganizationState]; - -@Entity('Organizations') -export class OrganizationAggregate { - @PrimaryGeneratedColumn('uuid') - id!: string; - - @Column({ type: 'varchar', length: 255 }) - name!: string; - - @Column({ type: 'varchar', length: 100 }) - contactfname!: string; - - @Column({ type: 'varchar', length: 100 }) - contactlname!: string; - - @Column({ type: 'varchar', length: 20 }) - contactphone!: string; - - @Column({ type: 'varchar', length: 255 }) - contactemail!: string; - - @Column({ type: 'int', default: OrganizationState.REGISTERED }) - state!: OrganizationStateType; - - @CreateDateColumn() - regdate!: Date; - - @UpdateDateColumn({ name: 'updateDate' }) - updateDate!: Date; - - @Column({ type: 'varchar', length: 500, nullable: true }) - url!: string | null; - - @Column({ type: 'int', default: 0 }) - userinorg!: number; - - @Column({ type: 'int', nullable: true }) - maxOrganizationalDecks!: number | null; - - @OneToMany(() => UserAggregate, user => user.orgid) - users!: UserAggregate[]; - } \ No newline at end of file diff --git a/SerpentRace_Backend/src/Domain/User/UserAggregate.ts b/SerpentRace_Backend/src/Domain/User/UserAggregate.ts deleted file mode 100644 index f67fefcf..00000000 --- a/SerpentRace_Backend/src/Domain/User/UserAggregate.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn } from 'typeorm'; - -export enum UserState { - REGISTERED_NOT_VERIFIED = 0, - VERIFIED_REGULAR = 1, - VERIFIED_PREMIUM = 2, - SOFT_DELETE = 3, - DEACTIVATED = 4, - ADMIN = 5 -} - -@Entity('Users') -export class UserAggregate { - @PrimaryGeneratedColumn('uuid') - id!: string; - - @Column({ type: 'uuid', nullable: true }) - orgid!: string | null; - - @Column({ type: 'varchar', length: 100, unique: true }) - username!: string; - - @Column({ type: 'varchar', length: 255 }) - password!: string; - - @Column({ type: 'varchar', length: 255, unique: true }) - email!: string; - - @Column({ type: 'varchar', length: 100 }) - fname!: string; - - @Column({ type: 'varchar', length: 100 }) - lname!: string; - - @Column({ type: 'varchar', length: 255, nullable: true }) - token!: string | null; - - @Column({ type: 'timestamp', nullable: true }) - TokenExpires!: Date | null; - - @Column({ type: 'varchar', length: 20, nullable: true }) - phone!: string | null; - - @Column({ - type: 'int', - default: UserState.REGISTERED_NOT_VERIFIED - }) - state!: UserState; - - @CreateDateColumn() - regdate!: Date; - - @UpdateDateColumn() - updateDate!: Date; - - @Column({ type: 'timestamp', nullable: true }) - Orglogindate!: Date | null; - - get isAdmin(): boolean { - return this.state === UserState.ADMIN; - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Infrastructure/Migrations/1762370334693-full.ts b/SerpentRace_Backend/src/Infrastructure/Migrations/1762370334693-full.ts deleted file mode 100644 index 610a6821..00000000 --- a/SerpentRace_Backend/src/Infrastructure/Migrations/1762370334693-full.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { MigrationInterface, QueryRunner } from "typeorm"; - -export class Full1762370334693 implements MigrationInterface { - name = 'Full1762370334693' - - public async up(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "Games" RENAME COLUMN "winnerid" TO "winnerId"`); - await queryRunner.query(`ALTER TABLE "Games" ADD CONSTRAINT "FK_330362bff8b25bb573f31fb4023" FOREIGN KEY ("winnerId") REFERENCES "Users"("id") ON DELETE NO ACTION ON UPDATE NO ACTION`); - } - - public async down(queryRunner: QueryRunner): Promise { - await queryRunner.query(`ALTER TABLE "Games" DROP CONSTRAINT "FK_330362bff8b25bb573f31fb4023"`); - await queryRunner.query(`ALTER TABLE "Games" RENAME COLUMN "winnerId" TO "winnerid"`); - } - -} diff --git a/SerpentRace_Backend/src/Infrastructure/Migrationsettings/1762370333970-full.ts b/SerpentRace_Backend/src/Infrastructure/Migrationsettings/1762370333970-full.ts deleted file mode 100644 index aeb7547a..00000000 --- a/SerpentRace_Backend/src/Infrastructure/Migrationsettings/1762370333970-full.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { MigrationInterface, QueryRunner } from "typeorm"; - -export class Full1762370333970 implements MigrationInterface { - - public async up(queryRunner: QueryRunner): Promise { - } - - public async down(queryRunner: QueryRunner): Promise { - } - -} diff --git a/SerpentRace_Backend/src/Infrastructure/Repository/ChatArchiveRepository.ts b/SerpentRace_Backend/src/Infrastructure/Repository/ChatArchiveRepository.ts deleted file mode 100644 index 3ec25839..00000000 --- a/SerpentRace_Backend/src/Infrastructure/Repository/ChatArchiveRepository.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { Repository } from 'typeorm'; -import { AppDataSource } from '../ormconfig'; -import { ChatArchiveAggregate } from '../../Domain/Chat/ChatArchiveAggregate'; -import { IChatArchiveRepository } from '../../Domain/IRepository/IChatArchiveRepository'; -import { logDatabase, logError } from '../../Application/Services/Logger'; -import { ChatState } from '../../Domain/Chat/ChatAggregate'; - -export class ChatArchiveRepository implements IChatArchiveRepository { - private repo: Repository; - - constructor() { - this.repo = AppDataSource.getRepository(ChatArchiveAggregate); - } - - async create(archive: Partial) { - const startTime = Date.now(); - try { - const result = await this.repo.save(archive); - logDatabase('Chat archive created successfully', undefined, Date.now() - startTime, { - archiveId: result.id, - chatId: result.chatId, - messageCount: result.archivedMessages?.length || 0 - }); - return result; - } catch (error) { - logError('ChatArchiveRepository.create error', error as Error); - throw new Error('Failed to create chat archive in database'); - } - } - - async findAll() { - const startTime = Date.now(); - try { - const result = await this.repo.find(); - logDatabase('All chat archives retrieved', undefined, Date.now() - startTime, { - count: result.length - }); - return result; - } catch (error) { - logError('ChatArchiveRepository.findAll error', error as Error); - throw new Error('Failed to retrieve chat archives from database'); - } - } - - async findById(id: string) { - const startTime = Date.now(); - try { - const result = await this.repo.findOneBy({ id }); - logDatabase('Chat archive retrieved by id', `findById(${id})`, Date.now() - startTime, { - archiveId: id, - found: !!result - }); - return result; - } catch (error) { - logError('ChatArchiveRepository.findById error', error as Error); - throw new Error('Failed to find chat archive by id'); - } - } - - async findByChatId(chatId: string) { - const startTime = Date.now(); - try { - const result = await this.repo - .find({ - where: { chatId }, - order: { archivedAt: 'DESC' } - }); - - logDatabase('Chat archives retrieved by chat id', `findByChatId(${chatId})`, Date.now() - startTime, { - chatId, - count: result.length - }); - return result; - } catch (error) { - logError('ChatArchiveRepository.findByChatId error', error as Error); - throw new Error('Failed to find chat archives by chat id'); - } - } - - async findByGameId(gameId: string) { - const startTime = Date.now(); - try { - const result = await this.repo - .find({ - where: { gameId }, - order: { archivedAt: 'DESC' } - }); - - logDatabase('Chat archives retrieved by game id', `findByGameId(${gameId})`, Date.now() - startTime, { - gameId, - count: result.length - }); - return result; - } catch (error) { - logError('ChatArchiveRepository.findByGameId error', error as Error); - throw new Error('Failed to find chat archives by game id'); - } - } - - async delete(id: string) { - const startTime = Date.now(); - try { - const result = await this.repo.delete(id); - logDatabase('Chat archive deleted', `delete(${id})`, Date.now() - startTime, { - archiveId: id, - affected: result.affected - }); - return result; - } catch (error) { - logError('ChatArchiveRepository.delete error', error as Error); - throw new Error('Failed to delete chat archive'); - } - } - - async cleanup(olderThanDays: number) { - const startTime = Date.now(); - try { - const cutoffDate = new Date(Date.now() - olderThanDays * 24 * 60 * 60 * 1000); - - const result = await this.repo - .createQueryBuilder() - .delete() - .where('archivedAt < :cutoffDate', { cutoffDate }) - .execute(); - - logDatabase('Chat archive cleanup completed', `cleanup(${olderThanDays} days)`, Date.now() - startTime, { - olderThanDays, - deleted: result.affected, - cutoffDate - }); - - return result.affected || 0; - } catch (error) { - logError('ChatArchiveRepository.cleanup error', error as Error); - throw new Error('Failed to cleanup old chat archives'); - } - } -} diff --git a/SerpentRace_Backend/src/Infrastructure/Repository/ChatRepository.ts b/SerpentRace_Backend/src/Infrastructure/Repository/ChatRepository.ts deleted file mode 100644 index 1b266e7f..00000000 --- a/SerpentRace_Backend/src/Infrastructure/Repository/ChatRepository.ts +++ /dev/null @@ -1,358 +0,0 @@ -import { Repository, MoreThan, Not } from 'typeorm'; -import { AppDataSource } from '../ormconfig'; -import { ChatAggregate, ChatState, ChatType } from '../../Domain/Chat/ChatAggregate'; -import { ChatArchiveAggregate } from '../../Domain/Chat/ChatArchiveAggregate'; -import { IChatRepository } from '../../Domain/IRepository/IChatRepository'; -import { logDatabase, logError } from '../../Application/Services/Logger'; - -export class ChatRepository implements IChatRepository { - private repo: Repository; - private archiveRepo: Repository; - - constructor() { - this.repo = AppDataSource.getRepository(ChatAggregate); - this.archiveRepo = AppDataSource.getRepository(ChatArchiveAggregate); - } - - async create(chat: Partial) { - const startTime = Date.now(); - try { - const result = await this.repo.save(chat); - logDatabase('Chat created successfully', undefined, Date.now() - startTime, { - chatId: result.id, - type: result.type, - participants: result.users?.length || 0 - }); - return result; - } catch (error) { - logError('ChatRepository.create error', error as Error); - throw new Error('Failed to create chat in database'); - } - } - - async findByPage(from: number, to: number): Promise<{ chats: ChatAggregate[], totalCount: number }> { - const startTime = Date.now(); - try { - const skip = from; - const take = to - from + 1; - - const [chats, totalCount] = await this.repo.findAndCount({ - where: { state: Not(ChatState.SOFT_DELETE) }, - order: { createDate: 'DESC' }, - skip, - take - }); - - logDatabase('Chats page retrieved successfully', undefined, Date.now() - startTime, { - from, - to, - returned: chats.length, - totalCount - }); - - return { chats, totalCount }; - } catch (error) { - logError('ChatRepository.findByPage error', error as Error); - throw new Error('Failed to retrieve chats page from database'); - } - } - - async findByPageIncludingDeleted(from: number, to: number): Promise<{ chats: ChatAggregate[], totalCount: number }> { - const startTime = Date.now(); - try { - const skip = from; - const take = to - from + 1; - - const [chats, totalCount] = await this.repo.findAndCount({ - order: { createDate: 'DESC' }, - skip, - take - }); - - logDatabase('Chats page retrieved successfully (including deleted)', undefined, Date.now() - startTime, { - from, - to, - returned: chats.length, - totalCount - }); - - return { chats, totalCount }; - } catch (error) { - logError('ChatRepository.findByPageIncludingDeleted error', error as Error); - throw new Error('Failed to retrieve chats page from database'); - } - } - - async findById(id: string) { - const startTime = Date.now(); - try { - const result = await this.repo.findOne({ - where: { - id, - state: Not(ChatState.SOFT_DELETE) - } - }); - logDatabase('Chat findById query completed', undefined, Date.now() - startTime, { - found: !!result, - chatId: id - }); - return result; - } catch (error) { - logError('ChatRepository.findById error', error as Error); - throw new Error('Failed to retrieve chat from database'); - } - } - - async findByIdIncludingDeleted(id: string) { - const startTime = Date.now(); - try { - const result = await this.repo.findOneBy({ id }); - logDatabase('Chat findByIdIncludingDeleted query completed', undefined, Date.now() - startTime, { - found: !!result, - chatId: id - }); - return result; - } catch (error) { - logError('ChatRepository.findByIdIncludingDeleted error', error as Error); - throw new Error('Failed to retrieve chat from database'); - } - } - - async findByUserId(userId: string) { - const startTime = Date.now(); - try { - const result = await this.repo - .createQueryBuilder('chat') - .where(':userId = ANY(chat.users)', { userId }) - .andWhere('chat.state != :softDelete', { softDelete: ChatState.SOFT_DELETE }) - .getMany(); - - logDatabase('Chats retrieved by user id', `findByUserId(${userId})`, Date.now() - startTime, { - userId, - count: result.length - }); - return result; - } catch (error) { - logError('ChatRepository.findByUserId error', error as Error); - throw new Error('Failed to find chats by user id'); - } - } - - async findByUserIdIncludingDeleted(userId: string) { - const startTime = Date.now(); - try { - const result = await this.repo - .createQueryBuilder('chat') - .where(':userId = ANY(chat.users)', { userId }) - .getMany(); - - logDatabase('Chats retrieved by user id (including deleted)', `findByUserIdIncludingDeleted(${userId})`, Date.now() - startTime, { - userId, - count: result.length - }); - return result; - } catch (error) { - logError('ChatRepository.findByUserIdIncludingDeleted error', error as Error); - throw new Error('Failed to find all chats by user id'); - } - } - - async findByGameId(gameId: string) { - const startTime = Date.now(); - try { - const result = await this.repo.findOneBy({ - gameId, - type: ChatType.GAME, - state: ChatState.ACTIVE - }); - logDatabase('Chat retrieved by game id', `findByGameId(${gameId})`, Date.now() - startTime, { - gameId, - found: !!result - }); - return result; - } catch (error) { - logError('ChatRepository.findByGameId error', error as Error); - throw new Error('Failed to find chat by game id'); - } - } - - async findActiveChatsForUser(userId: string) { - const startTime = Date.now(); - try { - const result = await this.repo - .createQueryBuilder('chat') - .where(':userId = ANY(chat.users)', { userId }) - .andWhere('chat.state = :state', { state: ChatState.ACTIVE }) - .orderBy('chat.lastActivity', 'DESC') - .getMany(); - - logDatabase('Active chats retrieved for user', `findActiveChatsForUser(${userId})`, Date.now() - startTime, { - userId, - count: result.length - }); - return result; - } catch (error) { - logError('ChatRepository.findActiveChatsForUser error', error as Error); - throw new Error('Failed to find active chats for user'); - } - } - - async findInactiveChats(inactivityMinutes: number) { - const startTime = Date.now(); - try { - const cutoffDate = new Date(Date.now() - inactivityMinutes * 60 * 1000); - - const result = await this.repo - .createQueryBuilder('chat') - .where('chat.state = :state', { state: ChatState.ACTIVE }) - .andWhere('(chat.lastActivity < :cutoffDate OR chat.lastActivity IS NULL)', { cutoffDate }) - .getMany(); - - logDatabase('Inactive chats retrieved', `findInactiveChats(${inactivityMinutes}min)`, Date.now() - startTime, { - inactivityMinutes, - count: result.length, - cutoffDate - }); - return result; - } catch (error) { - logError('ChatRepository.findInactiveChats error', error as Error); - throw new Error('Failed to find inactive chats'); - } - } - - async update(id: string, update: Partial) { - const startTime = Date.now(); - try { - await this.repo.update(id, update); - const result = await this.findById(id); - logDatabase('Chat updated successfully', `update(${id})`, Date.now() - startTime, { - chatId: id, - updatedFields: Object.keys(update), - success: !!result - }); - return result; - } catch (error) { - logError('ChatRepository.update error', error as Error); - throw new Error('Failed to update chat in database'); - } - } - - async delete(id: string) { - const startTime = Date.now(); - try { - const result = await this.repo.delete(id); - logDatabase('Chat deleted', `delete(${id})`, Date.now() - startTime, { - chatId: id, - affected: result.affected - }); - return result; - } catch (error) { - logError('ChatRepository.delete error', error as Error); - throw new Error('Failed to delete chat'); - } - } - - async softDelete(id: string) { - const startTime = Date.now(); - try { - await this.repo.update(id, { state: ChatState.SOFT_DELETE }); - const result = await this.findById(id); - logDatabase('Chat soft deleted', `softDelete(${id})`, Date.now() - startTime, { - chatId: id, - success: !!result - }); - return result; - } catch (error) { - logError('ChatRepository.softDelete error', error as Error); - throw new Error('Failed to soft delete chat'); - } - } - - async archiveChat(chat: ChatAggregate) { - const startTime = Date.now(); - try { - const archive = new ChatArchiveAggregate(); - archive.chatId = chat.id; - archive.archivedMessages = chat.messages; - archive.archivedAt = new Date(); - archive.chatType = chat.type; - archive.chatName = chat.name; - archive.gameId = chat.gameId; - archive.participants = chat.users; - - const archivedResult = await this.archiveRepo.save(archive); - - await this.repo.update(chat.id, { - state: ChatState.ARCHIVE, - messages: [], - archiveDate: new Date() - }); - - logDatabase('Chat archived successfully', `archiveChat(${chat.id})`, Date.now() - startTime, { - chatId: chat.id, - messageCount: chat.messages.length, - archiveId: archivedResult.id - }); - - return archivedResult; - } catch (error) { - logError('ChatRepository.archiveChat error', error as Error); - throw new Error('Failed to archive chat'); - } - } - - async getArchivedChat(chatId: string) { - const startTime = Date.now(); - try { - const result = await this.archiveRepo.findOneBy({ chatId }); - logDatabase('Archived chat retrieved', `getArchivedChat(${chatId})`, Date.now() - startTime, { - chatId, - found: !!result - }); - return result; - } catch (error) { - logError('ChatRepository.getArchivedChat error', error as Error); - throw new Error('Failed to retrieve archived chat'); - } - } - - async restoreFromArchive(chatId: string) { - const startTime = Date.now(); - try { - const archive = await this.archiveRepo.findOneBy({ chatId }); - if (!archive) { - return null; - } - - // Game chats cannot be restored, only viewed - if (archive.chatType === ChatType.GAME) { - logDatabase('Game chat restore attempt blocked', `restoreFromArchive(${chatId})`, Date.now() - startTime, { - chatId, - chatType: archive.chatType, - blocked: true - }); - return null; - } - - // Restore messages to the chat - await this.repo.update(chatId, { - state: ChatState.ACTIVE, - messages: archive.archivedMessages, - lastActivity: new Date(), - archiveDate: null - }); - - const result = await this.findById(chatId); - logDatabase('Chat restored from archive', `restoreFromArchive(${chatId})`, Date.now() - startTime, { - chatId, - messageCount: archive.archivedMessages.length, - success: !!result - }); - - return result; - } catch (error) { - logError('ChatRepository.restoreFromArchive error', error as Error); - throw new Error('Failed to restore chat from archive'); - } - } -} diff --git a/SerpentRace_Backend/src/Infrastructure/Repository/ContactRepository.ts b/SerpentRace_Backend/src/Infrastructure/Repository/ContactRepository.ts deleted file mode 100644 index dab30922..00000000 --- a/SerpentRace_Backend/src/Infrastructure/Repository/ContactRepository.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { Repository, Not } from 'typeorm'; -import { AppDataSource } from '../ormconfig'; -import { ContactAggregate, ContactState } from '../../Domain/Contact/ContactAggregate'; -import { IContactRepository } from '../../Domain/IRepository/IContactRepository'; -import { logDatabase, logError } from '../../Application/Services/Logger'; - -export class ContactRepository implements IContactRepository { - private repo: Repository; - - constructor() { - this.repo = AppDataSource.getRepository(ContactAggregate); - } - - async create(contact: Partial) { - return this.repo.save(contact); - } - - async findById(id: string) { - return this.repo - .createQueryBuilder('contact') - .where('contact.id = :id', { id }) - .andWhere('contact.state != :softDelete', { softDelete: ContactState.SOFT_DELETE }) - .getOne(); - } - - async findByPage(from: number, to: number): Promise<{ contacts: ContactAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const limit = to - from + 1; - const offset = from; - - // Get total count for pagination - const totalCount = await this.repo.count({ - where: { - state: Not(ContactState.SOFT_DELETE) - } - }); - - // Get paginated results - const contacts = await this.repo - .createQueryBuilder('contact') - .where('contact.state != :softDelete', { softDelete: ContactState.SOFT_DELETE }) - .orderBy('contact.createDate', 'DESC') - .limit(limit) - .offset(offset) - .getMany(); - - const endTime = performance.now(); - logDatabase('Contact page query completed', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${contacts.length}, total: ${totalCount}, from: ${from}, to: ${to}`); - - return { contacts, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Contact page query failed', `executionTime: ${Math.round(endTime - startTime)}ms, from: ${from}, to: ${to}`); - logError('ContactRepository.findByPage error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to get contacts page from database'); - } - } - - async findByPageIncludingDeleted(from: number, to: number): Promise<{ contacts: ContactAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const limit = to - from + 1; - const offset = from; - - // Get total count for pagination - const totalCount = await this.repo.count(); - - // Get paginated results - const contacts = await this.repo - .createQueryBuilder('contact') - .orderBy('contact.createDate', 'DESC') - .limit(limit) - .offset(offset) - .getMany(); - - const endTime = performance.now(); - logDatabase('Contact page query completed (including deleted)', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${contacts.length}, total: ${totalCount}, from: ${from}, to: ${to}`); - - return { contacts, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Contact page query failed (including deleted)', `executionTime: ${Math.round(endTime - startTime)}ms, from: ${from}, to: ${to}`); - logError('ContactRepository.findByPageIncludingDeleted error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to get contacts page from database'); - } - } - - async update(id: string, update: Partial) { - await this.repo.update(id, update); - return this.findById(id); - } - - async delete(id: string) { - return this.repo.delete(id); - } - - async softDelete(id: string) { - await this.repo.update(id, { state: ContactState.SOFT_DELETE }); - return this.findById(id); - } - - async findByIdIncludingDeleted(id: string) { - return this.repo.findOneBy({ id }); // Returns contact regardless of state - } - - async searchIncludingDeleted(searchTerm: string) { - return this.repo - .createQueryBuilder('contact') - .where('contact.name ILIKE :searchTerm', { searchTerm: `%${searchTerm}%` }) - .orWhere('contact.email ILIKE :searchTerm', { searchTerm: `%${searchTerm}%` }) - .orWhere('contact.txt ILIKE :searchTerm', { searchTerm: `%${searchTerm}%` }) - .getMany(); - } - - async search(searchTerm: string) { - return this.repo - .createQueryBuilder('contact') - .where('contact.name ILIKE :searchTerm', { searchTerm: `%${searchTerm}%` }) - .orWhere('contact.email ILIKE :searchTerm', { searchTerm: `%${searchTerm}%` }) - .orWhere('contact.txt ILIKE :searchTerm', { searchTerm: `%${searchTerm}%` }) - .andWhere('contact.state != :softDelete', { softDelete: ContactState.SOFT_DELETE }) - .getMany(); - } -} diff --git a/SerpentRace_Backend/src/Infrastructure/Repository/DeckRepository.ts b/SerpentRace_Backend/src/Infrastructure/Repository/DeckRepository.ts deleted file mode 100644 index 3c50b183..00000000 --- a/SerpentRace_Backend/src/Infrastructure/Repository/DeckRepository.ts +++ /dev/null @@ -1,308 +0,0 @@ -import { Repository, Not } from 'typeorm'; -import { AppDataSource } from '../ormconfig'; -import { DeckAggregate, State, CType } from '../../Domain/Deck/DeckAggregate'; -import { IDeckRepository } from '../../Domain/IRepository/IDeckRepository'; -import { logDatabase, logError } from '../../Application/Services/Logger'; -import { AdminBypassService } from '../../Application/Services/AdminBypassService'; - -export class DeckRepository implements IDeckRepository { - private repo: Repository; - constructor() { - this.repo = AppDataSource.getRepository(DeckAggregate); - } - - async create(deck: Partial) { - return this.repo.save(deck); - } - - async findByPage(from: number, to: number): Promise<{ decks: DeckAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const limit = to - from + 1; - const offset = from; - - // Get total count for pagination - const totalCount = await this.repo.count({ - where: { state: Not(State.SOFT_DELETE) } - }); - - // Get paginated results - const decks = await this.repo.find({ - where: { state: Not(State.SOFT_DELETE) }, - order: { updateDate: 'DESC' }, - take: limit, - skip: offset - }); - - const endTime = performance.now(); - logDatabase('Deck page query completed', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${decks.length}, total: ${totalCount}, from: ${from}, to: ${to}`); - - return { decks, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Deck page query failed', `executionTime: ${Math.round(endTime - startTime)}ms, from: ${from}, to: ${to}`); - logError('DeckRepository.findByPage error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to get decks page from database'); - } - } - - async findByPageIncludingDeleted(from: number, to: number): Promise<{ decks: DeckAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const limit = to - from + 1; - const offset = from; - - // Get total count for pagination - const totalCount = await this.repo.count(); - - // Get paginated results - const decks = await this.repo.find({ - order: { updateDate: 'DESC' }, - take: limit, - skip: offset - }); - - const endTime = performance.now(); - logDatabase('Deck page query completed (including deleted)', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${decks.length}, total: ${totalCount}, from: ${from}, to: ${to}`); - - return { decks, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Deck page query failed (including deleted)', `executionTime: ${Math.round(endTime - startTime)}ms, from: ${from}, to: ${to}`); - logError('DeckRepository.findByPageIncludingDeleted error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to get decks page from database'); - } - } - - async findById(id: string) { - return this.repo.findOne({ - where: { - id, - state: Not(State.SOFT_DELETE) - } - }); - } - - async findByIdIncludingDeleted(id: string) { - return this.repo.findOneBy({ id }); - } - - async update(id: string, update: Partial) { - await this.repo.update(id, update); - return this.findByIdIncludingDeleted(id); - } - - async delete(id: string) { - return this.repo.delete(id); - } - - async softDelete(id: string) { - await this.repo.update(id, { state: State.SOFT_DELETE }); - return this.findById(id); - } - - async search(query: string, limit: number = 20, offset: number = 0): Promise<{ decks: DeckAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const searchPattern = `%${query.toLowerCase()}%`; - - const queryBuilder = this.repo.createQueryBuilder('deck') - .where('deck.state != :softDelete', { softDelete: State.SOFT_DELETE }) - .andWhere('LOWER(deck.name) LIKE :pattern', { pattern: searchPattern }); - - const totalCount = await queryBuilder.getCount(); - - const decks = await queryBuilder - .orderBy('deck.name', 'ASC') - .limit(limit) - .offset(offset) - .getMany(); - - const endTime = performance.now(); - logDatabase('Deck search completed', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${decks.length}, total: ${totalCount}, searchTerm: "${query}", limit: ${limit}, offset: ${offset}`); - - return { decks, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Deck search failed', `executionTime: ${Math.round(endTime - startTime)}ms, searchTerm: "${query}"`); - logError('DeckRepository.search error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to search decks in database'); - } - } - - async searchIncludingDeleted(query: string, limit: number = 20, offset: number = 0): Promise<{ decks: DeckAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const searchPattern = `%${query.toLowerCase()}%`; - - const queryBuilder = this.repo.createQueryBuilder('deck') - .where('LOWER(deck.name) LIKE :pattern', { pattern: searchPattern }); - - const totalCount = await queryBuilder.getCount(); - - const decks = await queryBuilder - .orderBy('deck.name', 'ASC') - .limit(limit) - .offset(offset) - .getMany(); - - const endTime = performance.now(); - logDatabase('Deck search completed (including deleted)', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${decks.length}, total: ${totalCount}, searchTerm: "${query}", limit: ${limit}, offset: ${offset}`); - - return { decks, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Deck search failed (including deleted)', `executionTime: ${Math.round(endTime - startTime)}ms, searchTerm: "${query}"`); - logError('DeckRepository.searchIncludingDeleted error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to search all decks in database'); - } - } - - /** - * Count active (non-soft-deleted) decks for a specific user - * @param userId - User ID to count decks for - * @returns Number of active decks - */ - async countActiveByUserId(userId: string): Promise { - const startTime = performance.now(); - try { - const count = await this.repo.count({ - where: { - userid: userId, - state: Not(State.SOFT_DELETE) - } - }); - - const endTime = performance.now(); - logDatabase('User active deck count completed', `executionTime: ${Math.round(endTime - startTime)}ms, userId: ${userId}, count: ${count}`); - - return count; - } catch (error) { - const endTime = performance.now(); - logDatabase('User active deck count failed', `executionTime: ${Math.round(endTime - startTime)}ms, userId: ${userId}`); - logError('DeckRepository.countActiveByUserId error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to count active decks for user'); - } - } - - /** - * Count organizational decks for a specific user - * @param userId - User ID to count organizational decks for - * @returns Number of organizational decks - */ - async countOrganizationalByUserId(userId: string): Promise { - const startTime = performance.now(); - try { - const count = await this.repo.count({ - where: { - userid: userId, - ctype: CType.ORGANIZATION, - state: Not(State.SOFT_DELETE) - } - }); - - const endTime = performance.now(); - logDatabase('User organizational deck count completed', `executionTime: ${Math.round(endTime - startTime)}ms, userId: ${userId}, count: ${count}`); - - return count; - } catch (error) { - const endTime = performance.now(); - logDatabase('User organizational deck count failed', `executionTime: ${Math.round(endTime - startTime)}ms, userId: ${userId}`); - logError('DeckRepository.countOrganizationalByUserId error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to count organizational decks for user'); - } - } - - /** - * Find decks with filtering based on user permissions and mandatory pagination - * @param userId - User ID for filtering - * @param userOrgId - User's organization ID (if any) - * @param isAdmin - Whether user is admin (bypasses filtering) - * @param from - Start index for pagination (default: 0) - * @param to - End index for pagination (default: 49) - * @returns Paginated filtered list of decks with total count - */ - async findFilteredDecks(userId: string, userOrgId?: string | null, isAdmin?: boolean, from: number = 0, to: number = 49): Promise<{ decks: DeckAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - // Validate pagination parameters - if (from < 0 || to < from) { - throw new Error('Invalid pagination parameters'); - } - - const limit = to - from + 1; - if (limit > 100) { - throw new Error('Page size too large. Maximum 100 records per request'); - } - - const skip = from; - const take = limit; - - // Admin gets ALL decks with pagination - if (isAdmin) { - AdminBypassService.logAdminBypass( - 'FIND_FILTERED_DECKS_BYPASS', - userId, - 'all-decks-filtered', - { - bypassType: 'admin-all-decks-filtered', - userOrgId, - from, - to, - operation: 'read' - } - ); - - const [decks, totalCount] = await this.repo.findAndCount({ - where: { state: Not(State.SOFT_DELETE) }, - relations: ['organization', 'user'], - order: { creationdate: 'DESC' }, - skip, - take - }); - - const endTime = performance.now(); - logDatabase('Admin filtered deck query completed', `executionTime: ${Math.round(endTime - startTime)}ms, userId: ${userId}, found: ${decks.length}, totalCount: ${totalCount}, isAdmin: true`); - - return { decks, totalCount }; - } - - // Regular user complex filtering - const queryBuilder = this.repo.createQueryBuilder('deck') - .leftJoinAndSelect('deck.organization', 'org') - .leftJoinAndSelect('deck.user', 'user') - .where('deck.state != :deletedState', { deletedState: State.SOFT_DELETE }); - - queryBuilder.andWhere('(' + - // User's private decks - '(deck.userid = :userId AND deck.ctype = :privateType) OR ' + - // All public decks - '(deck.ctype = :publicType)' + - // Organization decks from same org (if user has org) - (userOrgId ? ' OR (deck.ctype = :orgType AND org.id = :orgId)' : '') + - ')', { - userId, - privateType: CType.PRIVATE, - publicType: CType.PUBLIC, - ...(userOrgId && { orgType: CType.ORGANIZATION, orgId: userOrgId }) - }); - - queryBuilder - .orderBy('deck.creationdate', 'DESC') - .skip(skip) - .take(take); - - const [decks, totalCount] = await queryBuilder.getManyAndCount(); - - const endTime = performance.now(); - logDatabase('User filtered deck query completed', `executionTime: ${Math.round(endTime - startTime)}ms, userId: ${userId}, userOrgId: ${userOrgId}, found: ${decks.length}, totalCount: ${totalCount}, isAdmin: false`); - - return { decks, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Filtered deck query failed', `executionTime: ${Math.round(endTime - startTime)}ms, userId: ${userId}, isAdmin: ${isAdmin}`); - logError('DeckRepository.findFilteredDecks error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to find filtered decks'); - } - } -} diff --git a/SerpentRace_Backend/src/Infrastructure/Repository/GameRepository.ts b/SerpentRace_Backend/src/Infrastructure/Repository/GameRepository.ts deleted file mode 100644 index d16dfbc0..00000000 --- a/SerpentRace_Backend/src/Infrastructure/Repository/GameRepository.ts +++ /dev/null @@ -1,416 +0,0 @@ -import { Repository, Not, In } from 'typeorm'; -import { AppDataSource } from '../ormconfig'; -import { GameAggregate, GameState } from '../../Domain/Game/GameAggregate'; -import { IGameRepository } from '../../Domain/IRepository/IGameRepository'; -import { logDatabase, logError } from '../../Application/Services/Logger'; - -export class GameRepository implements IGameRepository { - private repo: Repository; - constructor() { - this.repo = AppDataSource.getRepository(GameAggregate); - } - - async create(game: Partial): Promise { - const startTime = performance.now(); - try { - const result = await this.repo.save(game); - const endTime = performance.now(); - logDatabase('Game created', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${result.id}, gameCode: ${result.gamecode}`); - return result; - } catch (error) { - const endTime = performance.now(); - logDatabase('Game creation failed', `executionTime: ${Math.round(endTime - startTime)}ms`); - logError('GameRepository.create error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to create game in database'); - } - } - - async findByPage(from: number, to: number): Promise<{ games: GameAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const limit = to - from + 1; - const offset = from; - - // Get total count for pagination - const totalCount = await this.repo.count({ - where: { state: Not(GameState.CANCELLED) } - }); - - // Get paginated results - const games = await this.repo.find({ - where: { state: Not(GameState.CANCELLED) }, - order: { updateDate: 'DESC' }, - take: limit, - skip: offset - }); - - const endTime = performance.now(); - logDatabase('Game page query completed', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${games.length}, total: ${totalCount}, from: ${from}, to: ${to}`); - - return { games, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Game page query failed', `executionTime: ${Math.round(endTime - startTime)}ms, from: ${from}, to: ${to}`); - logError('GameRepository.findByPage error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to get games page from database'); - } - } - - async findByPageIncludingDeleted(from: number, to: number): Promise<{ games: GameAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const limit = to - from + 1; - const offset = from; - - // Get total count for pagination (including deleted) - const totalCount = await this.repo.count(); - - // Get paginated results (including deleted) - const games = await this.repo.find({ - order: { updateDate: 'DESC' }, - take: limit, - skip: offset - }); - - const endTime = performance.now(); - logDatabase('Game page query (including deleted) completed', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${games.length}, total: ${totalCount}, from: ${from}, to: ${to}`); - - return { games, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Game page query (including deleted) failed', `executionTime: ${Math.round(endTime - startTime)}ms, from: ${from}, to: ${to}`); - logError('GameRepository.findByPageIncludingDeleted error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to get games page (including deleted) from database'); - } - } - - async findById(id: string): Promise { - const startTime = performance.now(); - try { - const result = await this.repo.findOne({ - where: { id, state: Not(GameState.CANCELLED) } - }); - const endTime = performance.now(); - logDatabase('Game findById completed', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${id}, found: ${!!result}`); - return result; - } catch (error) { - const endTime = performance.now(); - logDatabase('Game findById failed', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${id}`); - logError('GameRepository.findById error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to find game by id in database'); - } - } - - async findByIdIncludingDeleted(id: string): Promise { - const startTime = performance.now(); - try { - const result = await this.repo.findOne({ - where: { id } - }); - const endTime = performance.now(); - logDatabase('Game findByIdIncludingDeleted completed', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${id}, found: ${!!result}`); - return result; - } catch (error) { - const endTime = performance.now(); - logDatabase('Game findByIdIncludingDeleted failed', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${id}`); - logError('GameRepository.findByIdIncludingDeleted error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to find game by id (including deleted) in database'); - } - } - - async findByGameCode(gamecode: string): Promise { - const startTime = performance.now(); - try { - const result = await this.repo.findOne({ - where: { gamecode, state: Not(GameState.CANCELLED) } - }); - const endTime = performance.now(); - logDatabase('Game findByGameCode completed', `executionTime: ${Math.round(endTime - startTime)}ms, gameCode: ${gamecode}, found: ${!!result}`); - return result; - } catch (error) { - const endTime = performance.now(); - logDatabase('Game findByGameCode failed', `executionTime: ${Math.round(endTime - startTime)}ms, gameCode: ${gamecode}`); - logError('GameRepository.findByGameCode error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to find game by game code in database'); - } - } - - async search(query: string, limit?: number, offset?: number): Promise<{ games: GameAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const queryBuilder = this.repo.createQueryBuilder('game') - .where('game.state != :cancelledState', { cancelledState: GameState.CANCELLED }) - .andWhere('(game.gamecode ILIKE :query)', { query: `%${query}%` }); - - // Get total count - const totalCount = await queryBuilder.getCount(); - - // Apply pagination if provided - if (limit !== undefined) { - queryBuilder.take(limit); - } - if (offset !== undefined) { - queryBuilder.skip(offset); - } - - const games = await queryBuilder.orderBy('game.updateDate', 'DESC').getMany(); - - const endTime = performance.now(); - logDatabase('Game search completed', `executionTime: ${Math.round(endTime - startTime)}ms, query: ${query}, found: ${games.length}, total: ${totalCount}`); - - return { games, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Game search failed', `executionTime: ${Math.round(endTime - startTime)}ms, query: ${query}`); - logError('GameRepository.search error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to search games in database'); - } - } - - async searchIncludingDeleted(query: string, limit?: number, offset?: number): Promise<{ games: GameAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const queryBuilder = this.repo.createQueryBuilder('game') - .where('(game.gamecode ILIKE :query)', { query: `%${query}%` }); - - // Get total count - const totalCount = await queryBuilder.getCount(); - - // Apply pagination if provided - if (limit !== undefined) { - queryBuilder.take(limit); - } - if (offset !== undefined) { - queryBuilder.skip(offset); - } - - const games = await queryBuilder.orderBy('game.updateDate', 'DESC').getMany(); - - const endTime = performance.now(); - logDatabase('Game search (including deleted) completed', `executionTime: ${Math.round(endTime - startTime)}ms, query: ${query}, found: ${games.length}, total: ${totalCount}`); - - return { games, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Game search (including deleted) failed', `executionTime: ${Math.round(endTime - startTime)}ms, query: ${query}`); - logError('GameRepository.searchIncludingDeleted error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to search games (including deleted) in database'); - } - } - - async update(id: string, update: Partial): Promise { - const startTime = performance.now(); - try { - await this.repo.update(id, update); - const result = await this.findById(id); - const endTime = performance.now(); - logDatabase('Game update completed', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${id}, updated: ${!!result}`); - return result; - } catch (error) { - const endTime = performance.now(); - logDatabase('Game update failed', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${id}`); - logError('GameRepository.update error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to update game in database'); - } - } - - async delete(id: string): Promise { - const startTime = performance.now(); - try { - const result = await this.repo.delete(id); - const endTime = performance.now(); - logDatabase('Game delete completed', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${id}, affected: ${result.affected}`); - return result; - } catch (error) { - const endTime = performance.now(); - logDatabase('Game delete failed', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${id}`); - logError('GameRepository.delete error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to delete game from database'); - } - } - - async softDelete(id: string): Promise { - const startTime = performance.now(); - try { - await this.repo.update(id, { state: GameState.CANCELLED }); - const result = await this.findByIdIncludingDeleted(id); - const endTime = performance.now(); - logDatabase('Game soft delete completed', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${id}, updated: ${!!result}`); - return result; - } catch (error) { - const endTime = performance.now(); - logDatabase('Game soft delete failed', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${id}`); - logError('GameRepository.softDelete error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to soft delete game in database'); - } - } - - // Game-specific methods - async findActiveGames(): Promise { - const startTime = performance.now(); - try { - const games = await this.repo.find({ - where: { state: GameState.ACTIVE }, - order: { updateDate: 'DESC' } - }); - const endTime = performance.now(); - logDatabase('Active games query completed', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${games.length}`); - return games; - } catch (error) { - const endTime = performance.now(); - logDatabase('Active games query failed', `executionTime: ${Math.round(endTime - startTime)}ms`); - logError('GameRepository.findActiveGames error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to find active games in database'); - } - } - - async findGamesByPlayer(playerId: string): Promise { - const startTime = performance.now(); - try { - const queryBuilder = this.repo.createQueryBuilder('game') - .where('game.state != :cancelledState', { cancelledState: GameState.CANCELLED }) - .andWhere('JSON_CONTAINS(game.players, :playerId)', { playerId: `"${playerId}"` }) - .orderBy('game.updateDate', 'DESC'); - - const games = await queryBuilder.getMany(); - const endTime = performance.now(); - logDatabase('Games by player query completed', `executionTime: ${Math.round(endTime - startTime)}ms, playerId: ${playerId}, found: ${games.length}`); - return games; - } catch (error) { - const endTime = performance.now(); - logDatabase('Games by player query failed', `executionTime: ${Math.round(endTime - startTime)}ms, playerId: ${playerId}`); - logError('GameRepository.findGamesByPlayer error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to find games by player in database'); - } - } - - async findWaitingGames(): Promise { - const startTime = performance.now(); - try { - const games = await this.repo.find({ - where: { state: GameState.WAITING }, - order: { createdate: 'ASC' } - }); - const endTime = performance.now(); - logDatabase('Waiting games query completed', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${games.length}`); - return games; - } catch (error) { - const endTime = performance.now(); - logDatabase('Waiting games query failed', `executionTime: ${Math.round(endTime - startTime)}ms`); - logError('GameRepository.findWaitingGames error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to find waiting games in database'); - } - } - - async findFinishedGames(from?: number, to?: number): Promise<{ games: GameAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const queryBuilder = this.repo.createQueryBuilder('game') - .where('game.state = :finishedState', { finishedState: GameState.FINISHED }) - .orderBy('game.enddate', 'DESC'); - - // Get total count - const totalCount = await queryBuilder.getCount(); - - // Apply pagination if provided - if (from !== undefined && to !== undefined) { - const limit = to - from + 1; - const offset = from; - queryBuilder.take(limit).skip(offset); - } - - const games = await queryBuilder.getMany(); - const endTime = performance.now(); - logDatabase('Finished games query completed', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${games.length}, total: ${totalCount}`); - return { games, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Finished games query failed', `executionTime: ${Math.round(endTime - startTime)}ms`); - logError('GameRepository.findFinishedGames error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to find finished games in database'); - } - } - - async addPlayerToGame(gameId: string, playerId: string): Promise { - const startTime = performance.now(); - try { - const game = await this.findById(gameId); - if (!game) { - return null; - } - - // Check if player is already in the game - if (game.players.includes(playerId)) { - return game; - } - - // Check if game is full - if (game.players.length >= game.maxplayers) { - throw new Error('Game is full'); - } - - const updatedPlayers = [...game.players, playerId]; - const result = await this.update(gameId, { players: updatedPlayers }); - - const endTime = performance.now(); - logDatabase('Player added to game', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${gameId}, playerId: ${playerId}`); - return result; - } catch (error) { - const endTime = performance.now(); - logDatabase('Add player to game failed', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${gameId}, playerId: ${playerId}`); - logError('GameRepository.addPlayerToGame error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to add player to game in database'); - } - } - - async removePlayerFromGame(gameId: string, playerId: string): Promise { - const startTime = performance.now(); - try { - const game = await this.findById(gameId); - if (!game) { - return null; - } - - const updatedPlayers = game.players.filter(id => id !== playerId); - const result = await this.update(gameId, { players: updatedPlayers }); - - const endTime = performance.now(); - logDatabase('Player removed from game', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${gameId}, playerId: ${playerId}`); - return result; - } catch (error) { - const endTime = performance.now(); - logDatabase('Remove player from game failed', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${gameId}, playerId: ${playerId}`); - logError('GameRepository.removePlayerFromGame error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to remove player from game in database'); - } - } - - async updateGameState(gameId: string, state: GameState, winner?: string): Promise { - const startTime = performance.now(); - try { - const updateData: Partial = { state }; - - if (state === GameState.ACTIVE) { - updateData.startdate = new Date(); - } - - if (state === GameState.FINISHED) { - updateData.enddate = new Date(); - if (winner) { - updateData.winnerId = winner; - } - } - - const result = await this.update(gameId, updateData); - - const endTime = performance.now(); - logDatabase('Game state updated', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${gameId}, state: ${updateData.state}, winner: ${winner}`); - return result; - } catch (error) { - const endTime = performance.now(); - logDatabase('Game state update failed', `executionTime: ${Math.round(endTime - startTime)}ms, gameId: ${gameId}`); - logError('GameRepository.updateGameState error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to update game state in database'); - } - } -} \ No newline at end of file diff --git a/SerpentRace_Backend/src/Infrastructure/Repository/GameSnapshotRepository.ts b/SerpentRace_Backend/src/Infrastructure/Repository/GameSnapshotRepository.ts deleted file mode 100644 index 15107377..00000000 --- a/SerpentRace_Backend/src/Infrastructure/Repository/GameSnapshotRepository.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { Repository, LessThan } from 'typeorm'; -import { AppDataSource } from '../ormconfig'; -import { IGameSnapshotRepository } from '../../Domain/IRepository/IGameSnapshotRepository'; -import { GameSnapshotAggregate, SnapshotTrigger } from '../../Domain/Game/GameSnapshotAggregate'; - -export class GameSnapshotRepository implements IGameSnapshotRepository { - private repository: Repository; - - constructor() { - this.repository = AppDataSource.getRepository(GameSnapshotAggregate); - } - - async save(snapshot: GameSnapshotAggregate): Promise { - return await this.repository.save(snapshot); - } - - async findLatestByGameId(gameId: string): Promise { - return await this.repository.findOne({ - where: { gameid: gameId }, - order: { createdat: 'DESC' } - }); - } - - async findByGameId(gameId: string): Promise { - return await this.repository.find({ - where: { gameid: gameId }, - order: { turnNumber: 'ASC', createdat: 'ASC' } - }); - } - - async findByGameAndTrigger(gameId: string, trigger: SnapshotTrigger): Promise { - return await this.repository.find({ - where: { - gameid: gameId, - trigger: trigger - }, - order: { createdat: 'DESC' } - }); - } - - async findByGameAndTurn(gameId: string, turnNumber: number): Promise { - return await this.repository.findOne({ - where: { - gameid: gameId, - turnNumber: turnNumber - }, - order: { createdat: 'DESC' } - }); - } - - async deleteOldSnapshots(gameId: string, keepCount: number): Promise { - const snapshots = await this.repository.find({ - where: { gameid: gameId }, - order: { createdat: 'DESC' }, - select: ['id', 'createdat'] - }); - - if (snapshots.length > keepCount) { - const idsToDelete = snapshots - .slice(keepCount) - .map(s => s.id); - - if (idsToDelete.length > 0) { - await this.repository.delete(idsToDelete); - } - } - } - - async deleteByGameId(gameId: string): Promise { - await this.repository.delete({ gameid: gameId }); - } -} diff --git a/SerpentRace_Backend/src/Infrastructure/Repository/OrganizationRepository.ts b/SerpentRace_Backend/src/Infrastructure/Repository/OrganizationRepository.ts deleted file mode 100644 index f8647e60..00000000 --- a/SerpentRace_Backend/src/Infrastructure/Repository/OrganizationRepository.ts +++ /dev/null @@ -1,164 +0,0 @@ -import { Repository, Not } from 'typeorm'; -import { AppDataSource } from '../ormconfig'; -import { OrganizationAggregate, OrganizationState } from '../../Domain/Organization/OrganizationAggregate'; -import { IOrganizationRepository } from '../../Domain/IRepository/IOrganizationRepository'; -import { logDatabase, logError } from '../../Application/Services/Logger'; - -export class OrganizationRepository implements IOrganizationRepository { - private repo: Repository; - constructor() { - this.repo = AppDataSource.getRepository(OrganizationAggregate); - } - - async create(org: Partial) { - return this.repo.save(org); - } - - async findByPage(from: number, to: number): Promise<{ organizations: OrganizationAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const limit = to - from + 1; - const offset = from; - - // Get total count for pagination - const totalCount = await this.repo.count({ - where: { state: Not(OrganizationState.SOFT_DELETE) } - }); - - // Get paginated results - const organizations = await this.repo.find({ - where: { state: Not(OrganizationState.SOFT_DELETE) }, - order: { name: 'ASC' }, - take: limit, - skip: offset - }); - - const endTime = performance.now(); - logDatabase('Organization page query completed', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${organizations.length}, total: ${totalCount}, from: ${from}, to: ${to}`); - - return { organizations, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Organization page query failed', `executionTime: ${Math.round(endTime - startTime)}ms, from: ${from}, to: ${to}`); - logError('OrganizationRepository.findByPage error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to get organizations page from database'); - } - } - - async findByPageIncludingDeleted(from: number, to: number): Promise<{ organizations: OrganizationAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const limit = to - from + 1; - const offset = from; - - // Get total count for pagination - const totalCount = await this.repo.count(); - - // Get paginated results - const organizations = await this.repo.find({ - order: { name: 'ASC' }, - take: limit, - skip: offset - }); - - const endTime = performance.now(); - logDatabase('Organization page query completed (including deleted)', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${organizations.length}, total: ${totalCount}, from: ${from}, to: ${to}`); - - return { organizations, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Organization page query failed (including deleted)', `executionTime: ${Math.round(endTime - startTime)}ms, from: ${from}, to: ${to}`); - logError('OrganizationRepository.findByPageIncludingDeleted error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to get organizations page from database'); - } - } - - async findById(id: string) { - return this.repo.findOne({ - where: { - id, - state: Not(OrganizationState.SOFT_DELETE) - } - }); - } - - async findByIdIncludingDeleted(id: string) { - return this.repo.findOneBy({ id }); - } - - async update(id: string, update: Partial) { - await this.repo.update(id, update); - return this.findById(id); - } - - async delete(id: string) { - return this.repo.delete(id); - } - - async softDelete(id: string) { - await this.repo.update(id, { state: OrganizationState.SOFT_DELETE }); - return this.findById(id); - } - - async search(query: string, limit: number = 20, offset: number = 0): Promise<{ organizations: OrganizationAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const searchPattern = `%${query.toLowerCase()}%`; - - const queryBuilder = this.repo.createQueryBuilder('org') - .where('org.state != :softDelete', { softDelete: OrganizationState.SOFT_DELETE }) - .andWhere('(LOWER(org.name) LIKE :pattern OR LOWER(org.contactfname) LIKE :pattern OR LOWER(org.contactlname) LIKE :pattern OR LOWER(org.contactemail) LIKE :pattern OR LOWER(CONCAT(org.contactfname, \' \', org.contactlname)) LIKE :pattern)', { pattern: searchPattern }); - - const totalCount = await queryBuilder.getCount(); - - const organizations = await queryBuilder - .orderBy('org.name', 'ASC') - .limit(limit) - .offset(offset) - .getMany(); - - const endTime = performance.now(); - logDatabase('Organization search completed', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${organizations.length}, total: ${totalCount}, searchTerm: "${query}", limit: ${limit}, offset: ${offset}`); - - return { organizations, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Organization search failed', `executionTime: ${Math.round(endTime - startTime)}ms, searchTerm: "${query}"`); - logError('OrganizationRepository.search error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to search organizations in database'); - } - } - - async searchIncludingDeleted(query: string, limit: number = 20, offset: number = 0): Promise<{ organizations: OrganizationAggregate[], totalCount: number }> { - const startTime = performance.now(); - try { - const searchPattern = `%${query.toLowerCase()}%`; - - const queryBuilder = this.repo.createQueryBuilder('org') - .where('LOWER(org.name) LIKE :pattern', { pattern: searchPattern }) - .orWhere('LOWER(org.contactfname) LIKE :pattern', { pattern: searchPattern }) - .orWhere('LOWER(org.contactlname) LIKE :pattern', { pattern: searchPattern }) - .orWhere('LOWER(org.contactemail) LIKE :pattern', { pattern: searchPattern }) - .orWhere('LOWER(CONCAT(org.contactfname, \' \', org.contactlname)) LIKE :pattern', { pattern: searchPattern }); - - const totalCount = await queryBuilder.getCount(); - - const organizations = await queryBuilder - .orderBy('org.name', 'ASC') - .limit(limit) - .offset(offset) - .getMany(); - - const endTime = performance.now(); - logDatabase('Organization search completed (including deleted)', `executionTime: ${Math.round(endTime - startTime)}ms, found: ${organizations.length}, total: ${totalCount}, searchTerm: "${query}", limit: ${limit}, offset: ${offset}`); - - return { organizations, totalCount }; - } catch (error) { - const endTime = performance.now(); - logDatabase('Organization search failed (including deleted)', `executionTime: ${Math.round(endTime - startTime)}ms, searchTerm: "${query}"`); - logError('OrganizationRepository.searchIncludingDeleted error', error instanceof Error ? error : new Error(String(error))); - throw new Error('Failed to search all organizations in database'); - } - } - -} diff --git a/SerpentRace_Backend/src/Infrastructure/Repository/TurnHistoryRepository.ts b/SerpentRace_Backend/src/Infrastructure/Repository/TurnHistoryRepository.ts deleted file mode 100644 index 5b801210..00000000 --- a/SerpentRace_Backend/src/Infrastructure/Repository/TurnHistoryRepository.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Repository } from 'typeorm'; -import { AppDataSource } from '../ormconfig'; -import { ITurnHistoryRepository } from '../../Domain/IRepository/ITurnHistoryRepository'; -import { TurnHistoryAggregate } from '../../Domain/Game/TurnHistoryAggregate'; - -export class TurnHistoryRepository implements ITurnHistoryRepository { - private repository: Repository; - - constructor() { - this.repository = AppDataSource.getRepository(TurnHistoryAggregate); - } - - async save(turnHistory: TurnHistoryAggregate): Promise { - return await this.repository.save(turnHistory); - } - - async findByGameId(gameId: string): Promise { - return await this.repository.find({ - where: { gameid: gameId }, - order: { turnNumber: 'ASC', createdat: 'ASC' } - }); - } - - async findByGameAndPlayer(gameId: string, playerId: string): Promise { - return await this.repository.find({ - where: { - gameid: gameId, - playerid: playerId - }, - order: { turnNumber: 'ASC', createdat: 'ASC' } - }); - } - - async findLastNTurns(gameId: string, limit: number): Promise { - return await this.repository.find({ - where: { gameid: gameId }, - order: { turnNumber: 'DESC', createdat: 'DESC' }, - take: limit - }); - } - - async countTurnsByGame(gameId: string): Promise { - return await this.repository.count({ - where: { gameid: gameId } - }); - } - - async deleteByGameId(gameId: string): Promise { - await this.repository.delete({ gameid: gameId }); - } -} diff --git a/SerpentRace_Backend/src/Infrastructure/Repository/UserRepository.ts b/SerpentRace_Backend/src/Infrastructure/Repository/UserRepository.ts deleted file mode 100644 index 40d772ae..00000000 --- a/SerpentRace_Backend/src/Infrastructure/Repository/UserRepository.ts +++ /dev/null @@ -1,369 +0,0 @@ -import { Repository, Not } from 'typeorm'; -import { AppDataSource } from '../ormconfig'; -import { UserAggregate, UserState } from '../../Domain/User/UserAggregate'; -import { IUserRepository } from '../../Domain/IRepository/IUserRepository'; -import { logDatabase, logError } from '../../Application/Services/Logger'; - -export class UserRepository implements IUserRepository { - private repo: Repository; - constructor() { - this.repo = AppDataSource.getRepository(UserAggregate); - } - - async create(user: Partial) { - const startTime = Date.now(); - try { - const result = await this.repo.save(user); - logDatabase('User created successfully', undefined, Date.now() - startTime, { - userId: result.id, - username: user.username, - email: user.email - }); - return result; - } catch (error) { - logError('UserRepository.create error', error as Error); - - // Handle unique constraint violations - if (error instanceof Error && (error.message.includes('duplicate') || error.message.includes('unique'))) { - throw new Error('User with this username or email already exists'); - } - - throw new Error('Failed to create user in database'); - } - } - - async findByPage(from: number, to: number): Promise<{ users: UserAggregate[], totalCount: number }> { - const startTime = Date.now(); - try { - const limit = to - from + 1; - const offset = from; - - // Get total count for pagination - const totalCount = await this.repo.count({ - where: { state: Not(UserState.SOFT_DELETE) } - }); - - // Get paginated results - const users = await this.repo.find({ - where: { state: Not(UserState.SOFT_DELETE) }, - order: { regdate: 'DESC' }, - take: limit, - skip: offset - }); - - logDatabase('User page query completed', `from: ${from}, to: ${to}`, Date.now() - startTime, { - found: users.length, - total: totalCount - }); - - return { users, totalCount }; - } catch (error) { - logError('UserRepository.findByPage error', error as Error); - throw new Error('Failed to get users page from database'); - } - } - - async findByPageIncludingDeleted(from: number, to: number): Promise<{ users: UserAggregate[], totalCount: number }> { - const startTime = Date.now(); - try { - const limit = to - from + 1; - const offset = from; - - // Get total count for pagination - const totalCount = await this.repo.count(); - - // Get paginated results - const users = await this.repo.find({ - order: { regdate: 'DESC' }, - take: limit, - skip: offset - }); - - logDatabase('User page query completed (including deleted)', `from: ${from}, to: ${to}`, Date.now() - startTime, { - found: users.length, - total: totalCount - }); - - return { users, totalCount }; - } catch (error) { - logError('UserRepository.findByPageIncludingDeleted error', error as Error); - throw new Error('Failed to get users page from database'); - } - } - - async findById(id: string) { - const startTime = Date.now(); - try { - const result = await this.repo.findOne({ - where: { - id, - state: Not(UserState.SOFT_DELETE) - } - }); - logDatabase('User findById query completed', `findOneBy({ id: ${id} })`, Date.now() - startTime, { - found: !!result, - userId: id - }); - return result; - } catch (error) { - logError('UserRepository.findById error', error as Error); - - if (error instanceof Error && error.message.includes('invalid input syntax for type uuid')) { - return null; - } - - throw new Error('Failed to retrieve user from database'); - } - } - - async findByIdIncludingDeleted(id: string) { - const startTime = Date.now(); - try { - const result = await this.repo.findOneBy({ id }); - logDatabase('User findByIdIncludingDeleted query completed', `findOneBy({ id: ${id} })`, Date.now() - startTime, { - found: !!result, - userId: id - }); - return result; - } catch (error) { - logError('UserRepository.findByIdIncludingDeleted error', error as Error); - - if (error instanceof Error && error.message.includes('invalid input syntax for type uuid')) { - return null; - } - - throw new Error('Failed to retrieve user from database'); - } - } - - async findByUsername(username: string) { - const startTime = Date.now(); - try { - const result = await this.repo.findOneBy({ username }); - logDatabase('User findByUsername query completed', `findOneBy({ username: ${username} })`, Date.now() - startTime, { - found: !!result, - username - }); - return result; - } catch (error) { - logError('UserRepository.findByUsername error', error as Error); - throw new Error('Failed to retrieve user by username from database'); - } - } - - async findByEmail(email: string) { - const startTime = Date.now(); - try { - const result = await this.repo.findOneBy({ email }); - logDatabase('User findByEmail query completed', `findOneBy({ email: ${email} })`, Date.now() - startTime, { - found: !!result, - email - }); - return result; - } catch (error) { - logError('UserRepository.findByEmail error', error as Error); - throw new Error('Failed to retrieve user by email from database'); - } - } - - async findByToken(token: string) { - const startTime = Date.now(); - try { - const result = await this.repo.findOneBy({ token: token }); - logDatabase('User findByToken query completed', `findOneBy({ token })`, Date.now() - startTime, { - found: !!result, - tokenPrefix: token.substring(0, 8) + '...' - }); - return result; - } catch (error) { - logError('UserRepository.findByToken error', error as Error); - throw new Error('Failed to retrieve user by token from database'); - } - } - - async update(id: string, update: Partial) { - const startTime = Date.now(); - try { - await this.repo.update(id, update); - const result = await this.findById(id); - logDatabase('User updated successfully', `update(${id})`, Date.now() - startTime, { - userId: id, - updatedFields: Object.keys(update), - success: !!result - }); - return result; - } catch (error) { - logError('UserRepository.update error', error as Error); - - // Handle unique constraint violations - if (error instanceof Error && (error.message.includes('duplicate') || error.message.includes('unique'))) { - throw new Error('Username or email already exists'); - } - - // Handle invalid UUID format - if (error instanceof Error && error.message.includes('invalid input syntax for type uuid')) { - throw new Error('Invalid user ID format'); - } - - throw new Error('Failed to update user in database'); - } - } - - async delete(id: string) { - const startTime = Date.now(); - try { - const result = await this.repo.delete(id); - logDatabase('User deleted successfully', `delete(${id})`, Date.now() - startTime, { - userId: id, - affected: result.affected - }); - return result; - } catch (error) { - logError('UserRepository.delete error', error as Error); - - // Handle invalid UUID format - if (error instanceof Error && error.message.includes('invalid input syntax for type uuid')) { - throw new Error('Invalid user ID format'); - } - - throw new Error('Failed to delete user from database'); - } - } - - async softDelete(id: string) { - const startTime = Date.now(); - try { - await this.repo.update(id, { state: UserState.SOFT_DELETE }); - const result = await this.findById(id); - logDatabase('User soft deleted successfully', `update(${id}, { state: SOFT_DELETE })`, Date.now() - startTime, { - userId: id, - success: !!result - }); - return result; - } catch (error) { - logError('UserRepository.softDelete error', error as Error); - - // Handle invalid UUID format - if (error instanceof Error && error.message.includes('invalid input syntax for type uuid')) { - throw new Error('Invalid user ID format'); - } - - throw new Error('Failed to soft delete user in database'); - } - } - - async deactivate(id: string) { - const startTime = Date.now(); - try { - await this.repo.update(id, { state: UserState.DEACTIVATED }); - const result = await this.findById(id); - logDatabase('User deactivated successfully', `update(${id}, { state: DEACTIVATED })`, Date.now() - startTime, { - userId: id, - success: !!result - }); - return result; - } catch (error) { - logError('UserRepository.deactivate error', error as Error); - - // Handle invalid UUID format - if (error instanceof Error && error.message.includes('invalid input syntax for type uuid')) { - throw new Error('Invalid user ID format'); - } - - throw new Error('Failed to deactivate user in database'); - } - } - - async search(query: string, limit: number = 20, offset: number = 0): Promise<{ users: UserAggregate[], totalCount: number }> { - const startTime = Date.now(); - try { - const searchPattern = `%${query.toLowerCase()}%`; - - const queryBuilder = this.repo.createQueryBuilder('user') - .where('user.state != :softDelete', { softDelete: UserState.SOFT_DELETE }) - .andWhere('(LOWER(user.username) LIKE :pattern OR LOWER(user.email) LIKE :pattern OR LOWER(user.fname) LIKE :pattern OR LOWER(user.lname) LIKE :pattern OR LOWER(CONCAT(user.fname, \' \', user.lname)) LIKE :pattern)', { pattern: searchPattern }); - - const totalCount = await queryBuilder.getCount(); - - const users = await queryBuilder - .orderBy('user.username', 'ASC') - .limit(limit) - .offset(offset) - .getMany(); - - logDatabase('User search completed', - `search query: ${query.substring(0, 50)}...`, - Date.now() - startTime, { - query, - limit, - offset, - totalCount, - returnedCount: users.length - }); - - return { users, totalCount }; - } catch (error) { - logError('UserRepository.search error', error as Error); - throw new Error('Failed to search users in database'); - } - } - - async searchIncludingDeleted(query: string, limit: number = 20, offset: number = 0): Promise<{ users: UserAggregate[], totalCount: number }> { - const startTime = Date.now(); - try { - const searchPattern = `%${query.toLowerCase()}%`; - - const queryBuilder = this.repo.createQueryBuilder('user') - .where('LOWER(user.username) LIKE :pattern', { pattern: searchPattern }) - .orWhere('LOWER(user.email) LIKE :pattern', { pattern: searchPattern }) - .orWhere('LOWER(user.fname) LIKE :pattern', { pattern: searchPattern }) - .orWhere('LOWER(user.lname) LIKE :pattern', { pattern: searchPattern }) - .orWhere('LOWER(CONCAT(user.fname, \' \', user.lname)) LIKE :pattern', { pattern: searchPattern }); - - const totalCount = await queryBuilder.getCount(); - - const users = await queryBuilder - .orderBy('user.username', 'ASC') - .limit(limit) - .offset(offset) - .getMany(); - - logDatabase('User search completed (including deleted)', - `search query: ${query.substring(0, 50)}...`, - Date.now() - startTime, { - query, - limit, - offset, - totalCount, - returnedCount: users.length - }); - - return { users, totalCount }; - } catch (error) { - logError('UserRepository.searchIncludingDeleted error', error as Error); - throw new Error('Failed to search all users in database'); - } - } - - async activate(id: string) { - const startTime = Date.now(); - try { - await this.repo.update(id, { state: UserState.VERIFIED_REGULAR }); - const result = await this.findById(id); - logDatabase('User activated successfully', `update(${id}, { state: VERIFIED_REGULAR })`, Date.now() - startTime, { - userId: id, - success: !!result - }); - return result; - } - catch (error) { - logError('UserRepository.activate error', error as Error); - // Handle invalid UUID format - if (error instanceof Error && error.message.includes('invalid input syntax for type uuid')) { - throw new Error('Invalid user ID format'); - } - throw new Error('Failed to activate user in database'); - } - } - -} diff --git a/SerpentRace_Backend/src/Infrastructure/ormconfig.ts b/SerpentRace_Backend/src/Infrastructure/ormconfig.ts deleted file mode 100644 index 939b2117..00000000 --- a/SerpentRace_Backend/src/Infrastructure/ormconfig.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { DataSource } from 'typeorm'; -import { join } from 'path'; - -export const AppDataSource = new DataSource({ - type: 'postgres', - host: process.env.DB_HOST || 'localhost', - port: parseInt(process.env.DB_PORT || '5432'), - username: process.env.DB_USERNAME || 'postgres', - password: process.env.DB_PASSWORD || 'postgres', - database: process.env.DB_NAME || 'serpentrace', - synchronize: false, // Set to false when using migrations - logging: process.env.NODE_ENV === 'development', - entities: [join(__dirname, '../Domain/**/*Aggregate.ts')], - migrations: [join(__dirname, './Migrations/*.ts')], - migrationsTableName: 'migrations', - migrationsRun: false // Let migrations run manually -}); \ No newline at end of file diff --git a/SerpentRace_Backend/src/Templates/contact-response-de.html b/SerpentRace_Backend/src/Templates/contact-response-de.html deleted file mode 100644 index bf1a0e0a..00000000 --- a/SerpentRace_Backend/src/Templates/contact-response-de.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - {{companyName}} - Antwort auf Ihre {{contactTypeString}} - - - -

- - diff --git a/SerpentRace_Backend/src/Templates/contact-response-de.txt b/SerpentRace_Backend/src/Templates/contact-response-de.txt deleted file mode 100644 index b02f1fcb..00000000 --- a/SerpentRace_Backend/src/Templates/contact-response-de.txt +++ /dev/null @@ -1,21 +0,0 @@ -{{companyName}} - Antwort auf Ihre {{contactTypeString}} - -Hallo {{contactName}}, - -Vielen Dank, dass Sie uns kontaktiert haben! Wir haben Ihre Nachricht geprüft und unser Team hat die folgende Antwort vorbereitet. - -=== IHRE URSPRÜNGLICHE NACHRICHT ({{contactTypeString}}) === -{{originalMessage}} - -=== UNSERE ANTWORT === -{{adminResponse}} - -Wenn Sie weitere Fragen haben oder zusätzliche Hilfe benötigen, zögern Sie bitte nicht, uns erneut zu kontaktieren. - -Vielen Dank, dass Sie sich für {{companyName}} entschieden haben! - -Für weitere Unterstützung kontaktieren Sie uns unter {{supportEmail}} -Dies ist eine automatische Antwort. Bitte antworten Sie nicht direkt auf diese E-Mail. - ---- -{{companyName}} Support-Team diff --git a/SerpentRace_Backend/src/Templates/contact-response-hu.html b/SerpentRace_Backend/src/Templates/contact-response-hu.html deleted file mode 100644 index cb9bff77..00000000 --- a/SerpentRace_Backend/src/Templates/contact-response-hu.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - {{companyName}} - Válasz az Ön {{contactTypeString}} üzenetére - - - - - - diff --git a/SerpentRace_Backend/src/Templates/contact-response-hu.txt b/SerpentRace_Backend/src/Templates/contact-response-hu.txt deleted file mode 100644 index 5433961b..00000000 --- a/SerpentRace_Backend/src/Templates/contact-response-hu.txt +++ /dev/null @@ -1,21 +0,0 @@ -{{companyName}} - Válasz az Ön {{contactTypeString}} üzenetére - -Kedves {{contactName}}! - -Köszönjük, hogy kapcsolatba lépett velünk! Átnéztük az Ön üzenetét és csapatunk az alábbi választ készítette. - -=== AZ ÖN EREDETI ÜZENETE ({{contactTypeString}}) === -{{originalMessage}} - -=== VÁLASZUNK === -{{adminResponse}} - -Ha további kérdése van vagy további segítségre van szüksége, kérjük, ne habozzon kapcsolatba lépni velünk újra. - -Köszönjük, hogy a {{companyName}} szolgáltatásait választotta! - -További támogatásért lépjen kapcsolatba velünk a {{supportEmail}} címen -Ez egy automatikus válasz. Kérjük, ne válaszoljon közvetlenül erre az e-mailre. - ---- -{{companyName}} Támogatási Csapat diff --git a/SerpentRace_Backend/src/Templates/contact-response.html b/SerpentRace_Backend/src/Templates/contact-response.html deleted file mode 100644 index b5f6fc89..00000000 --- a/SerpentRace_Backend/src/Templates/contact-response.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - {{companyName}} - Response to Your {{contactTypeString}} - - - - - - diff --git a/SerpentRace_Backend/src/Templates/contact-response.txt b/SerpentRace_Backend/src/Templates/contact-response.txt deleted file mode 100644 index cdf4a016..00000000 --- a/SerpentRace_Backend/src/Templates/contact-response.txt +++ /dev/null @@ -1,21 +0,0 @@ -{{companyName}} - Response to Your {{contactTypeString}} - -Hello {{contactName}}, - -Thank you for contacting us! We've reviewed your message and our team has provided a response below. - -=== YOUR ORIGINAL MESSAGE ({{contactTypeString}}) === -{{originalMessage}} - -=== OUR RESPONSE === -{{adminResponse}} - -If you have any additional questions or need further assistance, please don't hesitate to contact us again. - -Thank you for choosing {{companyName}}! - -For additional support, contact us at {{supportEmail}} -This is an automated response. Please do not reply directly to this email. - ---- -{{companyName}} Support Team diff --git a/SerpentRace_Backend/src/Templates/password-reset-de.html b/SerpentRace_Backend/src/Templates/password-reset-de.html deleted file mode 100644 index ff5ee585..00000000 --- a/SerpentRace_Backend/src/Templates/password-reset-de.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - SerpentRace - Passwort zurücksetzen - - - - - - diff --git a/SerpentRace_Backend/src/Templates/password-reset-de.txt b/SerpentRace_Backend/src/Templates/password-reset-de.txt deleted file mode 100644 index 86210ee6..00000000 --- a/SerpentRace_Backend/src/Templates/password-reset-de.txt +++ /dev/null @@ -1,44 +0,0 @@ -🐍 {{ companyName }} - Passwort zurücksetzen -=============================================== - -Hallo {{ userName }}! - -Wir haben eine Anfrage zum Zurücksetzen Ihres Passworts für Ihr {{ companyName }} Konto erhalten. - -Wenn Sie diese Anfrage gestellt haben, verwenden Sie den folgenden Link, um Ihr Passwort zurückzusetzen: - -PASSWORT-RESET-LINK: -{{ resetUrl }} - -RESET-TOKEN: -{{ resetToken }} - -Sie können entweder den obigen Link oder das Reset-Token verwenden, um Ihr Passwort zurückzusetzen. - -WICHTIGE SICHERHEITSINFORMATIONEN: -🚨 Dieser Passwort-Reset-Link läuft aus Sicherheitsgründen in 1 Stunde ab -🚨 Falls Sie keine Passwort-Zurücksetzung angefordert haben, ignorieren Sie diese E-Mail bitte und Ihr Passwort bleibt unverändert -🚨 Teilen Sie Ihr Reset-Token niemals mit anderen -🚨 {{ companyName }} wird Sie niemals per E-Mail nach Ihrem Passwort fragen - -SICHERHEITSTIPPS FÜR IHR NEUES PASSWORT: -💡 Verwenden Sie mindestens 8 Zeichen -💡 Verwenden Sie Groß- und Kleinbuchstaben -💡 Fügen Sie Zahlen und Sonderzeichen hinzu -💡 Verwenden Sie keine Passwörter von anderen Konten wieder -💡 Erwägen Sie die Verwendung eines Passwort-Managers - -DIESE ZURÜCKSETZUNG NICHT ANGEFORDERT? -Falls Sie keine Passwort-Zurücksetzung angefordert haben, ist Ihr Konto weiterhin sicher. Sie können diese E-Mail getrost ignorieren. -Falls Sie jedoch Bedenken bezüglich unbefugten Zugriffs haben, kontaktieren Sie bitte umgehend unser Support-Team. - -BENÖTIGEN SIE HILFE? -Falls Sie Sicherheitsbedenken haben oder Unterstützung benötigen, kontaktieren Sie unser Support-Team unter {{ supportEmail }} - -Zu Ihrer Sicherheit können wir Sie bitten, Ihre Identität zu verifizieren, wenn Sie den Support kontaktieren. - ---- -Diese E-Mail wurde vom {{ companyName }} Sicherheitsteam gesendet -Dies ist eine automatische Nachricht, bitte antworten Sie nicht auf diese E-Mail. - -© 2025 {{ companyName }}. Alle Rechte vorbehalten. diff --git a/SerpentRace_Backend/src/Templates/password-reset-hu.html b/SerpentRace_Backend/src/Templates/password-reset-hu.html deleted file mode 100644 index e2fef7a2..00000000 --- a/SerpentRace_Backend/src/Templates/password-reset-hu.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - SerpentRace - Jelszó visszaállítás kérése - - - - - - diff --git a/SerpentRace_Backend/src/Templates/password-reset-hu.txt b/SerpentRace_Backend/src/Templates/password-reset-hu.txt deleted file mode 100644 index f4e8002c..00000000 --- a/SerpentRace_Backend/src/Templates/password-reset-hu.txt +++ /dev/null @@ -1,44 +0,0 @@ -🐍 {{ companyName }} - Jelszó visszaállítás kérése -=============================================== - -Üdvözöljük {{ userName }}! - -Kérést kaptunk a {{ companyName }} fiókjához tartozó jelszó visszaállítására. - -Ha Ön küldte ezt a kérést, használja az alábbi linket a jelszó visszaállításához: - -JELSZÓ VISSZAÁLLÍTÁSI LINK: -{{ resetUrl }} - -VISSZAÁLLÍTÁSI TOKEN: -{{ resetToken }} - -Használhatja a fenti linket vagy a visszaállítási tokent a jelszava visszaállításához. - -FONTOS BIZTONSÁGI INFORMÁCIÓK: -🚨 Ez a jelszó-visszaállítási link biztonsági okokból 1 óra múlva lejár -🚨 Ha Ön nem kért jelszó visszaállítást, kérjük, hagyja figyelmen kívül ezt az e-mailt, és jelszava változatlan marad -🚨 Soha ne ossza meg a visszaállítási tokenjét senkivel -🚨 A {{ companyName }} soha nem fogja e-mailben kérni az Ön jelszavát - -BIZTONSÁGI TIPPEK AZ ÚJ JELSZAVÁHOZ: -💡 Használjon legalább 8 karaktert -💡 Használjon kis- és nagybetűket -💡 Adjon hozzá számokat és speciális karaktereket -💡 Ne használja újra más fiókok jelszavait -💡 Fontolja meg egy jelszókezelő használatát - -NEM ÖN KÉRTE EZT A VISSZAÁLLÍTÁST? -Ha Ön nem kért jelszó visszaállítást, fiókja továbbra is biztonságos. Nyugodtan figyelmen kívül hagyhatja ezt az e-mailt. -Azonban, ha aggodalmai vannak a jogosulatlan hozzáféréssel kapcsolatban, kérjük, azonnal lépjen kapcsolatba ügyfélszolgálatunkkal. - -SEGÍTSÉGRE VAN SZÜKSÉGE? -Ha biztonsági aggályai vannak vagy segítségre van szüksége, lépjen kapcsolatba ügyfélszolgálatunkkal: {{ supportEmail }} - -Biztonsága érdekében megkérhetjük, hogy igazolja személyazonosságát, amikor kapcsolatba lép ügyfélszolgálatunkkal. - ---- -Ezt az e-mailt a {{ companyName }} Biztonsági Csapata küldte -Ez egy automatikus üzenet, kérjük, ne válaszoljon erre az e-mailre. - -© 2025 {{ companyName }}. Minden jog fenntartva. diff --git a/SerpentRace_Backend/src/Templates/password-reset.html b/SerpentRace_Backend/src/Templates/password-reset.html deleted file mode 100644 index 2b734b4b..00000000 --- a/SerpentRace_Backend/src/Templates/password-reset.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - SerpentRace - Password Reset Request - - - - - - diff --git a/SerpentRace_Backend/src/Templates/password-reset.txt b/SerpentRace_Backend/src/Templates/password-reset.txt deleted file mode 100644 index 1f28794a..00000000 --- a/SerpentRace_Backend/src/Templates/password-reset.txt +++ /dev/null @@ -1,44 +0,0 @@ -🐍 {{ companyName }} - Password Reset Request -=============================================== - -Hello {{ userName }}! - -We received a request to reset your password for your {{ companyName }} account. - -If you made this request, use the link below to reset your password: - -PASSWORD RESET LINK: -{{ resetUrl }} - -RESET TOKEN: -{{ resetToken }} - -You can use either the link above or the reset token to reset your password. - -IMPORTANT SECURITY INFORMATION: -🚨 This password reset link will expire in 1 hour for your security -🚨 If you didn't request a password reset, please ignore this email and your password will remain unchanged -🚨 Never share your reset token with anyone -🚨 {{ companyName }} will never ask for your password via email - -SECURITY TIPS FOR YOUR NEW PASSWORD: -💡 Use at least 8 characters -💡 Include uppercase and lowercase letters -💡 Add numbers and special characters -💡 Don't reuse passwords from other accounts -💡 Consider using a password manager - -DIDN'T REQUEST THIS RESET? -If you didn't request a password reset, your account is still secure. You can safely ignore this email. -However, if you're concerned about unauthorized access, please contact our support team immediately. - -NEED HELP? -If you have security concerns or need assistance, contact our support team at {{ supportEmail }} - -For your security, we may ask you to verify your identity when contacting support. - ---- -This email was sent by {{ companyName }} Security Team -This is an automated message, please do not reply to this email. - -© 2025 {{ companyName }}. All rights reserved. diff --git a/SerpentRace_Backend/src/Templates/verification-de.html b/SerpentRace_Backend/src/Templates/verification-de.html deleted file mode 100644 index 32459a20..00000000 --- a/SerpentRace_Backend/src/Templates/verification-de.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - SerpentRace - Konto verifizieren - - - - - - diff --git a/SerpentRace_Backend/src/Templates/verification-de.txt b/SerpentRace_Backend/src/Templates/verification-de.txt deleted file mode 100644 index ea50afb8..00000000 --- a/SerpentRace_Backend/src/Templates/verification-de.txt +++ /dev/null @@ -1,36 +0,0 @@ -🐍 {{ companyName }} - Konto verifizieren -=============================================== - -Hallo {{ userName }}! - -Willkommen bei {{ companyName }}! Wir freuen uns, dass Sie unserer Gaming-Community beigetreten sind. - -Um Ihre Registrierung abzuschließen und Ihr Konto zu nutzen, verifizieren Sie bitte Ihre E-Mail-Adresse. - -VERIFIZIERUNGSLINK: -{{ verificationUrl }} - -VERIFIZIERUNGSTOKEN: -{{ verificationToken }} - -Sie können entweder den obigen Link oder das Verifizierungstoken verwenden, um Ihr Konto zu verifizieren. - -SICHERHEITSHINWEIS: -⚠️ Dieser Verifizierungslink läuft in 24 Stunden ab -⚠️ Falls Sie kein Konto bei {{ companyName }} erstellt haben, ignorieren Sie diese E-Mail bitte -⚠️ Teilen Sie Ihren Verifizierungstoken niemals mit anderen - -Nach der Verifizierung können Sie: -✨ Ihre Spieldecks erstellen und verwalten -🎮 An Gaming-Turnieren und Wettbewerben teilnehmen -👥 Sich mit anderen Spielern in Ihrer Organisation verbinden -📊 Ihre Gaming-Statistiken und Fortschritte verfolgen - -BENÖTIGEN SIE HILFE? -Falls Sie Fragen haben oder auf Probleme stoßen, kontaktieren Sie bitte unser Support-Team unter {{ supportEmail }} - ---- -Diese E-Mail wurde von {{ companyName }} gesendet -Dies ist eine automatische Nachricht, bitte antworten Sie nicht auf diese E-Mail. - -© 2025 {{ companyName }}. Alle Rechte vorbehalten. diff --git a/SerpentRace_Backend/src/Templates/verification-hu.html b/SerpentRace_Backend/src/Templates/verification-hu.html deleted file mode 100644 index e6cc0214..00000000 --- a/SerpentRace_Backend/src/Templates/verification-hu.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - SerpentRace - Fiók megerősítése - - - - - - diff --git a/SerpentRace_Backend/src/Templates/verification-hu.txt b/SerpentRace_Backend/src/Templates/verification-hu.txt deleted file mode 100644 index 4519a90a..00000000 --- a/SerpentRace_Backend/src/Templates/verification-hu.txt +++ /dev/null @@ -1,36 +0,0 @@ -🐍 {{ companyName }} - Fiók megerősítése -=============================================== - -Üdvözöljük {{ userName }}! - -Üdvözöljük a {{ companyName }} közösségében! Örülünk, hogy csatlakozott hozzánk játékosközösségünkhöz. - -A regisztráció befejezéséhez és fiókja használatbavételéhez kérjük, erősítse meg e-mail címét. - -MEGERŐSÍTÉSI LINK: -{{ verificationUrl }} - -MEGERŐSÍTÉSI TOKEN: -{{ verificationToken }} - -Használhatja a fenti linket vagy a megerősítési tokent fiókja megerősítéséhez. - -BIZTONSÁGI FIGYELMEZTETÉS: -⚠️ Ez a megerősítési link 24 óra múlva lejár -⚠️ Ha Ön nem hozott létre fiókot a {{ companyName }}-nál, kérjük, hagyja figyelmen kívül ezt az e-mailt -⚠️ Soha ne ossza meg a megerősítési tokenjét senkivel - -A megerősítés után lehetősége lesz: -✨ Játékcsomagok létrehozására és kezelésére -🎮 Játékversenyeken és bajnokságokon való részvételre -👥 Kapcsolatfelvételre szervezetében lévő más játékosokkal -📊 Játékstatisztikák és fejlődés nyomon követésére - -SEGÍTSÉGRE VAN SZÜKSÉGE? -Ha kérdései vannak vagy problémákba ütközik, kérjük, lépjen kapcsolatba ügyfélszolgálatunkkal: {{ supportEmail }} - ---- -Ezt az e-mailt a {{ companyName }} küldte -Ez egy automatikus üzenet, kérjük, ne válaszoljon erre az e-mailre. - -© 2025 {{ companyName }}. Minden jog fenntartva. diff --git a/SerpentRace_Backend/src/Templates/verification.html b/SerpentRace_Backend/src/Templates/verification.html deleted file mode 100644 index f5cb0500..00000000 --- a/SerpentRace_Backend/src/Templates/verification.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - SerpentRace - Verify Your Account - - - - - - diff --git a/SerpentRace_Backend/src/Templates/verification.txt b/SerpentRace_Backend/src/Templates/verification.txt deleted file mode 100644 index 3986b3a6..00000000 --- a/SerpentRace_Backend/src/Templates/verification.txt +++ /dev/null @@ -1,36 +0,0 @@ -🐍 {{ companyName }} - Account Verification -=============================================== - -Hello {{ userName }}! - -Welcome to {{ companyName }}! We're excited to have you join our gaming community. - -To complete your registration and start using your account, please verify your email address. - -VERIFICATION LINK: -{{ verificationUrl }} - -VERIFICATION TOKEN: -{{ verificationToken }} - -You can use either the link above or the verification token to verify your account. - -SECURITY NOTICE: -⚠️ This verification link will expire in 24 hours -⚠️ If you didn't create an account with {{ companyName }}, please ignore this email -⚠️ Never share your verification token with anyone - -Once verified, you'll be able to: -✨ Create and manage your game decks -🎮 Join gaming tournaments and competitions -👥 Connect with other players in your organization -📊 Track your gaming statistics and progress - -NEED HELP? -If you have any questions or encounter issues, please contact our support team at {{ supportEmail }} - ---- -This email was sent by {{ companyName }} -This is an automated message, please do not reply to this email. - -© 2025 {{ companyName }}. All rights reserved. diff --git a/SerpentRace_Backend/test-org-auth.js b/SerpentRace_Backend/test-org-auth.js deleted file mode 100644 index 4e627ad2..00000000 --- a/SerpentRace_Backend/test-org-auth.js +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env node - -/** - * Test script for Organization Authentication functionality - * This script tests the new organization authentication features: - * 1. Get organization login URL - * 2. Process third-party authentication callback - * 3. Login with organization reauthentication check - */ - -const { container } = require('./dist/Application/Services/DIContainer.js'); - -async function testOrganizationAuth() { - console.log('🧪 Testing Organization Authentication Functionality\n'); - - try { - // Test 1: Get Organization Login URL - console.log('1️⃣ Testing Get Organization Login URL Query Handler'); - const getUrlHandler = container.getOrganizationLoginUrlQueryHandler; - console.log('✅ Handler instantiated successfully'); - - // Test 2: Process Organization Auth Callback - console.log('2️⃣ Testing Process Organization Auth Callback Command Handler'); - const callbackHandler = container.processOrgAuthCallbackCommandHandler; - console.log('✅ Handler instantiated successfully'); - - // Test 3: Enhanced Login Handler with Organization Repository - console.log('3️⃣ Testing Enhanced Login Handler'); - const loginHandler = container.loginCommandHandler; - console.log('✅ Enhanced login handler instantiated successfully'); - - console.log('\n🎉 All Organization Authentication components initialized successfully!'); - console.log('\n📋 Summary of new functionality:'); - console.log(' • GET /api/organizations/:orgId/login-url - Get organization third-party login URL'); - console.log(' • POST /api/organizations/auth-callback - Process third-party authentication result'); - console.log(' • Enhanced login response includes organization reauthentication requirements'); - console.log(' • Users must reauthenticate with organization if last login > 1 month ago'); - - } catch (error) { - console.error('❌ Error testing organization authentication:', error.message); - process.exit(1); - } -} - -// Run the test -testOrganizationAuth(); diff --git a/SerpentRace_Backend/tests/Application/Chat/ChatMessagingSystem.test.ts b/SerpentRace_Backend/tests/Application/Chat/ChatMessagingSystem.test.ts deleted file mode 100644 index 1f7ee565..00000000 --- a/SerpentRace_Backend/tests/Application/Chat/ChatMessagingSystem.test.ts +++ /dev/null @@ -1,278 +0,0 @@ -import { describe, it, expect, beforeAll, afterAll, beforeEach } from '@jest/globals'; -import { AppDataSource } from '../../../src/Infrastructure/ormconfig'; -import { ChatRepository } from '../../../src/Infrastructure/Repository/ChatRepository'; -import { ChatArchiveRepository } from '../../../src/Infrastructure/Repository/ChatArchiveRepository'; -import { UserRepository } from '../../../src/Infrastructure/Repository/UserRepository'; -import { ChatType } from '../../../src/Domain/Chat/ChatAggregate'; -import { UserState } from '../../../src/Domain/User/UserAggregate'; -import { v4 as uuidv4 } from 'uuid'; - -describe('Chat Messaging System', () => { - let chatRepository: ChatRepository; - let chatArchiveRepository: ChatArchiveRepository; - let userRepository: UserRepository; - - let testUser1: any; - let testUser2: any; - let testPremiumUser: any; - - beforeAll(async () => { - if (!AppDataSource.isInitialized) { - await AppDataSource.initialize(); - } - - chatRepository = new ChatRepository(); - chatArchiveRepository = new ChatArchiveRepository(); - userRepository = new UserRepository(); - }); - - beforeEach(async () => { - // Create test users - testUser1 = await userRepository.create({ - username: `testuser1_${Date.now()}`, - email: `test1_${Date.now()}@example.com`, - password: 'hashedpassword', - fname: 'Test', - lname: 'User1', - type: 'regular', - state: UserState.VERIFIED_REGULAR - }); - - testUser2 = await userRepository.create({ - username: `testuser2_${Date.now()}`, - email: `test2_${Date.now()}@example.com`, - password: 'hashedpassword', - fname: 'Test', - lname: 'User2', - type: 'regular', - state: UserState.VERIFIED_REGULAR - }); - - testPremiumUser = await userRepository.create({ - username: `premiumuser_${Date.now()}`, - email: `premium_${Date.now()}@example.com`, - password: 'hashedpassword', - fname: 'Premium', - lname: 'User', - type: 'premium', - state: UserState.VERIFIED_PREMIUM - }); - }); - - afterAll(async () => { - if (AppDataSource.isInitialized) { - await AppDataSource.destroy(); - } - }); - - describe('Direct Chat Creation', () => { - it('should create a direct chat between two users', async () => { - const chat = await chatRepository.create({ - type: ChatType.DIRECT, - users: [testUser1.id, testUser2.id], - messages: [], - lastActivity: new Date() - }); - - expect(chat).toBeDefined(); - expect(chat.type).toBe(ChatType.DIRECT); - expect(chat.users).toEqual([testUser1.id, testUser2.id]); - expect(chat.messages).toEqual([]); - }); - }); - - describe('Group Chat Creation', () => { - it('should create a group chat', async () => { - const chat = await chatRepository.create({ - type: ChatType.GROUP, - name: 'Test Group', - createdBy: testPremiumUser.id, - users: [testPremiumUser.id, testUser1.id, testUser2.id], - messages: [], - lastActivity: new Date() - }); - - expect(chat).toBeDefined(); - expect(chat.type).toBe(ChatType.GROUP); - expect(chat.name).toBe('Test Group'); - expect(chat.createdBy).toBe(testPremiumUser.id); - expect(chat.users.length).toBe(3); - }); - }); - - describe('Game Chat Creation', () => { - it('should create a game chat', async () => { - const gameId = uuidv4(); - - const chat = await chatRepository.create({ - type: ChatType.GAME, - name: 'Test Game Chat', - gameId: gameId, - users: [testUser1.id, testUser2.id], - messages: [], - lastActivity: new Date() - }); - - expect(chat).toBeDefined(); - expect(chat.type).toBe(ChatType.GAME); - expect(chat.gameId).toBe(gameId); - expect(chat.name).toBe('Test Game Chat'); - }); - - it('should find game chat by game id', async () => { - const gameId = uuidv4(); - - await chatRepository.create({ - type: ChatType.GAME, - name: 'Test Game Chat', - gameId: gameId, - users: [testUser1.id, testUser2.id], - messages: [], - lastActivity: new Date() - }); - - const foundChat = await chatRepository.findByGameId(gameId); - expect(foundChat).toBeDefined(); - expect(foundChat!.gameId).toBe(gameId); - }); - }); - - describe('Message Management', () => { - it('should add and retrieve messages', async () => { - const chat = await chatRepository.create({ - type: ChatType.DIRECT, - users: [testUser1.id, testUser2.id], - messages: [], - lastActivity: new Date() - }); - - const message = { - id: uuidv4(), - date: new Date(), - userid: testUser1.id, - text: 'Hello, this is a test message!' - }; - - await chatRepository.update(chat.id, { - messages: [message], - lastActivity: new Date() - }); - - const updatedChat = await chatRepository.findById(chat.id); - expect(updatedChat!.messages).toHaveLength(1); - expect(updatedChat!.messages[0].text).toBe('Hello, this is a test message!'); - expect(updatedChat!.messages[0].userid).toBe(testUser1.id); - }); - }); - - describe('Chat Archiving', () => { - it('should archive a chat with messages', async () => { - const message = { - id: uuidv4(), - date: new Date(), - userid: testUser1.id, - text: 'Message to be archived' - }; - - const chat = await chatRepository.create({ - type: ChatType.DIRECT, - users: [testUser1.id, testUser2.id], - messages: [message], - lastActivity: new Date() - }); - - const archive = await chatRepository.archiveChat(chat); - - expect(archive).toBeDefined(); - expect(archive.chatId).toBe(chat.id); - expect(archive.archivedMessages).toHaveLength(1); - expect(archive.archivedMessages[0].text).toBe('Message to be archived'); - - // Check that chat messages were cleared - const archivedChat = await chatRepository.findById(chat.id); - expect(archivedChat!.messages).toEqual([]); - expect(archivedChat!.archiveDate).toBeDefined(); - }); - - it('should retrieve archived chat', async () => { - const message = { - id: uuidv4(), - date: new Date(), - userid: testUser1.id, - text: 'Archived message' - }; - - const chat = await chatRepository.create({ - type: ChatType.DIRECT, - users: [testUser1.id, testUser2.id], - messages: [message], - lastActivity: new Date() - }); - - await chatRepository.archiveChat(chat); - - const archive = await chatRepository.getArchivedChat(chat.id); - expect(archive).toBeDefined(); - expect(archive!.archivedMessages).toHaveLength(1); - expect(archive!.archivedMessages[0].text).toBe('Archived message'); - }); - }); - - describe('Chat Queries', () => { - it('should find chats by user id', async () => { - const chat1 = await chatRepository.create({ - type: ChatType.DIRECT, - users: [testUser1.id, testUser2.id], - messages: [], - lastActivity: new Date() - }); - - const chat2 = await chatRepository.create({ - type: ChatType.GROUP, - name: 'Test Group', - createdBy: testPremiumUser.id, - users: [testPremiumUser.id, testUser1.id], - messages: [], - lastActivity: new Date() - }); - - const userChats = await chatRepository.findByUserId(testUser1.id); - expect(userChats.length).toBeGreaterThanOrEqual(2); - - const chatIds = userChats.map(c => c.id); - expect(chatIds).toContain(chat1.id); - expect(chatIds).toContain(chat2.id); - }); - - it('should find active chats for user', async () => { - await chatRepository.create({ - type: ChatType.DIRECT, - users: [testUser1.id, testUser2.id], - messages: [], - lastActivity: new Date() - }); - - const activeChats = await chatRepository.findActiveChatsForUser(testUser1.id); - expect(activeChats.length).toBeGreaterThanOrEqual(1); - - // All returned chats should be active - activeChats.forEach(chat => { - expect(chat.users).toContain(testUser1.id); - }); - }); - - it('should find inactive chats', async () => { - const oldDate = new Date(Date.now() - 2 * 60 * 60 * 1000); // 2 hours ago - - await chatRepository.create({ - type: ChatType.DIRECT, - users: [testUser1.id, testUser2.id], - messages: [], - lastActivity: oldDate - }); - - const inactiveChats = await chatRepository.findInactiveChats(60); // 60 minutes - expect(inactiveChats.length).toBeGreaterThanOrEqual(1); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Contact/commands/ContactCommandHandlers.comprehensive.test.ts b/SerpentRace_Backend/tests/Application/Contact/commands/ContactCommandHandlers.comprehensive.test.ts deleted file mode 100644 index 734298e8..00000000 --- a/SerpentRace_Backend/tests/Application/Contact/commands/ContactCommandHandlers.comprehensive.test.ts +++ /dev/null @@ -1,402 +0,0 @@ -import { CreateContactCommandHandler } from '../../../../src/Application/Contact/commands/CreateContactCommandHandler'; -import { UpdateContactCommandHandler } from '../../../../src/Application/Contact/commands/UpdateContactCommandHandler'; -import { DeleteContactCommandHandler } from '../../../../src/Application/Contact/commands/DeleteContactCommandHandler'; -import { CreateContactCommand } from '../../../../src/Application/Contact/commands/CreateContactCommand'; -import { UpdateContactCommand } from '../../../../src/Application/Contact/commands/UpdateContactCommand'; -import { DeleteContactCommand } from '../../../../src/Application/Contact/commands/DeleteContactCommand'; -import { ContactType, ContactState } from '../../../../src/Domain/Contact/ContactAggregate'; -import { createMockContactRepository, createMockContact } from '../../../testUtils'; - -describe('Contact Command Handlers - Comprehensive', () => { - let mockContactRepository: ReturnType; - - beforeEach(() => { - mockContactRepository = createMockContactRepository(); - }); - - describe('CreateContactCommandHandler', () => { - let handler: CreateContactCommandHandler; - - beforeEach(() => { - handler = new CreateContactCommandHandler(mockContactRepository); - }); - - it('should create contact successfully with all fields', async () => { - // Arrange - const mockContactData = createMockContact({ - id: '550e8400-e29b-41d4-a716-446655440000', - name: 'John Doe', - email: 'john@example.com', - userid: '123e4567-e89b-12d3-a456-426614174000', - type: ContactType.QUESTION, - txt: 'Test question', - state: ContactState.ACTIVE - }); - - mockContactRepository.create.mockResolvedValue(mockContactData); - - const command: CreateContactCommand = { - name: 'John Doe', - email: 'john@example.com', - userid: '123e4567-e89b-12d3-a456-426614174000', - type: ContactType.QUESTION, - txt: 'Test question' - }; - - // Act - const result = await handler.execute(command); - - // Assert - Returns ShortContactDto - expect(result).toEqual({ - id: '550e8400-e29b-41d4-a716-446655440000', - name: 'John Doe', - email: 'john@example.com', - type: ContactType.QUESTION, - state: ContactState.ACTIVE, - createDate: expect.any(Date) - }); - expect(mockContactRepository.create).toHaveBeenCalledWith( - expect.objectContaining({ - name: 'John Doe', - email: 'john@example.com', - userid: '123e4567-e89b-12d3-a456-426614174000', - type: ContactType.QUESTION, - txt: 'Test question', - state: ContactState.ACTIVE - }) - ); - }); - - it('should create contact without userid (anonymous)', async () => { - // Arrange - const mockContactData = createMockContact({ - id: '550e8400-e29b-41d4-a716-446655440001', - name: 'Anonymous User', - email: 'anon@example.com', - userid: null, - type: ContactType.BUG, - txt: 'Bug report', - state: ContactState.ACTIVE - }); - - mockContactRepository.create.mockResolvedValue(mockContactData); - - const command: CreateContactCommand = { - name: 'Anonymous User', - email: 'anon@example.com', - type: ContactType.BUG, - txt: 'Bug report' - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toEqual({ - id: '550e8400-e29b-41d4-a716-446655440001', - name: 'Anonymous User', - email: 'anon@example.com', - type: ContactType.BUG, - state: ContactState.ACTIVE, - createDate: expect.any(Date) - }); - expect(mockContactRepository.create).toHaveBeenCalledWith( - expect.objectContaining({ - userid: null - }) - ); - }); - - it('should create contact with different contact types', async () => { - const testCases = [ - { type: ContactType.BUG, description: 'Bug report' }, - { type: ContactType.PROBLEM, description: 'Problem report' }, - { type: ContactType.QUESTION, description: 'Question' }, - { type: ContactType.SALES, description: 'Sales inquiry' }, - { type: ContactType.OTHER, description: 'Other inquiry' } - ]; - - for (const testCase of testCases) { - // Arrange - const mockContactData = createMockContact({ - type: testCase.type, - txt: testCase.description - }); - - mockContactRepository.create.mockResolvedValue(mockContactData); - - const command: CreateContactCommand = { - name: 'Test User', - email: 'test@example.com', - type: testCase.type, - txt: testCase.description - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result.type).toBe(testCase.type); - expect(mockContactRepository.create).toHaveBeenCalledWith( - expect.objectContaining({ - txt: testCase.description - }) - ); - } - }); - - it('should handle database errors', async () => { - // Arrange - const command: CreateContactCommand = { - name: 'Error User', - email: 'error@example.com', - type: ContactType.QUESTION, - txt: 'This will cause an error' - }; - - mockContactRepository.create.mockRejectedValue(new Error('Database error')); - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Failed to create contact'); - }); - - it('should handle non-Error exceptions', async () => { - // Arrange - const command: CreateContactCommand = { - name: 'Exception User', - email: 'exception@example.com', - type: ContactType.QUESTION, - txt: 'This will cause an exception' - }; - - mockContactRepository.create.mockRejectedValue('String error'); - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Failed to create contact'); - }); - }); - - describe('UpdateContactCommandHandler', () => { - let handler: UpdateContactCommandHandler; - - beforeEach(() => { - handler = new UpdateContactCommandHandler(mockContactRepository); - }); - - it('should update contact with admin response', async () => { - // Arrange - const existingContact = createMockContact({ - id: '550e8400-e29b-41d4-a716-446655440000', - adminResponse: null, - state: ContactState.ACTIVE - }); - - const updatedContact = createMockContact({ - ...existingContact, - adminResponse: 'Thank you for your inquiry', - state: ContactState.RESOLVED, - responseDate: new Date(), - respondedBy: 'admin123' - }); - - mockContactRepository.findById.mockResolvedValue(existingContact); - mockContactRepository.update.mockResolvedValue(updatedContact); - - const command: UpdateContactCommand = { - id: '550e8400-e29b-41d4-a716-446655440000', - adminResponse: 'Thank you for your inquiry' - }; - - // Act - const result = await handler.execute(command); - - // Assert - Returns DetailContactDto - expect(result).toEqual({ - id: '550e8400-e29b-41d4-a716-446655440000', - name: expect.any(String), - email: expect.any(String), - userid: expect.any(String), - type: expect.any(Number), - txt: expect.any(String), - state: ContactState.RESOLVED, - createDate: expect.any(Date), - updateDate: expect.any(Date), - adminResponse: 'Thank you for your inquiry', - responseDate: expect.any(Date), - respondedBy: 'admin123' - }); - }); - - it('should update contact state', async () => { - // Arrange - const existingContact = createMockContact({ - id: '550e8400-e29b-41d4-a716-446655440000', - state: ContactState.ACTIVE - }); - - const updatedContact = createMockContact({ - ...existingContact, - state: ContactState.RESOLVED - }); - - mockContactRepository.findById.mockResolvedValue(existingContact); - mockContactRepository.update.mockResolvedValue(updatedContact); - - const command: UpdateContactCommand = { - id: '550e8400-e29b-41d4-a716-446655440000', - state: ContactState.RESOLVED - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result.state).toBe(ContactState.RESOLVED); - }); - - it('should throw error when contact not found', async () => { - // Arrange - mockContactRepository.findById.mockResolvedValue(null); - - const command: UpdateContactCommand = { - id: 'non-existent-id', - adminResponse: 'Response' - }; - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Contact not found'); - }); - - it('should handle repository errors during update', async () => { - // Arrange - const existingContact = createMockContact(); - mockContactRepository.findById.mockResolvedValue(existingContact); - mockContactRepository.update.mockRejectedValue(new Error('Database error')); - - const command: UpdateContactCommand = { - id: 'existing-id', - adminResponse: 'Response' - }; - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Failed to update contact'); - }); - }); - - describe('DeleteContactCommandHandler', () => { - let handler: DeleteContactCommandHandler; - - beforeEach(() => { - handler = new DeleteContactCommandHandler(mockContactRepository); - }); - - it('should perform soft delete successfully', async () => { - // Arrange - const existingContact = createMockContact({ - id: '550e8400-e29b-41d4-a716-446655440000' - }); - - mockContactRepository.findById.mockResolvedValue(existingContact); - mockContactRepository.softDelete.mockResolvedValue(null); - - const command: DeleteContactCommand = { - id: '550e8400-e29b-41d4-a716-446655440000', - hard: false - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBe(true); - expect(mockContactRepository.findById).toHaveBeenCalledWith('550e8400-e29b-41d4-a716-446655440000'); - expect(mockContactRepository.softDelete).toHaveBeenCalledWith('550e8400-e29b-41d4-a716-446655440000'); - expect(mockContactRepository.delete).not.toHaveBeenCalled(); - }); - - it('should perform hard delete successfully', async () => { - // Arrange - const existingContact = createMockContact({ - id: '550e8400-e29b-41d4-a716-446655440000' - }); - - mockContactRepository.findById.mockResolvedValue(existingContact); - mockContactRepository.delete.mockResolvedValue(true); - - const command: DeleteContactCommand = { - id: '550e8400-e29b-41d4-a716-446655440000', - hard: true - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBe(true); - expect(mockContactRepository.delete).toHaveBeenCalledWith('550e8400-e29b-41d4-a716-446655440000'); - expect(mockContactRepository.softDelete).not.toHaveBeenCalled(); - }); - - it('should default to soft delete when hard flag not specified', async () => { - // Arrange - const existingContact = createMockContact(); - mockContactRepository.findById.mockResolvedValue(existingContact); - mockContactRepository.softDelete.mockResolvedValue(null); - - const command: DeleteContactCommand = { - id: '550e8400-e29b-41d4-a716-446655440000' - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBe(true); - expect(mockContactRepository.softDelete).toHaveBeenCalled(); - expect(mockContactRepository.delete).not.toHaveBeenCalled(); - }); - - it('should throw error when contact not found', async () => { - // Arrange - mockContactRepository.findById.mockResolvedValue(null); - - const command: DeleteContactCommand = { - id: 'non-existent-id', - hard: false - }; - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Contact not found'); - }); - - it('should handle repository errors during deletion', async () => { - // Arrange - const existingContact = createMockContact(); - mockContactRepository.findById.mockResolvedValue(existingContact); - mockContactRepository.softDelete.mockRejectedValue(new Error('Database error')); - - const command: DeleteContactCommand = { - id: 'existing-id', - hard: false - }; - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Failed to delete contact'); - }); - - it('should handle hard delete repository errors', async () => { - // Arrange - const existingContact = createMockContact(); - mockContactRepository.findById.mockResolvedValue(existingContact); - mockContactRepository.delete.mockRejectedValue(new Error('Database error')); - - const command: DeleteContactCommand = { - id: 'existing-id', - hard: true - }; - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Failed to delete contact'); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/DTOs/Mappers/ContactMapper.test.ts b/SerpentRace_Backend/tests/Application/DTOs/Mappers/ContactMapper.test.ts deleted file mode 100644 index 0c8110c9..00000000 --- a/SerpentRace_Backend/tests/Application/DTOs/Mappers/ContactMapper.test.ts +++ /dev/null @@ -1,137 +0,0 @@ -import { ContactMapper } from '../../../../src/Application/DTOs/Mappers/ContactMapper'; -import { ContactType, ContactState } from '../../../../src/Domain/Contact/ContactAggregate'; - -describe('ContactMapper', () => { - const createMockContact = (overrides: any = {}) => ({ - id: 'contact-123', - name: 'John Doe', - email: 'john.doe@example.com', - userid: 'user-456', - type: ContactType.QUESTION, - txt: 'This is a test contact message.', - state: ContactState.ACTIVE, - createDate: new Date('2024-01-01'), - updateDate: new Date('2024-01-02'), - adminResponse: null, - responseDate: null, - respondedBy: null, - ...overrides - }); - - describe('toShortDto', () => { - it('should map ContactAggregate to ShortContactDto correctly', () => { - // Arrange - const contact = createMockContact(); - - // Act - const result = ContactMapper.toShortDto(contact); - - // Assert - expect(result).toEqual({ - id: 'contact-123', - name: 'John Doe', - email: 'john.doe@example.com', - type: ContactType.QUESTION, - createDate: new Date('2024-01-01'), - state: ContactState.ACTIVE, - }); - }); - - it('should handle different contact types', () => { - // Arrange - const bugContact = createMockContact({ - id: 'bug-contact', - type: ContactType.BUG, - name: 'Bug Reporter' - }); - - // Act - const result = ContactMapper.toShortDto(bugContact); - - // Assert - expect(result.type).toBe(ContactType.BUG); - expect(result.name).toBe('Bug Reporter'); - }); - }); - - describe('toDetailDto', () => { - it('should map ContactAggregate to DetailContactDto correctly', () => { - // Arrange - const contact = createMockContact(); - - // Act - const result = ContactMapper.toDetailDto(contact); - - // Assert - expect(result).toEqual({ - id: 'contact-123', - name: 'John Doe', - email: 'john.doe@example.com', - userid: 'user-456', - type: ContactType.QUESTION, - txt: 'This is a test contact message.', - state: ContactState.ACTIVE, - createDate: new Date('2024-01-01'), - updateDate: new Date('2024-01-02'), - adminResponse: null, - responseDate: null, - respondedBy: null, - }); - }); - - it('should handle contact with admin response', () => { - // Arrange - const respondedContact = createMockContact({ - adminResponse: 'Thank you for your question. Here is the answer...', - responseDate: new Date('2024-01-03'), - respondedBy: 'admin-789' - }); - - // Act - const result = ContactMapper.toDetailDto(respondedContact); - - // Assert - expect(result.adminResponse).toBe('Thank you for your question. Here is the answer...'); - expect(result.responseDate).toEqual(new Date('2024-01-03')); - expect(result.respondedBy).toBe('admin-789'); - }); - }); - - describe('toShortDtoList', () => { - it('should map array of ContactAggregate to array of ShortContactDto', () => { - // Arrange - const contacts = [ - createMockContact({ id: 'contact-1', name: 'First Contact' }), - createMockContact({ id: 'contact-2', name: 'Second Contact', type: ContactType.BUG }), - createMockContact({ id: 'contact-3', name: 'Third Contact', type: ContactType.SALES }) - ]; - - // Act - const result = ContactMapper.toShortDtoList(contacts); - - // Assert - expect(result).toHaveLength(3); - expect(result[0]).toEqual({ - id: 'contact-1', - name: 'First Contact', - email: 'john.doe@example.com', - type: ContactType.QUESTION, - createDate: new Date('2024-01-01'), - state: ContactState.ACTIVE, - }); - expect(result[1].type).toBe(ContactType.BUG); - expect(result[2].type).toBe(ContactType.SALES); - }); - - it('should handle empty array', () => { - // Arrange - const contacts: any[] = []; - - // Act - const result = ContactMapper.toShortDtoList(contacts); - - // Assert - expect(result).toEqual([]); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/DTOs/Mappers/DeckMapper.test.ts b/SerpentRace_Backend/tests/Application/DTOs/Mappers/DeckMapper.test.ts deleted file mode 100644 index 35a98110..00000000 --- a/SerpentRace_Backend/tests/Application/DTOs/Mappers/DeckMapper.test.ts +++ /dev/null @@ -1,189 +0,0 @@ -import { DeckMapper } from '../../../../src/Application/DTOs/Mappers/DeckMapper'; -import { Type, CType, State } from '../../../../src/Domain/Deck/DeckAggregate'; - -describe('DeckMapper', () => { - const createMockDeck = (overrides: any = {}) => ({ - id: 'deck-123', - name: 'Test Deck', - type: Type.LUCK, - userid: 'user-123', - creationdate: new Date('2024-01-01'), - cards: [ - { text: 'Test card 1', answer: 'Answer 1' }, - { text: 'Test card 2' } - ], - playedNumber: 5, - ctype: CType.PUBLIC, - updateDate: new Date('2024-01-02'), - state: State.ACTIVE, - organization: null, - user: { username: 'testuser', id: 'user-123', isAdmin: false }, - isEditable: jest.fn().mockReturnValue(true), - ...overrides - }); - - describe('toShortDto', () => { - it('should map DeckAggregate to ShortDeckDto correctly', () => { - // Arrange - const deck = createMockDeck(); - - // Act - const result = DeckMapper.toShortDto(deck); - - // Assert - expect(result).toEqual({ - id: 'deck-123', - name: 'Test Deck', - type: Type.LUCK, - playedNumber: 5, - ctype: CType.PUBLIC - }); - }); - - it('should handle different deck types', () => { - // Arrange - const jokeDeck = createMockDeck({ - id: 'joker-deck', - name: 'Joker Deck', - type: Type.JOKER, - playedNumber: 10 - }); - - // Act - const result = DeckMapper.toShortDto(jokeDeck); - - // Assert - expect(result.type).toBe(Type.JOKER); - expect(result.playedNumber).toBe(10); - }); - - it('should handle private decks', () => { - // Arrange - const privateDeck = createMockDeck({ - ctype: CType.PRIVATE, - playedNumber: 0 - }); - - // Act - const result = DeckMapper.toShortDto(privateDeck); - - // Assert - expect(result.ctype).toBe(CType.PRIVATE); - expect(result.playedNumber).toBe(0); - }); - }); - - describe('toDetailDto', () => { - it('should map DeckAggregate to DetailDeckDto correctly', () => { - // Arrange - const deck = createMockDeck(); - - // Act - const result = DeckMapper.toDetailDto(deck); - - // Assert - expect(result).toEqual({ - id: 'deck-123', - name: 'Test Deck', - type: Type.LUCK, - userid: 'user-123', - creationdate: new Date('2024-01-01'), - cards: [ - { text: 'Test card 1', answer: 'Answer 1' }, - { text: 'Test card 2' } - ], - playedNumber: 5, - ctype: CType.PUBLIC - }); - }); - - it('should handle empty cards array', () => { - // Arrange - const deckWithNoCards = createMockDeck({ - cards: [] - }); - - // Act - const result = DeckMapper.toDetailDto(deckWithNoCards); - - // Assert - expect(result.cards).toEqual([]); - }); - - it('should handle question type deck', () => { - // Arrange - const questionDeck = createMockDeck({ - type: Type.QUESTION, - cards: [ - { text: 'Question 1?', answer: 'Answer 1' }, - { text: 'Question 2?', answer: null } - ] - }); - - // Act - const result = DeckMapper.toDetailDto(questionDeck); - - // Assert - expect(result.type).toBe(Type.QUESTION); - expect(result.cards).toHaveLength(2); - expect(result.cards[1].answer).toBeNull(); - }); - }); - - describe('toShortDtoList', () => { - it('should map array of DeckAggregate to array of ShortDeckDto', () => { - // Arrange - const decks = [ - createMockDeck({ id: 'deck-1', name: 'First Deck' }), - createMockDeck({ id: 'deck-2', name: 'Second Deck', type: Type.JOKER }), - createMockDeck({ id: 'deck-3', name: 'Third Deck', ctype: CType.PRIVATE }) - ]; - - // Act - const result = DeckMapper.toShortDtoList(decks); - - // Assert - expect(result).toHaveLength(3); - expect(result[0]).toEqual({ - id: 'deck-1', - name: 'First Deck', - type: Type.LUCK, - playedNumber: 5, - ctype: CType.PUBLIC - }); - expect(result[1].type).toBe(Type.JOKER); - expect(result[2].ctype).toBe(CType.PRIVATE); - }); - - it('should handle empty array', () => { - // Arrange - const decks: any[] = []; - - // Act - const result = DeckMapper.toShortDtoList(decks); - - // Assert - expect(result).toEqual([]); - expect(result).toHaveLength(0); - }); - - it('should handle large arrays', () => { - // Arrange - const decks = Array.from({ length: 50 }, (_, i) => - createMockDeck({ - id: `deck-${i + 1}`, - name: `Deck ${i + 1}`, - playedNumber: i - }) - ); - - // Act - const result = DeckMapper.toShortDtoList(decks); - - // Assert - expect(result).toHaveLength(50); - expect(result[0].playedNumber).toBe(0); - expect(result[49].playedNumber).toBe(49); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/DTOs/Mappers/OrganizationMapper.test.ts b/SerpentRace_Backend/tests/Application/DTOs/Mappers/OrganizationMapper.test.ts deleted file mode 100644 index 5dad953d..00000000 --- a/SerpentRace_Backend/tests/Application/DTOs/Mappers/OrganizationMapper.test.ts +++ /dev/null @@ -1,208 +0,0 @@ -import { OrganizationMapper } from '../../../../src/Application/DTOs/Mappers/OrganizationMapper'; -import { OrganizationState, OrganizationStateType } from '../../../../src/Domain/Organization/OrganizationAggregate'; - -describe('OrganizationMapper', () => { - const createMockOrganization = (overrides: any = {}) => ({ - id: 'org-123', - name: 'Test Organization', - contactfname: 'John', - contactlname: 'Doe', - contactphone: '+1234567890', - contactemail: 'john@test.org', - state: OrganizationState.ACTIVE as OrganizationStateType, - regdate: new Date('2024-01-01'), - updateDate: new Date('2024-01-02'), - url: 'https://test.org', - userinorg: 5, - maxOrganizationalDecks: 10, - users: [ - { id: 'user-1', name: 'User One' }, - { id: 'user-2', name: 'User Two' } - ], - ...overrides - }); - - describe('toShortDto', () => { - it('should map OrganizationAggregate to ShortOrganizationDto correctly', () => { - // Arrange - const org = createMockOrganization(); - - // Act - const result = OrganizationMapper.toShortDto(org); - - // Assert - expect(result).toEqual({ - id: 'org-123', - name: 'Test Organization', - state: OrganizationState.ACTIVE, - userinorg: 5 - }); - }); - - it('should handle different organization states', () => { - // Arrange - const registeredOrg = createMockOrganization({ - state: OrganizationState.REGISTERED, - userinorg: 0 - }); - - // Act - const result = OrganizationMapper.toShortDto(registeredOrg); - - // Assert - expect(result.state).toBe(OrganizationState.REGISTERED); - expect(result.userinorg).toBe(0); - }); - - it('should handle organization with many users', () => { - // Arrange - const orgWithManyUsers = createMockOrganization({ - userinorg: 100 - }); - - // Act - const result = OrganizationMapper.toShortDto(orgWithManyUsers); - - // Assert - expect(result.userinorg).toBe(100); - }); - }); - - describe('toDetailDto', () => { - it('should map OrganizationAggregate to DetailOrganizationDto correctly', () => { - // Arrange - const org = createMockOrganization(); - - // Act - const result = OrganizationMapper.toDetailDto(org); - - // Assert - expect(result).toEqual({ - id: 'org-123', - name: 'Test Organization', - contactfname: 'John', - contactlname: 'Doe', - contactphone: '+1234567890', - contactemail: 'john@test.org', - state: OrganizationState.ACTIVE, - regdate: new Date('2024-01-01'), - updateDate: new Date('2024-01-02'), - url: 'https://test.org', - userinorg: 5, - maxOrganizationalDecks: 10, - users: ['user-1', 'user-2'] - }); - }); - - it('should handle organization without URL', () => { - // Arrange - const orgWithoutUrl = createMockOrganization({ - url: null - }); - - // Act - const result = OrganizationMapper.toDetailDto(orgWithoutUrl); - - // Assert - expect(result.url).toBeNull(); - }); - - it('should handle organization without users', () => { - // Arrange - const orgWithoutUsers = createMockOrganization({ - users: null, - userinorg: 0 - }); - - // Act - const result = OrganizationMapper.toDetailDto(orgWithoutUsers); - - // Assert - expect(result.users).toEqual([]); - expect(result.userinorg).toBe(0); - }); - - it('should handle empty users array', () => { - // Arrange - const orgWithEmptyUsers = createMockOrganization({ - users: [], - userinorg: 0 - }); - - // Act - const result = OrganizationMapper.toDetailDto(orgWithEmptyUsers); - - // Assert - expect(result.users).toEqual([]); - }); - - it('should handle soft deleted organization', () => { - // Arrange - const softDeletedOrg = createMockOrganization({ - state: OrganizationState.SOFT_DELETE - }); - - // Act - const result = OrganizationMapper.toDetailDto(softDeletedOrg); - - // Assert - expect(result.state).toBe(OrganizationState.SOFT_DELETE); - }); - }); - - describe('toShortDtoList', () => { - it('should map array of OrganizationAggregate to array of ShortOrganizationDto', () => { - // Arrange - const orgs = [ - createMockOrganization({ id: 'org-1', name: 'First Org', userinorg: 10 }), - createMockOrganization({ id: 'org-2', name: 'Second Org', state: OrganizationState.REGISTERED }), - createMockOrganization({ id: 'org-3', name: 'Third Org', userinorg: 0 }) - ]; - - // Act - const result = OrganizationMapper.toShortDtoList(orgs); - - // Assert - expect(result).toHaveLength(3); - expect(result[0]).toEqual({ - id: 'org-1', - name: 'First Org', - state: OrganizationState.ACTIVE, - userinorg: 10 - }); - expect(result[1].state).toBe(OrganizationState.REGISTERED); - expect(result[2].userinorg).toBe(0); - }); - - it('should handle empty array', () => { - // Arrange - const orgs: any[] = []; - - // Act - const result = OrganizationMapper.toShortDtoList(orgs); - - // Assert - expect(result).toEqual([]); - expect(result).toHaveLength(0); - }); - - it('should handle large arrays', () => { - // Arrange - const orgs = Array.from({ length: 25 }, (_, i) => - createMockOrganization({ - id: `org-${i + 1}`, - name: `Organization ${i + 1}`, - userinorg: i * 2 - }) - ); - - // Act - const result = OrganizationMapper.toShortDtoList(orgs); - - // Assert - expect(result).toHaveLength(25); - expect(result[0].userinorg).toBe(0); - expect(result[24].userinorg).toBe(48); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/DTOs/Mappers/UserMapper.test.ts b/SerpentRace_Backend/tests/Application/DTOs/Mappers/UserMapper.test.ts deleted file mode 100644 index f9b4789b..00000000 --- a/SerpentRace_Backend/tests/Application/DTOs/Mappers/UserMapper.test.ts +++ /dev/null @@ -1,164 +0,0 @@ -import { UserMapper } from '../../../../src/Application/DTOs/Mappers/UserMapper'; -import { UserAggregate, UserState } from '../../../../src/Domain/User/UserAggregate'; -import { createMockUser } from '../../../testUtils'; - -describe('UserMapper', () => { - describe('toShortDto', () => { - it('should map UserAggregate to ShortUserDto correctly', () => { - // Arrange - const user = createMockUser({ - id: 'user-123', - username: 'testuser', - email: 'test@example.com', - fname: 'John', - lname: 'Doe', - state: UserState.VERIFIED_REGULAR - }); - - // Act - const result = UserMapper.toShortDto(user); - - // Assert - expect(result).toEqual({ - id: 'user-123', - username: 'testuser', - state: UserState.VERIFIED_REGULAR, - authLevel: 0 - }); - // Should not contain sensitive information - expect(result).not.toHaveProperty('email'); - expect(result).not.toHaveProperty('password'); - expect(result).not.toHaveProperty('token'); - }); - - it('should map admin user with authLevel 1', () => { - // Arrange - const adminUser = createMockUser({ - id: 'admin-123', - username: 'admin', - email: 'admin@example.com', - fname: 'Admin', - lname: 'User', - state: UserState.ADMIN - }); - - // Act - const result = UserMapper.toShortDto(adminUser); - - // Assert - expect(result).toEqual({ - id: 'admin-123', - username: 'admin', - state: UserState.ADMIN, - authLevel: 1 - }); - }); - }); - - describe('toDetailDto', () => { - it('should map UserAggregate to DetailUserDto correctly', () => { - // Arrange - const user = createMockUser({ - id: 'user-123', - orgid: 'org-456', - username: 'testuser', - email: 'test@example.com', - fname: 'John', - lname: 'Doe', - token: 'verification-token', - type: 'admin', - phone: '+1234567890', - state: UserState.ADMIN - }); - - // Act - const result = UserMapper.toDetailDto(user); - - // Assert - expect(result).toEqual({ - id: 'user-123', - orgid: 'org-456', - username: 'testuser', - email: 'test@example.com', - fname: 'John', - lname: 'Doe', - code: 'verification-token', - type: 'admin', - phone: '+1234567890', - state: UserState.ADMIN - }); - // Should not contain password - expect(result).not.toHaveProperty('password'); - }); - - it('should handle null values correctly', () => { - // Arrange - const user = createMockUser({ - id: 'user-123', - orgid: null, - username: 'testuser', - email: 'test@example.com', - fname: 'John', - lname: 'Doe', - token: null, - type: 'regular', - phone: null, - state: UserState.VERIFIED_REGULAR - }); - - // Act - const result = UserMapper.toDetailDto(user); - - // Assert - expect(result.orgid).toBeNull(); - expect(result.code).toBeNull(); - expect(result.phone).toBeNull(); - }); - }); - - describe('toShortDtoList', () => { - it('should map array of UserAggregate to ShortUserDto array', () => { - // Arrange - const users = [ - createMockUser({ id: 'user-1', username: 'user1', state: UserState.VERIFIED_REGULAR }), - createMockUser({ id: 'user-2', username: 'user2', state: UserState.REGISTERED_NOT_VERIFIED }), - createMockUser({ id: 'user-3', username: 'user3', state: UserState.DEACTIVATED }) - ]; - - // Act - const result = UserMapper.toShortDtoList(users); - - // Assert - expect(result).toHaveLength(3); - expect(result[0]).toEqual({ - id: 'user-1', - username: 'user1', - state: UserState.VERIFIED_REGULAR, - authLevel: 0 - }); - expect(result[1]).toEqual({ - id: 'user-2', - username: 'user2', - state: UserState.REGISTERED_NOT_VERIFIED, - authLevel: 0 - }); - expect(result[2]).toEqual({ - id: 'user-3', - username: 'user3', - state: UserState.DEACTIVATED, - authLevel: 0 - }); - }); - - it('should handle empty array', () => { - // Arrange - const users: UserAggregate[] = []; - - // Act - const result = UserMapper.toShortDtoList(users); - - // Assert - expect(result).toEqual([]); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Deck/commands/CreateDeckCommandHandler.comprehensive.test.ts b/SerpentRace_Backend/tests/Application/Deck/commands/CreateDeckCommandHandler.comprehensive.test.ts deleted file mode 100644 index de0111b7..00000000 --- a/SerpentRace_Backend/tests/Application/Deck/commands/CreateDeckCommandHandler.comprehensive.test.ts +++ /dev/null @@ -1,207 +0,0 @@ -import { CreateDeckCommandHandler } from '../../../../src/Application/Deck/commands/CreateDeckCommandHandler'; -import { CreateDeckCommand } from '../../../../src/Application/Deck/commands/CreateDeckCommand'; -import { IDeckRepository } from '../../../../src/Domain/IRepository/IDeckRepository'; -import { IUserRepository } from '../../../../src/Domain/IRepository/IUserRepository'; -import { IOrganizationRepository } from '../../../../src/Domain/IRepository/IOrganizationRepository'; -import { UserState } from '../../../../src/Domain/User/UserAggregate'; -import { Type as DeckType } from '../../../../src/Domain/Deck/DeckAggregate'; -import { createMockDeck, createMockDeckRepository, createMockUserRepository, createMockOrganizationRepository, createMockUser } from '../../../testUtils'; - -describe('CreateDeckCommandHandler', () => { - let handler: CreateDeckCommandHandler; - let mockDeckRepository: jest.Mocked; - let mockUserRepository: jest.Mocked; - let mockOrganizationRepository: jest.Mocked; - - beforeEach(() => { - jest.clearAllMocks(); - - mockDeckRepository = createMockDeckRepository(); - mockUserRepository = createMockUserRepository(); - mockOrganizationRepository = createMockOrganizationRepository(); - - handler = new CreateDeckCommandHandler(mockDeckRepository, mockUserRepository, mockOrganizationRepository); - }); - - describe('execute', () => { - it('should successfully create a new deck with valid user', async () => { - // Arrange - const command: CreateDeckCommand = { - name: 'Test Deck', - type: DeckType.JOKER, - userid: 'user-123', - cards: [{ id: 'card-1', name: 'Test Card' }], - }; - - const mockUser = createMockUser({ - id: command.userid, - state: UserState.VERIFIED_REGULAR, - type: 'user' - }); - - const mockDeck = createMockDeck({ - name: command.name, - type: command.type, - userid: command.userid - }); - - mockUserRepository.findById.mockResolvedValue(mockUser); - mockDeckRepository.countActiveByUserId.mockResolvedValue(0); - mockDeckRepository.create.mockResolvedValue(mockDeck); - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeDefined(); - expect(mockUserRepository.findById).toHaveBeenCalledWith(command.userid); - expect(mockDeckRepository.create).toHaveBeenCalled(); - }); - - it('should throw error when user not found', async () => { - // Arrange - const command: CreateDeckCommand = { - name: 'Test Deck', - type: DeckType.JOKER, - userid: 'nonexistent-user', - cards: [], - }; - - mockUserRepository.findById.mockResolvedValue(null); - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('User not found'); - expect(mockUserRepository.findById).toHaveBeenCalledWith(command.userid); - expect(mockDeckRepository.create).not.toHaveBeenCalled(); - }); - - it('should handle admin user creating unlimited decks', async () => { - // Arrange - const command: CreateDeckCommand = { - name: 'Admin Deck', - type: DeckType.JOKER, - userid: 'admin-123', - cards: [], - }; - - const mockAdminUser = createMockUser({ - id: command.userid, - state: UserState.VERIFIED_REGULAR, - type: 'admin' - }); - - const mockDeck = createMockDeck({ - name: command.name, - type: command.type, - userid: command.userid - }); - - mockUserRepository.findById.mockResolvedValue(mockAdminUser); - mockDeckRepository.create.mockResolvedValue(mockDeck); - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeDefined(); - expect(mockDeckRepository.countActiveByUserId).toHaveBeenCalled(); // Admin still checks but bypasses limits - }); - - it('should handle repository creation errors', async () => { - // Arrange - const command: CreateDeckCommand = { - name: 'Test Deck', - type: DeckType.JOKER, - userid: 'user-123', - cards: [], - }; - - const mockUser = createMockUser({ id: command.userid }); - mockUserRepository.findById.mockResolvedValue(mockUser); - mockDeckRepository.countActiveByUserId.mockResolvedValue(0); - mockDeckRepository.create.mockRejectedValue(new Error('Database error')); - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Database error'); - }); - - it('should create deck with different types', async () => { - // Arrange - const command: CreateDeckCommand = { - name: 'Question Deck', - type: DeckType.QUESTION, - userid: 'user-123', - cards: [], - }; - - const mockUser = createMockUser({ id: command.userid }); - const mockDeck = createMockDeck({ - name: command.name, - type: command.type, - userid: command.userid - }); - - mockUserRepository.findById.mockResolvedValue(mockUser); - mockDeckRepository.countActiveByUserId.mockResolvedValue(0); - mockDeckRepository.create.mockResolvedValue(mockDeck); - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeDefined(); - expect(mockDeckRepository.create).toHaveBeenCalledWith(expect.objectContaining({ - type: DeckType.QUESTION - })); - }); - - it('should handle empty cards array', async () => { - // Arrange - const command: CreateDeckCommand = { - name: 'Empty Deck', - type: DeckType.JOKER, - userid: 'user-123', - cards: [], - }; - - const mockUser = createMockUser({ id: command.userid }); - const mockDeck = createMockDeck(command); - - mockUserRepository.findById.mockResolvedValue(mockUser); - mockDeckRepository.countActiveByUserId.mockResolvedValue(0); - mockDeckRepository.create.mockResolvedValue(mockDeck); - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeDefined(); - }); - - it('should check deck limits for regular users', async () => { - // Arrange - const command: CreateDeckCommand = { - name: 'Test Deck', - type: DeckType.JOKER, - userid: 'user-123', - cards: [], - }; - - const mockUser = createMockUser({ - id: command.userid, - type: 'user' - }); - const mockDeck = createMockDeck({ userid: command.userid }); - - mockUserRepository.findById.mockResolvedValue(mockUser); - mockDeckRepository.countActiveByUserId.mockResolvedValue(0); - mockDeckRepository.create.mockResolvedValue(mockDeck); - - // Act - await handler.execute(command); - - // Assert - expect(mockDeckRepository.countActiveByUserId).toHaveBeenCalledWith(command.userid); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Deck/commands/DeckCommandHandlers.comprehensive.test.ts b/SerpentRace_Backend/tests/Application/Deck/commands/DeckCommandHandlers.comprehensive.test.ts deleted file mode 100644 index 31dd1249..00000000 --- a/SerpentRace_Backend/tests/Application/Deck/commands/DeckCommandHandlers.comprehensive.test.ts +++ /dev/null @@ -1,486 +0,0 @@ -import { CreateDeckCommandHandler } from '../../../../src/Application/Deck/commands/CreateDeckCommandHandler'; -import { UpdateDeckCommandHandler } from '../../../../src/Application/Deck/commands/UpdateDeckCommandHandler'; -import { DeleteDeckCommandHandler } from '../../../../src/Application/Deck/commands/DeleteDeckCommandHandler'; -import { CreateDeckCommand } from '../../../../src/Application/Deck/commands/CreateDeckCommand'; -import { UpdateDeckCommand } from '../../../../src/Application/Deck/commands/UpdateDeckCommand'; -import { DeleteDeckCommand } from '../../../../src/Application/Deck/commands/DeleteDeckCommand'; -import { DeckAggregate, State as DeckState, Type as DeckType, CType } from '../../../../src/Domain/Deck/DeckAggregate'; -import { UserAggregate, UserState } from '../../../../src/Domain/User/UserAggregate'; -import { IUserRepository } from '../../../../src/Domain/IRepository/IUserRepository'; -import { IDeckRepository } from '../../../../src/Domain/IRepository/IDeckRepository'; -import { IOrganizationRepository } from '../../../../src/Domain/IRepository/IOrganizationRepository'; -import { - createMockUser, - createMockDeck, - createMockUserRepository, - createMockDeckRepository, - createMockOrganizationRepository, - createMockDate -} from '../../../testUtils'; - -describe('Deck Command Handlers - Comprehensive Coverage', () => { - let mockUserRepository: jest.Mocked; - let mockDeckRepository: jest.Mocked; - let mockOrganizationRepository: jest.Mocked; - - beforeEach(() => { - mockUserRepository = createMockUserRepository(); - mockDeckRepository = createMockDeckRepository(); - mockOrganizationRepository = createMockOrganizationRepository(); - jest.clearAllMocks(); - }); - - describe('CreateDeckCommandHandler', () => { - let handler: CreateDeckCommandHandler; - - beforeEach(() => { - handler = new CreateDeckCommandHandler(mockDeckRepository, mockUserRepository, mockOrganizationRepository); - }); - - it('should create a new deck successfully', async () => { - // Arrange - const mockUser = createMockUser({ - id: 'user-123', - state: UserState.VERIFIED_REGULAR - }); - const expectedDeck = createMockDeck({ - id: 'deck-123', - name: 'Test Deck', - type: DeckType.JOKER, - userid: 'user-123', - ctype: CType.PUBLIC, - state: DeckState.ACTIVE, - cards: [] - }); - - mockUserRepository.findById.mockResolvedValue(mockUser); - mockDeckRepository.create.mockResolvedValue(expectedDeck); - mockDeckRepository.countActiveByUserId.mockResolvedValue(0); - - const command: CreateDeckCommand = { - name: 'Test Deck', - type: DeckType.JOKER, - userid: 'user-123', - cards: [] - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeTruthy(); - expect(mockUserRepository.findById).toHaveBeenCalledWith('user-123'); - expect(mockDeckRepository.create).toHaveBeenCalledWith( - expect.objectContaining({ - name: 'Test Deck', - type: DeckType.JOKER, - userid: 'user-123' - }) - ); - }); - - it('should throw error when user not found', async () => { - // Arrange - mockUserRepository.findById.mockResolvedValue(null); - - const command: CreateDeckCommand = { - name: 'Test Deck', - type: DeckType.JOKER, - userid: 'nonexistent-user', - cards: [] - }; - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('User not found'); - expect(mockUserRepository.findById).toHaveBeenCalledWith('nonexistent-user'); - expect(mockDeckRepository.create).not.toHaveBeenCalled(); - }); - - it('should handle admin users bypassing restrictions', async () => { - // Arrange - const adminUser = createMockUser({ - id: 'admin-123', - type: 'admin', - state: UserState.ADMIN - }); - const expectedDeck = createMockDeck({ - name: 'Admin Deck', - userid: 'admin-123' - }); - - mockUserRepository.findById.mockResolvedValue(adminUser); - mockDeckRepository.create.mockResolvedValue(expectedDeck); - // Don't mock countActiveByUserId - admin should bypass this check - - const command: CreateDeckCommand = { - name: 'Admin Deck', - type: DeckType.JOKER, - userid: 'admin-123', - cards: [] - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeTruthy(); - expect(mockDeckRepository.countActiveByUserId).not.toHaveBeenCalled(); - }); - - it('should handle different deck types', async () => { - // Arrange - const mockUser = createMockUser({ id: 'user-123', state: UserState.VERIFIED_REGULAR }); - const expectedDeck = createMockDeck({ - name: 'Question Deck', - type: DeckType.QUESTION, - userid: 'user-123' - }); - - mockUserRepository.findById.mockResolvedValue(mockUser); - mockDeckRepository.create.mockResolvedValue(expectedDeck); - mockDeckRepository.countActiveByUserId.mockResolvedValue(2); - - const command: CreateDeckCommand = { - name: 'Question Deck', - type: DeckType.QUESTION, - userid: 'user-123', - cards: [] - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeTruthy(); - expect(mockDeckRepository.create).toHaveBeenCalledWith( - expect.objectContaining({ - type: DeckType.QUESTION - }) - ); - }); - - it('should handle repository creation errors', async () => { - // Arrange - const mockUser = createMockUser({ id: 'user-123', state: UserState.VERIFIED_REGULAR }); - mockUserRepository.findById.mockResolvedValue(mockUser); - mockDeckRepository.countActiveByUserId.mockResolvedValue(0); - mockDeckRepository.create.mockRejectedValue(new Error('Database connection failed')); - - const command: CreateDeckCommand = { - name: 'Test Deck', - type: DeckType.JOKER, - userid: 'user-123', - cards: [] - }; - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Database connection failed'); - expect(mockDeckRepository.create).toHaveBeenCalled(); - }); - - it('should handle deck limit restrictions for regular users', async () => { - // Arrange - const mockUser = createMockUser({ - id: 'user-123', - state: UserState.VERIFIED_REGULAR, - type: 'regular' - }); - mockUserRepository.findById.mockResolvedValue(mockUser); - mockDeckRepository.countActiveByUserId.mockResolvedValue(10); // Assuming limit is 10 - - const command: CreateDeckCommand = { - name: 'Test Deck', - type: DeckType.JOKER, - userid: 'user-123', - cards: [] - }; - - // Act & Assert - This should succeed if the limit allows, or fail if over limit - // The exact behavior depends on the business rules in CreateDeckCommandHandler - try { - await handler.execute(command); - // If it succeeds, verify the deck was created - expect(mockDeckRepository.create).toHaveBeenCalled(); - } catch (error) { - // If it fails, verify it's a limit error - expect((error as Error).message).toContain('limit'); - } - }); - }); - - describe('UpdateDeckCommandHandler', () => { - let handler: UpdateDeckCommandHandler; - - beforeEach(() => { - handler = new UpdateDeckCommandHandler(mockDeckRepository); - }); - - it('should update deck successfully', async () => { - // Arrange - const updatedDeck = createMockDeck({ - id: 'deck-123', - name: 'New Name', - ctype: CType.PUBLIC - }); - - mockDeckRepository.update.mockResolvedValue(updatedDeck); - - const command: UpdateDeckCommand = { - id: 'deck-123', - name: 'New Name' - }; - - // Act - const result = await handler.execute(command); - - // Assert - Should return ShortDeckDto format - expect(result).toEqual({ - id: 'deck-123', - name: 'New Name', - type: updatedDeck.type, - playedNumber: updatedDeck.playedNumber, - ctype: updatedDeck.ctype, - }); - expect(mockDeckRepository.update).toHaveBeenCalledWith('deck-123', expect.objectContaining({ - id: 'deck-123', - name: 'New Name' - })); - }); - - it('should return null when deck not found (repository returns null)', async () => { - // Arrange - mockDeckRepository.update.mockResolvedValue(null); - - const command: UpdateDeckCommand = { - id: 'nonexistent-deck', - name: 'New Name' - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeNull(); - expect(mockDeckRepository.update).toHaveBeenCalledWith('nonexistent-deck', expect.objectContaining({ - id: 'nonexistent-deck', - name: 'New Name' - })); - }); - - it('should handle partial updates', async () => { - // Arrange - const updatedDeck = createMockDeck({ - id: 'deck-123', - name: 'Original Name', // Name stays the same - ctype: CType.PRIVATE // Only ctype changes - }); - - mockDeckRepository.update.mockResolvedValue(updatedDeck); - - const command: UpdateDeckCommand = { - id: 'deck-123', - ctype: CType.PRIVATE - // Note: name is not provided, should remain unchanged - }; - - // Act - const result = await handler.execute(command); - - // Assert - Should return ShortDeckDto format - expect(result).toEqual({ - id: 'deck-123', - name: 'Original Name', - type: updatedDeck.type, - playedNumber: updatedDeck.playedNumber, - ctype: CType.PRIVATE, - }); - expect(mockDeckRepository.update).toHaveBeenCalledWith('deck-123', expect.objectContaining({ - id: 'deck-123', - ctype: CType.PRIVATE - })); - }); - - it('should handle repository update errors', async () => { - // Arrange - const existingDeck = createMockDeck({ id: 'deck-123' }); - mockDeckRepository.findById.mockResolvedValue(existingDeck); - mockDeckRepository.update.mockRejectedValue(new Error('Update failed')); - - const command: UpdateDeckCommand = { - id: 'deck-123', - name: 'New Name' - }; - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Update failed'); - expect(mockDeckRepository.update).toHaveBeenCalled(); - }); - }); - - describe('DeleteDeckCommandHandler', () => { - let handler: DeleteDeckCommandHandler; - - beforeEach(() => { - handler = new DeleteDeckCommandHandler(mockDeckRepository); - }); - - it('should delete deck successfully (soft delete)', async () => { - // Arrange - mockDeckRepository.softDelete.mockResolvedValue(null); // Soft delete returns void - - const command: DeleteDeckCommand = { - id: 'deck-123', - soft: true // Specify soft delete - }; - - // Act - const result = await handler.execute(command); - - // Assert - DeleteDeckCommandHandler always returns true - expect(result).toBe(true); - expect(mockDeckRepository.softDelete).toHaveBeenCalledWith('deck-123'); - }); - - it('should delete deck successfully (hard delete)', async () => { - // Arrange - mockDeckRepository.delete.mockResolvedValue(null); // Delete returns void - - const command: DeleteDeckCommand = { - id: 'deck-123', - soft: false // Specify hard delete - }; - - // Act - const result = await handler.execute(command); - - // Assert - DeleteDeckCommandHandler always returns true - expect(result).toBe(true); - expect(mockDeckRepository.delete).toHaveBeenCalledWith('deck-123'); - }); - - it('should default to hard delete when soft flag not specified', async () => { - // Arrange - mockDeckRepository.delete.mockResolvedValue(null); - - const command: DeleteDeckCommand = { - id: 'deck-123' - // Note: soft flag not specified, defaults to undefined which is falsy - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBe(true); - expect(mockDeckRepository.delete).toHaveBeenCalledWith('deck-123'); - expect(mockDeckRepository.softDelete).not.toHaveBeenCalled(); - }); - - it('should handle repository deletion errors', async () => { - // Arrange - mockDeckRepository.softDelete.mockRejectedValue(new Error('Deletion failed')); - - const command: DeleteDeckCommand = { - id: 'deck-123', - soft: true - }; - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Deletion failed'); - expect(mockDeckRepository.softDelete).toHaveBeenCalledWith('deck-123'); - }); - }); - - describe('Cross-Command Integration Tests', () => { - let createHandler: CreateDeckCommandHandler; - let updateHandler: UpdateDeckCommandHandler; - let deleteHandler: DeleteDeckCommandHandler; - - beforeEach(() => { - createHandler = new CreateDeckCommandHandler(mockDeckRepository, mockUserRepository, mockOrganizationRepository); - updateHandler = new UpdateDeckCommandHandler(mockDeckRepository); - deleteHandler = new DeleteDeckCommandHandler(mockDeckRepository); - }); - - it('should create deck and then update it', async () => { - // Arrange - Create - const mockUser = createMockUser({ id: 'user-123', state: UserState.VERIFIED_REGULAR }); - const createdDeck = createMockDeck({ - id: 'deck-123', - name: 'Initial Name', - userid: 'user-123' - }); - - mockUserRepository.findById.mockResolvedValue(mockUser); - mockDeckRepository.countActiveByUserId.mockResolvedValue(0); - mockDeckRepository.create.mockResolvedValue(createdDeck); - - // Arrange - Update - const updatedDeck = createMockDeck({ - id: 'deck-123', - name: 'Updated Name', - userid: 'user-123' - }); - mockDeckRepository.findById.mockResolvedValue(createdDeck); - mockDeckRepository.update.mockResolvedValue(updatedDeck); - - // Act - Create - const createCommand: CreateDeckCommand = { - name: 'Initial Name', - type: DeckType.JOKER, - userid: 'user-123', - cards: [] - }; - const createResult = await createHandler.execute(createCommand); - - // Act - Update - const updateCommand: UpdateDeckCommand = { - id: 'deck-123', - name: 'Updated Name' - }; - const updateResult = await updateHandler.execute(updateCommand); - - // Assert - expect(createResult).toBeTruthy(); - expect(updateResult?.name).toBe('Updated Name'); - expect(mockDeckRepository.create).toHaveBeenCalled(); - expect(mockDeckRepository.update).toHaveBeenCalled(); - }); - - it('should handle full lifecycle: create, update, delete', async () => { - // This tests the complete lifecycle of a deck - const mockUser = createMockUser({ id: 'user-123', state: UserState.VERIFIED_REGULAR }); - const deck = createMockDeck({ id: 'deck-123', userid: 'user-123' }); - - // Setup all mocks - mockUserRepository.findById.mockResolvedValue(mockUser); - mockDeckRepository.countActiveByUserId.mockResolvedValue(0); - mockDeckRepository.create.mockResolvedValue(deck); - mockDeckRepository.update.mockResolvedValue(deck); - mockDeckRepository.softDelete.mockResolvedValue(null); - - // Execute lifecycle - const createResult = await createHandler.execute({ - name: 'Test Deck', - type: DeckType.JOKER, - userid: 'user-123', - cards: [] - }); - - const updateResult = await updateHandler.execute({ - id: 'deck-123', - name: 'Updated Deck' - }); - - const deleteResult = await deleteHandler.execute({ - id: 'deck-123', - soft: true - }); - - // Assert all operations succeeded - expect(createResult).toBeTruthy(); - expect(updateResult).toBeTruthy(); - expect(deleteResult).toBe(true); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Game/BoardGenerationService.test.ts b/SerpentRace_Backend/tests/Application/Game/BoardGenerationService.test.ts deleted file mode 100644 index c3f10169..00000000 --- a/SerpentRace_Backend/tests/Application/Game/BoardGenerationService.test.ts +++ /dev/null @@ -1,133 +0,0 @@ -import { BoardGenerationService } from '../../../src/Application/Game/BoardGenerationService'; - -// Mock dependencies -jest.mock('../../../src/Application/Services/LoggingService'); - -describe('BoardGenerationService', () => { - let boardGenerationService: BoardGenerationService; - - beforeEach(() => { - boardGenerationService = new BoardGenerationService(); - }); - - describe('generateBoard', () => { - it('should generate a board with the correct number of special fields', async () => { - const positiveFields = 10; - const negativeFields = 8; - const luckFields = 5; - - const result = await boardGenerationService.generateBoard( - positiveFields, - negativeFields, - luckFields - ); - - expect(result).toBeDefined(); - expect(result.fields).toHaveLength(100); - - // Count special fields - const actualPositive = result.fields.filter(f => f.type === 'positive').length; - const actualNegative = result.fields.filter(f => f.type === 'negative').length; - const actualLuck = result.fields.filter(f => f.type === 'luck').length; - - expect(actualPositive).toBe(positiveFields); - expect(actualNegative).toBe(negativeFields); - expect(actualLuck).toBe(luckFields); - }); - - it('should ensure positive fields have positive step values', async () => { - const result = await boardGenerationService.generateBoard(5, 5, 2); - - const positiveFields = result.fields.filter(f => f.type === 'positive'); - positiveFields.forEach(field => { - expect(field.stepValue).toBeGreaterThan(0); - }); - }); - - it('should ensure negative fields have negative step values', async () => { - const result = await boardGenerationService.generateBoard(5, 5, 2); - - const negativeFields = result.fields.filter(f => f.type === 'negative'); - negativeFields.forEach(field => { - expect(field.stepValue).toBeLessThan(0); - }); - }); - - it('should ensure luck fields do not have step values', async () => { - const result = await boardGenerationService.generateBoard(5, 5, 2); - - const luckFields = result.fields.filter(f => f.type === 'luck'); - luckFields.forEach(field => { - expect(field.stepValue).toBeUndefined(); - }); - }); - - it('should produce validation results without -1 values', async () => { - const result = await boardGenerationService.generateBoard(10, 8, 5); - - // Check validation results for invalid moves (-1 values) - let invalidMoves = 0; - let totalMoves = 0; - - Object.values(result.validationResults).forEach(diceOutcomes => { - diceOutcomes.forEach(outcome => { - totalMoves++; - if (outcome === -1) { - invalidMoves++; - } - }); - }); - - const errorRate = totalMoves > 0 ? (invalidMoves / totalMoves) * 100 : 0; - - // Log the results for analysis - console.log(`Error rate: ${errorRate}%`); - console.log(`Invalid moves: ${invalidMoves}/${totalMoves}`); - - // The new algorithm should produce much fewer invalid moves - expect(errorRate).toBeLessThan(50); // Allow some errors but much better than before - }); - - it('should respect the 20-30 movement rule in validation', async () => { - const result = await boardGenerationService.generateBoard(10, 8, 5); - - // Check each validation result to ensure it respects distance rules - Object.entries(result.validationResults).forEach(([fieldPosition, diceOutcomes]) => { - const currentPos = parseInt(fieldPosition); - - diceOutcomes.forEach((outcome, diceIndex) => { - if (outcome !== -1) { // Only check valid moves - const distance = Math.abs(outcome - currentPos); - - if (currentPos <= 85) { - // Fields 1-85: max 20 in any direction - expect(distance).toBeLessThanOrEqual(20); - } else { - // Fields 86-100: max 30 backward, max 20 forward - if (outcome > currentPos) { - expect(distance).toBeLessThanOrEqual(20); // forward - } else { - expect(distance).toBeLessThanOrEqual(30); // backward - } - } - } - }); - }); - }); - - it('should position special fields safely within the safe range', async () => { - const result = await boardGenerationService.generateBoard(10, 8, 5); - - const specialFields = result.fields.filter(f => f.type !== 'regular'); - - // Most special fields should be in the safe range (11-90) for the new algorithm - const safeFields = specialFields.filter(f => f.position >= 11 && f.position <= 90); - const safePercentage = (safeFields.length / specialFields.length) * 100; - - console.log(`Safe field percentage: ${safePercentage}%`); - - // Expect most fields to be positioned safely - expect(safePercentage).toBeGreaterThan(70); - }); - }); -}); \ No newline at end of file diff --git a/SerpentRace_Backend/tests/Application/Organization/commands/OrganizationCommandHandlers.comprehensive.test.ts b/SerpentRace_Backend/tests/Application/Organization/commands/OrganizationCommandHandlers.comprehensive.test.ts deleted file mode 100644 index 80deda87..00000000 --- a/SerpentRace_Backend/tests/Application/Organization/commands/OrganizationCommandHandlers.comprehensive.test.ts +++ /dev/null @@ -1,333 +0,0 @@ -import { CreateOrganizationCommandHandler } from '../../../../src/Application/Organization/commands/CreateOrganizationCommandHandler'; -import { UpdateOrganizationCommandHandler } from '../../../../src/Application/Organization/commands/UpdateOrganizationCommandHandler'; -import { DeleteOrganizationCommandHandler } from '../../../../src/Application/Organization/commands/DeleteOrganizationCommandHandler'; -import { CreateOrganizationCommand } from '../../../../src/Application/Organization/commands/CreateOrganizationCommand'; -import { UpdateOrganizationCommand } from '../../../../src/Application/Organization/commands/UpdateOrganizationCommand'; -import { DeleteOrganizationCommand } from '../../../../src/Application/Organization/commands/DeleteOrganizationCommand'; -import { OrganizationState } from '../../../../src/Domain/Organization/OrganizationAggregate'; -import { createMockOrganizationRepository, createMockOrganization } from '../../../testUtils'; - -describe('Organization Command Handlers - Comprehensive', () => { - let mockOrganizationRepository: ReturnType; - - beforeEach(() => { - mockOrganizationRepository = createMockOrganizationRepository(); - }); - - describe('CreateOrganizationCommandHandler', () => { - let handler: CreateOrganizationCommandHandler; - - beforeEach(() => { - handler = new CreateOrganizationCommandHandler(mockOrganizationRepository); - }); - - it('should create organization successfully', async () => { - // Arrange - const mockOrgData = createMockOrganization({ - id: '550e8400-e29b-41d4-a716-446655440000', - name: 'Test Organization', - contactfname: 'John', - contactlname: 'Doe', - contactphone: '+1234567890', - contactemail: 'john@testorg.com', - url: null, - state: OrganizationState.REGISTERED - }); - - mockOrganizationRepository.create.mockResolvedValue(mockOrgData); - - const command: CreateOrganizationCommand = { - name: 'Test Organization', - contactfname: 'John', - contactlname: 'Doe', - contactemail: 'john@testorg.com', - contactphone: '+1234567890' - }; - - // Act - const result = await handler.execute(command); - - // Assert - Returns ShortOrganizationDto - expect(result).toEqual({ - id: '550e8400-e29b-41d4-a716-446655440000', - name: 'Test Organization', - state: 0, - userinorg: 0, - maxOrganizationalDecks: 10 - }); - expect(mockOrganizationRepository.create).toHaveBeenCalledWith( - expect.objectContaining({ - name: 'Test Organization', - contactfname: 'John', - contactlname: 'Doe', - contactemail: 'john@testorg.com', - contactphone: '+1234567890', - state: OrganizationState.REGISTERED - }) - ); - }); - - it('should create organization with optional URL', async () => { - // Arrange - const mockOrgData = createMockOrganization({ - id: '550e8400-e29b-41d4-a716-446655440001', - name: 'Org with URL', - contactfname: 'Jane', - contactlname: 'Smith', - contactphone: '+1987654321', - contactemail: 'jane@orgwithurl.com', - url: 'https://orgwithurl.com', - state: OrganizationState.REGISTERED - }); - - mockOrganizationRepository.create.mockResolvedValue(mockOrgData); - - const command: CreateOrganizationCommand = { - name: 'Org with URL', - contactfname: 'Jane', - contactlname: 'Smith', - contactemail: 'jane@orgwithurl.com', - contactphone: '+1987654321', - url: 'https://orgwithurl.com' - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toEqual({ - id: '550e8400-e29b-41d4-a716-446655440001', - name: 'Org with URL', - state: 0, - userinorg: 0, - maxOrganizationalDecks: 10 - }); - }); - - it('should handle duplicate organization name error', async () => { - // Arrange - const command: CreateOrganizationCommand = { - name: 'Duplicate Org', - contactfname: 'John', - contactlname: 'Doe', - contactemail: 'john@duplicate.com', - contactphone: '+1234567890' - }; - - const duplicateError = new Error('duplicate key value violates unique constraint "organization_name_unique"'); - mockOrganizationRepository.create.mockRejectedValue(duplicateError); - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Organization with this name or contact email already exists'); - }); - - it('should handle generic database errors', async () => { - // Arrange - const command: CreateOrganizationCommand = { - name: 'Error Org', - contactfname: 'John', - contactlname: 'Doe', - contactemail: 'john@error.com', - contactphone: '+1234567890' - }; - - mockOrganizationRepository.create.mockRejectedValue(new Error('Database connection failed')); - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Failed to create organization'); - }); - - it('should handle non-Error exceptions', async () => { - // Arrange - const command: CreateOrganizationCommand = { - name: 'Non-Error Exception Org', - contactfname: 'John', - contactlname: 'Doe', - contactemail: 'john@exception.com', - contactphone: '+1234567890' - }; - - mockOrganizationRepository.create.mockRejectedValue('String error'); - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Failed to create organization'); - }); - }); - - describe('UpdateOrganizationCommandHandler', () => { - let handler: UpdateOrganizationCommandHandler; - - beforeEach(() => { - handler = new UpdateOrganizationCommandHandler(mockOrganizationRepository); - }); - - it('should update organization successfully', async () => { - // Arrange - const updatedOrgData = createMockOrganization({ - id: '550e8400-e29b-41d4-a716-446655440000', - name: 'Updated Organization', - contactemail: 'john@updated.com', - url: 'https://updated.com', - state: OrganizationState.ACTIVE - }); - - mockOrganizationRepository.update.mockResolvedValue(updatedOrgData); - - const command: UpdateOrganizationCommand = { - id: '550e8400-e29b-41d4-a716-446655440000', - name: 'Updated Organization', - contactemail: 'john@updated.com', - url: 'https://updated.com' - }; - - // Act - const result = await handler.execute(command); - - // Assert - Returns ShortOrganizationDto - expect(result).toEqual({ - id: '550e8400-e29b-41d4-a716-446655440000', - name: 'Updated Organization', - state: 1, - userinorg: 0, - maxOrganizationalDecks: 10 - }); - expect(mockOrganizationRepository.update).toHaveBeenCalledWith( - '550e8400-e29b-41d4-a716-446655440000', - command - ); - }); - - it('should return null when organization not found', async () => { - // Arrange - mockOrganizationRepository.update.mockResolvedValue(null); - - const command: UpdateOrganizationCommand = { - id: 'non-existent-id', - name: 'Non-existent Organization' - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeNull(); - expect(mockOrganizationRepository.update).toHaveBeenCalledWith('non-existent-id', command); - }); - - it('should update organization with partial data', async () => { - // Arrange - const partialUpdatedOrgData = createMockOrganization({ - id: '550e8400-e29b-41d4-a716-446655440000', - name: 'Original Name', - contactemail: 'john@newmail.com', - state: OrganizationState.ACTIVE - }); - - mockOrganizationRepository.update.mockResolvedValue(partialUpdatedOrgData); - - const command: UpdateOrganizationCommand = { - id: '550e8400-e29b-41d4-a716-446655440000', - contactemail: 'john@newmail.com' - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toEqual({ - id: '550e8400-e29b-41d4-a716-446655440000', - name: 'Original Name', - state: 1, - userinorg: 0, - maxOrganizationalDecks: 10 - }); - }); - }); - - describe('DeleteOrganizationCommandHandler', () => { - let handler: DeleteOrganizationCommandHandler; - - beforeEach(() => { - handler = new DeleteOrganizationCommandHandler(mockOrganizationRepository); - }); - - it('should perform soft delete successfully', async () => { - // Arrange - mockOrganizationRepository.softDelete.mockResolvedValue(null); - - const command: DeleteOrganizationCommand = { - id: '550e8400-e29b-41d4-a716-446655440000', - soft: true - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBe(true); - expect(mockOrganizationRepository.softDelete).toHaveBeenCalledWith('550e8400-e29b-41d4-a716-446655440000'); - expect(mockOrganizationRepository.delete).not.toHaveBeenCalled(); - }); - - it('should perform hard delete successfully', async () => { - // Arrange - mockOrganizationRepository.delete.mockResolvedValue(true); - - const command: DeleteOrganizationCommand = { - id: '550e8400-e29b-41d4-a716-446655440000', - soft: false - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBe(true); - expect(mockOrganizationRepository.delete).toHaveBeenCalledWith('550e8400-e29b-41d4-a716-446655440000'); - expect(mockOrganizationRepository.softDelete).not.toHaveBeenCalled(); - }); - - it('should default to hard delete when soft flag not specified', async () => { - // Arrange - mockOrganizationRepository.delete.mockResolvedValue(true); - - const command: DeleteOrganizationCommand = { - id: '550e8400-e29b-41d4-a716-446655440000' - }; - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBe(true); - expect(mockOrganizationRepository.delete).toHaveBeenCalledWith('550e8400-e29b-41d4-a716-446655440000'); - expect(mockOrganizationRepository.softDelete).not.toHaveBeenCalled(); - }); - - it('should handle soft delete with repository error gracefully', async () => { - // Arrange - mockOrganizationRepository.softDelete.mockRejectedValue(new Error('Database error')); - - const command: DeleteOrganizationCommand = { - id: '550e8400-e29b-41d4-a716-446655440000', - soft: true - }; - - // Act & Assert - Handler doesn't catch errors, they bubble up - await expect(handler.execute(command)).rejects.toThrow('Database error'); - }); - - it('should handle hard delete with repository error gracefully', async () => { - // Arrange - mockOrganizationRepository.delete.mockRejectedValue(new Error('Database error')); - - const command: DeleteOrganizationCommand = { - id: '550e8400-e29b-41d4-a716-446655440000', - soft: false - }; - - // Act & Assert - Handler doesn't catch errors, they bubble up - await expect(handler.execute(command)).rejects.toThrow('Database error'); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Services/AuthMiddleware.test.ts b/SerpentRace_Backend/tests/Application/Services/AuthMiddleware.test.ts deleted file mode 100644 index ddac0cac..00000000 --- a/SerpentRace_Backend/tests/Application/Services/AuthMiddleware.test.ts +++ /dev/null @@ -1,188 +0,0 @@ -import { Request, Response, NextFunction } from 'express'; - -// Mock JWTService before importing anything else -const mockJWTService = { - verify: jest.fn(), - refreshIfNeeded: jest.fn(), - create: jest.fn(), - shouldRefreshToken: jest.fn(), - test: jest.fn(), -}; - -jest.mock('../../../src/Application/Services/JWTService', () => { - return { - JWTService: jest.fn().mockImplementation(() => mockJWTService) - }; -}); - -// Now import the middleware which will use the mocked JWTService -import { authRequired, adminRequired } from '../../../src/Application/Services/AuthMiddleware'; - -describe('AuthMiddleware', () => { - let mockRequest: Partial; - let mockResponse: Partial; - let mockNext: NextFunction; - - beforeEach(() => { - jest.clearAllMocks(); - - mockRequest = { - cookies: {} - }; - - mockResponse = { - status: jest.fn().mockReturnThis(), - json: jest.fn().mockReturnThis(), - cookie: jest.fn() - }; - - mockNext = jest.fn(); - }); - - describe('authRequired', () => { - it('should call next() when token is valid', () => { - // Arrange - const validPayload = { - userId: 'user-123', - authLevel: 0 as 0 | 1, - orgId: 'org-123' - }; - - mockJWTService.verify.mockReturnValue(validPayload); - mockJWTService.refreshIfNeeded.mockReturnValue(false); // Token doesn't need refresh - - // Act - authRequired(mockRequest as Request, mockResponse as Response, mockNext); - - // Assert - expect(mockJWTService.verify).toHaveBeenCalledWith(mockRequest); - expect(mockJWTService.refreshIfNeeded).toHaveBeenCalledWith(validPayload, mockResponse); - expect((mockRequest as any).user).toBe(validPayload); - expect(mockNext).toHaveBeenCalled(); - expect(mockResponse.status).not.toHaveBeenCalled(); - expect(mockResponse.json).not.toHaveBeenCalled(); - }); - - it('should return 401 when token is invalid', () => { - // Arrange - mockJWTService.verify.mockReturnValue(null); - - // Act - authRequired(mockRequest as Request, mockResponse as Response, mockNext); - - // Assert - expect(mockJWTService.verify).toHaveBeenCalledWith(mockRequest); - expect(mockJWTService.refreshIfNeeded).not.toHaveBeenCalled(); - expect(mockNext).not.toHaveBeenCalled(); - expect(mockResponse.status).toHaveBeenCalledWith(401); - expect(mockResponse.json).toHaveBeenCalledWith({ error: 'Unauthorized' }); - }); - - it('should refresh token when needed', () => { - // Arrange - const validPayload = { - userId: 'user-123', - authLevel: 0 as 0 | 1, - orgId: 'org-123' - }; - - mockJWTService.verify.mockReturnValue(validPayload); - mockJWTService.refreshIfNeeded.mockReturnValue(true); // Token needs refresh - - // Act - authRequired(mockRequest as Request, mockResponse as Response, mockNext); - - // Assert - expect(mockJWTService.verify).toHaveBeenCalledWith(mockRequest); - expect(mockJWTService.refreshIfNeeded).toHaveBeenCalledWith(validPayload, mockResponse); - expect((mockRequest as any).user).toBe(validPayload); - expect(mockNext).toHaveBeenCalled(); - expect(mockResponse.status).not.toHaveBeenCalled(); - expect(mockResponse.json).not.toHaveBeenCalled(); - }); - }); - - describe('adminRequired', () => { - it('should call next() when token is valid and user is admin', () => { - // Arrange - const adminPayload = { - userId: 'admin-123', - authLevel: 1 as 0 | 1, - orgId: 'org-123' - }; - - mockJWTService.verify.mockReturnValue(adminPayload); - mockJWTService.refreshIfNeeded.mockReturnValue(false); - - // Act - adminRequired(mockRequest as Request, mockResponse as Response, mockNext); - - // Assert - expect(mockJWTService.verify).toHaveBeenCalledWith(mockRequest); - expect(mockJWTService.refreshIfNeeded).toHaveBeenCalledWith(adminPayload, mockResponse); - expect((mockRequest as any).user).toBe(adminPayload); - expect(mockNext).toHaveBeenCalled(); - expect(mockResponse.status).not.toHaveBeenCalled(); - expect(mockResponse.json).not.toHaveBeenCalled(); - }); - - it('should return 403 when token is invalid', () => { - // Arrange - mockJWTService.verify.mockReturnValue(null); - - // Act - adminRequired(mockRequest as Request, mockResponse as Response, mockNext); - - // Assert - expect(mockJWTService.verify).toHaveBeenCalledWith(mockRequest); - expect(mockJWTService.refreshIfNeeded).not.toHaveBeenCalled(); - expect(mockNext).not.toHaveBeenCalled(); - expect(mockResponse.status).toHaveBeenCalledWith(403); - expect(mockResponse.json).toHaveBeenCalledWith({ error: 'Forbidden' }); - }); - - it('should return 403 when user is not admin', () => { - // Arrange - const regularUserPayload = { - userId: 'user-123', - authLevel: 0 as 0 | 1, - orgId: 'org-123' - }; - - mockJWTService.verify.mockReturnValue(regularUserPayload); - - // Act - adminRequired(mockRequest as Request, mockResponse as Response, mockNext); - - // Assert - expect(mockJWTService.verify).toHaveBeenCalledWith(mockRequest); - expect(mockJWTService.refreshIfNeeded).not.toHaveBeenCalled(); - expect(mockNext).not.toHaveBeenCalled(); - expect(mockResponse.status).toHaveBeenCalledWith(403); - expect(mockResponse.json).toHaveBeenCalledWith({ error: 'Forbidden' }); - }); - - it('should refresh token for valid admin user', () => { - // Arrange - const adminPayload = { - userId: 'admin-123', - authLevel: 1 as 0 | 1, - orgId: 'org-123' - }; - - mockJWTService.verify.mockReturnValue(adminPayload); - mockJWTService.refreshIfNeeded.mockReturnValue(true); - - // Act - adminRequired(mockRequest as Request, mockResponse as Response, mockNext); - - // Assert - expect(mockJWTService.verify).toHaveBeenCalledWith(mockRequest); - expect(mockJWTService.refreshIfNeeded).toHaveBeenCalledWith(adminPayload, mockResponse); - expect((mockRequest as any).user).toBe(adminPayload); - expect(mockNext).toHaveBeenCalled(); - expect(mockResponse.status).not.toHaveBeenCalled(); - expect(mockResponse.json).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Services/ChatConfiguration.test.ts b/SerpentRace_Backend/tests/Application/Services/ChatConfiguration.test.ts deleted file mode 100644 index acde9202..00000000 --- a/SerpentRace_Backend/tests/Application/Services/ChatConfiguration.test.ts +++ /dev/null @@ -1,159 +0,0 @@ -import { WebSocketService } from '../../../src/Application/Services/WebSocketService'; -import { Server as HttpServer } from 'http'; -import { EventEmitter } from 'events'; - -describe('Chat Configuration', () => { - let mockHttpServer: HttpServer; - - beforeAll(() => { - // Create a more complete HTTP server mock that extends EventEmitter - const httpServerMock = new EventEmitter(); - - // Add necessary methods that Socket.IO expects - Object.assign(httpServerMock, { - on: jest.fn(), - listen: jest.fn(), - close: jest.fn(), - listeners: jest.fn().mockReturnValue([]), - removeListener: jest.fn(), - removeAllListeners: jest.fn(), - setMaxListeners: jest.fn(), - getMaxListeners: jest.fn().mockReturnValue(0), - listenerCount: jest.fn().mockReturnValue(0), - prependListener: jest.fn(), - prependOnceListener: jest.fn(), - off: jest.fn(), - once: jest.fn(), - emit: jest.fn(), - // HTTP server specific - timeout: 0, - keepAliveTimeout: 5000, - maxHeadersCount: null, - headersTimeout: 60000, - requestTimeout: 0 - }); - - mockHttpServer = httpServerMock as unknown as HttpServer; - }); - - afterEach(() => { - // Clean up environment variables - delete process.env.CHAT_MAX_MESSAGES_PER_USER; - delete process.env.CHAT_MESSAGE_CLEANUP_WEEKS; - delete process.env.CHAT_INACTIVITY_TIMEOUT_MINUTES; - }); - - describe('Environment Variable Configuration', () => { - it('should use default chat configuration values', () => { - const service = new WebSocketService(mockHttpServer); - - expect(service['maxMessagesPerUser']).toBe(100); - expect(service['messageCleanupWeeks']).toBe(4); - expect(service['chatTimeout']).toBe(30); - }); - - it('should use environment variable for CHAT_MAX_MESSAGES_PER_USER', () => { - process.env.CHAT_MAX_MESSAGES_PER_USER = '50'; - - const service = new WebSocketService(mockHttpServer); - - expect(service['maxMessagesPerUser']).toBe(50); - }); - - it('should use environment variable for CHAT_MESSAGE_CLEANUP_WEEKS', () => { - // Arrange - process.env.CHAT_MESSAGE_CLEANUP_WEEKS = '8'; - - // Act - const service = new WebSocketService(mockHttpServer); - - // Assert - expect(service['messageCleanupWeeks']).toBe(8); - }); - - it('should use environment variable for CHAT_INACTIVITY_TIMEOUT_MINUTES', () => { - // Arrange - process.env.CHAT_INACTIVITY_TIMEOUT_MINUTES = '60'; - - // Act - const service = new WebSocketService(mockHttpServer); - - // Assert - expect(service['chatTimeout']).toBe(60); - }); - - it('should handle invalid numeric environment variables gracefully', () => { - // Arrange - process.env.CHAT_MAX_MESSAGES_PER_USER = 'invalid'; - process.env.CHAT_MESSAGE_CLEANUP_WEEKS = 'also-invalid'; - process.env.CHAT_INACTIVITY_TIMEOUT_MINUTES = 'not-a-number'; - - // Act - const service = new WebSocketService(mockHttpServer); - - // Assert - parseInt of invalid strings returns NaN - expect(service['maxMessagesPerUser']).toBe(NaN); - expect(service['messageCleanupWeeks']).toBe(NaN); - expect(service['chatTimeout']).toBe(NaN); - }); - }); - - describe('Rate Limiting Logic', () => { - it('should initialize with empty user message counts', () => { - // Act - const service = new WebSocketService(mockHttpServer); - - // Assert - expect(service['userMessageCounts']).toBeDefined(); - expect(service['userMessageCounts'].size).toBe(0); - }); - - it('should allow messages within rate limit', () => { - // Arrange - process.env.CHAT_MAX_MESSAGES_PER_USER = '5'; - const service = new WebSocketService(mockHttpServer); - const userId = 'test-user'; - - // Act & Assert - should allow first 5 messages - for (let i = 0; i < 5; i++) { - expect(service['checkMessageRateLimit'](userId)).toBe(true); - } - }); - - it('should block messages when rate limit exceeded', () => { - // Arrange - process.env.CHAT_MAX_MESSAGES_PER_USER = '3'; - const service = new WebSocketService(mockHttpServer); - const userId = 'test-user'; - - // Act - send 3 messages (should be allowed) - for (let i = 0; i < 3; i++) { - expect(service['checkMessageRateLimit'](userId)).toBe(true); - } - - // Assert - 4th message should be blocked - expect(service['checkMessageRateLimit'](userId)).toBe(false); - }); - - it('should reset rate limit after time window', (done) => { - // Arrange - process.env.CHAT_MAX_MESSAGES_PER_USER = '2'; - const service = new WebSocketService(mockHttpServer); - const userId = 'test-user'; - - // Act - exhaust rate limit - expect(service['checkMessageRateLimit'](userId)).toBe(true); - expect(service['checkMessageRateLimit'](userId)).toBe(true); - expect(service['checkMessageRateLimit'](userId)).toBe(false); // Should be blocked - - // Mock time passage by manipulating the internal state - const userStats = service['userMessageCounts'].get(userId)!; - userStats.lastReset = Date.now() - (60 * 1000 + 1); // More than 1 minute ago - service['userMessageCounts'].set(userId, userStats); - - // Assert - should be allowed again after reset - expect(service['checkMessageRateLimit'](userId)).toBe(true); - done(); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Services/DIContainer.test.ts b/SerpentRace_Backend/tests/Application/Services/DIContainer.test.ts deleted file mode 100644 index 0b174b32..00000000 --- a/SerpentRace_Backend/tests/Application/Services/DIContainer.test.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { container } from '../../../src/Application/Services/DIContainer'; -import { IUserRepository } from '../../../src/Domain/IRepository/IUserRepository'; -import { IChatRepository } from '../../../src/Domain/IRepository/IChatRepository'; -import { LoggingService } from '../../../src/Application/Services/LoggingService'; - -describe('DIContainer', () => { - // Cleanup after all tests to prevent Jest hanging - afterAll(async () => { - await LoggingService.getInstance().shutdown(); - }); - - describe('Repositories', () => { - it('should return singleton IUserRepository instance', () => { - const repo1 = container.userRepository; - const repo2 = container.userRepository; - - expect(repo1).toBeTruthy(); - expect(repo1).toBe(repo2); // Same instance (singleton) - expect(typeof repo1.findById).toBe('function'); // Has interface methods - }); - - it('should return singleton IChatRepository instance', () => { - const repo1 = container.chatRepository; - const repo2 = container.chatRepository; - - expect(repo1).toBeTruthy(); - expect(repo1).toBe(repo2); // Same instance (singleton) - expect(typeof repo1.findById).toBe('function'); // Has interface methods - }); - }); - - describe('Command Handlers', () => { - it('should return singleton CreateUserCommandHandler instance', () => { - const handler1 = container.createUserCommandHandler; - const handler2 = container.createUserCommandHandler; - - expect(handler1).toBeTruthy(); - expect(handler1).toBe(handler2); // Same instance (singleton) - }); - - it('should return singleton LoginCommandHandler instance', () => { - const handler1 = container.loginCommandHandler; - const handler2 = container.loginCommandHandler; - - expect(handler1).toBeTruthy(); - expect(handler1).toBe(handler2); // Same instance (singleton) - }); - - it('should return singleton DeactivateUserCommandHandler instance', () => { - const handler1 = container.deactivateUserCommandHandler; - const handler2 = container.deactivateUserCommandHandler; - - expect(handler1).toBeTruthy(); - expect(handler1).toBe(handler2); // Same instance (singleton) - }); - - it('should return singleton DeleteUserCommandHandler instance', () => { - const handler1 = container.deleteUserCommandHandler; - const handler2 = container.deleteUserCommandHandler; - - expect(handler1).toBeTruthy(); - expect(handler1).toBe(handler2); // Same instance (singleton) - }); - - it('should return singleton DeleteDeckCommandHandler instance', () => { - const handler1 = container.deleteDeckCommandHandler; - const handler2 = container.deleteDeckCommandHandler; - - expect(handler1).toBeTruthy(); - expect(handler1).toBe(handler2); // Same instance (singleton) - }); - - it('should return singleton DeleteOrganizationCommandHandler instance', () => { - const handler1 = container.deleteOrganizationCommandHandler; - const handler2 = container.deleteOrganizationCommandHandler; - - expect(handler1).toBeTruthy(); - expect(handler1).toBe(handler2); // Same instance (singleton) - }); - }); - - describe('Query Handlers', () => { - it('should return singleton GetUserByIdQueryHandler instance', () => { - const handler1 = container.getUserByIdQueryHandler; - const handler2 = container.getUserByIdQueryHandler; - - expect(handler1).toBeTruthy(); - expect(handler1).toBe(handler2); // Same instance (singleton) - }); - - it('should return singleton GetUsersByPageQueryHandler instance', () => { - const handler1 = container.getUsersByPageQueryHandler; - const handler2 = container.getUsersByPageQueryHandler; - - expect(handler1).toBeTruthy(); - expect(handler1).toBe(handler2); // Same instance (singleton) - }); - }); - - describe('Services', () => { - it('should return singleton JWTService instance', () => { - const service1 = container.jwtService; - const service2 = container.jwtService; - - expect(service1).toBeTruthy(); - expect(service1).toBe(service2); // Same instance (singleton) - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Services/EmailService.test.ts b/SerpentRace_Backend/tests/Application/Services/EmailService.test.ts deleted file mode 100644 index d0b1ab3a..00000000 --- a/SerpentRace_Backend/tests/Application/Services/EmailService.test.ts +++ /dev/null @@ -1,226 +0,0 @@ -import { EmailService, EmailOptions } from '../../../src/Application/Services/EmailService'; -import * as nodemailer from 'nodemailer'; -import * as fs from 'fs'; - -// Mock nodemailer -jest.mock('nodemailer'); -jest.mock('fs'); - -// Mock logger -jest.mock('../../../src/Application/Services/Logger', () => ({ - logError: jest.fn(), - logAuth: jest.fn(), - logStartup: jest.fn(), -})); - -describe('EmailService', () => { - let emailService: EmailService; - let mockTransporter: jest.Mocked; - let mockCreateTransporter: jest.MockedFunction; - - beforeEach(() => { - jest.clearAllMocks(); - - // Mock nodemailer.createTransporter - mockTransporter = { - sendMail: jest.fn(), - } as any; - - mockCreateTransporter = nodemailer.createTransport as jest.MockedFunction; - mockCreateTransporter.mockReturnValue(mockTransporter); - - // Mock fs - (fs.readFileSync as jest.Mock).mockImplementation((filePath: string) => { - if (filePath.includes('html')) { - return 'HTML template: {{name}}'; - } - return 'Text template: {{name}}'; - }); - - (fs.existsSync as jest.Mock).mockReturnValue(true); - - emailService = new EmailService(); - }); - - describe('sendEmail', () => { - it('should send email successfully', async () => { - // Arrange - const emailOptions: EmailOptions = { - to: 'test@example.com', - subject: 'Test Subject', - html: '

Test HTML

', - text: 'Test Text', - }; - - mockTransporter.sendMail.mockResolvedValue({ messageId: 'test-id' }); - - // Act - const result = await emailService.sendEmail(emailOptions); - - // Assert - expect(result).toBe(true); - expect(mockTransporter.sendMail).toHaveBeenCalledWith({ - from: process.env.EMAIL_FROM || 'noreply@serpentrace.com', - to: emailOptions.to, - subject: emailOptions.subject, - html: emailOptions.html, - text: emailOptions.text, - attachments: expect.any(Array), - }); - }); - - it('should send email with template', async () => { - // Arrange - const emailOptions: EmailOptions = { - to: 'test@example.com', - subject: 'Test Subject', - template: 'verification', - templateData: { name: 'John', token: 'abc123' }, - }; - - mockTransporter.sendMail.mockResolvedValue({ messageId: 'test-id' }); - - // Act - const result = await emailService.sendEmail(emailOptions); - - // Assert - expect(result).toBe(true); - expect(mockTransporter.sendMail).toHaveBeenCalledWith({ - from: process.env.EMAIL_FROM || 'noreply@serpentrace.com', - to: emailOptions.to, - subject: emailOptions.subject, - html: expect.any(String), - text: expect.any(String), - attachments: expect.any(Array), - }); - }); - - it('should handle email send failure', async () => { - // Arrange - const emailOptions: EmailOptions = { - to: 'test@example.com', - subject: 'Test Subject', - text: 'Test Text', - }; - - mockTransporter.sendMail.mockRejectedValue(new Error('SMTP Error')); - - // Act - const result = await emailService.sendEmail(emailOptions); - - // Assert - expect(result).toBe(false); - }); - - it('should handle missing template files', async () => { - // Arrange - const emailOptions: EmailOptions = { - to: 'test@example.com', - subject: 'Test Subject', - template: 'nonexistent', - templateData: { name: 'John' }, - }; - - (fs.existsSync as jest.Mock).mockReturnValue(false); - - // Act - const result = await emailService.sendEmail(emailOptions); - - // Assert - expect(result).toBe(false); - }); - - it('should handle template processing errors', async () => { - // Arrange - const emailOptions: EmailOptions = { - to: 'test@example.com', - subject: 'Test Subject', - template: 'verification', - templateData: { name: 'John' }, - }; - - (fs.readFileSync as jest.Mock).mockImplementation(() => { - throw new Error('File read error'); - }); - - // Act - const result = await emailService.sendEmail(emailOptions); - - // Assert - expect(result).toBe(false); - }); - - it('should use fallback content when template data is missing', async () => { - // Arrange - const emailOptions: EmailOptions = { - to: 'test@example.com', - subject: 'Test Subject', - template: 'verification', - }; - - mockTransporter.sendMail.mockResolvedValue({ messageId: 'test-id' }); - - // Act - const result = await emailService.sendEmail(emailOptions); - - // Assert - expect(result).toBe(true); - }); - }); - - describe('constructor', () => { - it('should initialize with environment variables', () => { - // Arrange - const originalEnv = process.env; - process.env = { - ...originalEnv, - EMAIL_HOST: 'test-smtp.com', - EMAIL_PORT: '465', - EMAIL_SECURE: 'true', - EMAIL_USER: 'test@example.com', - EMAIL_PASS: 'testpass', - EMAIL_FROM: 'sender@example.com', - }; - - // Act - const service = new EmailService(); - - // Assert - expect(mockCreateTransporter).toHaveBeenCalledWith({ - host: 'test-smtp.com', - port: 465, - secure: true, - auth: { - user: 'test@example.com', - pass: 'testpass', - }, - }); - - // Restore environment - process.env = originalEnv; - }); - - it('should use default values when environment variables are missing', () => { - // Arrange - const originalEnv = process.env; - process.env = {}; - - // Act - const service = new EmailService(); - - // Assert - expect(mockCreateTransporter).toHaveBeenCalledWith({ - host: 'smtp.gmail.com', - port: 587, - secure: false, - auth: { - user: '', - pass: '', - }, - }); - - // Restore environment - process.env = originalEnv; - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Services/JWTService.refresh.test.ts b/SerpentRace_Backend/tests/Application/Services/JWTService.refresh.test.ts deleted file mode 100644 index b679f25c..00000000 --- a/SerpentRace_Backend/tests/Application/Services/JWTService.refresh.test.ts +++ /dev/null @@ -1,139 +0,0 @@ -import { JWTService, TokenPayload } from '../../../src/Application/Services/JWTService'; -import { Request, Response } from 'express'; -import { UserState } from '../../../src/Domain/User/UserAggregate'; - -describe('JWTService - Token Refresh Logic', () => { - let jwtService: JWTService; - let mockRequest: Partial; - let mockResponse: Partial; - let dateNowSpy: jest.SpyInstance; - - beforeEach(() => { - jwtService = new JWTService(); - - mockRequest = { - cookies: {} - }; - - mockResponse = { - cookie: jest.fn() - }; - - // Create a fresh spy for Date.now in each test - dateNowSpy = jest.spyOn(Date, 'now'); - }); - - afterEach(() => { - // Always restore Date.now after each test - dateNowSpy.mockRestore(); - }); - - describe('shouldRefreshToken', () => { - it('should return true when token is 75% through its lifetime', () => { - // Token issued at time 100, expires at 900 (lifetime: 800) - // 75% of 800 = 600, so at time 700 (100 + 600), it should refresh - const payload: TokenPayload = { - userId: 'test-user', - authLevel: 0 as 0 | 1, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'test-org', - iat: 100, - exp: 900 - }; - - // Mock current time as 700 (which is 75% through the token lifetime) - dateNowSpy.mockReturnValue(700 * 1000); - - const result = jwtService.shouldRefreshToken(payload); - expect(result).toBe(true); - }); - - it('should return true when token is more than 75% through its lifetime', () => { - const payload: TokenPayload = { - userId: 'test-user', - authLevel: 0 as 0 | 1, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'test-org', - iat: 100, - exp: 900 - }; - - // Mock current time as 750 (which is 81.25% through the token lifetime) - dateNowSpy.mockReturnValue(750 * 1000); - - const result = jwtService.shouldRefreshToken(payload); - expect(result).toBe(true); - }); - - it('should return false when token is less than 75% through its lifetime', () => { - const payload: TokenPayload = { - userId: 'test-user', - authLevel: 0 as 0 | 1, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'test-org', - iat: 100, - exp: 900 - }; - - // Mock current time as 600 (which is 62.5% through the token lifetime) - dateNowSpy.mockReturnValue(600 * 1000); - - const result = jwtService.shouldRefreshToken(payload); - expect(result).toBe(false); - }); - - it('should return false when payload does not have required timestamp fields', () => { - const payload: TokenPayload = { - userId: 'test-user', - authLevel: 0 as 0 | 1, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'test-org' - }; - - const result = jwtService.shouldRefreshToken(payload); - expect(result).toBe(false); - }); - }); - - describe('refreshIfNeeded', () => { - it('should return new token when refresh is needed', () => { - // Setup a payload that needs refresh (75% through lifetime) - const payload: TokenPayload = { - userId: 'test-user', - authLevel: 0 as 0 | 1, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'test-org', - iat: 100, - exp: 900 - }; - - // Mock current time as 700 (75% through the token lifetime) - dateNowSpy.mockReturnValue(700 * 1000); - - const result = jwtService.refreshIfNeeded(payload, mockResponse as Response); - - expect(result).toBe(true); - expect(mockResponse.cookie).toHaveBeenCalled(); - }); - - it('should return false when refresh is not needed', () => { - // Setup a payload that doesn't need refresh (less than 75% through lifetime) - const payload: TokenPayload = { - userId: 'test-user', - authLevel: 0 as 0 | 1, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'test-org', - iat: 100, - exp: 900 - }; - - // Mock current time as 600 (62.5% through the token lifetime) - dateNowSpy.mockReturnValue(600 * 1000); - - const result = jwtService.refreshIfNeeded(payload, mockResponse as Response); - - expect(result).toBe(false); - expect(mockResponse.cookie).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Services/JWTService.test.ts b/SerpentRace_Backend/tests/Application/Services/JWTService.test.ts deleted file mode 100644 index 0a003163..00000000 --- a/SerpentRace_Backend/tests/Application/Services/JWTService.test.ts +++ /dev/null @@ -1,403 +0,0 @@ -import { JWTService, TokenPayload } from '../../../src/Application/Services/JWTService'; -import { Request, Response } from 'express'; -import { UserState } from '../../../src/Domain/User/UserAggregate'; - - -describe('JWTService', () => { - let jwtService: JWTService; - let mockRequest: Partial; - let mockResponse: Partial; - - beforeEach(() => { - jest.clearAllMocks(); - jwtService = new JWTService(); - - // Set a test secret for consistent testing - process.env.JWT_SECRET = 'test-secret-key-for-testing'; - process.env.JWT_EXPIRY = '3600'; // 1 hour - - // Mock express Request and Response - mockRequest = { - cookies: {} - }; - - mockResponse = { - cookie: jest.fn() - }; - }); - - afterEach(() => { - // Clean up environment - delete process.env.JWT_SECRET; - delete process.env.JWT_EXPIRY; - }); - - describe('create', () => { - it('should create a valid JWT token and set cookie', () => { - // Arrange - const payload: TokenPayload = { - userId: 'user-123', - authLevel: 1 as const, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'org-456' - }; - - // Act - const token = jwtService.create(payload, mockResponse as Response); - - // Assert - expect(token).toBeDefined(); - expect(typeof token).toBe('string'); - expect(token.split('.')).toHaveLength(3); // JWT has 3 parts - expect(mockResponse.cookie).toHaveBeenCalledWith( - 'auth_token', - token, - expect.objectContaining({ - httpOnly: true, - sameSite: 'strict', - maxAge: 86400000 // 24 hours in milliseconds - }) - ); - }); - - it('should create different tokens for different payloads', () => { - // Arrange - const payload1: TokenPayload = { - userId: 'user-1', - authLevel: 0 as const, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'org-1' - }; - - const payload2: TokenPayload = { - userId: 'user-2', - authLevel: 1 as const, - userStatus: UserState.VERIFIED_PREMIUM, - orgId: 'org-2' - }; - - // Act - const token1 = jwtService.create(payload1, mockResponse as Response); - const token2 = jwtService.create(payload2, mockResponse as Response); - - // Assert - expect(token1).toBeDefined(); - expect(token2).toBeDefined(); - expect(token1).not.toBe(token2); - }); - - it('should set secure cookie in production environment', () => { - // Arrange - process.env.NODE_ENV = 'production'; - const payload: TokenPayload = { - userId: 'user-123', - authLevel: 1 as const, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'org-456' - }; - - // Act - const token = jwtService.create(payload, mockResponse as Response); - - // Assert - expect(mockResponse.cookie).toHaveBeenCalledWith( - 'auth_token', - token, - expect.objectContaining({ - secure: true - }) - ); - - // Clean up - delete process.env.NODE_ENV; - }); - }); - - describe('verify', () => { - it('should verify a valid token from cookies', () => { - // Arrange - const payload: TokenPayload = { - userId: 'user-123', - authLevel: 1 as const, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'org-456' - }; - - const token = jwtService.create(payload, mockResponse as Response); - mockRequest.cookies = { auth_token: token }; - - // Act - const result = jwtService.verify(mockRequest as Request); - - // Assert - expect(result).toBeDefined(); - expect(result!.userId).toBe('user-123'); - expect(result!.authLevel).toBe(1); - expect(result!.orgId).toBe('org-456'); - }); - - it('should return null when no token is present in cookies', () => { - // Arrange - mockRequest.cookies = {}; - - // Act - const result = jwtService.verify(mockRequest as Request); - - // Assert - expect(result).toBeNull(); - }); - - it('should return null for invalid token', () => { - // Arrange - mockRequest.cookies = { auth_token: 'invalid.jwt.token' }; - - // Act - const result = jwtService.verify(mockRequest as Request); - - // Assert - expect(result).toBeNull(); - }); - - it('should return null for malformed token', () => { - // Arrange - mockRequest.cookies = { auth_token: 'not-a-jwt-token' }; - - // Act - const result = jwtService.verify(mockRequest as Request); - - // Assert - expect(result).toBeNull(); - }); - }); - - describe('token creation with different payloads', () => { - it('should create tokens with dynamic user data', () => { - // Arrange - const timestamp = Date.now(); - const testPayload: TokenPayload = { - userId: `test-user-${timestamp}`, - authLevel: 1 as const, - userStatus: UserState.VERIFIED_REGULAR, - orgId: `test-org-${timestamp}` - }; - - // Act - const token = jwtService.create(testPayload, mockResponse as Response); - - // Assert - expect(token).toBeDefined(); - expect(typeof token).toBe('string'); - expect(mockResponse.cookie).toHaveBeenCalled(); - - // Verify we can decode it back - mockRequest.cookies = { auth_token: token }; - const verifiedPayload = jwtService.verify(mockRequest as Request); - - expect(verifiedPayload).toBeDefined(); - expect(verifiedPayload!.userId).toBe(testPayload.userId); - expect(verifiedPayload!.orgId).toBe(testPayload.orgId); - expect(verifiedPayload!.authLevel).toBe(testPayload.authLevel); - }); - - it('should create different tokens for different timestamps', async () => { - // Arrange - const timestamp1 = Date.now(); - const payload1: TokenPayload = { - userId: `test-user-${timestamp1}`, - authLevel: 0 as const, - userStatus: UserState.VERIFIED_REGULAR, - orgId: `test-org-${timestamp1}` - }; - - // Add a small delay to ensure different timestamps - await new Promise(resolve => setTimeout(resolve, 1)); - - const timestamp2 = Date.now(); - const payload2: TokenPayload = { - userId: `test-user-${timestamp2}`, - authLevel: 1 as const, - userStatus: UserState.VERIFIED_PREMIUM, - orgId: `test-org-${timestamp2}` - }; - - // Act - const token1 = jwtService.create(payload1, mockResponse as Response); - const token2 = jwtService.create(payload2, mockResponse as Response); - - // Assert - expect(token1).not.toBe(token2); - expect(payload1.userId).not.toBe(payload2.userId); - expect(payload1.orgId).not.toBe(payload2.orgId); - }); - }); - - describe('integration scenarios', () => { - it('should create and verify token in complete flow', () => { - // Arrange - const originalPayload: TokenPayload = { - userId: 'integration-user', - authLevel: 1 as const, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'integration-org' - }; - - // Act - Complete flow - const token = jwtService.create(originalPayload, mockResponse as Response); - mockRequest.cookies = { auth_token: token }; - const verifiedPayload = jwtService.verify(mockRequest as Request); - - // Assert - expect(token).toBeDefined(); - expect(verifiedPayload).toBeDefined(); - expect(verifiedPayload!.userId).toBe('integration-user'); - expect(verifiedPayload!.authLevel).toBe(1); - expect(verifiedPayload!.orgId).toBe('integration-org'); - }); - }); - - describe('JWT_EXPIRATION duration parsing', () => { - it('should parse JWT_EXPIRATION in hours format', () => { - // Arrange - delete process.env.JWT_EXPIRY; - process.env.JWT_EXPIRATION = '2h'; - - // Act - const newJwtService = new JWTService(); - const payload: TokenPayload = { - userId: 'user-123', - authLevel: 1 as const, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'org-456' - }; - - const token = newJwtService.create(payload, mockResponse as Response); - - // Update mock request with the created token - mockRequest.cookies = { auth_token: token }; - const verifiedPayload = newJwtService.verify(mockRequest as Request); - - // Assert - expect(token).toBeDefined(); - expect(verifiedPayload).toBeDefined(); - expect(verifiedPayload!.exp).toBeDefined(); - - // Token should expire in approximately 2 hours (7200 seconds) - const expectedExp = Math.floor(Date.now() / 1000) + 7200; - expect(verifiedPayload!.exp).toBeCloseTo(expectedExp, -1); // Within 10 seconds - - // Cleanup - delete process.env.JWT_EXPIRATION; - }); - - it('should parse JWT_EXPIRATION in days format', () => { - // Arrange - delete process.env.JWT_EXPIRY; - process.env.JWT_EXPIRATION = '7d'; - - // Act - const newJwtService = new JWTService(); - const payload: TokenPayload = { - userId: 'user-123', - authLevel: 1 as const, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'org-456' - }; - - const token = newJwtService.create(payload, mockResponse as Response); - - // Update mock request with the created token - mockRequest.cookies = { auth_token: token }; - const verifiedPayload = newJwtService.verify(mockRequest as Request); - - // Assert - expect(token).toBeDefined(); - expect(verifiedPayload).toBeDefined(); - - // Token should expire in approximately 7 days (604800 seconds) - const expectedExp = Math.floor(Date.now() / 1000) + 604800; - expect(verifiedPayload!.exp).toBeCloseTo(expectedExp, -1); // Within 10 seconds - - // Cleanup - delete process.env.JWT_EXPIRATION; - }); - - it('should parse JWT_EXPIRATION in minutes format', () => { - // Arrange - delete process.env.JWT_EXPIRY; - process.env.JWT_EXPIRATION = '30m'; - - // Act - const newJwtService = new JWTService(); - const payload: TokenPayload = { - userId: 'user-123', - authLevel: 1 as const, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'org-456' - }; - - const token = newJwtService.create(payload, mockResponse as Response); - - // Update mock request with the created token - mockRequest.cookies = { auth_token: token }; - const verifiedPayload = newJwtService.verify(mockRequest as Request); - - // Assert - expect(token).toBeDefined(); - expect(verifiedPayload).toBeDefined(); - - // Token should expire in approximately 30 minutes (1800 seconds) - const expectedExp = Math.floor(Date.now() / 1000) + 1800; - expect(verifiedPayload!.exp).toBeCloseTo(expectedExp, -1); // Within 10 seconds - - // Cleanup - delete process.env.JWT_EXPIRATION; - }); - - it('should prioritize JWT_EXPIRY over JWT_EXPIRATION when both are set', () => { - // Arrange - process.env.JWT_EXPIRY = '1800'; // 30 minutes in seconds - process.env.JWT_EXPIRATION = '1h'; // 1 hour - - // Act - const newJwtService = new JWTService(); - const payload: TokenPayload = { - userId: 'user-123', - authLevel: 1 as const, - userStatus: UserState.VERIFIED_REGULAR, - orgId: 'org-456' - }; - - const token = newJwtService.create(payload, mockResponse as Response); - - // Update mock request with the created token - mockRequest.cookies = { auth_token: token }; - const verifiedPayload = newJwtService.verify(mockRequest as Request); - - // Assert - expect(token).toBeDefined(); - expect(verifiedPayload).toBeDefined(); - - // Should use JWT_EXPIRY (1800 seconds), not JWT_EXPIRATION (3600 seconds) - const expectedExp = Math.floor(Date.now() / 1000) + 1800; - expect(verifiedPayload!.exp).toBeCloseTo(expectedExp, -1); // Within 10 seconds - - // Cleanup - delete process.env.JWT_EXPIRY; - delete process.env.JWT_EXPIRATION; - }); - - it('should throw error for invalid JWT_EXPIRATION format', () => { - // Arrange - delete process.env.JWT_EXPIRY; - process.env.JWT_EXPIRATION = 'invalid-format'; - - // Act & Assert - expect(() => { - new JWTService(); - }).toThrow('Invalid duration format: invalid-format. Use format like \'24h\', \'7d\', \'30m\''); - - // Cleanup - delete process.env.JWT_EXPIRATION; - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Services/LoggingService.test.ts b/SerpentRace_Backend/tests/Application/Services/LoggingService.test.ts deleted file mode 100644 index 9978141d..00000000 --- a/SerpentRace_Backend/tests/Application/Services/LoggingService.test.ts +++ /dev/null @@ -1,217 +0,0 @@ -import { LoggingService, LogLevel } from '../../../src/Application/Services/LoggingService'; -import { logAuth, logError, logDatabase, logStartup } from '../../../src/Application/Services/Logger'; -import fs from 'fs'; -import path from 'path'; - -describe('LoggingService', () => { - let loggingService: LoggingService; - const testLogsDir = path.join(process.cwd(), 'test-logs'); - - beforeEach(() => { - // Clean up any existing test logs - if (fs.existsSync(testLogsDir)) { - fs.rmSync(testLogsDir, { recursive: true, force: true }); - } - - // Mock environment variables for testing - process.env.MAX_LOGS_PER_FILE = '10'; - process.env.MINIO_ENDPOINT = ''; - - loggingService = LoggingService.getInstance(); - }); - - afterEach(() => { - // Clean up test logs - if (fs.existsSync(testLogsDir)) { - fs.rmSync(testLogsDir, { recursive: true, force: true }); - } - - // Clean up environment variables - delete process.env.MAX_LOGS_PER_FILE; - delete process.env.MINIO_ENDPOINT; - }); - - describe('Log Level Functions', () => { - it('should log authentication events', () => { - const consoleSpy = jest.spyOn(console, 'info').mockImplementation(); - - logAuth('Test auth message', 'user123', { action: 'login' }); - - expect(consoleSpy).toHaveBeenCalled(); - const logCall = consoleSpy.mock.calls[0][0]; - expect(logCall).toContain('[AUTH]'); - expect(logCall).toContain('Test auth message'); - - consoleSpy.mockRestore(); - }); - - it('should log error events with stack trace', () => { - const consoleSpy = jest.spyOn(console, 'error').mockImplementation(); - const testError = new Error('Test error message'); - - logError('Test error occurred', testError); - - expect(consoleSpy).toHaveBeenCalled(); - const logCall = consoleSpy.mock.calls[0][0]; - expect(logCall).toContain('[ERROR]'); - expect(logCall).toContain('Test error occurred'); - - consoleSpy.mockRestore(); - }); - - it('should log database operations with timing', () => { - const consoleSpy = jest.spyOn(console, 'info').mockImplementation(); - - logDatabase('Query executed', 'SELECT * FROM users', 45); - - expect(consoleSpy).toHaveBeenCalled(); - const logCall = consoleSpy.mock.calls[0][0]; - expect(logCall).toContain('[DATABASE]'); - expect(logCall).toContain('Query executed'); - - consoleSpy.mockRestore(); - }); - - it('should log startup events', () => { - const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); - - logStartup('Application started', { version: '1.0.0' }); - - expect(consoleSpy).toHaveBeenCalled(); - const logCall = consoleSpy.mock.calls[0][0]; - expect(logCall).toContain('[STARTUP]'); - expect(logCall).toContain('Application started'); - - consoleSpy.mockRestore(); - }); - }); - - describe('Log Formatting', () => { - it('should include timestamp in log entries', () => { - const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); - - logStartup('Test message'); - - expect(consoleSpy).toHaveBeenCalled(); - const logCall = consoleSpy.mock.calls[0][0]; - - // Check if timestamp is in ISO format - const timestampRegex = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z/; - expect(logCall).toMatch(timestampRegex); - - consoleSpy.mockRestore(); - }); - - it('should include metadata in log entries', () => { - const consoleSpy = jest.spyOn(console, 'info').mockImplementation(); - const metadata = { userId: '123', action: 'test' }; - - logAuth('Test with metadata', 'user123', metadata); - - expect(consoleSpy).toHaveBeenCalled(); - const logCall = consoleSpy.mock.calls[0][0]; - expect(logCall).toContain('Meta:'); - expect(logCall).toContain('"userId":"123"'); - expect(logCall).toContain('"action":"test"'); - - consoleSpy.mockRestore(); - }); - }); - - describe('Request Logging Middleware', () => { - it('should create request logging middleware', () => { - const middleware = loggingService.requestLoggingMiddleware(); - - expect(typeof middleware).toBe('function'); - expect(middleware.length).toBe(3); // req, res, next - }); - - it('should create error logging middleware', () => { - const middleware = loggingService.errorLoggingMiddleware(); - - expect(typeof middleware).toBe('function'); - expect(middleware.length).toBe(4); // error, req, res, next - }); - }); - - describe('Log Levels', () => { - it('should have all required log levels defined', () => { - expect(LogLevel.REQUEST).toBe('REQUEST'); - expect(LogLevel.ERROR).toBe('ERROR'); - expect(LogLevel.WARNING).toBe('WARNING'); - expect(LogLevel.AUTH).toBe('AUTH'); - expect(LogLevel.DATABASE).toBe('DATABASE'); - expect(LogLevel.STARTUP).toBe('STARTUP'); - expect(LogLevel.CONNECTION).toBe('CONNECTION'); - expect(LogLevel.OTHER).toBe('OTHER'); - }); - }); - - describe('Singleton Pattern', () => { - it('should return the same instance', () => { - const instance1 = LoggingService.getInstance(); - const instance2 = LoggingService.getInstance(); - - expect(instance1).toBe(instance2); - }); - }); - - describe('File Operations', () => { - it('should handle missing Minio configuration gracefully', () => { - // Test that the service starts without Minio config - expect(() => LoggingService.getInstance()).not.toThrow(); - }); - - it('should generate monthly directory structure', () => { - const now = new Date(); - const year = now.getFullYear(); - const month = String(now.getMonth() + 1).padStart(2, '0'); - const expectedPath = path.join('logs', `${year}-${month}`); - - // This tests the internal logic through the public interface - logStartup('Test for directory creation'); - - // Since we can't directly test the private method, we verify the service doesn't crash - expect(loggingService).toBeDefined(); - }); - }); - - describe('Error Handling', () => { - it('should handle logging errors gracefully', () => { - // Mock fs.appendFileSync to throw an error - const originalAppendFileSync = fs.appendFileSync; - const consoleSpy = jest.spyOn(console, 'error').mockImplementation(); - - fs.appendFileSync = jest.fn(() => { - throw new Error('Disk full'); - }); - - expect(() => { - logStartup('This should not crash'); - }).not.toThrow(); - - // Restore original function - fs.appendFileSync = originalAppendFileSync; - consoleSpy.mockRestore(); - }); - - it('should continue logging to console even if file logging fails', () => { - const consoleSpy = jest.spyOn(console, 'log').mockImplementation(); - - // Mock file system to fail - const originalAppendFileSync = fs.appendFileSync; - fs.appendFileSync = jest.fn(() => { - throw new Error('File system error'); - }); - - logStartup('Test message'); - - // Should still log to console - expect(consoleSpy).toHaveBeenCalled(); - - // Restore - fs.appendFileSync = originalAppendFileSync; - consoleSpy.mockRestore(); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Services/PasswordService.test.ts b/SerpentRace_Backend/tests/Application/Services/PasswordService.test.ts deleted file mode 100644 index a517c6f2..00000000 --- a/SerpentRace_Backend/tests/Application/Services/PasswordService.test.ts +++ /dev/null @@ -1,270 +0,0 @@ -import { PasswordService } from '../../../src/Application/Services/PasswordService'; - -// Mock bcrypt completely -jest.mock('bcrypt'); - -describe('PasswordService', () => { - // Mock functions for bcrypt - const mockBcryptHash = jest.fn(); - const mockBcryptCompare = jest.fn(); - - beforeEach(() => { - jest.clearAllMocks(); - // Reset console.error mock to avoid noise in tests - jest.spyOn(console, 'error').mockImplementation(() => {}); - - // Setup bcrypt mocks - const bcrypt = require('bcrypt'); - bcrypt.hash = mockBcryptHash; - bcrypt.compare = mockBcryptCompare; - }); - - afterEach(() => { - jest.restoreAllMocks(); - }); - - describe('hashPassword', () => { - it('should hash a valid password successfully', async () => { - // Arrange - const password = 'validPassword123!'; - const hashedPassword = '$2b$12$hashed.password.here'; - - mockBcryptHash.mockResolvedValue(hashedPassword); - - // Act - const result = await PasswordService.hashPassword(password); - - // Assert - expect(result).toBe(hashedPassword); - expect(mockBcryptHash).toHaveBeenCalledWith(password, 12); - }); - - it('should throw error for empty password', async () => { - // Arrange - const password = ''; - - // Act & Assert - await expect(PasswordService.hashPassword(password)).rejects.toThrow('Password must be a non-empty string'); - expect(mockBcryptHash).not.toHaveBeenCalled(); - }); - - it('should throw error for non-string password', async () => { - // Arrange - const password = null as any; - - // Act & Assert - await expect(PasswordService.hashPassword(password)).rejects.toThrow('Password must be a non-empty string'); - expect(mockBcryptHash).not.toHaveBeenCalled(); - }); - - it('should handle bcrypt errors and throw generic error', async () => { - // Arrange - const password = 'validPassword123!'; - mockBcryptHash.mockRejectedValue(new Error('Bcrypt error')); - - // Act & Assert - await expect(PasswordService.hashPassword(password)).rejects.toThrow('Failed to hash password'); - expect(mockBcryptHash).toHaveBeenCalledWith(password, 12); - }); - }); - - describe('verifyPassword', () => { - it('should return true for matching password and hash', async () => { - // Arrange - const password = 'validPassword123!'; - const hashedPassword = '$2b$12$hashed.password.here'; - - mockBcryptCompare.mockResolvedValue(true); - - // Act - const result = await PasswordService.verifyPassword(password, hashedPassword); - - // Assert - expect(result).toBe(true); - expect(mockBcryptCompare).toHaveBeenCalledWith(password, hashedPassword); - }); - - it('should return false for non-matching password and hash', async () => { - // Arrange - const password = 'wrongPassword'; - const hashedPassword = '$2b$12$hashed.password.here'; - - mockBcryptCompare.mockResolvedValue(false); - - // Act - const result = await PasswordService.verifyPassword(password, hashedPassword); - - // Assert - expect(result).toBe(false); - expect(mockBcryptCompare).toHaveBeenCalledWith(password, hashedPassword); - }); - - it('should return false for empty password', async () => { - // Arrange - const password = ''; - const hashedPassword = '$2b$12$hashed.password.here'; - - // Act - const result = await PasswordService.verifyPassword(password, hashedPassword); - - // Assert - expect(result).toBe(false); - expect(mockBcryptCompare).not.toHaveBeenCalled(); - }); - - it('should return false for empty hashed password', async () => { - // Arrange - const password = 'validPassword123!'; - const hashedPassword = ''; - - // Act - const result = await PasswordService.verifyPassword(password, hashedPassword); - - // Assert - expect(result).toBe(false); - expect(mockBcryptCompare).not.toHaveBeenCalled(); - }); - - it('should return false for non-string inputs', async () => { - // Arrange - const password = null as any; - const hashedPassword = undefined as any; - - // Act - const result = await PasswordService.verifyPassword(password, hashedPassword); - - // Assert - expect(result).toBe(false); - expect(mockBcryptCompare).not.toHaveBeenCalled(); - }); - - it('should return false when bcrypt throws error', async () => { - // Arrange - const password = 'validPassword123!'; - const hashedPassword = '$2b$12$hashed.password.here'; - - mockBcryptCompare.mockRejectedValue(new Error('Bcrypt compare error')); - - // Act - const result = await PasswordService.verifyPassword(password, hashedPassword); - - // Assert - expect(result).toBe(false); - expect(mockBcryptCompare).toHaveBeenCalledWith(password, hashedPassword); - }); - }); - - describe('validatePasswordStrength', () => { - it('should return valid for strong password', () => { - // Arrange - const password = 'StrongPass123!'; - - // Act - const result = PasswordService.validatePasswordStrength(password); - - // Assert - expect(result.isValid).toBe(true); - expect(result.errors).toEqual([]); - }); - - it('should return invalid for short password', () => { - // Arrange - const password = 'Short1!'; - - // Act - const result = PasswordService.validatePasswordStrength(password); - - // Assert - expect(result.isValid).toBe(false); - expect(result.errors).toContain('Password must be at least 8 characters long'); - }); - - it('should return invalid for password without uppercase', () => { - // Arrange - const password = 'lowercase123!'; - - // Act - const result = PasswordService.validatePasswordStrength(password); - - // Assert - expect(result.isValid).toBe(false); - expect(result.errors).toContain('Password must contain at least one uppercase letter'); - }); - - it('should return invalid for password without lowercase', () => { - // Arrange - const password = 'UPPERCASE123!'; - - // Act - const result = PasswordService.validatePasswordStrength(password); - - // Assert - expect(result.isValid).toBe(false); - expect(result.errors).toContain('Password must contain at least one lowercase letter'); - }); - - it('should return invalid for password without numbers', () => { - // Arrange - const password = 'NoNumbers!'; - - // Act - const result = PasswordService.validatePasswordStrength(password); - - // Assert - expect(result.isValid).toBe(false); - expect(result.errors).toContain('Password must contain at least one number'); - }); - - it('should return invalid for password without special characters', () => { - // Arrange - const password = 'NoSpecial123'; - - // Act - const result = PasswordService.validatePasswordStrength(password); - - // Assert - expect(result.isValid).toBe(false); - expect(result.errors).toContain('Password must contain at least one special character'); - }); - - it('should return multiple errors for weak password', () => { - // Arrange - const password = 'weak'; - - // Act - const result = PasswordService.validatePasswordStrength(password); - - // Assert - expect(result.isValid).toBe(false); - expect(result.errors).toHaveLength(4); - expect(result.errors).toContain('Password must be at least 8 characters long'); - expect(result.errors).toContain('Password must contain at least one uppercase letter'); - expect(result.errors).toContain('Password must contain at least one number'); - expect(result.errors).toContain('Password must contain at least one special character'); - }); - - it('should handle empty password', () => { - // Arrange - const password = ''; - - // Act - const result = PasswordService.validatePasswordStrength(password); - - // Assert - expect(result.isValid).toBe(false); - expect(result.errors).toContain('Password must be provided as a string'); - }); - - it('should handle null password', () => { - // Arrange - const password = null as any; - - // Act - const result = PasswordService.validatePasswordStrength(password); - - // Assert - expect(result.isValid).toBe(false); - expect(result.errors).toContain('Password must be provided as a string'); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Services/RedisService.test.ts b/SerpentRace_Backend/tests/Application/Services/RedisService.test.ts deleted file mode 100644 index 4b558575..00000000 --- a/SerpentRace_Backend/tests/Application/Services/RedisService.test.ts +++ /dev/null @@ -1,245 +0,0 @@ -import { RedisService } from '../../../src/Application/Services/RedisService'; -import { logStartup, logError } from '../../../src/Application/Services/Logger'; - -describe('RedisService', () => { - let redisService: RedisService; - - beforeAll(async () => { - redisService = RedisService.getInstance(); - - try { - await redisService.connect(); - } catch (error) { - console.log('Redis not available for testing, skipping Redis tests'); - return; - } - }); - - afterAll(async () => { - if (redisService.isRedisConnected()) { - await redisService.disconnect(); - } - }); - - beforeEach(async () => { - // Skip tests if Redis is not connected - if (!redisService.isRedisConnected()) { - return; - } - - // Clean up test data - const activeChats = await redisService.getAllActiveChats(); - for (const chat of activeChats) { - if (chat.chatId.startsWith('test-')) { - await redisService.removeActiveChat(chat.chatId); - } - } - - await redisService.removeActiveUser('test-user-1'); - await redisService.removeActiveUser('test-user-2'); - }); - - describe('Active Chat Management', () => { - it('should store and retrieve active chats', async () => { - if (!redisService.isRedisConnected()) { - return; - } - - const testChatData = { - chatId: 'test-chat-1', - participants: ['user-1', 'user-2'], - lastActivity: new Date(), - messageCount: 5, - chatType: 'direct' as const, - name: 'Test Chat' - }; - - await redisService.setActiveChat('test-chat-1', testChatData); - const retrieved = await redisService.getActiveChat('test-chat-1'); - - expect(retrieved).toBeDefined(); - expect(retrieved!.chatId).toBe('test-chat-1'); - expect(retrieved!.participants).toEqual(['user-1', 'user-2']); - expect(retrieved!.messageCount).toBe(5); - expect(retrieved!.chatType).toBe('direct'); - expect(retrieved!.name).toBe('Test Chat'); - }); - - it('should return null for non-existent chat', async () => { - if (!redisService.isRedisConnected()) { - return; - } - - const retrieved = await redisService.getActiveChat('non-existent-chat'); - expect(retrieved).toBeNull(); - }); - - it('should remove active chats', async () => { - if (!redisService.isRedisConnected()) { - return; - } - - const testChatData = { - chatId: 'test-chat-2', - participants: ['user-1', 'user-2'], - lastActivity: new Date(), - messageCount: 0, - chatType: 'group' as const - }; - - await redisService.setActiveChat('test-chat-2', testChatData); - let retrieved = await redisService.getActiveChat('test-chat-2'); - expect(retrieved).toBeDefined(); - - await redisService.removeActiveChat('test-chat-2'); - retrieved = await redisService.getActiveChat('test-chat-2'); - expect(retrieved).toBeNull(); - }); - - it('should update chat activity', async () => { - if (!redisService.isRedisConnected()) { - return; - } - - const originalTime = new Date(Date.now() - 60000); // 1 minute ago - const testChatData = { - chatId: 'test-chat-3', - participants: ['user-1', 'user-2'], - lastActivity: originalTime, - messageCount: 5, - chatType: 'direct' as const - }; - - await redisService.setActiveChat('test-chat-3', testChatData); - - // Wait a bit to ensure timestamp difference - await new Promise(resolve => setTimeout(resolve, 10)); - - await redisService.updateChatActivity('test-chat-3', 6); - - const retrieved = await redisService.getActiveChat('test-chat-3'); - expect(retrieved).toBeDefined(); - expect(retrieved!.messageCount).toBe(6); - expect(retrieved!.lastActivity.getTime()).toBeGreaterThan(originalTime.getTime()); - }); - }); - - describe('Active User Management', () => { - it('should store and retrieve active users', async () => { - if (!redisService.isRedisConnected()) { - return; - } - - const testUserData = { - userId: 'test-user-1', - activeChatIds: ['chat-1', 'chat-2'], - lastActivity: new Date(), - isOnline: true - }; - - await redisService.setActiveUser('test-user-1', testUserData); - const retrieved = await redisService.getActiveUser('test-user-1'); - - expect(retrieved).toBeDefined(); - expect(retrieved!.userId).toBe('test-user-1'); - expect(retrieved!.activeChatIds).toEqual(['chat-1', 'chat-2']); - expect(retrieved!.isOnline).toBe(true); - }); - - it('should manage user-chat associations', async () => { - if (!redisService.isRedisConnected()) { - return; - } - - // Add user to chats - await redisService.addUserToChat('test-user-2', 'chat-1'); - await redisService.addUserToChat('test-user-2', 'chat-2'); - - let activeChatIds = await redisService.getUserActiveChats('test-user-2'); - expect(activeChatIds).toContain('chat-1'); - expect(activeChatIds).toContain('chat-2'); - - // Remove user from one chat - await redisService.removeUserFromChat('test-user-2', 'chat-1'); - activeChatIds = await redisService.getUserActiveChats('test-user-2'); - expect(activeChatIds).not.toContain('chat-1'); - expect(activeChatIds).toContain('chat-2'); - }); - }); - - describe('Inactive Chat Cleanup', () => { - it('should identify inactive chats', async () => { - if (!redisService.isRedisConnected()) { - return; - } - - const oldTime = new Date(Date.now() - 2 * 60 * 60 * 1000); // 2 hours ago - const recentTime = new Date(); - - // Create an inactive chat - await redisService.setActiveChat('test-inactive-chat', { - chatId: 'test-inactive-chat', - participants: ['user-1', 'user-2'], - lastActivity: oldTime, - messageCount: 3, - chatType: 'direct' - }); - - // Create an active chat - await redisService.setActiveChat('test-active-chat', { - chatId: 'test-active-chat', - participants: ['user-1', 'user-3'], - lastActivity: recentTime, - messageCount: 1, - chatType: 'direct' - }); - - const inactiveChats = await redisService.getInactiveChats(60); // 60 minutes - expect(inactiveChats).toContain('test-inactive-chat'); - expect(inactiveChats).not.toContain('test-active-chat'); - - // Cleanup - await redisService.removeActiveChat('test-inactive-chat'); - await redisService.removeActiveChat('test-active-chat'); - }); - - it('should cleanup inactive chats', async () => { - if (!redisService.isRedisConnected()) { - return; - } - - const oldTime = new Date(Date.now() - 2 * 60 * 60 * 1000); // 2 hours ago - - await redisService.setActiveChat('test-cleanup-chat', { - chatId: 'test-cleanup-chat', - participants: ['user-1', 'user-2'], - lastActivity: oldTime, - messageCount: 0, - chatType: 'direct' - }); - - const cleanedUp = await redisService.cleanupInactiveChats(60); - expect(cleanedUp).toContain('test-cleanup-chat'); - - // Verify chat was removed - const retrieved = await redisService.getActiveChat('test-cleanup-chat'); - expect(retrieved).toBeNull(); - }); - }); - - describe('Health Check', () => { - it('should ping Redis successfully', async () => { - if (!redisService.isRedisConnected()) { - return; - } - - const pingResult = await redisService.ping(); - expect(pingResult).toBe(true); - }); - - it('should report connection status', () => { - const isConnected = redisService.isRedisConnected(); - expect(typeof isConnected).toBe('boolean'); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Services/TokenService.test.ts b/SerpentRace_Backend/tests/Application/Services/TokenService.test.ts deleted file mode 100644 index e70c1c84..00000000 --- a/SerpentRace_Backend/tests/Application/Services/TokenService.test.ts +++ /dev/null @@ -1,405 +0,0 @@ -import { TokenService } from '../../../src/Application/Services/TokenService'; -import * as crypto from 'crypto'; - -// Mock crypto module -jest.mock('crypto'); - -describe('TokenService', () => { - let mockRandomBytes: jest.Mock; - let mockCreateHash: jest.Mock; - let mockHashUpdate: jest.Mock; - let mockHashDigest: jest.Mock; - let dateSpy: jest.SpyInstance; - - beforeEach(() => { - jest.clearAllMocks(); - - // Restore Date mock if it exists - if (dateSpy) { - dateSpy.mockRestore(); - } - - mockRandomBytes = jest.mocked(crypto.randomBytes); - mockHashUpdate = jest.fn().mockReturnThis(); - mockHashDigest = jest.fn(); - mockCreateHash = jest.fn().mockReturnValue({ - update: mockHashUpdate, - digest: mockHashDigest - }); - - // Mock crypto.createHash properly - jest.mocked(crypto.createHash).mockImplementation(mockCreateHash); - }); - - afterEach(() => { - // Clean up Date mock - if (dateSpy) { - dateSpy.mockRestore(); - dateSpy = undefined as any; - } - }); - - describe('generateSecureToken', () => { - it('should generate a secure token with default length', () => { - // Arrange - const mockBuffer = { - toString: jest.fn().mockReturnValue('abcdef1234567890') - }; - mockRandomBytes.mockReturnValue(mockBuffer as any); - - // Act - const token = TokenService.generateSecureToken(); - - // Assert - expect(token).toBe('abcdef1234567890'); - expect(mockRandomBytes).toHaveBeenCalledWith(32); - expect(mockBuffer.toString).toHaveBeenCalledWith('hex'); - }); - - it('should generate a secure token with custom length', () => { - // Arrange - const mockBuffer = { - toString: jest.fn().mockReturnValue('abcdef') - }; - mockRandomBytes.mockReturnValue(mockBuffer as any); - - // Act - const token = TokenService.generateSecureToken(16); - - // Assert - expect(token).toBe('abcdef'); - expect(mockRandomBytes).toHaveBeenCalledWith(16); - expect(mockBuffer.toString).toHaveBeenCalledWith('hex'); - }); - - it('should handle crypto errors', () => { - // Arrange - mockRandomBytes.mockImplementation(() => { - throw new Error('Crypto error'); - }); - - // Act & Assert - expect(() => TokenService.generateSecureToken()).toThrow('Failed to generate secure token'); - expect(mockRandomBytes).toHaveBeenCalledWith(32); - }); - }); - - describe('generateVerificationToken', () => { - it('should generate verification token with correct expiration', () => { - // Arrange - const mockBuffer = { - toString: jest.fn().mockReturnValue('verification123') - }; - mockRandomBytes.mockReturnValue(mockBuffer as any); - const mockDate = new Date('2023-01-01T12:00:00Z'); - dateSpy = jest.spyOn(global, 'Date').mockImplementation(() => mockDate as any); - - // Act - const result = TokenService.generateVerificationToken(); - - // Assert - expect(result.token).toBe('verification123'); - expect(result.createdAt).toEqual(mockDate); - expect(result.expiresAt).toEqual(new Date('2023-01-02T12:00:00Z')); // 24 hours later - expect(mockRandomBytes).toHaveBeenCalledWith(32); - expect(mockBuffer.toString).toHaveBeenCalledWith('hex'); - }); - - it('should handle token generation errors', () => { - // Arrange - mockRandomBytes.mockImplementation(() => { - throw new Error('Random bytes failed'); - }); - - // Act & Assert - expect(() => TokenService.generateVerificationToken()).toThrow('Failed to generate verification token'); - }); - }); - - describe('generatePasswordResetToken', () => { - it('should generate password reset token with correct expiration', () => { - // Arrange - const mockBuffer = { - toString: jest.fn().mockReturnValue('reset456') - }; - mockRandomBytes.mockReturnValue(mockBuffer as any); - const mockDate = new Date('2023-01-01T12:00:00Z'); - dateSpy = jest.spyOn(global, 'Date').mockImplementation(() => mockDate as any); - - // Act - const result = TokenService.generatePasswordResetToken(); - - // Assert - expect(result.token).toBe('reset456'); - expect(result.createdAt).toEqual(mockDate); - expect(result.expiresAt).toEqual(new Date('2023-01-01T13:00:00Z')); // 1 hour later - expect(mockRandomBytes).toHaveBeenCalledWith(32); - expect(mockBuffer.toString).toHaveBeenCalledWith('hex'); - }); - - it('should handle token generation errors', () => { - // Arrange - mockRandomBytes.mockImplementation(() => { - throw new Error('Random bytes failed'); - }); - - // Act & Assert - expect(() => TokenService.generatePasswordResetToken()).toThrow('Failed to generate password reset token'); - }); - }); - - describe('hashToken', () => { - it('should hash token correctly', async () => { - // Arrange - const token = 'test-token-123'; - const hashedToken = 'hashed-token-result'; - mockHashDigest.mockReturnValue(hashedToken); - - // Act - const result = await TokenService.hashToken(token); - - // Assert - expect(result).toBe(hashedToken); - expect(mockCreateHash).toHaveBeenCalledWith('sha256'); - expect(mockHashUpdate).toHaveBeenCalledWith(token); - expect(mockHashDigest).toHaveBeenCalledWith('hex'); - }); - - it('should handle hashing errors', async () => { - // Arrange - const token = 'test-token-123'; - mockCreateHash.mockImplementation(() => { - throw new Error('Hashing failed'); - }); - - // Act & Assert - await expect(TokenService.hashToken(token)).rejects.toThrow('Failed to hash token'); - }); - }); - - describe('verifyToken', () => { - it('should return true when tokens match', async () => { - // Arrange - const plainToken = 'plain-token'; - const hashedToken = 'expected-hash'; - mockHashDigest.mockReturnValue(hashedToken); - - // Act - const result = await TokenService.verifyToken(plainToken, hashedToken); - - // Assert - expect(result).toBe(true); - expect(mockCreateHash).toHaveBeenCalledWith('sha256'); - expect(mockHashUpdate).toHaveBeenCalledWith(plainToken); - expect(mockHashDigest).toHaveBeenCalledWith('hex'); - }); - - it('should return false when tokens do not match', async () => { - // Arrange - const plainToken = 'plain-token'; - const hashedToken = 'expected-hash'; - const actualHash = 'different-hash'; - mockHashDigest.mockReturnValue(actualHash); - - // Act - const result = await TokenService.verifyToken(plainToken, hashedToken); - - // Assert - expect(result).toBe(false); - expect(mockCreateHash).toHaveBeenCalledWith('sha256'); - expect(mockHashUpdate).toHaveBeenCalledWith(plainToken); - expect(mockHashDigest).toHaveBeenCalledWith('hex'); - }); - - it('should handle verification errors', async () => { - // Arrange - const plainToken = 'plain-token'; - const hashedToken = 'expected-hash'; - mockCreateHash.mockImplementation(() => { - throw new Error('Hash creation failed'); - }); - - // Act & Assert - TokenService.verifyToken catches errors and returns false, doesn't throw - const result = await TokenService.verifyToken(plainToken, hashedToken); - expect(result).toBe(false); - }); - }); - - describe('isTokenExpired', () => { - it('should return false for non-expired token', () => { - // Arrange - const currentTime = new Date('2023-01-01T12:00:00Z'); - const futureDate = new Date('2023-01-01T13:00:00Z'); // 1 hour from now - - dateSpy = jest.spyOn(global, 'Date').mockImplementation(() => currentTime as any); - - // Act - const result = TokenService.isTokenExpired(futureDate); - - // Assert - expect(result).toBe(false); - - // Cleanup - dateSpy.mockRestore(); - }); - - it('should return true for expired token', () => { - // Arrange - const currentTime = new Date('2023-01-01T12:00:00Z'); - const pastDate = new Date('2023-01-01T11:00:00Z'); // 1 hour ago - - dateSpy = jest.spyOn(global, 'Date').mockImplementation(() => currentTime as any); - - // Act - const result = TokenService.isTokenExpired(pastDate); - - // Assert - expect(result).toBe(true); - - // Cleanup - dateSpy.mockRestore(); - }); - - it('should return true for exactly expired token', () => { - // Arrange - const currentTime = new Date('2023-01-01T12:00:00Z'); - const exactlyNow = new Date('2023-01-01T12:00:00Z'); - - dateSpy = jest.spyOn(global, 'Date').mockImplementation(() => currentTime as any); - - // Act - const result = TokenService.isTokenExpired(exactlyNow); - - // Assert - expect(result).toBe(false); // new Date() > expiresAt is false when they're equal - - // Cleanup - dateSpy.mockRestore(); - }); - }); - - describe('generateTokenWithExpiry', () => { - it('should validate token format correctly', () => { - // Arrange - valid hex token with expected length (64 chars for 32 bytes) - const validToken = 'a'.repeat(64); // 64 hex characters - - // Act - const result = TokenService.isValidTokenFormat(validToken); - - // Assert - expect(result).toBe(true); - }); - - it('should reject invalid token format', () => { - // Arrange - const invalidTokens = [ - '', // empty - 'invalid-token-with-dashes', // non-hex characters - 'abc123', // too short - null as any, // null - undefined as any, // undefined - 123 as any // not string - ]; - - invalidTokens.forEach(invalidToken => { - // Act - const result = TokenService.isValidTokenFormat(invalidToken); - - // Assert - expect(result).toBe(false); - }); - }); - }); - - describe('generateVerificationUrl', () => { - it('should generate correct verification URL', () => { - // Arrange - const baseUrl = 'https://example.com'; - const token = 'verification-token-123'; - - // Act - const url = TokenService.generateVerificationUrl(baseUrl, token); - - // Assert - expect(url).toBe('https://example.com/verify-email?token=verification-token-123'); - }); - - it('should handle base URL with trailing slash', () => { - // Arrange - const baseUrl = 'https://example.com/'; - const token = 'verification-token-123'; - - // Act - const url = TokenService.generateVerificationUrl(baseUrl, token); - - // Assert - expect(url).toBe('https://example.com/verify-email?token=verification-token-123'); - }); - - it('should encode special characters in token', () => { - // Arrange - const baseUrl = 'https://example.com'; - const token = 'token+with/special=chars'; - - // Act - const url = TokenService.generateVerificationUrl(baseUrl, token); - - // Assert - expect(url).toContain(encodeURIComponent(token)); - }); - }); - - describe('generatePasswordResetUrl', () => { - it('should generate correct password reset URL', () => { - // Arrange - const baseUrl = 'https://example.com'; - const token = 'reset-token-456'; - - // Act - const url = TokenService.generatePasswordResetUrl(baseUrl, token); - - // Assert - expect(url).toBe('https://example.com/reset-password?token=reset-token-456'); - }); - }); - - describe('getExpirationInfo', () => { - it('should return correct info for non-expired token', () => { - // Arrange - const currentTime = new Date('2023-01-01T12:00:00Z'); - const futureDate = new Date('2023-01-01T14:00:00Z'); // 2 hours from now - - dateSpy = jest.spyOn(global, 'Date').mockImplementation(() => currentTime as any); - - // Act - const result = TokenService.getExpirationInfo(futureDate); - - // Assert - expect(result.expired).toBe(false); - expect(result.timeLeft).toContain('Expires in'); - expect(result.timeLeft).toContain('hour(s)'); - - // Cleanup - dateSpy.mockRestore(); - }); - - it('should return correct info for expired token', () => { - // Arrange - const currentTime = new Date('2023-01-01T12:00:00Z'); - const pastDate = new Date('2023-01-01T11:30:00Z'); // 30 minutes ago - - dateSpy = jest.spyOn(global, 'Date').mockImplementation(() => currentTime as any); - - // Act - const result = TokenService.getExpirationInfo(pastDate); - - // Assert - expect(result.expired).toBe(true); - expect(result.timeLeft).toContain('Expired'); - expect(result.timeLeft).toContain('minute(s) ago'); - - // Cleanup - dateSpy.mockRestore(); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/Services/ValidationMiddleware.test.ts b/SerpentRace_Backend/tests/Application/Services/ValidationMiddleware.test.ts deleted file mode 100644 index 443688cc..00000000 --- a/SerpentRace_Backend/tests/Application/Services/ValidationMiddleware.test.ts +++ /dev/null @@ -1,206 +0,0 @@ -import { ValidationMiddleware } from '../../../src/Application/Services/ValidationMiddleware'; -import { Request, Response, NextFunction } from 'express'; -import { ErrorResponseService } from '../../../src/Application/Services/ErrorResponseService'; - -jest.mock('../../../src/Application/Services/ErrorResponseService'); -jest.mock('../../../src/Application/Services/Logger'); - -describe('ValidationMiddleware', () => { - let req: Partial; - let res: Partial; - let next: NextFunction; - - beforeEach(() => { - req = { - body: {}, - params: {}, - query: {}, - path: '/test' - }; - res = { - status: jest.fn().mockReturnThis(), - json: jest.fn().mockReturnThis() - }; - next = jest.fn(); - jest.clearAllMocks(); - }); - - describe('validateRequiredFields', () => { - it('should pass validation when all required fields are present', () => { - req.body = { username: 'testuser', email: 'test@example.com' }; - - const middleware = ValidationMiddleware.validateRequiredFields(['username', 'email']); - middleware(req as Request, res as Response, next); - - expect(next).toHaveBeenCalledWith(); - expect(ErrorResponseService.sendBadRequest).not.toHaveBeenCalled(); - }); - - it('should fail validation when required fields are missing', () => { - req.body = { username: 'testuser' }; // missing email - - const middleware = ValidationMiddleware.validateRequiredFields(['username', 'email']); - middleware(req as Request, res as Response, next); - - expect(ErrorResponseService.sendBadRequest).toHaveBeenCalledWith( - res, - 'Missing required fields', - { missingFields: ['email'] } - ); - expect(next).not.toHaveBeenCalled(); - }); - - it('should fail validation when fields are empty strings', () => { - req.body = { username: '', email: 'test@example.com' }; - - const middleware = ValidationMiddleware.validateRequiredFields(['username', 'email']); - middleware(req as Request, res as Response, next); - - expect(ErrorResponseService.sendBadRequest).toHaveBeenCalledWith( - res, - 'Missing required fields', - { missingFields: ['username'] } - ); - }); - }); - - describe('validateEmailFormat', () => { - it('should pass validation for valid email', () => { - req.body = { email: 'test@example.com' }; - - const middleware = ValidationMiddleware.validateEmailFormat(['email']); - middleware(req as Request, res as Response, next); - - expect(next).toHaveBeenCalledWith(); - expect(ErrorResponseService.sendBadRequest).not.toHaveBeenCalled(); - }); - - it('should fail validation for invalid email', () => { - req.body = { email: 'invalid-email' }; - - const middleware = ValidationMiddleware.validateEmailFormat(['email']); - middleware(req as Request, res as Response, next); - - expect(ErrorResponseService.sendBadRequest).toHaveBeenCalledWith( - res, - 'Email format validation failed', - { errors: ["Field 'email' must contain a valid email address"] } - ); - expect(next).not.toHaveBeenCalled(); - }); - }); - - describe('validateUUIDFormat', () => { - it('should pass validation for valid UUID', () => { - req.params = { userId: '123e4567-e89b-12d3-a456-426614174000' }; - - const middleware = ValidationMiddleware.validateUUIDFormat(['userId']); - middleware(req as Request, res as Response, next); - - expect(next).toHaveBeenCalledWith(); - expect(ErrorResponseService.sendBadRequest).not.toHaveBeenCalled(); - }); - - it('should fail validation for invalid UUID', () => { - req.params = { userId: 'invalid-uuid' }; - - const middleware = ValidationMiddleware.validateUUIDFormat(['userId']); - middleware(req as Request, res as Response, next); - - expect(ErrorResponseService.sendBadRequest).toHaveBeenCalledWith( - res, - 'UUID format validation failed', - { errors: ["Field 'userId' must contain a valid UUID"] } - ); - expect(next).not.toHaveBeenCalled(); - }); - }); - - describe('validateStringLength', () => { - it('should pass validation for strings within length constraints', () => { - req.body = { username: 'testuser', password: 'password123' }; - - const middleware = ValidationMiddleware.validateStringLength({ - username: { min: 3, max: 20 }, - password: { min: 8, max: 50 } - }); - middleware(req as Request, res as Response, next); - - expect(next).toHaveBeenCalledWith(); - expect(ErrorResponseService.sendBadRequest).not.toHaveBeenCalled(); - }); - - it('should fail validation for strings that are too short', () => { - req.body = { username: 'ab' }; // too short (min 3) - - const middleware = ValidationMiddleware.validateStringLength({ - username: { min: 3, max: 20 } - }); - middleware(req as Request, res as Response, next); - - expect(ErrorResponseService.sendBadRequest).toHaveBeenCalledWith( - res, - 'String length validation failed', - { errors: ["Field 'username' must be at least 3 characters"] } - ); - }); - - it('should fail validation for strings that are too long', () => { - req.body = { username: 'a'.repeat(25) }; // too long (max 20) - - const middleware = ValidationMiddleware.validateStringLength({ - username: { min: 3, max: 20 } - }); - middleware(req as Request, res as Response, next); - - expect(ErrorResponseService.sendBadRequest).toHaveBeenCalledWith( - res, - 'String length validation failed', - { errors: ["Field 'username' must not exceed 20 characters"] } - ); - }); - }); - - describe('combine', () => { - it('should run all validations in sequence and pass if all succeed', (done) => { - req.body = { username: 'testuser', email: 'test@example.com' }; - - const nextSpy = jest.fn(() => { - try { - expect(nextSpy).toHaveBeenCalledWith(); - expect(ErrorResponseService.sendBadRequest).not.toHaveBeenCalled(); - done(); - } catch (error) { - done(error); - } - }); - - const combinedMiddleware = ValidationMiddleware.combine([ - ValidationMiddleware.validateRequiredFields(['username', 'email']), - ValidationMiddleware.validateEmailFormat(['email']), - ValidationMiddleware.validateStringLength({ username: { min: 3, max: 20 } }) - ]); - - combinedMiddleware(req as Request, res as Response, nextSpy); - }); - - it('should stop at first validation failure', () => { - req.body = { username: 'testuser' }; // missing email - - const combinedMiddleware = ValidationMiddleware.combine([ - ValidationMiddleware.validateRequiredFields(['username', 'email']), - ValidationMiddleware.validateEmailFormat(['email']), // this won't run - ValidationMiddleware.validateStringLength({ username: { min: 3, max: 20 } }) // this won't run - ]); - - combinedMiddleware(req as Request, res as Response, next); - - expect(ErrorResponseService.sendBadRequest).toHaveBeenCalledWith( - res, - 'Missing required fields', - { missingFields: ['email'] } - ); - expect(next).not.toHaveBeenCalled(); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/Application/User/commands/UserCommandHandlers.comprehensive.test.ts b/SerpentRace_Backend/tests/Application/User/commands/UserCommandHandlers.comprehensive.test.ts deleted file mode 100644 index 42c92a51..00000000 --- a/SerpentRace_Backend/tests/Application/User/commands/UserCommandHandlers.comprehensive.test.ts +++ /dev/null @@ -1,430 +0,0 @@ -// Comprehensive test coverage for User Command Handlers -import { CreateUserCommand } from '../../../../src/Application/User/commands/CreateUserCommand'; -import { CreateUserCommandHandler } from '../../../../src/Application/User/commands/CreateUserCommandHandler'; -import { LoginCommand } from '../../../../src/Application/User/commands/LoginCommand'; -import { LoginCommandHandler } from '../../../../src/Application/User/commands/LoginCommandHandler'; -import { UpdateUserCommand } from '../../../../src/Application/User/commands/UpdateUserCommand'; -import { UpdateUserCommandHandler } from '../../../../src/Application/User/commands/UpdateUserCommandHandler'; -import { DeactivateUserCommand } from '../../../../src/Application/User/commands/DeactivateUserCommand'; -import { DeactivateUserCommandHandler } from '../../../../src/Application/User/commands/DeactivateUserCommandHandler'; -import { IUserRepository } from '../../../../src/Domain/IRepository/IUserRepository'; -import { IOrganizationRepository } from '../../../../src/Domain/IRepository/IOrganizationRepository'; -import { JWTService } from '../../../../src/Application/Services/JWTService'; -import { PasswordService } from '../../../../src/Application/Services/PasswordService'; -import { UserState } from '../../../../src/Domain/User/UserAggregate'; -import { - createMockUser, - createMockUserRepository, - createMockOrganizationRepository, - createMockJWTService -} from '../../../testUtils'; - -// Mock PasswordService static methods -jest.mock('../../../../src/Application/Services/PasswordService', () => ({ - PasswordService: { - validatePasswordStrength: jest.fn().mockReturnValue({ isValid: true, errors: [] }), - hashPassword: jest.fn().mockResolvedValue('hashed-password'), - verifyPassword: jest.fn().mockResolvedValue(true) - } -})); - -describe('User Command Handlers - Comprehensive Coverage', () => { - describe('CreateUserCommandHandler', () => { - let mockUserRepository: jest.Mocked; - let handler: CreateUserCommandHandler; - - beforeEach(() => { - mockUserRepository = createMockUserRepository(); - handler = new CreateUserCommandHandler(mockUserRepository); - }); - - it('should create a new user successfully', async () => { - // Arrange - const command: CreateUserCommand = { - username: 'testuser', - email: 'test@example.com', - password: 'Password123!', // Strong password - fname: 'Test', - lname: 'User', - type: 'regular' - }; - - const mockUser = createMockUser({ - username: command.username, - email: command.email, - state: UserState.REGISTERED_NOT_VERIFIED - }); - - // CreateUserCommandHandler doesn't check existing users - goes directly to create - mockUserRepository.create.mockResolvedValue(mockUser); - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeDefined(); - // CreateUserCommandHandler doesn't call findByUsername/findByEmail - expect(mockUserRepository.create).toHaveBeenCalled(); - }); - - it('should throw error when username already exists', async () => { - // Arrange - const command: CreateUserCommand = { - username: 'existinguser', - email: 'test@example.com', - password: 'Password123!', // Strong password - fname: 'Test', - lname: 'User', - type: 'regular' - }; - - // Simulate database constraint error for duplicate username - mockUserRepository.create.mockRejectedValue(new Error('duplicate key value violates unique constraint')); - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('User with this username or email already exists'); - }); - - it('should throw error when email already exists', async () => { - // Arrange - const command: CreateUserCommand = { - username: 'testuser', - email: 'existing@example.com', - password: 'Password123!', // Strong password - fname: 'Test', - lname: 'User', - type: 'regular' - }; - - // Simulate database constraint error for duplicate email - mockUserRepository.create.mockRejectedValue(new Error('unique constraint violation')); - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('User with this username or email already exists'); - }); - - it('should handle repository errors', async () => { - // Arrange - const command: CreateUserCommand = { - username: 'testuser', - email: 'test@example.com', - password: 'Password123!', // Strong password - fname: 'Test', - lname: 'User', - type: 'regular' - }; - - mockUserRepository.findByUsername.mockResolvedValue(null); - mockUserRepository.findByEmail.mockResolvedValue(null); - mockUserRepository.create.mockRejectedValue(new Error('Database error')); - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Failed to create user'); - }); - }); - - describe('LoginCommandHandler', () => { - let mockUserRepository: jest.Mocked; - let mockOrgRepository: jest.Mocked; - let mockJwtService: jest.Mocked; - let handler: LoginCommandHandler; - - beforeEach(() => { - mockUserRepository = createMockUserRepository(); - mockOrgRepository = createMockOrganizationRepository(); - mockJwtService = createMockJWTService(); - handler = new LoginCommandHandler(mockUserRepository, mockJwtService, mockOrgRepository); - - // Reset all mocks - jest.clearAllMocks(); - - // Set default PasswordService behavior - const mockPasswordService = PasswordService as jest.Mocked; - mockPasswordService.verifyPassword.mockResolvedValue(true); // Default to valid password - }); - - it('should login user with valid credentials', async () => { - // Arrange - const command: LoginCommand = { - username: 'testuser', - password: 'Password123!' - }; - - const mockUser = createMockUser({ - username: command.username, - state: UserState.VERIFIED_REGULAR - }); - - mockUserRepository.findByUsername.mockResolvedValue(mockUser); - mockJwtService.create.mockReturnValue('jwt-token'); - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeDefined(); - expect(result!.token).toBe('jwt-token'); - expect(mockJwtService.create).toHaveBeenCalled(); - }); - - it('should handle user not found', async () => { - // Arrange - const command: LoginCommand = { - username: 'nonexistent', - password: 'password123' - }; - - mockUserRepository.findByUsername.mockResolvedValue(null); - - // Act & Assert - const result = await handler.execute(command); - expect(result).toBeNull(); - }); - - it('should handle invalid password', async () => { - // Arrange - const command: LoginCommand = { - username: 'testuser', - password: 'wrongpassword' - }; - - const mockUser = createMockUser({ - username: command.username, - password: 'hashedpassword' - }); - - mockUserRepository.findByUsername.mockResolvedValue(mockUser); - - // Mock password verification to return false for wrong password - const mockPasswordService = PasswordService as jest.Mocked; - mockPasswordService.verifyPassword.mockResolvedValue(false); - - // Act & Assert - const result = await handler.execute(command); - expect(result).toBeNull(); - }); - - it('should handle unverified user', async () => { - // Arrange - LoginCommandHandler doesn't reject unverified users, it processes them normally - const command: LoginCommand = { - username: 'testuser', - password: 'Password123!' - }; - - const mockUser = createMockUser({ - username: command.username, - password: 'hashedpassword', - state: UserState.REGISTERED_NOT_VERIFIED - }); - - mockUserRepository.findByUsername.mockResolvedValue(mockUser); - mockJwtService.create.mockReturnValue('jwt-token'); - - // Act - const result = await handler.execute(command); - - // Assert - LoginCommandHandler processes unverified users normally - expect(result).toBeDefined(); - expect(result!.user).toBeDefined(); - expect(result!.token).toBe('jwt-token'); - }); - }); - - describe('UpdateUserCommandHandler', () => { - let mockUserRepository: jest.Mocked; - let handler: UpdateUserCommandHandler; - - beforeEach(() => { - mockUserRepository = createMockUserRepository(); - handler = new UpdateUserCommandHandler(mockUserRepository); - }); - - it('should update user successfully', async () => { - // Arrange - const command: UpdateUserCommand = { - id: 'user-123', - email: 'newemail@example.com' - }; - - const existingUser = createMockUser({ id: command.id }); - const updatedUser = createMockUser({ - id: command.id, - email: command.email - }); - - mockUserRepository.findById.mockResolvedValue(existingUser); - mockUserRepository.update.mockResolvedValue(updatedUser); - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeDefined(); - expect(mockUserRepository.update).toHaveBeenCalledWith(command.id, expect.any(Object)); - }); - - it('should return null when user not found', async () => { - // Arrange - const command: UpdateUserCommand = { - id: 'nonexistent-user', - email: 'newemail@example.com' - }; - - mockUserRepository.update.mockResolvedValue(null); // UpdateUserCommandHandler calls update directly, not findById first - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeNull(); - expect(mockUserRepository.update).toHaveBeenCalledWith(command.id, expect.any(Object)); - }); - - it('should handle partial updates', async () => { - // Arrange - const command: UpdateUserCommand = { - id: 'user-123', - username: 'newusername' - }; - - const existingUser = createMockUser({ id: command.id }); - const updatedUser = createMockUser({ - id: command.id, - username: command.username - }); - - mockUserRepository.findById.mockResolvedValue(existingUser); - mockUserRepository.update.mockResolvedValue(updatedUser); - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBeDefined(); - }); - }); - - describe('DeactivateUserCommandHandler', () => { - let mockUserRepository: jest.Mocked; - let handler: DeactivateUserCommandHandler; - - beforeEach(() => { - mockUserRepository = createMockUserRepository(); - handler = new DeactivateUserCommandHandler(mockUserRepository); - }); - - it('should deactivate user successfully', async () => { - // Arrange - const command: DeactivateUserCommand = { - id: 'user-123' - }; - - const deactivatedUser = createMockUser({ - id: command.id, - state: UserState.DEACTIVATED - }); - - mockUserRepository.deactivate.mockResolvedValue(deactivatedUser); - - // Act - const result = await handler.execute(command); - - // Assert - expect(result).toBe(true); - expect(mockUserRepository.deactivate).toHaveBeenCalledWith(command.id); - }); - - it('should handle repository errors', async () => { - // Arrange - const command: DeactivateUserCommand = { - id: 'user-123' - }; - - mockUserRepository.deactivate.mockRejectedValue(new Error('Deactivation failed')); - - // Act & Assert - await expect(handler.execute(command)).rejects.toThrow('Deactivation failed'); - }); - }); - - describe('Cross-Command Integration Tests', () => { - let mockUserRepository: jest.Mocked; - let mockOrgRepository: jest.Mocked; - let mockJwtService: jest.Mocked; - - beforeEach(() => { - mockUserRepository = createMockUserRepository(); - mockOrgRepository = createMockOrganizationRepository(); - mockJwtService = createMockJWTService(); - }); - - it('should create user and then login', async () => { - // Arrange - const createHandler = new CreateUserCommandHandler(mockUserRepository); - const loginHandler = new LoginCommandHandler(mockUserRepository, mockJwtService, mockOrgRepository); - - const createCommand: CreateUserCommand = { - username: 'testuser', - email: 'test@example.com', - password: 'Password123!', // Strong password - fname: 'Test', - lname: 'User', - type: 'regular' - }; - - const loginCommand: LoginCommand = { - username: 'testuser', - password: 'Password123!' // Strong password - }; - - const mockUser = createMockUser({ - username: createCommand.username, - email: createCommand.email, - state: UserState.VERIFIED_REGULAR - }); - - // Mock create user flow - mockUserRepository.findByUsername.mockResolvedValueOnce(null); - mockUserRepository.findByEmail.mockResolvedValue(null); - mockUserRepository.create.mockResolvedValue(mockUser); - - // Mock login flow - mockUserRepository.findByUsername.mockResolvedValueOnce(mockUser); - mockJwtService.create.mockReturnValue('jwt-token'); - - // Act - const createResult = await createHandler.execute(createCommand); - const loginResult = await loginHandler.execute(loginCommand); - - // Assert - expect(createResult).toBeDefined(); - expect(loginResult).toBeDefined(); - }); - - it('should update user after creation', async () => { - // Arrange - const updateHandler = new UpdateUserCommandHandler(mockUserRepository); - - const updateCommand: UpdateUserCommand = { - id: 'user-123', - email: 'updated@example.com' - }; - - const existingUser = createMockUser({ id: updateCommand.id }); - const updatedUser = createMockUser({ - id: updateCommand.id, - email: updateCommand.email - }); - - mockUserRepository.findById.mockResolvedValue(existingUser); - mockUserRepository.update.mockResolvedValue(updatedUser); - - // Act - const result = await updateHandler.execute(updateCommand); - - // Assert - expect(result).toBeDefined(); - expect(result).not.toBeNull(); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/comprehensive-repository-coverage.test.ts b/SerpentRace_Backend/tests/comprehensive-repository-coverage.test.ts deleted file mode 100644 index 2bbdaa39..00000000 --- a/SerpentRace_Backend/tests/comprehensive-repository-coverage.test.ts +++ /dev/null @@ -1,286 +0,0 @@ -// Comprehensive test coverage for Repository layer -import { IUserRepository } from '../src/Domain/IRepository/IUserRepository'; -import { IDeckRepository } from '../src/Domain/IRepository/IDeckRepository'; -import { IOrganizationRepository } from '../src/Domain/IRepository/IOrganizationRepository'; -import { IContactRepository } from '../src/Domain/IRepository/IContactRepository'; -import { UserAggregate, UserState } from '../src/Domain/User/UserAggregate'; -import { DeckAggregate, Type as DeckType } from '../src/Domain/Deck/DeckAggregate'; -import { OrganizationAggregate } from '../src/Domain/Organization/OrganizationAggregate'; -import { ContactAggregate } from '../src/Domain/Contact/ContactAggregate'; -import { - createMockUser, - createMockDeck, - createMockOrganization, - createMockContact, - createMockUserRepository, - createMockDeckRepository, - createMockOrganizationRepository, - createMockContactRepository -} from './testUtils'; - -describe('Repository Layer - Comprehensive Coverage', () => { - describe('IUserRepository Interface Coverage', () => { - let mockUserRepository: jest.Mocked; - - beforeEach(() => { - mockUserRepository = createMockUserRepository(); - }); - - it('should implement all required methods', () => { - expect(mockUserRepository.create).toBeDefined(); - expect(mockUserRepository.findByPage).toBeDefined(); - expect(mockUserRepository.findByPageIncludingDeleted).toBeDefined(); - expect(mockUserRepository.findById).toBeDefined(); - expect(mockUserRepository.findByIdIncludingDeleted).toBeDefined(); - expect(mockUserRepository.findByUsername).toBeDefined(); - expect(mockUserRepository.findByEmail).toBeDefined(); - expect(mockUserRepository.findByToken).toBeDefined(); - expect(mockUserRepository.search).toBeDefined(); - expect(mockUserRepository.searchIncludingDeleted).toBeDefined(); - expect(mockUserRepository.update).toBeDefined(); - expect(mockUserRepository.delete).toBeDefined(); - expect(mockUserRepository.softDelete).toBeDefined(); - expect(mockUserRepository.deactivate).toBeDefined(); - }); - - it('should handle user creation', async () => { - const userData = { username: 'testuser', email: 'test@example.com' }; - const mockUser = createMockUser(userData); - mockUserRepository.create.mockResolvedValue(mockUser); - - const result = await mockUserRepository.create(userData); - expect(result).toEqual(mockUser); - expect(mockUserRepository.create).toHaveBeenCalledWith(userData); - }); - - it('should handle paginated user retrieval', async () => { - const mockUsers = [createMockUser(), createMockUser({ id: 'user2' })]; - mockUserRepository.findByPage.mockResolvedValue({ users: mockUsers, totalCount: 2 }); - - const result = await mockUserRepository.findByPage(0, 10); - expect(result.users).toHaveLength(2); - expect(result.totalCount).toBe(2); - }); - - it('should handle user search operations', async () => { - const mockUsers = [createMockUser({ username: 'searchtest' })]; - mockUserRepository.search.mockResolvedValue({ users: mockUsers, totalCount: 1 }); - - const result = await mockUserRepository.search('searchtest'); - expect(result.users).toHaveLength(1); - expect(result.users[0].username).toBe('searchtest'); - }); - - it('should handle user state transitions', async () => { - const mockUser = createMockUser({ state: UserState.VERIFIED_REGULAR }); - mockUserRepository.deactivate.mockResolvedValue(mockUser); - - const result = await mockUserRepository.deactivate('user-id'); - expect(result).toEqual(mockUser); - }); - }); - - describe('IDeckRepository Interface Coverage', () => { - let mockDeckRepository: jest.Mocked; - - beforeEach(() => { - mockDeckRepository = createMockDeckRepository(); - }); - - it('should implement all required methods including new ones', () => { - expect(mockDeckRepository.create).toBeDefined(); - expect(mockDeckRepository.findByPage).toBeDefined(); - expect(mockDeckRepository.findByPageIncludingDeleted).toBeDefined(); - expect(mockDeckRepository.findById).toBeDefined(); - expect(mockDeckRepository.findByIdIncludingDeleted).toBeDefined(); - expect(mockDeckRepository.search).toBeDefined(); - expect(mockDeckRepository.searchIncludingDeleted).toBeDefined(); - expect(mockDeckRepository.update).toBeDefined(); - expect(mockDeckRepository.delete).toBeDefined(); - expect(mockDeckRepository.softDelete).toBeDefined(); - expect(mockDeckRepository.countActiveByUserId).toBeDefined(); - expect(mockDeckRepository.countOrganizationalByUserId).toBeDefined(); - expect(mockDeckRepository.findFilteredDecks).toBeDefined(); - }); - - it('should handle deck counting operations', async () => { - mockDeckRepository.countActiveByUserId.mockResolvedValue(5); - mockDeckRepository.countOrganizationalByUserId.mockResolvedValue(3); - - const activeCount = await mockDeckRepository.countActiveByUserId('user-id'); - const orgCount = await mockDeckRepository.countOrganizationalByUserId('user-id'); - - expect(activeCount).toBe(5); - expect(orgCount).toBe(3); - }); - - it('should handle filtered deck retrieval', async () => { - const mockDecks = [createMockDeck(), createMockDeck({ id: 'deck2' })]; - mockDeckRepository.findFilteredDecks.mockResolvedValue({ decks: mockDecks, totalCount: 2 }); - - const result = await mockDeckRepository.findFilteredDecks('user-id', 'org-id', false, 0, 10); - expect(result.decks).toHaveLength(2); - expect(result.totalCount).toBe(2); - }); - - it('should handle different deck types', async () => { - const jokerDeck = createMockDeck({ type: DeckType.JOKER }); - const luckDeck = createMockDeck({ type: DeckType.LUCK }); - const questionDeck = createMockDeck({ type: DeckType.QUESTION }); - - mockDeckRepository.create.mockResolvedValueOnce(jokerDeck); - mockDeckRepository.create.mockResolvedValueOnce(luckDeck); - mockDeckRepository.create.mockResolvedValueOnce(questionDeck); - - const result1 = await mockDeckRepository.create({ type: DeckType.JOKER }); - const result2 = await mockDeckRepository.create({ type: DeckType.LUCK }); - const result3 = await mockDeckRepository.create({ type: DeckType.QUESTION }); - - expect(result1.type).toBe(DeckType.JOKER); - expect(result2.type).toBe(DeckType.LUCK); - expect(result3.type).toBe(DeckType.QUESTION); - }); - }); - - describe('IOrganizationRepository Interface Coverage', () => { - let mockOrgRepository: jest.Mocked; - - beforeEach(() => { - mockOrgRepository = createMockOrganizationRepository(); - }); - - it('should implement all required methods', () => { - expect(mockOrgRepository.create).toBeDefined(); - expect(mockOrgRepository.findByPage).toBeDefined(); - expect(mockOrgRepository.findByPageIncludingDeleted).toBeDefined(); - expect(mockOrgRepository.findById).toBeDefined(); - expect(mockOrgRepository.findByIdIncludingDeleted).toBeDefined(); - expect(mockOrgRepository.search).toBeDefined(); - expect(mockOrgRepository.searchIncludingDeleted).toBeDefined(); - expect(mockOrgRepository.update).toBeDefined(); - expect(mockOrgRepository.delete).toBeDefined(); - expect(mockOrgRepository.softDelete).toBeDefined(); - }); - - it('should handle organization CRUD operations', async () => { - const orgData = { name: 'Test Org', contactemail: 'test@org.com' }; - const mockOrg = createMockOrganization(orgData); - - mockOrgRepository.create.mockResolvedValue(mockOrg); - mockOrgRepository.findById.mockResolvedValue(mockOrg); - mockOrgRepository.update.mockResolvedValue(mockOrg); - mockOrgRepository.softDelete.mockResolvedValue(mockOrg); - - const created = await mockOrgRepository.create(orgData); - const found = await mockOrgRepository.findById('org-id'); - const updated = await mockOrgRepository.update('org-id', { name: 'Updated Org' }); - const deleted = await mockOrgRepository.softDelete('org-id'); - - expect(created.name).toBe('Test Org'); - expect(found).toEqual(mockOrg); - expect(updated).toEqual(mockOrg); - expect(deleted).toEqual(mockOrg); - }); - }); - - describe('IContactRepository Interface Coverage', () => { - let mockContactRepository: jest.Mocked; - - beforeEach(() => { - mockContactRepository = createMockContactRepository(); - }); - - it('should implement all required methods', () => { - expect(mockContactRepository.create).toBeDefined(); - expect(mockContactRepository.findById).toBeDefined(); - expect(mockContactRepository.findByPage).toBeDefined(); - expect(mockContactRepository.findByPageIncludingDeleted).toBeDefined(); - expect(mockContactRepository.findByIdIncludingDeleted).toBeDefined(); - expect(mockContactRepository.search).toBeDefined(); - expect(mockContactRepository.searchIncludingDeleted).toBeDefined(); - expect(mockContactRepository.update).toBeDefined(); - expect(mockContactRepository.delete).toBeDefined(); - expect(mockContactRepository.softDelete).toBeDefined(); - }); - - it('should handle contact search operations', async () => { - const mockContacts = [createMockContact({ email: 'test@example.com' })]; - mockContactRepository.search.mockResolvedValue(mockContacts); - mockContactRepository.searchIncludingDeleted.mockResolvedValue(mockContacts); - - const activeResults = await mockContactRepository.search('test'); - const allResults = await mockContactRepository.searchIncludingDeleted('test'); - - expect(activeResults).toHaveLength(1); - expect(allResults).toHaveLength(1); - }); - - it('should handle contact lifecycle', async () => { - const contactData = { email: 'user@example.com', message: 'Help Request' }; - const mockContact = createMockContact(contactData); - - mockContactRepository.create.mockResolvedValue(mockContact); - mockContactRepository.findById.mockResolvedValue(mockContact); - mockContactRepository.findByIdIncludingDeleted.mockResolvedValue(mockContact); - - const created = await mockContactRepository.create(contactData); - const found = await mockContactRepository.findById('contact-id'); - const foundWithDeleted = await mockContactRepository.findByIdIncludingDeleted('contact-id'); - - expect(created.email).toBe('user@example.com'); - expect(found).toEqual(mockContact); - expect(foundWithDeleted).toEqual(mockContact); - }); - }); - - describe('Cross-Repository Integration Tests', () => { - let userRepo: jest.Mocked; - let deckRepo: jest.Mocked; - let orgRepo: jest.Mocked; - - beforeEach(() => { - userRepo = createMockUserRepository(); - deckRepo = createMockDeckRepository(); - orgRepo = createMockOrganizationRepository(); - }); - - it('should simulate user-deck relationship operations', async () => { - const mockUser = createMockUser({ id: 'user-123' }); - const mockDecks = [ - createMockDeck({ userid: 'user-123', name: 'Deck 1' }), - createMockDeck({ userid: 'user-123', name: 'Deck 2' }) - ]; - - userRepo.findById.mockResolvedValue(mockUser); - deckRepo.findFilteredDecks.mockResolvedValue({ decks: mockDecks, totalCount: 2 }); - deckRepo.countActiveByUserId.mockResolvedValue(2); - - const user = await userRepo.findById('user-123'); - const userDecks = await deckRepo.findFilteredDecks('user-123'); - const deckCount = await deckRepo.countActiveByUserId('user-123'); - - expect(user).toBeDefined(); - expect(userDecks.decks).toHaveLength(2); - expect(deckCount).toBe(2); - expect(userDecks.decks.every(deck => deck.userid === 'user-123')).toBe(true); - }); - - it('should simulate organization-user relationship operations', async () => { - const mockOrg = createMockOrganization({ id: 'org-123', name: 'Test Organization' }); - const mockUsers = [ - createMockUser({ orgid: 'org-123' }), - createMockUser({ orgid: 'org-123', id: 'user-2' }) - ]; - - orgRepo.findById.mockResolvedValue(mockOrg); - userRepo.findByPage.mockResolvedValue({ users: mockUsers, totalCount: 2 }); - - const org = await orgRepo.findById('org-123'); - const orgUsers = await userRepo.findByPage(0, 10); - - expect(org).toBeDefined(); - expect(orgUsers.users).toHaveLength(2); - expect(orgUsers.users.every(user => user.orgid === 'org-123')).toBe(true); - }); - }); -}); diff --git a/SerpentRace_Backend/tests/jest.setup.ts b/SerpentRace_Backend/tests/jest.setup.ts deleted file mode 100644 index 9484f3b9..00000000 --- a/SerpentRace_Backend/tests/jest.setup.ts +++ /dev/null @@ -1,2 +0,0 @@ -// Set the NODE_ENV to test for all Jest tests -process.env.NODE_ENV = 'test'; diff --git a/SerpentRace_Backend/tests/setup.ts b/SerpentRace_Backend/tests/setup.ts deleted file mode 100644 index 7cf900aa..00000000 --- a/SerpentRace_Backend/tests/setup.ts +++ /dev/null @@ -1,26 +0,0 @@ -// Jest test setup file -import { jest } from '@jest/globals'; -import { LoggingService } from '../src/Application/Services/LoggingService'; - -// Mock environment variables -process.env.NODE_ENV = 'test'; -process.env.JWT_SECRET = 'test-jwt-secret'; -process.env.EMAIL_HOST = 'test.smtp.com'; -process.env.EMAIL_PORT = '587'; -process.env.EMAIL_USER = 'test@example.com'; -process.env.EMAIL_PASS = 'testpass'; -process.env.EMAIL_FROM = 'test@example.com'; -process.env.APP_BASE_URL = 'http://localhost:3000'; - -// Global test timeout -jest.setTimeout(10000); - -// Global cleanup to prevent Jest from hanging -afterAll(async () => { - try { - await LoggingService.getInstance().shutdown(); - } catch (error) { - // Ignore cleanup errors in tests - console.log('Test cleanup completed'); - } -}); diff --git a/SerpentRace_Backend/tests/testUtils.ts b/SerpentRace_Backend/tests/testUtils.ts deleted file mode 100644 index 4f759a44..00000000 --- a/SerpentRace_Backend/tests/testUtils.ts +++ /dev/null @@ -1,170 +0,0 @@ -import { UserAggregate, UserState } from '../src/Domain/User/UserAggregate'; -import { OrganizationAggregate, OrganizationState } from '../src/Domain/Organization/OrganizationAggregate'; -import { DeckAggregate, State as DeckState, Type as DeckType, CType } from '../src/Domain/Deck/DeckAggregate'; -import { ContactAggregate, ContactState, ContactType } from '../src/Domain/Contact/ContactAggregate'; -import { IUserRepository } from '../src/Domain/IRepository/IUserRepository'; -import { IOrganizationRepository } from '../src/Domain/IRepository/IOrganizationRepository'; -import { IDeckRepository } from '../src/Domain/IRepository/IDeckRepository'; -import { IContactRepository } from '../src/Domain/IRepository/IContactRepository'; - -export const createMockUser = (overrides: Partial = {}): UserAggregate => ({ - id: '123e4567-e89b-12d3-a456-426614174000', - username: 'testuser', - email: 'test@example.com', - password: 'hashedPassword', - fname: 'Test', - lname: 'User', - orgid: null, - token: null, - TokenExpires: null, - phone: null, - state: UserState.REGISTERED_NOT_VERIFIED, - regdate: new Date('2025-01-01'), - updateDate: new Date('2025-01-01'), - Orglogindate: null, - get isAdmin() { return this.state === UserState.ADMIN; }, - ...overrides -}); - -export const createMockOrganization = (overrides: Partial = {}): OrganizationAggregate => ({ - id: '123e4567-e89b-12d3-a456-426614174001', - name: 'Test Organization', - contactfname: 'John', - contactlname: 'Doe', - contactphone: '+1234567890', - contactemail: 'contact@testorg.com', - state: OrganizationState.ACTIVE, - regdate: new Date('2025-01-01'), - updateDate: new Date('2025-01-01'), - url: null, - userinorg: 0, - maxOrganizationalDecks: 10, - users: [], - ...overrides -}); - -export const createMockDeck = (overrides: Partial = {}): DeckAggregate => ({ - id: '123e4567-e89b-12d3-a456-426614174002', - name: 'Test Deck', - type: DeckType.JOKER, - userid: '123e4567-e89b-12d3-a456-426614174000', - creationdate: new Date('2025-01-01'), - cards: [], - playedNumber: 0, - ctype: CType.PUBLIC, - updateDate: new Date('2025-01-01'), - state: DeckState.ACTIVE, - organization: null, - user: null, - isEditable: jest.fn().mockReturnValue(true), - ...overrides -}); - -export const createMockContact = (overrides: Partial = {}): ContactAggregate => ({ - id: '123e4567-e89b-12d3-a456-426614174003', - name: 'John Doe', - email: 'john.doe@example.com', - userid: '123e4567-e89b-12d3-a456-426614174000', - type: ContactType.QUESTION, - txt: 'This is a test contact message.', - state: ContactState.ACTIVE, - createDate: new Date('2025-01-01'), - updateDate: new Date('2025-01-01'), - adminResponse: null, - responseDate: null, - respondedBy: null, - ...overrides -}); - -export const createMockDate = () => new Date('2025-01-01T00:00:00Z'); - -// Mock Repository Factory Functions -export const createMockUserRepository = (): jest.Mocked => ({ - create: jest.fn(), - findByPage: jest.fn(), - findByPageIncludingDeleted: jest.fn(), - findById: jest.fn(), - findByIdIncludingDeleted: jest.fn(), - findByUsername: jest.fn(), - findByEmail: jest.fn(), - findByToken: jest.fn(), - search: jest.fn(), - searchIncludingDeleted: jest.fn(), - update: jest.fn(), - delete: jest.fn(), - softDelete: jest.fn(), - deactivate: jest.fn(), - activate: jest.fn(), -} as jest.Mocked); - -export const createMockOrganizationRepository = (): jest.Mocked => ({ - create: jest.fn(), - findByPage: jest.fn(), - findByPageIncludingDeleted: jest.fn(), - findById: jest.fn(), - findByIdIncludingDeleted: jest.fn(), - search: jest.fn(), - searchIncludingDeleted: jest.fn(), - update: jest.fn(), - delete: jest.fn(), - softDelete: jest.fn(), -} as jest.Mocked); - -export const createMockDeckRepository = (): jest.Mocked => ({ - create: jest.fn(), - findByPage: jest.fn(), - findByPageIncludingDeleted: jest.fn(), - findById: jest.fn(), - findByIdIncludingDeleted: jest.fn(), - search: jest.fn(), - searchIncludingDeleted: jest.fn(), - update: jest.fn(), - delete: jest.fn(), - softDelete: jest.fn(), - countActiveByUserId: jest.fn(), - countOrganizationalByUserId: jest.fn(), - findFilteredDecks: jest.fn(), -} as jest.Mocked); - -export const createMockContactRepository = (): jest.Mocked => ({ - create: jest.fn(), - findById: jest.fn(), - findByPage: jest.fn(), - findByPageIncludingDeleted: jest.fn(), - findByIdIncludingDeleted: jest.fn(), - search: jest.fn(), - searchIncludingDeleted: jest.fn(), - update: jest.fn(), - delete: jest.fn(), - softDelete: jest.fn(), -} as jest.Mocked); - -export const createMockJWTService = () => ({ - create: jest.fn(), - verify: jest.fn(), - shouldRefreshToken: jest.fn(), - parseDuration: jest.fn(), -} as any); - -export const createMockTokenService = () => ({ - generateSecureToken: jest.fn(), - generateVerificationToken: jest.fn(), - generatePasswordResetToken: jest.fn(), - isTokenExpired: jest.fn(), - validateToken: jest.fn(), -} as any); - -export const createMockEmailService = () => ({ - sendEmail: jest.fn(), - sendVerificationEmail: jest.fn(), - sendPasswordResetEmail: jest.fn(), - sendContactResponseEmail: jest.fn(), - loadTemplate: jest.fn(), -} as any); - -export const createMockPasswordService = () => ({ - hashPassword: jest.fn(), - verifyPassword: jest.fn(), - validatePasswordStrength: jest.fn(), - generateRandomPassword: jest.fn(), -} as any); diff --git a/SerpentRace_Backend/tsconfig.json b/SerpentRace_Backend/tsconfig.json deleted file mode 100644 index e3af7671..00000000 --- a/SerpentRace_Backend/tsconfig.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "compilerOptions": { - /* Visit https://aka.ms/tsconfig to read more about this file */ - - /* Projects */ - // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ - "target": "ES2020", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "libReplacement": true, /* Enable lib replacement. */ - "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ - "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ - // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ - - /* Modules */ - "module": "commonjs", /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ - // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ - // "rewriteRelativeImportExtensions": true, /* Rewrite '.ts', '.tsx', '.mts', and '.cts' file extensions in relative import paths to their JavaScript equivalent in output files. */ - // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ - // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ - // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ - // "noUncheckedSideEffectImports": true, /* Check side effect imports. */ - // "resolveJsonModule": true, /* Enable importing .json files. */ - // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ - // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - - /* Emit */ - "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ - "outDir": "./dist", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ - // "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */ - // "erasableSyntaxOnly": true, /* Do not allow runtime constructs that are not part of ECMAScript. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - - /* Type Checking */ - "strict": true, /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ - // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */ - // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ - // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */ - }, - "include": [ - "src/**/*" - ], - "exclude": [ - "node_modules", - "dist" - ] -} \ No newline at end of file diff --git a/SerpentRace_Docker/.env.dev b/SerpentRace_Docker/.env.dev deleted file mode 100644 index 5621c2a8..00000000 --- a/SerpentRace_Docker/.env.dev +++ /dev/null @@ -1,55 +0,0 @@ -# ============================================== -# SerpentRace Backend Environment Configuration -# ============================================== -# Copy this file to .env and fill in your values - -# APPLICATION CONFIGURATION -NODE_ENV=development -PORT=3000 -APP_BASE_URL=http://localhost:3000 -FRONTEND_URL=http://localhost:5173 - -# DATABASE CONFIGURATION (PostgreSQL) -DB_HOST=postgres -DB_PORT=5432 -DB_NAME=serpentrace -DB_USERNAME=postgres -DB_PASSWORD=postgres - -# REDIS CONFIGURATION -REDIS_HOST=redis -REDIS_PORT=6379 -REDIS_URL=redis://redis:6379 - -# MINIO CONFIGURATION -MINIO_ENDPOINT=minio -MINIO_PORT=9000 -MINIO_ACCESS_KEY=serpentrace -MINIO_SECRET_KEY=serpentrace123! -MINIO_USE_SSL=false -MINIO_BUCKET_NAME=serpentrace-logs - -# JWT CONFIGURATION -JWT_SECRET=your_super_secret_jwt_key_change_in_production -JWT_EXPIRY=86400 -JWT_EXPIRATION=24h -JWT_REFRESH_EXPIRATION=7d -GAME_TOKEN_EXPIRY=86400 - -# EMAIL SERVICE CONFIGURATION -EMAIL_HOST=mail.serpentrace.hu -EMAIL_PORT=465 -EMAIL_SECURE=true -EMAIL_USER=noreply@serpentrace.hu -EMAIL_PASS=ZUx720ece&Cin&F{ -EMAIL_FROM=noreply@serpentrace.hu - -# CHAT SYSTEM CONFIGURATION -CHAT_INACTIVITY_TIMEOUT_MINUTES=30 -CHAT_MAX_MESSAGES_PER_USER=100 -CHAT_MESSAGE_CLEANUP_WEEKS=4 - -# GAME CONFIGURATION -MAX_SPECIAL_FIELDS_PERCENTAGE=67 -MAX_GENERATION_TIME_SECONDS=20 -GENERATION_ERROR_TOLERANCE=15 diff --git a/SerpentRace_Docker/.env.example b/SerpentRace_Docker/.env.example deleted file mode 100644 index a1e8afbf..00000000 --- a/SerpentRace_Docker/.env.example +++ /dev/null @@ -1,222 +0,0 @@ -# ============================================== -# SerpentRace Backend Environment Configuration -# ============================================== -# Copy this file to .env and fill in your values -# This file contains all environment variables used by the backend - -# ============================================== -# APPLICATION CONFIGURATION -# ============================================== - -# Node.js environment (development, production, test) -NODE_ENV=development - -# Server port number -PORT=3000 - -# Base URL for the application (used for email links, etc.) -APP_BASE_URL=http://localhost:3000 - -# ============================================== -# DATABASE CONFIGURATION (PostgreSQL) -# ============================================== - -# Database connection details -DB_HOST=localhost -DB_PORT=5432 -DB_NAME=serpentrace -DB_USERNAME=postgres -DB_PASSWORD=your_db_password - -# Database URL (alternative to individual settings) -# DATABASE_URL=postgresql://username:password@localhost:5432/serpentrace - -# ============================================== -# REDIS CONFIGURATION -# ============================================== - -# Redis connection details (for caching and sessions) -REDIS_HOST=localhost -REDIS_PORT=6379 - -# Redis URL (alternative to individual settings) -REDIS_URL=redis://localhost:6379 - -# Redis password (if required) -# REDIS_PASSWORD=your_redis_password - -# ============================================== -# JWT (JSON Web Token) CONFIGURATION -# ============================================== - -# Secret key for JWT signing (REQUIRED - use a strong, random key in production) -JWT_SECRET=your_super_secret_jwt_key_change_in_production - -# JWT token expiration time -# Can be specified in seconds (e.g., 86400) or time format (e.g., 24h, 7d, 30m) -JWT_EXPIRY=86400 -# Alternative format -JWT_EXPIRATION=24h - -# JWT refresh token expiration (for future use) -JWT_REFRESH_EXPIRATION=7d - -# Game token expiration (for game session tokens) -GAME_TOKEN_EXPIRY=86400 - -# ============================================== -# EMAIL SERVICE CONFIGURATION (SMTP) -# ============================================== - -# SMTP server configuration -EMAIL_HOST=smtp.gmail.com -EMAIL_PORT=587 -EMAIL_SECURE=false - -# Email authentication -EMAIL_USER=your_email@domain.com -EMAIL_PASS=your_email_password - -# From address for outgoing emails -EMAIL_FROM=noreply@serpentrace.com - -# ============================================== -# CHAT SYSTEM CONFIGURATION -# ============================================== - -# Chat inactivity timeout (in minutes) -CHAT_INACTIVITY_TIMEOUT_MINUTES=30 - -# Maximum messages per user per session -CHAT_MAX_MESSAGES_PER_USER=100 - -# Cleanup old messages after X weeks -CHAT_MESSAGE_CLEANUP_WEEKS=4 - -# ============================================== -# GAME CONFIGURATION -# ============================================== - -# Board generation settings -MAX_SPECIAL_FIELDS_PERCENTAGE=67 -MAX_GENERATION_TIME_SECONDS=20 -GENERATION_ERROR_TOLERANCE=15 - -# ============================================== -# MINIO/S3 CONFIGURATION (File Storage) -# ============================================== - -# MinIO server configuration (for file uploads) -MINIO_ENDPOINT=localhost -MINIO_PORT=9000 -MINIO_ACCESS_KEY=serpentrace -MINIO_SECRET_KEY=serpentrace123! -MINIO_USE_SSL=false - -# S3 bucket name (if using S3 instead of MinIO) -# S3_BUCKET_NAME=serpentrace-files - -# ============================================== -# LOGGING CONFIGURATION -# ============================================== - -# Log level (error, warn, info, debug) -LOG_LEVEL=info - -# Log file retention (in days) -LOG_RETENTION_DAYS=30 - -# ============================================== -# SECURITY CONFIGURATION -# ============================================== - -# API rate limiting (requests per minute per IP) -RATE_LIMIT_RPM=60 - -# Maximum file upload size (in MB) -MAX_UPLOAD_SIZE_MB=10 - -# CORS allowed origins (comma-separated) -CORS_ORIGINS=http://localhost:3000,http://localhost:3001,http://localhost:8080 - -# ============================================== -# ADMIN CONFIGURATION -# ============================================== - -# Admin bypass settings -ADMIN_BYPASS_ENABLED=true - -# Default admin user (for development only) -# ADMIN_DEFAULT_EMAIL=admin@serpentrace.com -# ADMIN_DEFAULT_PASSWORD=change_this_password - -# ============================================== -# MONITORING & HEALTH CHECKS -# ============================================== - -# Health check endpoint timeout (in milliseconds) -HEALTH_CHECK_TIMEOUT=5000 - -# Database connection pool settings -DB_CONNECTION_POOL_MIN=2 -DB_CONNECTION_POOL_MAX=10 - -# ============================================== -# DEVELOPMENT ONLY SETTINGS -# ============================================== -# These settings should only be used in development - -# Enable detailed SQL logging -DB_LOGGING=true - -# Enable debug mode for various services -DEBUG_MODE=false - -# Disable email sending in development (logs emails instead) -EMAIL_DEBUG_MODE=true - -# ============================================== -# PRODUCTION ONLY SETTINGS -# ============================================== -# These settings are typically used only in production - -# Enable HTTPS (for production) -# HTTPS_ENABLED=true -# SSL_CERT_PATH=/path/to/cert.pem -# SSL_KEY_PATH=/path/to/key.pem - -# Sentry configuration (for error tracking) -# SENTRY_DSN=https://your-sentry-dsn@sentry.io/project-id - -# New Relic configuration (for performance monitoring) -# NEW_RELIC_LICENSE_KEY=your_new_relic_license_key -# NEW_RELIC_APP_NAME=SerpentRace Backend - -# ============================================== -# EXTERNAL API KEYS (Optional) -# ============================================== - -# Third-party service API keys (if used) -# ANALYTICS_API_KEY=your_analytics_key -# PAYMENT_API_KEY=your_payment_processor_key - -# ============================================== -# NOTES & SECURITY WARNINGS -# ============================================== - -# SECURITY NOTES: -# - Never commit .env files to version control -# - Use strong, unique passwords and keys -# - Regularly rotate JWT secrets and API keys -# - Use environment-specific values for each deployment - -# REQUIRED VARIABLES: -# The following variables are required for the application to start: -# - NODE_ENV -# - DB_HOST, DB_PORT, DB_NAME, DB_USERNAME, DB_PASSWORD -# - REDIS_HOST, REDIS_PORT -# - JWT_SECRET -# - EMAIL_HOST, EMAIL_PORT, EMAIL_USER, EMAIL_PASS - -# OPTIONAL VARIABLES: -# All other variables have sensible defaults and are optional diff --git a/SerpentRace_Docker/.env.prod b/SerpentRace_Docker/.env.prod deleted file mode 100644 index 5b578f34..00000000 --- a/SerpentRace_Docker/.env.prod +++ /dev/null @@ -1,55 +0,0 @@ -# Production Environment Variables - -# Production settings -NODE_ENV=production - -#Backend -# Database -DB_HOST=localhost -DB_PORT=5432 -DB_NAME=serpentrace -DB_USERNAME=postgres -DB_PASSWORD=serpentrace_secure_password_2024! - -# PostgreSQL Database (for docker-compose) -POSTGRES_PASSWORD=serpentrace_secure_password_2024! - -# Redis -REDIS_URL=redis://localhost:6379 -REDIS_HOST=localhost -REDIS_PORT=6379 -REDIS_PASSWORD= - -# JWT - Use JWT_EXPIRY (seconds) or JWT_EXPIRATION (duration format like 24h, 7d) -JWT_SECRET=serpentrace_super_secure_jwt_secret_key_2024_production! -JWT_EXPIRY=86400 -JWT_EXPIRATION=24h -JWT_REFRESH_EXPIRATION=7d - -# Email -EMAIL_HOST=smtp.example.com -EMAIL_PORT=587 -EMAIL_SECURE=false -EMAIL_USER=your_email@example.com -EMAIL_PASS=your_email_password -EMAIL_FROM="SerpentRace " - -# MinIO Object Storage -MINIO_ENDPOINT=localhost -MINIO_PORT=9000 -MINIO_USE_SSL=false -MINIO_ACCESS_KEY=serpentrace_minio_admin -MINIO_SECRET_KEY=serpentrace_minio_secret_key_2024! -MINIO_BUCKET_NAME=serpentrace-logs - -# Application -APP_BASE_URL=http://localhost:3000 -PORT=3000 - -# Chat Limits -CHAT_INACTIVITY_TIMEOUT_MINUTES=30 -CHAT_MAX_MESSAGES_PER_USER=100 -CHAT_MESSAGE_CLEANUP_WEEKS=4 - -# Logging -MAX_LOGS_PER_FILE=10000 diff --git a/SerpentRace_Docker/.env.server b/SerpentRace_Docker/.env.server deleted file mode 100644 index 5b578f34..00000000 --- a/SerpentRace_Docker/.env.server +++ /dev/null @@ -1,55 +0,0 @@ -# Production Environment Variables - -# Production settings -NODE_ENV=production - -#Backend -# Database -DB_HOST=localhost -DB_PORT=5432 -DB_NAME=serpentrace -DB_USERNAME=postgres -DB_PASSWORD=serpentrace_secure_password_2024! - -# PostgreSQL Database (for docker-compose) -POSTGRES_PASSWORD=serpentrace_secure_password_2024! - -# Redis -REDIS_URL=redis://localhost:6379 -REDIS_HOST=localhost -REDIS_PORT=6379 -REDIS_PASSWORD= - -# JWT - Use JWT_EXPIRY (seconds) or JWT_EXPIRATION (duration format like 24h, 7d) -JWT_SECRET=serpentrace_super_secure_jwt_secret_key_2024_production! -JWT_EXPIRY=86400 -JWT_EXPIRATION=24h -JWT_REFRESH_EXPIRATION=7d - -# Email -EMAIL_HOST=smtp.example.com -EMAIL_PORT=587 -EMAIL_SECURE=false -EMAIL_USER=your_email@example.com -EMAIL_PASS=your_email_password -EMAIL_FROM="SerpentRace " - -# MinIO Object Storage -MINIO_ENDPOINT=localhost -MINIO_PORT=9000 -MINIO_USE_SSL=false -MINIO_ACCESS_KEY=serpentrace_minio_admin -MINIO_SECRET_KEY=serpentrace_minio_secret_key_2024! -MINIO_BUCKET_NAME=serpentrace-logs - -# Application -APP_BASE_URL=http://localhost:3000 -PORT=3000 - -# Chat Limits -CHAT_INACTIVITY_TIMEOUT_MINUTES=30 -CHAT_MAX_MESSAGES_PER_USER=100 -CHAT_MESSAGE_CLEANUP_WEEKS=4 - -# Logging -MAX_LOGS_PER_FILE=10000 diff --git a/SerpentRace_Docker/DOCKER_README.md b/SerpentRace_Docker/DOCKER_README.md deleted file mode 100644 index 9b004668..00000000 --- a/SerpentRace_Docker/DOCKER_README.md +++ /dev/null @@ -1,267 +0,0 @@ -# SerpentRace Docker Development Environment - -This Docker setup provides a complete development environment for SerpentRace with hot reloading and all necessary services. - -## 🚀 Quick Start - -### Development Environment - -1. **Start the development environment:** - ```bash - # Windows - docker-manage.bat dev:start - - # Linux/Mac - ./docker-manage.sh dev:start - ``` - -2. **Access the applications:** - - **Frontend:** http://localhost:5173 - - **Backend API:** http://localhost:3000 - - **Swagger API Docs:** http://localhost:3000/api-docs - - **PostgreSQL:** localhost:5432 (user: postgres, password: postgres) - - **Redis:** localhost:6379 - - **MinIO Console:** http://localhost:9001 (serpentrace / serpentrace123!) - - **PgAdmin:** http://localhost:8080 (admin@serpentrace.dev / admin) - - **Redis Commander:** http://localhost:8081 - -3. **Stop the environment:** - ```bash - # Windows - docker-manage.bat dev:stop - - # Linux/Mac - ./docker-manage.sh dev:stop - ``` - -### Production Environment - -1. **Configure production environment:** - - Copy `.env.prod` and update all values with secure passwords - - Update JWT secrets and database passwords - -2. **Start production:** - ```bash - # Windows - docker-manage.bat prod:start - - # Linux/Mac - ./docker-manage.sh prod:start - ``` - -## 📁 File Structure - -``` -SzeSnake/ -├── docker-compose.dev.yml # Development environment -├── docker-compose.prod.yml # Production environment -├── docker-manage.sh # Linux/Mac management script -├── docker-manage.bat # Windows management script -├── .env.dev # Development environment variables -├── .env.prod # Production environment variables -├── SerpentRace_Backend/ -│ ├── Dockerfile # Production backend image -│ ├── Dockerfile.dev # Development backend image -│ └── .dockerignore -└── SerpentRace_Frontend/ - ├── Dockerfile # Production frontend image - ├── Dockerfile.dev # Development frontend image - ├── nginx.conf # Nginx configuration for production - └── .dockerignore -``` - -## 🛠 Development Features - -### Hot Reloading -- **Backend:** Uses `nodemon` and `ts-node` for automatic TypeScript compilation and server restart -- **Frontend:** Uses Vite's built-in HMR (Hot Module Replacement) - -### Volume Mapping -- Source code is mounted as volumes for instant file changes -- Node modules are preserved in named volumes for performance - -### Development Tools -- **PgAdmin:** Web-based PostgreSQL administration -- **Redis Commander:** Web-based Redis management -- **MinIO Console:** Object storage management - -### Database Initialization -- Automatic database setup with test data from `sql_dump_with_test_data.sql` - -## 🐳 Docker Services - -### Backend (`backend`) -- **Image:** Node.js 20 Alpine -- **Port:** 3000 -- **Features:** Hot reload, TypeScript support -- **Dependencies:** PostgreSQL, Redis, MinIO - -### Frontend (`frontend`) -- **Image:** Node.js 20 Alpine (dev) / Nginx Alpine (prod) -- **Port:** 5173 (dev) / 80 (prod) -- **Features:** Vite HMR, React Fast Refresh - -### PostgreSQL (`postgres`) -- **Image:** PostgreSQL 15 Alpine -- **Port:** 5432 -- **Database:** serpentrace -- **Credentials:** postgres/postgres (dev) - -### Redis (`redis`) -- **Image:** Redis 7 Alpine -- **Port:** 6379 -- **Features:** Persistence enabled - -### MinIO (`minio`) -- **Image:** MinIO latest -- **Ports:** 9000 (API), 9001 (Console) -- **Features:** S3-compatible object storage - -## 🔧 Management Commands - -### Using the Management Scripts - -```bash -# Start development environment -./docker-manage.sh dev:start - -# Stop development environment -./docker-manage.sh dev:stop - -# View logs for all services -./docker-manage.sh logs - -# View logs for specific service -./docker-manage.sh logs backend -./docker-manage.sh logs frontend - -# Clean up all resources -./docker-manage.sh cleanup - -# Production commands -./docker-manage.sh prod:start -./docker-manage.sh prod:stop -``` - -### Manual Docker Compose Commands - -```bash -# Development -docker-compose -f docker-compose.dev.yml --env-file .env.dev up --build -d -docker-compose -f docker-compose.dev.yml down - -# Production -docker-compose -f docker-compose.prod.yml --env-file .env.prod up --build -d -docker-compose -f docker-compose.prod.yml down - -# View logs -docker-compose -f docker-compose.dev.yml logs -f [service_name] - -# Rebuild specific service -docker-compose -f docker-compose.dev.yml up --build backend - -# Execute commands in running containers -docker-compose -f docker-compose.dev.yml exec backend npm run test -docker-compose -f docker-compose.dev.yml exec postgres psql -U postgres -d serpentrace -``` - -## 🔒 Security Considerations - -### Development -- Default passwords are used for convenience -- Services are exposed on localhost -- Debug tools are included - -### Production -- **IMPORTANT:** Update all passwords in `.env.prod` -- Use strong JWT secrets (256+ characters recommended) -- Services are not directly exposed -- No debug tools included - -## 🐛 Troubleshooting - -### Common Issues - -1. **Port conflicts:** - - Check if ports 3000, 5173, 5432, 6379, 9000, 9001, 8080, 8081 are available - - Modify port mappings in docker-compose files if needed - -2. **File watching issues on Windows:** - - WSL2 is recommended for better file system performance - - Ensure Docker Desktop is configured to use WSL2 - -3. **Database connection issues:** - - Wait for health checks to pass before the application starts - - Check logs: `./docker-manage.sh logs postgres` - -4. **Hot reload not working:** - - Ensure volumes are properly mounted - - Check file permissions on Linux/Mac systems - -### Performance Tips - -1. **Use WSL2 on Windows** for better file system performance -2. **Increase Docker memory** allocation if needed -3. **Use .dockerignore** to exclude unnecessary files -4. **Prune unused Docker resources** regularly: `docker system prune` - -## 📝 Environment Variables - -### Development (.env.dev) -```bash -POSTGRES_PASSWORD=postgres -JWT_SECRET=dev_jwt_secret_change_in_production -MINIO_ACCESS_KEY=serpentrace -MINIO_SECRET_KEY=serpentrace123! -``` - -### Production (.env.prod) -```bash -POSTGRES_PASSWORD=your_secure_password -JWT_SECRET=your_very_long_secure_jwt_secret -MINIO_ACCESS_KEY=your_minio_access_key -MINIO_SECRET_KEY=your_secure_minio_secret -``` - -## 🔄 Health Checks - -All services include health checks to ensure proper startup order: -- **PostgreSQL:** `pg_isready` -- **Redis:** `redis-cli ping` -- **MinIO:** HTTP health endpoint -- **Backend:** HTTP health endpoint -- **Frontend:** HTTP health endpoint (production) - -The application will only start after all dependencies are healthy. - -## 📊 Monitoring - -### Logs -```bash -# All services -./docker-manage.sh logs - -# Specific service -./docker-manage.sh logs backend -./docker-manage.sh logs frontend -./docker-manage.sh logs postgres -``` - -### Service Status -```bash -# Check running containers -docker ps - -# Check service health -docker-compose -f docker-compose.dev.yml ps -``` - -## 🚀 Deployment - -For production deployment: - -1. Update `.env.prod` with secure values -2. Ensure proper firewall configuration -3. Use reverse proxy (nginx/traefik) for SSL termination -4. Consider using Docker Swarm or Kubernetes for orchestration -5. Set up monitoring and backup solutions diff --git a/SerpentRace_Docker/Dockerfile_backend b/SerpentRace_Docker/Dockerfile_backend deleted file mode 100644 index 236d55bf..00000000 --- a/SerpentRace_Docker/Dockerfile_backend +++ /dev/null @@ -1,60 +0,0 @@ -# Production Dockerfile for SerpentRace Backend -FROM node:20-alpine AS builder - -# Set working directory -WORKDIR /app - -# Install dependencies needed for native modules -RUN apk add --no-cache python3 make g++ - -# Copy package files -COPY package.json package-lock.json* ./ - -# Install ALL dependencies for building (including devDependencies) -RUN npm ci - -# Copy source code -COPY . . - -# Build the application -RUN npm run build || echo "No build script found" - -# Production stage -FROM node:20-alpine AS production - -# Set working directory -WORKDIR /app - -# Install dependencies needed for native modules -RUN apk add --no-cache python3 make g++ - -# Copy package files -COPY package.json package-lock.json* ./ - -# Install only production dependencies -RUN npm ci --only=production && npm cache clean --force - -# Copy built application from builder stage -COPY --from=builder /app/dist ./dist -COPY --from=builder /app/package.json ./ - -# Create logs directory with proper permissions -RUN mkdir -p logs && chmod 777 logs - -# Create non-root user but don't switch to it for now -RUN addgroup -g 1001 -S nodejs -RUN adduser -S serpentrace -u 1001 -RUN chown -R serpentrace:nodejs /app - -# Keep running as root to avoid permission issues with mounted volumes -# USER serpentrace - -# Expose port -EXPOSE 3000 - -# Health check -HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ - CMD curl -f http://localhost:3000/health || exit 1 - -# Production command -CMD ["npm", "start"] diff --git a/SerpentRace_Docker/Dockerfile_backend.dev b/SerpentRace_Docker/Dockerfile_backend.dev deleted file mode 100644 index 0f977a19..00000000 --- a/SerpentRace_Docker/Dockerfile_backend.dev +++ /dev/null @@ -1,29 +0,0 @@ -# Development Dockerfile for SerpentRace Backend -FROM node:20-alpine - -# Set working directory -WORKDIR /app - -# Install dependencies needed for native modules -RUN apk add --no-cache python3 make g++ - -# Copy package files -COPY package.json package-lock.json* ./ - -# Install dependencies -RUN npm install - -# Install nodemon globally for development -RUN npm install -g nodemon ts-node - -# Copy source code -COPY . . - -# Create logs directory -RUN mkdir -p logs - -# Expose port -EXPOSE 3000 - -# Development command with hot reload -CMD ["npm", "run", "dev"] diff --git a/SerpentRace_Docker/Dockerfile_frontend b/SerpentRace_Docker/Dockerfile_frontend deleted file mode 100644 index a2a6fb87..00000000 --- a/SerpentRace_Docker/Dockerfile_frontend +++ /dev/null @@ -1,36 +0,0 @@ -# Production Dockerfile for SerpentRace Frontend -FROM node:20-alpine AS builder - -# Set working directory -WORKDIR /app - -# Copy package files -COPY package.json package-lock.json* ./ - -# Install dependencies (including devDependencies needed for build) -RUN npm ci - -# Copy source code -COPY . . - -# Build the application -RUN npm run build - -# Production stage with nginx -FROM nginx:alpine AS production - -# Copy built application -COPY --from=builder /app/dist /usr/share/nginx/html - -# Copy nginx configuration -COPY nginx.conf /etc/nginx/conf.d/default.conf - -# Expose port -EXPOSE 80 - -# Health check -HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ - CMD curl -f http://localhost || exit 1 - -# Start nginx -CMD ["nginx", "-g", "daemon off;"] diff --git a/SerpentRace_Docker/Dockerfile_frontend.dev b/SerpentRace_Docker/Dockerfile_frontend.dev deleted file mode 100644 index c05e37de..00000000 --- a/SerpentRace_Docker/Dockerfile_frontend.dev +++ /dev/null @@ -1,20 +0,0 @@ -# Development Dockerfile for SerpentRace Frontend -FROM node:20-alpine - -# Set working directory -WORKDIR /app - -# Copy package files -COPY package.json package-lock.json* ./ - -# Install dependencies -RUN npm install - -# Copy source code -COPY . . - -# Expose port -EXPOSE 5173 - -# Development command with hot reload -CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"] diff --git a/SerpentRace_Docker/docker-compose.deploy.yml b/SerpentRace_Docker/docker-compose.deploy.yml deleted file mode 100644 index 0e2e6af9..00000000 --- a/SerpentRace_Docker/docker-compose.deploy.yml +++ /dev/null @@ -1,188 +0,0 @@ -version: '3.8' - -services: - # Backend service using pre-built image - backend: - image: serpentrace-backend:latest - container_name: serpentrace-backend - restart: unless-stopped - ports: - - "3000:3000" - environment: - - NODE_ENV=production - - PORT=3000 - - DB_HOST=postgres - - DB_PORT=5432 - - DB_NAME=serpentrace - - DB_USERNAME=postgres - - DB_PASSWORD=${POSTGRES_PASSWORD} - - REDIS_URL=redis://redis:6379 - - REDIS_HOST=redis - - REDIS_PORT=6379 - - JWT_SECRET=${JWT_SECRET} - - JWT_EXPIRATION=${JWT_EXPIRATION:-24h} - - JWT_REFRESH_EXPIRATION=${JWT_REFRESH_EXPIRATION:-7d} - - MINIO_ENDPOINT=minio - - MINIO_PORT=9000 - - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY} - - MINIO_SECRET_KEY=${MINIO_SECRET_KEY} - - MINIO_USE_SSL=false - - EMAIL_HOST=${EMAIL_HOST} - - EMAIL_PORT=${EMAIL_PORT} - - EMAIL_SECURE=${EMAIL_SECURE} - - EMAIL_USER=${EMAIL_USER} - - EMAIL_PASS=${EMAIL_PASS} - - EMAIL_FROM=${EMAIL_FROM} - volumes: - - backend_logs:/app/logs - depends_on: - postgres: - condition: service_healthy - redis: - condition: service_healthy - minio: - condition: service_healthy - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:3000/health"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 40s - - # Frontend service using pre-built image - frontend: - image: serpentrace-frontend:latest - container_name: serpentrace-frontend - restart: unless-stopped - ports: - - "80:80" - - "443:443" - depends_on: - - backend - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost/health"] - interval: 30s - timeout: 10s - retries: 3 - - # PostgreSQL Database - postgres: - image: postgres:15-alpine - container_name: serpentrace-postgres - restart: unless-stopped - ports: - - "5432:5432" - environment: - POSTGRES_DB: serpentrace - POSTGRES_USER: postgres - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - POSTGRES_INITDB_ARGS: "--encoding=UTF-8" - volumes: - - postgres_data:/var/lib/postgresql/data - - ./sql_schema_only.sql:/docker-entrypoint-initdb.d/init.sql - networks: - - serpentrace-network - healthcheck: - test: ["CMD-SHELL", "pg_isready -U postgres"] - interval: 10s - timeout: 5s - retries: 5 - - # Redis Cache - redis: - image: redis:7-alpine - container_name: serpentrace-redis - restart: unless-stopped - ports: - - "6379:6379" - volumes: - - redis_data:/data - command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD} - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "redis-cli", "ping"] - interval: 10s - timeout: 5s - retries: 5 - - # MinIO Object Storage - minio: - image: minio/minio:latest - container_name: serpentrace-minio - restart: unless-stopped - ports: - - "9000:9000" - - "9001:9001" - environment: - MINIO_ROOT_USER: ${MINIO_ACCESS_KEY} - MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY} - volumes: - - minio_data:/data - command: server /data --console-address ":9001" - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] - interval: 10s - timeout: 5s - retries: 5 - - -# Redis Commander for internal administration - redis-commander: - image: rediscommander/redis-commander:latest - container_name: serpentrace-redis-commander-dev - restart: unless-stopped - ports: - - "8081:8081" - environment: - - REDIS_HOSTS=local:redis:6379 - depends_on: - redis: - condition: service_healthy - networks: - - serpentrace-network - - # Database administration tool for internal administration - pgadmin: - image: dpage/pgadmin4:latest - container_name: serpentrace-pgadmin - restart: unless-stopped - ports: - - "5050:80" - environment: - PGADMIN_DEFAULT_EMAIL: admin@serpentrace.dev - PGADMIN_DEFAULT_PASSWORD: admin - PGADMIN_CONFIG_SERVER_MODE: 'False' - PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: 'False' - PGADMIN_CONFIG_WTF_CSRF_ENABLED: 'False' - volumes: - - pgadmin_data:/var/lib/pgadmin - - ./deployment/pgadmin_servers_deployment.json:/pgadmin4/servers.json:ro - depends_on: - postgres: - condition: service_healthy - networks: - - serpentrace-network - - -volumes: - postgres_data: - driver: local - redis_data: - driver: local - minio_data: - driver: local - backend_logs: - driver: local - pgadmin_data: - driver: local - -networks: - serpentrace-network: - driver: bridge \ No newline at end of file diff --git a/SerpentRace_Docker/docker-compose.dev.yml b/SerpentRace_Docker/docker-compose.dev.yml deleted file mode 100644 index bb5ac37c..00000000 --- a/SerpentRace_Docker/docker-compose.dev.yml +++ /dev/null @@ -1,184 +0,0 @@ -version: '3.8' - -services: - # Backend service with hot reload - backend: - build: - context: ../SerpentRace_Backend - dockerfile: ../SerpentRace_Docker/Dockerfile_backend.dev - container_name: serpentrace-backend-dev - restart: unless-stopped - ports: - - "3000:3000" - environment: - - NODE_ENV=development - - PORT=3000 - - DB_HOST=postgres - - DB_PORT=5432 - - DB_NAME=serpentrace - - DB_USERNAME=postgres - - DB_PASSWORD=postgres - - REDIS_URL=redis://redis:6379 - - REDIS_HOST=redis - - REDIS_PORT=6379 - - JWT_SECRET=dev_jwt_secret_change_in_production - - JWT_EXPIRATION=24h - - JWT_REFRESH_EXPIRATION=7d - - MINIO_ENDPOINT=minio - - MINIO_PORT=9000 - - MINIO_ACCESS_KEY=serpentrace - - MINIO_SECRET_KEY=serpentrace123! - - MINIO_USE_SSL=false - volumes: - - ../SerpentRace_Backend:/app - - /app/node_modules - - ../SerpentRace_Backend/logs:/app/logs - depends_on: - postgres: - condition: service_healthy - redis: - condition: service_healthy - minio: - condition: service_healthy - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:3000/health"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 40s - - # Frontend service with hot reload - frontend: - build: - context: ../SerpentRace_Frontend - dockerfile: ../SerpentRace_Docker/Dockerfile_frontend.dev - container_name: serpentrace-frontend-dev - restart: unless-stopped - ports: - - "5173:5173" - environment: - - NODE_ENV=development - - API_URL=http://localhost:3000 - volumes: - - ../SerpentRace_Frontend:/app - - /app/node_modules - depends_on: - - backend - networks: - - serpentrace-network - - # PostgreSQL Database - postgres: - image: postgres:15-alpine - container_name: serpentrace-postgres-dev - restart: unless-stopped - ports: - - "5432:5432" - environment: - POSTGRES_DB: serpentrace - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - POSTGRES_INITDB_ARGS: "--encoding=UTF-8" - volumes: - - postgres_dev_data:/var/lib/postgresql/data - - ./sql_schema_only.sql:/docker-entrypoint-initdb.d/init.sql:ro - networks: - - serpentrace-network - healthcheck: - test: ["CMD-SHELL", "pg_isready -U postgres"] - interval: 10s - timeout: 5s - retries: 5 - - # Redis Cache - redis: - image: redis:7-alpine - container_name: serpentrace-redis-dev - restart: unless-stopped - ports: - - "6379:6379" - volumes: - - redis_dev_data:/data - command: redis-server --appendonly yes - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "redis-cli", "ping"] - interval: 10s - timeout: 5s - retries: 5 - - # MinIO Object Storage - minio: - image: minio/minio:latest - container_name: serpentrace-minio-dev - restart: unless-stopped - ports: - - "9000:9000" - - "9001:9001" - environment: - MINIO_ROOT_USER: serpentrace - MINIO_ROOT_PASSWORD: serpentrace123! - volumes: - - minio_dev_data:/data - command: server /data --console-address ":9001" - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] - interval: 10s - timeout: 5s - retries: 5 - - # Redis Commander for development debugging - redis-commander: - image: rediscommander/redis-commander:latest - container_name: serpentrace-redis-commander-dev - restart: unless-stopped - ports: - - "8081:8081" - environment: - - REDIS_HOSTS=local:redis:6379 - depends_on: - redis: - condition: service_healthy - networks: - - serpentrace-network - - # Database administration tool - pgadmin: - image: dpage/pgadmin4:latest - container_name: serpentrace-pgadmin-dev - restart: unless-stopped - ports: - - "8080:80" - environment: - PGADMIN_DEFAULT_EMAIL: admin@serpentrace.dev - PGADMIN_DEFAULT_PASSWORD: admin - PGADMIN_CONFIG_SERVER_MODE: 'False' - PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: 'False' - PGADMIN_CONFIG_WTF_CSRF_ENABLED: 'False' - volumes: - - pgadmin_dev_data:/var/lib/pgadmin - - ./pgadmin_servers.json:/pgadmin4/servers.json:ro - depends_on: - postgres: - condition: service_healthy - networks: - - serpentrace-network - -volumes: - postgres_dev_data: - driver: local - redis_dev_data: - driver: local - minio_dev_data: - driver: local - pgadmin_dev_data: - driver: local - -networks: - serpentrace-network: - driver: bridge diff --git a/SerpentRace_Docker/docker-compose.prod.yml b/SerpentRace_Docker/docker-compose.prod.yml deleted file mode 100644 index d6d9483c..00000000 --- a/SerpentRace_Docker/docker-compose.prod.yml +++ /dev/null @@ -1,161 +0,0 @@ -version: '3.8' - -services: - # Backend service - backend: - build: - context: ../SerpentRace_Backend - dockerfile: ../SerpentRace_Docker/Dockerfile_backend - container_name: serpentrace-backend - restart: unless-stopped - env_file: - - .env.prod - ports: - - "3000:3000" - environment: - - NODE_ENV=production - - PORT=3000 - - DB_HOST=postgres - - DB_PORT=5432 - - DB_NAME=serpentrace - - DB_USERNAME=postgres - - DB_PASSWORD=${DB_PASSWORD} - - REDIS_URL=redis://redis:6379 - - REDIS_HOST=redis - - REDIS_PORT=6379 - - JWT_SECRET=${JWT_SECRET} - - JWT_EXPIRATION=${JWT_EXPIRATION:-24h} - - JWT_REFRESH_EXPIRATION=${JWT_REFRESH_EXPIRATION:-7d} - - MINIO_ENDPOINT=minio - - MINIO_PORT=9000 - - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY} - - MINIO_SECRET_KEY=${MINIO_SECRET_KEY} - - MINIO_USE_SSL=false - - MINIO_BUCKET_NAME=${MINIO_BUCKET_NAME:-serpentrace-logs} - - EMAIL_HOST=${EMAIL_HOST} - - EMAIL_PORT=${EMAIL_PORT} - - EMAIL_SECURE=${EMAIL_SECURE} - - EMAIL_USER=${EMAIL_USER} - - EMAIL_PASS=${EMAIL_PASS} - - EMAIL_FROM=${EMAIL_FROM} - - APP_BASE_URL=${APP_BASE_URL:-http://localhost:3000} - - CHAT_INACTIVITY_TIMEOUT_MINUTES=${CHAT_INACTIVITY_TIMEOUT_MINUTES:-30} - - CHAT_MAX_MESSAGES_PER_USER=${CHAT_MAX_MESSAGES_PER_USER:-100} - - CHAT_MESSAGE_CLEANUP_WEEKS=${CHAT_MESSAGE_CLEANUP_WEEKS:-4} - - MAX_LOGS_PER_FILE=${MAX_LOGS_PER_FILE:-10000} - volumes: - - logs-data:/app/logs - depends_on: - postgres: - condition: service_healthy - redis: - condition: service_healthy - minio: - condition: service_healthy - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:3000/health"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 40s - - # Frontend service with nginx - frontend: - build: - context: ../SerpentRace_Frontend - dockerfile: ../SerpentRace_Docker/Dockerfile_frontend - container_name: serpentrace-frontend - restart: unless-stopped - ports: - - "80:80" - depends_on: - - backend - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost/health"] - interval: 30s - timeout: 10s - retries: 3 - - # PostgreSQL Database - postgres: - image: postgres:15-alpine - container_name: serpentrace-postgres - restart: unless-stopped - env_file: - - .env.prod - ports: - - "5432:5432" - environment: - POSTGRES_DB: serpentrace - POSTGRES_USER: postgres - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} - POSTGRES_INITDB_ARGS: "--encoding=UTF-8" - volumes: - - postgres_data:/var/lib/postgresql/data - networks: - - serpentrace-network - healthcheck: - test: ["CMD-SHELL", "pg_isready -U postgres"] - interval: 10s - timeout: 5s - retries: 5 - - # Redis Cache - redis: - image: redis:7-alpine - container_name: serpentrace-redis - restart: unless-stopped - ports: - - "6379:6379" - volumes: - - redis_data:/data - command: redis-server --appendonly yes - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "redis-cli", "ping"] - interval: 10s - timeout: 5s - retries: 5 - - # MinIO Object Storage - minio: - image: minio/minio:latest - container_name: serpentrace-minio - restart: unless-stopped - env_file: - - .env.prod - ports: - - "9000:9000" - - "9001:9001" - environment: - MINIO_ROOT_USER: ${MINIO_ACCESS_KEY} - MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY} - volumes: - - minio_data:/data - command: server /data --console-address ":9001" - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] - interval: 10s - timeout: 5s - retries: 5 - -volumes: - postgres_data: - driver: local - redis_data: - driver: local - minio_data: - driver: local - logs-data: - driver: local - -networks: - serpentrace-network: - driver: bridge diff --git a/SerpentRace_Docker/docker-compose.watch.nat.yml b/SerpentRace_Docker/docker-compose.watch.nat.yml deleted file mode 100644 index 6b13f4de..00000000 --- a/SerpentRace_Docker/docker-compose.watch.nat.yml +++ /dev/null @@ -1,206 +0,0 @@ -services: - # Backend service with hot reload - backend: - build: - context: ../SerpentRace_Backend - dockerfile: ../SerpentRace_Docker/Dockerfile_backend.dev - container_name: serpentrace-backend-dev - restart: unless-stopped - env_file: - - .env.dev - ports: - - "3000:3000" - environment: - - NODE_ENV=development - - PORT=3000 - - FRONTEND_URL=http://localhost:5173 - - DB_HOST=postgres - - DB_PORT=5432 - - DB_NAME=serpentrace - - DB_USERNAME=postgres - - DB_PASSWORD=postgres - - REDIS_URL=redis://redis:6379 - - REDIS_HOST=redis - - REDIS_PORT=6379 - - MINIO_ENDPOINT=minio - - MINIO_PORT=9000 - - MINIO_ACCESS_KEY=serpentrace - - MINIO_SECRET_KEY=serpentrace123! - - MINIO_USE_SSL=false - volumes: [ ../SerpentRace_Backend/logs:/app/logs ] - develop: - watch: - - action: sync - path: ../SerpentRace_Backend/src - target: /app/src - ignore: - - node_modules/ - - dist/ - - "*.log" - - action: sync - path: ../SerpentRace_Backend/package.json - target: /app/package.json - - action: rebuild - path: ../SerpentRace_Backend/package-lock.json - - action: rebuild - path: ../SerpentRace_Backend/tsconfig.json - - action: rebuild - path: ./Dockerfile_backend.dev - - depends_on: - postgres: - condition: service_healthy - redis: - condition: service_healthy - minio: - condition: service_healthy - network_mode: host - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:3000/health"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 40s - - # Frontend service with hot reload - frontend: - build: - context: ../SerpentRace_Frontend - dockerfile: ../SerpentRace_Docker/Dockerfile_frontend.dev - container_name: serpentrace-frontend-dev - restart: unless-stopped - ports: - - "5173:5173" - environment: - - NODE_ENV=development - - VITE_API_URL=http://localhost:3000 - volumes: [] - develop: - watch: - - action: sync - path: ../SerpentRace_Frontend/src - target: /app/src - ignore: - - node_modules/ - - dist/ - - "*.log" - - action: sync - path: ../SerpentRace_Frontend/public - target: /app/public - - action: sync - path: ../SerpentRace_Frontend/package.json - target: /app/package.json - - action: rebuild - path: ../SerpentRace_Frontend/package-lock.json - - action: rebuild - path: ../SerpentRace_Frontend/vite.config.js - - action: rebuild - path: ./Dockerfile_frontend.dev - depends_on: - - backend - network_mode: host - - # PostgreSQL Database - postgres: - image: postgres:15-alpine - container_name: serpentrace-postgres-dev - restart: unless-stopped - ports: - - "5432:5432" - environment: - POSTGRES_DB: serpentrace - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - POSTGRES_INITDB_ARGS: "--encoding=UTF-8" - volumes: - - postgres_dev_data:/var/lib/postgresql/data - - ./sql_schema_only.sql:/docker-entrypoint-initdb.d/init.sql:ro - network_mode: host - healthcheck: - test: ["CMD-SHELL", "pg_isready -U postgres"] - interval: 10s - timeout: 5s - retries: 5 - - # Redis Cache - redis: - image: redis:7-alpine - container_name: serpentrace-redis-dev - restart: unless-stopped - ports: - - "6379:6379" - volumes: - - redis_dev_data:/data - command: redis-server --appendonly yes - network_mode: host - healthcheck: - test: ["CMD", "redis-cli", "ping"] - interval: 10s - timeout: 5s - retries: 5 - - # MinIO Object Storage - minio: - image: minio/minio:latest - container_name: serpentrace-minio-dev - restart: unless-stopped - ports: - - "9000:9000" - - "9001:9001" - environment: - MINIO_ROOT_USER: serpentrace - MINIO_ROOT_PASSWORD: serpentrace123! - volumes: - - minio_dev_data:/data - command: server /data --console-address ":9001" - network_mode: host - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] - interval: 10s - timeout: 5s - retries: 5 - - # Redis Commander for development debugging - redis-commander: - image: rediscommander/redis-commander:latest - container_name: serpentrace-redis-commander-dev - restart: unless-stopped - ports: - - "8081:8081" - environment: - - REDIS_HOSTS=local:redis:6379 - depends_on: - redis: - condition: service_healthy - network_mode: host - - # Database administration tool - pgadmin: - image: dpage/pgadmin4:latest - container_name: serpentrace-pgadmin-dev - restart: unless-stopped - ports: - - "8080:80" - environment: - PGADMIN_DEFAULT_EMAIL: admin@serpentrace.dev - PGADMIN_DEFAULT_PASSWORD: admin - PGADMIN_CONFIG_SERVER_MODE: 'False' - PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: 'False' - PGADMIN_CONFIG_WTF_CSRF_ENABLED: 'False' - volumes: - - pgadmin_dev_data:/var/lib/pgadmin - - ./pgadmin_servers.json:/pgadmin4/servers.json:ro - depends_on: - postgres: - condition: service_healthy - network_mode: host - -volumes: - postgres_dev_data: - driver: local - redis_dev_data: - driver: local - minio_dev_data: - driver: local - pgadmin_dev_data: - driver: local diff --git a/SerpentRace_Docker/docker-compose.watch.yml b/SerpentRace_Docker/docker-compose.watch.yml deleted file mode 100644 index 949a4770..00000000 --- a/SerpentRace_Docker/docker-compose.watch.yml +++ /dev/null @@ -1,217 +0,0 @@ -services: - # Backend service with hot reload - backend: - build: - context: ../SerpentRace_Backend - dockerfile: ../SerpentRace_Docker/Dockerfile_backend.dev - container_name: serpentrace-backend-dev - restart: unless-stopped - env_file: - - .env.dev - ports: - - "3000:3000" - environment: - - NODE_ENV=development - - PORT=3000 - - DB_HOST=postgres - - DB_PORT=5432 - - DB_NAME=serpentrace - - DB_USERNAME=postgres - - DB_PASSWORD=postgres - - REDIS_URL=redis://redis:6379 - - REDIS_HOST=redis - - REDIS_PORT=6379 - - MINIO_ENDPOINT=minio - - MINIO_PORT=9000 - - MINIO_ACCESS_KEY=serpentrace - - MINIO_SECRET_KEY=serpentrace123! - - MINIO_USE_SSL=false - volumes: [ ../SerpentRace_Backend/logs:/app/logs ] - develop: - watch: - - action: sync - path: ../SerpentRace_Backend/src - target: /app/src - ignore: - - node_modules/ - - dist/ - - "*.log" - - action: sync - path: ../SerpentRace_Backend/package.json - target: /app/package.json - - action: rebuild - path: ../SerpentRace_Backend/package-lock.json - - action: rebuild - path: ../SerpentRace_Backend/tsconfig.json - - action: rebuild - path: ./Dockerfile_backend.dev - - depends_on: - postgres: - condition: service_healthy - redis: - condition: service_healthy - minio: - condition: service_healthy - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:3000/health"] - interval: 30s - timeout: 10s - retries: 3 - start_period: 40s - - # Frontend service with hot reload - frontend: - build: - context: ../SerpentRace_Frontend - dockerfile: ../SerpentRace_Docker/Dockerfile_frontend.dev - container_name: serpentrace-frontend-dev - restart: unless-stopped - ports: - - "5173:5173" - environment: - - NODE_ENV=development - - VITE_API_URL=http://localhost:3000 - volumes: - [] - develop: - watch: - - action: sync - path: ../SerpentRace_Frontend/src - target: /app/src - ignore: - - node_modules/ - - dist/ - - "*.log" - - action: sync - path: ../SerpentRace_Frontend/public - target: /app/public - - action: sync - path: ../SerpentRace_Frontend/package.json - target: /app/package.json - - action: rebuild - path: ../SerpentRace_Frontend/package-lock.json - - action: rebuild - path: ../SerpentRace_Frontend/vite.config.js - - action: rebuild - path: ./Dockerfile_frontend.dev - depends_on: - - backend - networks: - - serpentrace-network - - # PostgreSQL Database - postgres: - image: postgres:15-alpine - container_name: serpentrace-postgres-dev - restart: unless-stopped - ports: - - "5432:5432" - environment: - POSTGRES_DB: serpentrace - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - POSTGRES_INITDB_ARGS: "--encoding=UTF-8" - volumes: - - postgres_dev_data:/var/lib/postgresql/data - - ./sql_schema_only.sql:/docker-entrypoint-initdb.d/init.sql:ro - networks: - - serpentrace-network - healthcheck: - test: ["CMD-SHELL", "pg_isready -U postgres"] - interval: 10s - timeout: 5s - retries: 5 - - # Redis Cache - redis: - image: redis:7-alpine - container_name: serpentrace-redis-dev - restart: unless-stopped - ports: - - "6379:6379" - volumes: - - redis_dev_data:/data - command: redis-server --appendonly yes - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "redis-cli", "ping"] - interval: 10s - timeout: 5s - retries: 5 - - # MinIO Object Storage - minio: - image: minio/minio:latest - container_name: serpentrace-minio-dev - restart: unless-stopped - ports: - - "9000:9000" - - "9001:9001" - environment: - MINIO_ROOT_USER: serpentrace - MINIO_ROOT_PASSWORD: serpentrace123! - volumes: - - minio_dev_data:/data - command: server /data --console-address ":9001" - networks: - - serpentrace-network - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] - interval: 10s - timeout: 5s - retries: 5 - - # Redis Commander for development debugging - redis-commander: - image: rediscommander/redis-commander:latest - container_name: serpentrace-redis-commander-dev - restart: unless-stopped - ports: - - "8081:8081" - environment: - - REDIS_HOSTS=local:redis:6379 - depends_on: - redis: - condition: service_healthy - networks: - - serpentrace-network - - # Database administration tool - pgadmin: - image: dpage/pgadmin4:latest - container_name: serpentrace-pgadmin-dev - restart: unless-stopped - ports: - - "8080:80" - environment: - PGADMIN_DEFAULT_EMAIL: admin@serpentrace.dev - PGADMIN_DEFAULT_PASSWORD: admin - PGADMIN_CONFIG_SERVER_MODE: 'False' - PGADMIN_CONFIG_MASTER_PASSWORD_REQUIRED: 'False' - PGADMIN_CONFIG_WTF_CSRF_ENABLED: 'False' - volumes: - - pgadmin_dev_data:/var/lib/pgadmin - - ./pgadmin_servers.json:/pgadmin4/servers.json:ro - depends_on: - postgres: - condition: service_healthy - networks: - - serpentrace-network - -volumes: - postgres_dev_data: - driver: local - redis_dev_data: - driver: local - minio_dev_data: - driver: local - pgadmin_dev_data: - driver: local - -networks: - serpentrace-network: - driver: bridge diff --git a/SerpentRace_Docker/docker-manage.bat b/SerpentRace_Docker/docker-manage.bat deleted file mode 100644 index 856d6a97..00000000 --- a/SerpentRace_Docker/docker-manage.bat +++ /dev/null @@ -1,57 +0,0 @@ -```bat -@echo off -setlocal - -rem Define your services here -set SERVICES= - -rem Define the environment file -set ENV_FILE=.env - -rem Load the environment variables -if exist "%ENV_FILE%" ( - for /f "usebackq tokens=*" %%i in ("%ENV_FILE%") do ( - set "%%i" - ) -) - -rem Define the default action -set ACTION=up - -rem Parse command line arguments -:parse_args -if "%~1"=="" goto :end_parse -if "%~1"=="--build" ( - set ACTION=build -) else if "%~1"=="--down" ( - set ACTION=down -) else if "%~1"=="--help" ( - goto :help -) else if "%~1"=="dev:watch" ( - goto :dev_watch -) -shift -goto :parse_args - -:end_parse - -rem Display help -:help -echo Usage: docker-compose-wrapper [options] -echo. -echo Options: -echo --build Build the services -echo --down Stop and remove the containers -echo --help Display this help message -echo dev:watch Start development environment with file watchers -goto :eof - -rem Development watch mode -:dev_watch -echo Starting development environment with file watchers... -docker-compose -f docker-compose.watch.yml up --build -goto :eof - -rem Execute the docker-compose command with the parsed action -%DOCKER_COMPOSE% %ACTION% %SERVICES% -``` \ No newline at end of file diff --git a/SerpentRace_Docker/nginx.conf b/SerpentRace_Docker/nginx.conf deleted file mode 100644 index fa4630a8..00000000 --- a/SerpentRace_Docker/nginx.conf +++ /dev/null @@ -1,60 +0,0 @@ -server { - listen 80; - server_name localhost; - root /usr/share/nginx/html; - index index.html index.htm; - - # Enable gzip compression - gzip on; - gzip_vary on; - gzip_min_length 1024; - gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json; - - # Security headers - add_header X-Frame-Options "SAMEORIGIN" always; - add_header X-Content-Type-Options "nosniff" always; - add_header X-XSS-Protection "1; mode=block" always; - - # Handle client routing - location / { - try_files $uri $uri/ /index.html; - } - - # API proxy to backend - location /api/ { - proxy_pass http://backend:3000/; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection 'upgrade'; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_cache_bypass $http_upgrade; - } - - # WebSocket support - location /socket.io/ { - proxy_pass http://backend:3000; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } - - # Static assets caching - location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { - expires 1y; - add_header Cache-Control "public, immutable"; - } - - # Health check endpoint - location /health { - access_log off; - return 200 "healthy\n"; - add_header Content-Type text/plain; - } -} diff --git a/SerpentRace_Docker/pgadmin_servers.json b/SerpentRace_Docker/pgadmin_servers.json deleted file mode 100644 index 828e872e..00000000 --- a/SerpentRace_Docker/pgadmin_servers.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "Servers": { - "1": { - "Name": "SerpentRace PostgreSQL Dev", - "Group": "Development", - "Host": "postgres", - "Port": 5432, - "MaintenanceDB": "serpentrace", - "Username": "postgres", - "UseSSLMode": "prefer", - "SSLMode": "prefer", - "SSLCompression": 0, - "Timeout": 10, - "UseSSHTunnel": 0, - "TunnelPort": "22", - "TunnelAuthentication": 0, - "KerberosAuthentication": false, - "ConnectionParameters": { - "sslmode": "prefer", - "connect_timeout": "10" - } - } - } -} diff --git a/SerpentRace_Docker/sql_dump_with_test_data.sql b/SerpentRace_Docker/sql_dump_with_test_data.sql deleted file mode 100644 index 7271b451..00000000 --- a/SerpentRace_Docker/sql_dump_with_test_data.sql +++ /dev/null @@ -1,369 +0,0 @@ --- SerpentRace Backend Database Schema and Test Data --- Generated on: August 22, 2025 --- PostgreSQL Database Dump - --- Enable UUID extension -CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; - --- ============================================================================ --- DROP EXISTING TABLES (in reverse dependency order) --- ============================================================================ -DROP TABLE IF EXISTS "ChatArchives"; -DROP TABLE IF EXISTS "Chats"; -DROP TABLE IF EXISTS "Contacts"; -DROP TABLE IF EXISTS "Decks"; -DROP TABLE IF EXISTS "Users"; -DROP TABLE IF EXISTS "Organizations"; -DROP TABLE IF EXISTS "migrations"; - --- ============================================================================ --- CREATE TABLES --- ============================================================================ - --- Organizations Table -CREATE TABLE "Organizations" ( - "id" uuid NOT NULL DEFAULT uuid_generate_v4(), - "name" character varying(255) NOT NULL, - "contactfname" character varying(100) NOT NULL, - "contactlname" character varying(100) NOT NULL, - "contactphone" character varying(20) NOT NULL, - "contactemail" character varying(255) NOT NULL, - "state" integer NOT NULL DEFAULT 0, - "regdate" TIMESTAMP NOT NULL DEFAULT now(), - "updatedate" TIMESTAMP NOT NULL DEFAULT now(), - "url" character varying(500), - "userinorg" integer NOT NULL DEFAULT 0, - "maxOrganizationalDecks" integer, - CONSTRAINT "PK_Organizations" PRIMARY KEY ("id") -); - --- Users Table -CREATE TABLE "Users" ( - "id" uuid NOT NULL DEFAULT uuid_generate_v4(), - "orgid" uuid, - "username" character varying(100) NOT NULL UNIQUE, - "password" character varying(255) NOT NULL, - "email" character varying(255) NOT NULL UNIQUE, - "fname" character varying(100) NOT NULL, - "lname" character varying(100) NOT NULL, - "token" character varying(255), - "TokenExpires" TIMESTAMP, - "phone" character varying(20), - "state" integer NOT NULL DEFAULT 0, - "regdate" TIMESTAMP NOT NULL DEFAULT now(), - "updatedate" TIMESTAMP NOT NULL DEFAULT now(), - "Orglogindate" TIMESTAMP, - CONSTRAINT "PK_Users" PRIMARY KEY ("id"), - CONSTRAINT "FK_Users_Organizations" FOREIGN KEY ("orgid") REFERENCES "Organizations"("id") -); - --- Decks Table -CREATE TABLE "Decks" ( - "id" uuid NOT NULL DEFAULT uuid_generate_v4(), - "name" character varying(255) NOT NULL, - "type" integer NOT NULL, - "user_id" uuid NOT NULL, - "creation_date" TIMESTAMP NOT NULL DEFAULT now(), - "cards" json NOT NULL, - "played_number" integer NOT NULL DEFAULT 0, - "ctype" integer NOT NULL DEFAULT 0, - "update_date" TIMESTAMP NOT NULL DEFAULT now(), - "state" integer NOT NULL DEFAULT 0, - "organization_id" uuid, - CONSTRAINT "PK_Decks" PRIMARY KEY ("id"), - CONSTRAINT "FK_Decks_Users" FOREIGN KEY ("user_id") REFERENCES "Users"("id"), - CONSTRAINT "FK_Decks_Organizations" FOREIGN KEY ("organization_id") REFERENCES "Organizations"("id") -); - --- Chats Table -CREATE TABLE "Chats" ( - "id" uuid NOT NULL DEFAULT uuid_generate_v4(), - "users" uuid[] NOT NULL, - "messages" json NOT NULL DEFAULT '[]', - "updateDate" TIMESTAMP NOT NULL DEFAULT now(), - "state" integer NOT NULL DEFAULT 0, - "type" character varying(50) NOT NULL DEFAULT 'direct', - "name" character varying(255), - "gameId" uuid, - "createdBy" uuid, - "lastActivity" TIMESTAMP, - "createDate" TIMESTAMP NOT NULL DEFAULT now(), - "archiveDate" TIMESTAMP, - CONSTRAINT "PK_Chats" PRIMARY KEY ("id") -); - --- Chat Archives Table -CREATE TABLE "ChatArchives" ( - "id" uuid NOT NULL DEFAULT uuid_generate_v4(), - "chatId" uuid NOT NULL, - "archivedMessages" json NOT NULL, - "archivedAt" TIMESTAMP NOT NULL, - "createDate" TIMESTAMP NOT NULL DEFAULT now(), - "chatType" character varying(50) NOT NULL, - "chatName" character varying(255), - "gameId" uuid, - "participants" uuid[] NOT NULL, - CONSTRAINT "PK_ChatArchives" PRIMARY KEY ("id") -); - --- Contacts Table -CREATE TABLE "Contacts" ( - "id" uuid NOT NULL DEFAULT uuid_generate_v4(), - "name" character varying(255) NOT NULL, - "email" character varying(255) NOT NULL, - "userid" uuid, - "type" integer NOT NULL, - "txt" text NOT NULL, - "state" integer NOT NULL DEFAULT 0, - "createDate" TIMESTAMP NOT NULL DEFAULT now(), - "updateDate" TIMESTAMP NOT NULL DEFAULT now(), - "adminResponse" text, - "responseDate" TIMESTAMP, - "respondedBy" uuid, - CONSTRAINT "PK_Contacts" PRIMARY KEY ("id"), - CONSTRAINT "FK_Contacts_Users" FOREIGN KEY ("userid") REFERENCES "Users"("id"), - CONSTRAINT "FK_Contacts_Admins" FOREIGN KEY ("respondedBy") REFERENCES "Users"("id") -); - --- Migrations table (for TypeORM) -CREATE TABLE "migrations" ( - "id" SERIAL NOT NULL, - "timestamp" bigint NOT NULL, - "name" character varying NOT NULL, - CONSTRAINT "PK_migrations" PRIMARY KEY ("id") -); - --- ============================================================================ --- CREATE INDEXES --- ============================================================================ -CREATE INDEX "IDX_DECK_USER_STATE_CTYPE" ON "Decks" ("user_id", "state", "ctype"); -CREATE INDEX "IDX_DECK_ORG_CTYPE_STATE" ON "Decks" ("organization_id", "ctype", "state"); -CREATE INDEX "IDX_USERS_EMAIL" ON "Users" ("email"); -CREATE INDEX "IDX_USERS_USERNAME" ON "Users" ("username"); -CREATE INDEX "IDX_USERS_ORGID" ON "Users" ("orgid"); - --- ============================================================================ --- INSERT TEST DATA --- ============================================================================ - --- Organizations Test Data -INSERT INTO "Organizations" ("id", "name", "contactfname", "contactlname", "contactphone", "contactemail", "state", "regdate", "updatedate", "url", "userinorg", "maxOrganizationalDecks") VALUES -('11111111-1111-1111-1111-111111111111', 'Tech Solutions Inc', 'John', 'Smith', '+1-555-0001', 'john.smith@techsolutions.com', 1, '2024-01-15 10:00:00', '2024-01-15 10:00:00', 'https://techsolutions.com', 5, 20), -('22222222-2222-2222-2222-222222222222', 'Educational Institute', 'Sarah', 'Johnson', '+1-555-0002', 'sarah.johnson@eduinst.edu', 1, '2024-02-01 09:30:00', '2024-02-01 09:30:00', 'https://eduinstitute.edu', 15, 50), -('33333333-3333-3333-3333-333333333333', 'Healthcare Corp', 'Michael', 'Brown', '+1-555-0003', 'michael.brown@healthcorp.com', 0, '2024-03-10 14:20:00', '2024-03-10 14:20:00', NULL, 0, 10); - --- Users Test Data -INSERT INTO "Users" ("id", "orgid", "username", "password", "email", "fname", "lname", "token", "TokenExpires", "phone", "state", "regdate", "updatedate", "Orglogindate") VALUES --- Regular users -('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', NULL, 'john_doe', '$2b$10$dPXxS9Byg7AbB.fngFtNWel1llS1nHJlQrTO4zQToy7vVitS9mr96', 'john.doe@email.com', 'John', 'Doe', NULL, NULL, '+1-555-1001', 1, '2024-01-20 11:00:00', '2024-01-20 11:00:00', NULL), -('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', '11111111-1111-1111-1111-111111111111', 'jane_premium', '$2b$10$dPXxS9Byg7AbB.fngFtNWel1llS1nHJlQrTO4zQToy7vVitS9mr96', 'jane.smith@email.com', 'Jane', 'Smith', NULL, NULL, '+1-555-1002', 2, '2024-01-25 12:30:00', '2024-01-25 12:30:00', '2024-01-25 12:30:00'), -('cccccccc-cccc-cccc-cccc-cccccccccccc', '22222222-2222-2222-2222-222222222222', 'teacher_bob', '$2b$10$dPXxS9Byg7AbB.fngFtNWel1llS1nHJlQrTO4zQToy7vVitS9mr96', 'bob.teacher@eduinst.edu', 'Bob', 'Teacher', NULL, NULL, '+1-555-1003', 2, '2024-02-05 09:15:00', '2024-02-05 09:15:00', '2024-02-05 09:15:00'), --- Admin user -('dddddddd-dddd-dddd-dddd-dddddddddddd', NULL, 'admin_user', '$2b$10$dPXxS9Byg7AbB.fngFtNWel1llS1nHJlQrTO4zQToy7vVitS9mr96', 'admin@serpentrace.com', 'Admin', 'User', NULL, NULL, 'admin', '+1-555-9999', 5, '2024-01-01 08:00:00', '2024-01-01 08:00:00', NULL), --- Unverified user -('eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee', NULL, 'new_user', '$2b$10$dPXxS9Byg7AbB.fngFtNWel1llS1nHJlQrTO4zQToy7vVitS9mr96', 'newuser@email.com', 'New', 'User', 'verification_token_12345', '2025-08-23 23:59:59', 'personal', NULL, 0, '2025-08-22 16:00:00', '2025-08-22 16:00:00', NULL); - --- Decks Test Data -INSERT INTO "Decks" ("id", "name", "type", "user_id", "creation_date", "cards", "played_number", "ctype", "update_date", "state", "organization_id") VALUES --- Public decks -('dddd1111-1111-1111-1111-111111111111', 'General Knowledge Quiz', 2, 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '2024-02-01 10:00:00', -'[ - {"id": "c1", "type": 0, "text": "What is the capital of France?", "answer": "Paris", "options": ["London", "Paris", "Berlin", "Madrid"]}, - {"id": "c2", "type": 0, "text": "Which planet is known as the Red Planet?", "answer": "Mars", "options": ["Venus", "Mars", "Jupiter", "Saturn"]}, - {"id": "c3", "type": 1, "text": "The Great Wall of China", "answer": "is visible from space", "options": ["is visible from space", "was built in one century"]}, - {"id": "c4", "type": 2, "text": "Describe the process of photosynthesis", "answer": null}, - {"id": "c5", "type": 3, "text": "The Earth is flat", "answer": false} -]', -25, 0, '2024-02-01 10:00:00', 0, NULL), - -('dddd2222-2222-2222-2222-222222222222', 'Math Fundamentals', 2, 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', '2024-02-05 14:30:00', -'[ - {"id": "m1", "type": 0, "text": "What is 2 + 2?", "answer": "4", "options": ["3", "4", "5", "6"]}, - {"id": "m2", "type": 0, "text": "What is the square root of 16?", "answer": "4", "options": ["2", "4", "8", "16"]}, - {"id": "m3", "type": 3, "text": "Pi is approximately 3.14", "answer": true}, - {"id": "m4", "type": 4, "text": "Complete the sequence: 2, 4, 6, ?", "answer": "8"} -]', -15, 0, '2024-02-05 14:30:00', 0, NULL), - --- Private decks -('dddd3333-3333-3333-3333-333333333333', 'My Personal Study Notes', 2, 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '2024-02-10 16:45:00', -'[ - {"id": "p1", "type": 2, "text": "What did I learn about React hooks today?", "answer": null}, - {"id": "p2", "type": 2, "text": "Key points from the management meeting", "answer": null} -]', -3, 1, '2024-02-10 16:45:00', 0, NULL), - --- Organizational decks -('dddd4444-4444-4444-4444-444444444444', 'Company Training Module', 2, 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', '2024-02-15 11:20:00', -'[ - {"id": "o1", "type": 0, "text": "What is our company policy on remote work?", "answer": "Flexible hybrid model", "options": ["No remote work", "Full remote", "Flexible hybrid model", "Weekends only"]}, - {"id": "o2", "type": 3, "text": "All employees must attend the monthly all-hands meeting", "answer": true}, - {"id": "o3", "type": 2, "text": "Describe the steps for requesting vacation time", "answer": null} -]', -8, 2, '2024-02-15 11:20:00', 0, '11111111-1111-1111-1111-111111111111'), - -('dddd5555-5555-5555-5555-555555555555', 'Educational Content for Students', 2, 'cccccccc-cccc-cccc-cccc-cccccccccccc', '2024-03-01 08:15:00', -'[ - {"id": "e1", "type": 0, "text": "When did World War II end?", "answer": "1945", "options": ["1943", "1944", "1945", "1946"]}, - {"id": "e2", "type": 1, "text": "Shakespeare wrote", "answer": "Romeo and Juliet", "options": ["Romeo and Juliet", "The Great Gatsby"]}, - {"id": "e3", "type": 3, "text": "The American Revolution began in 1776", "answer": false}, - {"id": "e4", "type": 4, "text": "Name three primary colors", "answer": "Red, Blue, Yellow"} -]', -42, 2, '2024-03-01 08:15:00', 0, '22222222-2222-2222-2222-222222222222'), - --- Joker and Luck type decks -('dddd6666-6666-6666-6666-666666666666', 'Lucky Challenges', 0, 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '2024-03-05 13:40:00', -'[ - {"id": "l1", "type": 4, "text": "Do 10 jumping jacks", "answer": null}, - {"id": "l2", "type": 4, "text": "Name your favorite childhood memory", "answer": null}, - {"id": "l3", "type": 4, "text": "Sing happy birthday", "answer": null} -]', -7, 0, '2024-03-05 13:40:00', 0, NULL), - -('dddd7777-7777-7777-7777-777777777777', 'Wild Cards', 1, 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', '2024-03-08 19:25:00', -'[ - {"id": "j1", "type": 4, "text": "Skip your next turn", "answer": null}, - {"id": "j2", "type": 4, "text": "Draw two extra cards", "answer": null}, - {"id": "j3", "type": 4, "text": "Trade places with another player", "answer": null}, - {"id": "j4", "type": 4, "text": "Double your next score", "answer": null} -]', -12, 0, '2024-03-08 19:25:00', 0, NULL); - --- Chats Test Data -INSERT INTO "Chats" ("id", "users", "messages", "updateDate", "state", "type", "name", "gameId", "createdBy", "lastActivity", "createDate", "archiveDate") VALUES --- Direct message between two users -('chat1111-1111-1111-1111-111111111111', -'{"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"}', -'[ - {"id": "msg1", "date": "2024-03-20T10:30:00Z", "userid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "text": "Hey Jane! How are you doing?"}, - {"id": "msg2", "date": "2024-03-20T10:32:00Z", "userid": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", "text": "Hi John! I'\''m great, thanks for asking. How about you?"}, - {"id": "msg3", "date": "2024-03-20T10:35:00Z", "userid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "text": "Doing well! Want to play a quiz game later?"}, - {"id": "msg4", "date": "2024-03-20T10:37:00Z", "userid": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", "text": "Absolutely! I'\''ll prepare some questions."} -]', -'2024-03-20 10:37:00', 0, 'direct', NULL, NULL, NULL, '2024-03-20 10:37:00', '2024-03-20 10:30:00', NULL), - --- Group chat for organization -('chat2222-2222-2222-2222-222222222222', -'{"bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", "cccccccc-cccc-cccc-cccc-cccccccccccc", "dddddddd-dddd-dddd-dddd-dddddddddddd"}', -'[ - {"id": "msg5", "date": "2024-03-21T14:15:00Z", "userid": "dddddddd-dddd-dddd-dddd-dddddddddddd", "text": "Welcome everyone to the study group!"}, - {"id": "msg6", "date": "2024-03-21T14:16:00Z", "userid": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", "text": "Thanks for organizing this!"}, - {"id": "msg7", "date": "2024-03-21T14:18:00Z", "userid": "cccccccc-cccc-cccc-cccc-cccccccccccc", "text": "I'\''ve prepared some educational content to share"}, - {"id": "msg8", "date": "2024-03-21T14:20:00Z", "userid": "dddddddd-dddd-dddd-dddd-dddddddddddd", "text": "Great! Let'\''s start with the basics"} -]', -'2024-03-21 14:20:00', 0, 'group', 'Study Group', NULL, 'dddddddd-dddd-dddd-dddd-dddddddddddd', '2024-03-21 14:20:00', '2024-03-21 14:15:00', NULL), - --- Game chat -('chat3333-3333-3333-3333-333333333333', -'{"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"}', -'[ - {"id": "msg9", "date": "2024-03-22T16:45:00Z", "userid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "text": "Ready to start the quiz game?"}, - {"id": "msg10", "date": "2024-03-22T16:46:00Z", "userid": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", "text": "Yes! Let'\''s do this!"}, - {"id": "msg11", "date": "2024-03-22T16:50:00Z", "userid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "text": "Great job on that last question!"}, - {"id": "msg12", "date": "2024-03-22T16:52:00Z", "userid": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", "text": "Thanks! This is fun!"} -]', -'2024-03-22 16:52:00', 0, 'game', 'Quiz Game Session', 'game1111-1111-1111-1111-111111111111', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', '2024-03-22 16:52:00', '2024-03-22 16:45:00', NULL); - --- Chat Archives Test Data -INSERT INTO "ChatArchives" ("id", "chatId", "archivedMessages", "archivedAt", "createDate", "chatType", "chatName", "gameId", "participants") VALUES -('arch1111-1111-1111-1111-111111111111', 'chat0000-0000-0000-0000-000000000000', -'[ - {"id": "oldmsg1", "date": "2024-01-15T09:00:00Z", "userid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "text": "This is an old conversation"}, - {"id": "oldmsg2", "date": "2024-01-15T09:05:00Z", "userid": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb", "text": "Yes, from last month"}, - {"id": "oldmsg3", "date": "2024-01-15T09:10:00Z", "userid": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "text": "Good times!"} -]', -'2024-02-15 00:00:00', '2024-02-15 00:00:00', 'direct', NULL, NULL, '{"aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"}'); - --- Contacts Test Data -INSERT INTO "Contacts" ("id", "name", "email", "userid", "type", "txt", "state", "createDate", "updateDate", "adminResponse", "responseDate", "respondedBy") VALUES --- Bug report from registered user -('cont1111-1111-1111-1111-111111111111', 'John Doe', 'john.doe@email.com', 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa', 0, 'I found a bug when creating a new deck. The cards are not saving properly when I add more than 10 cards.', 1, '2024-03-18 14:30:00', '2024-03-19 09:15:00', 'Thank you for reporting this issue. We have identified the problem and deployed a fix. Please try creating your deck again.', '2024-03-19 09:15:00', 'dddddddd-dddd-dddd-dddd-dddddddddddd'), - --- General question from anonymous user -('cont2222-2222-2222-2222-222222222222', 'Sarah Wilson', 'sarah.wilson@email.com', NULL, 2, 'Hi, I'\''m interested in using SerpentRace for my classroom. Do you have any educational pricing or features specifically designed for teachers?', 0, '2024-03-19 11:20:00', '2024-03-19 11:20:00', NULL, NULL, NULL), - --- Problem report from premium user -('cont3333-3333-3333-3333-333333333333', 'Jane Smith', 'jane.smith@email.com', 'bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb', 1, 'I'\''m having trouble with the organization deck sharing feature. When I share a deck with my team, they can'\''t see the latest updates I made.', 0, '2024-03-20 16:45:00', '2024-03-20 16:45:00', NULL, NULL, NULL), - --- Sales inquiry -('cont4444-4444-4444-4444-444444444444', 'Michael Chen', 'michael.chen@company.com', NULL, 3, 'Our company is interested in purchasing premium licenses for 50 employees. Could you provide pricing information and enterprise features?', 0, '2024-03-21 10:10:00', '2024-03-21 10:10:00', NULL, NULL, NULL), - --- Other type of contact -('cont5555-5555-5555-5555-555555555555', 'Lisa Johnson', 'lisa.johnson@email.com', NULL, 4, 'I love using SerpentRace! Could you add support for audio questions in the quiz decks? This would be great for language learning.', 0, '2024-03-22 13:25:00', '2024-03-22 13:25:00', NULL, NULL, NULL); - --- Migration entries -INSERT INTO "migrations" ("timestamp", "name") VALUES -(1755691733404, 'test1755691733404'), -(1755706019351, 'AddEmailVerificationFields1755706019351'), -(1755817306222, 'AddChatMessagingSystem1755817306222'), -(1755855028839, 'CreateContactTable1755855028839'), -(1692712800000, 'AddMaxOrganizationalDecksToOrganization1692712800000'); - --- ============================================================================ --- UPDATE ORGANIZATION USER COUNTS --- ============================================================================ -UPDATE "Organizations" SET "userinorg" = ( - SELECT COUNT(*) FROM "Users" WHERE "Users"."orgid" = "Organizations"."id" -); - --- ============================================================================ --- HELPFUL QUERIES FOR TESTING --- ============================================================================ - --- Query to see all users with their organizations --- SELECT u.username, u.email, u.state, o.name as organization_name --- FROM "Users" u --- LEFT JOIN "Organizations" o ON u.orgid = o.id; - --- Query to see deck distribution by type and visibility --- SELECT --- CASE ctype --- WHEN 0 THEN 'Public' --- WHEN 1 THEN 'Private' --- WHEN 2 THEN 'Organization' --- END as deck_type, --- CASE type --- WHEN 0 THEN 'Luck' --- WHEN 1 THEN 'Joker' --- WHEN 2 THEN 'Question' --- END as card_type, --- COUNT(*) as count --- FROM "Decks" --- WHERE state = 0 --- GROUP BY ctype, type --- ORDER BY ctype, type; - --- Query to see active chats with participant count --- SELECT --- id, --- type, --- name, --- array_length(users, 1) as participant_count, --- json_array_length(messages) as message_count, --- lastActivity --- FROM "Chats" --- WHERE state = 0 --- ORDER BY lastActivity DESC; - --- Query to see contact distribution by type and status --- SELECT --- CASE type --- WHEN 0 THEN 'Bug' --- WHEN 1 THEN 'Problem' --- WHEN 2 THEN 'Question' --- WHEN 3 THEN 'Sales' --- WHEN 4 THEN 'Other' --- END as contact_type, --- CASE state --- WHEN 0 THEN 'Active' --- WHEN 1 THEN 'Resolved' --- WHEN 2 THEN 'Deleted' --- END as status, --- COUNT(*) as count --- FROM "Contacts" --- GROUP BY type, state --- ORDER BY type, state; - --- ============================================================================ --- END OF SQL DUMP --- ============================================================================ diff --git a/SerpentRace_Docker/sql_schema_only.sql b/SerpentRace_Docker/sql_schema_only.sql deleted file mode 100644 index a5d28f0e..00000000 --- a/SerpentRace_Docker/sql_schema_only.sql +++ /dev/null @@ -1,180 +0,0 @@ --- This script was generated by the ERD tool in pgAdmin 4. --- Please log an issue at https://github.com/pgadmin-org/pgadmin4/issues/new/choose if you find any bugs, including reproduction steps. -BEGIN; - --- =================================================================== --- STEP 1: Enable Required Extensions --- =================================================================== -CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; - --- =================================================================== --- STEP 2: Create Tables --- =================================================================== - -CREATE TABLE IF NOT EXISTS public."ChatArchives" -( - id uuid NOT NULL DEFAULT uuid_generate_v4(), - "chatId" uuid NOT NULL, - "archivedMessages" json NOT NULL, - "archivedAt" timestamp without time zone NOT NULL, - "createDate" timestamp without time zone NOT NULL DEFAULT now(), - "chatType" character varying(50) COLLATE pg_catalog."default" NOT NULL, - "chatName" character varying(255) COLLATE pg_catalog."default", - "gameId" uuid, - participants uuid[] NOT NULL, - CONSTRAINT "PK_fe62979fc2061d7afe278d3f14e" PRIMARY KEY (id) -); - -CREATE TABLE IF NOT EXISTS public."Chats" -( - id uuid NOT NULL DEFAULT uuid_generate_v4(), - type character varying(50) COLLATE pg_catalog."default" NOT NULL DEFAULT 'direct'::character varying, - name character varying(255) COLLATE pg_catalog."default", - "gameId" uuid, - "createdBy" uuid, - users uuid[] NOT NULL, - messages json NOT NULL DEFAULT '[]'::json, - "lastActivity" timestamp without time zone, - "createDate" timestamp without time zone NOT NULL DEFAULT now(), - "updateDate" timestamp without time zone NOT NULL DEFAULT now(), - state integer NOT NULL DEFAULT 0, - "archiveDate" timestamp without time zone, - CONSTRAINT "PK_64c36c2b8d86a0d5de4cf64de8d" PRIMARY KEY (id) -); - -CREATE TABLE IF NOT EXISTS public."Contacts" -( - id uuid NOT NULL DEFAULT uuid_generate_v4(), - name character varying(255) COLLATE pg_catalog."default" NOT NULL, - email character varying(255) COLLATE pg_catalog."default" NOT NULL, - userid uuid, - type integer NOT NULL, - txt text COLLATE pg_catalog."default" NOT NULL, - state integer NOT NULL DEFAULT 0, - "createDate" timestamp without time zone NOT NULL DEFAULT now(), - "updateDate" timestamp without time zone NOT NULL DEFAULT now(), - "adminResponse" text COLLATE pg_catalog."default", - "responseDate" timestamp without time zone, - "respondedBy" uuid, - CONSTRAINT "PK_68782cec65c8eef577c62958273" PRIMARY KEY (id) -); - -CREATE TABLE IF NOT EXISTS public."Decks" -( - id uuid NOT NULL DEFAULT uuid_generate_v4(), - name character varying(255) COLLATE pg_catalog."default" NOT NULL, - type integer NOT NULL, - user_id uuid NOT NULL, - creation_date timestamp without time zone NOT NULL DEFAULT now(), - cards json NOT NULL, - played_number integer NOT NULL DEFAULT 0, - ctype integer NOT NULL DEFAULT 0, - "updateDate" timestamp without time zone NOT NULL DEFAULT now(), - state integer NOT NULL DEFAULT 0, - organization_id uuid, - CONSTRAINT "PK_001f26cb3ec39c1f25269943473" PRIMARY KEY (id) -); - -CREATE TABLE IF NOT EXISTS public."Games" -( - id uuid NOT NULL DEFAULT uuid_generate_v4(), - gamecode character varying(10) COLLATE pg_catalog."default" NOT NULL, - maxplayers integer NOT NULL, - logintype integer NOT NULL DEFAULT 0, - boardsize integer NOT NULL DEFAULT 50, - "createdBy" uuid NOT NULL, - organizationid uuid, - decks jsonb NOT NULL DEFAULT '[]'::jsonb, - playerids uuid[] NOT NULL DEFAULT '{}'::uuid[], - "winnerId" uuid, - state integer NOT NULL DEFAULT 0, - "createDate" timestamp without time zone NOT NULL DEFAULT now(), - start_date timestamp without time zone, - "finishDate" timestamp without time zone, - "updateDate" timestamp without time zone NOT NULL DEFAULT now(), - "organizationId" uuid, - CONSTRAINT "PK_1950492f583d31609c5e9fbbe12" PRIMARY KEY (id), - CONSTRAINT "UQ_9d52c646079cbe6f242a85c5c41" UNIQUE (gamecode) -); - -CREATE TABLE IF NOT EXISTS public."Organizations" -( - id uuid NOT NULL DEFAULT uuid_generate_v4(), - name character varying(255) COLLATE pg_catalog."default" NOT NULL, - contactfname character varying(100) COLLATE pg_catalog."default" NOT NULL, - contactlname character varying(100) COLLATE pg_catalog."default" NOT NULL, - contactphone character varying(20) COLLATE pg_catalog."default" NOT NULL, - contactemail character varying(255) COLLATE pg_catalog."default" NOT NULL, - state integer NOT NULL DEFAULT 0, - regdate timestamp without time zone NOT NULL DEFAULT now(), - "updateDate" timestamp without time zone NOT NULL DEFAULT now(), - url character varying(500) COLLATE pg_catalog."default", - userinorg integer NOT NULL DEFAULT 0, - "maxOrganizationalDecks" integer, - CONSTRAINT "PK_e0690a31419f6666194423526f2" PRIMARY KEY (id) -); - -CREATE TABLE IF NOT EXISTS public."Users" -( - id uuid NOT NULL DEFAULT uuid_generate_v4(), - orgid uuid, - username character varying(100) COLLATE pg_catalog."default" NOT NULL, - password character varying(255) COLLATE pg_catalog."default" NOT NULL, - email character varying(255) COLLATE pg_catalog."default" NOT NULL, - fname character varying(100) COLLATE pg_catalog."default" NOT NULL, - lname character varying(100) COLLATE pg_catalog."default" NOT NULL, - token character varying(255) COLLATE pg_catalog."default", - "TokenExpires" timestamp without time zone, - phone character varying(20) COLLATE pg_catalog."default", - state integer NOT NULL DEFAULT 0, - regdate timestamp without time zone NOT NULL DEFAULT now(), - "updateDate" timestamp without time zone NOT NULL DEFAULT now(), - "Orglogindate" timestamp without time zone, - CONSTRAINT "PK_16d4f7d636df336db11d87413e3" PRIMARY KEY (id), - CONSTRAINT "UQ_3c3ab3f49a87e6ddb607f3c4945" UNIQUE (email), - CONSTRAINT "UQ_ffc81a3b97dcbf8e320d5106c0d" UNIQUE (username) -); - -CREATE TABLE IF NOT EXISTS public.migrations -( - id serial NOT NULL, - "timestamp" bigint NOT NULL, - name character varying COLLATE pg_catalog."default" NOT NULL, - CONSTRAINT "PK_8c82d7f526340ab734260ea46be" PRIMARY KEY (id) -); - -ALTER TABLE IF EXISTS public."Decks" - ADD CONSTRAINT "FK_06ee28f90d68543a03b14aebe13" FOREIGN KEY (organization_id) - REFERENCES public."Organizations" (id) MATCH SIMPLE - ON UPDATE NO ACTION - ON DELETE NO ACTION; - - -ALTER TABLE IF EXISTS public."Decks" - ADD CONSTRAINT "FK_a39059433e29882e1309d3a5e70" FOREIGN KEY (user_id) - REFERENCES public."Users" (id) MATCH SIMPLE - ON UPDATE NO ACTION - ON DELETE NO ACTION; - - -ALTER TABLE IF EXISTS public."Games" - ADD CONSTRAINT "FK_330362bff8b25bb573f31fb4023" FOREIGN KEY ("winnerId") - REFERENCES public."Users" (id) MATCH SIMPLE - ON UPDATE NO ACTION - ON DELETE NO ACTION; - - -ALTER TABLE IF EXISTS public."Games" - ADD CONSTRAINT "FK_e3c4e8898fa026a5551aefc4f62" FOREIGN KEY ("organizationId") - REFERENCES public."Organizations" (id) MATCH SIMPLE - ON UPDATE NO ACTION - ON DELETE NO ACTION; - - -ALTER TABLE IF EXISTS public."Games" - ADD CONSTRAINT "FK_f32db60863a8a393b30aa222cd5" FOREIGN KEY ("createdBy") - REFERENCES public."Users" (id) MATCH SIMPLE - ON UPDATE NO ACTION - ON DELETE NO ACTION; - -END; \ No newline at end of file diff --git a/SerpentRace_Frontend/.dockerignore b/SerpentRace_Frontend/.dockerignore deleted file mode 100644 index 51fba3e0..00000000 --- a/SerpentRace_Frontend/.dockerignore +++ /dev/null @@ -1,27 +0,0 @@ -node_modules -npm-debug.log -.git -.gitignore -README.md -.env -.env.local -.env.development.local -.env.test.local -.env.production.local -.cache -logs -*.log -.DS_Store -.vscode -.idea -*.swp -*.swo -dist -build -.next -.nuxt -.vuepress/dist -.serverless -.fusebox/ -.dynamodb/ -.tern-port diff --git a/SerpentRace_Frontend/.gitignore b/SerpentRace_Frontend/.gitignore deleted file mode 100644 index a547bf36..00000000 --- a/SerpentRace_Frontend/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/SerpentRace_Frontend/CLEANUP_SUMMARY.md b/SerpentRace_Frontend/CLEANUP_SUMMARY.md deleted file mode 100644 index e6c9a58a..00000000 --- a/SerpentRace_Frontend/CLEANUP_SUMMARY.md +++ /dev/null @@ -1,96 +0,0 @@ -# ⚡ Gyors Összefoglaló - Felesleges Adatok Tisztítás - -## 🎯 Mi a probléma? - -A frontend **10 felesleges mezőt** küld a backendnek minden kártya mentésekor. - -## 📊 Számok - -- **Felesleges deck mezők:** 1 db (`description`) -- **Felesleges kártya mezők:** 9 db -- **Payload csökkenés:** ~32-60% -- **Implementációs idő:** ~3-4 óra - -## ✅ Használt mezők (BACKEND) - -```javascript -{ - name: "Pakli neve", - type: 2, // 0=LUCK, 1=JOKER, 2=QUESTION - ctype: 1, // 0=PUBLIC, 1=PRIVATE, 2=ORGANIZATION - cards: [ - { - text: "Kérdés szövege", - type: 0, // CardType enum (0-4) - answer: "..." // TÍPUS-SPECIFIKUS formátum! - } - ] -} -``` - -## ❌ Felesleges mezők (TÖRLENDŐ) - -### Deck: -- `description` - nincs a backend sémában - -### Kártya: -- `id` (frontend generált) - backend UUID-t használ -- `question` - duplikáció (`text` használandó) -- `statement` - duplikáció (`text` használandó) -- `options` - `answer` array-ben kell lennie -- `correctAnswer` - `answer` array-ben kell lennie -- `leftItems`, `rightItems`, `correctPairs` - `answer` array-ben kell lennie -- `acceptedAnswers` - `answer` array-ként kell lennie -- `hint` - nincs implementálva - -## 🔄 Helyes answer formátumok - -| Típus | answer formátum | -|-------|----------------| -| QUIZ (0) | `[{answer: "A", text: "...", correct: true}, ...]` | -| PAIRING (1) | `[{left: "...", right: "..."}, ...]` | -| OWN_ANSWER (2) | `["answer1", "answer2", ...]` | -| TRUE_FALSE (3) | `true` vagy `false` | -| CLOSER (4) | `{correct: 123, percent: 10}` | - -## 🛠️ Következő lépések - -1. ✅ Olvasd el: `FRONTEND_TO_BACKEND_DATA_CLEANUP.md` -2. 🔧 Implementáld: `cardBackendConverter.js` utility -3. 🔄 Módosítsd: `DeckCreator.jsx` mentés logikát -4. ✅ Teszteld: minden kártyatípust - -## 📁 Kapcsolódó fájlok - -- **Részletes dokumentáció:** `FRONTEND_TO_BACKEND_DATA_CLEANUP.md` -- **Módosítandó frontend:** `src/pages/DeckCreator/DeckCreator.jsx` -- **Backend referencia:** `SerpentRace_Backend/src/Application/Services/CardProcessingService.ts` - ---- - -**Gyors példa:** - -```javascript -// ❌ ROSSZ (jelenleg) -{ - text: "Kérdés", - question: "Kérdés", // Duplikáció - options: ["A", "B", "C"], // Felesleges - correctAnswer: 0 // Felesleges -} - -// ✅ JÓ (célállapot) -{ - text: "Kérdés", - type: 0, - answer: [ - {answer: "A", text: "A", correct: true}, - {answer: "B", text: "B", correct: false}, - {answer: "C", text: "C", correct: false} - ] -} -``` - ---- - -📖 **Teljes dokumentáció:** Lásd `FRONTEND_TO_BACKEND_DATA_CLEANUP.md` diff --git a/SerpentRace_Frontend/README.md b/SerpentRace_Frontend/README.md deleted file mode 100644 index 7059a962..00000000 --- a/SerpentRace_Frontend/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# React + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh - -## Expanding the ESLint configuration - -If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the [TS template](https://github.com/vitejs/vite/tree/main/packages/create-vite/template-react-ts) for information on how to integrate TypeScript and [`typescript-eslint`](https://typescript-eslint.io) in your project. diff --git a/SerpentRace_Frontend/eslint.config.js b/SerpentRace_Frontend/eslint.config.js deleted file mode 100644 index ec2b712d..00000000 --- a/SerpentRace_Frontend/eslint.config.js +++ /dev/null @@ -1,33 +0,0 @@ -import js from '@eslint/js' -import globals from 'globals' -import reactHooks from 'eslint-plugin-react-hooks' -import reactRefresh from 'eslint-plugin-react-refresh' - -export default [ - { ignores: ['dist'] }, - { - files: ['**/*.{js,jsx}'], - languageOptions: { - ecmaVersion: 2020, - globals: globals.browser, - parserOptions: { - ecmaVersion: 'latest', - ecmaFeatures: { jsx: true }, - sourceType: 'module', - }, - }, - plugins: { - 'react-hooks': reactHooks, - 'react-refresh': reactRefresh, - }, - rules: { - ...js.configs.recommended.rules, - ...reactHooks.configs.recommended.rules, - 'no-unused-vars': ['error', { varsIgnorePattern: '^[A-Z_]' }], - 'react-refresh/only-export-components': [ - 'warn', - { allowConstantExport: true }, - ], - }, - }, -] diff --git a/SerpentRace_Frontend/index.html b/SerpentRace_Frontend/index.html deleted file mode 100644 index 8ce9494b..00000000 --- a/SerpentRace_Frontend/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - SerpentRace - - -
- - - diff --git a/SerpentRace_Frontend/nginx.conf b/SerpentRace_Frontend/nginx.conf deleted file mode 100644 index fa4630a8..00000000 --- a/SerpentRace_Frontend/nginx.conf +++ /dev/null @@ -1,60 +0,0 @@ -server { - listen 80; - server_name localhost; - root /usr/share/nginx/html; - index index.html index.htm; - - # Enable gzip compression - gzip on; - gzip_vary on; - gzip_min_length 1024; - gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json; - - # Security headers - add_header X-Frame-Options "SAMEORIGIN" always; - add_header X-Content-Type-Options "nosniff" always; - add_header X-XSS-Protection "1; mode=block" always; - - # Handle client routing - location / { - try_files $uri $uri/ /index.html; - } - - # API proxy to backend - location /api/ { - proxy_pass http://backend:3000/; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection 'upgrade'; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - proxy_cache_bypass $http_upgrade; - } - - # WebSocket support - location /socket.io/ { - proxy_pass http://backend:3000; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "upgrade"; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Forwarded-Proto $scheme; - } - - # Static assets caching - location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { - expires 1y; - add_header Cache-Control "public, immutable"; - } - - # Health check endpoint - location /health { - access_log off; - return 200 "healthy\n"; - add_header Content-Type text/plain; - } -} diff --git a/SerpentRace_Frontend/package-lock.json b/SerpentRace_Frontend/package-lock.json deleted file mode 100644 index 4470baf7..00000000 --- a/SerpentRace_Frontend/package-lock.json +++ /dev/null @@ -1,4002 +0,0 @@ -{ - "name": "frontend", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "frontend", - "version": "0.0.0", - "dependencies": { - "@dnd-kit/core": "^6.3.1", - "@dnd-kit/sortable": "^10.0.0", - "@dnd-kit/utilities": "^3.2.2", - "@tailwindcss/vite": "^4.1.7", - "axios": "^1.12.2", - "framer-motion": "^12.19.1", - "react": "^19.1.0", - "react-dom": "^19.1.0", - "react-icons": "^5.5.0", - "react-router-dom": "^7.6.0", - "react-toastify": "^11.0.5", - "socket.io-client": "^4.8.1", - "tailwindcss": "^4.1.7" - }, - "devDependencies": { - "@eslint/js": "^9.25.0", - "@types/react": "^19.1.2", - "@types/react-dom": "^19.1.2", - "@vitejs/plugin-react": "^4.4.1", - "eslint": "^9.25.0", - "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.19", - "globals": "^16.0.0", - "terser": "^5.36.0", - "vite": "^6.3.5" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.2.tgz", - "integrity": "sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz", - "integrity": "sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helpers": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.1.tgz", - "integrity": "sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.27.1", - "@babel/types": "^7.27.1", - "@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-compilation-targets": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", - "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.2", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", - "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz", - "integrity": "sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", - "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", - "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", - "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.1.tgz", - "integrity": "sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz", - "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.27.1" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", - "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", - "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/template": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", - "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/parser": "^7.27.2", - "@babel/types": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.1.tgz", - "integrity": "sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.1", - "@babel/parser": "^7.27.1", - "@babel/template": "^7.27.1", - "@babel/types": "^7.27.1", - "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==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", - "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@dnd-kit/accessibility": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.1.1.tgz", - "integrity": "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@dnd-kit/core": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.3.1.tgz", - "integrity": "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==", - "license": "MIT", - "dependencies": { - "@dnd-kit/accessibility": "^3.1.1", - "@dnd-kit/utilities": "^3.2.2", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@dnd-kit/sortable": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-10.0.0.tgz", - "integrity": "sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg==", - "license": "MIT", - "dependencies": { - "@dnd-kit/utilities": "^3.2.2", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@dnd-kit/core": "^6.3.0", - "react": ">=16.8.0" - } - }, - "node_modules/@dnd-kit/utilities": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.2.tgz", - "integrity": "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", - "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", - "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", - "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", - "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", - "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", - "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", - "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", - "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", - "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", - "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", - "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", - "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", - "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", - "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", - "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", - "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", - "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", - "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", - "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", - "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", - "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", - "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", - "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", - "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", - "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", - "dev": true, - "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/config-helpers": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", - "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", - "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "9.31.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.31.0.tgz", - "integrity": "sha512-LOm5OVt7D4qiKCqoiPbA7LWmI+tbw1VbTUowBcUMgQSuM6poJufkFkYDcQpo5KfgD39TnNySV26QjOh7VFpSyw==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "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, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", - "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", - "dev": true, - "dependencies": { - "@eslint/core": "^0.15.1", - "levn": "^0.4.1" - }, - "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": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "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==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.2.tgz", - "integrity": "sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.2.tgz", - "integrity": "sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.2.tgz", - "integrity": "sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.2.tgz", - "integrity": "sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.2.tgz", - "integrity": "sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.2.tgz", - "integrity": "sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.2.tgz", - "integrity": "sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.2.tgz", - "integrity": "sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.2.tgz", - "integrity": "sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.2.tgz", - "integrity": "sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.2.tgz", - "integrity": "sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.2.tgz", - "integrity": "sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.2.tgz", - "integrity": "sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.2.tgz", - "integrity": "sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.2.tgz", - "integrity": "sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.2.tgz", - "integrity": "sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.2.tgz", - "integrity": "sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.2.tgz", - "integrity": "sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.2.tgz", - "integrity": "sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.2.tgz", - "integrity": "sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "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==" - }, - "node_modules/@tailwindcss/node": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.7.tgz", - "integrity": "sha512-9rsOpdY9idRI2NH6CL4wORFY0+Q6fnx9XP9Ju+iq/0wJwGD5IByIgFmwVbyy4ymuyprj8Qh4ErxMKTUL4uNh3g==", - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.3.0", - "enhanced-resolve": "^5.18.1", - "jiti": "^2.4.2", - "lightningcss": "1.30.1", - "magic-string": "^0.30.17", - "source-map-js": "^1.2.1", - "tailwindcss": "4.1.7" - } - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.7.tgz", - "integrity": "sha512-5SF95Ctm9DFiUyjUPnDGkoKItPX/k+xifcQhcqX5RA85m50jw1pT/KzjdvlqxRja45Y52nR4MR9fD1JYd7f8NQ==", - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "detect-libc": "^2.0.4", - "tar": "^7.4.3" - }, - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.7", - "@tailwindcss/oxide-darwin-arm64": "4.1.7", - "@tailwindcss/oxide-darwin-x64": "4.1.7", - "@tailwindcss/oxide-freebsd-x64": "4.1.7", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.7", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.7", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.7", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.7", - "@tailwindcss/oxide-linux-x64-musl": "4.1.7", - "@tailwindcss/oxide-wasm32-wasi": "4.1.7", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.7", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.7" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.7.tgz", - "integrity": "sha512-IWA410JZ8fF7kACus6BrUwY2Z1t1hm0+ZWNEzykKmMNM09wQooOcN/VXr0p/WJdtHZ90PvJf2AIBS/Ceqx1emg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.7.tgz", - "integrity": "sha512-81jUw9To7fimGGkuJ2W5h3/oGonTOZKZ8C2ghm/TTxbwvfSiFSDPd6/A/KE2N7Jp4mv3Ps9OFqg2fEKgZFfsvg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.7.tgz", - "integrity": "sha512-q77rWjEyGHV4PdDBtrzO0tgBBPlQWKY7wZK0cUok/HaGgbNKecegNxCGikuPJn5wFAlIywC3v+WMBt0PEBtwGw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.7.tgz", - "integrity": "sha512-RfmdbbK6G6ptgF4qqbzoxmH+PKfP4KSVs7SRlTwcbRgBwezJkAO3Qta/7gDy10Q2DcUVkKxFLXUQO6J3CRvBGw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.7.tgz", - "integrity": "sha512-OZqsGvpwOa13lVd1z6JVwQXadEobmesxQ4AxhrwRiPuE04quvZHWn/LnihMg7/XkN+dTioXp/VMu/p6A5eZP3g==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.7.tgz", - "integrity": "sha512-voMvBTnJSfKecJxGkoeAyW/2XRToLZ227LxswLAwKY7YslG/Xkw9/tJNH+3IVh5bdYzYE7DfiaPbRkSHFxY1xA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.7.tgz", - "integrity": "sha512-PjGuNNmJeKHnP58M7XyjJyla8LPo+RmwHQpBI+W/OxqrwojyuCQ+GUtygu7jUqTEexejZHr/z3nBc/gTiXBj4A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.7.tgz", - "integrity": "sha512-HMs+Va+ZR3gC3mLZE00gXxtBo3JoSQxtu9lobbZd+DmfkIxR54NO7Z+UQNPsa0P/ITn1TevtFxXTpsRU7qEvWg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.7.tgz", - "integrity": "sha512-MHZ6jyNlutdHH8rd+YTdr3QbXrHXqwIhHw9e7yXEBcQdluGwhpQY2Eku8UZK6ReLaWtQ4gijIv5QoM5eE+qlsA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.7.tgz", - "integrity": "sha512-ANaSKt74ZRzE2TvJmUcbFQ8zS201cIPxUDm5qez5rLEwWkie2SkGtA4P+GPTj+u8N6JbPrC8MtY8RmJA35Oo+A==", - "bundleDependencies": [ - "@napi-rs/wasm-runtime", - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util", - "@emnapi/wasi-threads", - "tslib" - ], - "cpu": [ - "wasm32" - ], - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@emnapi/wasi-threads": "^1.0.2", - "@napi-rs/wasm-runtime": "^0.2.9", - "@tybys/wasm-util": "^0.9.0", - "tslib": "^2.8.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.7.tgz", - "integrity": "sha512-HUiSiXQ9gLJBAPCMVRk2RT1ZrBjto7WvqsPBwUrNK2BcdSxMnk19h4pjZjI7zgPhDxlAbJSumTC4ljeA9y0tEw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.7.tgz", - "integrity": "sha512-rYHGmvoHiLJ8hWucSfSOEmdCBIGZIq7SpkPRSqLsH2Ab2YUNgKeAPT1Fi2cx3+hnYOrAb0jp9cRyode3bBW4mQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/vite": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.7.tgz", - "integrity": "sha512-tYa2fO3zDe41I7WqijyVbRd8oWT0aEID1Eokz5hMT6wShLIHj3yvwj9XbfuloHP9glZ6H+aG2AN/+ZrxJ1Y5RQ==", - "license": "MIT", - "dependencies": { - "@tailwindcss/node": "4.1.7", - "@tailwindcss/oxide": "4.1.7", - "tailwindcss": "4.1.7" - }, - "peerDependencies": { - "vite": "^5.2.0 || ^6" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", - "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", - "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 - }, - "node_modules/@types/react": { - "version": "19.1.4", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.4.tgz", - "integrity": "sha512-EB1yiiYdvySuIITtD5lhW4yPyJ31RkJkkDw794LaQYrxCSaQV/47y5o1FMC4zF9ZyjUjzJMZwbovEnT5yHTW6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "19.1.5", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.5.tgz", - "integrity": "sha512-CMCjrWucUBZvohgZxkjd6S9h0nZxXjzus6yDfUb+xLxYM7VvjKNH1tQrE9GWLql1XoOP4/Ds3bwFqShHUYraGg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": "^19.0.0" - } - }, - "node_modules/@vitejs/plugin-react": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.4.1.tgz", - "integrity": "sha512-IpEm5ZmeXAP/osiBXVVP5KjFMzbWOonMs0NaQQl+xYnUAcq4oHUBsF2+p4MgKWG4YMmFYJU8A6sxRPuowllm6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.26.10", - "@babel/plugin-transform-react-jsx-self": "^7.25.9", - "@babel/plugin-transform-react-jsx-source": "^7.25.9", - "@types/babel__core": "^7.20.5", - "react-refresh": "^0.17.0" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "devOptional": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/browserslist": { - "version": "4.24.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", - "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001716", - "electron-to-chromium": "^1.5.149", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/callsites": { - "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" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001718", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", - "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "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", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/csstype": { - "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.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-libc": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", - "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.155", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.155.tgz", - "integrity": "sha512-ps5KcGGmwL8VaeJlvlDlu4fORQpv3+GIcF5I3f9tUKUlJ/wsysh6HU8P5L1XWRYeXfA0oJd4PyM8ds8zTFf6Ng==", - "dev": true, - "license": "ISC" - }, - "node_modules/engine.io-client": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz", - "integrity": "sha512-T0iLjnyNWahNyv/lcjS2y4oE358tVS/SYQNxYXGAJ9/GLgH4VCvOQ/mhTjqU88mLZCQgiG8RIegFHYCdVC+j5w==", - "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-client/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.18.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", - "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/esbuild": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", - "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.4", - "@esbuild/android-arm": "0.25.4", - "@esbuild/android-arm64": "0.25.4", - "@esbuild/android-x64": "0.25.4", - "@esbuild/darwin-arm64": "0.25.4", - "@esbuild/darwin-x64": "0.25.4", - "@esbuild/freebsd-arm64": "0.25.4", - "@esbuild/freebsd-x64": "0.25.4", - "@esbuild/linux-arm": "0.25.4", - "@esbuild/linux-arm64": "0.25.4", - "@esbuild/linux-ia32": "0.25.4", - "@esbuild/linux-loong64": "0.25.4", - "@esbuild/linux-mips64el": "0.25.4", - "@esbuild/linux-ppc64": "0.25.4", - "@esbuild/linux-riscv64": "0.25.4", - "@esbuild/linux-s390x": "0.25.4", - "@esbuild/linux-x64": "0.25.4", - "@esbuild/netbsd-arm64": "0.25.4", - "@esbuild/netbsd-x64": "0.25.4", - "@esbuild/openbsd-arm64": "0.25.4", - "@esbuild/openbsd-x64": "0.25.4", - "@esbuild/sunos-x64": "0.25.4", - "@esbuild/win32-arm64": "0.25.4", - "@esbuild/win32-ia32": "0.25.4", - "@esbuild/win32-x64": "0.25.4" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "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" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.31.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.31.0.tgz", - "integrity": "sha512-QldCVh/ztyKJJZLr4jXNUByx3gR+TDYZCRXEktiZoUR3PGy4qCmSbkxcIle8GEwGpb5JBZazlaJ/CxLidXdEbQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.0", - "@eslint/core": "^0.15.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.31.0", - "@eslint/plugin-kit": "^0.3.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", - "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.20", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", - "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "eslint": ">=8.40" - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fdir": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", - "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/file-entry-cache": { - "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": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "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.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/framer-motion": { - "version": "12.19.1", - "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.19.1.tgz", - "integrity": "sha512-nq9hwWAEKf4gzprbOZzKugLV5OVKF7zrNDY6UOVu+4D3ZgIkg8L9Jy6AMrpBM06fhbKJ6LEG6UY5+t7Eq6wNlg==", - "license": "MIT", - "dependencies": { - "motion-dom": "^12.19.0", - "motion-utils": "^12.19.0", - "tslib": "^2.4.0" - }, - "peerDependencies": { - "@emotion/is-prop-valid": "*", - "react": "^18.0.0 || ^19.0.0", - "react-dom": "^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@emotion/is-prop-valid": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "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", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.1.0.tgz", - "integrity": "sha512-aibexHNbb/jiUSObBgpHLj+sIuUmJnYcgXBlrfsiDZ9rt4aF2TFRbyLgZ2iFQuVZ1K5Mx3FVkbKRSgKrbK3K2g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "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", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/jiti": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", - "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "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": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "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" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "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", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lightningcss": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", - "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-darwin-arm64": "1.30.1", - "lightningcss-darwin-x64": "1.30.1", - "lightningcss-freebsd-x64": "1.30.1", - "lightningcss-linux-arm-gnueabihf": "1.30.1", - "lightningcss-linux-arm64-gnu": "1.30.1", - "lightningcss-linux-arm64-musl": "1.30.1", - "lightningcss-linux-x64-gnu": "1.30.1", - "lightningcss-linux-x64-musl": "1.30.1", - "lightningcss-win32-arm64-msvc": "1.30.1", - "lightningcss-win32-x64-msvc": "1.30.1" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", - "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", - "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", - "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", - "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", - "cpu": [ - "arm" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", - "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", - "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", - "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", - "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", - "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", - "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "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", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minizlib": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", - "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/motion-dom": { - "version": "12.19.0", - "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.19.0.tgz", - "integrity": "sha512-m96uqq8VbwxFLU0mtmlsIVe8NGGSdpBvBSHbnnOJQxniPaabvVdGgxSamhuDwBsRhwX7xPxdICgVJlOpzn/5bw==", - "license": "MIT", - "dependencies": { - "motion-utils": "^12.19.0" - } - }, - "node_modules/motion-utils": { - "version": "12.19.0", - "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.19.0.tgz", - "integrity": "sha512-BuFTHINYmV07pdWs6lj6aI63vr2N4dg0vR+td0rtrdpWOhBzIkEklZyLcvKBoEtwSqx8Jg06vUB5RS0xDiUybw==", - "license": "MIT" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "dev": true, - "license": "MIT" - }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "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" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "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==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/react": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", - "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", - "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", - "license": "MIT", - "dependencies": { - "scheduler": "^0.26.0" - }, - "peerDependencies": { - "react": "^19.1.0" - } - }, - "node_modules/react-icons": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", - "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", - "license": "MIT", - "peerDependencies": { - "react": "*" - } - }, - "node_modules/react-refresh": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", - "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-router": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.6.0.tgz", - "integrity": "sha512-GGufuHIVCJDbnIAXP3P9Sxzq3UUsddG3rrI3ut1q6m0FI6vxVBF3JoPQ38+W/blslLH4a5Yutp8drkEpXoddGQ==", - "license": "MIT", - "dependencies": { - "cookie": "^1.0.1", - "set-cookie-parser": "^2.6.0" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - } - } - }, - "node_modules/react-router-dom": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.6.0.tgz", - "integrity": "sha512-DYgm6RDEuKdopSyGOWZGtDfSm7Aofb8CCzgkliTjtu/eDuB0gcsv6qdFhhi8HdtmA+KHkt5MfZ5K2PdzjugYsA==", - "license": "MIT", - "dependencies": { - "react-router": "7.6.0" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "react": ">=18", - "react-dom": ">=18" - } - }, - "node_modules/react-router/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/react-toastify": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-11.0.5.tgz", - "integrity": "sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==", - "license": "MIT", - "dependencies": { - "clsx": "^2.1.1" - }, - "peerDependencies": { - "react": "^18 || ^19", - "react-dom": "^18 || ^19" - } - }, - "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" - } - }, - "node_modules/rollup": { - "version": "4.40.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.2.tgz", - "integrity": "sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==", - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.7" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.40.2", - "@rollup/rollup-android-arm64": "4.40.2", - "@rollup/rollup-darwin-arm64": "4.40.2", - "@rollup/rollup-darwin-x64": "4.40.2", - "@rollup/rollup-freebsd-arm64": "4.40.2", - "@rollup/rollup-freebsd-x64": "4.40.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.40.2", - "@rollup/rollup-linux-arm-musleabihf": "4.40.2", - "@rollup/rollup-linux-arm64-gnu": "4.40.2", - "@rollup/rollup-linux-arm64-musl": "4.40.2", - "@rollup/rollup-linux-loongarch64-gnu": "4.40.2", - "@rollup/rollup-linux-powerpc64le-gnu": "4.40.2", - "@rollup/rollup-linux-riscv64-gnu": "4.40.2", - "@rollup/rollup-linux-riscv64-musl": "4.40.2", - "@rollup/rollup-linux-s390x-gnu": "4.40.2", - "@rollup/rollup-linux-x64-gnu": "4.40.2", - "@rollup/rollup-linux-x64-musl": "4.40.2", - "@rollup/rollup-win32-arm64-msvc": "4.40.2", - "@rollup/rollup-win32-ia32-msvc": "4.40.2", - "@rollup/rollup-win32-x64-msvc": "4.40.2", - "fsevents": "~2.3.2" - } - }, - "node_modules/scheduler": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", - "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "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", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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==", - "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-client/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "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==", - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "devOptional": true, - "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", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tailwindcss": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.7.tgz", - "integrity": "sha512-kr1o/ErIdNhTz8uzAYL7TpaUuzKIE6QPQ4qmSdxnoX/lo+5wmUHQA6h3L5yIqEImSRnAAURDirLu/BgiXGPAhg==", - "license": "MIT" - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", - "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/terser": { - "version": "5.44.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz", - "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==", - "devOptional": true, - "license": "BSD-2-Clause", - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.15.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", - "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", - "license": "MIT", - "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/vite": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", - "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "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/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true, - "license": "ISC" - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/SerpentRace_Frontend/package.json b/SerpentRace_Frontend/package.json deleted file mode 100644 index 3a4763d8..00000000 --- a/SerpentRace_Frontend/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "frontend", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "lint": "eslint .", - "preview": "vite preview" - }, - "dependencies": { - "@dnd-kit/core": "^6.3.1", - "@dnd-kit/sortable": "^10.0.0", - "@dnd-kit/utilities": "^3.2.2", - "@tailwindcss/vite": "^4.1.7", - "axios": "^1.12.2", - "framer-motion": "^12.19.1", - "react": "^19.1.0", - "react-dom": "^19.1.0", - "react-icons": "^5.5.0", - "react-router-dom": "^7.6.0", - "react-toastify": "^11.0.5", - "socket.io-client": "^4.8.1", - "tailwindcss": "^4.1.7" - }, - "devDependencies": { - "@eslint/js": "^9.25.0", - "@types/react": "^19.1.2", - "@types/react-dom": "^19.1.2", - "@vitejs/plugin-react": "^4.4.1", - "eslint": "^9.25.0", - "eslint-plugin-react-hooks": "^5.2.0", - "eslint-plugin-react-refresh": "^0.4.19", - "globals": "^16.0.0", - "terser": "^5.36.0", - "vite": "^6.3.5" - } -} diff --git a/SerpentRace_Frontend/src/App.jsx b/SerpentRace_Frontend/src/App.jsx deleted file mode 100644 index 9a0c72b9..00000000 --- a/SerpentRace_Frontend/src/App.jsx +++ /dev/null @@ -1,91 +0,0 @@ -import { useState, useEffect } from "react" -import { BrowserRouter as Router, Route, Routes } from "react-router-dom" -import { ROUTES } from "./utils/routes" -import AuthRegister from "./pages/Auth/AuthRegister" -import AuthLogin from "./pages/Auth/AuthLogin" -import Test from "./pages/Testing/Test" -import ForgotPassword from "./pages/Auth/ForgotPassword" -import ResetPassword from "./pages/Auth/ResetPassword" -import Landingpage from "./pages/Landing/Landingpage" -import Home from "./pages/Landing/Home" -import DeckManagerPage from "./pages/Decks/DeckManagerPage" -import Card_display from "./pages/Decks/Card_display" -import DeckCreator from "./pages/DeckCreator/DeckCreator" -import CompanyHub from "./pages/Contacts/Contacts" -import About from "./pages/About/About" -import ScrollToTop from "./components/ScrollToTop" -import GameScreen from "./pages/Game/GameScreen" -import GameTest from "./pages/Game/GameTest" -import Reports from "./pages/Report/Reports" -import Lobby from "./pages/Game/Lobby" -import ProfileCard from "./components/Userdetails/Userdetails" -import { ToastConfig } from "./components/Toastify/toastifyServices" // ✅ fontos: named import, nem default! -import VerifyEmailPage from "./pages/Auth/VerifyEmailPage" -import ChooseDeck from "./pages/Game/ChooseDeck" -import PlayerSetup from "./pages/Game/PlayerSetup" -import GameModalsDemo from "./pages/Game/GameModalsDemo" -import { GameWebSocketProvider } from "./contexts/GameWebSocketContext" - -function App() { - const [isMobile, setIsMobile] = useState(false) - - useEffect(() => { - const handleResize = () => { - setIsMobile(window.innerWidth <= 1280) - } - - handleResize() - window.addEventListener("resize", handleResize) - - return () => window.removeEventListener("resize", handleResize) - }, []) - - // if (isMobile) { - // return ( - // - // - // } /> - // } /> - // } /> - // - // - // ); - // } - - return ( - <> - - - - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - {/* } /> */} - } /> - } /> - } /> - - - - - {/* ✅ Toastify Container */} - - - ) -} - -export default App diff --git a/SerpentRace_Frontend/src/api/deckApi.js b/SerpentRace_Frontend/src/api/deckApi.js deleted file mode 100644 index 1a9460a7..00000000 --- a/SerpentRace_Frontend/src/api/deckApi.js +++ /dev/null @@ -1,58 +0,0 @@ -import { apiClient } from './userApi' - -// Create a new deck in the backend -export const createDeck = async (deck) => { - try { - const response = await apiClient.post('/decks', deck) - return response.data - } catch (err) { - throw err - } -} - -// Get paginated decks (authenticated) -export const getDecksPage = async (from = 0, to = 49) => { - try { - const response = await apiClient.get(`/decks/page/${from}/${to}`) - return response.data - } catch (err) { - throw err - } -} - -// Get a specific deck by ID (authenticated) -export const getDeckById = async (deckId) => { - try { - const response = await apiClient.get(`/decks/${deckId}`) - return response.data - } catch (err) { - throw err - } -} - -// Update an existing deck (authenticated) -export const updateDeck = async (deckId, deck) => { - try { - const response = await apiClient.patch(`/decks/${deckId}`, deck) - return response.data - } catch (err) { - throw err - } -} - -// Delete a deck (soft delete) (authenticated) -export const deleteDeck = async (deckId) => { - try { - const response = await apiClient.delete(`/decks/${deckId}`) - return response.data - } catch (err) { - throw err - } -} - -export default { - createDeck, - getDeckById, - updateDeck, - deleteDeck -} diff --git a/SerpentRace_Frontend/src/api/gameApi.js b/SerpentRace_Frontend/src/api/gameApi.js deleted file mode 100644 index 7a512847..00000000 --- a/SerpentRace_Frontend/src/api/gameApi.js +++ /dev/null @@ -1,80 +0,0 @@ -import { apiClient } from './userApi'; - -/** - * Create a new game - * @param {Object} gameData - Game creation data - * @param {string[]} gameData.deckids - Array of deck UUIDs - * @param {number} gameData.maxplayers - Maximum players (2-8) - * @param {number} gameData.logintype - 0=PUBLIC, 1=PRIVATE, 2=ORGANIZATION - * @returns {Promise} Game data with gameCode - */ -export const createGame = async (gameData) => { - try { - const response = await apiClient.post('/games/start', gameData); - return response.data; - } catch (error) { - console.error('Error creating game:', error); - throw error; - } -}; - -/** - * Join an existing game - * @param {Object} joinData - Join game data - * @param {string} joinData.gameCode - 6-character game code - * @param {string} [joinData.playerName] - Player name (required for public games) - * @returns {Promise} Game data with gameToken - */ -export const joinGame = async (joinData) => { - try { - const response = await apiClient.post('/games/join', joinData); - return response.data; - } catch (error) { - console.error('Error joining game:', error); - console.error('Join game error response:', error.response?.data); - throw error; - } -}; - -/** - * Start the game (gamemaster only) - * @param {string} gameId - Game UUID - * @returns {Promise} Game data with board - */ -export const startGame = async (gameId) => { - try { - const response = await apiClient.post(`/games/${gameId}/start`); - return response.data; - } catch (error) { - console.error('Error starting game:', error); - throw error; - } -}; - -/** - * Get user's games - * @returns {Promise} Array of games - */ -export const getMyGames = async () => { - try { - const response = await apiClient.get('/games/my-games'); - return response.data; - } catch (error) { - console.error('Error fetching games:', error); - throw error; - } -}; - -/** - * Get active public games - * @returns {Promise} Array of active games - */ -export const getActiveGames = async () => { - try { - const response = await apiClient.get('/games/active'); - return response.data; - } catch (error) { - console.error('Error fetching active games:', error); - throw error; - } -}; diff --git a/SerpentRace_Frontend/src/api/userApi.js b/SerpentRace_Frontend/src/api/userApi.js deleted file mode 100644 index af231c48..00000000 --- a/SerpentRace_Frontend/src/api/userApi.js +++ /dev/null @@ -1,109 +0,0 @@ -import axios from "axios" - -export const API_CONFIG = { - baseURL: (import.meta.env.VITE_API_URL ? import.meta.env.VITE_API_URL : "") + "/api", - wsURL: "http://localhost:3000", - timeout: 10000, - retryAttempts: 3, -} - -export const apiClient = axios.create({ - baseURL: API_CONFIG.baseURL, - timeout: API_CONFIG.timeout, - withCredentials: true, // Important for cookie-based auth - headers: { - "Content-Type": "application/json", - }, -}) - -//login -export const login = async (username, password) => { - try { - const response = await apiClient.post("/users/login", { username, password }) - return response - } catch (error) { - throw error - } -} - -//register -export const register = async (username, email, password, fname, lname, phone) => { - try { - const response = await apiClient.post("/users/create", { username, email, password, fname, lname, phone }) - return response - } catch (error) { - throw error - } -} - -// Get current user's game statistics -export const getUserStats = async () => { - try { - const response = await apiClient.get("/users/me/stats") - return response.data - } catch (error) { - throw error - } -} - - -// Email verification - POST -export const verifyEmail = async (token) => { - try { - const response = await apiClient.post(`/users/verify-email/${token}`); - return response; - } catch (error) { - throw error; - } -}; - -// Get current user profile -export const getUserProfile = async () => { - try { - const response = await apiClient.get("/users/profile"); - return response.data; - } catch (error) { - throw error; - } -}; - -// Update current user profile -export const updateUserProfile = async (data) => { - try { - const response = await apiClient.patch("/users/profile", data); - return response.data; - } catch (error) { - throw error; - } -}; - -// Delete current user profile -export const deleteUserProfile = async () => { - try { - const response = await apiClient.delete("/users/profile"); - return response.data; - } catch (error) { - throw error; - } -}; - -// Request password reset -export const forgotPassword = async (email) => { - try { - const response = await apiClient.post("/users/forgot-password", { email }); - return response.data; - } catch (error) { - throw error; - } -}; - -// Reset password with token -export const resetPassword = async (token, newPassword) => { - try { - const response = await apiClient.post("/users/reset-password", { token, newPassword }); - return response.data; - } catch (error) { - throw error; - } -}; - diff --git a/SerpentRace_Frontend/src/assets/SerpentRace_Animation/Path.module.css b/SerpentRace_Frontend/src/assets/SerpentRace_Animation/Path.module.css deleted file mode 100644 index fb29c73e..00000000 --- a/SerpentRace_Frontend/src/assets/SerpentRace_Animation/Path.module.css +++ /dev/null @@ -1,96 +0,0 @@ -.animation { - animation: fill 0.5s ease forwards 2.9s; -} - -.path0 { - stroke-dasharray: 603.0596923828125; - stroke-dashoffset: 603.0596923828125; - animation: draw 3s ease-in-out forwards; - animation-delay: 0.45s; -} - -.path1 { - stroke-dasharray: 503.0904846191406; - stroke-dashoffset: 503.0904846191406; - animation: draw 3s ease-in-out forwards; - animation-delay: 0.5s; -} - -.path2 { - stroke-dasharray: 625.779541015625; - stroke-dashoffset: 625.779541015625; - animation: draw 3s ease-in-out forwards; - animation-delay: 0.45s; -} - -.path3 { - stroke-dasharray: 714.129638671875; - stroke-dashoffset: 714.129638671875; - animation: draw 3s ease-in-out forwards; - animation-delay: 0.4s; -} - -.path4 { - stroke-dasharray: 427.98114013671875; - stroke-dashoffset: 427.98114013671875; - animation: draw 3s ease-in-out forwards; - animation-delay: 0.35s; -} - -.path5 { - stroke-dasharray: 593.7645263671875; - stroke-dashoffset: 593.7645263671875; - animation: draw 3s ease-in-out forwards; - animation-delay: 0.3s; -} - -.path6 { - stroke-dasharray: 603.0399780273438; - stroke-dashoffset: 603.0399780273438; - animation: draw 3s ease-in-out forwards; - animation-delay: 0.25s; -} - -.path7 { - stroke-dasharray: 731.757568359375; - stroke-dashoffset: 731.757568359375; - animation: draw 3s ease-in-out forwards; - animation-delay: 0.2s; -} - -.path8 { - stroke-dasharray: 382.3065185546875; - stroke-dashoffset: 382.3065185546875; - animation: draw 3s ease-in-out forwards; - animation-delay: 0.2s; -} - -.path9 { - stroke-dasharray: 603.0382690429688; - stroke-dashoffset: 603.0382690429688; - animation: draw 3s ease-in-out forwards; - animation-delay: 0.15s; -} - -.path10 { - stroke-dasharray: 652.2447509765625; - stroke-dashoffset: 652.2447509765625; - animation: draw 3s ease-in-out forwards; - animation-delay: 0.1s; -} - -@keyframes draw { - to { - stroke-dashoffset: 0; - } -} - -@keyframes fill { - from { - fill: transparent; - } - to { - fill: #ffffff; - } -} - diff --git a/SerpentRace_Frontend/src/assets/SerpentRace_Animation/SerpentRace_Animation.jsx b/SerpentRace_Frontend/src/assets/SerpentRace_Animation/SerpentRace_Animation.jsx deleted file mode 100644 index 376466b0..00000000 --- a/SerpentRace_Frontend/src/assets/SerpentRace_Animation/SerpentRace_Animation.jsx +++ /dev/null @@ -1,34 +0,0 @@ -// src/assets/SerpentRace_Animation/SerpentRace_Animation.jsx -// Animációs kiírás: SerpentRace - -import styles from "./Path.module.css"; -import React, { useRef } from "react"; - -const Animation = ({ sizePercentage = 100 }) => { - const width = (1253 * sizePercentage) / 100; - const height = (136 * sizePercentage) / 100; - - // 11 path-hoz refs - const pathRefs = Array.from({ length: 11 }, () => useRef(null)); - - return ( -
- {/* prettier-ignore */} - - - - - - - - - - - - - -
- ); -}; - -export default Animation; diff --git a/SerpentRace_Frontend/src/assets/backgrounds/Background.jsx b/SerpentRace_Frontend/src/assets/backgrounds/Background.jsx deleted file mode 100644 index d198d8a2..00000000 --- a/SerpentRace_Frontend/src/assets/backgrounds/Background.jsx +++ /dev/null @@ -1,97 +0,0 @@ -import React, { useEffect, useState } from "react" -import { motion } from "framer-motion" - -const Background = () => { - const [gridSize, setGridSize] = useState({ cols: 12, rows: 6 }) - const [mousePos, setMousePos] = useState({ x: 0, y: 0 }) - const [path, setPath] = useState([]) - - useEffect(() => { - const updateGrid = () => { - const width = window.innerWidth - const height = window.innerHeight - const cols = Math.max(8, Math.floor(width / 100)) - const rows = Math.max(5, Math.floor(height / 100)) - setGridSize({ cols, rows }) - } - - const handleMouseMove = (e) => { - setMousePos({ x: e.clientX, y: e.clientY }) - } - - updateGrid() - window.addEventListener("resize", updateGrid) - window.addEventListener("mousemove", handleMouseMove) - - return () => { - window.removeEventListener("resize", updateGrid) - window.removeEventListener("mousemove", handleMouseMove) - } - }, []) - - useEffect(() => { - const interval = setInterval(() => { - const newCol = Math.floor(Math.random() * gridSize.cols) - const newRow = Math.floor(Math.random() * gridSize.rows) - setPath((prevPath) => { - const newPath = [...prevPath, { col: newCol, row: newRow, opacity: 1 }] - if (newPath.length > 10) newPath.shift() - return newPath - }) - }, 500) - - const fadeInterval = setInterval(() => { - setPath((prevPath) => - prevPath - .map((point) => ({ ...point, opacity: Math.max(0, point.opacity - 0.05) })) - .filter((point) => point.opacity > 0) - ) - }, 100) - - return () => { - clearInterval(interval) - clearInterval(fadeInterval) - } - }, [gridSize]) - - return ( -
-
- {[...Array(gridSize.cols * gridSize.rows)].map((_, i) => { - const col = i % gridSize.cols - const row = Math.floor(i / gridSize.cols) - const cellX = (col + 0.5) * (window.innerWidth / gridSize.cols) - const cellY = (row + 0.5) * (window.innerHeight / gridSize.rows) - - const dx = cellX - mousePos.x - const dy = cellY - mousePos.y - const distance = Math.sqrt(dx * dx + dy * dy) - const distanceFactor = Math.max(0, 1 - distance / 300) - - const pathPoint = path.find((p) => p.col === col && p.row === row) - const pathOpacity = pathPoint ? pathPoint.opacity : 0 - - return ( - - ) - })} -
-
- ) -} - -export default Background diff --git a/SerpentRace_Frontend/src/assets/pictures/Logo.jsx b/SerpentRace_Frontend/src/assets/pictures/Logo.jsx deleted file mode 100644 index 28376797..00000000 --- a/SerpentRace_Frontend/src/assets/pictures/Logo.jsx +++ /dev/null @@ -1,18 +0,0 @@ -// src/assets/pictures/Logo.png -// Logo kép importálása és paraméterezése - -import React from 'react'; -import logo from './Logo.png'; - -const Logo = ({ size = 100 }) => ( - Logo -); - -export default Logo; - diff --git a/SerpentRace_Frontend/src/assets/pictures/Logo.png b/SerpentRace_Frontend/src/assets/pictures/Logo.png deleted file mode 100644 index 480d8c5d6b36bc25162fc25d6e95388bb2d764ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1004549 zcmXt9cRbbq_rKS?_7x#}lvP&A=5l2uS@}rzC?hL-yVgavkYukUT_ZDGM5tt!b?p(d z=fz#W8{gmi@wo2$;h+0@pV#X=&+~cC^Zn95Pm7M4of-fD(B0R*X9NI%h_@gBh=Ta_ zseDY5_yzPf(t-k~zTbiY0K933cGoM znj~abNCq57uRR}>N6)z+Fg57Gne5E$%>T*3gN#%ajH0uY}*w-w($3_tsDGtcyhOGqb*mf8MXqzgAY>iVdK0z>ax(CsV zQvxGYg?;r*T`1`9fv8+sw;h)6Gi5s*0B+eVU;?%KfVyq*KAg>GAsOzEo_V#kCo%+m(C`vhcp@tWU^jsRQ_hp z8)OIAIC##hL%*NZjAh^LWl0X1UESj4# zy!?O{oRs@ZBs%geBv8=ERinJv@bZ$q9=$poN1rF>1R4mi5_c>$hKfA#4(V|43E06_ zl<}+`f(FPJM&k^r_a~1#1QKim*V`~a(S}EU9_IBORW!M8I9bBsmA+3A4bV+cO*puClA&DVN-rwHW{y3b3_Ydw3#M(i-onKx z2Eno|*J5O5e}04XlZOv{KVQH-9&P4D38oCu&%4$gGc@{(RI--R@C9X2=C3WTafYXU zLg&8RLO*<(Z|q{5`rsZS%XA~ZQyyi>w;8rFfIyCa_{1*N0|atFK@@# z@7h_@lD~OG`Id+9(~(6luU&59iFN;7_R3EUwMDZ=8>;OFLBr9rpM~RQYB=HxQSqfl zv6d2OD|_E-o_TvsNiVs#iUoY3MF{mn1HQKVgE97q$U!BM|vQ zZ|9_|vs^jCa*)pN^;AKsydt8L#?7{3(O~eWf&rQl!n?j6ZYL2fHJxkv&j8UnKavW^ z!c5FtSJtS194c=%TRjl1owhI!7L6}X%FfnU9C+>O>(}Ugbb^vl+J{TH>Ykm(wo=n} zly^dbm&yE=MPKLgup2&~iCc9WhzKK;q|6zbBZg#5B$|(dW=VvzMDO(ZFmESBb|ys9 zck!lH6|}N~F*XQR4R+1gakEpX;C@>Jj>{3Xgw_lf;A-%2y*(QCH7@9L&wM+!^|V)d zqv3g7-nCD&+^^ipJ`tuLxX_VBGYhmZ0D9TQc-2?spz_qvxM9;n&0ln|jiCHJFZtyF ztH<{PgF?@i(8|@56+bi6s>R8EE7v`MV5cYa9-h7Vq#<0=LT$lwsCl{ik!L+jT$j5g zo3bc5x$UmyiyWT`NQtZc6}+L31e^tqN#$J?7h=UbD1tEJF-Jz}I~t9ectAgbxY z#`J}4vsAGmn^aO^gB!y3!2$In#f_ujONWbd)09-no~-^_YIfBZGn9uGFIg$)u@^j3 z=eY+Gq4pErwbo4Iv&Bo%gy8Y`CQj_YONp@BJFEK% zQW_+;z?V4MLbZ2~>LSrbj`g2*eRKWW{A}G3k;wqT)+l){k?n-77y0{`xM;oQ*mOs> zC+jo>r7#~Tt2J%BGSS!iiwcwQQ;qZNlM;P@y=Cs9 z=*P5ivot?8uyc{>Z3Z|v`vb|UsxTGbGeznyYf+I2@6T;7LaL`;MixXT^*&h5zV;;B zd`qq_bE1GS=x+t_!^-8Krw|MiPL*X}vbVSkGOPSA*1pj~PcG4-iUHR#&keI!dMPxz z8DwPRkF6-rEx`6zzt6G?x^H~Kjh!_KUDmEN@i$AND>uyx{mK?vk8-Z88Ou!GY<~nY z95L&5QkI0Zgonf7QWW5>czhgg(WanCWyD9YVJGW5M!(YxB$EC&93N~%O|>DcU1n2n zHLh@uDCqAVT5Zvc&&uK8(9hEO&oUQ5R`&e3?EEuN+eu@SatvWPXFgFyEIR*%1+t1F z0PC3`l>d#JCxP^TEB935Q@=PcKHHOq-w69Du(rL!0>aGT)_ez8b0l=&_i^_5ImJQd z(york?uLwc*f3p&S8i)GbC^=le5ctM$KlOrZSwmjSf$q@an=Z{cs$Nsn zEa>hYZd!Ae&>hhiJ84^VvH1pjPpPWo^zD~$~(rN zyQng9EMb0qIM_pI_pDh}^(#3E%f4fzF}3K%E%3&AV#&c>V=nF7w}TtZ!fvtCk4y} z1G+qKhG6Ro#M-dP-HPOl8-2cnLZspR*hfTVNNvDRrVMSO|-U&M#fe@O$SmR;|!(4S9z)oQDlZ9w5Q6D?c%Mv#tzWkEsa-|RM zFdw0-w3bZ*7MKczJC3@o6F!rcp~>@3LI;xmn=s?_RVIwop!U0Y_cE4$cA7bHrL0h< za((vzOfvF8NW=K2Uq0j_TiPJ|2!{Tc^W`fnjn1G3fH$0`(4m{>b2?2-Arol_h%T&a zU;06;(WbS;%rPJz|95^|Xlvs8RyrJbiC(SYLYKQ8_fD3xKEYFs@Mv6tu%^y1U=^@^ zH>cVJGU@C)H}TQKw69-T*k+!q9#vKQUR%Ugt7%gfFq($76P{U{_qyj(_LPQnDIYja z63z_OHl^XPj!3;?B;tffdi7~%^`NNsPquJkm`Q%#f1+#3$d=muF_Z`LKOB}4V*0j5 z-|?OyNdn2`cE0OO*SuU?P7*b0;6324h)dp3=(;*)2zgpuaqE^6r(d!EgiGc4G1k83 z#6MDRf~4_Qba*Y1wFHzvd8r2Z`E1g;@z2-U;^L~FO@+^u_5h$DO2Egv;8f%WS)x=b z^p^!h2!N?J*<6eNeN8}l?cOh^Hc9_JuBEf`e1)6QY*$Yl6+hNUhF`46i8kNha?^71 zbn!#@&{8e2Q+!I;(fA{Y4p&RLT}GXd(#B6L+K=ai;2|Ev8*H7g`N%#>d7{Ex_)2wS z`!&Big=J5z?S;LJb0?cJm;;QP((nPu`J(SqfJux*LDygoI%VutyEOJkcZ|NV>SRv2 z+eCT@iwtoo9GncMv}2Cz>`yYqazEXozQFS094>w7ODG?>&T&!>OuJ^aj@RPJGyfd0 zzjx4+aOPEXRO?q#3nrT-O)g2^;JuPY|A4qF_O^(KyAs6DSbL-EJ4wev68d?lat)X+XkmA!MO0z!!W zSCx0?AB8T$(!#iZo%v!pvvFSyI0$Lm7~leu2fMIqq2ymxjN0z5S_}PXSgEEubF;Kf zdEKw9<^`h0bFv`O>?+jM1>rEPf3Mz!;vJJVHEC{hL_9o0G+TrmFzl&pZT5yW!^i69 z)r36vR?MnhMO$OQgc~dDJjtU?#es+a5vR=)=1bBf%b%Znxk(%mGoo9NFs#TL4}OEt z?tgZ)@#)3yR@;%VyrM7#@$M(PDx*pS&ZgPq1%GbE3 zs$*H@!m!QWO9QfbtE^#%5oJw-Cee~;>Y^PN*}oc#a=T5oD^3XbHXO&Us`LTEgndfN z$Ist#GWnAgpzX4(?)Jd#FXf|E`X6L z4kkk8EGLELzPSte$4saQu`UCC_yP;*7BZoqXFz7#60D96kC8h2T37k>R4`k0c|}W7 z*U6uHyvk`NI}tch-~-8Mba^?*jyKzp&$41;7+`=4(&gC6M3 zL9R8T=5uF*ZGP|n>X->!M~`=$G)UBIx=wtlwI>!$g}VQN{mmGm?#pfR>aRcO&>|Vy z_^Ev#(7A>`kiZEMP_V=Lwa|d&r5}pXUt5!;7|8PUp6J}I^d&3ty>em>7>0r*w}kkM zEv1c_ZFqT^Ull0ph-mjkyewX|D4LY4A#BO-d=K&c!>acy^t_sIUX5b#$X8HZ$`5AF z4;DvF#r%IfruN9LUBqL%QFnns>bVag6s>IX#5q@i*{`dQeba^J2O8gudOpxS9SDef zWrDxIP@SHJyImKG7bB9F$IwRMPE(gMFx1S2FFKsbpDNrZ_v$=){+I31z|stsTy`yN zb=cA$Q4p~7vNz66Ay?)SLB(0~r3L<-jp7G4VxWO}$U|?~Sr)#D&_@vV{d>&dC-ZlA zgJRZSScHd0Aul&|^p2UM*_nAx;ts2N1cZ@sq=DZYYy*_zAG@KdO=XHYIXHVKb)FMe zwP#jjfX|1RpZ}&AQmT8+-0)038%o+A`M*?PR!X}pC8$igKie-92`M3eA00~I4zkE^ zQSj1X0ng5r!rLf&waY5+Mx$SKdHhYD{_&u^!+8%o zr_R8og8P$mb;uK6YUr}Xs)H}0kCZR*WdzhGbC7^K&3LaswUc*7r`x6HPYm)>QWcGBhp@cDd7s`r&5 z%n_>@yM)N6I%3Y7RRU;4t`fCQYSCsO$M`hQpC4rtzJ(p_YwKUitW^$w(x{^tv#Zk} z{V)Gz()yn-OkNkTD_h`tb1@=yVP7KjKJwHW-;ZP+%AML=Jt%OU*rbGKFleZyHjR^v zcd?Q3MJH*UlBz!ACSy&Tez*NLopCAt zCOfU#*=5Q>iQjLD+{O}@T=m9PExdl5x`NpTxGD@1dCb*!2G1Ho3P&&nCv%5Z94s<) zcrBgoJ2@%d0$o)3miv39|NAK+IxJAtaW`PAwh#Mg?XicorM!Pi!_s2mY*5zSKmPUO z8YOq50g1KX{q?Z^&H|^kXf{IQ%iZY^!n*IRtzVwAdS1wl`MKp}RI*&BVUych7(e^> zch=)(*I=$+cklOk0wbPH^dpOvjuV&vgqc|7Vm4ZnIpxp3GU=14qdaf-kcZs4^6#l< zRRgZ1T*Uue=ynmIGp@s)urt4EVikJadH&g(!PjgX-8IQTWU*?X+QM!ym}Hzy6_lQM z;JBbKTjsi_!s%6xenz_KnKi~XKqC3Bpt9$V)0+t2#A`oi5~aT1w&P7P|VjAv{i?DsqS3?u&FM<uRvU_{S_g-H?HO|7eoLG!)-P^o2iwvx#>^3RO?>Zps#vM)9{TrDS#Hc z5hKN^#1L~fwb#zWQm*EC4&!VuFKXigtv4idIBScf4^MX)I?K8NSHG>i3imShm|yjx z(z(xOU&INwD*^yJJG=g)k1vDnCOL{NtSM#azyqd}elB||Gprgp+X)i?*-ZbVY^kvT zVo&?Lq1QNjUK2sjMd!~#`Mg1}STa5;h|i{84LK6sKmi4@*^fMLv`Hj#ZZ&Y>@8>{p z&G<>aJzzLZk2@VMvvL0JacSYJH7gw;A4SI~Kk3L#PPSXTan+6q6oRbGV9Qt;Rx$wC z2r5tiv4^}P71q-gRw8%j@KyD(KMaGKACGM;dU2rx73v;d=7HYcb)JhnIOgM8l!(zf zn?LR(eTJ;{9O@nYvHL)TP>9-S?>9r*)DzVe6lChsu+C8QY(anGBcdzBWm`3%0C!su z=^B(Z#<-~?4~D8%1eCUvFh?g6V!`i?byAIr4Zf+1z%2%~R0?9jB)_w%0fnYN1qz0` z*`svIXhm*hyn1iaUn4{R&T-A*l|8w|1e}>T(W0H#6)jcd@S7~qMkZrS>sjO3YHW!5aG<5-!*(!BG0)N`Fb(zrsfo{@W zlF?ui!_wOJMn;Hoa^mXv|v{y-d{a8w8!QrXGPkIAE!mox@sBv&5W+&1ESSMc+7@ z(n@_)K$)%!95(lJDus2}@Ht0H45Ruo&alt2RPvwlhVDj*a3!S#(1vn;5&{NQ|Bm~n z2MmuGIfuS;BM@oaHRutwaK;rd|4uuY!q$QptU27g(bmpwW=MY zYA3gY`mzJZ}AKABWKF z5YLtiT2bus>#i4d#08(b9RYbY+_5$oyz>O~b^!9e+HFScW1!L&g%)7b8IjJ|5Khj| zDC9~6i}*L9llstY*Mv|PS0#4EYk9j0;>NenXFWNatD-_wVvQ=Ip?oP`72(jLIIo6i zql$35+VBwZSPSu3JE;_%GBU`Tkify!3?pQJGLyAl3ZL8NJcRqsi;vy2+=hf+t|^aM!7T71fK^fx3(jQ!Af-4*vyqF?`SMVU8`gIIW5~KqjMl7R z-Op^dZkjWptHv&(6z(grH^f4>hYp^;+l@eDvM>U(V*txd{Hp8w9Sk>TAAC1>Pl@#` zgr11BWnNU7UR1xIU(0+hPk(+W&z#`dY+aSHfU&CXY0se6(UGgVV_;yD2(M)sr}d+* zk=YRjpcoEho0?h8DK?`PPnx$~UyE@Ue*eUWzrNuO!75+t2-zK-+@@t__|}Y44Uy*_ zDbQnBkfUZ{F??^Es7Fmn`|<92ee2}p`=Y7mMYB7FQ?5l;9(MM~7&An2P)USC9o!5N z;aAC}|74gB9Bu1CO_t`PpiMHda<@R_3OI_ve$<%kUY2mE+Q!osz*T+LLI5Cn4M8K) zVI}-J-@k2Xf*X6PHH4jo;i{)LNJi)H-=fVC$Z(ru9ofTh$Jn8xrGlW zCx4AE>oBeV?7hj&_r^Eho9MjBt|(S`q*nGSc|oGcNJPN;+YNytjKI+KB z&|xD3+4=Xl)5VVg)1NoXsdW5r>LN3?C#6g0G6g4@3$xBEeUto!)4x=ioP6Ok9W|D>n4_7d|Tw8#iAr4vvOqo5Hy`8gd0UA4On` zTDW^F)2{rK3UA>nJ&JvmWmK%9aOuPoUezq&Gwn}iphYv6r7pIz!qVq7TF9kfyg$+o zkGXSrNI1u)g!%Y6g=S)hb^sS;|MBp#m)=DhuLs@r%OGf}99NuW6~OQ^CEG$M#CWjn zfVwR>LozG_0)v&iU6XB@Hbc1t=O@oKjdy-EWKf#lY?zc_K74QT<4s}(U%VWZ!6w;gp^ z1TYi3POYztHXEt<-r-;52zJgpt9@xc?)9jKNJH?i(Gn?dKd3%~V(RPQ4Gs&T?@K_N zn|FWx%hQL_91lNMx!L$WqvP20{rC}4WK~@N?uZY1C7yuafgx91M-?qAe z-H6g4!;Pb-Y+$EyTI4BXb25XaU|41N{FWWKWz67M^ShnIGf9HGFUjPGLYu9yM#DHs zcg6I0(D`oCA{2OCL*jl>cnL3@Sez_xFNw(dcp&{+qmq&o-Xdho1_Vt^#%n%(ius-C z`w`K@MgBKQ&17_+_-KqQU*3ThZ zcXx{5lUp`^jq%W;aHEPiod((o-&acjRZw>HxuL`garVLx6Y2aO78r^1EW(vCo+z^8 z3a))t4$O9LY8tQy%i0_@boWWS0XxSNUUFUK*PSMO6QLI`^8Qk~6mf);!CvnzAl(l( z79n=EEwql~XP$(Wm3KIuL?d|+yhA}Q5p{C_V%=kzrDxQVQRhxD*h z{jht}odPZvBT?b9pjm3o(488&@ZR;S%4RPARSRg$yj-eJKP>R&BvcrEK3^tHA&d;^ zb3(YEjdPtTUbYIiY4yb~B*nHxP?wpbN65skvQGeRX(~ABCHF?7IocTkd#siAms~nL z0{l7x@~mvp>f}aR4AyLOrT=UHeV~>I^8*dzA2*CEpZ%2hX&dHFPeW5T+3LZVsdKFd zN(|<;&yhTo@iKa6Nez-_0`bLj>$t79#m+&^ZT+iTDW(oHAgr4&;EkME=ioSsyA@}M z^~?E9KEcH2ceK%%V+rV;Z&JkYG;Mveix6p4c1u$=@<0AXw-gT!ZU0~MO z1AQFXmpniOwp&(mecbc!QwxHExfa z@zS~$0k^?}Zddm_{8!o={8nlP9&RQ+ai0!NQjF#zPw|T%4$F!MJ1IP(+%p#w@-xwu zY=lEJVP5+44K|w_BwxjusdRVv!Sm%A(aT3#=Y5;^K|mh`%U>>Z_0w*@p3~(*{DJ-b zmCeodiK_`WP3Pa++n2=Xm6Mi;B__e@Mao{e{rKrafm>b(UVhh9p$On5>Y?b=j(zI0 z0>!Gsp*wY${J_P}j#m2b)OF;u2LT~`|1gV@h*{hhQ4{32c0NxyT|T3c=m^nwdA15f z3uls`7q810J)iPI52JdaooJ=A{Tr@V)A(6#eUb7*IAEi8?DrlChBZ| zpZ*1tmgUZ!Xod>T(e47LuhShM8cYPMLBbPo@bm8yryZ|!LJ`f5L+Cj_0>( z?qEr*ffbj-7D1a!^Tmh*iQKzzCP7r#NdzUga7V+Zu#fHSC%hl=ro$U^^e&-@U|*mD zmHFf}LGU)`^J`2^zf$;TX)wzpwe%tL-80x*#CT0M`7;t>%Wh~ckW;RPr_6{E4yA|N z5gVs$M0Qy%x1OSo-#YqR0u7_d@x#n9rzA2g#74^T$%rZb*9?)K4Dd0>d$$x;+tA97|3Bk4ODrq6;D2Bl*>*hVJJk3M2FPqZ4?sXfbgO7*1rp3(t$&j7gRZpr+;TnxFq}mkry#@ z_u{9*QC^u)+?8(}HiO_Q+$)crn4@`Q45f3Za0oEeQSH zh>KXreC*oiH+hwIo_y{T9WVm-7OIt!l3_=^*7)8adST5wykS@Y%J#R^iC3JHZB9ti zP8#wGxbuk2dS3x~^HD6em2uC58ZBYV>;c0cZ2j?*klTgtG5rai*QrI;2}RIv=r|IoSx4M4<954r%uC zQ`=5DF?^97qBcA#ObU>(oSXIIOsB{qBxwJ&dHeZH2ex0+L0RfUVfw$5w(j7C!~REX zP2aocvoYEkHYQxFI2Sr!Y43s7PZj-mt1}%Hmr(I7}z8_hbpJEhTRAxiGCU2Q-dhXZeaaP`+=HMPc z4cOd=j@a1qT#}sk<&sN|9H+?BW1Z#g9PPPE%-Cq}HHjre9qST*L_+_ixUU(fXJ-8h z2X3*vAbrr0J#ALGB*<|Esw0lAlRC7z5J=D27eVw|VM-zjVUji+Tu1uU<#ht5 z+syq89~Gsk{g)I-qmE-q@FFL&rVKUmGxN@qc`QVC)P~=k;rWAF%jBg9%NdIqI@`U* zS!^o1iZP$efJujU*5a7Y=(pop@#}0&h&*@LuUZBVm(ka#y*#XSwpB^d5Q2DTiwkg%?tbkG4BP z1eB|52zZ62O(1b+lM$gv-A8FdLBPJl=RZ92e_qv@uNWK(S%wn_jy?`~^=zGj<1#6xy*z&BLxOcnPNW8yf#%9P70IypRY8?xE`7C{)hmx~-Kmj_ z>bu8j>fsoud+gaZ76P+aN6w*op#+5LOg5D{1N*Y zwvm^7hw?X{DgBuDW#*iK-&d&jndTy5-U1eWgGg2wJ=z1=*NCB<{=xn{iK5FLRPnU> zeWxceex0kk%+SZtAJqo37IMnz6r1#lA;CE{!wkBi3*Vb;9QKi%AcJ8e6YzM*~H# z=?YDt@y#1QhlUpS7Ng{XHf@O!j8jfHG&RkQGTO(Ej+;f>MoT8zARbPypsa=^zMj5- z^%uf~kLH8U_R&em(1nAe#nTrH9-3U8(e_i$H63}!jU1y%mSF)hQHJPUFWzPjRKNS; z^ALkF%se7=*UtsUClo#P#%ICKyoVGeLikIw0K%u!%p9yC$Q)#U8(Rf<78OZ&{})C#Gj7izX=j}g*y7n`mr9<&6InA ze@GPPx%o{(N9%5wb@@m@DQZW_u4@m-r73U!aGKtX0r6nsWi!eb_6ym-Vwlmm*iB8$!R89!Lak6cIjXojw%WssJJ6%`2g2s&8-BuwC?p+(AlH_y0v}qU2!_!4ZOaf^LPJ?kf-U zPRDlhV&mw$=To|b9VyibM_C@lMl3NEh}-75G`P>dW$l3#R;e2`!OGaxTN4mX3KLcT~@pNzE%hQ;6~G8bzgdCT&&0)TL%E301Dh&oHo=M<34 ztsGsV#bCReukmwmpz}}(z+%?7Nv;NZ8u=?t0CR`$$fV@Fdg{umEVeD{mn7kMw1?vm$1A|ElXr=#=kjDCV=25j(SLAhJ*q(jn{FM#q`OA{?bCE0t#&G8EDMQDMK_^k)(>`pD6aWS6K&o`y>htCQF z-uO+8z)8}}`I>(@lL(5n=JWug;J_$n!Z>kND8EKwfO?!s-l|^w{doTC#+ak$4uVDww#ZNHtt8eW?MSpl;#QDuwzg9@7J@!iuo3a{ z?dI7~^XHkzCtH?S{7@KnIV&1GHKqSQfSjOX0sL#Nj5N58Q9X7+gsko2=7LR#apv@m zO3|8K2vwl&A3q|wK@9ZEMO78 zyy3^Uv_CpLUO2YlaCnGU=%vU07Uu;!CnY7FKXWdE#51dYHi~)WC0W?C&$)F5ZTEN8 zj-0U&mwgcuHW*vN{IMa`h__&ACdTAmM}Gj4;D0=2I{*Xu`I@O^YdEgz;H4$PkTu}6A!3WH%4VkLL= zq#e`a34dDOvG&EBw4~OxoU-0+~c52pr=|O54k25^1 zZpYzvJG^l-a4lWtFwrf)-3dcu=?!g|s*vN%wR7w4Pe5~}7Kr;A1E8wJAg{uPfJe%C z9Z4p0s>Gq(A(2y4*M9yqF3Px9de>)^kvD!+AteuvL)L^sDZ>XQwC3kp-F_7EjMMAh zQgU+y9#z^1dcZ#PebVskRJH9M#+A6|dZ84bh;!Sz_omgODbF1+c{*8KI!x{y`SfA6xyFgSjIHGFLvLRyxqR6@WTMu8t)%4~N<;8h zS9;B~`G`sn$v6dvGUo3>U80~WltXBsi@`0H;KQ27mCpd-yO_OD32~)8?;60tnMH{5 zZnvl9w}_>r#Yp;ydefh8es1!HCM5-WB+(+{EGQL z7alQVR~hpB?OI6X@p;KAh@8G)C3`o=%|Em>Sx(>ZDG@Q-w#jC(9_qn1}u#TFb*d(yi z+fr3Kpo&z4oVtfZX+nJvy%;2ZF?T64_$H8bm^!q!C`W(rnUmO#TkGln;}vG1#Jk)n zBhHy-pd*+^satKzYkuzvD}ACko9drB$y%?j{C&0R*)Ng8bJuUfS626x*znE=)5Wf7ix|P_(Ofn-a z*U#_S^vM01Xn5cZq72^%*1ks@M5Cd^qKjy$AP^ zOkovAnF1a#jBEk^@8ivE-&|cjKu5&|Py28Gp2)v4YWeW?*&~5NGHX6BoaJ=7p%!{3uXm5A%amq@euHeK5bJv%i^O%uO{=P;vqennw}HaSAX2^{_r+RIG;6b z@6Zc*azuj8YgjG#bNVT9igT;{i=&56n1s_qt<63@m(sh5Ba*$UE~JRNZwFYWx9O+1 z1ENFAnNnIj{!ROd6Xh1-U*g!`NhT+bpAO->3q$yF8le^oTPDnvn8Z)I&mQ)GjBE}Q zmvaher2acdzfVkqTP@9VPf^Vt9!NyN{NhmfQNtX=vfK1V!gFUvqiw%er0uNNnfMX0urO1roYE{6Xs$|c zqhH>jps?=up}U^|yoddCg=iWu9&{c;w;Sc=VAcfCbC^6PYpk76T{5X^9r%KJR+F&r@?h+9 znD!K}&vD(c^b4<1$qS9mt}B`vbSNT)ky^D zlC>rfCXMTRn+Cu>D39bF=p6I-9nEO)F$Kz8CD_7zYS0JJjb@;%DVg4(8DTidH18t-20kGnGspCR5eMe0Qn=ZW7KI@d1%-skDbq^D!)94;G$RNkDy=*Io^2U`{ zITb&6|s}CQkc?xsahsAjsQNcTCEr za`~E-Uh>0zpp=F!^u+UF-H<1yU;NJBHTLkiIM|T4EkdJpw&(m@!3u_B{>RQ9TZb|I z(}P4KK_Q2#JT8*4?CI`dL4n%@Esd(V%T+*8Mr7*kqY%Oqp#se43>FJ%JDu?^zujNC z0%N(DRE|9BOTPr<&ri*d(W6NJxxAzDcP3CzJ>ZpY%6Rog!tHBw$ysNtvkEixP z1j$6yA%}fx|C*$%Y(j|^{nDVKN1t00&zB-~N<(qhg<$Ub22hLImA&4z&toTlr$%sW zOyQ2|{kMJBs`4{ zo7sWM{p6vYi!ooC4-h-pIG3^Dl?(}OexxbU%p=Z{O1%%VqtcQWW~M>z05iQ9i872h z5-hW0{GEMUboI6cu{{w;oK07)ea$1avAr`(rfc*jb!F!}@tw>LI!NQTKYi+yIFJNa zal7|pOWp?kJ4=&yj{*zlx$OcrB6dipcC#njW=u4I8=hqtj)v;`JE|>PFVGnQ=OFTV zG#}Y89m&UP_k{u3p@m-+cLL5gc`JmqI50vd*cgtmK4=;)bBNPjK8TH&dW!U1 z@^J#O48=xbUwk>85R7ED)p?MZu9RPUPTvf(v>G;=a8JV?d3NqWktnUi3?Bbm-6P*i zmr>unNK+I|* zaof6T!{!e6QdOS+CbpV?A#6sy?50;Wxl7pO%w?YA7Q3%xFOf>wDckI=xdtg?0uiq^ zZY)ItB7|vc+YP%b(jE7vU4-@z`l}azW;fNev?RNOy9}wTN*0>M%W0eaCRbuDENF@L zWaAe~=-lN%f~j~`zFY{wG0bNvp-=JqfphFFKk|RR-D1n0OBFOtmt%&7oO~WSlYn6= zg4vIg`nuiMq_{Nv%f#^Hh3R!`uKTder%@mmv0`B;IC>vMu%JIYtdk2_;oS*Axi#aG z&0i3?578y@!g%IY3o6OHy)Oa=3ktU?gu9~7_cZ|B5ioYUa{pv;5F48e55ePAXfkoG z-LA!a?Yp!9c!bN-!v*#z56Iwq%8W?74ZE|2I6ZBM1rG`N8d8rtW5avS7BUM z#-RGQVdd{-7Tkb?QV=A5sftb}^yUN5jr2jl?Xh?sT+>deAdFM@|GfZRwES)AXCYd#<09qUSPPI7CIwBi54lS z2)Vs<%Pc@)RPw%R!5}HbccEaWLw;|b^K}Xxww!I&V}zl!$;{zbdoMTPD($&!EOtL; z%w*A-tw0Y!)E0HWHHliIb+&i41mTmz&jX$#ouieSd$j*UK2_d?8lA zOkHJ3?+MK^If?KY**Z z+;AdTt;2>&Qg$GO0~dyvyps+(g>8Gy%`>Y67}0~t)e`xsC{c#U{Gl$Sd}M$AIC!oP ztIYULa5Zmk`!96jk^kD@8CQDQ$kgH_6DhhJb*FlH)JwLTuAVZ~_cfWv;Fh~K9yl*U zq&l0Twz1`O7$I^TZXD;?m=UwD^KAY$NuD2Nk^>FGgl3cD?k$OGyUJbN2<)HdsE`OdQAFiD|$M@Gs2hU_Cgr=H^4O^p5#LMd0#xNg05D# zv-^YIPp}hR-_-v{)K>>Z{eIu?l1q1Yr-UFOu{4MvARtPIbgrb-k`hvigovbstCUJg zgP?+hfOJbP-LUNL?}fZS-`@-~>+pxe+UC9Agz;Ap zQk7W>FGN<`{LTvF?kS?{;T8s&E42TFoG(10pnqx0)x&Kc3(Pyr`NFZM6t|GSQe$Ta z1d2GD$JXNuv8K|j)G>Au5=qV$f*HDUel8qdZObyv%WQ!Q-(RRte0ByJ2^E%T2?!P5 zq6%_x)Q4pA<1f2rHny}=X1t^}C^>e!)Oco^=(3C$myLMsjGL3ml-KZNuwq&Az zwLQFw(~Sc(o1N$gKRx`Om1FmQTW z1Tb-$iZ;d2(<@^sw!_iB9LFnZ4Amo<(mnpV(9Iu;JDovga z0EnnmOs7@W<-&WltkO7l*t!9-yJuTOC}Rj7H%qZ$Sg&8^QJfCV~5acI{XJLS0(;k zJeDouPzC(Lhm|4I5jRbO6!-1h?e%S?7!0O(eOnbL*x8FWi;ORQMNAxj*^iGsK zjM|$1ZMI4eG$;_0U8y|ym<~9#1%VE&IQ$g?9j6QW&Y^vo{Y&gnL)z$*rIDPRI0UVx zBUkx+EW=c^>Z2_T#`O8KZ}#iAy`7gh|C}$aDIPK;8}zH^uQ{+BCWmpGA@396cgsJz zo89m(%J3gE)HJI+(9xx!ysy&GiE94-1{YK*tWzdc{_EZF(8JW#RsJuvGQ}me_{aXW zE-oG_R{CVwo$cs4NzI;!Ap;Q!O+K~}t-j~q4i-8b_(3r;nU-%;3z$@&9H`h53(EKG z$;jN}j=v=xGsyS*riziApH&jT;ym?t;YP(Z%sUZ<=6VLUVOdl9qu41ZGF7^Ya>pB5>FNQ=~kOh z`uD|f#tZVnir3msL!>^BSEAD`2QH~b`oq*F?nV1p>8M;}+~K|Orm-tjj^7MqB}5>K z8XLiJ6dav3%i2Cm-7r7@+Ty}O_WOV;zMSg+eCc&f)Hwx~D z(p*N5_a*F43!H?!7`Ka>2p^!6AdpKTStS1WvGT$QeK$yAnF#Icdk7c;V>pbpkO++A${64@PFHgX zQ!<}2ANoBSQ+MJdJvv_8SVDB`^%w7?`H{b&`pu@YT;dkmQPXGzdfWmAdc&#lS{$v^-t@2l>HXC z087-XtE+np9imQ7t3W%SXemZ0l674F6J)bsCP!%YD%&BgruVDtWD`k;Jv&uMq<|e~ z!8})Y;+Cj)8nv2A!?zxgQihhkK5=p~nTw~Zs=EcrlzGn3=uA9tDHy}QH5Ki>l);IV zEU;vW{OypKxPGpE&QX~4j;2kSJ3s#ooAHs{8H2uDJTd0Qc-IC_2@wugSBDlV_59K~ zNp-};C5OOjJk4s*KEMks>pj;qGz57TrzI(Wi%iOS)q+GYk=j*3MbR$G1Ozf{fVUO6 zU7)o15A$+fSo_QAhzBVOqq=hB)~7<50uVAPU>`5fHW zA3pc#<8FYb1r6+r;!WTv}vtT$}~>F7?JJtdMf3-iC>DZCOGI{ z)5fZsnnZvz9lPp0MQ>Eu1_S`bgd|8p>G|u|kNR(ja@XfYyRL$S)YRH=29!o3+5{4} z2-z)C_$2d#4!+;GNw)QCe%M7Xyhc*xY&V^Hf%v`}Z3`CSwKVb|6_mk~&NZ)+$}?^T+euXsnqDfpadU|TyN1r}7&juOQ(k&j3Rj}1y1DsTLc$$VvSfP~A3PqO!0Ltuyk6Kr4_KFQ z;sK5nh_Ky66FfdjH>-p8FReWJ5N92_zuS7O4S#jmdtVrIm3%1iYP8#8ssAM+%8tLb z)@RU@qY>vUcEz)gZ>8Wfu-xcEH+Y<6&-*Ft4{Ea&3ec_ETkCW4v6x6@(jyMd`C<0a z@p1JLlZTo3eNPtTh)gl@469v6DDHa@hPh7@<1&<&xT>n$)|8N4g-OE&sMzOZPCHJy zKNFIYsa=Cz_HfGjD#4lO@93%JM`B#fv-55C5a-To5=u(XCmZDfU=ZX)(rd8jNZioL zGmH)~U56j}-l%lti+5Xs{lW=ZJ5_cwBuN5SvV5W5)3Zq|<#A+marvli0i5?~^WnKa ziGTh$L2sx;dokLASlePFkcma;Zp~Be{45$2)8S{5hwp1ZRKrRzg;v8n-k%{H3?F$D zIN=_u)GD1wM=~(cHe`W?jB#lsQd&Q@(tSvpEYr~;Je-P$r(RM{E~?1M!yg)rT%0H|LQf6tVx( zk9}%QV5{AK@mH;dw{ou=0|V;lmHIfSLxnSZ^yjLwSnP+!N)iHyVJ()1Pf>E$^jx9Z zg9W$%@85%aQ;zKyx{Z!bPwnPg@4Xul(h+*m_uAU~JTwEY`U=87MgfFf0tzZB@I5Pj>6F~pDKn11PBPykRyq4zuNND71j}yL z$>%)Fl4A2%^^XxgqWN(4sCkhy*V52y{)bjfXVdv$m{5m&Te59mS5iuf9Z&|;AoHXPwLafja8A3|mQoB~5x3LfBM=oxA+)%0ZLQ6Dt3mhyvhCQS z&GEuPh%VxP!T;K(`d{$lKb$~=58jtO$XpBW|G66ey=EI%wHAu&+g>mfwv^7L*uidc z4m5;%`pi~VY>bR@&(Z}_3U}A-q;K6)Go_oT+fEfpxlJBVgFd7?A?ggavxhp_D}T|` z>c?U6WJnb`L;V1s<3-4+ck&}pCG+0qKkaL57FnsOkx2QERaFkF9isfZ23H?D(Cm)R zPU=77pM5-g8BlbBh?iCC&Pf@b&eb774Zg*Qu&4>Q@4S?h`ShGzF(iu@uHYnfQ`6DW z(Z9){?QPHXbr*GQZIS!$X>V>ww}Zy%e9$56<8-Yq0}c*Y4t~A@7rn^} z9!ceMQ+{bH^otNkjCiGnBkVw$h)^3jMh5>p)3tJ5b5~~&n;}m&{SLWK?=`5&uzB)p zhy#g1pi7`X;>?s$lT*_S;uwm_<1GX8#+fq9-eI(x&v^bqi5pfxMQ&=oj%}ijOo%Th zhuLRgAv{;!7YB{24O_RBb#wcjMlGRFlCu2w!(|uEUi=#k3XP5Iabk*eJgg5de3FJ@du@oTVypv*jeEIlo0b0eD6jFw#_)&;cw3{JC(hGfa zDRh0t-U02L9pj;SjC(!VPzdbQ{}lQ;bS{1T0O9;W2jyJiUkn}v~1V$ zmX8rUGr`Zh>g*fGMFeB_JI6~2t~T0Dpw zmwbYhpES3`tkGgxU8|&21-}T>d3^&(!mEBd6b;tfHdID(rMNq_E}{@qcH% zZ-Q<9;Q9-Qx79KSwU;Sl&o5XQ#KWBfT+g*DEO$myJe@=LO(c5WL5Hlj+- zA$#1drYe4KR#Lc{X3vPRdq^EUhWKflJvnbLN}OC@AfHzX+J+|`{`?8dEoQ;sn_zx^ z0m(yKdJ3ntn!2W@zHb=q3Uo;o98Yzt;shsemED=x2fSEMF+@8mJ6haQ!sO{$A?IVu zaa&>9$jm10qRHG_BjI<-m9o@@%7&+KcgTDozi2p_A+4Z_cijZaCk#OK@h_5@4I*xLhGU2>cWAUnkx z@6eR{6Mv1tjO`6YD#KrdW+gB(#_8w9`Iq(BlWjBjdYmZSBaK)E3P^)MjN^sNZnt$% zU4xga{C)T$l{LRbcArTk3vD<3DenoJK>5!n>dOf?I2AXxo5Vy%qD1iB+}wQj+Ld!} zD@7QWT?~(mBsVpg13RvA=sgs$Qj-!>ZIr(_%vLx)F89gXX$nlFhQ*x3>L@!@ z#|joI!J{2uY(O+=2_I+X4K)85ZrO#lVJWZ@E2$){QilH_MU9O6Ve_NcM;o#;-`fb< z%X#&)idEs{ZR7Dw>SW{AX+zzts3pTE!|lP1R&RHRftx}KZr>-c&gj@!QPr-*y}Zrd z_akTkJ|_6_jP=*XtMJuMf6tmfe6|<^J7P`)aoD+ zNrG2WjNP@wAVvTo+PMJP^TP-ChQL5-4(rxuAIu0OWn@xnYyAhMZPyJ$r6OJxbwAWm zyjf@h>S_2{D7=|%WN|p3Jk?V**BE~OcIcrS#dRVviZvOmm%Q##iv%+d&v#L+DGBb; z^WK$}n0Jm&HpB=txS{_I3@Dd3IE63Xl;RICGBdOIYz2uAg1 zyV5rfLvKoGX?fW_eM+}SgJ*I}0@uX1$>1ATvmr<@*H;ixSIKlyFXdkge{!;tg*^~& zyEg59lzGPAWzsI#Ll^sn3i*EkHMaAtT%$$tI1YZOh$ z*e08h@I$Eom$<#B|Jd^bXI4uhv(vt_2ZVHePJ9v<#(WTa@#@!qa5Avrj1@5qYVH1( zka2v@_J*jbrrSWGSW-DvW>u`_*k`2+wRs7J> z5{I{d<+h0_{&&*q47~Rs;(wrT?1<(4RDXWm7q+v_6_ToX^5hZ|&~nH<#@2ntV4nZpi7C3BTRsC!e` zRNdXBh)Ed6yx2rtxX|~r zwz&Z=)QRCW&gI$V(kl=HNWH0)AUXN?s?o)rMFF5LVPHV!-F*TR(^zEC4cz8etP#GM zjAb0yhCR+ZF%%FMvY#d3zxll%8RRIUWWXi8_jN=dEQAl$K19eFtN9oJ&5PaokUv?< zvVCwc!FVP4Vl+jiz26b}>MA{FOhhGeNE#o+Bh~(gk`c@Z8n|j*Zn(KFi%a?I+q8x) z|3tQKFoI05Ux}^!{)=w$L7V=6(Y=wlbPIa1VIVu(6nw0`?Xd%|(?fni21{Z|ecH3t zPJL6gO^#&sNdU&Mq6JV9PL?;y41n!J#V%f6AP3UMT%zd!YEA5u&LF?1oSVH`Yj=r+ zbl2{GBS3W!M8PlJG0WL#&oBC1kF7uM317;K_VsLTGMAQdEX;M&_Ut4rV~(T&ws!Gh zDaTsXUwrHn)O$spEdfYW&?l36Nlx>p9E>>ckofYhTFlAG{uAS43DJb7%fMOn3#jAC z&;{6}hDt!^cq4a!v2Wy#SqGlTQ))nkH*;KV6hAI-=-U9`GzI;M+Z0FH%UOpS;0 zAXAG^K-W-#PHQFH9r((DR4}3Ns{1k@n7I7gInz1l^ce{i_4wMgn}1IdYoYS+sD8WP zw+&GOrfg__K5lhY3l!m+Q!Oe01-A$d&+k6vu*ws>Ksgk1hjI?x<=xdz{N4Dcvvp}) zol=zY)Vy=KdSOsL4k7%s1McWgm!3Y-5a^9_x}$G|k9zXqI zNTnjj<9zmio085oyfz>Jn(CZV@F>5nh@dA$0fI-19}TbD-bIa2%wP1xK*e;%rEhLo;gty&XVbrT_lah{DkS`Pk9ufj7472@0rSy}E!q>NzPxjF+{(oe6SR~~ zRlo{#e=A5Yn6uF3_9oJ;#@mL0oP8!Wn((Cf^JlW!+S(x#y1Hc*2ty^335Pazt)6Kv zd}bLm@W{h7+{9;o%YDZ9n5G}Jk6LQJ41d`VD)GbtO1rwSBk9m@hhI#@OZ(M3ng zO3KP|=n?=O88CA~T;MikF6?kQ?@zYf1`XYg4pd(*SGwldy29}QvZ@7rLh-TcBieVmKdj#$*tZpM`54sX9D>(L^DT0HP+mJkTjXA@+_SQL<>X~_ zn2VQi%IRsP(%|V>GC(t!Uf$WqfHd@OwYAyTOj!3kG`u%q5UQ_bqrMe9>`9yQ=pqUl zS0q@?M(F;*Jv%S2W4%H$Db>K<{?o%fGZS%4zOOYt48wau1EBwVh!I*tHwY!ZdIX}d zwU9iHe5)%mdR8u|fMxqpr-aD=ya3xb%HO|_Eb;*a1AuAFZ_L|I;rf{GJt|gEE)129 zIlS+ydKA>BdG`7HlbCU#DT7Zn1uiYwVVpgrw(tBPX7&KBI$ky3UGh8&hHe5tzd2Dk z!u*Taz7AxUTDMIpV)Nb2jkbH^W8vpz%BPKO!N+4}(T}D62a0NNO;+nUt~21Q_8s2U z4d;BNo3cuW4o(4R0oJ}ve>Otuf^2Lrry|#u9J$^I4(IUHpG3@ZOVCbZ*%fIIun8cE zY^P7_9CV*#EBm#FgJQRwXg>82Dv#_ppMEM%Mey>Bc&M+*b2-YaSm5fOls zry#-@KeRTFbeN9dKqCYb11n07EXWjR2HjBcPzh=jaC1*^#+-@cnQ>w$eLPt}1sk`o z@L0iD5+x-<*j{`16_&4)!9BY{5S0m@3nS|z*@}xG%j( z16c}{?DWJ8S}F{*VoyS4DNxjEKy!-~W;CsFGvgSewxuMa zOQfP1R!Y0$plF=G+>lm@E0JPyJ2ni^bd{?qTC{_QCMQz>HLDy!%+>4%8uve(hS+1e zrc>ZaYTv>w{ljysIf7a1^UH-e+wN71)0*RZ0L8{|I`Z9P5Kxn?;=Ejd2P9}{PGS2? zbXPT5OM4fP^k?09Y}YlBR20b(ukPazudyZ~#N4zt2c?pa;Sw@(XHG7;YFhsRMgjGe z&}gpfs?3IG-%0|i3f(=en`36a=-B#wVDL!(P;;DYY4y$-oHmNcN{COiFUnIv$NBgA z_I8KV+Tg0EA7z^Dx850UGl__^+0Wy=h@-~oL?!?>cD;W1#(}N& zi$pAAjc8M{?Mn+&I-i|dYpaKro#^+34gMjdr#mSQ2N+Vo*2WnNGNvsL=T@1i*-~U7 z!W=nkC@S+#?UD;4Tb`F&BYJ7m+GKG!Ey2AtU@m}huJx}408V6{I^mG-8Ru<tLu8CCgCkP2~nZI)^|3+eiE+V^X*U+`GvLoQ*eN+8+6aA~~R6KfOhEY=cP|4BHXM zu8*1dV&rb({C8RxYa zJSHt-FL;hnq+1hJ{IS|*j&*?uBRHkKCC9;~foUuf9FnHHk27gWPr=^5v@=UI)8tPG z&<`~Y)etVr2w1s!A-;;EzFRK`;q#{&Tb?@A0(H?ppL+8KurpnFvu5n)(Y9i#)Y@x2 zRdfY&p8d(>-T?5Hwg3K+>2PqssXPCE%3LeH7``FFbftpJL|^sv%2ty;q)rc{>dCrCdDs#9#eD5s7mZ_$%*NW;F-zYR#4a*ourY&_CI1(2*#`Rzg6u?*yus- zrE{eHj#-&gbhOuWT3ZAiEsU+6unAY#FM|Kxr_GGBAfoja*?~#y_cKP9zF$b{g0b}v zirYWgRMyh&m5>Qw04O{=M_&lPg{diDM}E1B&Zq$5_0Oj^e06a@W$|daQ7xHwQjjXQ z=RDnSr>kmfvjhi|FYGOT3+VDzc@%`+}YI_C#_@ip+Wwflm9U?aSS5r(d90^tXCq9XCQsrF)7mnF<U7K8zf7G3~Cu?KPUN7tqW6ZhC7t|5>3Hyq!wLPg1_MfqyN=Cp8VmK8e70-zvR$XP z!1#+CIf#hot(JBOOUltn!Ra2?73Wr2N1s>(P{492>8S$-iIWsirw%wb41LEFTumgU zk`T%1EhDH;U~9Y29~1L9%H=tz{lkSp3F$;#G(eU#W9Q<6uq}NJVMwtjr9@Wa1+M0? zv(cvb_jQG?X&@)&jidQdnOmW-znf#;=i4Kc`c^#GQ2giT!+DwOe+uUpC1MT2_Mi8x zh+oEW{BShG#yXe}e#P(#5@9K{ITxnu$VR>txH6NoZT6fWI>RuRuE1~uWm9RV^bNpq zK$UnVF5Zr-MlS%kLGE@3a#0JT(>1a0T(Ijkobl;lc*FU=bfx70eZ2?>bSB!g|Hvg-4Z(24Gt9g8YO>DAQh%x6_gV&GWjv zA1JIPZWyR7fSsVgJve-Zrv!KJcLQb*rjbRMflWI6z4GF5ge|J(2S`VU7c%>%hwbhe zyZ*TUyZg5RLGkKaBViD`Vjt|>4wNm;f^OiL&=t^wDWZ>zfvUntYpN;y_WS{&Zl^vx z_^byWl2Nm;YJJ?6J{-&UFI0lKzm~4kA+Is-W!nKRbV%-CF%Ft(HHgW5D@7QCRM8c> z{7LIrMp4HM;Wq-3qN_Qu;I*QH&UrAe{cte9t7f^S{6kf&=cI%_O{GX8e`KHLCCZZ_ zF$-XMZrbeIDArN#bIjK1P1G?|*yKo1%1*w?zQ4f2BDZ!`Qgl96R@jAx5*OF+Ec~gE z)VrtO^>YOTvK%WwWSFcNyuf?~17e;1Y4u?~Nq1M;%*}$Eq~QAyxk_XiE(lm1a%Gb` z)uFfurYQdK0r%D|SDlU5x1&)tagw+`*5-w&H=QD$@JCMUI|6q)0Nn9}JxgmrfGB3S z&BRm{s3k_UqGDppn`5fYhXb0HUvJ09#_|a!0_0>zSTR4^(<`wZ($3_dXLPH)>Er>T z^du1bw+}mR2F2{BD*XTA{3_Dv>GjFeB|@B8fr2i0I3{JoyqBDRZCwmbl}@fSiGcui zm+3EymuIRm?Y_4;Ao=_I*UAMnQw&0}(pMDk$qBs<(cdTXRZFBRn(!d0=o%+bfk{Lv z4O(_e>!9xLFOYQxc2xvm%@>kXjappb(*ajDOpk+Is-mtoX(=ABsZ zfMIkayXMBJaDRcWxi4CX6F)vER}qd`=s!Bbx;gtomnQ5nt55yHCaPXD9oeppd6s_6HUZk*hyyzkvo|(b38V6(n z5-wgjXWOJKliA{2CQizou(|=#cKbT3V9~|xPu~Ng$4O3uNt-IWB>WzKmIpi!i=7G# zS5O-WB`zi4sQ^53Y9^gZ)}{+A;C6Yl!p$kerq-R*uM`}Z0|guG#TTd+(Qn*+##+|FfMJUe^23_2i~r2)@GoIl+-(39?#|az z0((n$2W@Q&D1eiA1!HnIO!Z@hD{%^2-r2WmWXEx|aZriA6F6f?KIXY}SVq$bA1!Ca zeL&yU$BCx`&SC39mD(b!I}(|l6C5!-Jk8iDpP2B&HT#kHl+CcTAaPZi3-+Bb{NlKZ zR%cxRVz0pU;?sSdpM(?Vejp(}VC%E{G-&zzvT_c&FCN-R=k=eI_%{CJ)J--Vs{F!Yh? zAB+ikUG)9?RsU?0Z*$2|=ZZ;9aTq^qnPh{r&dO$RWgmU?wj`gc z5J^+ASObO5u*Fq*{ItP6c?|zMKk`0 z6>v7(1xQtZs=!P761fxhc3plZIucNX{QLmo5LXD#qc;-S1Z243H41kEotuo^Ip9mY z4?ZL~^q)CE3z7-A=bjg*fgLS{0B2Zc>|@0MH0?{Xfza;QK(Q+@FPB2rB~jq&=8B-B zio5cFAUf#;b7Vd^-n8-Za69W-6fq+}OFqWCZk7$yrLLjhmS$oMR=uScnrC5wwt3Qc zJO~*d(>a@Gjdg>ArJU7t6Y5fAa-nbn@n#?LurTekdn`bW0G!!rwjU*!664p|;*W>p zu~BE%l#9z6Slijh%kBL3*b>>-JAo8BtQ^*>`oDjMmOw#3j<(y{QJQIf%2HfhFDY9O z8n5Y~r9+fP?go`G05_B%p+|wl3OkFR@LPcbO&SpOSfM?I2}ce$dR(}@&Qk^A(v*^t z@_<$ODsIK=o0}@?>TK_hlHS3bK(Fo)#=Fz(eg6SkjK>;sgVguy9E`!#{RFWwcq+Q$ z$DA2A3y{pf20sbFAtpQ55FwJ~ZR_O)Mj+ZHNF@ez?^ncA^McHD-#-~BbeT#tGCmyZ zdG<$~%&H}5l0*H!cKC!>y6;+^vQ`5x5EuksprDPdUyklR_;dLVIiaU>rxVK$5&mg6fp2Y02Emj3kxY$ZO$yI!}Nw>H#if|l(r_E^ZrwD_0G1k(Y4w;1sdsxJOgUK0r!2Gfsbl#2hC^X6H3HNRWv0Q``5a&wk+;iq;*J?c$E#2r+w=|%H}iJUrKgYY33u{xul(;%N*RC<;Ky7627C?_A*spX+yQ8}Vn=5#n>uJEP|6wzn_f z8_+GGsHoP9`x5Kcl=k~Ug)v}pvVt^n%J%3#;KDGzItav5N+P3_6jw`EJ3uM!%BYnr zJO7O^s}iVH^odJlI9owcCf|%Da3lyST^|U)y*QjIEuCj?3D_oslODDmHnMm;ziw<1 zg_Csu2-W}*&2)vT)(gbN3KWyh@zBNsJ@3&MD$ji>q7YV{q071S4-*?&SVTug7N33B z&hNTvEk;K{(*bF}Ru}5;eK&9;pvloRJtZ1Dy(!%JT;+8tBObf?LhAf@S3Cv;xDWuv z97){YKVS!xQm+}tp4qQ7fa@IGUf=>41C&a)i~ZoDt5h}qX%EppL&w|@3hG@M3abwS znvQS4?Q%I5%&>wGC;>sr()UGmK+M8(V6F39+Z~i~B!Eoe@tSOE_hvoccb0VMU}Q|a zOD{Oj-L4>(XTz?KzmU7!5iQ@0#l!`nDo$aCt2eSs@qtAmD1BXgLG?KZKpYkcmcFpmSkPjPMeJ0-)* z$>{Jh1{>5lhADMb)r}0ZdK-j^^$ptp=Im3x1_IEe%$sP(Nllu19on;H9*pKY#C#y+ zRXhe_dbyURO-i6ciRR+dU>fG2!c{Rj3S?#Y?0eX{4ySPl?5(N$w3UEqA~1cgF`Vyp zSkFvdm0sv>%-*EDpH^)Fe5@2AKOcA3lTNq-&_boCwFVp)LSEE{6%0;gRWml`p&hW} z%LXs$fzNyMoZ5t>RBU6CS^9t)G~tH*eSA)^4Z$(4sB{PPqU_Ry#YKyt<>Wxv#u6Qr zP6g;#UlAMT+4DpoI&@0fjHV}!Sn3I?UQ+$@RK{D8{kooOsId^tX+HlKnkvj}8#cGG z^@60%ReAZg*t=Jq`L@ddvZbJ|I58+QmV+%ZT8C~tQbdmmefc5-sLzi-I~mos3H0}B z9QD2i$3W|J^0Ol1CCLipm~4x6;j~2O`05?SCKn1Rz<}PGOk>?RI|; zkcyQ$E;)yC#8tXi`W?MmswIKh`vDRapXepIyn|#=dKP#`Zuy%7j}s`{EJZK_)DlZ=@^PDL z!nF#y^}yvp^wph`B$(81(kh=K70Ez!3-VmuW-D8kVXqFGT@+kkfsx;H`1NZDI)mjn62kMP4DoCFC`#~gBSsuAd*<(#K#k-vj#oUPD;t>+|}nG zf;wNl4}NJ*8ehK>|;}ZkbEm~6U#6k1_0^R8gO6rLCmQ7IP1ZwRFj|zEYYMQ27(k|cC z-5mxHYt(bWNTr!ZUxrGNv@3-o7Kkb=S_7mxX8X< zZ|R9V4ItL){uL>FiP+Ora}3W_;h;Nou)yPefa-mYsX-;`?U8VCmf)@Bty6&R-o4x4 zyT)E=$mhK@>x{B#kL670qm6b~L##@7)* zbf^zImj0v~;4e6m5~|)6>l(6SBmlH?pOv3v&6tbnh9}1a4>HYwU;0_~r3&c!kW_$8 z);IbA%I6P!@lP@feE0v36@og)^&cuI%K1)$y{{Wky?aLCY?g(|$dJm1u@Q1ELNjd- zhG6&raqH0Dp*|b5QR2McNwQYc_LT;3>Nx!hwRDrHVWgYK9ag>_DX7WY1f?8w_%oZ- zp4x!^?sHS+=`i$RmM^)fX@`98&!56ONweRMkzI`Jt+BD+G*uviIRu(Ui3mg;1>$I4 z_vB@o<&8D-8@+cZ6;x~E2gjb|T70usn6D^~dI@GF?1Z(;XMLWeZ*rR7SwN3NYOBayfTma_`!^ydX6NvpCD5ieUaFm;~ zjf3`th7pqO4T+!DP9p~H7hr8ZJS1s2!#IYbj_YB*LA05UTyO8Go6m-_mpD+0EUBLv){O&%%23UJ!Ju**A|4|sv6x7P^o9t@+xHNuB) z3LQ)Z%xO>>zs`RJiij^4Z^?MxeLewGQ|m;=A`r|T(>nH#70?a`uKhL@dN0hqil#u~5BOM)7&6w?a*v4-I}axkPGklHaN~ zvw2SV^6FSK73UdvB=#Q%Tf|*B$@&jU2~)B2_TaWJF88*1JHj@yJVq`XmgPW1SUx;h zA&>`utpac{<%qqr*E$?Ls2D;ISk!^h)W+P`sXe_~FD@mcLXEnim+@Dpt?&EIZphi< zkDjOn8|x#AKQw9pYv}n6G1WxyAFkCN-)K{QvV1U&LH^fH z13`ODd>yoeBBED$7>q%s_zmo**T2F$VIC@KH+y)Au=r8LeA9KnC{X$P9}E4HG(jsF zSy$roW4D{%SM(lcnr3SxQDGb(NvS+Mqfnx#646Mo15xcmz1kL~BgMIVotgQ-2Y{nj z$IU0qhcVL?;DE}NR1_EgfPn4>bLgku2XFXaD=kc$vwhv%Pz&ZrY#@=?l$F{QY*)V% zbn$`?Tabw5j?(2F`LZw}Gj-d1f9A76h$OZ}$u`L@Oo?RN|89}WT@8Pme(}nQ)b}S0 zZ>$1whp}8dm{@PIp<8r`MZlKy=U-3xea;X30lt9*n4FEkGqD2t2L<7a^o2Ibulh-I z8;6q{=v~r~{oI7N&fdg!3O7JIN0|DTvwmU*&)(i8gzS7^1HhJoE$h0Acke!?SS}2~ zfjaf?(AfZZwv=VwI!Jstzf_)OP3ldxu27<#c*I1>rU-D_i48f8>?pnAi7UEmFL(~(~$`l|-+Z{CDE|2x=sFqhST@@D+onDZh)fA77Q`}CD|4KJ>+A(Ui`s0Alybrh~a9o;NokkyHKGrp!lkjka2mSg#vL=8w$L^YM z5D=uspazr=j}Equ#LbcJ(A9}L?h-tQe!j(d9#*5AzSn@B4p`xOML6I@2GB5KfJp@` zz}5Zw-IpXpLYgl8x@z%^s>%-y=ra@a%}xYNQN3>naAM#dNsGWF-qNKAn4(A*8R3orRp z0o7(U+mL?Xee8)$G989nwfQqUm;n8qm1t2o(zIzTX4Pu@TTG}CKSQ^Oii?bwId)wY^u>juy$kXqP-?O>Ym<|VNfw*V^ zDf5=+@b}Tn-e&_R^Gw0JEnIL?Ch#?dO65ZT&qfo!{Z8i$is_f?W!Rm^()r#vU9NOs z!gQx2Qzs8kg*sw#J*NQ&O)}ZB9Cqtb=p~TCwt_f-&N)Dda5|NnOgosHxj3KmCxhAA z^H5P}r#*(p1Vy+SnT$Y3$HRe_bg8iQyE9!GBIAQ_17yh~?8pZx7wNHw@;2=I{60JCSCkD&mm z1*96=>3~Uk@Hecu$pHh=@f#g{Ta{J>yx0V^T19C^uYcppN6D3bhbv182H@1t!#Cbb z2P?>j7FK|ZP{q{rCJya)0UV!!LbnUGrdG`9*Nc?U4Rjk8^%cW7h9%cyNcz_odPX|A zT?dRj+XlS=YJY8Jy%8=EjIzmb|8S*qun}Ru;bq(cV7)&ZFk!h+lB)PT%O;#1cp?FK zMG-m48Y9xqNa(Piamp=;fC`V^)uFmY7*ra${^{2Ply-gGca1tq95o$5;b^nKI5!R{PX)#zJr6s2dSQ*6uRo&7;Sg3Oww|5zD z_hNY`yrfi&o&(*YkB4AR3SgM_xi|s=jMmi@E+ejJ-?N~2dNAxgNRVeVE^9yA(e}+9 z{DlQRhs0!1Vi9Nh9WXV}bwzuJA#VWP53sfShRXP@^`;$x#Npktc>{eN6{7~6v7xe? zWXEmiON|EM8}2r!-v~g_=->O7xF`*%bAJ50e@l1L^Z%Z0Im0VYDgrSVYvZ4g*q=XE z%#{{7#M)1q_jdKa!yv$l)|K|gC?0L{1&8^4>O43`5$GL(Ef#tsF_brT z-~V67UfJ1uWoAnydnGa=$sXCVL&iB}%PJx(BZRW|Jhn=*va>599NCU@&hO^^`TqX$ zUk}~x*L7dlb6sAtxYN7F=#+J99a-|}xzN88!R2KKO(Njm*fpgt^nOe@5k%8yzEt6; z(w>=w`Aj{y5>rcrn0h8$HY{ zUbdq3oSEzH$RcPVTzPD;SZ38Nn7o$2mI+oL&}j+Rt}Y#TA`@a`g)Ve$C)MhoNb&?n z{8k_8sm)g=CB&a;^}mTJUiptVQy_JIdeK6}T+y&P#{IsAEXDRJ;WBa`Ses#|(p)$$ zSKPUbQ|#)^*=zxm_J}|G6@89@fY7NydGvSE?~{`NUAE19GU{My@e^BYhbv?HAmbV!*-(o8&Q zo70-W2*zIG4y|LG@b_-G_qXD{ZTrI{^lfSrorqSnx902%%y~fBE4J|NP=&>|#O!CC(Igu#}Fl_>Zk{zb-TM9|V8@ zp3KY9`8jmPk1w;8W{%q~Q=753yW!5yhZ@)cKn6sm**D=ViwBnC_BKm`pmUQ;58sr3 zE3>8FtMOqcl5^RbWr{PCA`Q5I_|lXXB&xbOlgYqb$c>iXFH` zT;IP8g33J=`SR|&%0^XL52fmEmN0sWQcZ za>yFg-k@b|64?)ZG3I zX&A~f{n?*#bKS&YwqAB2_pD9NuG#z_GWuv_pXB1i%r&?+S|P6{B#!RGi#teH$J)w3 z9yyDC!40K1^0m6;#gFofikQVa0y!$%{?Sq%ap3V)b-X>W$C4MoExy77Gmex<_0^8j zPfTvuE?bkpnD6B$#ROUlulHPIp%>xfAK)hdVn`E0U{#UPi%&>c9V0e9XIqN;_z}|1 znGFdODtxC`3@y9mNU?p!J(7AB087PMWe=XnP0ze=I5CpuqYqg$t2kb%tA8Y^c^6NZ#KPmt|Gf@%X&NC35} zw6cOuudb;57p-$i0s-$kBD}CK&c0jznk@Fd-0WD z>A7mAro`@ZfQZIRMupH8b;Geiu@5*a4nZHE1mg{H>PHd^QL76Lgx@?~m24yP0C%g;6q{|p?h8=nf=BrSd^J~@R_C_&s|>_f`BD^S$^am5# zcQ)OZD9jc(ki?;26sd(N|0%^lc#iH|mEjV^|r zg+ER>_~F7$oy5(KJ04Zll{lw&%%+G>4dTA z5rIw1`wwOCTwZU9dlQXiAIj9`caDxQmtQ2)zPaH~J6XQdyD>2+>H3r8O)=?sov*?U{?ZM?&+y$=}AXWoRF z6(+rra)}$&rL#(;cmY)9V#fpi$nBhI4%g=~%zwtaS56|LRQ+^cRb>>0deBdlLeA@J z-WtLP4}7DQ4z%VmAb8h|GWhxIVL!tX z;zIP#w6s5_=abes2P4*}OKb^9u=n4AdtLi})|%Mr z(b(2uY0urgMd>|X`HXH(?GCjNANvgtgcp)!#~!9?l&hayn+c&#wG%HbEmY3X;N1(^Bj^G z99BmBGxKYn_H&2x(=|aizhz%1MsR1zLK0GVP$IqRuQ0V=N*tp!#?QZ`rdEa)@xHL>6@Q+dB z6&aD1mDw(LN27Y9WY2$HV1>#zc)lvH@>*AnTTyt)wC@a^QpZzsH{lH~lLvn6nXiNE zu)~JpKLe35mVj)M_x-JKxP3F`omSH7VfjtS>6uVobvN9ztGqmDrqA@}cK$&GwrOj) zGiKgaS7NtSU{%kJJn4XcCRz#rlb<%FNT)(*539YuOA*NY4sE}3S-HDGR~gTK8%eeI zd#I~Ba!&%=MGW|4(Lpl1L$nSdL{5%-Jr`54=oyS4yQgyOo$virl0`iM$}HwiAIxiQ zMOb?7^cCyPdHwuE3ejfh3TSIO+d7=c83@M}C|`@mWF#)b59(6}Ixu^pO#@K@;&(6L z$x(3`k^i1%WfB3ljy?9$vjxtfGr#4#Q;Z*9HIMjvNO&=R^pC{({N)edB%^=9?@+@m zYTiJtf9r(FaX15}ckkse<8sUPQUo0NPpRhajt~q#<|L_(LfN5v%73s=AhY9zW(#3=})2YQ+r9{9sBwpDJ>~tr|LC+ke7=+ zJkap06r=Qo-2k2Qj|U)3IS&%D^2qng3HWw;MNZ%-YU@ zT~aW6wz#oqnoh=*phfU4<{I9Ez34wf$3iAaAKa-%a%ljBRagHAnA8uquOsxb8kU#3 zcmZ5D<1Qd^uTjECheTO8uB`jhuZH?doF{8eiET%5AS3_hwIHPn#ZSz2nbwN~Q@1u& zr~LLt30Hb^suEXiCVFcFaFt6^{SPgU*MNk-&yJLxed|HJ>-D$Oz@D$4OFBb|7vLk??@$nDn4c^d57pv7)63ci+c|bG2N~-&J#s1Ca0T=62f&0nV)V0wl14RJ-J$k*!(KNJG@w-*=Z|v7=2Fxp-9<7%j+wq+bVs_BT z$N&19dK)YMXZVox+K_q3+GLKB4EafJfIGR7Y9QV9w#Ao5+9S2&Pi)e3nEV&D{VL32 z{gcYOzq_Qg@gaB$Qw7nyPZ_Zqs8*#6;qcqXv)#xNIpT<3+{3wz*psAqOOq|@#1m7K zzB^){RzHoVOgHXuCFaOq8W4T^c7=0A=qX^hQbEE!~-=S0+8az(g%#id%u;m&_Ws3N4q-rVEE)$AQX!S(bL@>)Nzf{d%U0*bCst&iSCso9eKGM3_wJ|4KmCg$;umVm)Dx&@!UYn%Ty)Dij2 z|8+eD1SuqgZ^NGch}KHPSe0&mgV%W6yb_rlFS%Sk?z2yVlhYmVp02hZnK_Y|EVoX$ zO*ha};|{)JZL_z~W;q^GxW?M}{=YlRFAiRJ!(}Rvj{Z2y{aE_ixcxG4(i}v2Il8Q`}4Eg{Ajrg5r0s?f^qBpgLHpMS5ffoX` ze&gerM$s1uYDs4G6oPI|;E0)>tpOT?@1?bY2d~8f(OaQFSwktsY#%e5(8mI#Kft0| z#%elu;|A8X2Z{TubT*jYVf?R$rET(m9#v%?$CiuXpGo*EgT319@qHX79(ODl?@8jGEd5%j8-<~WGLS$;Bv*Nm zQ(x7LXNe>v|84iV;N*?OvI-E%4AyW(lsHo%Mnd&|1-^cL)?QCsB6~NoWT%m+$%z+1 zV6QA^UU7y*b!oW&Xu9nAcpg~r9`mMn1o0w77w?m47|N6|uPURfXy8w_dq;PI1}_g2 zjJzU_zJN(|oaHXs4U*rnxT}!v+nYxx-3eLN5_gIob$cUfP{ZcC!D?J*Sq!>^{Sl4{JOsp3ja@#3VvIN5U0b&P&U7=Ak4se& zR~9uFu)T!o8K`m^Zj}%Htq@_aHcC;lVbJSw7_V0VSK#V`uREV|m(mR>H4?nE8sqWm zJ90_pwke6(43mw^ze@GxOJM$;*T3V%>jdq>~37ZG*rVzh?6KY&19CR#_9V zF`$tEwe`!tUStkTsC!mI!<8Zlbmvzsj;Sl#4~ZH)=OS6JJ?@g&=XSl#V9r-aPitUo z68>`Vu{*2mKl1mB!Jg@j+5h8(d%XnyLz40fRF88zZ2r`2Z<-<>2>;CW^&qG9GHZSo zIv8q=x{|BIPnWo5bJpuUU1cjaSrJMAF1dQC@$*M!k7i~Wu|=ZfCmi*{Sdrc!Qf;9x z-njgMyeQP7Qy=mpN9*YoF7;;FLfdudizF`ih`qCwcwt~-&=l66&-#l2GKwR*J9)1j z{=>OfQT8aPf0yZ6Fx7UByj5+vmc=ma5805wpKjB$C&-|i>W&CMsqX+iBmg2urk-Qs z0lPo1G#*rWUG0zWph{frZt&nT8nUj{gDNeX7p+?n4>cj-K(cZ@)_}z zmQ!AT#!TF2+Ss$M?R35tF@5=&X~ci%j+|T0rf@{E(Q}x^gp8@@AZBlx_&xSl*Zkbw zpuzCTu!}~lj>9|W_J34CH9-pO#bhNX{MU4>lHl)FT#Ef%OR7;|id5U8p%KyAuftf- zk5%wW_|Niv3~r;#$q|uo{Z2yvqWGG3Kc0$ygnEe3;CRRp&)F312@TDj2yWZ-?1+6& zJc70NY_1{U9$5A^ynrtsa?JE^e%_{xC{$b68EA!^ODpre=?ym9_4$sEsC&le#l71! zSE<-*^NaW+b5vfcONxfIW^<@1TU16jZJT0B8}MW{d?S2`gg_E2wk? z&#JoF5*!xGvUB*~W$+{z-oS*hlXrfFp@Iu15Q_|*`h+Bt%QU>o;^5$fqVjoDB)v|+ z!Ofl@oaeynLDTR;1jAhdV2lK|y|N1Hp-Y^HjC(h3;s!q8PAgBmvXBBhycaEn8pY7V z3kuYYMi){zm>F(hpXtCT{oeTrACP*H5|=f@tgBXP zYZv>{K5#7uBk#Wr4St)J3f?SP!1TzvKMiGF2(-U>)w%;DVdiZ<6=8+32}P8Z z2+QxuaNZ&vll z>b?hrSD|)pTrIwv6aW6LRkX>6^!)aBm-EnuEMe+MD zN*n`nQSX}syxSO}qwa?;sM|YRhVls&n1wv?T@Q%(3jMJa{0hC^g1LKrlkn~if6(Ag z^Lse=1r2XhkGK2u0>Bu^4rSw^iE6B&VeXO0Msxx+`UJoIRsT>w0yU(fjap&1Qkoxfe-o!!+39Pa&;?L^rxXHQSHe1nKpd6UaH+fhsPm1Ayx zzEcKlA5?~3HbJ3}=}a%LM#1r@L2RP(xIYQE7q*)?(CH|Q?dc9l%k~eLX+3vLpL;t1 zKS;~}P@}Wp3if_FZnW>+K(@|FGflZxi~s8;a?lUlk|O+`)wHFLVa{ZLW&47dD08_& zY9`sId<C z|6h9Bp9n{@^Si^-?&V2j^bNieTWy-ej@J8NaC~X5?gmiPWf?DHs8Tq}B5($MaA5WO zcVdL>hL@M%obi;)<8Y`Osxf6GaI+o*E{9>!Ct|gTO)|l3m1};fIs%F8O0n~;N2|xN z_o{UGOEO^^9u8mOn}Bw@jVNF1s4H0Fe0R@GBfFyZG`V3-jrxGg(#|-$um1PW!<^&s z`v21c)Lepj-)!`r%RS{$!yUL-2rD<=LPUc6m1vI4gv%mnHXEt21}2x!m5|DY$G4ba z1)Ewpj=L-J+FJoRzX0-&?F_j2%&_v&vku#)I*TZ6ZVVv`q5l&$jA#C=&jz+Zlo zcWSW>dE>%)7%(`cbO=WtCwTe=2|$1N|FgWllyVlh=mf@y_psuHsb5kvq;YCTTQ_qX zb$z3}*d)GL?l>YJ*~CBdB^s}@nWHS$%Zhma_Tl-bw%Cdi=Z`3n!Lw0LqPdJT^?ZNj zH>Yd_oSQGg3phtW{)4G0h>=iuZn^Wf@5Gl=l?*mC5>A$@Nsi+?r4swhfVqvT1gBIP zeC5*cGp-fwf01SKaUMg9MfvkEDSW>(4vvk6zG?&-aQnU*c_GAQ? zm4r`uQ(5v{Kqx}jgxj^MfF0Q1IXJcHRZEzBbj7Ah((ox=xrWZsBl;_bY3jJ(Y1fdu z*2>uxrL9*!qwi9?@HgMkV~cG3y*)PKp-}FKkl(t)>s&_zy+xeMDPEgH@wq6j`=Zv* zBSG)j8)IALaYaH`3sjffcoSBbYX&j6D2Uyqo0f1*1nNl$FJh5p>C0=k>HSkV_k}im z(@G0qBT^gT5KGe*DuVJ#GNW__j<#stX@&h-2h!@cUtJb>7w^^QXh)xm?}?qD0@IhI zAoXjdncQ0N@;@9{kz%4V)7^~(S+)|kEAsBsRSZex=8-RXqw);|yK4RhR~)C0RUYnS zNHTy{K(A(4^4a>0P;y*_`QxFIO%`aWn>f8H7{oBiqZC1%A-ZS0-g3Ws>r}NHE?qJe zmb|pcw&KG+&wl%d6Od-6=&Fd^Rb^ww%ap!*D`vdodv3|)JQ__1yyb&6(6Zh4_0b0{ z4zM&a^N4DDO|U0$x`91r3pCHDzSCBH0!V(fYkY4UDx)C6Fu~4#8R;-ZCF%--obW&jpJ2q;kPmEc+jfbA0ICUWEb`lIQ*~HIieMROn0ZFy(IuJ9wznjxF*Lt`N zT4|ftaRxH&U3B-$>Gn7otK~8ZfO*QhIgCj2)!}Orx`Dxu^>wdgUS`uVUQwwCYJH_3 zt=vAqLg77=bUGf$t9;y{BM%fCH>zy9)E=CmjC7flDB~po@(KYvswpp|a8CuP2|-__ zosQm;cm-%e-2X0`^DOszu{^tY(qWyD7X${5%$rA_R}NU=u9=SSH|0A} zi&7@IUu5(k72H5LqX~x{4P1%U+WkJBWc$5@Mvy)ZjE--ZSU{oHK8|MOHKSTq%A}>n z{AsyLU&OX%Et)C+bYK2SM?2${yKh0!Dro^ZYud-0eBLx3xA!@h7*@So?0o0<^^Fdt zXZU{mXv>#Q?AU2ZQTkaB%-6BvjX4s<^eD>2X*Lq0c5=^~9P^QQ3IJ?Inox=N)&02# zKH#sfNVy*&H4#2M%Jt6HE(}W(gFUN31symUv@~8sBaIxMgA@^vGsjF>%{?zSU+gc> zYJ555m?x+cK3m$C_O<~ki*h%g8@{2LbUL<+PrPuLCW6hz|L@~^UMza?aRm`vTi!FR zd>eM~wOKr??@au9+9lFD;~(%q)v^bow)^X7R4-kU9p?0Ie5ehDP7$r{-qlE)4f{@j zq0pJuJv>)3j1?gqg@z*GCMF>Ht)+EOet&`H?~fD8Z#k`yw(>BOO}wnLYMHDZc9myA zK!5*Amr_S>C~igXufDh;qtQq7CGK6t7;ox;tXlHVQuw{g3f!7#L(ix$B3z+ac${$Z_4~LnK^$Ry>^YUc|#Q!RB zO`Z_dMJ1*Ll{g)MmKfGt+*zgn;-6EsIhg@6Za#b6I-?&-YiuAh1RT+E%yQuV=yGWwO|;j^ z3do2BKwQ7Us8n89GAg$&RQtm^XZSt(7n_9vD{Y>;+>`Hh&OfHsElegtN^GR z7BBNx&E7dA82UC?eVXQiXY)qJMS&y8;W~rpoA5&mR?)fVt4$anUSJ?OYGUPu*1Br# z!t6S^Xkk*!AUJOMeE-$2*J9Hhz|Y%9>(eYM?|GdUalsmlNN23}L?@m7E2Y!ICH?>R z>3NFX&o8QlF^t8cf` zOKfWfKq5TVlsl?1Fyk|=2>8w-Qy$8?IRW*cJ`&Ci_`wnX%W-8ZUw(ZEblPbRbQ*^J zXbHpraR(0s1O;EAw0m5mj+>-CTlEV4E>MAuzqdv_)@VD zGZ!U#ghaR;I>0GE%7)Q`h>T>~)&7LO9?;Z`7Mw6$_mKw*hgJEd?C?DwnxLI>*mf7m z5-tH2e`%5ga;OFLY1eYk6;y5RQww2hgZPqRCI%Cucv>eX{Pb-nrP;JbnNlawB? z&iEkB$owJ>MH`aIxsY`43N$ra)r4VwzR*g-rQ0du+!8&WN&bH79U`_Hv~8LRW+&&& zDA2*I&N#j8O)aGZ>qK>mdxVLd$j^T!6=te znb-p1?oDWjAtd_Ao&%Bgtm5~qC{~z4^?ZW|$v|HWTGQ@V9RGs`KN`&>4#ENN<U`Sa{Ns)rqM?C8eoa1bi6rc7>;w22+EnoZEc}SrmNZA? zi6M$NBM-s1^!UfCQh4oVbfxwCh6`|v2JSq25p1$Ty7#zjekkkOhg=LY?AO$blkLUE zxV~LgozF}u`B~e>JweTTD%B70oG1p<#Jg*O^>@a%Sgq-5oCX~UX~?oOZb1Z#DT6}+ zX1mttqYgk9fTcUO>&ei!x9y04g_$H!+tj$N5oMd;MNt7AHT8&JD4}~p)13mixVh_! zi_4*`q27>v-r=9ZYZzzYyUfBRjIqK+>XpWR&8082eDA> zJvXY{|KNRmP)$#zAi)4ql^Z-H`ax;!TNMsFv?pM4=7Gv)$@k;U9x0UDCG~$orZEy=0I)E%I|tOiO6%KobvG|%gGNVH z$9Uh9Lj8oL`Yf52wq|V+dm2uI)%f+(raTVFs{GkiNwO9EiNMWyakO}oY)}Rm3rqHX zdbR*q^+oH!bXaC@813oHvME!~-rojv1fx8T&yE#7Pf8HUJh68miD8x6x6VBc9XVox zSu{1ox|_2yh-F8cB#90j?@|Fj#b8aiIzkv<`9bQMl@IggJPCCuMG_NiTb4$d1mtM= zc$hUMzGw{C?z$uH(fc{&J!sG=)S{`y>!_pX;esD83?LZy#;Qkskto2#LRuG)X(U%`ehFUp9?Cx$ai7cbAO zz3q;>`~u)_|4w+?1iOU|IqD-q409l8l(z{@3Oo3COa+?1&8458Yo{A99&ERsvQ@0A zN>g}!W2NQ<3Xva;^T%t+R-?JS*nYY!H4sF5E9Eh}Fo*tCOcVs3B>%Yt?o4t6I4F@8 z^2M>b6_feYcYV~K9e{;eiElf>5rKqL z7iGMbQNd-T6Xyya#YA|aDf-$I+_=y&FGB&mw$WNCGfdDNQP;lHe_4uE=B=O0n<2QA zniyFMbDm<7{ze09*9a3#*Gr=-`?_?M;}Gwg>!HFxtD4DBNMKyQCKp(x3Bk?2lR!wI zi29asw37^uXK4n#MYc4L{?h_>$wa?ktXz6+DrdV_yw&8}$~t3Fta974T3tto5V(wF z9DJMM%(ou>%jKM{UM&pZ%1HlDjiFAL$4q|yRy$LIx7rtZHpsr?{$szjZ@Xf#UhIRV zj?jak2A+f5aqLg+(g&)+S~n+^s);yHK0Q@Hbu!VDX-qdH_^gGqbR(&gX;c;%Hx2I{ ziw|I@T32!<8Ax!%RP6o0>e|pkxPux` z*eN%D*OGR0#mvL@)o4dw2cnqOhE2V93BYCafS*ox`OQry0noKDJAQiu;5h|eL_~pL zC?8%bt_LlF7ZHgT2Gb)R*Z!Lt6ekPSt<~s(y&dvPYFctxT^ZwRyJL4MZRZXfZC{Hz z_?k&X#i_T@)724K;G0K# z!3p%wzD(lrP-FFKBk+kS?a_&r@<1EXDetG|ITArdiu0b6i^T@CiqW3!T&6umNB4#l za3tI2!CzH+HYCbt`$;RmGABr;v9XDu13?hQdO7j3ZXEq;zD_FReqb~b8r64$^gr&1 z&~$!S*AhD)qC3qKA8H~-PALT6<40_p)Xq@I==Cl44D7BXS#>S66LUu>%Vm{Hy?oCE zcq>5W@TSizgnWG?o(*_ZvHuTnaz{C8pFcQu>q`q185T`X4>0M&IcS|yknUOGp@Nsl zc$B*_>a_k3a!q}P!TTn}|$v=Tad z$4wXZC;rqkjp@fm0esW=@f*7;y%n@a>9@36?0t{cHH(|BRBEBr%YS zF)t=X*v{5{4)hz+`I>W+JhM1R6M?0L0TXZo8B?GepyxW@ZPqGI9pS_y0QY2WPHCjm zR=Z}|cHAu@|MaIky$LY6mfH~|8-Ye*HM6*RCeao?fAVJyc{X1OZ)bW-<#KrUT*0jbmcy&tYT7N7_To18i&T>97L@@aZMs6E6-_07)(O zZxAB58_Bl}=i)Qjubg6PkN=V9t!C~VD~$WuuKCdNul^vKMP*-0gq85s2mc~#(Z^@S zpD3u)wl&%N=o7QiCluC5bgQ!76O&8VFp7il!Co!{{_1}GW;4Ta=^jptCZ+vBsLrOW8 zZ`audG)fXw}Fy4Dr;SX1+9P zp)jD=Q!8%AWKn&~JkdhSdED3xFoKe?;TK1v_uTQKJu8rus4QE=d|gva58aGbIx9cR zsSuw|o48s;|54#i^2V?&GS@!epf`r52leybCTjoQrq|;7%TH_MUTm;$A0pwsrT7@m&&rsk-FnCzIv5eIC5pWkRXvW*lMP z5`l9(4CegWkixdBL?4|^fa`GK&sVy%bC2L9!NWeTWKli8^?)ZO>Z^sBFu}`tK{7S6 z$~FX5q7o3;BckcF_Js^kw|R$;2y8^P2|J+#C|r+#gcT-Z2@-wI1+BgMR zB_1AT(8tU17g#s*lynBw+zrjM-IIF*xW-1^U0vuiocrRce9dEKJ%3?Jlt49&C%nVa z>VGh1T5h*&JN2YfJ^*Mki$pi1!Beu{5+&<)e2s-cwLgJO2w81>Z?jh{!L zs!u~)8jt!qVn{F(qu3gq<0D>N&*m{u77&54bRl?0qQP@9vUcq%!kg0a3izZ9>fsZg zF0llx_x}E!J?_xPFeZBZei;+PHFkG)2=;kYGx~|vXNr;Gl2o!0`lwzKYCVEC(&U+w zDI}fOD_tPvgh>c{%LTM(Wn}PggNtb42<+Q6vzs&s6&)fWLXezi>kM!mzOeo7;VN_v z#s-qg&<)>~w2$VEG%(Qv{4LhK7oREwJKYhw^K`J}zkc;QbLQwpzk1r$K72o5rp5oA zc#b0GWP2_kY`oq>PpXL`{{2bqRHYwS(@CvrH@XrOh&@TNU1$TEG8e)swe1<+DMt~!phG>8NGvOuXSQ8UxHohyN*T9~VK z%4&=sgU(;z0?Lti>Whwq5^1db)w<#7>A@f)wr*tpz-*wQ3u25fdU(8+tw!=pH9uzb zoz}8F=N#fnuEmRnL$;Py@?@i@-AY_V>ohCv@^DGzWn_cl(sl$6rEh&ab%{N3YYFvo z6~sZX%ln>+0)v5nJCApsVxiXYl~E<8W|h@qz5S%4`nP^vx$0Q@l++i}qbu~Ij4l#H zz36{zEjf1@m=UuCGHzK18u#ZfP2m5o&#l!FXzG>>KJ-(VJt1-YnoUO3Ddi!t&`5*u z{hbgV_p6>3ub^A;4QN#03iwnRWDf*kTsMGmC9W(F%t5SEo-5#d5~r+!@#jzQ07C+m zXgA;C{v`vRHNT#(PyEideg@@O2ch5N)+qnGKfO!0KgC~g0llv}GZcdk|5|Uic<&8= zH2R|=6oGn-3PSSo(Zk0I3Fm^gDv5XyKYGZn^-S*T^6cU}In@T*)u&6ivOh6lwY?PJ&l|2U- z<;e+7pPyT>fFt zO(N<%`DPc*epB%CG92@rGzGu4u_Bx+!=2nG?yT{W*M#U0W6ihpnSkG@j) zbzi4W8L?CyN9r6VhP6jr-$1C05t%Uwn&~4-+;BHg9S~{+ewO%rUS~gD+Nux4&IjgX zik5uSkJg;p$DWgi8%QMJ(`@dj)#bGEma=$^ElSg>8HrP`Y-=|<)3UyDrHI-2B`I@L zj=sQdRc>_F5m89q{d$KvK>{x|kLAYi;j9<3K#2hk3FKdS%q?XfsheAxeZyz(@=kZ+RK3hU7flRgmu;#+g@=mZhg6onpn1$wU zVy7Zp?qN5#%gu+Q*Q_(!lFmE6mx9jy7x5k2iFq6Fm3Zdd%?|I)B=$KL{x2pt(V^V( zY+ryP*p2oAt`BwgUNP>qNcwZ%^Eok)j;X%)#5n{>eTz=fC`P#{T72@FGI*+&_cQhY zYr_h1_9%r2{CXh!lIh$oHNYJ;q!+rvX)&x?vNKp{kTs4wT}(abIIUKb5+` zr$)q;0$9^Bi&ac6XWt5ddA98`P__pUBtB9Zc6i?L;vhT%m%qRfi(TF|zqhZSxsbJg z6jhvDm!ez8K*}(mdHYp7Y*(SrfoR?S=V?-4(#<xuHI!o(1@7jYMb6JPpV<{bp8 zxBJR>W@PS83kDOt5CX;o3)KE}1Ydhb4*fz@ z4R!yY7GN4@HH-J%mDk{{BUDKLpGf}Qz};oyMI7nEOgm@XxvjS7wqhuW5WoDI#jt}S zo7`!~aIRv=v32_+6{-JJMfLg2jOTCsdJg!$4$n@=JuQ&fB*zZGTep-}oQmsfdV!sz zb5A5Z7u?T&3@b$gX>j)wcY3lSn;PDS86d%Aa3xfKB5X!*#8g$86Zt~>xw1n|k2jlO z-1GSS)qj9F-kp5>H_S;1xQ0jKb@5kdZy$4RY)!zeQ%tuOT?^nw`^$VtVww2DY=!4B z_ zlnsz6Wo5o%){pQU&z-KVtZVrjV8eh*XM}bT`ZfdR70+49x)S}Gu;P?A zt;{MPa(nYG?Oi67!e<080uLf6U;%gD*`K9M3m`ydjV5nA)UiD8&DPYAAZb5fqqoNU zpu?S8DuV(9tUw@h^r`MAl1_t)X)2AADPWuah+4bl0Sla_NBBI1DkakvpH{Ztims?o zunKx49d`O}vngm#Zg$q^lCw9XNMS1Q{xmx>t<7mA9Iu?L4&eICi}AcN+rTb6Y66;@ z&ixls5aH#H@U#4AhN0G{tH65}dA9ne65Ji(pL;=I(djwAKdg8}54eiRkPgJZy|rh7 zi|Ht9?n!cHV=OQI4rd)%OuUH;0jdvYunAU%Pl;W@K9XXlf1z=X7q~BWkOLk$s^AX@ z;BZ$c*|aeI_W>JibgUm-4?M=hN5WfeGf?Kxjh}57kHD6ceBh z)G!l7#Ni@oFwc-TKmzDo0B)Z16^voW((ZE&bjiwc>7~xdbX7K?qOvmKeT%uHe*L#6 zXmo(le=z6w=Z=0CjiRo>0ghj20w?Q#TDi9K16$+qu!q0U=4-2nK08Rxw#j5*8|WJ= zB1e_#!`Xa)e?_=Fl+Y82kr6dLIQpUgB2GBW*mO5|Mah)}w_NQi0L8d=A+?SfAwGb{ zd)z#i**826C0`r1hD?o}TP6`!F??rKeGM$NNeApH>bNdCC%x;Xl{+eQYbmPKz3nMh zuoBZx)DqMHwP3FAc*oyKG7`Tv@j{aY1{5;%v|#G&Ivuzv={89LAs#(kBBR=V@gV`? zmV`r^5Jwp*+H}|2g=c+^WN9awn#UP-u24B!3I>n*yDK(K;8EY(&H^>sh^)W4VDogQ z;UzDKKcKtPu`G5EYSLR!IFv<7a<)n zv2+8g<4Q-~eoquB`Vp%657N59n6<8v5QFu~RtnigPDLP`KR}*#s`ncxW5{r-B*0id z;tzF>z8k1^*^|q@;ZJEp5tTn>c3jDJrL^0|jSTm>^w5)VRH7OFq;U3nreRBadseZ7EA!=q{x$5S~F@q2@@9dhu#Vi_x z>5C%}XWJsmc93LX4iv@!fm>U6s^)Gp_TIV!{w=Lhk-sWK}vFwnkgze?U`-)ynAV6gF%u z=DGt>!>3<0fg6APkBVTz+#&Jx`~)pm~7#ace_;>EBo$Fx`cDcm&aA1I5F+_Bb8KL@Y=r68@RBLG!kBH zK)nv&f5JuFfa`aigrxex#w;2u4e2K(ugtrf58SGbtCmY!Q&?h6_SlJIL{rD`6 z-`lPS5HFUci>SOX#0;^{sKVt)dU=8sVGI~_4S(fVBW>mxF*jQIDC5FxGx5pxRcB3sK*a-Y1(VdT_mqrRlt^&_(gLwqH4P){MhtBu zevXt;@I19_?7OP08?-`9hk8FMvVL>gN#WN$6b6U%1?)&T7mDRcsFXVR{?*4dFK0cspJ4b9?3BtR6<2WN7wa|7cmm*s=0hLr)Ou**{w^U7D#%WGp5 z@9!7F9BMf!S!GX?hS@@K@Zdqg3rf!Uy7T1u7~#zS+{(+B@oF}Fb@l)$_GB&B%koOS z32wOw2NYfJm1-!5718vX@l1&!id5VV61PX3ejt#o$~~9PZTf0~T$%xU0R794sGL|Ml|5vfN$b zYh8ugEnJy8KOz=;Uuo}F1*|-=lsQ5P3{oU(@p47NP`^A#|MPN>&z0cV zob?6kpaAB;kgXI*`aFII_(8u;Fo$ zi?S-wW;z|7D>*2^B;5I%EQP6nS&(ROpGn+X`xbugruyJYB_R(c&z}t&jY+$Vn9&j6 zu{Jm9yP1Av5%cow(-FyKd-{cmO{CqiTpD)wvcJJuhM@8{WWeWr@E)s)sA+nf$-rgt zHS-qTCg)CXJoEUMExf-z=Ivy=9h|%ftFlu)N^&~R87V`_IEqz_S$GF+=#j6f2VQhKZ-$p)^-8c_cxMCzukK) z94Wnb;$(TH-2`{8NgkQE>}(<)SUJbKIII^*zg;Ig;aSonF*ePaY0t8Ltzzol~~nTd(_#&@%}!_)h0w|v-8521)7dlcWb?OZ!7vE;*o zGT^AypLMG>UGY)2*LD3StFo__9kKG@m9k+qgZGW$p__%DB?0-ew7|`)Jlu|Wl(`i5 z9E^ZAn3f49r7)mcdcN5L)Dy)p2$J8S*`d*cN=5~gclGeBXjO7O&gXFMRf_E0rR@5~ zMxZ@da#EU)Pq%t{DPY?VSVYs34Dp6HA+N&Jva&K~R>i;8j$)Rl&0-)RdN7Na_CKbf zkU7))948&qUHbd>hTFE&&X13?Gy=77p!<$2{GH` z*-wV{p2n+cB5v@CY?E!m*4iviJTpK2^m)+kdVSKbqW9Cw9z)SIuA+}pco927-I|Dp z-S9d+W%&)ISq3h5f|v@{$K-jg!T{X@2?el4Y$K=b(RS!kc8|n#N~p~TwJ~(XSNI;={pTTit31FU#Dfp zuw}XjP3znb(jtvYuWTy`Pq!L&DY6{xXdSAhiJSz#K&R8HM$zJ_?|1{v10KaECgvZ1 zHu@7ApV*=gEk6bLt4K?A@#%zK98T;9l>P)3f7+G8itKjqt@||5;Y|3na1K(Q;#7WN z&B$03mCC;)HMXx%o&y3FZ#uP{`IZd$pB9|s0gG=bpB9VOOzNMl|4?mr!o$RjUu0Km z(O0>zt7c4!dD#Gg2Im0-<`y^|JF=1qhP;qraUih=$qaLiTm45JN3`E^aZs}bQTF>< zF+_yln}{;k8&W+{m|yR5!?1&knA52j4tVFU^%&XE^f{*N^6ottGykr&JYG0^SZa`Y zwMg4@Ldkx8`-}b05}LrnnJecKPT>9k9~;SJY22?P9t5ytJWn_Ik+dfOZv5B{OyQoL9d(tU*p^dPR zhwpAFkHtd=p5z9JYmLBK<}Km!PyKwLp&H7$Bm^=npBD%|yNVv2-yYJEXvs5b0a7=F_T` z6ui`!^mh@-YoR{&m;Kxc8}n2}`h1I=dZqzPUPS5iPR}o1txi8$|XYCsqkLOn&)grpDqzeO|=k)Y9h=V%M{d zFkxKDHwgZ!?_qpSPk~_ceTvUoyw|Gk=m<69NCD7Ji08?1srnB`7@&OWb0WJQrj(9~ zKi8ENE^3V1luuycR(ZQ^dw))W=`G&2qI+@)*oaFNvl&7*wXxU@M@kux=HVT0jPwH0 zytgND4KM|=p5FU*7o?H?X#_Gw$04*IGwFV3<->dgKnRc|oBbHoeZbz|)P4%S#VVho z--oEI+|tL-7{@EzjyHB^mPQZaLa&gxE5Ebm|Ml&f@9xh<{I@{hR~M4@wSV@<;N9&P z8@N6JnrvbV=)rnZ=$S<41?6R&IwduqV!}xH`s0uL)_{*jQm@HSGkojbRk8pcO7ZEv z1^6!>3O8mWz})1w3VH%K-8gQi&5OfTT0s3q1}O1jcUniuzBw*-zWUjWo1(z(T(j&% ze7}EEJ8?#R(n{)jrpByJ6%q;MiicT$e`7C1Gx2lucy=Yu#4j$ai0mBOqkf>bz#J3h z$9oav+z`GQIP_@JR_d>r-I_=KlQE@NFHgf@Ad_sAQ?`{M@qygM&YO9I%ViCl{%V?$ zQX##N@oR5VIgaYUiuPo(tfv4q*%89Qts24ZFTyhjHNrK5uwlt&0-Ub~SApvDaI-kw z{?~U(007G{IddmqxNilDjm5eCQYoqish1(d_@SCA;f&s7Mt9L|H6RW^U%0vb!>Qk@tuCTpIAD1TsLsFY#)Rr~^f*>t7jXQ> z32SqWq0Z=ZPEZQ(B0Ay`J^9qp33$fFsO&_AG8nDhOOesQrB1Wy5g#TY@B_?mJt zGGN0Gp_BgDm$x1*XJ;dJ0APjuzb=S}>3@qwGD*&r`xoQ}v+p)XV!KgddU5!U@dX0LzFgJ z${%eS{tDqpU>MCk{Ij!_cilxq9vc#OtU5y!KBgk{?^<1|>WU=+qN7(I?aR&|%0kev zbl3Tl*5SQIH0um)28I0+y)`ERuyusS`_l3V26les!EVJKJ%XIlgSzr+sAA3pYX(3- z^`mL$b}9z`&l)F3+*w@O^HDM|tx<;pDvtNJ6`N~o#lgPjoU7;abRf=7r1tb)h<+fG z>ZSisAR(YcsH|Ms%MUy9!JUDDq(#wUEiEcp0=v;5yo(38qUjw+mqf^xz-$HoR z*jI1jF4g;4ZlEvcN+fu&n>g_l{p>t{9`5i)*Xe&y^49SXig;v$6rfD^^D7@oD*qch z1r~cRE?%zmeap7DV?1ZC96ztj>oP-2RiVcoQql?~18oGqujhPJnE(Jl^Bd;(0?LS$ znXy+ZNnnHNZ3gCG87cpx_hZyu=kk#Yv4HbuZJiVq=9)h)8t#~;d)afR)4|snkqhEZEL02BX2GLAv*Z=E6o-P+kB)0Ki|&v*ehb2*?>v8M z(Yyi(!3bFT2}`V`r`6S)y)&Mf<@1c?5JWv?1b>Gbd3SsSRTp* zG;`TP1uy#9?P8AB*kd0HsGW?_fj-I)qjWD^l!6Av0ziFXFi*2CxCqd;6c!hgHF+=f zk;5+@-oPI-X{pxIR$>+zR6pE6_DN&e3KHmcV^rk!;qN#9|F@h*_x9OMjbH*k7Qij? z?o1nE4`+^Ww!7O`_on?i81!r=QAGd>jX(JLQ}`tpx=TbkeQSchxJ`k)pRzL*e$l7E za-Lq8iIU%6hUWncpY%QqsfZY;LJ|ZzbTq}|c3PQhV7{67EX{sl2N0a^Pqu~8+zwqc zMyAn=d(x|XSKO3cfYCTMF~qA>U(VpCpO2r(^Vwde$4BI|#|I>FD4}T4T1$5OmB>>b zK^)R=ih76_m7{(IJW!mvSOVe4imO_)Y7q^ytC)mq`fpHN*G{oJ14L-BYq;rr zHMM%)?|S{Nt5(_Y7$TC_?AZfDlb5s1z;?Vh{hHvgG6Yts7+t7jXqBZzO!rV|EXIPHs1} z+(f?H4dWb*lko?7>*{oLCTFR8Sn2?k3(P zYl1*kAVHMpBBekD0pN5=MJt;xse=R8=m3{OI_t^zZtnQ8aGrG!J>XpHEztZeb3h+t zdp}W^`Fbsn%H&x~Jpnc-@pJouHq#fQ1u-Ivtb)qOzHh;i!C;lD3vX4h%1fafoQmPn zIqom7SBMT?%}z%kizv{e|CUcXpF2XOFMks&l==y(&LqjOT+Q3_l${Ke_`A}IFNDf#hj11>1UYhw({;zGSdr_u)Q|HQ3 zH&<-{N~n{$*Ht*f4@QqTtu4g+p16jr-mw_eqah*GFHoe!?Jq0cXh^$13(+J$^_^g& z-MUwAsbXC!;+{+3o<=Q2aYB1O!T`)Ygl$?=QfpB+bbf&5-Yse=zmJT?;iXV{jInE+ zP3GL3VsjF3in*#(kvjFl;#8R|P*RpWLHiW^B$G7hGr?>8vCi5*f??Wg9@v`j2vZ zsU*8QZp1VfPWcSV;S5QoR2;y*3a*`-=l%2-{Qd%f_?gyN6@=b~e{miIIOT7w2uPyN z&V*tqfOdwc{dkXk?J6}F7<>+D^NDTvsscTzg&A$A)w~|H%Mf~D>8{m-;A7*=_KKV4 z$}g_W^yWC5sbnkphjWfRY^Hr8d+Vwx+wt3G6)X&C;))+hzQ4_4sCaZca$jP^@y~Y$ zps3Q&g?-w#gS^r)Ng%<)*{)){2Pws24DkS)Hlb-Ll*s4nC0*-505Ay#O*t_!u<)R# zox-WG2kt%c>C^q$?|gOouL85|17)WAr8s#mPN?yemX*TC#^{N%aL8{m%I7(ZbrCsjKNGmM_8fRyKKC=~$C8Ls5{4+CB~hZv5^3hMbZCBysMUHW%{P*}WVT&v=uJu;Kj+WZ&%;TA*3B zqX>O;G_(?Sh~(tqz_b%V9e@C6?Uy2 zR9%>rG!MN`p!S3UB$;JO#;?}usR?JsQ+J#EOrCY&$?qAXcetmym zzl?#eP3`11m~cAjpA4Rx2YmTyRMqlHh+1aBm)E=XQa)?&o~b~?iQMBc+y2*>q3B3O z#v;7xc?%5xU_;V%>ff@Ot2ZXmQJumwGpGX)TkxSVdLp?N4Dy`c4qZ?gM8lT`axa!^ zyWq9vfH5udy|&rP!u|-$Sh3GtKgG-)!p-1Sm3IsDU7+ON$l(y4TcR(u(A>1w*Y24} zj!+spoQN3VW^+D5lL2CH$qfy6;#T@yd`*7iT>hLneAt}iY?9Z zWnorhSgq@a$F-r(xxY4f$Oz5HQxsKosW7oZ+C0W%Ri=6G!Li~qsN;3PTIA)+8r!K?=r`mA>8Ig z_qdw(R2k@+MM1)jBYbKUmu2^2pK!^ilTnx1Aeoqu))hMQ(34L}_V3d_BNwO=6&Cc8`q;k~?L4??NuqNIFH!C{E~i)d zlK*g7fW6k=@B2!)#cFdA3thLqoc%Y9>m@$64d&YKS5{;q*95{(il+;W0*tDsR@ye?%8cL356L zb=3An$#ie|b;HkN&b&eYG9o_5FMpn~3yUh9(NTRVe7tK|iIoMEQ`Vp^5WTS(+ys*x zfJLr|Pxw3X}aCJbBU&U`PueHRq+d4Ptc;2 zr3a%n_M8v^_&*p`P5Q3CE&u%md41P&F;v{Wfhk&5t1g_$$Wn^<%Cah8)#k%`B|M+< zdXmObWzG~Mm|9j@;JKjEu_7z2b&IX5n_MM+0|}?p4U*VLgF?#tCy#v{Sjim4hT{_KA5jCFy9$I0rA%%IiUKj!V{w= z>Vp&}@z59$LY?8q$+7xKx0FQaFBlM0Tj;mKItfHu-fIPoGb&EUIa@Vvb{!wR92DtW zv1dGO4ZBH9QD0`z6I^JSTyW77j)KQ&Vr+4VqWaRXCqRZO1C`PMTIYwKfK3dzSOrud z`BKEWQkHJ%$&s>}M>Xw+^-S7v-#E2-M98(Ch*H6wr(3!7x(0M5kd$Wpvb3Z{66*+@6v!}Rm7*JsEca-;ty{&gIqk~iq2 z*z)1UwYInN^{#*489O?x$yP~E=fk6brWyKW1D#3uH`{(jm%R9q#WSm!*1tTal~S<| zrl&|vv?1*pJ0=HuMIuj)Lsnn;RQ~hP0gYCcda3q-GBgR^l_j$Jd`l%_3noxl4rT6= z1gKzdST1?cBhP`#EnUv!O`qJb<@!;^P=4?tzWcNNvsuN7;N*aP6}!ZJ%B{21gDIXy zz!2J7GaAsz+o#^r%^rrZO84q^da=Q#<#n>3`S z8C+VVi`9va^yh_3f3|a*Y z*-~t+o1l?HGxDI2yiPQY_c0~gK_Joh}%l8Ns@?1qlRp2 zclQWBr#oBW^Nbk0S^FwSX79-o1Q*f82T6L)M`uMifk!PpdKsw8ybdfwyDC-YE`JD~ z_oVx|6W_oCKj|YV>-2BlH31m$_0OD##dXbj!;hETI4cGMX(#=ty7mj@)jSQsRQHB> ziD6kn_{F5i?{Pg5#74;BSB`JLhe=M|O;X@%KK15jE{<5MILyhi-?NUoRV-OIVg)u| z0H<7T*|`qJG|1R9@aa$7A0qrx{`g{~&HhdP!uRf*6W!osN|C|_NI#G{zq|9pLt&k% z_3&MJL%~mYi+#K8g^>MS+^NLuvA4WW;uKT7TbFP)M+`{!Lr9_(-+F=Rp>}{hum{i~ zM|2mg-v;Uy?)b#&+fC36!dF?!0Al{J)(K@_kt9`jtec#uK2e!-3@N^18Uc}M-^#CV z2ep?iAGemI+?s0Mv>ms$`LTI@W zZeEG@uk)LLe8mh4r=+mNJ3n?aaZK-iWO~Wz%piQ~accDE!-8DlH*VCUJcm^mA+56@5Fp|d?X$O{JKJ4M zM=BrsfBpAwXGQB5xUkI+cL~?K7THHBP`_9#Y`e~`#I!va=2!Rsf?UrSUW#_jo~$SR zln4GAN*J|Kwk57fPGv{LLyJ{UxX+WkhGwK6qCTYAFr?5V&kP848a2{Y9{`D;aCTET zF!Y@Zg+6E>3B5y$pu$_a;>oC!J&2{eb{v#tPGSwUWnc(? z=6XtO7w$jbIQ@YacyI(_>?b%FGw?@Uh9noxaOodPpM@1O(Gf@n`5p;mAKfBLf4}WJ zxktSsktF4Lq2dCs1-gu)`i(;k%y4(PA}s@JDH{k~kH1cd@iF3+Ra~X7VrhZLwQ+gT zD}wASPRCN6T9Re2m5dzZEm7cfE_|BESjj2VCx+Z{Eza$dhYNY+a&#E~FX`(E-ut1| zQn8%&a=gA1TASv-r>hLUEhVxQRWk*Fvngz4GqpC*`MNSKW z;;V@32u@ar?{oRr;=Q6Q#M}f5zJNh!$7)Y%hrd{Tz@3_wt7my|?5w^0VYo^w#Eok2 zaqHaeD|k{Pi18SdPKfyvvNF3Nl}i+yD+Ubhg{afkR%Tu7I-1%qmA+o@duI)ny4sy| zTuZUmPi2bndG<3hTDNS&Bd;glpcqv&|5r-M6^r!TaE7_wKtccVc53Z96%U3Jxr=e) zClP(J6BsTmX(zzwk)?0`o4s@Ncllb#{Ntl|-BOY#-p#o^SU$h@hHblhe2BF~Otl$K zz-q5{BC$Xe2AFTJ%>*A0H67-+MIyXLF!D8Q4Xr}x4Xf|D>A?e+scpNqzu@HoKFh;~ zJveKR-z|wBk+t-Sq|bm;MZE2~7=e*Ze72{BbjA_$Dg`&V3oqMoX;6icBGm9xVo31- zFS19sgvy}~^c?!6`V3Fj0Tr$B%cW#r$_Dv5mPgO=;vIll0z`FZzmX*8TCaHDdZdx0 z<_r4^OZ=Z3GmAx+OfAP=Qg=yDTY>E_p|ox1yMRxMU|sm7`29ParTTX}OV;@&6d4)Wgy>Zl zK}J0RG{(N8%1lN1tK;9%a@?k!Qr+H|cEtaS(zKWDt2g9}(3e2D|4U-z>+WdO%i56B zt1S%8<%nF23DcxInN_1_*9PkF&ewwoE90sbXt(G$9cA-L)NtR4AYpY`XhFdo)HkIP zUM7gfR_n*z^oOw9~1)@KFGYgtv|-A+n18{T~65#PG1QZ#;uo>R{#>6KqgRsTz`Ty3VXUqCo8fMhDVkU7kc zs6H*7R9TB|-9Eqb)M#f{LP?g3`QO zclKj@E>Vy4dzbaI+6G7 zy_EUq*(&>$BPXVeh1_^2pM~F1+RDk@>Gu71hdxo&0QFmF@#%2L$wk)uFH7~gedN0b z)$P2L6jJq>8Slv%FQ6Lix|NUEY^{GOt!%})b(4>k54>AmdiHREZ{npSv z9P(L=;b()B04Af7sbzGD-%_S5!4wbbfNtod*KYS+`Y$@|!tp)g!2mYbR@l@!F6p^gO`+WEwVUho5v&@Hz#aniOBA-{iZ#vI7 z(Z?I`_*t-AXHP%}pWwmui?7n83+OR!xLO*|dlBU4D(TbQF2^h7l2F|Q;Go-g+MWUf z{f-pvEnj9}GH1i2g}5~Va_lbJ2mywT^ftb1HDCXk01b$7?R2M;1h@FIAK6%YOD1ZO zJ%AG!A`|x4*}sFZ!FSyjLN=6S16*nF@q5e6la$haS(0{3ihX*riIdwPZCb<@&->Im zlX?JA23kbzx}E^MnawO9+|-kYuZ+J83c^^_+Nx-r8~;I3fZGqaVH(zfr_L9Ds%4x8 zMnQahm0Je;re-)M<5RQ7&vsQ>lkhJc%i>yGa~@=qROiUFQmK+GAm!+~DW0B4E20mb zau{lR%y5f2-wT^@Z_^g@_cp(7xb$18cEO!kNh5Ye>bVx<377e8cnsStJODd9d)mR# z6zwm^DR`EBW4O<#DxCk-+~;V{4VX2<%S|7Km4*9Fxs~Yan6>09N?on^;gdPxmUUei zQpe@bpXO17&GQa2yzV-#;{<0-N9heC%i`t|m`ewq42&jza8$SZ_T!Z@O0%E2Iu+Sk z4xb1daz{;~av{4>>JLjRjO*7%()$jYbGrF9<>&aTzrRDy(ladulUcd}#TR=mmoH}X zlt}!6xDk}k8X*zvBz0c|Vez5(c|Da)Q2*YSEOvDW)i^oDuZY;lai)9akf?-s2N29Y zx_muwvD{0^MK1JKo7CA3bIU17Iw*`J49A66^ihzcUN<$#UAoSLW- zyxTzCL9rnGIx?`U^_BAV_!rcS&i_)ncgDzn`{;`-?&lA9$P}Cqo&M-ShMk5+o$CC7 zKkK&qF!kx#-)G_b{-`)ol>lYM>6inetyC|MNqFNsl~(?}!fh2X@{;3$)D0cRw_T)Z zF*XN#eTMsC3_k63_&4q6VnRRnZ+My0t3wsH65-T|r+<1muDIcjuEJ+J^xtQ_y$Yp( z+I`}VwBfDEYaz*~*iJxW?s-{2|TMtZb1$#+<7ni|63 zPIhT#!W}|06peTeZ|&=vZEYI~hV3b*?D4v!9cZ}f*kQMY?x^KJK7PjMlZExC2+lZl z@+1x##sMEp{!>w2vww)pvC}79tDAI35hi+wpJyY)4|grH0XAtaYf%=AOjxt*3dt)S z#V2v^6|uBV4+(Dxy?Q8~`t%EnK+0bcsvh4}xju#*_PZYfduUmhVlt@&ei=ocpbOVK zYeQyL<9?pWP!TqF<~E^d#fksK{0TQ^GJ#}7y%0@+Eu@zJ#9o)vo8Wzij@tZ-v;_=D zfR@b2Wc926NSD-fIDw$KkjA(DXff$ENl<+bxF`v}1oa(ImInONLT#Tb-k~KSWX|)y zLG+ui_t}fZjnzJw#+rN<5$*=UufA;WYM9303*2;*ZP;FoXWfvx4?9o;kL8{W@BVMd zKmZCEYnZ-;I=AreIM%X#sIIN} zZohVac)ENR@~R4(PJ50t$IR1#RXUu~F(kn56`t)t^5>o2q5Hc7@CCT7CT`!8G!Z+& z)UtdJmq%QT;W*pye8WaW1|&iUX^X>Xv5Jlui+n)G@MBFnP*vbc0^vVKfoXY3Qg8Yf z>164&`jE)^aePiQRh$H^$BBAT7d zE~G@LOGXn`o+|26u0VXmvOmS+F}zb2UeEpGuPRs}s>+ZH$QZ_~I_2BC-kTyAQ^$Wx z>%%X5-$6$&H1`zA5Mq#8+wPT2-sbgp=_@hp!78ARb9{z)v2T)~KK|b8a+RhMyidDM zEN<>ZK8#5JTcwf=_z=k8%;l8AMW4)mpB~^-=2%CevP91mGDlS?+59IRcM8YN!O`8! z-iIItP?wvKAyDj482tJBJmV&mvoe5gsRCFN+FuKxZcevv6x5dNCV$60=|WjnJNgcA zD2MC}HE(b0ag;_|op`L6!3}C`L+jtkyV^NkGp!xHfm7Tb?xc$kF@emHyB)f?tHo^sJf1HgaC|Q!6Q*!mm5Y+MF}r z;#qc9YfV;>nq!ue6`n&RHQ^9W7_=KC0~7TwyH;F&g-cH6>HGHhN$TkPl$xG$>`7;+Il| zYL|kg24<82fa9V_c+_POGUggy0bJr(_k5<{$K&oD6b7$rx6T54Kk2c&`2{O{ug)I1 z!gYcSGh|h>hpLn1`3yhj*r)q3cL#rcyN+P}|NIkyj z7aIpLI2nV7VH2RFdqlc-0Acj`+EN(1Dn;yVnmkF)x_%uiFwJ0$%3Tq=<5E@;7@i?(EhPRcNjZ{VCaX+_qo1eKWYp>mWoOrXtgDV!76i#2kLz|$; z9-Qs+dkK!&={yNvZ%MN&8Oz3vz##^CkmS7|{-Z9F>cy6W-D>dP7od{04BW9Obrsi4j1;BTW^Aa^p~ z@K%8G{1RfMU1!=wYhfKt4&TJ5Q13X$Y?b2a8xJ6{3t5oScTA(-Ie)$*VsZnKsQYFO zI)6P`^=Mv8J6PFk0v6u@Er~|ja`9GCLw1UogWT|$+0Int-v)Zy;M)c16E@dIz{}*g zVr$jo1%AttK^!XZ>%HNapzyU3L2YeZ3#_|65lydNXd48OWWBL7fz6j?9vyM2)#ipi zrnxZL`6K=@FI%0^=lu#QVh^;qP_ZPmg|rMC6i;b-MTGG21>=nv zgku!=NHln1HMS6!$Bgk_T>`VBNw;AA1TvbQH9xJx?hw-UZRyLu)j+aH85Swy@f2j- zF=5S2GVSE1*0p?30xTH(KrscrcrA~9m;7n_y|j2*ao8=cifbU%GAsuXs4b?aU2?=` zGwF-^K1A@FHRhFG5Y{!${Pb3B>dg+kYSb`#UgjpJV?Xmf{^=_#5Aed)5*Q zz@KgH$M}jDD^3*A-I7D?Zp5JKIETk-AzP!U`EULk$X*mZ=!$Fqzh2X7GcEh3=ez|* zgfF*jc(cv69qiavKYyF`-Z7Q&LjiBghmVunvRi+s{pP)pJ+m&zw8TV#5?CjLPtB+y zU;4ZmhF=V8Q*#x>!u(p7Q04kkK$_ZtmV5`h`VpsScAQZv$F4YW(E%0lf8C)xg7Pl zzEhuafW<^jutY_B@_H65Hx(HMEn?n$?goBY7fZ}We3d6-N#3(=^O$_~4~QM>N~;~j zs=4=_AUf$qB1YRt#WGQ!z!u8O+q?pl+q~4Dv<`M%G5tD~9A$hT)XhmOAy6=R)Iq87 z>ZLy6COx<6K@;I788xUi3$oI6htBu1l>Yblpm4O?yF+Vo^#ndjlmkTdDufV}*I<5W z_!=^L5w53iHqbn~!K($nnQ^JsJ?eO6=-n-Y#ol1A>K{yZO>|eIi|b8(iW-=+Frb(2 z(AylwX&$958_;Nw ziGX#)kn_c_a^-l(4+%dsX;bbQe+FOzT2geKB2X9MyY}>ejdV4(&H!&vOGw4KJ5I+8 zSC;t3Hj)gG^igQtO6hn;Vla}clnm&AVsVdC{|mG&c5%2oXl;mce>oR_oA>@GQ@nGx zKvrQn1+J69bfv4>ye#O}Ip#qwp?u{iE#nx{kFrVHaaQ#IxB$m^iP%NHeXrqhwhboT zzOwJKXVyA|!UX#L1QN2l&nRO&vO8@pW6hq4)<^Ot2||i0uqJp~V_=!!fNwm1OM
8}uFOYu)+|!ojP) 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

?f7B9@psje)TWP07M_?7B_Myx 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

b6ZQnY@0Ks%*T16i* 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 Qhi;cjH;GpoelZ3 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%0A+0{t$pgvewI{D*;YY8NPIR0K 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%0DHxmeWK@phpalpkp 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

$Ni%&KgfgD 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 X8ACTLyUlnR1U$E{>qCF&S_l6RnV8-c diff --git a/SerpentRace_Frontend/src/assets/pictures/LogoCard.jsx b/SerpentRace_Frontend/src/assets/pictures/LogoCard.jsx deleted file mode 100644 index a356f976..00000000 --- a/SerpentRace_Frontend/src/assets/pictures/LogoCard.jsx +++ /dev/null @@ -1,134 +0,0 @@ -import { useRef, useState } from "react" -import { motion, useMotionValue, useSpring } from "framer-motion" - -const springValues = { - damping: 30, - stiffness: 100, - mass: 2, -} - -export default function LogoCard({ - imageSrc, - altText = "Tilted card image", - captionText = "", - containerHeight = "300px", - containerWidth = "100%", - imageHeight = "300px", - imageWidth = "300px", - scaleOnHover = 1.1, - rotateAmplitude = 14, - showMobileWarning = true, - showTooltip = true, - overlayContent = null, - displayOverlayContent = false, -}) { - const ref = useRef(null) - const x = useMotionValue(0) - const y = useMotionValue(0) - const rotateX = useSpring(useMotionValue(0), springValues) - const rotateY = useSpring(useMotionValue(0), springValues) - const scale = useSpring(1, springValues) - const opacity = useSpring(0) - const rotateFigcaption = useSpring(0, { - stiffness: 350, - damping: 30, - mass: 1, - }) - - const [lastY, setLastY] = useState(0) - - function handleMouse(e) { - if (!ref.current) return - - const rect = ref.current.getBoundingClientRect() - const offsetX = e.clientX - rect.left - rect.width / 2 - const offsetY = e.clientY - rect.top - rect.height / 2 - - const rotationX = (offsetY / (rect.height / 2)) * -rotateAmplitude - const rotationY = (offsetX / (rect.width / 2)) * rotateAmplitude - - rotateX.set(rotationX) - rotateY.set(rotationY) - - x.set(e.clientX - rect.left) - y.set(e.clientY - rect.top) - - const velocityY = offsetY - lastY - rotateFigcaption.set(-velocityY * 0.6) - setLastY(offsetY) - } - - function handleMouseEnter() { - scale.set(scaleOnHover) - opacity.set(1) - } - - function handleMouseLeave() { - opacity.set(0) - scale.set(1) - rotateX.set(0) - rotateY.set(0) - rotateFigcaption.set(0) - } - - return ( -

- {showMobileWarning && ( -
- This effect is not optimized for mobile. Check on desktop. -
- )} - - - - - {displayOverlayContent && overlayContent && ( - - {overlayContent} - - )} - - - {showTooltip && ( - - {captionText} - - )} -
- ) -} diff --git a/SerpentRace_Frontend/src/assets/pictures/busi.JPG b/SerpentRace_Frontend/src/assets/pictures/busi.JPG deleted file mode 100644 index ba06218423abebb96f76f7b7d630c1d97a1ad5c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177580 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 z 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%0DjR+9i*Yd^2_C6aOmf63JfbEgJroSwPw2f6@RfzL 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

L0;E^Ml}zkPrF9~dv-9vG*xmOXvKt4@?q`T8`I zYI{F|OwM8XIx2lQATaaY9vmN5CIMCno?>bH&a6irSb#_K>~S$)@xQTET`Zf=L9I$&!+eru`;NV8jY9>4z4 zmxWIM)#QxH&4@x-d;X7G7AA&O1rEWijj(CC7WqfF;$tu zomo6bw%F>87x7qNg#dB}-c3hL6I{WLl_$rEWvBoM4N$secO^o5w%QK&MaiJXZm`=!R3P=t>yrs9bv z*^NRF{UKuCP|MRC`=@vYC&e0f{lJ&-E5O#_RPf0gh^3IX0kkiseFrpzklft<)*Y+< zg6{g#W}WRR#ePnQjxw|ZY(!Et{wc<2UtSHLjiq2#m#Sx1!>mNa&1Q7ZP3FrMHHrK{ z+WVerVMK=I6)fN~UGYg+H3rV35tuf_=M1HcvG ziW!s=kRbV*_}j>XumYkAl`ez~K}`VvSk$Nv5_&SY9ZPY&TNG@)!}QWeyb2U77}8#d zNPoJ`+-dP3+3#B#Vm1n`ySC({ed=e!S>7-C;f=58+HwyiRq>f%I}!Z~Tf@~JMZy4q zN5iK!rH0(R9@Hx$jMg}mD^q%TM_7im^zitbwjTx;gN8M+arH3ysLLz5ATP`a-Au6&vpnR}tK)|XUlB~!ym!DvoM76anfIgi3p(`%NgJx*}^X{Zw#s<~MK z+;H`oS@oMlHI;9*3S}++7$e!4Umo;b0rsC?gMGf=!@7}hg5{Ad!IM!fw5Q~L#coSi z4VU+~n|F%Lev>uynQKiADt>eM>>5Z6?O0J0{AbvmSW^ihwr8|DI3M0;VVqeh`#Qidckj^bueo~`&UXt zgCpCA#-uf*d=yE;^ovS|sBM+OZD~8VppRHlNlNMUBangJY**YLK^nic0#{xWRDoZX z2l_K>f1#!J2J|q494m#fCaIf?7IhPwi)LYn-y?7$F#X)(SE4+AP(jz?7vaN>;6PEO z{HL_5FdC(IBJ8{&r zd5^=Io=X*zGfvm9?{OdTX6Q>F8%5_ z&OEX&Y&kdrPy#|>ee&Jr?qA;(y)qE3N@>%aCR>4zV&XsG6J5P=h;q_(+3s|>{H$r& z&nuSv*D$*BU+ie>dv`PFz^?W4FWW4iSXm#HC$}alXf6dGjb~=9o00i)8^wXpX`ieK zJUDB*((Bi@?2;LFwN$R^>4x4k{HT8f5CQh6FByYf_ibXFVvm`%Hp{u~Z-~rTmQxh* zGTY_#>Wx+V7T>hNvBye!n#B2~aWj9!B3a2&JwHECtEgNpJIS^AN zX{@9ugcZi9jd)@H2(0Dc5VElbp*F5c{zd-(jZAT#4_Ao+QlQP3FHLwOQmc6HHI_NT zrJ_q~?p;QbNsgIS~txP9(}Cg9ymS}g{6T{eYZo@xB<=7IIX zz(Z>8k|@~9vnpyj4&A&_kHC`Z;%*l#dUU^C|@=6VmG?B9j;WP+CH@9K{|w9h=< zfZAe{o4eAdnww+$3lH#oDBpRa8o|Ap#1VCOaapMmFGWiyunrHe*nGkH+;qU$Y=l94 z5p#YW6-BKcg_ulnCz^|96REz;cIS}|Bj%!ayBA7&5L~4-4o`_Os}Xl>hR84gf*`+H zbrUj*K^8BzaZ2X{0A|RqD8imU1tjz`)HA{PdBjP(q1B+==&80H14Vz4s9o_8(_)Py z?4+}1_1+=tNw!<^Fh#oMLql`rsVP)LY8h)@>v>}YuH=kl`XYTE)S-`3sniMX_KkPL zHjPF}4SqbI_8pzGIqb?#Mb4(_$|2_A_dw}I7c}~lf{sH#1)&9+nQbEx)+hr%k1f1Q zv{aFr=JFA6Ndgf!E%{A4yFX41SW5DOOiev1vfv^}0Iwkn&wOyBm~5^MNp|z%1R^Gq z0pWx%4Ld46u9rHGJ1KX2#WheGKT#qSWeg8R(Pp-nr>jlexl_>K8+~tWxn8mNYmv`5 zq|kK0ZcDHfaB1Mw${}{z+8T`KEy$)frQXQgM{Kr|pgPeLw%+yVPR)sR^NIB-hWgr# zD36!je@i)>pz258fR+eMiaA8eeEfkkOeY-EyE8oTC6c-SOGRAo_eu=ilHnx2S zM$%m{W|DXtb8#0MM`8dn2kv?g>Emu$qHieJ3lv{ho(%aTkooR{DV)eZRu_Sa-Ht4< zZ%WPTj@cUiv5YPRX;lDO%eemr9tQu%kE>3351moJEECO*CaYWwYzu zIbTWu0sFEW%|4GoxvayYgJo}Srx77yX}&+FdVoRo5h8RCwi<-jJ{XP<49E89gPb7w zZ++T=K6%9#PSpU(W(CFG&+0E!HWJB7cknhgnj6~m`y|`{1n5$~)2eIAH2RNK{wAyg zsV=BLsj|8tjrfti4i8g6@8s}vltLbbDg8d+GqTj_k`F0p{5TjdJpWE?Q1yk& zsCjrel^E&(4?q)}#^9AV*=Jv-n7^3D)P@BW{3bI}*Ju6GDq@4nIG9@BYJ5meNi9&3 z+nSkZ4Z1cBX^4n$x*IaCM!%t0751RafAaO&-+iaWqSgq>{PD&>YM`h^@sR0oCs=2M zIAJc?a5ip&q5hq~H7(nyyuIV4biEzQh-dom5{x|Mi7_oCUS%z_JyxR!zk3jDdFhv6{TJ)v#|A+RPOP4dU zRvO=)^}fNJ`_{er=D$nbCak?yxzfH^27$!Kiw6Y~)^CblrS(dLh=lp=co%f6;fB#N zHl^L<+|EA&h5Oa_eJ&!;sfkyIEm%CJ-%^uwtH1L~ab|k@cxLp9Iad90h%uQe9l?L8 z*Rhy0a=Ta4fpN>^8_%TWV9ls))Yg=n-wsuhBdajVkt0E>?R<06w|WC53l90VbrSdL zFv|MOxFTQSjGa-w+@9BaJ`_J)@NRif`276A+T6$P%kZmG{4T|{;C(cND)f)Q9(L7K zQ0A-Qq2hmf4dqllm1LD~t{05d9aHPUTXXx2*t*HGus3JQacenSD&PZ)h!W=Wuq=H5FNi)d}z(0Ua}+c5KU-?N?vg$;-tks+GHU2g z2Ic$84jAW=sZqDrT=Vu$%?oXhO!og!G@-rcav1?ELc0oe1PAN zgp56QNQ7K8Tq73JVUgHqy?xI3!#bo6T354KyoQOFV%jqewix!6u95!P0sLuFom7XE zPr>aEk3t1A)g^!PH0~mRX=>WQ%b0M6wjB4!KPYLx_wD7M~8r8SzIW;=FFlwofQ)$?RiSw1C!HYJM=|QwDic z8S^bf9xzjA8aG}pM)zhVQVFML<^R%&MB>;jgK=zq+(V> z%7<+R+ha^K#&FKI)Y5HjvtiY_I-PdPb@by88Yr#Z3HRzRnl+oE{GZvuvi&sva=kuUwHt=I`_fb0B?2ERZn?I>9@iT>L@Z#`!{YHo{w2}2KTjarY zky+(}9Yw*~B4%C`hSB-~RvC49KeGG`bf(W#LQQ5!Y{77^7f>j4AjYw1kh-toJAb4son4`nZGNaJI5 z?4P5w4oDN8gO|^`@CBJlduHOCeH61wS~vMLsA{_V4XRLb+q-kl`3jGWeN_P26r{`| z8ZC_dyj}LQ=>7I?m=t~i>mqTlzdVI(Nl1->uU zhQYLzR@`^^WnpuLN^9TG(?vbgTS*TZrl)ceP0XJ0y65ClveicSN%k|Ny!&SD?cS*J z>TD`3f+O`sH@QYDJE$IYq)N#3TfK3OpcD0=T?p6}GU~n|&887zD?P^Nf@J4_HoAJ} zW_d(IC_LIJFmjB(#S4T{dwlDEA?sKp<%7t=a>`gJRgWw3`Gb^8LsAac`bYCTh5ry> ze@^!5E^ESZd^E}KZ-)`=hByGY?@)-;se8r93L0*vVkin{SI;#EkGeC*s9n zzWn)%5@I@jezH-kZ|KQ<>Vp$zstwJ}qwQTOF)XKzFn{BAODCRDushq5M$k0vm-*)$ z)*oIHOlKm-O~6__658cF-FKjhZB1@ri7oe%x86Z`U33ml!EO6iX-1za#oJu@I4>*F z>tI);MARfFVO5_xc_j47ZzI0G5<=E!KWa1dd4_M(P9G~MzVS9Tsg63{(x2EwGFMQL zz1uQj82@`tg}k9=wz`&Hq4u|p+rD2b0}#ksZOZF)9U) z2W^U#sxWX5b#+}_X@NNJ z<8q4xb}lLvrz?p;I#&|mpv9yi6di|jt(|&=^1%o zs3RYqSNtX8ugJ!uf`u)^D zWs}xlw+8P?8hf00wxjg&YwVkl3mlH*AhvI;D_W<<;70w4-Pt+dYr#r19&0M)B|Y1I zUn?hFZHd>R{Tmy=&D|+k^+CrtZ!Ok&OSFLu@t9(l-0R;R2qt;0>%>|DTVj7+p5;}$ z@_ku3uf%qpH=enY{W$T^eHmkZX4E*?HS`$APg>|CnqR=0LeHZitz_$=w5s*}O~+)( zM|`;M`TaZzU%ut{r?AhFUOTBwh{TE<_HW#2Ag!Mkggn@ook);bJ*|p(@f3-Cx$J$$ z5(#~ZulFau2b(I*G$7FLOe6*UjGF8>IOLtw>wVTLCPUq|YXa2C3Lo%$xSvi!t4xflKy;AVs`Y#l@i?+d9C@H~T}JKxhEV8~Jn{Z4LaY zx(86Qr^#!~c5Br8Z=ybxaL_Wpn{<{pm%~uKaL?-iIt$gNb_$P7z8{tfBebMpJCWJx z%Sk3WGhe~U{gysJn0gf2f8L~d1UTpo&*EBF{b)>M{)}8X<*WK^%RZU=SU=8k6RC_? zlOY`cCaeH_A&n_|8p3N;5n8p#!e@J`H8-c2rP5WJ9F-2_BR@Nl*CRast^P-DawF`O zvARi;lhgSKI&+a=7(+GMD|77aOly*&^}QH6J30w%L2{Igqi2z^o6@f2Bs2perG_pd zIoO?>yuq>;DHKoWrmbvVqgl3e;0TY^Do8w3H2%bYT>%|$kX%3c33FHqg>d`j~^#l7DK+->tUS$b4Y0Xx%Y`OGm4EiG_jdW zX`&ER$a3)#%-f_JWqIA#d2*d?joNnq`H=q`^Ie66Vj#=X#sTqvOl*F4^Q4dl-Mi<- z#}&3LLg=*mY!YFZ6A8G&Qz!OO5&!98QdT`=*^&EV6zdgKg%{ZLue?<>YX4V7^p=$e z&Zi+UQi}IVFT+R_#IH{>jAG#sC3h~0|L7~cXBMe7uLjSORDdPY+s)D9fJ?vyI{aN^ z*&4mlv+6YEt5=qq|707rft%AI1S;n%TZXA1IO%IhNue5BmV3rG^B)IzR5-GrxIEbn zNf+M2gM@An0T{XqvxuCqc~ozl_3%;OMF0~D*@6YwolV3@&jwi9ILLD63@6E2zRK;M@Cq>r#*490Unbj_iMm`&DR! zo-iDUOwCHjc2lnuo2q>%t84KaqTsKsj$%{5YhoxeJC=7~DC{L0=3GgU&>tV(^(CpX zL(irU)%wMW%`y!Y`*`P?BWGkC)>N^T-m&-vxi=#2K6!$NDY7o)XbC)4#6Ve!{_zuR z>3#BceX*HY*$I+$`Mlq;9Yk&p5F(_&J0(&pPFq?5{|Ztvoz>6Y9s$l5co`9Vr{%zy zs_AE?hP*UBA0!BGtwkw0Ke($WaVPf;YxWKOe|ocR5%Gz%tKPd+8QlN2UIZE4a}*fa zCGL8SIAzhXo-no$9d?GpbiHOVPhI6G&Mo_&SNbp7`9jw$V|}uNeVg)^SX-VVUhw@d zu2e;ub2zhJSR*oj%Xc1TMD5*eR%%}jUfLWJWSZ=1`72O0n|krP`7vvgs}0z1=Iv(x zyOk=ttWo)Oq>xj{)T|vgT~4F^voud|dFpc0Y7!BnA*b}(<2z>NcHyz`^%KAL8tZoJ zR*uYwQlhqZRaD*bc&K@9TX=hwv!rO+{VSG7)2~Juc<)>HThI7S9=<_q*hNqgmX)Iea zve_SjYrh|cK^^pLi;PA9h<=@PT+_~dJynf0jdw7~-j?-!Pm45{_)2;`U^(xlw)L&}VY;`ITzt`^L3zuS)SS4(rY+P9j)A`$O1BuH!BzJMze_ zESon&otLh<9IQWD5HD0elv#%}TT->T7+H;=hGeb#F((GwL@TTs3eg{I{w>gbT5u}l z!`FO-iJ-Sd*nP9L^o*rkZd%(mPCaqhnIE%3HfG&Ey1N|& z)MSS5C4Mt^XT-3Da`bSF>9o75W zuzsWov`>i3^~?}|@~GMUBIL*9ImNNtdY&fB7I0w9SUc%2Kd1Swq>h>J=MYST3hbD! zT2R5UYR?TT&$7pX_2oj+`#*^YBQ?qUKM{`_J?iEeBffCjSV>%6_ZS7gs*jCQ1LMIX zl8CWxmPXWM$NK98weQ{cTlcUvI0$u->ijDT2g)&IAz()hwTjbRmSC~gcjar{6fFFl z&<+uGFgCRxbUq{b17`i>>5yCZOgI4jQHRGJ0NK{-5%3;Y%c9x7EZ)0L{EntFUz4^% z2!WVvug2=6yYT!gV*Lfs^oi!Cx!&JC=hNk3PW9zHzoDJqVGv$3yc1oQPK}~Ts+vvqKN^@a54kfM=6+bAg zE8p4}96#5`bsbs_i>>=I4mjMdv)INEvJ~u;B_Bily!J1Ir~S69)5Bzt!9xG`qiYW% zeM%4VFc8h-QQkI%TidfQz$Y;Z=z{8p+;zeru$uFxj;`OVDNVF-IYjwHg~RJNX4~qnJh@QR#=d9w>ypcqTL70lQ!Rcs@FUL~1`?f=S~@V2@k$|go?&7yh_T<>ECZD@O~ z8lHa4WCEDYisl=*b~{(SiD2vA6ANfejVdCCqO!1|?P{<7r*r@RT+k{@erqP*3Q$4c z8i-u!r8&Z`;}Ed}{M-&o!}AK~<7I~__@2;F_57mJoVkK1eo8>lO#VLyHMwE!DFgWq zn&Po4U$+q7@G#H2X?l zu~mXo7G(^gpKT&E=wG;>^~h3Z1ku@r*k%Xj2o;p;0q$m9-s1Xk4pn%uC8t#Ev)~EE z-lwGgos`duLE$wo_oP<9bAmgJx4Ql}PkwXmE-s2-MM`ukPZW0vH3wf zc?^W}Hg?w-eLBAVln#rbaSuUeyegJ!83>V|!S~c?(l9c))nAxV9m;x^s}T(InBz! z4_dB7ZHHgKhyHv>-w=f3UV9rKdC7+^0h4#th|%J*@pO@3R*$y59z`e}5u&%hp!71I zS&!KCGdYiCs$kN=KUFrr^CY~#ALLSwCo>E8{m-{zly4NvR$C2y4U?~|xE*fQ>YX)m zCF!VGRogFREqr12NpED~SIwD!v7L|xfGpgyyO7w%{@tDW4rTqBQ_RxsP;E#r%<{Py za5Tovyvzs+mY6>ROTG|wgRJ*Vzwx6?BXW;Kf}0$H!p3p8U0 zYB#z*Mmc;w7D}b9U_a!!1NSnNJe*1}Js#i@p< zdP7;`h_&?-{l$Y}y3HZjN|+Qbc`cl!HxXo_l}bN~-HHp^sfM&h_8OZ!X+xThuPlFG zTE{MJ=bGJjO#iOP%p~?tOI>Yza^;Gpk-BHXe)7!z-hE#q@u#rOKpfjDd-B$9H&4P~ zuR%tN^v&ygfA%*^w_lK`IK^Jyvf(nSDbbblW8e1Nmo~fv?Q0W7hUR7>$~uo;bDy4p zF}^JJjJIhPW4*iGu4sqtm+r_fb|rNO%Hck8Kxi#OW@8#ahek+Y=O+j?|C5C*sAZ8v= z^Zuvu^S~_Wwjd_b@?sZh=M4Pzj3l9V_1wCPxzkj`QYVaZQRw%{qjNcl_=3-SPJ8jz z9$lz?6S%wYl5Fn(gt6b_R4~lRh^Gv>wW^!w#CI>^!gxKloJadt6H2-MI9z58X|gDt zd`_1+X>>G$fn5|{i{9;_q;_g*wRotiM%tgHYG-M-WPO3Rh9y-wk&WrRZTzkHgIR@0 zMM-B7L1#Ia$D`%zL0ZvmlM;AM&d1~O(lhSyAgSI$=4P~)2a5k4Hsx7XFb<>O;pM0L zPPm3e*UO8Y9tU@gTmoh6E5y>vb?mG@Xt(cJM5Bv-zRJ> zdS1%=>qYxf^;1yISeqXl$yl0U8`5gYq}JoqzFi8b3O+u)FIL=ot)@gD?8c{^p2~mL z+I~>!##!CVrF+eST@+|4*19f>{YkQzv|o zUyoZXBXYEk8TNbW+h$eX{N2d8PYO0F)oL7X*pN`&Zex0=l+UnOS?VAe^7QziOB?E$ z*5F010L%1{+7|3I=Wp#QJo3nKdTLl69vKzPlK#c3T@A18I?kZ^lJ!JpaNI>|(D?V5 z!J_+SAwI8WhR`Q~%xXg1j7mH6W=JH87B8M7g}W#07sajnj`EgJ{FIFNB|S5N@HB0V z2#@fQh^)$qxaXwGJ3XaWGH!+XwWxqk9OEJ-YLU2VpkMF`6}?hOOO?Ht3RizxG`ytC#vTh({>$k z5x>C(>1K5zEjK!#J?7_3QNf%aT3+50vCDYGSKFL za287$(wdL?i8~pLUq|?@j7Oc#N>wC}TwvC^5&GL=vUKE|d2PPYti@adJ=?d^T@G|| ze={oRfvZadV16ir=D&}53oP*^t7l0@Jn6)Z&`mJQMc-rOVZOvCWPxgIU$=V(@SCoZ z%CfHT@zeacP;1Z#rhh%2x?B1zI{b95f+9zBnY&(cD(ArW`63l*V)f${?5g%GIaqPu zUs+n%>yrhwy4F$~ThC#$(sK)ROA|S=Mn9!ghx-ducdC~187H*BJ{8+MG7p~sE8|GC z%0f2{w${6GkKU$X^}`7!%LU-F!LKg+0hZ*1<}UpQ?KZL4KV2eBovqoiOb+pbg^aj<{{Sm32mr^g?$vej z_969`@!ORP#;0(j_pjnADS;=1uH^;#pv1@v3gTx#7+L zT-{A-sf*cCl&(d4Xw1v~bu4mH^h{XILJ{$<)6{&V7KHg-Gb+SNom8*J4J4NHkZbJm zi~OzvROMgDkR)iitN7VVX>0Zi^$jyk;BFP5GpAJagU3CLKvoZuo0awHlB#kB(7{)FJ;0)UV-Sg zo=f#AIgM2u*~ISNaQ$?@cGwllR$fM^EeHDr`t1*w`+PFy*8T{D=>88p1UBy1>Zrod zw{JN$xSmm%8gom}{9z*Jd_NQFzlzQmr-+e}4DNd{5btn+Wlcu$dibjQi4a)4S@J(X zo}HhgURy+l5N(N_C^A*}3P0UWHjLA8mG!L1Lwk?aY&n{|Q zR7fajTa(eoef)@tx3ipBe`+kcK_jZHA)iV(nx|FTR;+m?24JuG#br)%2YVgc?2k8k zCI67VqBP>D_A_@w?X(QG@yaCZV_#H>)`cqjSy(^1FXnY3DM)pHeqmgG>i!h3(BwIk z$HOq}Z%|{DHilg>BE^29)W_s#KCQKSW-o!iD?cXy>J{@Dt`FTM%BQs8AJ*44b-UppX*&(yE<5widiAOV{6U6Hh!%

(s)o7#&2WXCBD~~pBt2ts5iVFZ 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

    UyX@I@XK4tXM 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

    >~i#6COu)cy@=bXoBNB+qClOg5tE_uKN%= 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 %8x1Q+n&QTQ!>!2(!w=-pFVZ=54~SF^?{Aw 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⋚q)y5>G=U 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

    lDfp?YTp@L7OE5PRsb_MG&qn|8CnM9%2T}cWa*l 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 diff --git a/SerpentRace_Frontend/src/assets/pictures/walke.JPG b/SerpentRace_Frontend/src/assets/pictures/walke.JPG deleted file mode 100644 index f8701e85f8bb9916c0cb87527cc7df175ae0785e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 177802 zcmeFacUY54w>Ny#JBSdP2#A7^NR?it7b#MbAiZ}IAan#aDxyKE2nYyLq=hQdn^FZt zM0yvHA{~|9-Wzv$_H*8I&Uf~?uJ^Ccxya1Q%$k`sYs#AW<-Uj0k<%H5eic6_djQbT zfC8id01yK#ctijmNFl(_g+FL>kmkW7_!*B6(n5Inz(p_wGXlaOO%I0m!H-io;ZL3< zkVb%oTmwI6W&If{*rKiNIJBG`9KAfzXg3ZaL4FZ_VGbTAT?1aQBtcw+9Y z!cu}lQX+x?IRM0v0EA!}g2LB@2x5M(ivcW@@DCaa(&s>$1muweY1%(%Rggaa2dx9r zv2pl6%MlY61LFQh6jDrb+@(KdLe+-EM zfDMuDS*QR2mo3Dj}{M~7Voqb zFB426!8>yx@zW6!5#ST!0VJek

    CE`7 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�dv|s*jKN8X#Gr+v>_LLN<<_&AR_gx%I$8* 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

    Z^mT9;jVpdVM8l9+)=56$-`ulWE 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 iQ{Dx_0n3=I`tpB~`4Le7 diff --git a/SerpentRace_Frontend/src/components/Buttons/Button.jsx b/SerpentRace_Frontend/src/components/Buttons/Button.jsx deleted file mode 100644 index a658e91a..00000000 --- a/SerpentRace_Frontend/src/components/Buttons/Button.jsx +++ /dev/null @@ -1,22 +0,0 @@ -// src/components/Inputs/InputBox.jsx -// Gomb komponens - -import { motion } from "framer-motion" - -export default function Button({ text, type, onClick, width, className }) { - const widthClass = width ? width : "w-full" - - return ( - - {text} - - ) -} diff --git a/SerpentRace_Frontend/src/components/Buttons/ButtonDark.jsx b/SerpentRace_Frontend/src/components/Buttons/ButtonDark.jsx deleted file mode 100644 index 896e75d5..00000000 --- a/SerpentRace_Frontend/src/components/Buttons/ButtonDark.jsx +++ /dev/null @@ -1,20 +0,0 @@ -// src/components/Inputs/InputBox.jsx -// Gomb komponens - -import { motion } from "framer-motion" - -export default function Button({ text, type, onClick, width }) { - const widthClass = width ? width : "w-full" - - return ( - - {text} - - ) -} diff --git a/SerpentRace_Frontend/src/components/Buttons/ButtonGreen.jsx b/SerpentRace_Frontend/src/components/Buttons/ButtonGreen.jsx deleted file mode 100644 index 459348c6..00000000 --- a/SerpentRace_Frontend/src/components/Buttons/ButtonGreen.jsx +++ /dev/null @@ -1,20 +0,0 @@ -// src/components/Buttons/ButtonGreen.jsx -// Zöld gomb komponens (ButtonGreen) - -import { motion } from "framer-motion" - -export default function ButtonGreen({ text, type, onClick, width }) { - const widthClass = width ? width : "w-full" - - return ( - - {text} - - ) -} diff --git a/SerpentRace_Frontend/src/components/Card/Card.jsx b/SerpentRace_Frontend/src/components/Card/Card.jsx deleted file mode 100644 index 675a6cb6..00000000 --- a/SerpentRace_Frontend/src/components/Card/Card.jsx +++ /dev/null @@ -1,19 +0,0 @@ -import React from "react"; - -export default function Card({ title, children, onClose }) { - return ( -

    - ); -} - - diff --git a/SerpentRace_Frontend/src/components/DeckCreator/CardEditor.jsx b/SerpentRace_Frontend/src/components/DeckCreator/CardEditor.jsx deleted file mode 100644 index cc94232d..00000000 --- a/SerpentRace_Frontend/src/components/DeckCreator/CardEditor.jsx +++ /dev/null @@ -1,319 +0,0 @@ -// src/components/DeckCreator/CardEditor.jsx -// Jobb oldali kártya szerkesztő - -import React, { useState, useEffect } from "react" -import { FaSave, FaTimes, FaEye } from "react-icons/fa" -import TaskCardEditor from "./TaskCardEditor.jsx" -import JokerCardEditor from "./JokerCardEditor.jsx" -import LuckCardEditor from "./LuckCardEditor.jsx" -import CardPreview from "./CardPreview.jsx" -import { notifySuccess, notifyError,notifyWarning } from "../../components/Toastify/toastifyServices" - - -export default function CardEditor({ card, isCreating, cardType, onSave, onCancel }) { - const [cardData, setCardData] = useState(null) - const [showPreview, setShowPreview] = useState(false) - - // Alapértelmezett kártya adatok - const getDefaultCardData = (type) => { - const baseData = { - id: null, - type: type, - points: 10, - timeLimit: 30, - consequence: { type: 0, value: 1 } - } - - switch (type) { - case 'QUESTION': - return { - ...baseData, - subType: 'quiz', - question: '', - options: ['', '', '', ''], - correctAnswer: 0, - explanation: '', - acceptedAnswers: [''], - wrongConsequence: { type: 1, value: 1 } - } - case 'PAIRING': - case 'MATCHING': - return { - ...baseData, - type: 'QUESTION', - subType: 'matching', - taskDescription: '', - leftItems: ['', ''], - rightItems: ['', ''], - correctPairs: { 0: 0, 1: 1 }, - wrongConsequence: { type: 1, value: 1 } - } - case 'JOKER': - return { - ...baseData, - title: '', - description: '', - effect: '', - actionType: 'skip', - usage: 'once', - wrongConsequence: { type: 1, value: 1 } - } - case 'LUCK': - return { - ...baseData, - event: '', - positiveEffect: '', - negativeEffect: '', - probability: 50, - risk: 'low' - } - default: - return baseData - } - } - - // Kártya adatok inicializálása - useEffect(() => { - try { - if (isCreating && cardType) { - const defaultData = getDefaultCardData(cardType) - setCardData(defaultData) - } else if (card) { - setCardData({ ...card }) - } else { - setCardData(null) - } - } catch (error) { - console.error('Kártya inicializálási hiba:', error) - setCardData(null) - } - }, [card, isCreating, cardType]) - - const validateCard = (data) => { - try { - if (!data || !data.type) { - notifyError("Érvénytelen kártya adatok!") - return false - } - - if (data.type === 'QUESTION') { - // Quiz típus validálás - if (data.subType === 'quiz') { - if (!data.text || !data.text.trim()) { - notifyError("Kérdés megadása kötelező!") - return false - } - if (data.options && data.options.some(opt => !opt.trim())) { - notifyError("Minden válaszlehetőséget ki kell tölteni!") - return false - } - } - // Igaz/Hamis típus validálás - else if (data.subType === 'truefalse') { - if (!data.text || !data.text.trim()) { - notifyError("Állítás megadása kötelező!") - return false - } - if (data.isTrue === undefined || data.isTrue === null) { - notifyError("Válaszd ki, hogy az állítás igaz vagy hamis!") - return false - } - } - // Párosítás típus validálás - else if (data.subType === 'matching') { - if (!data.text || !data.text.trim()) { - notifyError("Feladat leírása kötelező!") - return false - } - if (!data.leftItems || data.leftItems.length === 0) { - notifyError("Legalább egy párosítást meg kell adni!") - return false - } - if (data.leftItems.some(item => !item.trim()) || data.rightItems.some(item => !item.trim())) { - notifyError("Minden párosítási elemet ki kell tölteni!") - return false - } - } - // Szöveges válasz típus validálás - else if (data.subType === 'text') { - if (!data.text || !data.text.trim()) { - notifyError("Kérdés megadása kötelező!") - return false - } - if (!data.acceptedAnswers || data.acceptedAnswers.length === 0 || data.acceptedAnswers.every(ans => !ans.trim())) { - notifyError("Legalább egy elfogadott választ meg kell adni!") - return false - } - } - // Általános validálás (ha nincs subType megadva) - else { - if (!data.text || !data.text.trim()) { - notifyError("Kérdés vagy állítás megadása kötelező!") - return false - } - } - } else if (data.type === 'JOKER') { - if (!data.text || !data.text.trim()) { - notifyError("Joker kártya szövege nem lehet üres!") - return false - } - } else if (data.type === 'LUCK') { - if (!data.text || !data.text.trim()) { - notifyError("Szerencse kártya szövege nem lehet üres!") - return false - } - } - - return true - } catch (error) { - console.error('Validálási hiba:', error) - notifyError("Hiba történt a kártya ellenőrzése során") - return false - } - } - - const updateCardData = (updates) => { - setCardData(prev => prev ? { ...prev, ...updates } : null) - } - - const handleSave = () => { - if (!cardData) { - notifyError("Nincs mentendő kártya adat!") - return - } - - if (!validateCard(cardData)) return - - onSave(cardData) - } - - // Ha nincs kiválasztott kártya vagy új kártya létrehozás - if (!cardData) { - return null - } - - return ( -
    - {/* Type Mismatch Warning */} - {cardData?.type && cardType && cardData.type !== cardType && !isCreating && ( -
    -
    -
    ⚠️
    -
    -
    - Figyelmeztetés: Nem megfelelő kártya típus -
    -
    - {`Ez egy ${ - cardData.type === 'QUESTION' ? 'Feladat' : - cardData.type === 'JOKER' ? 'Joker' : 'Szerencse' - } kártya, de a pakli típusa ${ - cardType === 'QUESTION' ? 'Feladat' : - cardType === 'JOKER' ? 'Joker' : 'Szerencse' - }.`} -
    -
    -
    -
    - )} - - {/* Header */} -
    -
    -
    -
    - {cardData.type === 'QUESTION' && '📋'} - {cardData.type === 'JOKER' && '🃏'} - {cardData.type === 'LUCK' && '🎲'} -
    -
    -

    - {isCreating ? 'Új' : 'Szerkesztés'} {' '} - {(isCreating ? cardType : cardData.type) === 'QUESTION' && 'Feladat kártya'} - {(isCreating ? cardType : cardData.type) === 'JOKER' && 'Joker kártya'} - {(isCreating ? cardType : cardData.type) === 'LUCK' && 'Szerencse kártya'} -

    -
    - {cardData.type === 'QUESTION' && cardData.subType && ( - <> - {cardData.subType === 'quiz' && 'Quiz (A/B/C/D)'} - {cardData.subType === 'truefalse' && 'Igaz/Hamis'} - {cardData.subType === 'matching' && 'Párosítás'} - {cardData.subType === 'text' && 'Szöveges válasz'} - - )} -
    -
    -
    - -
    - - - - - -
    -
    -
    - - {/* Content */} -
    - {showPreview ? ( -
    - -
    - ) : ( -
    - {cardData.type === 'QUESTION' && ( - - )} - - {cardData.type === 'JOKER' && ( - - )} - - {cardData.type === 'LUCK' && ( - - )} -
    - )} -
    -
    - ) -} diff --git a/SerpentRace_Frontend/src/components/DeckCreator/CardPreview.jsx b/SerpentRace_Frontend/src/components/DeckCreator/CardPreview.jsx deleted file mode 100644 index 5835bfe8..00000000 --- a/SerpentRace_Frontend/src/components/DeckCreator/CardPreview.jsx +++ /dev/null @@ -1,148 +0,0 @@ -// src/components/DeckCreator/CardPreview.jsx -// Kártya előnézet komponens - -import React from "react" -import { FaQuestionCircle, FaTheaterMasks, FaDice, FaClock, FaStar } from "react-icons/fa" - -export default function CardPreview({ card }) { - if (!card) { - return ( -
    -
    🃏
    -
    Nincs kiválasztott kártya az előnézethez
    -
    - ) - } - - // Kártya típus specifikus beállítások - const getCardConfig = (card) => { - switch (card.type) { - case 'task': - return { - bgColor: 'var(--color-question)', - icon: FaQuestionCircle, - title: 'FELADAT KÁRTYA', - emoji: '📋' - } - case 'joker': - return { - bgColor: 'var(--color-fun)', - icon: FaTheaterMasks, - title: 'JOKER KÁRTYA', - emoji: '🎭' - } - case 'luck': - return { - bgColor: 'var(--color-luck)', - icon: FaDice, - title: 'SZERENCSE KÁRTYA', - emoji: '🎲' - } - default: - return { - bgColor: 'var(--color-border)', - icon: FaQuestionCircle, - title: 'ISMERETLEN KÁRTYA', - emoji: '❓' - } - } - } - - const config = getCardConfig(card) - - // Kártya tartalom meghatározása - const getCardContent = (card) => { - if (card.type === 'task') { - return card.question || card.statement || 'Feladat leírása...' - } - if (card.type === 'joker' || card.type === 'luck') { - return card.text || 'Kártya szövege...' - } - return 'Kártya tartalma...' - } - - return ( -
    - {/* Kártya container */} -
    - {/* Kártya header */} -
    - {/* Háttér pattern */} -
    -
    -
    - -
    - - - {config.title} - -
    -
    - - {/* Kártya body */} -
    - {/* Főikon */} -
    -
    {config.emoji}
    -
    - - {/* Tartalom */} -
    -
    100 ? '14px' : '16px' - }} - > - {getCardContent(card)} -
    -
    - - {/* Alsó információk */} -
    -
    - {/* Idő */} - {card.timeLimit && ( -
    - - {card.timeLimit}s -
    - )} - - {/* Pontok */} - {card.points && ( -
    - - {card.points} pont -
    - )} - - {/* Ha nincs idő/pont info */} - {!card.timeLimit && !card.points && ( -
    - SerpentRace Deck -
    - )} -
    -
    -
    - - {/* Kártya corner dekoráció */} -
    -
    -
    -
    - ) -} \ No newline at end of file diff --git a/SerpentRace_Frontend/src/components/DeckCreator/CardsList.jsx b/SerpentRace_Frontend/src/components/DeckCreator/CardsList.jsx deleted file mode 100644 index 30ea9d16..00000000 --- a/SerpentRace_Frontend/src/components/DeckCreator/CardsList.jsx +++ /dev/null @@ -1,270 +0,0 @@ -// src/components/DeckCreator/CardsList.jsx -// Bal oldali kártyák listája és új kártya létrehozás - -import React, { useState } from "react" -import { - FaPlus, - FaEdit, - FaTrash, - FaQuestionCircle, - FaCheck, - FaTimes, - FaDice, - FaTheaterMasks -} from "react-icons/fa" -import { notifySuccess, notifyError } from "../../components/Toastify/toastifyServices" - -const cardTypeIcons = { - QUESTION: { icon: FaQuestionCircle, color: "var(--color-question)" }, - JOKER: { icon: FaTheaterMasks, color: "var(--color-fun)" }, - LUCK: { icon: FaDice, color: "var(--color-luck)" } -} - -const cardSubTypeLabels = { - quiz: "Quiz", - truefalse: "Igaz/Hamis", - matching: "Párosítás", - text: "Szöveges válasz" -} - -export default function CardsList({ - cards, - selectedCard, - deckType, - onSelectCard, - onCreateCard, - onDeleteCard, - isCreatingCard, - newCardType -}) { - const [confirmingDelete, setConfirmingDelete] = useState(null) - - const getCardPreview = (card) => { - if (card.type === 'QUESTION') { - return card.question || card.statement || 'Új feladat kártya' - } - if (card.type === 'JOKER') { - return card.text || 'Új joker kártya' - } - if (card.type === 'LUCK') { - return card.text || 'Új szerencse kártya' - } - return "Ismeretlen kártya" - } - - const getCardTypeLabel = (card) => { - if (card.type === 'QUESTION') { - if (card.subType) { - return cardSubTypeLabels[card.subType] || "Feladat" - } - return "Feladat" - } - if (card.type === 'JOKER') { - return 'Joker' - } - if (card.type === 'LUCK') { - return 'Szerencse' - } - return "Ismeretlen" - } - - const handleConfirmDelete = () => { - if (confirmingDelete) { - onDeleteCard(confirmingDelete) - notifySuccess("Kártya sikeresen törölve a pakliból!") - setConfirmingDelete(null) - } - } - - const handleCancelDelete = () => { - setConfirmingDelete(null) - } - - return ( -
    - {/* Header */} -
    -

    - 🃏 Kártyák -

    - - {/* New Card Button */} - -
    - - {/* Cards List */} -
    - {/* Creating Card Indicator */} - {isCreatingCard && ( -
    -
    - {newCardType && ( -
    - {React.createElement(cardTypeIcons[newCardType]?.icon || FaQuestionCircle, { - className: "text-[color:var(--color-success)] text-sm" - })} -
    - )} -
    -
    - Új {newCardType === "QUESTION" ? "feladat" : newCardType === "JOKER" ? "joker" : "szerencse"} kártya -
    -
    - Szerkesztés folyamatban... -
    -
    -
    -
    - )} - - {/* Existing Cards */} - {cards.map((card, index) => { - const cardIcon = cardTypeIcons[card.type] || cardTypeIcons.task - const isSelected = selectedCard?.id === card.id - - return ( -
    onSelectCard(card)} - className={` - p-4 rounded-xl border cursor-pointer transition-all duration-200 hover:scale-105 group relative - ${ - isSelected - ? "bg-[color:var(--color-success)]/10 border-[color:var(--color-success)] shadow-lg" - : "bg-[color:var(--color-background)]/50 border-[color:var(--color-surface-selected)] hover:bg-[color:var(--color-background)]/80" - } - ${card.type !== deckType ? "opacity-70" : ""} - `} - > - {card.type !== deckType && ( -
    -
    -
    - - ⚠️ Nem megfelelő típus - -
    - )} - {/* Card Header */} -
    -
    -
    - {React.createElement(cardIcon.icon, { - style: { color: cardIcon.color }, - className: "text-lg" - })} -
    - -
    -
    - #{index + 1} - {getCardTypeLabel(card)} -
    - {card.timeLimit && ( -
    - ⏱️ {card.timeLimit} másodperc -
    - )} -
    -
    - - {/* Action Buttons */} -
    - -
    -
    - - {/* Card Content Preview */} -
    -
    - {getCardPreview(card)} -
    -
    -
    - ) - })} - - {/* Empty State */} - {cards.length === 0 && !isCreatingCard && ( -
    -
    🃏
    -
    - Még nincsenek kártyák. -
    - Hozz létre az első kártyát! -
    -
    - )} -
    - - {/* Confirm Delete Popup */} - {confirmingDelete && ( -
    -
    -

    - Biztosan törölni szeretnéd? -

    -

    - Ez a művelet nem visszavonható. -

    -
    - - -
    -
    -
    - )} - - {/* Footer Stats */} -
    -
    -
    - 📊 Összesen: {cards.length} kártya -
    -
    -
    -
    - ) -} diff --git a/SerpentRace_Frontend/src/components/DeckCreator/DeckHeader.jsx b/SerpentRace_Frontend/src/components/DeckCreator/DeckHeader.jsx deleted file mode 100644 index ad1f32ff..00000000 --- a/SerpentRace_Frontend/src/components/DeckCreator/DeckHeader.jsx +++ /dev/null @@ -1,246 +0,0 @@ -// src/components/DeckCreator/DeckHeader.jsx -// Deck alapadatok szerkesztése és mentés - -import React, { useState, useRef, useEffect } from "react" -import { FaSave, FaArrowLeft, FaGlobe, FaLock, FaQuestionCircle, FaDice, FaLaughBeam, FaTrash, FaChevronDown, FaChevronUp } from "react-icons/fa" - -const deckTypes = [ - { value: "QUESTION", label: "Kérdés", icon: FaQuestionCircle, color: "var(--color-question)" }, - { value: "LUCK", label: "Szerencse", icon: FaDice, color: "var(--color-luck)" }, - { value: "JOKER", label: "Joker", icon: FaLaughBeam, color: "var(--color-fun)" } -] - -const privacyOptions = [ - { value: "private", label: "Privát", icon: FaLock }, - { value: "public", label: "Publikus", icon: FaGlobe } -] - -export default function DeckHeader({ deck, onUpdate, onSave, onBack, onDelete }) { - const [isTypeDropdownOpen, setIsTypeDropdownOpen] = useState(false); - const [isPrivacyDropdownOpen, setIsPrivacyDropdownOpen] = useState(false); - const [isDetailsExpanded, setIsDetailsExpanded] = useState(false); - const typeDropdownRef = useRef(null); - const privacyDropdownRef = useRef(null); - - const currentDeckType = deckTypes.find(type => type.value === deck.type) || deckTypes[0] - const currentPrivacy = privacyOptions.find(option => option.value === deck.privacy) || privacyOptions[0] - - useEffect(() => { - function handleClickOutside(event) { - if (typeDropdownRef.current && !typeDropdownRef.current.contains(event.target)) { - setIsTypeDropdownOpen(false); - } - if (privacyDropdownRef.current && !privacyDropdownRef.current.contains(event.target)) { - setIsPrivacyDropdownOpen(false); - } - } - - document.addEventListener('mousedown', handleClickOutside); - return () => { - document.removeEventListener('mousedown', handleClickOutside); - }; - }, []); - - const handleInputChange = (field, value) => { - onUpdate({ [field]: value }) - } - - // Remove unused card count variables - - return ( -
    - {/* Top Row - Title and Actions */} -
    -
    - - -

    - 📝 Pakli Szerkesztés -

    -
    - -
    - {deck.id && ( - - )} - - -
    -
    - - {/* Collapsible Details Section */} -
    - - - {isDetailsExpanded && ( -
    - {/* Two Column Layout */} -
    - {/* Deck Name - Takes up 2 columns */} -
    - - handleInputChange('name', e.target.value)} - className="w-full px-4 py-2 rounded-xl bg-[color:var(--color-background)] border border-[color:var(--color-surface-selected)] text-[color:var(--color-text)] focus:ring-2 focus:ring-[color:var(--color-success)] focus:border-transparent outline-none transition-all duration-200" - placeholder="Add meg a pakli nevét..." - /> -
    - - {/* Empty space for visual balance */} -
    -
    - - {/* Type, Privacy and Description Row */} -
    - {/* Deck Type */} -
    - -
    - - - {isTypeDropdownOpen && ( -
    - {deckTypes.map(type => ( - - ))} -
    - )} -
    -
    - - {/* Privacy */} -
    - -
    - - - {isPrivacyDropdownOpen && ( -
    - {privacyOptions.map(option => ( - - ))} -
    - )} -
    -
    - - {/* Description */} -
    - - handleInputChange('description', e.target.value)} - className="w-full px-4 py-2 rounded-xl bg-[color:var(--color-background)] border border-[color:var(--color-surface-selected)] text-[color:var(--color-text)] focus:ring-2 focus:ring-[color:var(--color-success)] focus:border-transparent outline-none transition-all duration-200" - placeholder="Rövid leírás..." - /> -
    -
    -
    - )} -
    -
    - ) -} \ No newline at end of file diff --git a/SerpentRace_Frontend/src/components/DeckCreator/DeckManager.jsx b/SerpentRace_Frontend/src/components/DeckCreator/DeckManager.jsx deleted file mode 100644 index 4f1efb16..00000000 --- a/SerpentRace_Frontend/src/components/DeckCreator/DeckManager.jsx +++ /dev/null @@ -1,445 +0,0 @@ -import React, { useState, useEffect } from "react" -import HandleNavigate from "../../utils/HandleNavigate/HandleNavigate" -import { - FaPlus, - FaFilter, - FaCalendarAlt, - FaArrowUp, - FaArrowDown, - FaSortAlphaDown, - FaSortAlphaUp, - FaQuestionCircle, - FaChevronLeft, - FaChevronRight, -} from "react-icons/fa" -import SearchBox from "../Search/SearchBox" -import PopUp from "../PopUp/PopUp" -import DeckInfoPopUp from "../PopUp/DeckInfoPopUp" - -const deckTypes = [ - { label: "Luck", color: "var(--color-luck)" }, - { label: "Question", color: "var(--color-question)" }, - { label: "Joker", color: "var(--color-fun)" }, -] - -// initial state will be fetched from backend - -const origins = ["Mind", "Vállalati", "Saját"] - -const sortOptions = [ - { - value: "date-asc", - label: ( - <> - - - - ), - }, - { - value: "date-desc", - label: ( - <> - - - - ), - }, - { - value: "abc-asc", - label: ( - <> - - - ), - }, - { - value: "abc-desc", - label: ( - <> - - - ), - }, -] - -const DeckManager = () => { - const { goDeckCreator } = HandleNavigate() - - const [selectedType, setSelectedType] = useState("All") - const [selectedOrigin, setSelectedOrigin] = useState("Mind") - const [sortBy, setSortBy] = useState("date-desc") - const [search, setSearch] = useState("") - const [showSortHelp, setShowSortHelp] = useState(false) - const [selectedDeck, setSelectedDeck] = useState(null) - const [allDecks, setAllDecks] = useState([]) // Összes pakli - const [loading, setLoading] = useState(false) - const [itemsPerPage, setItemsPerPage] = useState(20) - const [currentPage, setCurrentPage] = useState(1) - - // Load all decks once - useEffect(() => { - let mounted = true - const load = async () => { - setLoading(true) - try { - // Load all decks (0-99 is the max limit = 100 decks) - const result = await import('../../api/deckApi').then(m => m.getDecksPage(0, 99)) - if (!mounted) return - - console.log('Loaded decks:', result) // Debug - - // Map backend deck shape to UI shape - const mapped = (result.decks || []).map(d => ({ - id: d.id, - name: d.name, - type: d.type === 2 ? 'Question' : d.type === 1 ? 'Joker' : 'Luck', - created: d.creationdate ? new Date(d.creationdate).toLocaleDateString() : '', - origin: d.ctype === 2 ? 'Vállalati' : d.ctype === 0 ? 'Mind' : 'Saját', - raw: d - })) - - console.log('Mapped decks:', mapped) // Debug - setAllDecks(mapped) - } catch (err) { - console.error('Failed to load decks', err) - } finally { - setLoading(false) - } - } - load() - return () => { mounted = false } - }, []) - - // Filter logic - let filteredDecks = allDecks.filter((deck) => { - const typeMatch = selectedType === "All" || deck.type === selectedType - const originMatch = selectedOrigin === "Mind" || deck.origin === selectedOrigin - const searchMatch = !search || deck.name.toLowerCase().includes(search.toLowerCase()) - return typeMatch && originMatch && searchMatch - }) - - // Sort logic - filteredDecks = [...filteredDecks].sort((a, b) => { - if (sortBy === "date-asc") { - return a.created.localeCompare(b.created) - } else if (sortBy === "date-desc") { - return b.created.localeCompare(a.created) - } else if (sortBy === "abc-asc") { - return a.name.localeCompare(b.name) - } else if (sortBy === "abc-desc") { - return b.name.localeCompare(a.name) - } - return 0 - }) - - // Pagination logic - frontend only - const totalDecks = filteredDecks.length - const totalPages = Math.ceil(totalDecks / itemsPerPage) - const startIndex = (currentPage - 1) * itemsPerPage - const endIndex = startIndex + itemsPerPage - const paginatedDecks = filteredDecks.slice(startIndex, endIndex) - - // Reset to page 1 when filters or items per page change - useEffect(() => { - setCurrentPage(1) - }, [selectedType, selectedOrigin, search, sortBy, itemsPerPage]) - - return ( -
    -
    - {/* Filters */} -
    -
    - setSearch(e.target.value)} - width={240} - placeholder="Keresés..." - className="mr-4" - /> - - Típus: - - {deckTypes.map((type) => ( - - ))} - Eredet: - - - Rendezés: - - - - {showSortHelp && ( - setShowSortHelp(false)}> -

    Rendezési lehetőségek magyarázata

    -
      -
    • - 📅↑ – Dátum szerint növekvő sorrendben (legrégebbi - elöl) -
    • -
    • - 📅↓ – Dátum szerint csökkenő sorrendben (legújabb elöl) -
    • -
    • - A→Z – Név szerint növekvő sorrendben (A-tól Z-ig) -
    • -
    • - Z→A – Név szerint csökkenő sorrendben (Z-től A-ig) -
    • -
    - -
    - )} -
    -
    - - {/* Items per page selector and pagination info */} -
    -
    - - Elemek oldalanként: - - -
    - -
    - {totalDecks > 0 ? ( - <> - {startIndex + 1}-{Math.min(endIndex, totalDecks)} / {totalDecks} pakli - - ) : ( - <>0 pakli - )} -
    -
    - - {/* Decks Grid */} -
    - {/* Create New Deck (Mockup) */} -
    goDeckCreator()} - className="flex flex-col items-center justify-center h-40 sm:h-48 bg-[color:var(--color-card)] border-2 border-dashed border-[color:var(--color-success)] rounded-xl sm:rounded-2xl cursor-pointer hover:bg-[color:var(--color-success)]/20 transition-all duration-200 shadow-lg" - > - - Új pakli létrehozása -
    - {/* Existing Decks (from backend) */} - {loading && ( -
    Betöltés...
    - )} - {!loading && filteredDecks.length === 0 && ( -
    Nincsenek mentett paklik.
    - )} - {!loading && paginatedDecks.map((deck) => { - const deckType = deckTypes.find((t) => t.label === deck.type) - const borderColor = deckType ? deckType.color : "var(--color-success)" - return ( -
    setSelectedDeck(deck)} - > -
    - - {deck.type === "Luck" - ? "Szerencse" - : deck.type === "Question" - ? "Kérdés" - : deck.type === "Fun" - ? "Joker" - : deck.type} - -

    - {deck.name} -

    -
    -
    - Létrehozva: {deck.created} -
    -
    - ) - })} -
    - - {/* Pagination Controls */} - {totalPages > 1 && ( -
    - - -
    - {[...Array(totalPages)].map((_, index) => { - const pageNum = index + 1 - // Show first page, last page, current page and neighbors - if ( - pageNum === 1 || - pageNum === totalPages || - (pageNum >= currentPage - 1 && pageNum <= currentPage + 1) - ) { - return ( - - ) - } else if ( - pageNum === currentPage - 2 || - pageNum === currentPage + 2 - ) { - return ( - - ... - - ) - } - return null - })} -
    - - -
    - )} -
    - - {/* Deck Info Popup */} - {selectedDeck && setSelectedDeck(null)} />} -
    - ) -} - -export default DeckManager diff --git a/SerpentRace_Frontend/src/components/DeckCreator/JokerCardEditor.jsx b/SerpentRace_Frontend/src/components/DeckCreator/JokerCardEditor.jsx deleted file mode 100644 index 7f87e728..00000000 --- a/SerpentRace_Frontend/src/components/DeckCreator/JokerCardEditor.jsx +++ /dev/null @@ -1,149 +0,0 @@ -// src/components/DeckCreator/JokerCardEditor.jsx -// Joker kártya szerkesztő - -import React, { useState, useEffect } from 'react' -import { FaTheaterMasks, FaInfoCircle, FaUsers } from 'react-icons/fa' - -export default function JokerCardEditor({ card, onChange }) { - const [cardData, setCardData] = useState({ - type: 'JOKER', - text: '' - }) - - useEffect(() => { - if (card) { - setCardData({ - type: 'JOKER', - text: card.text || '' - }) - } - }, [card]) - - const handleTextChange = (e) => { - const newCardData = { - ...cardData, - text: e.target.value - } - setCardData(newCardData) - - if (onChange) { - onChange(newCardData) - } - } - - // Példa joker kártyák - const exampleCards = [ - "Felelsz vagy mersz? (Az előző játékos kérdez)", - "Csinálj 20 felülést!", - "Mesélj el egy vicces történetet az életedből!", - "Utánozd a kedvenc állatodat 30 másodpercig!", - "Énekelj el egy dalt amit mindenki ismer!", - "Mondj el 5 dolgot amiért hálás vagy!", - "Táncolj 1 percig zene nélkül!" - ] - - const insertExample = (example) => { - setCardData(prev => ({ - ...prev, - text: example - })) - - if (onChange) { - onChange({ - ...cardData, - text: example - }) - } - } - - return ( -
    - {/* Info box */} -
    -
    -
    - -
    -

    - - Joker kártya működése: -

    -

    - A joker kártyák interaktív feladatokat tartalmaznak, melyek megtörik a jeget a játékosok között. - Ezek lehetnek fizikai feladatok, kérdések, vagy szórakoztató kihívások. -

    -

    - Cél: Szórakozás és játékosok közötti kapcsolat erősítése -

    -
    -
    -
    -
    - - {/* Kártya szövege */} -
    -

    - - Kártya szövege -

    - -
    - -

    ;dn+g7&3PunR5)uDQJO|+85fI=L;uDh)fF3>u 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

l8rAuc|I5j$u=Lc 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 Wd%CVZZ@laO07&@nbxha)(f`>})Qe64 diff --git a/SerpentRace_Frontend/src/assets/pictures/piskor.JPG b/SerpentRace_Frontend/src/assets/pictures/piskor.JPG deleted file mode 100644 index 0d88b774dc754b44a9aa58840f22f5d5610821a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176130 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⁢|3Ou)eUYgc;x*Ov+fJkX@go$ikj%20at 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

6Xl2(;a%!h=0s;xIm~ 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 z zHhAY4Uwi1G^b7H;@hGng0kiTe4@pyL!Am(_ev1M;}JF^LQ6!oLtuGCyha5Wu*i!vH(6q+Xot zW;h)VI*k@XL2c~(Tw_t56C7=>R>Nk;Gpm7&yZvp^5dr12W{IqFNQ!5@2`U2MquhLq z!-@OhQIZ484@T*H6mEXRlL;Ll8ot1~#noa?tuK)sJ-a5>wp>Y;Wqr$=R~;v4ai_e} zj3Q>2b=J9+CYJv+L@0LOOK4xC#7Nl8b@F;G*LG=~Q^42_hth$-NH1Sx@(e5nqIQd6i?r+^AoHa9Qkc8>~#eMMsDNBgd@e0l--e!n1_opOFCBQ zjRRKI`mM~QPAbNm#l_pW{NipjBCkb? z+iJVnU<@megZZsUqoX*ysW!R@*4ZBeK9SR1!43}0<&-C1Eu-h!xF+L*{{iyn8_S@X z2eceY-t-fq5;yAW@OE6lD$Isi#MdW_Sub+@X(5?v6W1a;UW$Z+% zbFT^x&UPyZ`EN3p21al7SpYwPwsMtJ8<^NztQ68rcarY*HlUpj4Y{AB_$Tz1zjlF2 zbs5m#VknI?;>>ZpoOcn5^@8S2#e8Qo==7sJ*yoS7MlAKTM$@z)&P~OZy!Cw(hrUAp zG;|7M;gYzdt(cs&@((8hZfo76_vfeZecT3$fWDc4?{h%Va*EsC`bKahHSFh_P&Bhc z@$?8C&5PhZtEIBvU4J*aij$4W>N1CQxL-R(3uE8;j9c~y?i6L}PG85-3H zh^jyf3~}EPB5h*%d=Po$?xtaae;o_{Th>CIvbJBf;mWuXy_Cxo52;Imrz@!dMCM}P zUq*?Wq+2>0d#uJ{WO^FeJ^#MO;h*{A9(ogv{U?giM6~>}?_CJfMvQ=X-Q~>=fqdxY z27ILe$P}PHvac$PH&^%E>ar3W9E! zJVIq!*=o}8`m>MnLWrxPq7ezI@w+tk3v!E^|7Y-8m5g)8##b|RI9#;wDv9Eb0otnup zPAgYg5nYzRAQWv)c5Ak?Amtc;`U1NfWY**Mmzr#|v4-^0&g_ob*!`OL$sS4<2!_(d zJ^1muuo5wBSHd$hg-gZCJ?1!Hs)o)M{a>*PH z0>)tcqYYo03Y(g5+MhBwXpk{$4{vnBKqsixZJtP|RDm=x>n@)zL(qSYbl~Qp)p3+H zsO+s@?ah=l)2BN}N*5n}4gF+UC@YZz-JPXMI2N5$+~9sRTUBuNp)L&!Nh+MJXR30J zOiT=er6@#t$c5g%lx8QyEzfRM@IQ->n_AfEO17qBxkOf z-N9PQQG*62~L(8n-a5E-T- zcXrc8SMTvmMY@%o88)i@M&C0yDD?}a7gy0o;Acl!iZPsduHn#pk_U|@X|7Uj+$hT+ zW~lC(JN^fOxyU0P69RuQLGRt8NH{&HRH;P!IM_jO;}O;!xcPiKc&k?GRx`)T`oY=A z#mJF%z<~k%_2jbx?GIK}#2+2266Rv)ue%_Fmx0<9M384!2_V&WHiPUH#jsZ%w?k_m zp7dz%r4A5rp#nAb-BNip_1&Ubzmoinz7*MF*;xhr?!0*)=dl_xW7=JK$; z0hMQfWf3DZB)>d2iO6KfloRO!|4aDIvt>tFH!X)|V<`?!g z?(ZD({rt(Nre3ZGPpA=Lge#Xqcr2>uEM)BwqqGsNQ@wRyYhUXu=sko$+zI zApS`E+_g86aehAoj^TPrgwSdtq*p6ojK$$gD{rMKS8T1XgS+>gT?5vv0EIN!7b)XX zd_q1{e(O?q)k#_@#D|!iT9cmvyLU5PmhMW;^|NkzH+ypA3k~cabCDQ8yM1#w2Nh-hNGBARZ3ej^0~dRLYo@2|Dh$)G~d55$>YMyU#_R z%QXngDxw?ikSZ_M4s|?Q zbd^ATIZy}xq;MJ(W=G|p9mMt5#@7u%{N76OrqCxTn~NqPNR2CN8~9CTDw#9Bf^dlP zThRYx0ma&_lpdqOOG+S+98@rhp(#Z((ZVt|&c%mecnH+ z-Sjc*uY{_rK2P|Y?&aENwLK)g&g+SGIUQBfcZ+6L^^}p%0l0u3f2sMv2}rE1HZiZv zhmZ-rNu3HT8jqtZiQ7-#xy(H**xTTkDAH#KlIWF1L`8j{&Yc%q*1pv>;Yok%z0FaG zjNpVlgYVW{#eJcn*aTc8giUu*gdj^xTWSQi=j(+PE{WSYvkZ*;J!!PxQ4zTpvb1PK zt!pz!H3Ek6m|E~M`xy=(}83`YExALkX4s7fC_!b<~x3Bk!!lcpy4d1u?Z0rby1+59O zWEh&okXhl)N$V37L+fnk-IPFY77LeD5Wm_cJ-ypVTrR~^ZOsM?yaQ#P^{Ah8?$Z;j zdYlIFw_3M7HO2y#n8g;phB-6xI5MtUwpP#=?aydNAON7M@l!(U9=GURV}9|;o^q{` zU0$IHh^+d3b&Y)%4{nbwE1S$EuQo%NAR|m|Y!?jPyM^4?SWT7}r;mJ?FZQ>xBoW4D z5*i+4M`V`@SPpFeLizYrfDuoczvQKYvXVdsREFALuyyq#QgLy6j8#KN(S}at%|vU( z4`e*uT}=j<20u>bPnXM}0#A{t6bGl}-45L#C`Iucemr*!pAFAtd265AXBWU0qgIas(RWbQ>OSq0ww&w!4dh zpy=D@;kt7!E?BN;{Bg;{H?x4kZ#Gt9!N2e1l5r$$>9`}7b z5jHC#1p4lWx$cd9j>whDq?5d?&BJ1uWvYk^}ir zv$9ibu$+`v3VLz{Flnl_@IV8e%D}~`<|^;?5-Wc*6n~;(a)yJ zN}Dg}=ag#wFLkl5uUq;C+Fy~Vi*=t65D?&Au^xtOmLm< zR5!i<`TKjSwikia&?MfTNN!<2xW6S%_(b5HS56ecM`eaYOs>`bADi4v^Rv$ji;weDnMpnXvcD@ZcnE1Hx-YTki&h@BYsZiPj48FnyL%T2$i! z6Ey(Q@#LSF5;U2Klz4La*e*SUZbOg20C_Sx2QRZ@2r22z%Lrqv*Zzhg07 z?@ko$@gmhWM58J96(ia;dasJ~L+$RnX6qJ0N z4ibAj697sLWoBlnbiRJkj&KHPvpCs_y?R6PNM4}a37ViyQhv=brU~cnELa-?TGXah zW{znE(~G;C@@{NS7F*QtzMVb1n|!-kj|T0Ogbj;dQJf6B+fl&*N{%hP?H8AAzzv*QBZa zC7|#_;`UynD798+CY6ckcYjd3^7lFFrb>?9Hl^1DaBSupHlCb4XXLk1v`L$T(NsM* z8XLoxfh9I-?udl{-{H~i;$ZzOFdy+uygR9Nx?G+{xpZQ+Ipl!;PN>P`1j#FJRXX|!y8JS zWHv(QyHuuk`vVmIcXCgb=uBzfg4U0SSTNxs(Bhz>Ikl>`KcNea2Pb-84xMP2@3Dz# z*6qWRN>N%_hQ=r(nd6CH(LRWDq0Any_e272^q)RO8B#1xE5jezfh#BBC=Ro9|7!F; z^Iq=0yU7_-Fii^W?P;`WKKR(LMf{A235S9yOMSMzD@BJf9D_)?0{!{pQ8ySUkNPD# zx@Ptq>|0|TdY_}6?a4S45PTU_lEW9<@j~j&o);Q1vhmIE1paXSWd&(Hp-a%T@UVG1 z4xPfIgXygLN(X1E;O*sJW;;_H#)1%fM#>8A)?Tb))s4!LO`j&J=~Qb_MBkyLyc6QL zp)VCbeOBHkN`qQd4hHeeBI8v) zS}f)9ps~>PNd|TSFtcnKk`-2qRg>4z3o%F#DS&YbO;5&0c}bzsgkgLRGrMqI4BSiG zI1%=BV?Or5%lS8Bh5mPdL=~mXZX$B@t|&I(banbbv?KTI33hmDvSq_)_M56ZAIPl% zz<%^l>-dwY;awKXVT^BsuTIOEkmEMY^mNx#Nt4sGg<7Wmj53=&KTu-fCaM;HwhWGj z*InNM`zDo5@Nif6^502}%bLRt`$@~FCoVnO5Aiw5vmJpiD(2^z83PW3ptc=sriDZT zSvdnQ)Fv9yQZ0S0!;D-50W)0{7k8WTS=vbOs6CH@2P_ec@Ssvib z>V!G}#CxyVx!IWaF|W}MU68q#zbG>KZOxvDJ*1dz)7zT*F>xsInC(7IaBW81u7{oe zZolx!*9zwNtlc{=XbfN#me6-x$<^YWPEqwLdKl|IUGYZPl z+8;ingT_C@eVgHf?-6F5XP?#i5Oj!l!^e;irl!=KmYYLH3Kk=ve)?YA^uIs-K+?Qe zjXGL;yE)e*57=tS&J0WW3dQ33*>oWl-}_;JOW`jd>C@1X!I4EA$$b z3=3iJy*uG5H13{ZE`JY37-nyav;4@gy?W_=A{=(>d*pn&Un`S%IS9*ZF5z8FCw?^o z%sjSv%0uAs7f9VJxEI@$iS^JP=Uvnh>8*`yt1W80^g-m9uYYEL{hq!*?a01d55TTD zN-ul@os9IuQ@LMLV(vJ06s#mRAJI9fqIxJl)@Kd@*G7i+HsipK2Jiy4h&RWdBuXUe zu{SvV=3P#2DNd`c!tW)Mp-tO`ZnP&pci!wUu4NCxAMq#%(+aa7m=S+qug? z&bABbo72UK=mDk=7Y_yK2aCI?3Q5v)Ub7-PI%N1wqdevePEQSp;-WaeXPKFPG}(a6 zZ|3no2&<~iJKDC%{CtC;8lB>XisMn{-}I>y3*knQfEyKT z7sa-43#1Rkka$m!{<5JdE7E%@l{N$x?@Q7T%9&*(y2egJgEpcApY3nkPUms3A6K*| zMon2TtUzNM?A$^b3-@~2oW8T*qW8+}YbA}{t9#d9t7w}|N>@Dq-BQZe?8U*fv`Udx zvR{^}h!$dYq1Cs_Zf%$z&KohigkDW zj(cBZ-Rw&fR?TjmdykuzADt%IB*LceOGe2lFU&&9f{esP2^|7IGX(q%ig@Z}em^(V zSQGQsycSRU^ZcD(qD}x|&bq%aY49Hr5rH~sHp<~Q|IP^dPJEwIho@vKHDr^H{42JU zs_Gk?;`XBsA@s=EKKy*}u0ej#pO+X*v=cLiZv*T^4I|}2EY>GwMkpm5z*e?;so}#X zkX)lQls9kj1g|OZ7py4Lp@73N&}g{-rGncPw1$*Z`x0zis#i2t;}4rJ3D7A#=(pHl zk1yd}u7{f@o3ahwux-S%*a8or1O>$eP=^@kdJZ zDPosbmu>IVf8|jEegONL?joQ2xjmCkc?EgzVa89HnGZkRXsuNz5eHCy89;L{*OU4R zCAE6$!tk)~yHm82xrl&1qK%mx*RJ&0Bqx6KikQbbWrS}}T053K5^w&3r7=H^lJ&N| zm2y;LP1{A4>`Da8zUi{8CVt1eJPmj7n3bH}dCPOi&HpY%Z+ncA_0ssB`0S~Gr`${>)vd*SUrQaR;Ui@WeotD z{vsrbgslWmk){gy`J!m(u3Y0~s6ckFJz|ZfA)$SIIieWlCS<%oip?`sy=2@2AFHEM z!*Yq>bx{z$^lO{@mgrdK*evctv&|BdINqyMvGLkYs+~P*@geTLbt zSfqo`f#`y1o5x37``fr?GZ!k;IE0nT!E_kgi$LI$U^Coj#mgaN zZWu6F=kFCMs*RzHNd(yT3+5$Q5TZ29&>2hvtJPV;) z{7fF#Apo{&R2ziuK(QY>dC+)y1@L%HD7%GR1Sll6(Gttv{hhw_rXeSbU z4WNjNlqF1S@p>ZTh1c?Z&{P_&cUaY(B=PFThWN#X$x^ldF?;qF0AeHxzgZEx8bI~? z+3C93VYDIZ5x{rv1Z)1#$&y%#t=@05ff>L;tX#tTvpqrl1^#qmtJ9h^ZCWo|+9547 zC;fkL&z{<8dkAU%V&7$=xI%}pcnyD_-hh34%Etr0Ej$2NwE6uz=lrs?O?-fMggJCA z^{byBxfN4neXdBH1(x=*qC?^LN-{*-G)?DRL76ZXdA`*}EN}ac9Sv7So{IaWiXso^ zTZ;!P4R6SY=S7x8T|bR-TSNefr(U~!XJ}-!2y8bW+YuA^IR8e<(}vRP;HGNpr|bHe zN=N+YLXsVoBj(>{}iluh;*C7Qg<7sjmu(x{vo>knZkAy1S%1MY=({kp_uH z1eBKUkOpb#Zlp`P8>B&c*?s>$=bV{$1}@-&3+A`q`V=y1`eNs86~}Xv_%n8~Wt}|A z_rg{3f1JVnYZH&-@W9i;3;Hy4;<0d?l*rJ9Hr^`s8W$2u1^q8q&{BO!+90^t+aA8G zZTuIp}Nj(_vPWO5x^<5 zKQobOs}gAANY~!(j^V-agI1mcSKIKwPsv$ZFVy~A#9b%1rzB#%zqWxp@?o!upiTgP zv&l2ns$IhbLe1xfg8ye!0hE^T9k=UNe{*jp?@iyTL?C)i`xTkC=1Qcp3;|L(hdl?S6i_BksxVAsIWbQIFCk6L-&bz$$^ zVrLiP9h`V+kg%QPRsuddV~%m+Ke2%;&eGx-TRpg(18Wy(FQ(!t))ib zPDT(eY>_Kb?4m7ep^0dr%2fTk=776Q^E3i}2#NV;uDpJB7Fo~t*4c|Hw8b%KH+1xY zUa${m$_2@N?(DAZFT0Q#>K9U`IPWASMq5{{O7T=UU5YW6;O!Yx^XDd>iy*KtbruAf zjgirIc3^HkJ$;29G)7X`rdQSagIn;4v&vgm0rrJQnnADnbVu^#aI?5oME3g@ZE@Mx z$B!~-QV(-Sntz4f?Qxb4z9=@AN1nlh0wrluR6blz<3gbq-Jhrt=312EDH48qp#UY) z0Ft+F>d^D4VB41Bk(wP1x7Qxn)8=Md37Aqah`*2{{9ExgfoP(}r|xePKmEr<)*$7^ zs0+?x8k zTeBd&Zwo2y51v(C9n9^$$-<|rlM^NK>FXt*m}}qVMh>p~3|#tnLUOzcsKz`Y>jX4m za{dycn(QJ0h=*%|ET+bbpK%c6x!T?aDjO4rNfC=vz3kkRo{$guoGQfN#YXz;h5>6M zGocECSr4MVNspN13+H6}=^GUW?Cw4KDweNj2{@+#RIr;n*ia-r(}(Pg+ZD{Dj6l5_ zb08vl0^H-_91}ITKT-fM4^-6q^(%bnakM$Z+^o(G0SNRS72+J}>DC!F(cFc_r5~dW zBH~eS%Jxc30+IpBVV+#GbteVJs0hL3A?B=V=@;XXJ>uw|Au9pCwza)vr{i8jc^kD! z0n^q~x=EW~R$|1GJdd0w)Q306$}>QLo27+?Ihzl+@c^qm>f(8+$@KC5n%W_@8N^&l zkYbDxKH~r0IPN-Ie)OnL_x>k4dNF~zIw=;V=qNR8CXG3z6dw}ArPX zSur9ZAJbj?%xFX-p$@63eyE9h5z_7MA8@R@ep^gXeKNf$^b4R+n5yIo#Udsx6T(iE z*`fOJc+s#}p$Z2CU zhu3D5I-TG;*k~?(^IPWtZvLXN>ei>SL=UXH*D6 z)gzG^;IK##lF)IY62sEtsm9&;+8Fu9HPQxj#Jt#ZU(2I#S#v3GfM+n@-TBM8Y|vlt zd&^}$p&=AfGz4-^;V&hrw)KU}d%AxwOkwsKprV{F(odKV?>i(p6<}T!MNpPq8L;LC9Q3!nU((c z^31;~gK7lM1C`)Oz+6mu2o^DbjtJ=q>0zk(d}mSe_Pxm>Eeiap_5rpEDZ8rP!eYNy zNNxS*f2g!tv3J%2(imQf)7c+{PtJnF5tvSov6~QP@YSJtZ+)eqx>`EB42mjZ@HcX* z$9~Mi+~-p$viXx)k?w!{1{v>^ik_t<85O#wlTglcQ{AUeH3-uAg`=>DHdc1?q9^Gd zJIQBM&d$H^0I*Z~7n_V2)<|V8&87c22S~CE%o0o)jsdO_Ep#<|SGP5ry(3ATukj)s z)TL~-AvOB9;Q#;qY1|0#hRjq{T)gxRGKXiW&HX!49i(1a8Gq(LBXhY#D>f8~Q(?Kf zW)L)QPPvf?<`|B6=E?2z&K8Nai9zk2Fub`@p!|Bktoa#hyLOY zo4J&Z`+}2J|C^JRz=>ApQK z^f7=v(*Mz5Cfy|aW|(|;300PqnN9^LGY}2{TYZwt8-_Kt#8@HIQF-dF)XAHLeE9Hd z0vQdyCNWz_;I^Hm1taNf$Fgd@%LYpTxTgB=y8-nU8jJh8H2?E$7wb&k>>y~wG{wbp z&9cgXy=(=`;7@E9t5w;lEylGBa!{BQ+hFWPd&W<}nn5=Ix?YD0lF$1~l^eAYrRU&+ z`a4Z00K2w{&c_(z5+OhP@etVXl?UmxNd4lj9{}zXe1cM!!nu$5NLri(d~)9ZYY zcym7J)BxOCb!~ECqBbr=``-|Vg?gmA;We?cLC+LSMi8BGw72@z(k;jf_e@E(#_oax_nVW~E%brj8siL*d% z*=01rFtlLaB2RUA29dY#6ZD;=;ohG9yY1=F9cfACG!{7_3lVYdA*R z@P?8<%%j)rRx}dVyC0JQMev&!o)Rrv)hE`)T}zX#G&`KX z%j`Ki+-}V(@54Sehy6zWzIWGI7)G&@=B>$^x}{s4h4DRdD}h>ke1rHdQE4Jj+7!4O zLP_QAc_z@;oxSmR-Clqmh4(VAoTl7xPu{ z6>9J!)`{)^2%V>X339BR_Jc4MXPZQ;{{fVrubi6MF!_~SrWFe3``(`MN{1w=&8#g) zW~o@kxEfsL9kozAKr2mX&~edx#+oX>2bmI&>bnc9QgBn9xn1gn)W9PE-O|={)q~Td z>l3D`UVXI{V)dDZpYt*Ti5^MJ@V+r-Fgveq3ZztlUoUsqPfmJ1{_5HPlcJkzdjG5S z4!>&}WTdy#;(}7jk4g>+wG^57#}$iZJSbLB%-Om+d_mR=_v_YI6#jo1p3Efl%I|!6 zM^r55vhi;Zv7)H#Wfvb$mL3+y4C?&}RS+K@>12K_R*uF39V@J}aZc4psnMGG0DV^( zmxt$uqL?6VcdL!_?HUXrpy^^e2!Nbwy7w{t0Gc8Cq`gtHmewyK;kJ8}CZ|F>d#@BN zEp`IKW(Ufu902~JV39OscX;>fp!MoS=;l;*>cfXAX|3a9AhAJIMhRjW8FVi`yidL{ zYhf7A^D~}iemRujHm6icwZLru=bIA_xY6Nq(MeQC5jl0UJklnFud8rsu4~5%^Ha71 zFJ3Ef0EH`wg(~>yo#@JH%iYS4Ux(;~?%jCzHT@juB2>rbFC7g$O0=w1ARNZ)S78n^ z`%PUoHzCvrf!A}?d)98$T-^=vYK*!LSF2J6A*@7b`e(t{Bi%?6W?e4TzU+*)v^eAd zoa6Wz;rDsK#fv42`2!(0n%t`>SfUB%a4N^)MthTXO27@ZjY@hx7G-GT%P0c*JZpz3sPSc+#&u`U~q}Y~lZh|;7JNzM~ zfo}*cP^I;?#SS^dqtVmcEOuw-y#&40{7n3Eg?48i`F$E2%g6QA_RDm6-h7>tf8kX@ zCJ5qk^xt}?2`Aq@pcI^(Wc8V13Tu{6wC8Fj`1(^k57}_NJ9}2lepsZ^(73_ha#F_3 z8q`lYAHJnxu+8L(_0*N#aeF9tFe5|(@R`+uco`|| zwFAAhNzT5ofx;6#agT5u<8EF zuKT{!TST9{$~}=2IPuRm?{bedRbx*$UOhU_(1yLf3|v{{q+ibLv7h_l800AT`Gd*5TKgSY*s9|m^EPkn%3Q?)2Qs5;z$msM_YO>k0GiQzVnq`J zajQj-T%ns5?Qu8B6iZ8Vc0`-d#N>p2A%P?ciRr4qCzsm)akN^NKS5D3>tGf|N1^@p zm3w284ZgOcJm;ou!Q*&T-Px=u^}xEs1B_4l!W!C*gXv$LV=yxn#viIJA8f^MHAvAP zPGM!1J7byJ3t{emu?^fz%dx!Bx<&)w&L_bjwB^iyHj{K34pu;exy5xSU z66WuyTCFoT!=;heD~mA{!XsCuce9-@pw>@3VGMu@MKxyXkPHrYQ0HSS-EoucWYBO5 zz=MT9Wdt0u!+Fx(EtRbDG4)1i=a&1XzbAQi3IVq#X|`~eRpIJ>S;@d}vRu?VN#IKs zLDP?%%iBC*F%>s4wA;cI>z?VS_JaJN@xL7wJ@p(5t|rDjd&6pZ9y0ym`sU+}%_hSy zzArHcO$VbN6(?}s18kZ+@u@^l{o$Ln!6+2WsmM4Cjg{hLE=%KER`U$&1SMy9KS1&G zS0M8hevg+z#wk-Bt~!Vh_xf-MAft|^JfZY9Uvy+Gq}l=*VjAUp+rk<)-QhSSHaL1m zj?_X(M=Ign-*_n`+w%TR`!fR2hnM1H0yO!yRBw;xLx~aCQyy5C2bEtd(eyW(R0Yj+ zYu!wD$5zGIeaFK9A9m_0$JFiQ;J~<@P;cifWE!oJC3fnDs7I8Zzy zJuVaz8_?uYoE+oRWBqm$&0P3nArII+R8_*hDbaollhjVRL*7l1-sOlVvwvSyv9jsm z!oFG{oL=~x@j?N%<$4K-+a*?ALPciE3GtxQ{`@BVLoa%0!55oVXTM$fY|lA{qV|=` zXa8f^HlVo5md83y^n+g5DUd+w^ju5d`V>r zzX7bNVMq%@&ktv(+ze33{o2@J(&I9gMQ|p_?3uzfrnkxEy7kRw+irW{!J?#$r#8Mc zj)kFaxvWfn!%#)VK@HJuf%kfELNJX$h0_ncFA3q0+5ek$3skBp2IiT#fi5rjY^XbKKG+?q6n zwd*ijhvA6wBJvZ+pm?;t0TLd*v_P(-Ny*3t>t%ZL->_8Z+@4$w?p%i|c(1|A>tG65 zQSbAOAb`2^%nbV`$btZ$CHg#t6iM&MzDq6s{lT>|!%K~-e>5kCE zd%@qN$q}8+NQ~{ClK90&R_`%y;bXodbu5pys(+i}^YJ9mGiQglw;-N8lW;n8I(6ug`V@g8_+u6 z>qgjZd|KGEP0nPgqb1#O|Ffyg2GVCRmq9)$32AmjT=570!Zewl@%?nOp3?j4OSQAdXv;@ zgQIWIh0;7`U_dSYzt<%$*ZL&c4%;$MRvBDW405Pce&eH;pp`gb+j?Ab;=jt_W@~MY zK`LLPhkmz@cc9R#T14$2CZPjy|==gBdAjo*}Qof-A)MKkKAyyEK5zo za0s43TiuxEUwb#@NMhDxrpyLg)=8`Hsw zc`2wDIixU#H#!lLv5{(psr#>6`_l z9U`QC2>Ap7z8Bl))X?Pnj_0#vm10yv=>CZ{zV1UF*_pWmI*pC+TlCU6dzWt>1>f@_ zOEO)*h9#g9fRJ7y{ZwI*4ElQUY<7Lp>(s{#6J7))YNkR8`tJ! z;T`u^eoCfLl0gKj8t?$h@hAq(HG2fIt*J9-L# zl*cwZcZ51Ey4iRK=k4ZXu^WO`+K*OPA|kpyLw$Cfclks z&5V)yZE3bIk!T{)%O?7LZ$&vTK0AgQ!6I|ffQBfF>W-c2-_8%|xrbQO?I$R$(0AW< z=b>_zriJe$HUM6SoOYt;Mj+~mTMJ6FKx`h@Ct3-G4*1z7vLR={zLg)4)-mmCvHB^g zPG*I_81~2LPo%A;()1B=$S9yPXwg;H-bU5R@TK8qb6)DJ!IxsWGs1zd)zV-6x-z$( z_bZKa8h^NI3ap%IgJ^%k!rVU~koDUaNFNScY>Y^aBLXO;BQOXAZ0Y%`<^Q+dF37UNaUD9r7 zZ2YjBRYRZ06{hfr8rqFo>dI@9mF8hdC-vxCNMP_zB?QSj9gl|NhX-{re-mam6bS!( zG4GahbEA%wD=0x~HKGao#){(g-s|sMLGzC@=j&7F56U`T%Lc9hckF+qY@&FYaeE{}`05EV2(|MIR9=Ut;yD`rSk0qh4G zjIA6_w>bp{fC`LB2X^<81NiZh0_s&@qlRQf0Ja_rEl>!rqZU?+V|=7>}i z%R^Q*A6gCn+i1H@*(jBxU%6POuz#;+mkgN}$mo3Nt^5j;K?zNKds3kxI%O`a`PX*B zt5%aG`Z4$VDtRh1wYcNzv* z8T`*>Qtw-dG)mlmywFxy65%8VB81MTxmnJwa+TVsGf9v1Psz_GTz%h;L1FoIADeLc zYy7ra4n-5KnISw!MRSx0H`QcKv^c}yg)>ZQ>3c0#mF8v5*Oz@Qc3KVmB}^pu2m|Qo z=E)Pq5Ll!UZnS(?uL4pmXRsaq!G@*V5<`fDkgPX0E|`_?`}$g74tAMTg2UuAxISJI z_QG{l;=7Kca2vg%Gq1v8*lZ*2NR_EZPRYXX=$wmQ-Ing;+7a>PA_!P|OG=Q~01Jga zn=L6JV5GC2pLa*=DUbyj?Furv^P+YH;u@yiSbIri^vWMsmck7%hP1^=cB_Gsth%y5 zB{vcgXP`vL-%{+_hM!5QoUI`yobkyT`UkK1LYrwWspRuvjo@6QT z@wNZE+Nxo~rQf)9wH6+>o`KH@(NKZR^6El+1Rz=6<^x66s_U~b;C5r<<%PlK@!}qp zZcc>F>K*UzYr@K}2of#z}I8_y`hiFTYm(&u0!VU&;h@Il8~ny@62%en1AW0x^jx4w(kQ zCDbo*jixc)*p{t66WDh{VW=P@wjzug{E~hdemE(Yh;(hWHXQlUXbd?aDXIHz*TsEs@|X<;6EB=xs3fyXK?_)c{^dj) zK8(NAnN-syp6Q1zNHuYaSom;_?{VC;`KGZZD9L%qXf!U^IE}49R`=l7qD3%! z>*}l*$b^Rug@?l{VyJUQr?q)~XKYpDJtI*0w4vds#H(B&98xy~VyR_EZlAO$x1EU#OcbHObtdSctB{sN;D{wa1nSf0o}UE`(9caO@mVB z5}+2%K#2ZO>Ij#=g9i38DP=}fiS07`-MLZE9swX?S3^!q?E#Y55`R5Ee#{I2J7e|n zD*V{lns(zd|9KGqsb=7#t?+t4Y9g<;5+;a+1z!=E7#&JsH{bDx-DZr~XvwnOn{fcT z)8S3vhdG7dlV(9)VPOjSM@{0*8XeOjSM~$_RrrBASbALzQ*g`tRjA^v-TShCn#tfW zH}D}KVG zQD{*{ga76)#yx;pP|YAMl9_k1z*EI7_(bvRN8n>+AQ?scLu{Hps<6cn}k?#oQYaP295i0*}0)@^qX%R1WuZZbp% zltBZ4_POi<)a#?$i$0#vv&HYap%TwaU$^#o&j>MAq;s~oilmkjwz#Ssv%B9EFXjCW zKOE3>i^72)tE;1Ix8+^@u7F6(s`HM#ZAmj#hq9wQuRV+#FqjME>Ad;KvWMOn4oNVvK>Z!cLzji`Z^>&B7Lo3o%z4=(WNF2>@-g4tB?Dv4e)!7nWUF~c=tA;0|M98W; zehAxXxS3pS@*GRe8yHLnGN>~WXXUhBNvVtu)PfqJq3G2jO|Tv?=4Yuf1c~p)ssBux zCR^>?@7J5PIa8b@f5blvH3Hd-x5I=m@93vOci2_z=I_ofPC_Y^SMcYp_tJ3`5>aVm zg1`0MN}^#&OQQ(GnOh55SKT63LcaQV+&wMZWQ4F->62Pn;x_rJf+oB3H*E(K$jU(0 z@IXXW5B7?lt{o66`H{WbL)@sbd|&E|CSk6MG-BjdL?iL#73N}{*QAWnw@WuQopP4& z%3|!jF~lay>>(>>i1#{Hd|&gGx0i|NKV?u!*r*yRnFc`h1?vma;147{LZ4YLpQ#Y)2J zgRuJn`_KC#1X$SDL-Bb|%FZ9Oao|gZ$S+ng;($1kW3IxBd>8q0ay=auU3|!JaeguX zr?x{)T7)JitM)r(TTqqG&ID+}a{F3-#+Oxm!YJZf==8l|tu-8Vhd2Hv^oQHFpKBGU zfRx0gmKW=#9n1Z+v6H>a-o-IAOCE(qQ(9@WLS9$|d%hr*N(O~}j1ePHN{%rILu(1M zX1$0p#CK^@Cte+RHLER2#V=JLMl1Mfzhw-!E+`{VLAaX(cNj8{F!w%Hk~><%pi3 zwWALYB%=&V!e-Zn96njO4WOc zxMzaAkN*_UxF6M;b2%uD6$oqXtpH4Rd~ETdPvXcQ#GA|S&1t3B`g4by>y9Av$9AGW z02tuIfi+<1g;w|na`5&uV$6>RA)`Y1kYpd(#Sx$yajq(>gS=PO0Z$87ncy9DPzHNe zo?n#z&B2FVOnq(UWJiuN1-2LU>>*B0o>8ZP}n zBKGWI;%+Zu@KqjERFLpj(L`i1PFcQ=S^LWw(Q%(NLJ;(PN(%M(Q_`ie>&j>e}#pZcS>DS8NN z<2|eP;%C8+K_sjmt?X}|gENPz!FWPRE?)a;e|jm`^8-TkeB`M4e3A@(Oh(p zH3|!nsR{*_&&@s(v&)GJ8vQ8pZz~C#iKyLaKGTnS(oxkj^A`LyS+n4Tq|4K}m6nk; zay2#C{t3IX8)MODrfy53st;`12)+&W{BT4vb-q68iM(Mk)q@LPwW9)4gHWyK+QWEo zpRI6tRkUg1&f>7%zaG!~b4~6~z&|t~o^x^_GJ_<~0pHPdw)C1Nq?SZeG@+DN$J+0L z2kD;DYHu3!Sok?%tHz6f<$P($(9R1s9M30a@AGPD>I!PFTuy{s>=f(o-OJR%kaML#p>#lM=Mco>D zz60MsABHmF=#nB9$OxJHXrz!G`Jqj(xQDic1yvU~YZ$bO8;A&5+YY?0pqq~%*aI=_ zRf0qHr9(sSq$ovD5cP{2rR~O3aahV-v3s!^J)MT^Sj%7b^WBF@*`?GuulMT~wd~|P z=cKeMXFoDQj4+6%DW827ZvIn_{q~CxpptS;Ubcs~CyoU?&bC@OC7+jT3_I*;?ec<< zinT~rsZy@OaNdoB*RGpI6)U3d=K*r27k?TcJ!2T_WZ>?O0fp|C_=)#PBrP7OS82Wtrl@GEP-t zIFWcTxFUkR8$^kl4CB_*dUR5%(Z#iojc8Cu-EOL?tr||B9}fbz=(B%xYU05}2yn}4 z5kebly|UOZ@WbxpODA_4uS@hHc}E8LL8d1}xIhOCAAfyi?rX_b#e8j!COs7zzV~#X zfUQCasN-l+UO@9DB*C(2^U-lPe?C`G zA8n)tBnH4=rI-)?ii?vRM54cM2Lz`GyXy41wPN`UNw2sgHsO#Iqm02BvGgUzn^$N` zh^k!;aEIgfCqF4N-^OcB5_794rVus(Q64_F*;|sIDul;^l*EeBI4$j&*%T$q$eQ zsX;2szezM%hr$yAki|sC%Nvt*qovc+~#99 zYxovLZLxa0c_BQz8AbmR9y7OM$rrM)q@~~j4v#ScmCY>b$DWIB3{7k1s%KSO-B))) zAcyhOtE;ASNO)m7@5|606TsjV#KW%oo0LVWiYAxbb4pcZW!7>ypv>hYgowU$+*C`t zUrvLy-j{`|nU$2=815;eIj{K%P`CTz(?80nzbVtOZO{_EOJYyEnj61(EbOo>(p&iCg_85kqP7aR6qUE6K6Q zYWMZhZO0%msnX1Rf|lsodCF=sR9@J0c}1XhPH#Vk2Z69VwmYpSEHgzvCp^df5}mN5 zRX4~I*S$SA)ZDguableq{FQvFghLxDR?N?B6b zA@`#z5BrLPK1O|kj5^Eih95HBm0ci8R>(G93h-qasRI5qd-Z1jJN$kE9aM=_7Yl_= z`nT#zd=y-0Jvhogs<)nSR#H9pRZg7Rg~T!e?)8K=iEmW73N#q06Sq0l5Ce0qBU z5&1iL5{m&UkF4OZFFyWrw(}})ZD2F_(JeFh9GKbou)dhB4>}+}9UHwtraU6`jVs{~ ziL`7wxj3vMDP-Mwud$w@bArRIw7ld2X37NF%PjRIYvYx)&?mi^kcn0PoI{YxT9J%> z!PtB*!C^oY*;7<_*uV}RIF$57jywBp`Rr5<__s*Xb9@pcW5Z&v&H%;q;=v~)jYZ+B z7RZIHOpV)zO0}A7SGT*_!Jx9vn^4Ae(^ez&?J%0KWM1a9!Rg*Y^Y-%t^_n+#JzRHh zALLY&Gs6Fy-L&aJo@ZYq8oZuWxn6v`O`5`zOLO19rPor48pJ!%FrF~&_9gG4{(bvu zR-m{0BXT9@k}jgeg#Flw(dO8ng51bL*zoN@vKGz*+~y1P1p^an*M{*VGmkU{HnHr= z3KjD1v5i^nSXcT5+WpsVg&6T*VqTxtnB}WW)6T=Azok~`XR6Wf&gbsjO;B(9#&7qCD){HF zyqUyN?Ig}j9;#MDR|-ahoHwYw2K%{Dgv zDjSk>QxZTtOjp1aopcMBPym7?kIbpZKfd$z9L|f8)wJbDo2@!|4&gl$ZNj;-N60fB zrRwF1>hv0*^lp0zQ_nV*1N7Imllk-sseoqC{R*%Ee%at#Y7Ig*TX3qVQ#K;n--bud z^^g7uJ`7^+{;kO#Fp43I;#GEJ+=Mgi`Bo*@af2J)VL9v*3`-UB%7}(mYf0Pa(7{PH zgw$gycalHkH^Q{?8Hf>R{ZnJLZc}FG?H5dt^NS6cE#!BN;OuEVRoMItpLZi-2u^`u zv!;=ia^yQ8h?JjZR})0p3@USF!ywFvnIP`=V={+c>yI2Nk}*FyiNLey7MmDd9iXpv zVL^OM1~STW)RdLc{;Pk#m83dby-&c^$)hJb%o%d>06zmIG$c3Iwd@<_vuV%mT~niqQlIV(NwSW1XGxh00OA!9-K5f$Rng)Km^fhfAChlS5)jOF0)FPzGYJw@ z2+gY*dMVw!QQ#S(aft?sr;B7D8h-O?+0PS8Ux8VpAKoZ*@A^;1-rJe<1@agQ{)Q?iLhlpjeteLZK`vNmxR5`<5FVV?9sB85BP$VOIg8!S=Fo*@XqzP^x(qxb(pfCvA!#Muh|i&tgFkUx;Ai-7cfB)d-wx>{OA&(oN0$% z8zWf3%^x@yCEx^IhpxAGXE(tsDT@gF_mr&JrK(Jtp>My$QMSrDQKHe}-I|t9ZhofO z!-gGcX9qtyU|?d#vLE3l)=YljqO|J-Zffe#cTWrLuP24|GsyX-Hzb^bDbLFSek@;P?* zv@guUyVWKk#rg|akv7~RD8?zXu>fnHZ^pU5cBfQ@im&SJ8K7yfhIeaO;yK=(|r|gjo(3)Dr z7wX_Jd353rSA&Pz>_l}g?^Z8Xp!%4X^XcH?Z|?udX`+2s-E1~xPi;St;0T%E_ipG- zf*<7}Ks@xgZ&whtxcGV`F9;{dR?DeMG2#Yx*oH|?wOQwV;!4F5I@257Y>7ttP4Z=IcXK!FNt;F+$2$l9qR0VRP?ZfV%U)&qjw8ng{=R zA;RP>S0_3#9s3Vi@Kha%)#WNlFIU*>$_MuDbBs2k`)y+2!F;TEd59Q8+-Uwo5qwdP z%_p>I98l|8TB}ce%N3Syz*6r&MHGCsaC1ufCW?W9bXax(8>$`kC{$RtHk)W*$fP1x z_CSDz$z6Mb0&HKF7E`z?ujn5JRjfCgU-vcDdV1@=ScO58_2`Ov>_1CtS#D%9WP9Hb zvUgcvvZ7omj?Vas>6Vv_KOBLX^qGVQ>Du>K460)tEZbvCaF~d_0CeEPCQqf0?=pXa z^x(<$w>V0}OuQzP4Bj9)^i4SzR+BIJI?|8t|MrKOwPDoS&nGJ3C?84q@G6kt=et|HDM#I+Y!XP>2-ajUF#U8am7GgEH7NuWOwAo2c?qYO9V{HDk{hcWFRdq1>BJ3hpYH|m!Ln# zu;a9`br}@Otm1ajn*ZYhz~g;RPE3$Vh~|>WTXltzgj<#~KK$0d)ZcacF%PqzKAh%vrWE4Z$Bo-H zpKav)N!?8iFZG8s;64hBM*qGUu=d_ssAjnekxvkoXuY^9{NOIO0c7YTvYO0%mkZKy z-Tq&p%~-r%M+m`PVUYno=*BxfHVT8mMw;_^*XLh_#fvB`L$|V3n{3Hbayj58W5Vt^h+Mr#y!lM3 zh(*!sQefZ|19&Jt`BGSZxPNz0ZLDU1HcJqqq3Cpa&c2M;nXcKqXXXHMSWPnXEhF2} z#+Pyg_}0u5ym0)_Rxa{vA?01ZTDxl3H+=uhIl=)a6J%5X zG5U#5_tPK!5OC_ho$1Lg)asc(~K26HS#bvQ{((aqxie+swn7CO!>+WC}}GcFz@*nQIKZE^yF^p zo0#7Ksc5mEo5<*nC;!P zq1Y^}n1=nSvLjIZhfuDnfd(=E4<*{GejH<^F2DWZmgCbO3T!*8ezDVxe?GH^<>Ng- zPH&kWpAV^aM#PQF%f3}6MN&aZX&~g36O=_9b$pzF5(t}Eq%KHO419~`201eH5pN4G zT)o#KV+C0RV5K_I|9E%p%@fXYCa)CvE;HW%P++sQ9Gzp=U$1yhljtzWDJ2NcI4f8c z+GFc+Z5x|2|lSX)@6 zqjL(E>Mim4AiVuGdWtE)n^qH=RN7jm1TO7r|bagzw3 zzD99~LG{MT?Y6)D1GxmkP=`KhJZ*hTOyqaxW3VBs12y`*Jc)flMuus90WxR*!pfYm zq5IU}PkfUGW51MeS@!K2U@a=(KZwC)w>R^*Gq5Y`?_|4tT^u2Yt&lBb$(`H9&4Dp% zG2SOhLfEELSjLUiT*10h56D|qz)!8k3uR@NGH$Nbi9C}4a^f0c02bP;-qq%UJhN^Ixpnt! zO5W4NpM4}WSL_3O!{y^vaD;~?3zH(R{=7mbjB{J=H}ZUL~(>-w7##ur{}C=W?R-t?z@w=YJk8@-ss^?%BO}c8 z*$fnEYtf%ozYy{#8cMxUSx`QI^N&9C+~uJDdLD24bnhfc7bfK}n3$sKw>@*nauEHF z-@_BRcPb5l@s160*9CvNj`HI&F&%65Z0q|po&F?}$q!YLo$8n|%2ODq>SYx70l*ju zN^5xg^9P`f>5y0f78tLdu`O`2gC;W`2&q{VyXO*uX@(l8Djm^uugrc|y^Db*J=hJA zu#Xj(+!@w+u(Ud-+U5Dzed_yvG<{`QlwI5P(5VdF-O>nBQbS6oAV^6|mo!6nr<5Qm zAl=;{-Cfcx-7xcA_j7#je>mXBzV=?{I#+bf(+7j~Z1RKtE~i*#KWyWN;ZR57XD8L? zv$D=epRV!7}pd z)|>bHi`b)}_oB)UBYx&B+hgC_uzxm~A2s?Iwc&tPkM4&%hV^5)KBUuoPwsu&Hi|-k z>iCefxXsQ(BPZ=2XS=N5VYgB$ZJzOz;@%Mp)E*gYssi)XT9U2?M3y zLAV-ukdRVj_EsxOV)#0muGiAxFB)mIH<3@Oo#V>=fQwc5zt!EAxEMvDP4<^{Ag~vW z*0+qPW^4Fu{scV_+l&)R!hDkfsfz82D(nE1YT9W2VQkDRyn*R;fh$@4E#Go(GGGCa z!;CPx{nYSH=&W-$=)NPTK`)&X`Ij1xr6CuR+~d-1&$~9KLv~G><-|+103kM_>Beuk z!#IgChhg&^mvNz>?rz!!2PoEr&A*o#3?N7lqjyr%#Bn$5?0K}YQS|OJ_nJsbVj}X% z;d%gYbc(#(`3LV#URrZM8@>sitY)R*(M@H@;c{HN(Q&#Obok=oQ9!h!O}MK~v2C+O z1e)FQe5Ft_m7{G$-H6S-JnOZl?XV6c%#G}N?9SOepX_&b-;f<%%ydLZlrg#fZy=u$ zmsnGaiG=ITdBNOXBbF03Y;#*~(zR7oG_?=8p6O&p^xuEeiBwRmxedL_=dsM$*kWL( zCFLYus&XWRU$(3qj@;HMKMP0?NoY$tjr^os?Y!Y>pjwMzwDVg1OmJvVW)-1+N@(>- z@COpvCEAnF^R&wA&YGy7NP`$J;F0?3&uAl2Uf=PH2@4s}aCM;fA-o1xUV>NjY1Nk* zF5D!~33!m<**`OwrC4848~mVe3x6W2jC(Io%`^+G4Yj9{2D#d%8rH-DFI@euHzzxm zwSGwgi}}|+tR;JQqED9>BPoaL^j=S1Nt(XGQMejlI&#uj7#g{5W{AI-NayE~k&{OV|J`3RFSUD9i>$8$ z$jh3Au_;8JHu%jx7O}nGfgJqxy+HLXsmfh!VSy5J1fCE8Xb>I2drTWF+2ic)A#r6Q+MAzDg_aI{nI!T_80Xn!DAg z>`$x#>@A2YjK){rrs92k{=`M52T80I{x>kq1=F*~x zW{wDk{7w6x?#QK5Fvq!?px)dHPnO(vVXtomja2CUV#bei)*(shFPSSTKi!8`{}im{ zSu!fVqn%vvpEv34N3>H$G`6Ti{yxs&FFWw#*-ZzkU?mGm(nyVmX{)CRNnL3}~hhITo5 zPDB#WXBPf3hW&Irm4teK4wMj`^XabCT?Es+ITkBniT+HGHMY z^%5u!pA%SWb6|_zjdxr9bvkGk0{8F(kgCdfzU!CZMryBE<_>4-iI=sBCHU3~OSxkU z?_!1KlUNbf(vUQIKs+L}K&e4skkK6)A0^fpF}lhL&@#Q%m8|%^0D!zYfL_r!Jnsl) z{eGg_Ncq*nQd`AbeP<`hko)?SIy{F~uQexBFoW;sAicQ-Uj1&>(6w2@{B?mM36k&C z6O+d5_i0pQb%pV{PPbPLrk$;Qv_uGM&o5Z{62I&zPq{AfWT)P8oK7(b;j5VWWbC zr*i`6gjA-9K&-Wd2nTHI@ale%hWA%7T{!Ht(p!PiAz-aHgkrw?Pm6* z^$O5(S%+C|T58c-+4AEby!9m?;m3OV{zu{p*6$}aTQ|JJ*IK`An=|WwS^<{wgs;a{ zN}nBq5Aoodn{a~v5UJA1jsRuRc!pq+EwH09^YZ4Ymx+`%Xjlma#)*^0i3Cm*6ISC3 zA+}Gh|K0>Tm(g)pqNc|0ywK@XypIxZJ4ym7z{!#p=t^-;G~}bFp7&0Po1rWC6l90Y z$7To4yz2dMv&OP~D>LTfFLfrygC@6j>*Jdot*ozNfjRfvd`bJah75ZPJb+>Y2hRU) zexw+GJ|Ns7y4fNgR*xF2%kfhDkBt4mtzj`DE~-MpVtckGQ&{@Iw6Z`swwvVPnF5#& zg&KUROSeotRYpwJL$Yi|wG@T{m-&jBSB(~?c~5Q()*@ZT%(wv`S9;W5EtnQ1C2`^r zYvRk?VcF8v{Exi>vO(We9N-wX=+U!Nqs<<*y73W=2OsDN*{8nTCa`lljr)WJLS~s{jokyDm|Mv z+tf58uaN#I;>(}P0&46;2^#Z}X!%XhAaj}h&?!{f{6Hy1g*wy%$pI!N_K0~zHhW5% zBcP^*NUGPfq7$ZYd$Kg~atBZT@vkD|kcRfZz~bQ)bMJ5ep7o72eI#ZEBa=UU_zIFw zj|p#j6kol1jDnYcW-rG_OsSJ6VP&MJm$CPO^ZOh~k&{wUmE0Vc^xq6ZI!hc7)cBEE z_-`#QHq^^5$zMn%NJ4j&EM?OV|Edo}^gB?k^@{3KZKm{!II@RPaq%9Pe8})C#eu2J%b-Q(SDsj$ z?VVCAHH77!n0j;C>%6PDKFhUHK%OUYJxn@7v&eE^=a#(mg`4iYLO*g^60b}fT z)oH8hWaksQ{ax$eE*7#LYg+|{p*zvco>>}(33g8+LG0ee6=Ss3Airb*NA#(?_H%;SDjPPfGjcR$9~e<#nXHelROt>*TsRE@=H<&@fVKh~h_cA0#~IcW~87h4#EG4jxZrc~C>1Vj;xL;ge;qppH&XbZ+iBEUw%f7ZHy*d&-)O7JQ0hk$z=se5Le;Ic z?|U(EHK@SPIuDbcalF~nbaV}tczZmRjFm->;)bemW$AuWnu|9+wkm&w0C zu|OKzBTM=M8kUcOEp868vTWJ%Rmm z>5?{fZ}Ta;`mDwu9bDE04xO03e^cw%+MoxFl6T;+*VO%PYdqzk(uGJpw!cms0VOl! zM=O}*b^{HB6%H6Q$T{$y?9oi|G#aao$60Ayh^_*g=;{W%vr>FN%f|FVT>Vj1K|w@b zCs4zJ6v`BEevQT1WK{q?=jx%EgoH~QJcodTP2}IDZQ^ve5{rr&-216TtN~-J_Xs|;?MFn*5;*n2}O7k2`!WX9RXGDHl{VQ<$(y90c*61Nn z>S(Pc~rD`3@(8mlRo96iM{MjCU3U^~hKgc%tmZrvyJwLdBTq+j`5V)LB>Ttjl$MCx zsDn;__T`%P*U>I~#Y@+znOBc>X9d2uAWDg5Q2f4GMC=u&{5fwSXwRnhMq9VT2g7~C zO~i!6j?IJ#1pF7*Nbb4NzboY8k5efADmRnKOR{;v6UoU$^nYmle#by(2)M|f=~oRzcn1o83#QDc|~(Qgc04KP)-z$^@O9*iuBCcpl^H=>@nIz3w* z33x$sdYiti?E7UD`vQ7|-+2gzGmHH*8>C))BoJ?vWgY`K^-DEPFx)LnW{bQ$Ays)} zi_z?9ub>A?NSnuU=3MBzu-0+}uN8M<9M-9=c?5)6tk<8WTH~Ru7cVhEv?`Aay|i44yOSA&1q)e*Dr3~-{xh|yA#sfYj<1Yu5Np|G|Arl$9|g1 zl%h1C zfm(fAe_|aYnmgsr)-mVL)=K7tjfbWGd_mjBABL_v{Q#Gnd$X28ltRZJAVMN3dx27> zu{g(jP~BHH3F5euvZf^)DPQ)Wcm|PoCCTlX*IpybbE!)>EoSo9w6#P{2a%B$zKk;A zcOmQl=L-YUm3TDRonW5i=z(Bb*%dlzsK%2>_knxc-ls@76~3q{S+CVk<2C;78oHOQ z=(qD~oKJ0+NAGw^1*};G5Y^sbKZT;Aek1^lX)!mGt_eKm^YOrf#R8uw7d2<;Wp3;I zd@zQ`WV#g20a$9{st%>dn@?}!cz87=!mTbEIv#Uc6vRfY+B&I-&rFXVZ|9@n0M)r< z8%hnoPHVe=R`gg}W$?b0Uir|103`WsSRa?%i~EvO3jjO0h49BT^YlhnRu#^)NVwa7 zpedQD zr}BJ4>A1aqu@z~E;}i(u*xkYQV)`d?yae<;MVz8}oaRt%k5P-OZuW7j%=g!5ZbD@> z${)Et0&3r;b9aFn*dANedlCC7TFbRN*A^bs)vS>QYFi7qi^JwOPka@{h>BVSfTJJG zn!}ostm%^g6lsh*edDIsr^3<~eQJt*(O%f7gZ0&Gv!M8CS)kpF-E~qA-`{Qp8wWc- zWiK%%ZEIp{Uf~0zFD221czm~T(CCYYv0w%>zs=Lfg26~oK0$7-eobiPd!WRi097X`(M{I8f2^oqp*c?moTv`qd3pY;PB95t%cu-tn1*)WDc1oBz&24{)O{KHo$6B_gsJ}qb!;=Fx+o1 zj1~YCL=NrMK`&^pw>^h=5zuK1cx0^$Id$8<_K*L>f8iP=Q+NKx%UBpvU{1?gi-M(A zHeU&ans^*2>e;05T^Rk>sA%!>=(g%K$dNpkyg+hD>+>XP;>(P zcdAicY#IC-|98`#EkJx@YU$mGzalAjYJGbGJ$m)+`B8f{i&*=c%GQg@e7=q3S;6`O zk&-J1>oxJO9mV8W96I);%Q>JyfG87NLqmn`4Nzz}EW0pGv_@Y)ZPr@z{^eZr#M_0- za9;6j5JM6ra=qE5>AV!{oNX-U4pY(j`R0X1T&WB$LSo97YGYzf5uMTGDDbJEZpE2Q z=J>UV)R{71KVDP;DD2C7P4Zgp54B^K&R57QE}jR2IJKsOoV@9PQvb&+*}WD@{pF0Xm9|5h!QD#`aT0380rPw~YW=UjD=TLSk? zno)xC9}XQg^nDeI=|K-6mC!Z6+W_wl!{NBk7{5X<%k;vN6E#Xk{}UGKeD=eA0Q@Ms zi!AUADF<6DkjwN~lh@n0QG`;?$DBoZnt-mmhn$U$FnnPDxjHm(^wUt}>`-Us77aLmC;~{3bf}`SMPhfG6Q+34h zKSJvT!O$<7xw}HTsr>=P8#}uWunZ)wwwNm9hW#RSc%YO=`~PVH-hOAX#|?y}_gj|l zBu+rX3yCY~S)NGBXG-CRbVQiSzdT?LP+8ak7$v>aH>Ndxd=CF)djnX5{odNE#LgH0rNN4c4J%*nX067zBB z5jG(k3nZ0H1k^G~T(+P2%QeI#Fww za9nVkZ#V_BvZE$Ni7BbBUeP34T^M`epZ5b}C>p9?Hn25Me^pQ>!)84=GLdWX&`e82?rMK z>wUZFWhgZTKQ;EE4qZ8u2drDE|Nj5kh=3Pu_d(0~W7AC5FA2?BT6x|my=p4%vXWA} zT@fjY5R0f6_z~y2^V^%DCb-~lTC>&C;i}hWjFoAIm+JHY(3eW<;Rz>ye&~e<$$jgD zjE@=X6Mf~?hF9}Uo(^dU@^xJqJ+T6%tzo1>V&N;<5mYBL(lMk_bqpqqAUnY)Qyu4r z&U^H=k^LfVI7U~WcH2rvXF9$Jj!Zc}lYT!NvI5)VM~-OZKx7~)lOG1x{ZX~0`TiZ) zKy{hB!hGa;%@W69RpB0`rF#bex$za=>i12#L43DbC5B#FmE)tfag>LxC) zXz0WmA2-B;)!+F3JJiarLfYxu0{OqE8#iOD5BKPeS}U1LFX5TO*=usCRAwim+RxNUh~U8s>3+ZbLj=GRHfFK- zyyNm7$d_tbvX!d-W*2k*)&HA}h_b6DKKXxyaTC@|+l7-9KOKxb=%a~T1YDMt*I;eb zpn+n=Wjidw%t*fo38+Epmt&ioKZ57()b6zLvkN;AN|ro`swG7e1V&MN8c9Zz1Ei5X|rk`Lp9(h?(nr1Evetbxv8zEoyd}H zDmQk1PJaSWQ<#&*{k~N7mxsPvU}r3zWT`BIrj5|=YW5-G4o7BRUteU&twejEzYaM? zVc~DL6#TSE{>1KRR!T+a|~@jioM2VNrLt~uekND@PGlY6e- z`@w77Cudfq3b*8{UEEUOE#v8ObJham36@7$p4;9xTJY#TXdI=;w~I+Bob4uiBrH&`oep!?9kWcp7Qz;t&n$Xqx`sUK!>*FkBjWKW-}ESSSuf;FJi&G>_Hx=O zpalf*_dGL8pCYCJd_CRy0@8=x^QG?dH8gP{ztQp#{p6K8DuZIe>otO>L$sW@C4m6# zE9Mo1sFl*JIR3+6t+r)r4=q#@2Lw}nV_qETn53qTqG>_iug@>{($1Yp>lF6;W@7%Q zCIYt6W%K0)8uod(?>ZV%QDy&73j&&V>q{v#I>6F1bnQA-pG#b>H=}^uS63epiAg|a zln<;7+*ZC9)wkSYrzzn}l+Ax!uC;jE%%ilHbGHG0a zpbITUAGF}=UUmNJ3P8V_$wOqJ&*S(;2{7)HO%Lgb=uoxHG$Cj1Nv&vdluKQ=9A2m0H`bFo5aLR!ZKkBb) zbx}PV_K`1w;yvwmqS9bgr^=imrFqQ@sH;ByO4>(lnCk8MsM$ql!iM`aQeA+o_quiY zddgb4nKQ+*)e1ZAydBovz;Ns=l%-Iy%7k@dGS2q^Wb+5w? zvED!E;5hmWBCLL9;-7T|^&|p<6nmXeMJN=1f5Q!lcN?7gru>jLlb1D`M}8siz1rVG z2N>Yd+&+K}ZTvzphDa^+2<;G!bqBYcVl|&d20U-l*6~DB2*+9lQI7&Jk3(Mfv(@kk zpjkK-7W^@Tr>St$3s^7no*o9E?Qvha|T&he&Z`Ez9 zAKn`l`?uv^K|lQ46vh@b@%zvgbi~>wr(!6-9&#+*Vopw@@UGe}(^D}mA^UA{kYD3G zpzT00@h*eQ%w}}oepcx`O#E2}tk=6@Kd#kr`r zq$>E0SQD$`GNKxOZ?bae%t}eV_t5#ks^0-e4*f+Y8@E6anwu{o&2fBe(*hUOvDR>QuwlpuaE_$ghAtTS1+A^PZ<@Ey{z*dy z^d(OJ2>1IrQZnwlGY`l_&Tnb8erZsr zsQN#0pEMbjTgc)E2F;<;?dK`IZS%KnHv=or&zo}R?<+s5$t(X|V4;k9b`zHJbuy`c zb>VR;88^cWq`hIv*mnY-sqis&WT6IMoWg4eI;|F17fCJ-dXtA^*p4m#`NB#;;jO&t zQL>5@XzN)yvjz2*`jP9W(cuTZYbXKhe(jfj=YJhf-vVi(9b&6%$D`e*=Il#L{}qur z*tC6+V8h3NMX&$LKY(M$y?!op0r)*FVWpx4|bHA=pWQDfwc1U>v97nUF$D9);+io zFqur;w$lQmz~-WT7Lq{yMkm<=)apPGez5>g%4vIG7h32|biPc0BW7{N0otwpy~^i! zsmjxy)1g4Hwa*E*ocsq8X=^TW`{s-h*g@kE=Rr51+uGecnV`PjaKSI;Rke*1#f|eTnh2%p4{QZyzq0&EJ+VT_C5qXI+n-_3a`!i zvi>XvgbYB!odo7v4&YzovUO+0Swo8}M7!<@{NZ>zQFg>e+X&4Hp${w;SHF0@4`S z)?fy3qQn>6MdNR_wp|17jDrwd@Wnq>WDhof_&1ic+Sj?WC+vjh@ZH8G#x(P|PtYPk zf`%4M)Ac(M_`N68Wx0&PJH2tCPVv&xVoQlhMK|{wC12Z5^GY{Da|Q-(sb^1qMvS9h z-ylHHZF>>#mYlD9McgV<*2(&_%El2I@0;)_G0?F``o^NTdauW+bebxkU%cOWB!g`| z?(CjlT8xatY#z8|IjY2KI5;KOq8Ht%d@#uUZV94oslF_LWwGCJ_ zgYP8rY5nb%t#W1q(y=T=5I}xoQH99bB$q+f1+R0QDU5q0#(B^Yf~8lIG5)z1qcTc^ z)F6oX(i&r8vLwip_esB0!T!+uCFol;1i|DxpP$JlyW2L7CyN+X8JOd87%zAsZn4Fp z1j9JQDCh)OaC$`qdB<^syKQ!hiSz(2=z|OQGlk+y&4JO4)4w|nK^VM5 zx`Ubp%P^AF%*x-VD*Xsy+c)?duBIIc4+g72&L{Pc&)YXdgOgLFKF^KRKD*1v@fUTI z{Mm}}&grY*CzqtppqJ317YpU1fMowwWwSAUl(F0bN}nj0*bhR|$AxaYw)=eZN#j3D z#K<^0uh6!=Oe(6;Da@_ht9*=(i9JjLpDGD1@kuuARG{aaPISowQAwU=s;>fB+-l%D zy4&u_QVW&^=nJ~SHi8=6Vn*d)?GwxB6dI7Yl@{K|(;(2Z3j#|!6#B#-=5P0WVawV-V#jtE}d8|ITkY^pr|Lma8A+T9&99)+d_#ADKc8c{4pGb5}< zIr0xy?%5?-y8puP#~-;U?grV}OND#&lY^iB?P-8gu0>J< zL8YQ;vg-f%@gX#M$BUf~;`8rsD6YeA#Wtxzu;B@epvbt3VI1!a`viB2_$OG@cp7v8Eh`X6sXt=;ijm)g zAAM#vRh<>bf6+A%IXQ9w7%0ZpGZE9%x%H#H{^iqmCX0%NEw>*-1hZR_)mo_j*PK?h zolO}ooo^ob;bz6rD(l|ptN2`w>XbVFp|=^%O-@em7F1mT*q{4gN5CNx>IAMzhcb2b zZrDO(vj{rj?!R-7J-AvK(JYLrNv0w=z^Q8l>9~FXxjfEye)urL)1Hq8iHxj;Q;t9* z^QC<6HzvgViC^2wC^GCxv!vE0a4|A4)HTJr8+o8rz8pB2Jte7adwsvz*a1T%&;!!P zfBGItf4*iGFutAJ?;6gGe}_{GLkhM0z@a znT)}~$v8+|#S=MDZ?U9y83j_oV`x*}bGG|>bcv=npa{m=>eP{viynrh8GeH%9KbuQ z-m`94zBsJB%bQ|pXs<<@cwbAUC(R{tMeUa1Dlq?LXo4odSV@npS`fV-o@f8&p1pt> z7Kf3ky0w^cEG%546hamgo1PomLd!V%TV3Y@_7oM#T#S3h+ z`|>ZC^?o*;nvGqBO|r=x2~Z11b?VuO zF&Ohgx1dQ$sM)(S?h-LBd?0Bm2iF;PJ zkN6@-4bgtd>NGoC+5s)NAIS+w&(DpfakEA5N#)l3w4=ggpx!Znl!W{}57k1263pQt>+vXJI1I-KC57ZS1*F^dhC&y#=&(-MdO*ZIl=(90d zdOnhIsd%?JEkYm|JyXgdigtNPW5&4C-+Y=VJ}@Xu1vJt2 zJ!EQxro@SdfZ1SMLiisM390=}@B zKNd9snRoaQmPYm;R3y(vE)ybWpF!_BZpw|tjHMvMG|zZpd?Ez?f=|y^#f7RrS_T`~ zKOnvfV)>|ExXlq0TcXwn}&6pG|0BJz5c^Pr12FeJP{eN*XYcM8R84@62$ zuQlc0)fXK{D746_CPMWKM|zLFB@Vs={EBPXSN^jlUmulPd zga0lWIQ$hkh9j|#NGQb+5KS;PGBU838Yh1_?i7!6|JZ@am?!KK>ZsXN@-w>UosycY z)A(tc=~Q-FkPN}%!=r9lSaMu4o*sLkL0o%mP^Ep?UM*5sl~4<@N?4vvKyxPsW7RA2 z5>qMTH&Ty(J~)n)j(m>9LzK~^>Ai->Tlj-naOdtUSPQu?QNMLG<45L2KOB9EwX5<6 zBL<2<1@~20d5%u{=!h(Z<$KtOB(NXJWXLo> ze_>9S5K#G<5!$YxKG6I$!nPsk{RVGyRFWJ#R{))Fp1`+g#0Iix{K*~Kh(^Zs1C`#9 z*MXQIEFtD3M}J$x{&nuL8AWXCZ$JRBR5MOgV2a7F}THp%eKYxPC3P4(SFdF)?ZK3EtZEiz4VkNp0muqPttV-h*{)ul|; zE3Cw*$xDG;blO}-*S4pgmBouba$Y zW;c_@zpHIq#wX)Ro6tlD-@<9f0$NQ}NU!ch*if{T`^N>`X)?zHtE>5$lORNWeymv& z+<0@iihZ~a$~5b#68duFe9A!t5@MNhUui-{)yPT$2ric>x)|wjUjb#(@^y@0hX{JI zI0!&EwdI03_f-1qT&9yb8T7Ws4Wlb3Yy)??lO!Y%yCFWZm}(*OK0fpauR;FA$X&fO z{-rC{Uj`@Qj&|we&Tk%*TbL<=F}xmL(=Qq%pfa?sGLjU>R|8 zqDQP-_>XVh8#%KFLdf#0P768?GIHMJ>?4@VmSZ4C`W*chx0lCG=l2;s8X(#+WnEqN zg7lvtkF(Jw=yx(fH%b~IFvT$xf-bl}d4vA1?bt#(Uzj(Yf~Al?_~lL?PQ0`mEgVWL zgkn5vY`gOAOEt+4-&+~ml@`hbt2(8Xu15}Ga%NcCvZ~uY?~(k*6V;Lz3v8kDzcWGr z4fBeDerJuhMM=56Qd)kcv zGBBJvZudu+X*hSNtn8_MdPh$cfhhCNqmV8Hd4|BTcVG{yAJ&_B2T{Dww4=~~wrQw- zd>3~}%-OZnXoy%Z6P7S8l6piNAnlC60p!Y!NZR_Iqo|E-6ap7hgY}oK)e@_0VcgZ4 zpz1@JtXGderI2W%>D+xlvb?WKt1>2Z&?$~x5b=b8H~v*H9=CQt|EmpTJX!>8ZKwM# z6YQ*m!QdYss)8DM42gccaQ#Fst$?T#s3~;Y#RlNN$TQCzh&Ut4;ZSs|!NJo**cwP5 zzI!6ca^lciwy4M>0zVulgBx*Zb!sbRV}pqA#q`sCT+3DIL_$u78SfMWozvtK5qmHD zwZR1psgV1MiD}}XdnaA9>MXlGd>{|(C)A`K_>;bvLau4AeUz43(g&iie7BN8>#whX zFwUV?l=`Awx$^8EpMfGeUv-$F`ETE->`p*w0(fA2Vv z`9ver41G{$if_LhPRjrngxcI@0Yq*aoSQ5GR{yg~t@06>gt1~x94VarGgc+C|CLvy z&w5`n>sr%Qh5mUj^(u}GM(X}_K+0|J{Kkf!@Cvsb6{k&*qgAhncK3B=;}T^MojOG1P2G^Ib! z@cPD6BZW3}u)*%2CDx$z_RHzAYChdZo*WYhfRQTW%$v2pjLBW2B;S1xm%ej%67LC) zz*I>;`P}}FGx_Q*5KNG3u0-3m9p=pXe4j$-adlu{cTio!0pDDLm0^Dz=nBpGExA$A z+o2y5HcMSOAcE4rWOPrm=i|)UWZpae>E}JQaY4LV9+?K(Q`O=Agulx_Xto1{rnzs& z#UemP>s+Z~bHb37@q16aP>Q5IHx|)Uys&Fe^~G-~EB>DZzh4KS($f0T(f+iGr00E_ z|K-9}lw^GZ=u|WSZlq2;~UGD9lZc{Z8&3feQ%_jCxIroXlI-(3oeVCr~tz9qOsLXFBlw=^$hN zl>)0$Z?L&8sO0y@7BFJ9G=+g?OSSt765i->gos*sgOXl$#^4thm)Jz8|{~|BI~+$T}VjUaM3I7|7ihw-Euk*0dQsL(<2|1wJC`|J=B&U zlMc&2eJNyj#$@plHN`H`!UQ-_WLw&wEW4^KkPGqA=St7cIrojf18babp0Trj-3|Xf z3k(G#mX_xEI^$>=;Pk^4oQ@+igz`J6b5`04<@k52o z(hD83Mxl}TC4N5e{te@^zdQ_eM}1Ix-No~5e!=E_$L|l~s5H?%!({SGR{dLCzK90< zv4U=^};Ceg9lCBC}K)B z+JqsqD(?}_6Au@WAD;K5b*ff_tF`-IE@bxqj$RRc(QqIR26NXuK$iLvX=5FE9HvM; z9!k=DX7&M0jv10LO1F_Cdp!D~>J^V+(attzyQpF9@td{37LX5`@87m*geS9_iwm@G z+fbpaZPS2qTlUHxDM|$c6aqoR$E9_TH!u_gtqr62AW(RjcG?j#O<`~zi+quWhigB6 z(^FYv0G=NBMzm3Z%X&)Fxa|&t&U!#GJ0}pHc{4#05MKbkKB3GR+i^Tj6N_4Fy)%Ww z+;L-$B%KKhgTeNDmzMTMoiGOkpWZq3!GR+CKTUMlAarY477%Q2xqjo1Wlb9L)Z<1C zyHW-pg8TZ7jDW@(B{tSKct0bE0?Ur}vp1a1r1RdxV;5n^(HOKEBMpp`)!H^rTlW!> zzu}qM&s_N_c#ju9GkG7&iq6!Y9i+GIi3$BsA(-JjbTCEQTp3qarGE%>TKk^(|FpD` z5dsn>h~Ghu=eY{2c!k)T{`oKzx%MdSQe2o*NMHn*WH$NS4o;Ffu<1Ue1*Sc~*Snma zkFh!jE=Iw4dUbRc)c=aOn!5Di4X=G$ap)5#X$MN~RaZwD&v16mZ#6FV!rd#8c{RU- z!HC}vDO!k>28G-|2k5%nY{D>e61)5Hg9=!y4vTGgTz42|$poE%T%>*FYxW-@9`3D4 zODhK#nuyUnB!};LeOar*BLjTpO!l$Wl*^l0R6#7Icttb8e5|qIW3>&Hc~wO=i#PKs zJ2gVw1BeD>y(70eZiE>`l46;?{~EuUjGVpO2F7kjs|{M#pjXpwBe`H+8uJh_#6gTM)ItTBeSKm9 zf2Q*jhhTCEwPF4c6%gZ{#yqw@dO&!E=|qLE$6or){ivG`edY+^`~eD(rs2&ZvmBiE zGLd}(Wi6;xmIu*-6e!z+2%ABR4KW_?Lq*QoNH<`&INc~{jC}GozQaQM=|5+wvz>02 zCeGFyP7|sKB;?=XkxcP16iBmxs?VRVCJx2@wul?7-&EW{jV+p0K>jh}_q`%cd!H<6 zlE#~f1Y-}lB9D;bsxIB@UN*PIe!Z7SAP0RuhU@Z0-f(pU-b}O;=w4928iU=bKHrsf zDm+rzixR+(H$2n@2(^Bb+iZ1GspjSv7jwD=4DzZ_T8)gsDl2a~?G~+a-r+_$v|-*=G8G`(Edp%kkmD?br1OX}sS&5xEEp2@u2!tZQ zL7nOPPh_RWX^NjZh-%@OibW4|{aG&VXwvnS?-}J_RN0Tg-aFA?X1Fim`uhDljUa0) zTogS%L~U)XEy)YN&>VtBW!4a)soX;{=Ov174r?(BIi7@18%tr~75SE4ICNeGYGi+< z#ErH%`5C)2x$LDmlh{U0N<#ov)45JHJ$U><6Oo5A_&yxqjf{(&1uqBwWt{2>Gwx!e zPkr8?#z25rIZiZ(?(gc%+$>L&7foDl*jRJ1?0ReJZTOwIz2n_HrGI2WMo6AdO9nOw zU*H``-+9e>y}Z4RN%q2>CPW+{L*d548d|XhU~Y+asA=D^sDSAVACKvPmOLo)oxLPO z9*T8N0vJLgXxU)RY4B}mklM@rY+Wm!?^k@h20A4Ol7WE;GJ4(<$Ula@{1yG!Vf;e< z9gWKr`_L6N=Xr;)2`Gn-S1Q8#D3njX8e)@4U&wCOLZ}bVud2GGK;+(X&vKEbBfF&( z46nDz3ClzI8c!h^-wzcZFJuKMq@&gn>1SdJNc5`x$=}2hc!e`%YHdR8}0O`p9am&5Ts7Jr^|Izf-QBD5u-y00r$k836yQO0^B8`O7(hULv z5~CXgL6mMpkP@V&Ly-_rx)CWU>Dr$A^L@_moE^^o8QVGcJFe?`)nYO_<6fTvC#M!M znZ=!nC~DUF(o*y^`Ew6-1CEWRdLVbx$$g?oHb2AuEXUp7b1ssMn?^ z59Tbkdxm%O>Qcqn7*k*#&Em^Td*!~F_74GM;V?{IKuQi^_PDQY)Xtki|9*Q|=OMw~ z6N95g`9t&(>n{QFFGE|PJLmR|iIPO}$}$FIkmdC@k?~9E@I5UO$RZ5nfCC1FvqShy zJ`Vl6DlUg=1kB zSb31IfNC}oh`^cmbzFO7jb`{XAF>{RLx5oo#`G}a)3KKj_Yxy;;>e>CUXsLXm*S&_EFfEY3AwnnxSm6j(L+4blG_aMOLz*O?NhV zVxp;D+02g2HhA4jIKwa=L-Z-s*LpkxP;{FGQyQ5-jleq*e_p_lJ+6_uAV#{;(Pn*~ zU{bz~zQLK|B=C-H5%Z_;PK4>n2@P@AB@=5pz9mfv(A4lbvCdEpzpk^0sP%R18=+x= zM8E@76d1m7G*L0ins&u5?@IvXOpQbkBWY2QF_!kUxOrXUBq(r7NOCM%}pgr=etsn=AlPsy{*$fg2 zE#Qf|5UNGVFWA$IqmZo5lI=~+w`uF&tR>Wf_=za8N z)>mEvtZ;gLGou_9Xi<<}k&G7Q#6Bei{x}v}LW=+^Z3;GZaC9`BI6Sjf9k8?q6)hM; zt$V@t+IN!C`4m{MMc|S&@Skna!Qql3U#Xj6%Yfy``&(kxjBmJ(XzcBFqh6c|PNQzc zfRhcbOZWMIX8$d)?Eft=9DL-c<#TkOQQQTFXuFvuW#s{1AAOIwPQPWqN@Sp1;$vPT zn!7beI6e=eJmdb=1{p~0v*#BwP`@DPxoV1B>kMYnnS#%xb|}3+jx=Ftq!~>j`YQ=j zeqprSmMk-M*`?9ElDC1-ym@M7y;p>kS>6^q{2^Der zG2ATcx?7*q{cJUHT(hb#&XnQcCYQSCdC!Wz!QA4heisb=%^VG%%Zf?ewUoN7<(rfVWgSf>#mDGG zQeZuOL~&ab|o%gZ%cG{}N(k>31zors2CF@(-md`r< z;ZY=ro~6c#9=D0EKdX07upSo+$36#MHaUee-vp?P@b{Myx+l*~}24-^hesX;xnhaGyMXI|assE;8EN>HNA zb43IsTbrt7`67tl>NyoIZmh1`y)_Ly2Kaj>tFVBB{MzSe-*CnJYWR3zKlgaAn!d=G z8;$qic9mIawC<@s`rK4!bxePDzvLmbEu{yxWHMS;JiX z>_eX3HgC}_jbHfu<+X=Siow{2*C(N0w^Cx~Sjji$&@I|~JvgX4T2+~6!eX26^VA#J zV#4WWeSUwooVzF#iu~}g;#Ly)WkKZAZ-tO0@8#hUtcF_pF^C{9kr|(XWi1#$s zbVyUP0udyf%%I=0F|9%aizPV{zPI>JFoqmd?{%y2E_Oc6XM8a#o@1k4o4oGhHDf{O zZR!6}O9N3$*u8{y!DLjj`A9=OMJ5PA zabTI>h0CP18-g13V{+t83amba7WdBY;eVil!DD{Ot<{jN%Q;6YfsC6c!#_LdM}l0Z zFXKLMq2Ne)nl7vI6cIzMN>ZZ#U^p>H?ZLcxv9t;L(vdazFf5!n>3U^#YS9#&_Z&Pb zoh2grNjn^FGs=VGy<1NG3<&5jYdPd-Y8vQ?5*sf1uY>g^xRE?U^MO|XgZRY>Y(YSe zfds{Kb>Hh*OMaSv#K983357#xO8*1-FP9p9?ulku-e^%%?GDakys4+GX381PJ2pVz zT^X!+gN^S0CLSAKCpXPL@43|Di}^+JqHm`wP#fKa<+vjU!L8@K3d368g`zjQr*$|s zx*6DjkJuz8rhdyPRxM2{zB(d+Kpbbh6((fNF^fS29!6ZxW{kJ{#_3tyJ3aViA~COd ze3w!A=v{%Om>nZot6m`qc^sX|ycm}lf*=j&(t6RL&g-5=VP9N|FH4`~dm|0;m7#?F zK)#_GKh>ag()f^nVJ9viVWG|9e?q9nXyph+;6I5j0Cw<}6R&jd8>~jhv4MXCf<0Bg z+cfhXMJ=}9EHmj_}YnihHr zfA=yglguoLTqW+N_c1PChQ^*ZbG#v5hmI+s?fDKLd)Z7YI4aX%uK8e*?wxRCh~O&= znWR9s63+=@A(+yuU6xFn#cK2V8`D>t2PsG4`p8$ipm@6jS=>YGUL1-Fq=#|C?jVs= zy|3coRb$<=`K@h4hTkKAc^@0^n|c8|h#$^}5TfjPV9GqB?o5v3ss!b0#dnIF5B-`; z>arN&PhX@Qv9Puh^<^gJz3yWP=T(T}l_61vBfmTX|BSrBCC;?M4~OFejD=@|{ZJ@8pJRmNb@Q!(ma{Rjgr!lY7xIm64$1n8Vs!+OD0e$*x1;>$z^3v;<{0iOgHD4exqvU{zA-k;j{Um zM*xT?wY_FRv7}0&#sdL8j)IS?_j53JRQhE1M@v1hH20It2)y$!RIm2284{X(b*zB;*=jQb$dpB?>&1Uh$wb- zJ)QWhqAUkRQlO3)hiF8<5#A6NhL`a8!$9z*Z*xg4gFem^!B;2Nt4T+g>+ZD!og)?i zih8AP8Q0hFSt4zU#~SXI!1mzXz!%iL%EwL&sVXa}zB<7v@!}`p4*_HgTrYYgJXZgl zMuYnP2*-Y^mDzgKhyb%Ge5k27Fj51T+p*QB`qF<=p8ee3>NMkx-q4sH(^qJ^tJQjV z##=KvMOcaqXnr1wK1()L-^TLpx9bDTiivNu&>xxwS%~;V~lP z(+c>*P=Lv&-LGu!h7}Nco>h`TJf0H)S9YH+QyJE~J9U_~RwV7YTCgB+(Ne|(E>@$! zaN@J``vK8pD&=^n;TnE9Bs)2xF6`W7H17dpRMbQLJ=KO3repjlwg6l?1N(bS7a2&o z%S-sP2YrJXgyoP5U%HpAj`l-R~LyR(HEMl$fZxZog0 zy|cp5h_$|N=sF`7lVUe5TgQLz!q9TsRuc3k;|u}WBM=JCiP9Di8BX?vrNGNeYiyy{ z_ifAc$KQ3_iug!-D64tZ@L@G-!|3;`eI0cN;dDvj<;JyrH0}stsm$mq;kHP(xOk;z7#L9K}u7k8Cl~WYYj- zfKMOROl2|-n$FC@+tlRgrRg92PDMl@n{rpBIsCAHWKole4rEN*>hf%7O(cA({Ua53 zxqcJU;WRq>F_94sf8oOGDIRbdo%Y5+I=NZ>-;X&fLWap4X`b4RKHH@(Z@vOV_sk+tlQoW~s%|wGH>h z<3_NTF;HEU^PwNjDpRQ`fzpmz&@CSH?X`Bpsq%pUC#p#O?2{OV)O#PZr-uG<(_NB! zw=-RMNdNP=(sQWsYC`&%K#lXk9#-){N;?UTK(}zCI-;u03K+h)rvhd2sbX-kk)lVQ zl_3v@W0Svh^XFP)OA%$6r14pjF3bA+IFgNSGGmd}BdO-P5K1jokM>a33T}9FN<=YY zz>g7d+N4{$ej~J*$R`*_<)gsng*JRN*-djab?z5ns~jwQlkt%IV;8L+(DfNBeUx9v z|GIfL0`dqvS}0o7ImRd^;F zKhT#&!=>?`2UxD=>TiT7cO7rJ7M>p8*-fwl2hq{}gd&o?qW|l5@h;s)!aK3IXVQax z-gW+8=c3h`azu+grZbYc)l_+$NFozDXz+0a6j`Es#&hchs?jfoqr>T`{)D>HlF2i|V^N=7a!DeekXMAPc`+=a zH14`De`yd9gN;3`G@aJ@v{PF!ryTF3v7>*@xGw3@*s(+dR~g7qYss(w-0b8>-N`=Y zibLW0gIlp$Q{*{wd6QuCdZ~+t$6(pRjF6f(3sJ+!D*TfCnwZx*h+b8E7}cZ=p?&?y zdp$((^GZRWypu*M3GXMW74hO=>EHDG#E6IlRx&?!fKv_sh$!`^{|7_pv)W#uzRoH4 zJt-vrvueh@{ufMmLDV|`r|SU`#laKyg{R(sdr0qggizs_+W^I(lm1~+FApDy_1qr~ zUrF*_gBTK0P269)kauC6Fp;DBBe0N6@IruYpKuv?N=xw`M3|{;K$>*1*=Lc_8fiMK`ukMfc1Wt5AMK!yHc!J$D?Q9+&H3!|-g;kt*|J9X{DxRA&+xkY;M^DV@XK2HQeF5D&sXFRuMW1H7`-w=A z?FdgIgkCP)YjBhnon=K zip;wZ;VEg&#Z@;(GElr2^Q3vne>WAe;deKF4kUCT_$A!Ug}`vgeGqD^GV<@zl6QHV zr@M3k023Ge*Z^$te(5`^u>3DLlYpG&NlfyOf6M?;0-c05F8OS-^E)X#(Jhr+**{0JmD|t=28DZq|%;Z>b|yj)9@% zL#-y=yy&b1^8A}ZL>DWEjeSb2y^I#3xRQ6gefOFE8;O`J3j!$Ao##i@@DHYhl&kzS ztYrPayTK%@p}Q?`Rpny8x$^hQWtlcPk-vkv8hp>yg)RLbxk9Lwp%iLL5^q%mGkQOp zT1LDfQH;k6^HCgE#B?g#D{_>r_jSiL8mx^M@6FXwAJZObA}1|Hq(OxmUp33pis+(5 z-VFjvCLto=c8@Ne4Hyg3{ILoaj3)zKk^tlb+cF|{5|VHp3ZT6^RD3#2ACF9_Jm2GI zFYAJ1?b)ThiiQ+ZglgzXMK~&aoX;BzNKiG$Iy#hzKMFf7JgH`u3lCXAc0M?qyMHx( zy|KF{p;01`y1e*e^WeGj?f-EB3cBwUrc`*E0{oG43WtrF!}){bIrYAdn^A+xAu&BZ z)A8&j`lT`u>IbW(rx%2a?Obe=D2hxnV|e@F&>}JQ-aE=h-BUgBR4)JMdeYsx zYFWJ!o<0&GO0|P{Vn8Fcy>rCevk~L89#Oa)x2kZ(XW=&))8B`Raz`tYU9ME^x8wpW zTDF;A#2h85+}jjngk|0zU#P7NM-GqxdAMbIiPaCrG@*qKux<*0|SOW1efI!#1RNe(%M#b#Ul8CpX|&{-gZv)G|;4thb|_u|qPtG$+J2Te)01JPgf)bhnT zezkW)5C%u?mV-LOuPFIU*|N1%3^GYy;w_!Oqv)T`@pJuh!c`s#zF|Fc%G3B*1oIw~?B`tlnfj-`kmFHme}z ziiT9i;zwlaUM%JZEGGko!rIdxcIEibNHnU6oK9u2F!A8S&|xVPslgd3tF~|r(^_@T z3>>>He$n#apTqI=-+wD($8(nG&Y-v@Q0z<1lM5?}V|AS|pS!J6nqdd^9;l@? z_B^*S9r~pvdM0724Y7f2$xrcE6+HeQ$ON{$MZ|a@Pi15$Wj+w}zRP^9QLY4tyM3!| zr2(!dGzt{*x8)NWi`}9yb}9-4u-y|jLj(VPbLyetV<#?>f+DpvrFn0yDL6E#xYVcs zZn$flVI+WV?TS@wWSM(L+x|qoI$$dTwWg1at<-xiE4DK~6PDCh9uiom7G>Ae2i-Y! zzg*i_=L~MkoFabhk8ek@>qk}CeyGK7*$$u07rMYgOO^{)?sW-EBC3~ctGHY;m8Cm}ix57Gv z^QqH|2zryvL52;8!uiorRK4`ODwY7=gtLY)VYLsT6(7url_vLom}+Wb7msfD1Zvr2 zQ~jHlgL0%f-~$pV;TWY?YA1ao+s6lr=wSDt1Azhajfn3zT+vcWamf*)d!vQ%8Rsc zM1B(kkN5X0s;Q=jH0?%(#YTZf*a)$lQ}2gu@WA5ED6a6}GG(aqB)3H838#c-2!Tid zb8jgNnpzf%f=m776O19%p%Wq&8&|a#j0_iv_2Z4Iu4|*97PJP?DaJ~69Azk_^0B+< zIbI{RK>LUQ4m^*XkoGd#dMK@E%?xAh-P?KA^TXQrJ5_XAPdp~m5U_X}&6g#RT=ruG z092*N+|U~}K~T6`+m_?StLBdDq6Ntnk<_a?yY2BWfrrbbl z*7D%xIj{OF>&9y*5LYt|`Gz734xSyp%*zU7iuyipd@@%&WYm2nsABf|M2RLM`+@N3 zCV_~{q@USgtPfPFx{4aj5z}*DCm&nGMa){P)?2Q4+5B7g0y8Q3V)JJ~zrNoC@A-8r zb<77eSUXn~N3r9`>TXdFl`J;?j$k|pp~?L<(6>Y-j<^)%{1pbOJc5P0;BOeo&m{*L}mH`0Nd?&?H|J)-j zp8Ou3Zs2sajp!iGu!Z!{L}R4~HVImW>X&r?W_W2%zrdv@$S(RoECPU~NQp?WoS*H{ zLWG&Lz@YJd^-1xMFE?Bmq+b%I#{=ZPOVa}MdLl**9J(T>8tBRKd=BwsWI9t9*XD@? zAR|BB*~@``|3ue4PB+AdgUkpGRlK?(LD8Iqt*o8m!@!`QHh+M|hV-|a^=(f3#)&b; znbw4>m|b|%5RkZz7gzBDYB7@mGLbSPS}xZvKu27%sM&|(^0O{HR zZoC5U9sTNynYyFh>sa3Xu2+q$n(@ll1c`X77D@lfct=@hDN?r?=DxESs}{ zM+=-rzuio1KX1KFT|805?4gP}I;w@aVC~08>topx?sM@WE8(^K%-3|?$B>m~9>yQC zn`!<{dL+{FhMM{*N;wSlN5Lb&!gznsjR$VEwLRQcj13H+A5EUTV&T{7(V@S;z0G5> zRRaW`uks+q`x*CoG*O1Hx|Ega;{D!={uDYeX&+y=2w&{{O_?mI&beUTus_BaxF(B< z1+wE=R_Fpo$Rvb8@8E{-n9VD2ru`syW^%Ex3@)4JNA}v;zmkBrtdlw6Ow;MkZeSx? zU|orR69@42*HI4{7EYOnj})W3*g`c)DtaDMz7#jCd}Q&+6_H0KY9S<@XOgT`)<^=7 z6`tO%5pQG)p6~g+k|G)}9^Bm7$&QS$(?D3v);SLH;plsE3M*Zw@;az!j{T7j6Sq8Z z(zo5-x-bosbikiAzPz8jryRj~d)=Y6ct$WA{GQ#i_Ysrk`)RY!t^!>zXWz1L@W`PU z2vCx1n#3J9fk(h5>TRRn;X*?Bb^wxGtEYbSn?1S~cjo36V(Ho&aAL1ogl z+l3QcnX@tX7SAaPC}AYv)(@b7xJ#RJ66Fd{EMXB+4Dsh}1t0`R}@S)-=c*7 zaXwvmsy_E`hF&>ARQUv1QJ(k#*7zM6Zr>4?hdlY+ z>!Xd_95`HTY+gO1^irKi!Y@2mA|$Qn!b4>*qI^@G`JcW;f>zVX{^$!qLEBWC%UnOvh-f0^%ulN-jdNQL@}N1IrBcP+1j+&fVMH!qkX>0XJK4W#(( zFHLl#vGm{cj+>_tfzm(@gzBPky_dMiY$J2ofalN;Y+SvM%LONRMk>kSlxa@SG&RS( zB^yFhK-`|UY-@Rdwu$xa$T}u;dpmGFff}Bm4!r0%(MDPbFio4B`?R`~DHo8(Lik8f z0q=DDN%;7ouCOt<#lx%urx!=`TNB$=f3_Y;-Fl*Xpm%Fgma91|mZ(fMV|5n>(UwJtvoEmTa3@`R6+3=L^huHP}1nIhi4p+ki3u%aaAiD0Cn1Ud+&ta zi^G+n=~=czx{T5n_g-PAxo=TN!K-3)7Y;C(&wrQ#9W3G$^xmjq>`IocFjtv-tCkJf z?}JO1T3Ne!i23ILRMoqF7uYqJb^M!8m7YY~cl|Y(BwQf``RVL7t>MD=*pEI10z|-yh zpLuhJN8KrJ_7H%|FT*k}E*+5C_b=FzO;-Om*T?`d4) z{FFwt<&pASr{Dz!n2bEN*ZxUI4CBeBb3X~2>(td6mgp+~LV4SKI3(14>ic)OiyG*~ z%F>9wC6*>Ddq;fi2oT*LePR}NK4=y)N#>`Q`xjFChloZRTQoO73%hkf`{e?e7IS?` z2ASh{G=fN9z2W!f_S)aAr22z50)cmL`5N55>#CCb2&+eBG6p_n2iZQjyb=5DCuR4E zYrh0C)oJGbM{s~CJ5yO_{8Tai`iL+nRjDEKKi5N0cn!)%7%BdqNg5U>t(^Q5bo z!_Wvm91!5K;V2jq_{+{3?>PTIM5^@vuO2Xqqkx&WokT{vjuww*c;|cWa?SEj0G2Re zhrW}hq0>sKN5^Hx=!6{-i5r5Z8Y)j>3rL#LLeC-IuM8++hYQV;ihJ2vC;tIgnCm?= zyPHLKB$0aalRwfxv&Kj#xL3k@(*4Z?lfZ@^e!4ih@BsGdNq>JX1aOMcX6kcA5~+!H zvdi8kF-I-X#V~@_c{DY7NNw?7802~SF6I&;1C{3S?%EpYr(o!9S2c)F1qY zo?v1|{&7~UGz>mr_KdA1gK4Yl0wcrfNz5 z{u_z(9xs0+g4)HBJ6-&2cHXlIXoOiOp{l^wzgN@xoiQ)m>Yc2NM4IK#Y)w&)E9?m) zdc|?_<#nY&Y=v&FT%cYL7D6oU?i5@I_-AwOp6d0#+ggCy6KV<4QUSnmvfd87)qW$l z!v1ZAV8%~RwzCcS&w_oa^+qqnsg%EZ_aKWcdc1kUCu_mLWk+r8$0T9h1(1PGv7SC9 zBN7OBOo)hnKCZU+bIm%hE$}2`vBiC!>ObNI`n)m9}v$OejVmvK4px&RLw2u#SI!(b^t8!CU#GV>H~{j{o(Dw^ynHEuaq z2LIHW2hu+Cg;{P`)jPxx%W}aT%sfsrpe*bMwaM) zuv$=2_U^8CG{;Xb`(UzjBRK46EcBQ+R5I#`hT!%k={dTDR!B1;0U%YGozP?nm`Aj% zJdIOjwfdok+pMmxIL6MO$FFO^q_6!gX6J3aHgv6(skZHpD1&GNW9{|_@mSm%kerwH z?4kUsMd0b!$=yVCh((S;;*FTim}U$X+^h5cVl}u{j4fH&U?XHyc7!ZJ%Cqx?mnIgx zx*b!fa-oKyhTOAGT7N}jp^h=zrI=e>VIGcFc>EJ839pqz4W?lH3S-yRwYAT03O*A1 z!;Lv^P{+4)cefvLPEd1{l%?8tZ(plGyIF_HDV3o=C0j}wY6LppI-hhK0+@RU@x+U2 zb~O3b6B4_MCc7IBE|$0c=bHmcP_lqnlsr_>hTYD)V=8brj-<$LnaV8jzp+R-{O|5w z-eJw$hpVGLaZ<_0vV7K5n_i!Qa;!rJ*YnzePRIbs858x+;gQnl6a>q@8Pr1`# zLehww6Ep^mhD^XuV%eX43uHgddaeD*Fj6?S;sT~QBMG@A^^b0PO}fN9b*GXGYJ%AW z-ZI{xc^m#%32Hq6Lt?oSZZUVHy#PX_!7+P`Yq)C zJ4cIvdrD)M;cGDPAOl1%;v|L4U)Y)5*Kr|os*3dFbRHCeuF@Nw3eyiBF84{B3f?H@ zj%|Dzq<(f|U}U=}!Oan>+Zd)Cmd>Vg!8~wLh!q}|`al!5I_A92lrl|l_$C%|>BqGR5vfZ*QjFIv zP2PCN@xC8gT1OeYM(d*~X!C0@ZRHca(ES?N&ufJ;{uO>aCRyaF>(xh(P3x{3lB-Gi zfKtJa8zQb2cNzxgm`l_#+egc8(r@;xH~1Vd8WHRoqs3ld3;HWIb$l=zt;XyPqgmKQ zRDFk$a8=+vsdCRULk=-*6z$tWx;%1Y1&*@JB2JZdv6O=gMu=8V z{1fEoF*qIYgnT3HRTw4eLP-Md&s!S)3Go@sK3=UGv!T!*0_Z}Y2lKsi-Nc>G_-C9KbVGg5Ct zJTp{UnWKk)iigSV(dDoNdT?3#cwo^iNHoEUv~L9%-{^qAQ5^+knZg1D9RL#!&`(f| zCJe$rY2jio8(kOZRZ@_#t+*C-efz>HQBN~JDH+xEPa<}!c|cja+~}Tb?f;g z31cAo_{92nq4w@=&R_SWeWjW#?aCUmh%+hjol*@S z+^CSc?AE+d9?Ya#?e`V}>zG zMn-nfbr_xl z6fhn*eGWHVs}NdE2J#F^vJ09-hu_l*K>m2J+4j~GBEOE*{U&mN5)%~A4ZqT`wDUdw zSUqHT08d+El`Mm_PI_X+zubN!2_|&R-4X>8PI&7dI3-|DUNRCLzQlhDW%$!SjF)*3s5=+1YnANK1k~3Mvj}{;6TFWdV8%_AsZqSI{OU> zLdD#BMKc$P;=QMp-+5BU=}H4?xM|x~+*-JRksTXLlSIX%m{c*Ve*Ok$C=~TV&kiam zdLv8~zzG(e)Itc#+)inb@lOXQRZeCb(G?I!^lTMeoVidBONv`zi*} zR=s!rFn5#>V;1JOtrU+r_(TL4uDeSlwcC?*-vCKUzf3KO3w`y;EPr}(q}z5{>*)!3 zVx~;jf&eM&$kcc-1r%I1F)35S*boaT6FO@QR@Fq<{Nk#=FDDATeoxYW`Mmesbnqlq zI5F?Qc5mKSIP7r!>%8uHDW)9qfabz|FFN-*k_KSZcWsuq^;5ysOWHikqDdQ()%QWp z;%wn}#sk{8%243uWI_W5d0d!45{6-=PC=$8k+i^tU?BB^3Ich%)C5JHW^@nlCXGiI zen;dQKDrW$HN;={ZS^FU3^`$w+D<&Rc`vHPRP7i|R?B1f9VEhsTKQJ;c^Gm3g~Hk0 zO~ukkEV?qRZ!#_2maGSk_7l$q#h$Oc5eKV=Vrh6`#n)0IU4;94`biWc#>WNUaV`!+ z^y6=si^^@nX^W1Wt~b7S%>t2{?b1!n&1>!ZLPB@ih)Rmri}GJ)brt@7O)_?kr~w{7 zxh^>eMYv+{N@r=~hn2bnmK*DA_pG8D#iZ|o9nk6bdP0y=elPWeeIoA4Zyd))sD*OL&0e;zDyv6~gj1Wu6z&518Vx;{Q8Ya)SCYa;k z45Ol%nn2z#tKFirhs)5>(LD~}#HxMO#jJ|vlViwKMuXAJ-8XuH4!`!DE99>ydNz;~9ildY zMw^51d$cW0x-r^Fy*D&f+Y49hRbhhA{jpd5Z{JzAN&PrKy>=U7eOhInGWf9^iDcNW zV_w)Kt&%KA-E&1JLRH=U;I^w<>#2}KNChGrce+|Q~pTmDSL1ig9nNG$P3qoqz}nrwNQY|GJA z*HPO!i)!``xfYKoEpQ)*VN+W_C!TWY5U!`jWgEYhb~)Ak{A{w@?6*dGbGa2S?sXU*r^g0&`Wp{ z=kEt#y@t%cPVPPURunwl+#^mJF$dTi&`O@47f)uwcpU00mzR^6?+-{$u8!W8)P7)! zPSdP)QP$LFPya-!H{jh*?b%0th$c&YCxVk*K+$@{Cv-=x!X5FOOj;<8zWdH#RN>le z?u+X=!A!C{H=EKkeF~#&Vb0*dTwv44QW4dB&KKt{XL!D6H#loWsRKq5vFBu=nM%dM zgp%3D%aNVoQ%}L2=QB?`n}9=UQ|bAn!Y_1Zch;v>6Hv_TVV%4$fPOV$wGxtZHCNBz zhhrW4HjC}Q8MemIfr=kI(aGG&&>^QJ1YsszraiqI=Lw=AT)h)j#0YkZExXo}ifS7g zN1A)R8(ijjNq+^iGmL`ggB6ti={@q!y77g40p@#>u-yq+^*ej^jQXd3tXaBSoLNur zUOnqq>!9ho-7a}Ch`GBjYpY>=2<(0p?wi1D_g`9vu=3+6Vq(QmD&lMuMQ0OsN$Dd# zK**-P6zv__dDB=vSAS+q^Nj{R8F_01Og^(U*GMk!>3p}xX@fSpCv1gd718TqA?N$6 zNEH>8Ukbs>(7lfJGxF|g5;>s!?W7FA~~XIi7_ed2x|&?IL#??ESP zhrxG<{-FuTK>tP>(Mw41O5uk6#o=GTvSkfBk^9nAu1$|Gypw8rLJGc=q3R6sUS@bY zEWQaG?s%p}mUbf1@F5)P7rf{5yT026mF8gQ64gTI9BvlS@4q+%Pd~|jS>0;OW5G|c z&m^0BK}BsD;%RWExXbltI|XzNR;7~uf!pPX+CX(_5CQalZ7LGL*0dGbTG-3vB2I$8 z^@5H#EZD#VV|sXI6dK9EgP({YTaU8#kPo1S=G8=8F?+c_W{nLQP{C4~8?(p8Hlq|Y zR)&QPt9)PI6gjP$_S-_?q$~GSC9yR&(hG%Q!raY2lbVFe#h)2F_of=+%jOP#|8D)^ zqBt|ZXSC<|H@V)Xm~|_*BR^HMeH8!*hFz>9e+{mrr%+&xih=|i_PPstV$19Ls*)&Q zZkv$zaW6GRxonRUX`9iu+;H;4gr|E}YL<7FSBM;O4<5dA=~-#RlRrAbdQeLKd#ts5 zm~(8WqVom?9`*r@##nPNjnvb}=72`m^Quqd`1&Y}l$=u!x`FPO))Y|TiP>*;cA<~T z?fxh7E(nFj$)(xg!s%wuIeq5Hx0?HX~VO#kDmpMMS5W(+E#y&K4 zu}w=WVqF&X+29gHK67UaOy$$}m+6DriPqdeWK6!qnW8rh%49D3v3$vGo+L#TEXYn6Fl~ z)UqoJbWD1}lCKS)&GPN9J20d{H`)Mwe{6)AWvAn|8QoYt0%E9n4z!#;7Hze^1SL`3KBWX`<<3ucdG*rO?)=5ApE6c!XQ z-4BoJjjk9uB1jQlBb?C`VUh=5*#OX$*ItzNjW$T!>>oVtV5O;{qosOZjXyf#Qom!I zS4T(qx#KaNu`TF|R6|d8wNXqm3E5!yd;AfLRGh<;R&*?1n&yBCHfVm>hm+vm(H?P; zNUb(OAvs@3}+I@TB0A2v%#)*bJAUf;nAm1H7)VGLNe!yN&Hp607Ihkw$1;wvlF0BZW zS_}d6hJsglx&3ioPosra?j0Cj{AMo;HtdajnLTFDuE_)`h+<2S`0#rV>& zip;?bd9SC<%A;+c1fDg#KS5`C#1DS#TNqSOdvp5%y={xA;MZ~-ZE>SgrZ}TjhRO-W zU0nFI{>k~?bHAskcM%f$NP|d7he*fJ zol18pCEYdi{+|C@?>E-0#fO1=?>T4hefEZq2ACGN->&;zv3{pawDn{MssEW_&Mf^5 z1-bVOkTzd=U$0LD6hzJ-RO3zJwTk(LxH`@#$MXXOfL3mk2(WS~sJ%m@xeqBq_?f#N zzD5}aQlx0-QU`%~qVOMoUPWr`g?6h-F$to`a(^3UK?sx8j(&D=QL5@H{Fq)>ge`~O zQH8Z}UEy61Ro$}wk?Fszre-37WwK13f>k&7$`y&;ITSrcIPe_X1ToX`n{G~l60Fi=BYU_=yf}AD*fhDuHb*H2rZ{hx ze=<$t$o85t(KO{WsRQ|5r(qNv*&h0;WTi;<6oL*vX6;55s!fmq!!2!cfkvS%{*61z z8u&jisCMs!7@OXN9yTpX&Hd2}o>C`lcR;u5nBHLVt_au$u~&vv53t2oDZeJ*>xO7P zw=Qd@$fX&k5o=a51y_`UUj2mqTHo0;F&<+IwlhNdTC5L>M`0bule~iXn?k0HwgQTi z>o_h3G9H`2n*-G#nph$SloORez-t! z@Qg6g!D8{aaZqF+3SPV#JmmhED6XSg9$(2y{VaVv%-VAG1Fxs4A)-f%M07-RmxUdh z#cyv(D!{H+mNgfdR0)w&8dH)a9rnK6yXU9s@xa^rLxgHSX1T$$X#m=XR!yU)+A}m^ zwt*nk8Hqsf_VsnLpwZep2VjO2r;-?|Hu)pXc=jHzI(5);KK*+HD@0E;Ek(udq~UP8 z&gXjb54BXVPre_aO|SO1jXSd~Nmba)AF`S=$n88T@u;aXpq-Ngd)t3=LEwF#q^Pub}&j?Sk382308VX7uZ-t|vqD zla>~86L}kOBMQ7KU3x!*fcxyY5!dOZrj-uSjH?E*J-$tP+G`t4vMq5kMUMeY z8*q+{(PJ&%J3pb{LtMDB=Mr0xLf1(Q##M(^HjKB`KN z@dK#rudK1s@qDlMi)^2EHQEI9- zWwjb~q=VvnXz>APxNpl|5m;lcL+_BJ0MTsNCG9-&s6+OC4n-n>NTrn60V8mtNqkFWX;8=JU*Tm+1+HH!eYPdxJ0Q4!6yVjT@8d z1pFswW@n>?7pi(bA368VSFeOJfCkh-_rr+9#5ev|md)Ea8?9JgUS40*Drmn!!TFan zQn%=t2{C3=W!ybKl3m(+)R0{e=hht$Fbz4G$dMPA{W~cuYPygmUt056fQnH#GGG+F7IyTzO%Ex{NIUtR)_-`mp zp1U3>k?u5Xz`;gCNeZRHIHP5%al6D(yr|+%J3p~V&DO~QP^Qw5)lhyfxl}h)SGqxp zYNSC?vqQJ_CD7cF2qZe_NC_UB?K1?^I?9_9${dV+?yDTXAdUx-@psXAiaLnR_hN2kNabSVq*m^oiY_*;h=6eV@mg7h;gSCzVU*N zy|X+zZ6Fu(C-ED9k9Cyq8Zw%1DkhQa6^TaCe`KdbrG5UlHg~Tsy~l`7tDXLW+!DJf zZ=iKAH)JPK9QEJ~>C~*#26OVq^DD$Hj^;ChiF^I}rt}Pei{(bOH@ezV?fwVPPy2tR zn>~DdF)AMkH72Jm)Ma2`v9`)F+f5zhJ1C?MO1tJJc?x&Qtik&hs8cJ*VH*RNEXTyazjN%3ijKiAsVJKncSr8iE z>7pdw$UkESW;5HBXF1YO7@QLmD9ELl=v>fB4YTcza;Q}8(z%WxLxvd%a(MR<;*w~7 z6^5-i&M`iqM-%XVLhFxDnTpNi^J{P4_!&1G zI>X^SvgyIM^M!9C2VnZ_6(B$@%W+GtdcCcKxFR>cFJ}bUr#-(Sx{IKoWKE9u{$uH7 zE>*~T5+4hLp=8%?PG!Glfr`fP&S+Y|+i`*!$&OGaW<_%m!jo1Vw8=htBdH6ZYadj3 zk(9|N5FIny1_5k_mu z(_>wW21E0mG}gPkFEje^G_%5f$8%i8l$1k=f-}V&=Dlj1Oj(fGI|wvBheJgY<3>{P z2GR}QgNNLLUCmgqg%ogqm^osgl3~1c&Bmb&E?!&^NKS$WIUexuFV69X?<4jVS6x(Odwfac zUpzT5j-&tn-Dpl97U9QF9`-wLkX_o3%z@e$qo1!EyU2#*7%%el(GEzKdGJ~9(OX!L zCN=fP;1ED6qnTD=4I2(p?D3E~X*+r}^t>miTB*aY=HygmB!Q}SzsIvo5`*AGC7}2` zFMCb1hHruue}%3%S>8+H?R1jP)9DxN+jdn8h2!r!lJ3~55B_^WQjww<(lwbZzOjxZ zd>qV2vAO_Mbew-{EjUY(l3xKEF+?)Y&KK1HL`o@?1|EF?Utsvk>7Yjq8SBfL*5m1KglroF9Phpg}-_yvAydx6&<%Z~BDU{=O29Ie=#oa(N9fi;hS^gF=%;Tyu*v|mjN zQ)arr#`Ih|8g2@>sT%ag4yDJzl~9;)wE`E?qv6~i5dW3#$i9h;r!JM_I7Aw1I`Byn zaG=AvH;Wr0&|)em(TYOO1TJ~TjedXvi64^_8A4m!y48#pub10>w`!y<9uIHLA_DaF z@TtZ^{`+6sb=R!5yInU5Z{fiZI)&M_*>W~rpA&f_4NL=Y;%YlkO`rE%z-eD=YHFa5 z-?7cTE(^a?N>-qx{Gbhs)~loqIq_Pl|9A2@(;A3X71^R4N?r&FoR=Rf7NSI)UxLEq zfH+MUuyrQL0wC_M>}~PNWU)}K?Ri?(KKy$NLzy*8VTe{C|LMSES(1|@n2nEtu}2}d zbtoZ6!$ubW!Ws{kidg#>u=Rh^Agpj^E+mRRfWyduBhwAKGJiIpi&UAE0 z%V9fcK-2b@uFP->9ejw^;VNL3GF-+LiP=dW^KD}k;Oo$mBmbj>%EMXgMfk7o^Qv`g zeI0;X?N^5)Rdu?Me?k1i7m*}4^g0jiaVg$+D?nbk4nTXW;L9KIeOLPdfeU7g+V1bSWO-fwnPGXs!KXa6*Epi!cwwLy*GP zlJs^&qzV3qv*T$eDtYNQ7JK=;pt9Xr=R$MiX81d4NRbrk*7;%3Egv-EWAmxPLVF&M zTG3e<^eO7A$F=yT^CBD5H!mLmMs}wvo6$uEgOx=YwpcJ(iZ-R93dXh$HMn{>5x(s4 znHWRf-Pnww6zKq;v~fA}Yd#dK76w_pEc(QiOfW9cU1g_jEHEeU?xmeH8Uv;DD#ZBu zC5{YoORFb%bJOeQU7nY_F7NAc*qyr#`5MA|!QU8{o9Lb^o4Lj$M`T<2_}N zJ}_oP^d@%jel_f)Ww1jzE5yr-c-xRDCv;SnW-$nIs=!Y z!E;>DplFnJwy)#C@BP&|q~C0v!Zsz$N%Al6@UDF3Y6hvf*y0d>WKu-!N77Dch@r;y zY`k$mh|xjb^z`Sn{mljl?B z9+W72{@IxMsb>G-du4%n^Yx)AC3k;9-}%}HNs;JV+qzq;I)`K2U=lqXRg6BqnadOJ z;^tG-mvWW$v{XdE|JR1RO`}m!Cp=khgg1c~bI2PS_pasmsG#Rt5~t$)Way*pYby01 zmZCcTx4E7tBS00UFkY$dP==QB^8j=VHUi78!C>1EZ|>xIK!Qv3j8LR~ zkS?^kLTEEG4oOGFb^A?a{zqX%NTz2MCF2J*3(H(8CaR@Dd;o^%-N#ro-ogaCUNd zx9-Z%^3W?0ie%d8nJQRa#{fe|HPEJH5Imr+shZBG2UVqUr?eUG1xyH|OX-)B$3$qV zmeUa-&_AW`|M@$-OV&&kW>Chk;PGXB(Z2B!uRq$ggN6ah^=+j{QHOB%akc^i_?+sZ z5;AM_zw`-0Vb1s9`_=gY3YBbn3EA>sI3&26ZX}K93}=5_`z+@`j67>qWRovOkz!1@ z4h0S!z2Dyqy?tg{h|-S|lmtO%Fqx{k3WGyy?0UPN5K>xK9ET#Jw8tEyL^$_#k*1&a3s%fGWDZ78 z%#ewl75vItg9n?1Q%;#zgA_^|enX2$juVK=~X=ee{6BFu-YjY9roF6%AI^i}|#`kQ7c93CaFt&A% zXu;<+SmH%5Vkb#D=D!}EQFt|;x!@V=@Wo+@8pCY$10F4)$V*hgvZ0&L#hxTrh_bN8 z_#|j_jqz{oCl>d5fOJ!56TZ!RHBn^TLP+o4SJb|ar2MGA^eZW^#cAfc(8m1PkcJY4 zo9Om-LoL}J_R$N0&YjDjSs-5FtW}lOe2`N!?BFmc!3HE(Cxa z@6Y-Z$kYv{vHPX#F9~+wnH6uik3PdkGr+;-HCq7P!)s!+w`H!A?Bg2iJ!Y9;ap!YUmWrONt>DX;B*zjcTM`yCR?j^^~N z&}ilv37*EZ>WASbWPqV#`TG{T!xiuk}fz-{rVXsf*qN2y$y7D?5N(Q@%( zl>&fcrHg!&NUPdf+!xGbpT1)=`#*tyPKX-goJ;3ksrd1WXP9B8C& zx~vWN8Q?_19LPfcNztRwBO)WS`6%^y1X9!L>{j=tc+vxhHaz$f)mnqYl<>*Zu}k$C zGGz~a1QXj8Ahe={g0vTJV2kDB_u(>Ghe3lZ0I6>9z7zdBrw9gM=Nvu_p8?K9(j_+q zM=YXnF{Fw5T$&`#{P{t>1p!wwH>@W>OR@Wg@VXBA@c3_~VwrG>@1za$1?Tb;bX|B) zG@Z#YOfm9#J!fSF-^C97l=GvBf!jqr;sc5Wf;Hsy@AUM1JfV~yZG17t0T!po7v(?+ zfX*EDzS*8Im5Kv80fH;vxC4dR5M|aBWd@q!?hE4DZM>j1YG4gnDd0T;;qp-54-Tl@ z!!!FEG#0pM3DMh?!Pr0S=cxs7H2C>s&>#Z-VB)yag*?*6u>D1F*DAzbh9#un+I2R9 z*GVOTo)SV4pz z?=Das2FZ*U`nIB|BiCMjI=g90h#uOhsCo;{D*d77erN>98{qK0n{X$my`ilDJ^I6w)A;TvgpU$`*{1bI+V}SJkF(? zQiSf*9)QTkTPO~V${%nR4!4}7nVCWKi6&~_=#5G_WNFdEu}srdj8yg)5r+WIxd~3h z+z#^PuvzUrr#NK)3dX)F1UK^07M{3JrR}ASB%2HDc<$~BLYm*k1U4&Eyf84UJH0v zFM%t$sNip^kLrT{Anp%i5U2w+jpEbo0o;q-CesX=+{b~Igzkx0_7pR^JFhW*|1it6 zQJ-uV$R3pgv4&RsWW#-trsZ3M*2i;J4{Im>&Mk)QU5f)PBXW7CgU*#)rm=bTdb0aL zc%JkZF&h#RfJ^NQ!nI^*loebXlKFTr^@+9Z&}dp^Dn1EEi%B-40SWVRXP+M<2z5{L z@&A1-j@TO(65YL(?9a>i0mJmSvbH!&xqp0i_@>MFDWvQ4Z`i3H;QbXwo2R-{sFdHW zB<=3BwReB3gpNcCjz@{ei{}OWF)wqU5ZnsTTkddB5fNDSfsJ)J|ER6yX*BNq?_uNq z$vRdaPud+e2Cc3u*YD0xFbSWn-bVw;%kjS*H~Pnxzh}9YL0`#nA)r8Z#>eq~`L2mh zVCE>(8l=##B99DlsC^f2xGE=>hr$`_gRh_%EO!MXdj2^2k1*t2E|I1cwlc%E;lo|S zVtoL!Ma-)atPQaT*u^88b-{D9@jKl46ldq*K9t%e7EzEL#R5q`+(YVP*H3#nP><;9 zPaUsw>7;SD@y>gRpK4A~IisO$bW(F*ZDpvcnIOaTqY2u27s48_LdG>54^EGtyXvG> z^`DeQ5{UZt4CwuPMi=zAq~S+<0OBC?cqjBYM00fMtPn!AcIeU6~esyrc^FN`t zc^l14V3#n|)7J!Qj6D-A%@-%Nu>`lqR{|n?ngSckImWunMxV36+We4CVVp`@q;gH^ ze-hyYt_5L#1`s=mno3U@1hZEAt94kPnmt3Ze zzt=_Og6N(R3Xl{UgJNwfc zWen}yToQOZ0a)wGNR`!CIO=?7XnT~MyC*5=>9SXfC^%SV*Vt!!Qaz^&b+a~YdPzVq zK?r0QiHy<>6S*EeUy&_r2Ynd+_A1y4h)lI20448Go;n6n9|4BvCmtYKgi9Zf zSr*gb(GeyVAj7=V3#9G~(Tp{oA80AU?W1MZh$^_Q2rMW=VIVcrpALc_OLs(HCskvI zZ(FHpofm}exton^a^IMOXZfbD-!QkWA3y|`q_(Ab$yQH@#1=Y8`_Ghq$}pCMr$>kJ zRg8YiR4k&L6M*p!CaYMx?x)G0kBGbUng3>{UrR;(y&d%S%tMOe9fjL63f37S@X5i@ zt#Uf7Wwk%&i0#Mw1pD~OdR@$r$a+g8(7{PfY_oJ3L=H0W;%EQ#J1212(;9uN>e8f%Dxl}Id|l9+#+o|4ysQmD3f_w2E1Ds-ts@JR_ClwA9 z>7@k{Gczm@c~|MiRPigWy`91+YG7T3R1Gz(=%XH(Ivmr~nlZ63P2K+7^gTc(mEGad z0ysM5XHHI|;&}A`^jUcQL9CU|EkK;$Yw=9?8%nj#GvB+WqRM!*m|gI=84n?^XH6hA zH+-d_{^53PbI-kwpm4Knpxm6c7c-EG3Ax{rgyQgUdUZAY?_V1MApsivBvPs>(Y*=@ z8a%*}1p9aQ)$2D9-nTp(zcc=XU`+h5;luqdo9D7by5Db5@<3}2^|PO(S}mz5DxJLw^5 zO?0p>U_&L1?BkDM7qMDq0GMM=cm}>4>uOaT;gl$b<;oD<-aYZB+~`II_6G9=isb3( zA;ZF0ub=9|3U*+iXRThcK<^2Nrv0g3c1Nc5=lVCYGktGE2SCli*HLwL_4DOg>{rRz zs*%zz)|6Sz$xuIj`dH_Az#q{V6^JpZfRa5hGI9S+L#t{Bo8^ge@fUfrq5A~g?7~7A z`)3jge?~~)q~)h}pCE*-^kbH&FIt3R12<;XM?3q^;-?T$z2)-?BG+TJi3gDQUdCXB zu-88D7#ZaN%4w)J(GmA$mkfFT{c9p7S2@&P3&6zu=_n39g_yhzU?6alcwFV{fcarr zoEu_bZQ(0;Lt)r(Dtr7G)5B#NsxUcPRG!GoAr8@(tyPtKr(raRX`4Cba5x5{u_cL@afe68JxY05A0oVB5!!hgE@SWZetioxsKexw1*-1_ozId7Fjw3W#)*wr4$^EMix;A_jlZ(Zf0#-!z)Dv_J; zATRdubTfkMaZ1Ia-U@;|@x$f{<_~e}E`>r2Qq!^7Xxd22Zr>hVj+gGk6AS2M`Nqu@F%Ju*2-a@PDQ%i& zPPAd+S@rw=AFuS`jmuvfd=__Ai4TBZ*&AEeQP%$n%;@qauM`k_d1ev&2zdH)&o`l1 zW3y+pq;14RYcQa83c3_}`qOI7!&!Ni`BI?>5!JeY7Z?Gc6H{H0%`0q9KkY6VyIfdN zAhi?8A7~*IM(>c%VTw4|f@nzo!f4ES)i)_15PH!W!09APK!(;mz3UcfmCTovFd&u< z*gO4{1tV zK^g!ACok2beVTVd;!jX6LQG_$*!*Koktv!1-G`b?(hJg|PK`jkmj_V{OrtgYkDI!! z4t?87bR&kF3B?aObj*yHAf$iZ#nFVM%&GR94RWBN3&-B`6K4-Qfx7{N5D^=>l?dz-`b-@Dx?HHq_y`^Z3(tv_`-P4n8%()t=PWcYQj zREk)M!62-Hz~%k5&PVaCjG_u`f^aCX9`$A3#<+90Z!?#4emK_UWB?%^{fw7uZV|k1 z8Xbv&mezaP8%@T_Naerlw)mDgT7r}H!Bm~?n2w|1&J_MkVp4gwEAV5DjT!#hRV(Me z>=hhNOHFB;f6>vSH5ll!Tt_`4R_TVXY0|oVBn0AJdOF@sqQ$*{20AHHDayh_#+41t zN<)svgw2+2;n8!jPgExJ5pPLP_ipCxB2h>){g(V0jE-pBM_<9q6+}pzDESR*prc)gcjjU$c}${bumPkmMO;65)4rzlPJLW# zw3k0q(#k6!Fds|*g)>PpVHfsD$Cr?x38rNL9^y*rRtT_P!L<8C>6_?q4hw~u+2*4&AN^bSDOl_jRcZhboqD8Ld(9uYzL87)@Lki9E&kuy#gBSk9;DetN(m@M zfSx2tQTAvy$E-by=85eBAm_n8sYuc8y~9A0)v6 zoj@du}rblg~w!cYA;#f2R2o1BrqlCwRq%IZ)UyjMUv^Kt3?Ls+wu z$3~l84rdOhITC5v{d~#u;aB0X&3mXErd-#eOK#96WJT$UJ2nj;c^p}44`|kbHR1Hd zI%h(Q^E+s`rorc?S@#QOw9wq5npPBG`(}R>fqu^S zcK1gFQP~oRc7t8KN|%!w*{B9C_|>t6GLZPNt}^+BdE6@6i%Gz$yphzGGmr5_tKul zNsYU!l6vfwW$qrbwD>5vB7rio57mqF#D;U*B?-z zL+rJH)UNR;MY(_T@!5-#oFwXs@F{K^ZoSUH^R=$w4(N!i_=Nsa31ivj1yBHXwV7;# zs&bjo(DtT)>se8cN$}Tr-0$Tti9~Y*1;GOWw_DL?J?S8DE&Md~j1tf0m-c+LJUZYUU@|z6#&5fGr;&?C!7sOy zPLb3(YqtNfnJ~}gRHW{Xn<3NM;xw{)f2|E`mXAIGF3dqVE|4bZYbT&8bFr=Q=eH$G zk?TvmdPD5yfaeC0qYIDZ^&BvgmVZbPL^gD^C-2k=OX|{njS2%q3w2Nn9mIaW@}2zs zFwI)o2Y+#bk+y7OVIXu9uTak#&=3*JO(%}=7gR%ZMbCVbY( z7gRvm+FF*3uXNaUlV{d{mSn9K=rsELUp--H)r(*B`KrgiaT89WcuG z11UG&$Cxkpa=_dE-$r!#IuW*fxm_kLe}`!#a&b%Vrq){;uH;J9Tml;#r z5dd{_Yx?m;|5qNudYV9EQ>AQoS>wJ*cD|=(M^~fKa&&E5 z_{LUoMrvZX3a5&ml$*jYQbDgWr>keMF#~?sp<)4k@)P-z8xxB`jL13Z1bcXZFv@A? zUjxbJq9}jLn-!Yyf3VZnB3(pEh%uze+5poRiU@%8jv>>pHcAlIuZ|?vNZZ%cYj}XI zI`_Jo_p%Sn_&h$x&_r+X1&H)4V8p zZb^L61?2E5cyGch9;|PWmkvG_Q{wHi6UfCvsu-gzPgPNQwH-L*T#5=Y>Cqub7$=y*$ znX~SPckb&b9Z_H|9{gM)?yPWbkM5*Uf#K`!9ufpO$IhvSjC1NIxVmd48YMl zz-l*r3Y2h}J8;dh?xXSpx`x-*eWu4+mdMp?(N;-b*sU)W zpM+VDi#>!W`@)?o`le(&F7L+g&T=cw1eqFAmp(-E0(3tnqRW{&(sy`bkle z{NvEN3JvRY8keS+ImYSBb*_%5XSBML!arY8ksGi}YE^n!I^x4#S-yPJbxcR;y*vY~ zp7JzT-C&lC-~Row*lHu*CKR=eK%&A5r6%;OGQtzKj;c)nuy7lcjplEPcnOM(7w3rd zP`*fAA8wn8oQM^~@fewO>r3zD`RyRVPeUqoNAD zV%_aM^q-7tq+BxCqSi-{!ilSSU$U^$z;I|G=q14TXbU>l3K#tEBpi1QV95z7PhK!8av z;_sTpz;@6&CCv>#jp3IV=6rwLyqE3fMm8gHmW}$)($O%g!Hq8;u`v}9>|NY?EK5tG z{dYg@=_6z~zQ~N-VbJI<(T(6o<#^4#rKIU0wB$Or_-lRX*6-($-0PuxO6P1{LDJ@R(R^!G$ zKwW^?F}foNK$P4F)3h8vS}}fE3y}7PH6R16PDdp1%V}lT1iu50LA9Ldd(#f0YT#mL zc+a++M$SFSq5t!>WdGRY)mMj0u*c01pBYo*l{3@ch&(Is?eU*=@;5Was#tw~2Lbw+ z4y3OHSSM-P#Wyz=aKG={9*75&Sz+Ps#`i!54+bp?c4}c|5!PCJyE)mPcInrwz*pJE z88Hh`(Ezqnfd=1jT<$15#w_w}>QrRtBjZ$w{R~9Y0T3$Ng3A*0LH4yO*iFR2G8|NW zr8qff+plYBQld{&M>*p1-`}brv5+A>Tv79WWeiRWndxq75IHO>Z#nzs0mN|CnZxzJn#s9x*N(i|%z*hl$jXqzZ;d`*QoyRvt`Up^5mfeQ}ko~L;n^s+^;02&( zQTTJcXrBohZLD>t3UjXp6^EM}`5u<<)mhr2ag2fXI$*d&#ZR|DAhbOSR5yU+Kl z#Fww(y-hET-ADW~1r9V@YAQ$D=xM{dZ#%4}PSz0qms6+ldqF0Dc7CxW@{y1v{NMq} z*);epc9vHbhts@DxKso*JUnhI-=#z6d8^M>jWxYU*B4u%5u=PTt{|4^r>!8gQcyI! z)8fKIedE^c)CC^i3FPHwmgpk(`Xty{e&Eg_iE`MQ9V;P}M3)%05I9jOT=21J&i4+0 z-?ti8H6e3ox~I!DHkur|d!j+gXeI4SJjOF8Qhx5dq#`bH#%L01>rj{EuY_dl@huoO zS+4E;ix=Bs9bOxki&wixzz!gaJs;25xOBSSV_lSnVT78@<|iqu$)Um_jXpQwg1Emb zJDb-w<~}9e9#Ul^av@HTj#G*dP0Wpv!mdUn=77Hh{qGKGC8Q2(rb2cr;TY)a0oz_x z4+A>;OI>I-d{ibmb5gyCsr4MR5wF$zyn=C`*%@KyU}0r2L>b&68=c1TLHQiYYCgr47$ zgi3*PrL`c==YjC8t*Au$yl+2yULh`xS%KuK_xIDa$)BzO>q z`o^#5I-+GCiUeR@w{`KiFUgas;TrQ8RlH1hHa<27)L9(Zgq>S5R z%0Y{_G;-+MMziaFc8B4WKt>ttfguSon)=E-Tz@$hAvs7Ew)g0N_19$GcMHcKCb?4r z1s4%T)XNINdz-ABoWs`!O%KULu6iF|{rS4H;WXsoCed6J;0ZxaJl)#6fc$wI&zog< z*(~>2Wp#Pp4~ByDvuIhr`PN!|VITqxiK7E{*?4*1VBih;e=PuP${8B`_G}%tBceN| zXER3Zycp=T{cpiDUM06hw)Cj{qic!ULQKK}#SF_F)2ko4m54X0G1{?PTe6W+QNH&j z3+G)lneAifmhtoTZQK1X3Qlsw0v;v=dc+CQY)6;^La`l13r9 zXtgS-mqX^>P5nC?fyoXvt=Z+}zH$i&?hyjZM#6QJs@9Guo7zD^j;cb>0Cz&O7;t^kyvt;5%f!E;!u_ZQ} zeioT&L|S-*UXz5s_=3bo@gB##qB(kVwM(>qnvlW zgd2BT1mS!Nh)DiiMxssmVt3xOvtT>heB0<})j&{DDvquT&(t_PwF6OLy50YX=5{G% zLi;$yyQTb1RmROR`FP`=&B3LG4x^<)+|>$nAUd9(xz(R<8RNPa=r)~{Oz?7ma^snn z4IBT26oU0L>p^0Wd-uT^*QWl8pc;qGxfUxO8d^tk5f`*Gb=l1=-9Mg1engW-tZfVL zE1O1sOR!`6v3U2PO&EZuF`P8!I(Zj1%ss zUVKKiYJ;bPONbJ8zQ*?ugDnNfFrsyz3dF(Hg4(L8C79wq>*KGvPyUuWoH%`3cV*<}Ut%KE9Anz0GWJeExt5Dr*PjzGqf+NI3PQ6c?KGm^$sfHcGmh{B|8g z!ZguIgdkNXwO4PfU!fAn7V3y#II|n0d?>`YT0caAS3X+NE0oz&)?++ch)l+w{Uh}B))yCfF6R>tDVsJj?4Vf^g(PukUsoRd`oq4j$&_$8kNXE zd6EW0ZytTuS-TU66@}R+NbP!7;7v{Y8#y`jCkw9BoF0)8_i|z2)V(E@CC^1UV>7_scq{4?G2U0L(7aJR#t-68+6$! zfh1|Ty5f*xW`4fYVncE)!nPeWJJ4z)4EoJ*v(Q+4?`0{FNPoYD7bMqc{9gAai21{< z{P&zC#PPoEIVblwCw90GcC{W|;5GjB$kt-pwQocyF(QLi4*i>Ig8J=R?>zGVhBHR?*V4x0iSHSqHc9zx=KFGNcb=gOKH-&WyGrC z-K?|{EyeNFW0*PI!<#qBc;*U?m(OuylxBF@n5 zTI`}SGPP9&N|5dlgX8x*0ICOu)>&Ml>N~G@j~D7tKHWc3e%c|d;I}s3kZ*IZaT!CQ zrBuSjL`Sc;cO-_8Ml zVL42EDN>W#sxA}9xPtCkyqulD_EM!p*L+O<9XSO#UE;PQMEEUDBe*8LQulTGmxvB- zCj1wu`gp1MMe1>k9(L6%@rmCWZT`-_+L+jD)DN~>OyW*UL`CwHsfSH7kp^_VkCw8l zj=N+wZ&nJ1)mfbmP|ANtMl)(fi|6$fO&W>82)t-`FY$2ptjnh2ZucyL;?dhRuR=4q z^k({7J~kVQ5wkV2Ck17)ogD6*eZm+wEbZ~+Q4Db){cHeKHi`!wZhSfA>PFUyH2D1A zch2{Hcs{4_vXkAlBg+OWy#LM_2c#Qto5?_3_y3!9s${;8$?8esPEnGk%cketY7IPh zelJS2Tk*H_zSG_;@IM?i!6!nH4jdZa2whK+-0T=?4e$A0H#Ykrp7G8ut5-U#da@rJ zxyB!YXpgz!WMWIU+{4?~r&m#PhoTNezfrUhyg%%5T0=tA7Nt3rDBkXN`tp_ZdK%W$ zUvI6n{+-E#lpN;Tbz<`lY8pz8Zz`~BOG++H>&nJs(rt?{)r70abn8Zx5oogOq1#mS z|DiBvrKv#;Zw#)ZFtf-@!_-uXd{5W?U0R_5CCL6UV194i@NO<+P`xK0!E(O*QYQPJ zqxh8=cuTo>hsHQ6qz4?4f&?5ua%1t)>1-`jZX;Re;%MniG#Le6H%>La;F7y>_3{U% zKw}))?rBE$r5n;yi=DLxo)%)${DCe%ar zgj&CPLOW;;|3k6!DN#pKN3L{Zi+dIJ3pMLDb6t9}{1%TUpt-U~nh8hB_42sf(y5+< z8EA5Xm-EqUa57B1SR+Efzimt1a=kGpz6@A+(($QLN{(cu+PXdq&4YwSvcI)>TP@Yl za(s#Sn*L2hC~`h~>31q;+(D<}5gF~OBgzBEB~5UN7UtJ?J*asOrwwm2v4UqPxHIO#!?i0WN*l923ECv} zy`B>mb>AgxHRi(l)FX#p_>IO;)XVWH2&pR-Wx@HiP(2dp%ak10{f?TI(Cl{g2T$~__c4vB6sWd|dkh|g z?30}6vo0EgB=$h5Z!=1VG1TFbyO_xaSgmf!Ms0PBH@Dj|QaKSD%{Gn)_rJL^O}XxG)q z-RjSwmd%(NAPe(kXtk)Rd^X~E4bT8=vAn9yUiCIVdu}Cb*4!k`$!HrG2sk~kQ5U?j z!~_SjbZl9$f0n~*L6$_V7Ky#XAXV$fR>%4)iXy=wP)(QnlgBer=%I5C2k^)CfA1i}+=b}EV!NrUmiup5Uq^Ite$gCb@ z7aAFdQdp|p^4cte84`*6`objO$7uJqh^t$1Z+M&xMUhvvcA&*hlM}*uL;Uoq{|mUz zpF{}M?Jh(xZQ6x^&z-{H4;#PT9A7E+5|!*|X6OAmAEL6l{F|Vrk@2gnT6eL)_8`dl zM%oqyGAp{mD#NNkTd=2*9}o#V*6tA&rB#R(^`y{zi7NqfASA zYVw;s3^6a7X$ngGxX%~WS#zASq87feHBPbVw_TF%{ABk=AC`P$$IN_SGcwx!A)X5yrVxJ-ooN>Ea zNUH_m|3}kRctzQL-Jy|A>2B#zIs|D13F(k7kp{`3yQGyA7`ht;h7KvIK@b?EyE|sS z=l!kq{Rgw=x%b?C_SySvIhihKQxN|%<)Sd`;(z=bgw&d$$ua(&JQ;Btf;iI zK340#1-FPBFhUuQ>|UvE%?-x~)#oOHF3SRL5c-BSW>G|6M-W*$I=HBO9k?Hup5WwXV8MbGa^zGzOj|h#lIBoDMN4PxHvenfUXu??V`aNb{b|CMg1Z$NS?4jh z@^?l(p??{vGl@`mI(b|0U@v2$!;KW5Y?({$cc^`9O+9QRD>8i< z{pQdW8CeULmC!He1e|2`d;b7mLz1)D^?ezD!RSkq->#QHP)LTEx&O=)>l9@$SLz!z zZIRRlt!paP87de)OMN?KZXfGQn)Wg7haW@pzmbc8+fyxH;ec~IbEfD6@vjsJVrJsL zU+?3%mD-PEC5^xb?+042-;c#@L0|jxY4h5w_q*E-mwl<#t$XQ_f5U!L9cz`;)fioG zn)6`p`^*|Ixc9^#`g}~Mmohv_&%_>GUaiP@WNYE0jn_OUHdm3!fg5{tKtpT(^s+(M7_A>WzBNp1r|XC%&9bi3&~k0>DcIvaDbYlv ziD8Rr>M+aoNSUcRPqY;T#z>z8sgNl<8YSn0uSwp$hIkBfBhQczife?`xFK5~?{`!k z_b^F*FC71AXpxY7IFQgD74}Rn7u!A?hK}y;Vp~#9G$BOUgKTm{{zAF>RSVbB^ANHfa{o*rQzdbPozw!M$dr2=9Dzbog1 zd=J$#{4sri6uJK6`T8gR*^W zRL$mGA8)8uUf%p0QBrd4a`{2E%#`XW(!l(};4JF=W9N<1@vUTXrn~_af z&EZBHY*0RRZ)vObVUXXcjqkUk?-%`A)u2RSN$LJsE!hH_%N)Jy@ay^b+{yCYgliJ7n15g6$9e)#rX6}A zM>74>3MY0v^C;rv&Ve0LVp{8VG4Z#3WAZO&Ru%qO<~^es#m&4CGxSs3+_wk*24kf*=n>_@Z>l0L<@vgHThFmP1znC{}IV_)cPJrFsp|Uu`!s>H8jEW>P zqnNv}JU%{5E*OFjG9tE|ENrO_?_)$bdpQ;KYMDLx3|0fsXg+nP_W!*0a9c1}D=T&L zq@VHBEh{!>@VX(=2?;HyW`?Y-o77s(qO}QmEIJh##}F__%-R#q;4(J6Ap49a-uLwd z19J4!HS&^X_`OTt9T>}Tkr=R8KF8ukhkHcOO`ITnGzHzl`aE8CUeBv5ef&X~=N5H`4?;A43 zF2c`^;|f1ge|?NR*Pt49UlKbZp@dKwN~gkJv<6%~ACnh!T$}sz13y>BCtZwyxNk2f z$f$-KJH_gs-Os0O)E*4GasKeJ~?e*LMSX&wDQf73=fK+L2_`?!b^GX~ptPQ`X5r z!m;lhVje3Jkw()d7tCGXXi=%5>PN6|7F8`n-e#J)QiGmTM}1e1Fos}tz6ZE5vh6Yx zZ~{>^A{LZv`DgB=C~Mq<3Z}geQa@fGj9q#CA`SyTC#Qs!lepb2)b6ZHz9OA8K7-F- zykU+jV&a)U1@5u`?W^O*pULh=ERv)6WY6rY9Jg;~x)~JrlR!WRu1C~hcQJT)dqC)M z;d^3zT0|b?@{KZFo0{X~pFhE{`D2P1ayJ?HAIueK!VOMoZ0j2}p8O-XsH^Ih zdM2Sy*aoX$(iaKZ4ZjAiGGt8tc!Q|Ja1JFSh3}tpQuKQDm3*L;=hrq@31Amh>F7W zd;Ckteq?X!$QChYd@wV9319U(sG$kf=i8X0|- zNK%04Y#ax4_q{Z!E7E!E#3zcm=Jlpu#P*UKpE6y?u@t%7lRu~OgvSkhK-y^g;B(qp z-C40u+(y!Q3`Y<1_ux?8tHLRB- z1*(SrQ}cOD#9BNPWw4pJ$|A-hei4^7*HJ)NEYkPoHr%iDreJd(d}n`%xY5#;5Ra5i z(K1hS{|N@|sjM@i;+rsZCjJF)nBZBoesgPGa_ie=V{ggwmde`O(53Zvk%h!ks1gKh91I@;2nKLJ?1;mnU z?3|(&_ZC|vK$JD7IN~_P;SP|jTsP}G+BfTu?+WbyxIRW&HusM1P@4TDSj_mid0phS z?2#D&ObSdL(u};lS|Fh3$o$NuXbk?&W?(n`)HI8-pXEZ;re{aVM_tdNaz{-f$eH9f zI>JZOqKLJeX<=PN;mWbd$18=%HI2X@ zzYQ_gk=+F*bp^<7*NDRVr*=$Q5ht4^C8F!dJ9d1EU|QTgd%>W|md+UGnaFS2F8hsG ziKTDb0&6iL>jZRf?aQ_H|2xa0cR`llI}cS{Iwf2q?NgEpUkQfCx|BviltnTyvF)pF zi_uIU;w`otf7aTc-bk>*MN11hSE;O^u}7^1710&k}~xkHs(TNgUfHTo*!~a zPlDq{;l?xEei5v!&ulzLs@ecuc)M7XS=`o8DMN*;&GC1NSLd;9_-Sq zVDVh?H;*djoiIzfK=@5?KAfF6e!semdO~xb?lg;>}ZDWtoK#=MCjAY z;gI}MS^iY+3U8-v4D=FP)NcdGrsB>BB0Xmm0NUAe)|k*YXGOh#C+t$`_^1DGxy1l7 zDJ8MaH9VLUsR~6Yc80BQUj#9g^B9nv)%D-}MER!%Aaj!FR=z68@EjeAm7-y-j^WFJ zE9m9R$ zy9y+`ZzvZKcl^R0cl(>(8THdJj~>c2Ln4a6h|s60&i-2Pqs8s*uq)~sxyRn}tB3Vk zH&%CERJ4V_i&s8~?fwL_uKapEmp|**srRKRm$Yi6Yy>AVJ#$}#0pRRU#b^z1DZg%6 zH(Ue%^cKrZ35t8OPnCyu?cn2Z|ZXReOKra?*Josrmh zxIT8aA#Sa4gp4MWohip>8`^)ucim$&>w;Msm4rCej1m$GH+y&^kKoyZY~zI|Sa7i|Axnu*rI5X&K`sYb7 zKTf#%Y_+tn*XS|1Dxd;BOA>=Ei`S#1D$Bkvk2iPtlHc?jaf{lA)_l7$eWZc4PMaVMm9cZA#{y;OaKCm}l1 zkJ3df$U`U*=aX(Rvymr3E$wSH)oLr6@)ivu0JjuxjN8QXQ8nw64J%E*u)Dt8>!#L9 zoK_ubIK0z;q;>H@-HpYSlax3XIvOjLg>J}6?p5Q;do(-E3wd?3|5X)GX%bn{|vh;bIkLDhTllHPxprt^9~M?*tn z{lQ$pcb_RqPzkGLX%c+H4Lzp_k*((gJ*NTHcYX<3^}3i?$Xy1nEi~&G+pr#*Iw$S~ z{KrtaOJ^Aqv7@AL{4sY2j1a2bX}j$aqO&M( z@znnPNgL5Ol6?!!7Q!_mLkinG)wS&7S{6~&h$wIy=upzNtb=74Q$GkQa)?ggsf6NK zhmDdT-Z61u)N3>*^DdV1#Z)mW5exrt=M_cn2WbSmr9Vw|PsB<`#}rcn9OR7RQDgun zOfi_61~*aV-mth?X;`8`+m|ka#XT^&Pvy(w2;*HwIGF*SHZ5IIdvNySE~B|%v~0GP zGmo=ZHOaKBwDOn4Z~iO2tT`bwp6)?edrus9o6&WihZ8}Rc&l#JI>V2#P88M zJEvf-M>ZRxpL#|EA|TZABN{eO>RiN0g(8Au1H&BHcFtn?Y1kt1#7OC^wM)EV^ObOY zoPT0w@XsPcDQ;SU+5fKv;NEt5>mCnzJMelAcF6_wgpQa|nC(C}sQUnxY#S$uvZ2?_ z=MoeaPu%EmnbVm$fPNy|lOR%h%A)$p1DfbXnE(^^r!+KZ(+A(m1fSd>ECQh|9`t$4TrbITeqCPP z6x<&Bf=`u^+wgHO=@$d3TpvL_=Sm>|>w#FLk>Yeck-Y79o{02Ror>|5o4`n5ZKi;v ziTp2{lvja1N>FX@D)37RqTghAr$%W0je8uQ_xE-tJ`bw0ne&X%$c%2@?C|WYOS9ZZe)uk092ID zfBFdP99WqV(()u+V&?Da8ST2$Kt&L#27_d{+}iyomU0M${a_ub7t6xmt*(drMVbgH zh{?b6Z_5P#W2+%gL8N}=(c%wzY^QnZoHm#3b#8v9a*U_8DD!;>w+p_sjWRL+HSGM8 zwkfU|)&TRt7M54#pF1o`uzp5a{rNXmkib3W%=ZBgug*L%&N@u3VxQEv zK1jTX^JNU^=6DT?KWxr=4LaI$J?q7ce@3wDCD*%rC5G&AOz6Fk)}&?Fx!bW=@5MU) zZd$=Os}sSliX3)G%k+2th49U_nK%+FF)F=c*b&1NOH!!N+vfH?vRSA#@H<%{sa=*1ZIrOX6g)n6@yE^o5Xh%#mz&`ND?*+)7{gpbFZD zMajdBkiOs9^=N(`S%trS+xEG3i1L!zDf^0~_~l(FN|b)xeigQpI&+|pH4n^~bQ1P) zk4L@K5gk=eA%dv-$1#b%OGkDE8i&~Z(r|9z4&&CSqh5K6xz0kTWle!qLOyqK$y??b zn(%`TRek@-Vgb_<;C<@bX9AEQm7(Ap_X%u-1Mz|7@-FwmvSVFgZIblq12 zdn}LXo!05XKc8ZqqtBAd_}{w_JRX|;DzkUPl?fKiGL4t{EH!@usW&Yado?njyfSX< zYZmWj^X;l2)Y%2E@9itE(qv7+juTc(wgGpFtSbxGS$DG{k3?(!6Q)W`m4zeKZQyym z9qc4W@@BpQoai{~Lql#4)S8FLHt-&1XQvirL@cMnD4C9$U73Bwd$dQ>oUlrC%Hq>_ zaZH1xLaTX$2enMx;aylb9>s)5XN!)dtId(bB(1a>8SMTAwp<0}!jMYdB2E`_GFCpI21XJVOgds%b&14}k z%sml|XO!V$+=K$hEoQE%+(?DHfXUKf$Y3#R!?`G%2$pWKq{t+pUGO6catDV)j4FdtUpiuxKGlk zBmC7Ur(t$_cjef2F9m04BdkK5-Gv>6syS>U_pi!K^1;tWb(0pbfMl} z?5)KV=M~m@P}`_ugAF+_cbS53AA-rbqm-jNf_Hq@1sXla@T>%|m4$-WKEJ?hb{>=Z zD(a^o6FIN2YiQdOK08C6@YV7jtodc}(Cq>Vf! zuE>pM_JvDbA~}Gr<|(o^!C^FM_K@D+kgL(zswgYi;YXgQC3;MIb4(9d^1Itr*ds+v zK{MmvFYHQ;vT(sd)7pBMhv(goTXa$v;}>`Y1U5`WK<0}V89ECGA?TdjN+rsLFrt$FdmaQ^ZT{jd>hdO%_yw$- zll@z5>3Zh?&1BijX||a!DpQK3E$0a{v485)BAY7FFBEG&z|`8q2jXMMB_mSXg!B&3H^Digi}4<%L39!|_mJtfyK$Ci`%SlDkJ~?SVP;+nBU-v1 zn(?yN!9J7CxrSanmSZu9zs1fhLk_fXd#@FsBuHkq=U$EOSk9z=)42}J>9)S)!7l6% zTGRn8dZ7F^-q^V~^mFBRg*HXgxVGmT*TCve>lmC@R-t$B2qFgv$uKDGvMlj6btt<# zO17i{kYOTqz8lnuxR=zcdQZD|xoWA8{k;Wd3AxX!XC#CV3oqLdkeLcV{0-6!zrPgM%Ra;fT?79!Pf9)=N^@dG3x zgvc2{-h=aZgk*wK0o+Pbo8|mu2~)-uaejhF5%4wF;hwa{WLD> zge7a63MU){#7avPS}W>3!?t_zW-CN2Mxf!-p%69~_4+5~`bFcJ|J>yy*B@_l$2u`d#0Bs> zQ4xJ285i;l{MKK0WPd&z%W5LSi&lTzia+BW^TKf(=|xp$unrXjh>eplLY_>vm|mi2 z?FX9Yh3VUwbt_Q^Kd-rS-lLbR2ucd)z&1Y3Mv|!Bb%eez#z*OEOc1D02x_}G*|wWf za(fsp^^YkbOHTpFr@DyOM@l3I$oyz>HLeQ1%4M(FS3ZaBv5SjBLM`tF_db{~ znC@UYWZ(hG(E(NKGK|JxJe8X)^W!zrqaJa>uK$P(Y*uZQe~8}v zDb;C*Z_ZSZPB^-sXfMt`L(Dlpy7_fLf+xF1TO#<|dv3nBPSt>`_Unl0Z}G03 zsc(UTJwomrQ%S51xe3*Y-LfXh)ybHXaEcntL2IkvKuMWi-mlhqYY>uO_$K#aePx$z`GBOm-oFSY+F=1($pvvixF zY3dnwp!}s9*V1O;`xs7m?9r-%=(KSf1HF~uphm$r2Se};n(-j^g0myIwm=Q#GQrje zr|>5mmc$XNfUoo(7?OxokGVo# zjkXMm)Yic;xzd0g4y-%qZYSRXjK43$=>rZ!ht^cnwveVa?}dJUyVtV* zy%(|?vsP*URArO>={fS^j+P)tZwr_b1b6Mu z$_WLQ1UfxlMt)~%ZpA$fR>J8H~C2r_m^rO=+bOo)qaaSaOBB z(ixp|Bla{cxO)4@aHkydOa4{OBK&x^E`yFk1G9M3%~SZbH0hUu3-S1$d;7 zi~i(WYTo9oncu~K$_Ax5;@~+@C!~!dJJv!Zu4FM^k0ciacWY1C{>x6%;%Ur&g8o5J z{M8z+L1y7l{X!W0fDV9bUWON21C+?@vqd3b7XY^WugPSrAx2tN+dyhM-?>jcRt=Zp z`2S?dZ_5bt)@zVEROa{4;GTb?GMHT35lETQdkUe&`XsfNrf};67Rio{HhSBB7X#vj zB35cb#AJUM_8V{+VbXm#=(!;vEX-8`;pu9$tizlC635KNW*}WKWUxpo&wDe9q0QzAy z7}+b34Hc6B=DL~#^g&wAdE)o}d$PFjr}v2IY()%|OVTGDoI*B^s8`_Ozq&Xd9Py=U zObM-1*M53b49reRMWUpfmZ7Juj_gg zOeu|G$+`bdkI{1PZ_y=m#LSJ4YUvo-1jV|Q zk1lzX%>$DQ^%Q>q+d*CrF+x~n4ON1aeuA-|kEJSN>roajnXYPJzc!5jrG}?*S2NI zzZU1S^E)rua#9nb55!b~ptts0lntmyl3VKS$lC_3mdd8iHukNTs@_>eD z0*JkWx(~N?zf8wOxg2J6==iW~&JY4|#+K7!5Wj2#WQlAM?~G!uiRDSqnQm5YaI4|< zQU9}ZjDn2n-sXHdoo~87$SK7iLk@kYo;?H$yYg!~hi{1GN_cA^iUF zOQ4RO9amDu^LPl`{)LX{Noc5WL4v2lf_YNc*)vN>l)=b9@{7c^xo$aDPcL$%Y{Mp} zi@}fg+q~6F{({DieIEEstVPOH_(QC^%)@EBe*^%WA{@<8kypW3GH{mb=aYD}`_7;K zKf*P@mQb7MTJw?PE8#XKj*9a2l(cQbCGHSWc4QI%wps{BC-R_OIK9{Eag>|sWy+;-h zL4d$VOZGy_z|2pv7~Oj%(il4wXkxJwUL~HpPxOMqE`4=G?%x}4lo)4jhyl;xf1;e9 z-HmAs(pNm;3TV5purm2jV+CGRV~El&UmRPYA`~le&2Q0%Q~eI(to;~KTJ~CL+OV23 zEM{UoRxh0SAtm}%4QIc&+aL1l-tiewhkpukdvC93IA4%Ev5s8SHrjdP=oq=<_jqZ~ zFA!vhv*0pV*>nLz9+l7;-QhYGoiri?1S(F_ya$Q|lti5vuF!@YOsA|r9{ERX{L$!u zD1H0Bq?#b8vH+2IZ*@O{o^*1p4N4fa+CxuFK!zm)kKx6%`|53**4d2g0}7VKpKw7; zaA8V!D|iT(iA{+H;2U~h7B63B9dBR5KgVR4@G(_JlnZD^AkD`;_w|vrZ&Wznj(c3z zgwuj=uv;o#%y<$vcI9ZWPdwJ;W^azv`o@G4?Okdn&_#t%%#srZn&hhj`{Wa2hHEb z1J~i~DZt!y2{dih3NZ+rlDQX?dO{|!SJDr*b?vjw8|mE+k0Zt;*4ztb&fx`P?wh|Y z%>x}p?*a)RbK*;>)1_ZNs5N!Zx#5)m)SP-Up9-j9#FnS`-;~j>rDY-5&|v+G8}Ux< z>%PX_$%^}wG>r~LNd7@MFcjuL7qYtFtw3_&6u)K~=#wv&&;uM2>Y*7at2-*N*OX3q!LtDHJFQZUY5xtV4Ot79$(m)owNo zUZ|FM?vyQEW?XEqU#?Xi)UKyi@v&$O>#Ac4#s=85=vkiMzR^)DHG2(}|Ilpr;fZs` z_n|U9AA(;pT4V`XI_uE0?q47fE{L7Rff|0Wx!N~pP#fc10oL})9+?5E+9NKE-$}vu zvHEI&d&*6^V5a~a8yl-CHRZhfCb8h{551=6^VQ0EX@yI3QR!jEydV1SUoQJ17b@ma zX*oy>I>_X+1+e)Lm;Hpu{jeHRo}graHn>-jb6sjZ8f#Izb5Bc9k#74>1z7|86WrhO zpPUjh^Y~x+?8%F-?-S5^EU-UW)YEMdS5tTXy#2L+RFSw*v1$hKjk85z*>&u@O+39J zvMnzm23ev#{4_MOKmU1KEt~iUW1h^Z5}9E# zR4^kJ=8y$4eE~68aDEPbBuzR*U^8KuH-ICNb{xU#YsVhKxi5oIxyF&u*-xp!>m z6t{amfhSXw5natuuSBAWyb@m$>W*bT*@PlRHB`bU4EZWFOh`9;wbC(xz*Xc(vI45- zZ=b0kajS&yQsQZcE8hN;M9cvX#$TBlp7`*R1*BSq^4e}j?QMlJQ)WY@zu-CwRjFF9 ztV$Rgf_FTzju|LI#3yCz*=>VO?d(hM_L}(Detc5ctwSO%F4?x9A=uv<=N)ty4OeEN z0ztPw+Yisx%jf$tUsez>c~xt?<3kR;Y+Gp^{Q=@3Jj5`+kKsU^66RItrojy?H%k|h z(#nAQEI{gh7cG&RTZ9nUy9{+qs&?`~S*sQTm0ZnjKbdjiL`u1KJ@GLF-3kWt**777 z%11RKYp#$KGyC?HUI&@hT`Z&Zl*SFIeWz|OfZVRZ1|G_ARrVRP+jCW}Y-ztJv6$+b zqQOSIauX1a!8+ll;FtAN+yK9=0;I3`QLB8DYp<91PtY1@W>m{W+`;VV;MWsA<& z8lt(rl2xCaPtS_+H79L9%)2$hZL>(m2#QI4`)WU&)Lj&LYq$^M;Pm$g8LaE%z>*d+ zQN`dnja~#t?!cks3aOqp<^m;Vja>}UoSg1;qiuS0L^U-#YAQ*OCEg2%gFujNN$k0? zNG0uo(^JM|DG!TGR9_&;VAxW`$1d=(ts1xIyr)(w^A$m%`4a+;RC-qtxbi_yzY#eG zbOoy&;m&m{Zy-8~rB@O;bimG4H`%eMNIQyE!KdbTcmSJ#O+DFC4UhL|5i-P+U`(Joem%E!kIJ<+zN#wS|@+0?+P~f5yK-a|SQ8WHtu@)W*QHcPfk0)pW4ICP6zyVRlD2dK5_J2?o ztdJBECJYV>WQ^{~i54xU#5_EVV07&>Uq>iysR5Q{1CJlN8rM3f)5DTFfI9Kp?`lmb zO`1~0;+k5QnnltwL1ICHsN};(f00BLNA)LPETj{XTDk}`spMlyYP}>D_5#6qC&fr& zO1%CmSjreh+EcB}-CDB_{ulS}0GS%Xi;>cW-tD=%ILrqsS<)j@1jtd(9oFn%^CHKl zSM%7|4l_mDT}sZh!Rlp~jOyUEuwHMM5S=K`Cd579xweV-++%_yl zl`14D6_Yw5gBoHDD1w^rp@WSB;)GyE<*fk`K*OWnc?w1do;;TAWXrsYH5mW5 z-8pbx2af=A#e~O{Q#Y>1T`ixl1pH44HkcV78-`8(2Ak_g&XJ|gKeHItdNr!jWDR$q z>!tPlKI@u^=|XRZCk+lut!Ny7<{RP81?Nlu3rgxPKA9-B>%1o1E5iEJoaoUge4{8i5j(C zZTaFV`5tqI&<}HCc%+f`bTu#k$8?67{WR}&QGIl!bu^j05jJUsAz}AWj{j)R$}2E5 z23hgccyO0cYnH5%r^utuz?2FCkyjDm8eskt%e_Cv&I-15#(HQl8B*+R^m6B7^-u%2YT_1P1AL!h-Vu> z0n903D0V}amjLLJ#s0FdG7^gKYEit*FY6fMRF~=d7IB6x{0e^UQJF&9yniGDK1e3f zcc8^cTFSmF z(}Qc_d zUnHcwT4r0BCx2p-tUm_iABjOCFVlFR?>f2S=}1UDG?{(u*mjbFD>x^n3(;Yvu1RYn zC5z4i@MA9FD&hADny7Kj(_+ki$?2(TkUl`9yV!B@JRgi;!^FaB6d+7lYOuYH{(mh1 zrCHTn{&I8B0~E1))Mioc9NQ%$p#CsAqT4qE$gh#-H_!rP8u+RX5gKQm7CBmw0%-Xb z>n-Wv?Kf3(PAy7L+_Pj%in{po+ZsqeV!a{O%*~1wz!-uIpqG7EyucLHR#()+sMGdc*vPtCww)gYRnC zJM`1_LqD$p;FykeX3}Omd^-ewk?@QQ``1gmBrRdjz_{{MF(TI1hf>L+|26Yhn^Z|% zty$%?YulZx=B{afbha^ZRbz9ym)!n)2tyfhP@7>#47hKFo`d(gCEZLZik-2CC+V6J z$Wq1dDl{@ul4fN@#lND10RP#>rnFu~TzxO&7$%wuSIn=M>rO%od(FDvyP(GX4v`ik zfKutDE{Eo2VtAM!HH19L^z-6h#b+D1pQKD)gI4yNGp3qbwx<}-f73sQYr(?Mj60qW zQA)wBA8*C@yE}6Npl9!YZK<(<3RkUGz8V*QvEmbxqX}nuqZ74+;v)BL;2nHKybNTW zs-sIN>%jo9lzi^AW&Va*vZ728zh5LR3zKpnW!x<42uEhb0pY~V8`S+h+1qdnT&La) z)bBH#`T5KtVo83xCh!kizXa{<)J8)VS+7MA&XrI#&ku6N8glpfdT{4Cd+l$4A4i!1 z{ENo5JHB9wpSkjd$s&^C&qie1hZ>~hv~3oRDeY3Txk0rrc7$L;wRyM&r^v@_o-s59 zow}x3i#&gyp2J(R*=P>KhCOB)><R96WyfDmi(E2%JTpf!WCIU=N@pOms^BH(sV zO6i~*mpz9RVeLgG+#H-R1`VX6fOkIwdxf-9le`amb9=J>=RKUW!v1QZv`T}apvcP# zfKe$)17|u75Sknn_E9`Qma`W$EPe)4R#l4Lxiowf1y&bi=|8p^N+jvWaV9KvYf|Wt z%%SrA^%7rL=}t6;EZup$&&2I#?R9KX>lrQPaF-ITi2GaH8d+FxC7^465qy za&eo1s&iH7qt&*rlXPFVNZ$4m1`quH{ek6sOSIS!C7pid&8OwYtsFoP_@oQGwjvGO zDUfK;WmZ8u*xRM`@~<&hTI8G^7h8*QPid9tc}Cr`W{0T@-fdz+a7`MQli8ucsFONm z5qTwqay3#l1b&MGlBZl3+vboB3T?M_uE{6tK|E;PQs@+|XP28=yKNCI$og^kBJzgY&%0^d&tRNKaJtv4V62uYliV@yuF#aNQjzyrOFSEkI9pIOEH0Fsn-h=VYQ9@%eR3hAdcfNm z90n->Tr%pw@G;q9@xsKird5emTT&WO8)&_u_rEnizoUidY~>z;XKZpeWoJLbJ9~Z1 zjY4eX^2QJb|M9GTS8rwRY#4(17E-Td=~_cA#(NNcCwrN<@T6elJ=faz+=#Xu*yQ|W z#uXIyt*?g&4JjMoO3yl+0rw4F4ftv_FDh3^!{|=5hQG=>@=vhedgPy*nDATzZz4f5 zYjoF7YolmeuEUgt)fNug@3OQw;xK2U>*{2~x`nEgh1Nb6*AZcB{1Z==5OjVbR)Y2Y zhf3kPn^nXYqxpG8Y%jF;^F}Lov5Yh;W_kSFRWB~K9uVDdcqXsWZgF}OuqY%&jrc%Q ztAzBQ!+w|6pNoMbI$916jvWuj7>Qq=?`oNO7Q{W*#L6s?DT~RIM6k4W-!^FWa(P`4 zIik{00#Qs!I)rE8hY>*kBa-fBMb7d9)WATj9~hCYnj0uuADhCQ@kT9@z*^1zxuKM# zR?v4$%n}xNQ~O0)DECjh)K)_FgzUfzY{+by$^w%kyuGy!3c^8qQYDe+L+osN(H6f| zUPc1)=9n6TPg|bJE6TfAUkx`WI>dCa!~8>%)|=~Gb6$OXEfLmTqcCd90+#$J_R-pW zsb)cjUk}O?H8d2n5yN@T8KpgBo<#%w;I+M3`lp#`?uzZ#n7LZ4-pEC&Yt7Yikk%WkAQ%Nn zy|483+B^pV-5t4g0y$N7g$h^2{Qe;vj8*WkY&PeFe}hcDbv4#3=kY{>e_-_3KXE_` z^(xN~oA{aezr*M60kdYmF|UpdW4)DPwZ&NhJqa@HBF2DINUF8Qd8NUlQB~Mj;_y@s z#!RQ^7f1m9p<$^j%l_(4-ds~tsowEr#XFKVct5rJ);R43R+9U5&oEDZ9!3vW`)9Nu z^*xaEkkCKbII7iP3vujMjICSVng;WNPw_VmTfekl#BWI7GuDNo#tjf;J{rChT3 z*)*-N{gnvwPtimd`{P5$W^dY_g=Gr zy6oL4YIB5MgfWO{7swXyU4!~N}8oqO(t2t?ugsh zh@IJ^YE3*=RPJivOi63XcWkdrKVURd)TH1yaDAd@yjJLQk|sv*e`mbbsdsFy@uIDMHMd=rK15NjX%G{J{dMSw zgRrzFK9qa;H4*AoN4nNqKv0A&k?;jWRJejLGSupS*Yg<)WlgN)8iImVyOJeG>9%iy zo;|KFFzFAAp|kccOP|1~--KM36iXh7L@_p9P7a{q3r48@O8uMnvSvT_4_nMt8Z2Qy zB_dle-=9*_uM9m7EViuXky|JB;)D}94W2Y5K|m>8%pq5rzUWs|^gB93Cz~>L+g&aR zz1;qRUYnd)gxxvRhC!yjsuC?jR)gn3pLkK<=~yKya)t^%hs>;lxCE6LZD(5jZER8s z?(ehi%D|_t66c-#D9?85>6ag$7#`Q^Ku8fS6hn(m4A24Av+Tbo9Xmt1fO?^EdI;w$ z{tdXrc%xysyJtcaE(b6nzc$hT#N5la6~wu;VyFxvJpZC+Yf)f`CG`(%itu+mQYRhM zAi~mqA`QeRhn^z?MxUV6)i3|hA83gSy^3n8^kEP`$czF(Y>eN*EYUT(d{d8nE&kp$ zczAeBs#_m((#7g}HT?K@E&FRRT$w8`Po3h_w6nK6Kk;sd_8;77qBPI?(0`5HXBDil zetVz-RV8`#nh7cVNJ{19RN5Kj|YARxQ}1j zU;X&WFz?-@I4F>w9zP<9B7)I}TA>CFB)3~30SsMPc?(BH`V}k}oX7b+rN^BWv5rLo zMPk3BT^5$w1j(WvwDbEYb25PRhEGC*ck6n%O-2u_54f^1+ zZ+MitD7YhX6%3D~tA1yRT5*ZJ}__M$V(`5ySVqoKf zmi+};$d!UQsJ^>Cjg%D3P0$}&-HvR5;o;+-U(Q;vCvBA2$C;8`WDPuRo{g;__oj?- z(T$hTMSwEzM?WQXLo)B-2VBJJw{d)0o6x`;q_G59avN;LTz*CC1)wc*4+2b_v zJ5w7+K_Q!-+jwM;7DzPKFmlt&dp!{rF(u_g4-}xH4xh+R zZ!Rq!(HrS?LDeno`NIRZVs)M8m=?k7#Fg{@y1N$s%QG^f2^BhO2{2AbDylA<0A{Ky zZxJN#KXC4SSK%r%8qGjI@hhm143+M_cQqLvaAFV&&MpI0Gn}J_T!o^KyWFgFA^(r2 zuMUc`{r+A`5D@9^?o=A-lm=-*Kna&xLP}Ut>F(~366stdrAs=cyBl`*y`S$pzZsa} zU*^89bDi_4bETa7b;-^;gc!_=;9}uOt&qImvOZd9i|p&ub(M2~TrGV?#ecjsE7UhDWymapIGt%UatPBs3bhC@|1ptNvgdZp%5X{myH;cK|O zJg&oP$PA>jETt|)#aHWlHch`tV}PJJ707Xo!pt@65R|>)KOX-a#Su$*d5=2ehe`Nx)%#>4YN|M4(Iu|b|s)O~-|X0|Ao$DW6TcB@Et z>qtrP4YsIPvRw4=7E6b?T5TK z>cybSkG^E2ePn$%#N}2oLdz`dy8Yn4!o3w9-1}n8g!BheLSp6o< z0kv4FpF`fOp-tGw%K(+JTEcnzq|JHrdhX@K8jMm1T#7FTc0Al3vhdv-WJ7M_NZ(o&l?&-Xg|K_xF!U{QdCTE{6Ig1DzDO?Z3_HafB|5fkK?>|5+8bIqN#M~^ zr>Fi`yW>QP453zQKQz-0xgKCN7^p2?9t=MJtEn@i8<~~XRmIvz)?V)1*?}K7$#*_t zZkL^84eMeq^e(Z@w>r-aS@!{j)j%mSjGHD@Pvvn~D>Y5rJ?K1mAWd38l{lo#pb57B zzDXK2B+jVnIhY}4^XKu-%8~b$fs*rT=)oo70JMSO$@3H6OC-*~bI?*E0`P%5;H``m4o+0>qfCn-gf)wfZy5f_J zaY?bVbn`)DK!*_5iPi<^{)pb)-D=gRJ{lm;PJbPcb;5w3rV`v3$134L$nmLqz8=u` zy!quA)goj&0a+&6{Q|}{An)Z|)O4@J`XIG6c56h?wH@oZ&jCtplwMFpaiRX+7mAVN zcf!(nJ*}m8>8Jk|TZT!1-Trx8J)biAn+*_uAc#q1WT_ ztq?sz{xkoqCBB)*(Vut=G(@T-#s|MRGSJl@C+ zhp8TiwKqfE-LAJVu>p8)Geo`4B;peXXt(~k3NpW;M4SC=cInh*t0(qca0f9?c^r;d zYd%5Jrmcw>CqJ%HI>a_3s~XrjC@84pvxt5tC87<6%5jFq5n8+35=lD{x=BIZvzkd6 zb$@dJBguu`2u`uCCgi>)fq%3|pj@*X z&AgVy{eMmAbi^fsU9*eI7`YzP`VkdTB+Oe|4p@~eK&m-Ek|`OukZ#l2kMm7P(t~85 zI$Hq)>bhOWth zjq6VfLQ;AUH6Br}%MQ%>Hf1C-e8n_bxlZAiD~=cwsww7|$weS?>YA>=;P1`1Ic@U| zmudx~nj3JvlnwZcAH`@*4Z^A@cBCkOcG{G-&nq6Qsy+@;?wkzE z^Q~8zHA|XD$~2x^J6n~?lm#$t!U4DV7)H)Vbs9v-p!`6(50ZE$UH8|WfeYjjXEY=r z$Kz3C#|zcHXi`=k@-d*|bZMZPZ@ITbYU!uZ2ECjzWFQpz$q7n-!$dlemHGH}=Cmd)qM~^Ef4j3N4|6{^0?-}uo*Bt!= z4|_4zfk%$_4U7MMYG*R@=lZWZ7(C~QT~(Bya`aJsYPxlD)=Ps@o&~-v`wLor*AR2x zV~}N9cw+$&bmoB{t(h%)J{JH>OijLiMiTiuVQ-BR?p(zZWBu?DA&Kk;XNh}L*3{gUqXv$%${RK% z4NLs?1nREP3DPN^;})uf7dHzbmB!ocqwF~YnxWuep!0B(b6W^1AM8@@Yj`x}l z0EL&WmTu>CG%Jf_iWnZ+%h9Y-90o?gQD!3tuIw~jR>9XVq%`(PyX#jhIEJdd&{(tf zH^JZH=r9R{XK`a3ZFYB^J`4cAE(11|!m6j0*j5!a4v=GBEu?e zSJnEl#r!7HeepDYn}>Cso!A@=LTocOQ-EiT2<|g`8Xq)fiW2ChIe_teIzYeh?k}F^By-k3J6GN1`R^a&sqnAwmt~V(JdSI}7+d zh8@WV=&{l0fXqIh)y)^WkArgA}Z5Z^pKK**LOuSn%YEDzvMEud*&#Wv>~dZ(hgK z1qEufDYraaKF<5ky}oj!kWawr;fSx!c*ti-lj0|IIJ_YfDD-Px@_So*dK!#0b@55G& z)crSXVL_%YuD8&aK#hUWjOB>RSLycfG#`suM1DkUT$8v&m=j_y$Iy)J^AyqJF-0|s zzE3Mq@xC8h&%*h@BX4cp3sK*jt6QJ%VDGmJ!Czp<8#F~Ri~CXvGE>)f9vF^qXhufX z{W1VW?_Tdp`{x{1uS`F6URMZ^mQN9bW*#n?5fnH)@NDTk0wOnf_n{RR!(92q` z`5uR>H=iv#T9Ag4PPFi~)zRt=FB7mXncs~-|2jzoZftbbb@kR2zN+(QMQX+D4u&Su zZ7~4<`E*kVX;mbC$W!fn7a2SNvGR9!1dHSJrnv8rxpC;!p3rf zCA8HGF9i2QEm%}XV8B#icCC}s)0p|C?(ugfd57Q26B!g51y$}!{4mYF@R9)?_P``U zBB~!kBx;F~e{Cwlg$!6X-x~71-5R2tH7ct3*)RBrcy9AXG@clXYMo{ihNE z_wx=k(j3cRNYGFAnU848HruhpbHk+<}-CP|z8-adpd^U?`JJ60oeJk-F+ zj13oQr{5YHeD{9cO3c*{E5>7lhaXqCdtUXn#n%e#jAbc-SBMlrCIh0t;t4lx(!O)e ziN`7sZ*F946GRVWHon;#p4jfU_x_FN>B?U}x&h+^Jx8DS&g4e+V#=>{L1R346SEty zatcELBF}%DJyr^V54}1?60M$nAk_th2=qUjS>#*2=|Y3vjd9gbkLiJYQrkg!-|uHV zVTV$W9jEY=80+ViEg5V;dtc+Wbll`}+TjTReoJo4aE&Ht4}5KkbbYxddfL@mBBn4c zEp4M=ZnYQE@vb>d0(xzBTy!cI3%hGH(5-6xvC^^yF_179iR2gDMvMpCz0A`fE0|mg zXdvZaX0ok8q7xmuX}kIIsXZ&Jayo78IfqLGubi5dbkWry z@id^gIDl&zNs7rEX(>Pl+*}@06_DmCWi8|{{#hssh(~eYUDvuHM~{45=rU_oVy=iG zQp`UdRFMywSjZPmFk+Qt(U;x7w7gptJX+BNAUu{SiIw4u@zZ7sb-_=E`(}}Bj ze5TzOACyu~(Pf-^mC^lyfWhrtn$5NfAGO%*s9bPg5(2@rg|Sqa;1 zA-7I&b8O93V&eey0|`2BEvgiaGNYzmb+Q&xg5$0Boqx=TYkl3fH23-Unw7OQbF-2G zc#JpsmnHpnMrw9AKph(9povU&8RQlcUO3R*iUh3v|HB9kby56#Dk*~{JGX>98M%MUe-9#c&)oYZIwu(=45WeNq zSGKvpf7smDnWM`6XAld31ZGHX<$FBD&rhCn65#+kJD2btc9`;fUJ~n$IA8V_3eo#Ma(PRauzW5# zHKA#hhMnOHvObf@*OUx~oi!Z^=yAn(A680DG1ymlQ1>Lsr0q?>5UJR~^XKNsK@?i( z5yR((;#oS4QrP>4+xt!{T=s@`#Q@z=5l7-ahfb>yw%i9sb~2 zWYTBdMhwp_H+V_WGT3Br8&xsYn~^`7$$|H>7%o2N6YJ{pJToG0C_b%B2ySkQnW*-U zZlK7?78Bnl^&IlQH=1>qpgPz+`>5*57{F49pG9<7JsTc0 zh8expe zP4}$ruO=t>vd|;qbw(h7NCgG>6lW2me0-XxN+d;%OeU-Jc=bFldf?Dicy5UUWR@Zd zwcqr}sjNo@IxDl-RCAwf31?X7zj({~S&b%G5@7{THvze|jy+{S5+PdH)dOE;A7cs$ z3OmR205&JEO-}L&H2!qQ^5%YvI8=^-hy$d9?_~1y@u?}$!gx4)u*DsKr&i@rca)J! zII-V7kdVmNK@DG!Y-~K^ZUC+&`CQH_>ir2q>#=m-pmvRy3{Hil0CzRkKezLLZ3NtC zbJi;~Y(Kx2N2E~GWQvsifRayw`Q)*|WsYWq-E6yo9R^m^Br)bQ^5tJF1mAtOuKx^@ zq6Th?qsO1LFLav}F;PG-t#97=nC|*`?E+m`6)%({E+^QP+MSwc(Et0w-0(RR@bSBNU*Na&Pi_$Z6~&1Fw%-k*w9t=bTvuZ>beRlEtwmzXCuT zH>*mZYXU}C9-($Nhh91-Q4;*4tn4833(zl`b13gDkf=b^Kho|Nbswu$Scqlp{(Ih` zN;{s~v~>O7H5nD03_w|c3Wpv~M>vqZKgtb=-m4%>eobxzyQc-_#%Q<5&@q8~_;f^V z{{{&*HFBMN`<}4xH{xdWor7+YWW6IkX5iiy-~fKPvZl_O92$aQUk_J2k^kB-@u-J@ zS2`AWr7^t^MEncScAyWjNP3AAWRcqbq_XsQw1~NKgRbcgLZph#Gqd`8I!+t1L137a zyRu@qMUwRs&dC2v$#=|Ls6~obx1K)x zR^5uqCG$vNIirlVuv(DU|4Apvo!BVsfMI3zOpo-F{3`*`UHg zFqAL+X85XYplmcHE=R7l{4V!(W#2K^`VGlN%UjJc6DD*Mu$=T>8oqT^pH4&#d}B^0 zh8fr45f}4|DybbMn~I)!k&2!zrJ~&~Z!g=L2y%@18BU;`In3_Tr^}~{vWM+^ED<<+ zIjGUTt>0w1KzVJJp;Fj5ZqcCHJMAhft)+8!iLpMm@D(50W4cnZUSwlpxGGF0lRfxdN^XBi zZeV=vvC7>s&a>kviZine>y<{1WzBE<F$9W|?Z25hDc_I{J4Cm&up=5l^rwdI1y z!xnO|fJvcs^ekoJ3lkBmJjI*7A9#$(%x7qCzCQ8;ipPw1ykra*;$h^=waMKs&{l&+ zNbIFjFMwAwUxx|;KT|q1B-&Jpa$@h5iZ(u2(Dj%q8)s#V{4rS%t)2Z)DZ5hzN~^Y>E2((LEWsGga=ETVB2c4bRc0JW zChRh^D|@giUpH3|8^UfxzrUm#)Wi-DZZxlecX#?a0b2=HMX$_rP$x_QoVz0wK6cx= ziP(jn!C{4k^EUrjHLzqmPA+?iVt?LdtN=R?LgF;e*Xn!IU;XUoe*5fBA3NaQJzu8Q zXuT`*yQu#W(K2oek}tHue`V45V_aa<2h;uJ-MZF2=!%eB>+5g-cuYBPaX*Y?e9zpf zL_;rf1Z|8pq429>cU}F{H15f?re%NNud>QN=Mb*l_$^DCT4+Y za|HS|gAxcTaO!V#{4J@6g)e6n&4965hQmI{XlA zc|LCpOmwpPz|j~L-ZR$64|d!;J>BG5Lp=OI z-Ygr04SBdwhq~%d8L&)rhNM zi^dYs)ytbrQb}RQh2D~?O!7s^k)5i{h0a|yVaFBq+L}M>fAAqm#KgTiQIp~tRSTkS zhTs>WR`HvsG@mZ6m}3qbug#pSd)99>nu8U))ufz>8c_)3@Mq)!dE_CVyL)HW2-PJi z2pl?-fruwyTq`v(kx^s2tO=PE=!O_J^v`oCf>Py4BS8jrGbcqLGas&inNuxcT>uVh z4n=i_!SQn2Zh3D`Ruu6SL}N^7Z)3ZRf~`0(0xpT4zgo1V0&B~aaDWm%H}p&0uKv#U zTC@lo#E@wXF_JO^`?YP+2k5Cl+Aq2@%@+l_Q-aog=+pr zY2TugA6l!iHHmbjsUD_M7ik;XE%TLAAu}r6{|^tE-T_cFd%D>YM^I~B97hpz<($~f z2*XL|NqBWsdSV@?3Fim_>OOl?qA0G1RLL7d%ky61I^_XlQDIekD_)3B!q=3d(hS~R z53UE16$B~~xS(qQLSlHd&>!PlWBZsrHz6Xv%#A&vlNEO5NT^PUgC@tqt4#xb>Jy*Y z7X)4@**-0+kYWXKLF4+p+AyR+LNhefow=bL!$w+E_LCK_x4-#8+4vu;b-^k4&9lfq zuQmkO*leQ-1~(jxZY3H~>5~h7X>Xk8`Uf4JHV1w#57H;Y`c%&YreWkz_b|g8P)*qw zy8N`mY9s1)^~zQ&=hMYs=0vsu=G23Jc^tS<{|CyM5TPM3dXKhHvx3gOr)yCarL^<9~aB_`|}2_&J{0?K`%a*RpbS zi@NS%ZTAT>Whzg!`rQH$uJAGCa18-fRx_nLOSzyH$jEw1^fZ4`XM>%&@>Xdwc2YpC z1>8a9$R>Y{?wFrl1^Tt$efpv(3D{lfHVzxfk&>QsXsdTuH%vpNPf#ESV~|HC4_^y# zFl$L&lLP0@+`yd6zN*2$>gMv%2?oD?BbrnSx*`N#w9^l;#}UtL>AM!_xu-`K!7YsN zFK758^!B8JJ$Y!?11U1D7kxUt2BE!$3A|cD1p(+76iNrA5DS)S=9Ek{W&9{r&!SH~ zH?A?2Fdx5ZXSvuzHpT^xvjxmTv_`zDUW--_oXs0aM7(oz&6s~RtJk8boc&?+JPK%6 z)TzZa@BeZK8#=P$ZF<1GG7>FKb}a+kNjOPNH7cKz9VU&B33|E*wOA7Yll_p9) zx*Dq=dhll%k00tD)oR*5tgTiYxai;88e8n;F!RU(O_xre?Lki>cMiE$224>NVApr-vee(ekJOEymJk2YW4H$?{Kqdc{05wkwJ zm-FEL0^*YXycD|{GPSP=xfz92)|LhJlz*LiYj7E=ti~*V@ATu=-IZs^>FT(gW02E@k zBN3Kwp3azVj@wYyUb;}1D(*G0Gw_oaY3yhL@HH^hgs0df!t9Gce?NOT!K~>XZ`Z~S zYv?|H$b%m1fkGxAMI9{*3u`F;9J%vXc>lFfc_6s6|8}guI5xbEo4mGPhYDB+#c$={ zz-8fmAP_|VgnJ7E$ca?tr=|#Gv>eKkE`u{lF>_=j3*csdQB?O}H>w%Yy^`JAP$=`k zaT(bmQzMx>qlnDRA+RsPk8)W0rY~qry&pfvRO;y>nJW6e>*$p(N5PNr0cpuU?~y%3 zA2y$)vZtlSNS%THUx%9R35CzO_KDl{RJN?yli)cA$uJf=0e~;hh zZis7dO*|@Q^Yz&2h%r}4K%bCMHre)ciZ+lSbzBRm{;+YKDXbx%t*Sh270C+|ePc*+ z%EV`%1vnVrw!K52p!fw5w6i6U*)=vMklAEGoY(O|Ry=&i39d}75HqFFRpN(epwZ&q ztKZ$TAKYZoLjFyp7QaH6L?T}lHS|Agco;u!0}Sw2zp0$JI6zWz0K7((cKY?y_XLV~ zgd$H5*qH!Q8Y?Ky`RgUl(R^)oXegns|03LZB%y4r8Ir)>Q*5mIQUnulxPy)_Yc zR!;uc&)W8>=d5aT2B@PV@4yF)n{aCGcq8(UQUK2@o`)irR04 zdY1obm5rw)pkj`X-uUvpe|hmNq8Wp&t_^slEo;C1By~T^5jI9*&DVOeSv;ikZO$Fo zBWIbrCm=NK1>f<5?)SZcWVk+w8rqFLUplvkd5+J?;q$Yw@00z=Hc zdzwor*jvT}rE{-Y>KrM@4DS*-rY+{5N+rhMxkaTSEPN49$0*T0VOcwR?>M$-9i1;K zsX%-g|2a9pA%zVzybZSk3-!A`t%h#C$1nK|D z&P=<@4Rp3uRv&7?2kO*~P5|QHDH5Tj?C)YLyo|(G6tK27^*)NsEj7Q*OdPSPUlwC4 z>L0B{;ND8xczd)pkPhgmYm8nTfSn7LXAG@t=x&kQ(=m*}#g0{0%e2jSS3_@GGOWur z_`;BbLB_}le!om%mJO(;=68HXf~k5s_w6U1V&*Hqn5Tuz<;S_)q0(Nlaq zV92A{YFxN_5h}Ih)Rqx=oCyL9cs~!C29IIP4>%mZ<&0jGj~iwdK$jUGxI71+|Kv4K zbN?qVj?I96ovyfpmkY$t1U6$g`2A|u#`3EM=mLmXBkL_ z^?8`ZV_zx7svr;+8f17yI7ye5YrdXs`11VbEvDGT&3C|sN$^czNXH8!7Lo7&p=CXn zf_u2&^zk8*K2P_@+0kw8_6%KnH_z?r(5Cby`r}Cl1_Q?RXBv)A<5iLMj79WinC<6J zRH8X^@ru_xa~2J}yxU@_-?W38X$j|0wO5)kNhmyKoYX5DaGh4vsGp%XEP9*ve~kF6 zQl!sI(lEspinqIa(Rcran7VR+7&PV4Z=2(r?)T_qmtj?$RNnQnpEbPc?cjWPS4~x) z>Y8D<32t6xS48hCuFO{BDb01T#Uml0F%6z&#i9K6Yj!cuOr>t`t-$hSdxV}PExukpArNiDg4U@)OfE3$db4#TB$jRktS zPxZkX*RPL}4|X9Qd3jm!1!=4C1arSdsx|uATQ^B={JQ=3WZDsO{AB^Yb`z^tN}6Rr z0gGcYhDd%F#cC7E5@`0rU|oIFzXhnC{BO+*OaPL|)u1nd z%A{!Hr(BC*v`xL8bb*ge%*7UJG12r$ZdQSKgNk2%0v1A!{(U+&Vm}F%K2$$DUhVse z5mEJ80T6{wK>PUH01klW)@)!0+_ZT`7S@wym%fA)B;8L5M__|-EqMsw6++3M3Sgqj zSL3UUe~PWEG#-s4&?8B9q{S8Yw}_R%MHLCRU;1;Mdl(L05EBSSM(T@+Q2|;D2r&Vs z&cI0@pakdgaB96|J%L`xM%CgvQCeC0JZYwk*_zw&aa@No=sc)}Sywz)cCocLGDKkZ%ZlPd2! z|6`D{#iD1$FBSEo4GJpkF+jV{Vs6Iu3yo{n!~t)~f4Xsi$aqohVzHp-a=~9nP(HF? z(5re}h`Jr%V&Zl71ixH<+hJ~z68AB>FJf!Hp3)X0Pk?=rom9mH?NubkRE;k7=WB71 zRWF`g=oye;s676O0RzMkGO2TvGNy^dJHr9D3W;$s@`3&cV^2um-JHT5$e($dfTNA} z-!%jKp|EQH_H9qdDGPB3LmV=%BB?7I_TAjEhF_D$W?TNdLxd$lUB ztIf&5kVsl{3kJAY*IYKP1B2emPWx|Gj%5qP1ylRO5S4=XnB3wo!P)sd z17xJgir+1w2NSP7y%h8@vmHdgl;-Sr+qNnMz2oyYRfZ@nBZK&{@267fEQeD@0ZmAT z02?>at?@&rH=}8Uq`k&7QNu@}e%&)-zRo-G8MRNzfH{E}SpMW5aC3a>6Nxy*Fz}`J zReWmd=a&@!Hn$eLAMZD2OedO?NepraT1U;vPba;^1O8W}BL0`13LniBEjoZq$p`IqHcIfar9GTVQ-aY{?eHTgF9^Z|B{q=IGYT{Bu}O0=`t@7$6lX~=3{13m+b z{E~3p@oYtlE3zTVOe*4v+MQekqwwvQ$I{80=x!7SpbM(}{&)9>eks@Ax3AstOADYE z;x&eoxo#oIG815%^K(EA#88c?GWYv@Ipt#{ZsMDlO|URM7vZB_Ku&mw)m4LG) z3|Ec!JILM9KHwA-d_gI5mwVG6Nxp=6tAo^vCKbcH>?vZ&CK} z$oK#{YonESI&r%Fyx&yvW?mi`w~EYK=g6K_8u>`_puz;6C08?Gv8aq9$-z3&Yg~#Q zCvKw+hHh(UkN1-=bFE!mK8)^W$zc%<)QU)p-T(hbiwyLU3}bH&c^3;K4MnVwMydR; zpTz|vaKyFX-FK1~XYjwD5x=k!FC!lIqxI#tB%t{+Z+!v;ykdI7iAqK9W+j?K8Nc+2 z8Pimky!V_$y7xw8095r0lYw+txC~a*EG};J1k9dDX`qEhyc7($L8|3Mv8g<(m5+W2 zME4!v-tA#xl6QO}%dB2dI#TxL3WyGB81>eirr^a;V>y+#lvU0U4J*repC>4$^~ov+ zkQoh4c`cw8im9qjg5R^IoFOT(lAOvAIf5> z6u>pF4Q0o|I=CJw4Ke~x2#2#h|#d7i#$2FBhkAK^w~(+HF)t;4i( zbH2Yv|EC3bu`l{3D3i4NYD~Zdht?d*bOH0ckzlixXHd}n`tH=>3W^5i(ZLrGl}xMj zB%hAzUn?Vb1lCy0xp|+Dn{RD;O7HL?k73=8fJUN0Kd`!#t(rO?9Z*SZ)3t}V>YLW+ z$jKcI{0DmBnzyjTBG>k?fTS+ZH>!V7WA;Mb@1vvfabsfyeIIc9_eOH5Dr0JgETbg| zZvC-kY=Gm^Di7Vi^~UZhrM2X#-u%TcJr1s+S+CHNQfk;?Dt7RG^L7#$4KpUZBWjZF zmjh$V6dHBS7ZV47zg+GWzPx~+B1M2Sgt>OCcUYF2{M?$^=?{+UOZSY>FM~LsU*V`% z$a`QhMZ?b%=x>uK{7QR@27FX$tp6`~ypjck#ig2NJ7%{?!CELsPJ6A3BhN4?M#HRE z&Tu#poA)ier#ZBnQ`2U_4e9A>+VTkXv(PiReR9}9oT7yM_m43o9jK9f)f_ARNjl&b z-rdWxoXh}}mdiBw9k()K7`%LuO6wF6FD4b@NOC_7RRIKO45=ah^aKxuVGluCj$Z?Z zMo^Q(F@`oT|Ju9_nGvt0%Ln3@3D5P}!>3RG)knZJJfX8rA#*X`z-ztV*s z{Z0#`$)4|f{;UdQ6@16DW|UUrrQi(JPAJnYy&7bW92jSffhzwaZm*w_jinA&+Jfc+>0jUu5x_)5 z*0adWP#TGmEEn#kxW$b-A?50lg{L+HqNy*<9hmY=#Gta=(vYm|JjY5MM6@17}Qr7six?TN8%G2s@Zaa$RaoAwG>r) z*2)nAdBk>(+G@OS(Nt3KxQ7AJn^6iXeMr}>e9j%voSb!6-1*0aGBVm%Hpo`pTrbhi zL#HKb+V3rMP~$WJDTTw73leEyu#A+$+F;))FQv8pIL(iP^XcQThRgJVvk~n+ly**w zsdH=jaaU=4Q5w3VSU^9rg3N6>9-hC#9Y+)Zel7Db-2@;k zEL7brwu?OCKLmOV{GY(pp#_537w;b>yvMJpu=n>Emcb#v`OFkJdz>6UajXs^Jpg?0 z0Oxi0=P9s>N_x)QEd9Mzkkk3Mvr|#5=a%LD8{rVOTy?^kry>@)m*R-32GQ!^ISU2$ z7K8;rnb9f(u|zM!HkXaFN$O{bBQT<7pVp9fNUM!4bZKPfTK_q90srUzbsH3hgfN6H z42f&PhI4RCToE-({Ow`EXP8&L=+bmGIs)ULO1EzGqWbe~QJUP1w;V$3=sQ`F0^c?! z@Zs0u4Sk_AY>6H;kpki!A|@0a6WH`xD9v3=yb>7eQ~TThsV>TrhTAU=sJ>oOX%Q&u z=&hGRwyI>pNN=Hwoa@WPAZzX)4W9yPRal+}1^hRq%=d|vvLp` z>os-#$HQ)8TIQfQsf-h3*Dal@W`z|XewD@l>3KRMdA2U4U(v9A0yT0)iufeIdXLy` zMrP_D8(U=Tsx+J^aWH_8;-T-~rH59K6cpC4Gl!D+kregUXS#I@g@GjJ$=zEeeo;Bu`=*&H>i^pN>1$Z(ao9qVa2TyWRHC6@>fm$ zfT53dR#kch(7_&$b^JHw1Wppf0W>F8g=`&9R|MJARCi>_UJWt1ynbvskAC_1yYkVw zFgRABhVC5$#xF%+jz(2{wCC0aLjP|M>sWxppe-&HdLtiFn6P%8u$fzY8EDA8e&f48 z?qdfyIECq7=*j871k{t(?_aRqFxD;4=?REcz$izUc zXY9oZ_!Ri_yS+7IS{wkQ2!7e*1wREJrA+_SFN~YlVeDWl`E1al*x=Q#U?KotVW-5CYjs!AabV0a7 z*It)h3@0#WY12kCNDgs;RvXg3K1KIOI_kt%O}SUYFQaPhv1Pi5v?NC^$6;!5$-tqB zvZz7;ubt$X)~fe*vLpt5FhF!J^caD+8?z;#qs+Xd~9w(7t zs7AZ!p}>PQWY!zkaiz6jXfP|wi9Q*yDui6003}1?$CpC-t!U^q+6j_MOQ?PmyWn#i z8A^SmR^OEfH2%stl`u&mT;Y!*Z%eNS5A%=EURjl&MuoyHfcX|+niTv>qF_eFjoN*^ zlvIbzvyJh%ao9bYuqO99u<5QcP(KJM3#4ZY3dw2uMRSICRtg!(mk2szu5!C)iJcKwL0NI%%V%8|8% z+_5YMa4%YA4c&3GMi9ivc{^pS&zKJME*7O0ELq63XpSF4HOIawFyj0A#sVj(7HjRk{UoWv$5BE8x#dq4=*XA?xYV_im_brNHP@vE+%++Q|#5IB5~i zU2=AxBGtDnUu|G02GTxO$6C0jX7vEA)<}+6$E>d##38|{zyM-?7-|5b_`!CkZs103 zi1_*oQes!?vUa}}0C<}MHbwP^KLN6f*PYiw7Hkn#gzsTMu!4#Q+$P=+Oc{{y3&2zC zDLzawqJm%Oat6_V9EjoazWeuhkAU8z1P7xTtDx}f5J#)$O2H4iYIbpu3rql3LW(^h zatzyyl&wO9HOykyHl9E^SUTx|a^ghmZuuMrWkN6cAPNj85vpk4I*cBzI=7-YNdiex}5^er1B}jYaL+=Zt$vHg2Bmr1)Z@zIaqm{&&|*XO1A&}Z(+V;yq~G_X1*1_A;4NHDb8 zkoof~J^G~X5u-Djrb09u4*l~$A@jaO=pE<_viotO?hCo>Xq7}BnP9ZQQ}Y#%EcX$S zTw>V`AV8$!dhRlytbLB({6>y1z@qVAR#jJa+3)PKZXO9NR%)-;Wd5Uy7 z)&gP>B8JaADq^7sU}5P%d^$IKcqCkuz%E00UzhYm)^(OZHotamTZFzdlJq8G_r8*O zE~{OuBX+|(BrN@u_D6$orRPk;voJc&=@NJ6XdBP*D=U1`g5(DgU!V7+WfIwjW6p@W_y2)3eU6L--2R-l14L;0rgJ3489ddKhmvfcJyH%2<=0!w-my-tVas6QGyd&(Cn62L z{N1|7va^(LY{vltb&&^KONhFx)1Scqy`;CB==&>NpgK{igDPCCKdSMn7^K3lL|=p+ zc@wLPI(}X2y6t+j1Z6rw9>DVSIfI&hl|gQRXmPCIJmgaa+bP;vt~-iM>jVa9KM-Zz z;$g;OWpnoPsYdW)E=N4x>bC9w4L8Cjw ztwq;4QBBW~(IR}U(PPBMn8#HAEopTj^04f0RDB!rdC~fxtqUNE>GQcoqGnM@`fGfj zSDa=09|-~i;%nEFz+O*KKa#npwxypAw@TVvR{{=&X}5_ULX7J=$zu;+0B47TWW}j9 zGmP=cP}*I#6u;hhz6rK?po2ZL`599xs=^RA`01>lt7h}uS?Zg^8wtm^L&LII&xLF) z?@u)Fv&JLEurxBYb=0tqLBB(&qAiz1PU2qhRP1c>J5DmOM99mZNxjR(Ds+nrZFbnalk>?bGG~GD;aW$pFH;%0g3-|Zt+5&Txdc_a`~8N(vBA|pWltb z>vicSk%ul8|FF#Zz35#FX6?TjuuC6o;duqyOAbn4OEM~Dc!@Bjt{RJjmiY;F#lb%2&}3Pf-51Ig&iT7mL&_nIv5xTj*_ z>@#iiCX>6Li%8f*r|-1pBB2sdei}J($%1IeXZ*WO$H*np(fcxc8@VI@L^(#6t^gpFMJ~5{f!asHNp)m~!Fy${w=)bFn0Vk=(2S5K| z6<_H$F80EicbXyT|D)+F_O zAs`_jNOzZX?w;p8=XbvFooDZR?wM=;b4|1^@fB0toT1Cu_a8sqGknen4jL?B%s4_+ z8CLMOsQ!CauLl9VC)rrTRA<7S(nSW1Fh~y;5YpsA7W3v0@ZPyW-aHra4?d%|YaNK= z`(R=}-}@>-(;0V+-uDp#WhNDwh}ffKl1ox~=Z$AgbG?<`6>Q%Y0#~bVIzlMJ#3a+q zIv)j8MH1gy?8%9%zDzcc0DCvaoL0D3CVlP0;!K%QC@OBe5w|w_QhsS@f8=<6zU$;X z8n+^jX}J}5TmT#i2VK$0ixH=ZMLtODteCZ*sl)b%y1;wBfPk{pUUxe2+u0QT248X* zIkq~@=c;THFvkNe<1=Py8beGMW{Wyetf1aA|1ZXE1R}@n#8=B`KCU#wm(7_NsW2A! zn3ZriaPGQzm3)V+`YRQt-s%LLLWbr;wlxIZ z*)rKKUs(*ffG3(!?4HL|>L14!M=#wstAZC{$PU_$SfrPX9D2+~(}k1|Q%zI&cU&r@ zq=23OIrSlGrkIx7LLVER7#!KLp5m#gsNOG4^}XI%BHo=Z@5k*+?;tC}3~Kx^SVmhM z37p$}vjM~&1T$|_F&Vdi*Zc`N8J(}eIGMjDCq)vK#9IDg;+EZi0E3CSReA*z1ir_` z=_O+Je}vo$!l9G-g|$s*`YV_qoCH;5dMpl|c6-PV)Uk`Za`v#-!c&K^TB;(HUc)g; z-QD;765f!+l4&Z2If1w_N4|u!8|hm7Y!;&W<|Y&~d?!PIN9^(m8`il=N%p{+E)`7* zrqbD8Au*i}e|gl+5NnKj1L6+1r|nVHYD5>lUxpzVpH+&EDmjukwZ@4z zHfeu_3d*fyb^79K5Kr$N1kYgHE7Li}+q-X>?7Z35bB7@oFcyL~x3o#$7!vlz+`?j0 zdh#eds}UIdB0~spECvZ^uTrux74OV$CPmVP=Rz3Jqu}$z^Ywwi8_t!fgM^MUIP~3_ zL5}Dx&7*)TCbw|^ea^w6)T&P+P8!^@feN90g50cc^iCak{pWQo{|E=pKtW>o3e6k= zip=Jl_*|Dn`C`5dVO}rZqDd6Fnb;N5tzxw&npq-W6dHj&ytmiMf+!QZLT1bm_`ufe zkmI}P8sQgMAVQj~s5#J&>MORjHIP+ni7Ot6*~Ns>d#Q;rQT!B>Za`HI7#wN!cs#1M z;4(muxZd#YI&=E+!OO3m;w6w?(ZfI)qJF4t9~jx>I*PLO?#M`khoZCEm zX1f#;6!G)=Haer*U4l;31(xqYK{c)Ei7e z`3o2Xf8kF3`yASRd%i*~H->O+|8FO~8#X`L;bUrHAC9nw=y}*$8T%XZ9{-jycq7hD z|DtJK>2UU^JZ_YXMP?hm*?bx4<@Us{gSX7Y4<)iYI7tODz4QyMbgX(c{e#WZT-9`# z!&EDQQR74)HQ~mfjF?o7sxs_!VE$=g-G!4*bX_>7p5{I)ksrF>2gU~Xuq0eMOVhs! zq9O<*aS@T;{46kZh&~d9OM$G&rk<}+j-c1s*`bzoZq!t1$&DA|wt{E)aA-%?{3pn- zHy_WBDE3VGPITH?<+;m$s&i5Nrz~_O2NLkn%2%|6uwqJB817F+>KuPP zUqF5LE)vtVYj;tSmX`jvLfM5qxOg^c5mx42P#pVwpd2*pou5R47u`nW79 z0RH(Yw4wSbh^3{%I*>J7+SMEsyx-g8kRMm#dq4DIrW*9EuD7un(z@VjeEx|Wc5bQo zo5~%S-Atqxjq=>r6(XMn#y>T3(BZ#9VM+O4ROSYR~N2nktZ~&teVRFlR*}lP;sQgwg)#G!6b->)y;+5hJxt(#*5&6_EFua z-7v8iWwlElcPfL$fc+f zzpi_CXV24VO^-KxYq7y|lJv@l*#|a-FU^5CdYg_o7ZqYjf6KL^YupN)C0E*`u+VP8 zkF?gxTp0$G_q4uhJZ}o$8q-88e0=S*uA{A%E4O+6;+j-QhyUGkDvc3zNUQa0>L$-; z7S>OL#-~&$>;$v^%0OjSZlN9LfOZVHULr_CA-1rc{3H7Q$Qbt6TQTwu`Kht@0Z}36!D3;)N3va~a)`?NHfs=rK9gZ$4a@iT z!JINz?Hm%yYGf^OdveC4oww*j4rV*Lyltwf-`ELaH~n*d()T9FNW)!Tn9OmR0R=ZhD9(B6>Z*1ygOApd#3y&G6IvmpXyWs>zv@+ zd_Cb8kayas<@KGZ`7=g#-C-t3c&ktgp0*X&)zY&CIG7M2Zg!;x5cfssIDa*80b{eA zAZHj80o;Gxx$9An+87TnpUUz)aZ6cf zlC>nr!hnnL(cAk)0VXzJz%49@?QMTG=r=`*l-aI4UiZC$LSv~g1?h+wR=4NLI8rhq zvDySHpLYfDRfH>!D{+Iq0y8C{&#{@=s8}m)nS66J@n-%jE1&;YRx-4r&3-3Cq@hG~ z&eQeB2=p@KdQx$FV{xIpFM$`d!;2Zzipup%qetBCGO9)1<#nHle=%vt^Se9>vuwX0 zRkvI~XfX$g)f*2!@RhZqvA+H#c*H0f(y}Cq`y^X6{!U6&#PRb&D%qiM630I&EX6^< z8ps-2yuw9D&@;5X-E#?u5Cy5dLsl!(-zM=^3I+RD#!lL3RI4(0ZexSKj~MQlNffR< zwA9MmO~Xd~v02DgWT;eq`wJBUY_qk$4m`wCV}xN6i5|ES9<|2LWe_6QSk7N5GJmpF zg=SbyVWCUYG-Ffye_)1kQwB5UUtV%mmW>s9S(62-%1LO2_6$xfqVP8dE24?8tIR9N zpoOtAf>}2J_K<_`Bh-@XBd8WFhX6A4F@+VJIv!FCR*crQtf#a7hZK$rUAUpIBa@Cb z>d%82gWMD5WUH5CxW%x6D$UC-Z!r9*=mS*<4zuw*xPUD5HIC~{Vkgd>l*^L@27iX- zn@H!?oz-nH94HkHk5dzYSd%imG8L_L{hQGrEOloVNNfQcb$J{>vA+rlUxF|MtXR-V z_>!~k%Y-Mw&SBfWKs+M8o|ehZf-r%SW_g&`-{gBrBnTISd~zvEK;qyTPZ_(G*huIq zi|qTtTZd!x^&NUEcuXRxSLsh*_8 z8{e?Di@8HGW0{LxNxhRu5S7%>z-z6ERbYIH>Cv*Z`n65HN18L|X3+&b7X3loH3jcV zO07Mk<}pb_n>gSKY%xf3S8fJTw3p3_omfYa~N^z?fZ@w|4 zL$%b5Em0M@_XchLaZ<|bR48UDRaT^E=-Kvsm)o_%8}v9KGyIV{L|F$P1bJRk=b|32ONp7(*TaR0uK+y78@-M48|6gv7OZDV>i!S7U*7t6p|IY$AnM5x2Nb-mFT=}0Q z6+PFrBe|QO7<<`OlVbag`vl{Y(Yr+3%&78YXE^6j`E1C~QUCZc4f1}y8UmWIidB4V*K>~9EeH`$FUUl56D<`=f zhbttu5`Jm^Ru4n1e6PRX40U3)5Izn!drWBPi3yHH(y4oF>Iyu_^Ui(tEpg{M;Gb(e zFmh#OQPS9gv^BRbiFI||XHArhR?QYJ*As4i_*C$wN!U>tr&SRzC@$t*$~*S40YIy* zcSaMoqN|o=)zpY{ye~S7lVHKe&Nrx6d;!pIN>4m#?+Gl>Vkl^328n)n#hL4Kx*ZNv z482>v3izVmMsRnv2pY)je^}OsGTE%56eh=V@Hf6vFuZhu0nYmr&l}v(EjN&?LKz*y zMf9PHnQfn#<~fCF(%*x;z5R?Mt^jWK|73^fzYkR>Yz^TY>EWbv(v(JETS0nGVg@Lt z-oyjTMjf63u$ZD}g?#wg*Y`rcxd!$?I80fFD!gZ;80O7PjA$kp z4$EwkCTw1bp%u)Mi%mVTezwSey$3&-WGsA1}p3RHPTlC)x>)4gDlwb-FoD&dQo*zywF6F#tVUJAJ zGU_ymYR27o@9~?DVQXu=R;o)>6J&ixt;-Ff?l>KC5WU=U1za;QjAtS(>aYu>VxW1v zSRhbxt1VuT^4X=U%}2-z`|vJB7!1lVX!v1GMDk+%72>L5-syEqYkl|s9ttpYOx*jt zYy2!CiR21-eAjw5`mn>e^LhbY58^J|b7tmFTGh4PcG#WA#F8v-YlVkOEA z-OOy?rno1h&M|`U*>9bxdOp5);BWLK_tkwAVnqNYjz$Ubxe-@J=Zfl@Mvt*oYEnWa zrt!KNnpSmaFhC`%5Y>rDZrJnT&VJ`sP}hpN|ILXr8|S4S$nqqzin5wlp; z8AthwS{zM0pBkKYYmttGVtZ3oip9fdnh|4cMpRQ?ciMi-8b120*7fqRfh!g7Ddl)c zDn9|nCpU7$m4aD6U%;)N4G)8fM;jc-lGlE`9{Bf*Pb$j)*-VXK%H&}9=!pf3$;MsB7vvk5he&ds3587bCSJ$|4w^zXj^W(-Z}ah9 zXfw%%Sd?1ZHDeR!V7hP8@!|9u(z=JKB+Mdn#UP>k;vy{9+G2w1Hq!WFaTD@ali}5V zy2Vc&hi7%J)XGn=yPtE2Zo?#TS~_ye+iYAOD!(i75k=@ximb@W@KR}qdILr9z2i$8}wBF`3@7rBBYu-~Ci(%q+ zdrQnt)4*^K4x=udg;F(u=+CWJZ@GM--)2FMIzR?eC=k)hRn$U9jr@?Dtmz4TX0@pH0=UrC7Brev=%5H~tgkA;9L{PFwpaIPz4qN=x9?AmD{pq5QBWA+lQ zCeCR0%FnN(xuKT6Y@O1{AB*@!LCf{4eoo(NlQpR`sP?~(q>@~Gc(dkD+Y;av+too9 zq+55Q31a)Ag3X7#f1E(?N0=?*9JUW+4@EMsStrXtQ1Foc$Hpk7E!^Kp5Ev%&QHO)n zBRbL47}=-rs0|B6hxK*j12;GFf*bz(-_}z&(A4nG2VGy~`W&!!?N>)tnrW_}h+GCf z-#r6t2He_678m3vP=v&2O_sLktb^OycJ#ysNyk1{>6A|Ui<*nZBW!k zr@d_E$vXCmedjgq#@*@8{8y6K&9!pqh!QSdMvxFSCM7HociPZKy8O7ThG8EXqJkAMdwp@+7L$pgbv zg&IR3eh`Lqkwg3-rAcK;X)u2`!u83~;7V(msEQ6>J{SL}(9#^1SQRv*th`dMNi*=p&A)*z!Q2cnEz;3Nw zO+`TIG`risbDfT#$#*VBj4HuG@HhPMM6VAATz3jW2h$DtP^@lf$_U@O+tMdJo#ug} z#Da$km1`=sYv$+I)clj>SF-OXZ>4d$R3ld^>@YN9oW@T0NAtv9ysCA*iZaUZ0>T2m zl9EIZmeT&Sj&s*`pJW+_7IqUrLlO6aWedMouZ_dJzec;_1;JR9esP2a;e+KXp6l{| zWOD?jkZ3ePKrI?U=ul@f_QwBi9v$dS^jm zNqfb{kt&FfYQ|_eV0(n_{>NMtqt>f!ED`3wvr4yhqm^@{o*-4~bXICy>qD+)cL(yL`8XmDfNx~lvKT8il|)`R_IEcE$LMD)&A_hJ zknd47p9Kn@LcC&;r0ymQ_iwex*Q>>rwP?;qtSZ5o(J+<|u%S8q8<8SNkVnUdSOOE!_y;Z! ziW2!y!iX!5Xu!nOK{KlvQykGaNj`h4;OaN*_taIzN+- zcp%xpjscad$ds>bEGpVsll>^Ce1z!)0zTnqmsM3!pj`!NmpO5EyB;jGl z0bHAwrgm>+N_6^J>bzM~vuokMI`u*m`SM!y;|ScWTPZqT*8eT2i{Pv&>D6#JxR5i;Xt^C_PxOu9h3 zTPon_*!A>>5!c0KP|Iys7N~cdE8*PY7wQn&nZHlEpLNbuf+<8jG_VZ5g4BJ48AqzfUPaeqqQL4Hhge@awnngwu_Oa9lq0H@b0Cdg) zeb$_3uC^cG68pYgQ~{I4dh4r^dC~<*$ANf3slPoBUj8xjI~-kCNDwEtD-u&~4c&nR zjj~Fj{*Gm#uU{h1qEpY;rD2%*U*A!+EC&jRkKu5V(D&^Uz*bd~KiiT@!McQ+8}p0G zqrRSkDd#GA_cq1Lo2-3?kx-f9h8(SD=K%*4LnVi-RUsl+hOvqn3th?Z*j@*eTK zTl^$=5Dqg$FaCl{Yt#*tWZbz_<$F@eyWmP|`b%L4TS=`=pDdH-+949nwl`hN6!%!f zRy%d|b6(I(-G~5dI;XanaW9=P#`ru3UYasQTq;SbI#qnH6vY_o|AGo8rHd8^YG9_7 zAG)ez0%)Sf0pF)*?{c&29wHpnX%1v|a84XWGT)VasWPE^2`M4_h>r>Vr-k%n1Zw&s zBFT`qYV}r-_PBnwn!~kVAP)$%x+^t^ZwrSFQl9$kR#2XNuJwNzgK`eg2*@$4Kl)RZ zM9bS#D?0a3TfwSxS9Q932556UHccj3W?a#%S+Aw1I4cCjLsq7YDs~P7o)wcNB`xL+ zJ6ix2=RB39&mIm91~$_vpVsJt(&eEAnjq6a^4bnJI-_RCoR1JdLw)`2L8uI*2x80P zv|Y&Cu=!E30P$W7z<@GQU99<)#fQCv_RD`P2Ba92cN?E*ad1Fo z>VJ#15!05|gaI>V0+xR6tQPs)u6}P_t&ymEa>c}{)WogcVF}H)l0V&&hpnk8H$_1wax1%JOISzT3 zV2_pb=NS<2iFz_#tfv<@r3cK61Fo%Y34+kuXYQ}TK9FqTH>zOur=Yc~3f}VpJ5Zda zXMn}Uc65XX;N(d+-g5cl z8e$+&D>*=21(V9%MmhnlzLbm?a2@2$2DWa0Q-%p+O=;wg&meXSR|x^29ggW-o*g;IV3X-;{Z+)tLO~m9pf2iXq=0he`Hd;~1Zza0|9jiQglq zH=wCBB1H*sQB+0xopyvy9S(e6OU?M-pU8K&1#P#U7&C^E)XA+}BB{biPLjS4y*m*= zJ~UjPa|Tk{jOD!Iux#QnOq1^9BMSUS+v8y7Q7`N<1!4yefuf{zXkP$f9ybnrM=eC8;=$v5R-4phaH@@22Qm=l5ReGnSzG@UIrQPVEl|p!1~RM+7eGm zYFJW@DK2-3iz5!O5A2Cux&@Rf@fDa%IR_!P zM(0);@qN=>A^5NQFk|2OK!Oyt3qVvMjl*B+2D=ABP_l#tl+rHXA*eJruxERc<~etg ziHD*m8Fvx?SB?xju9>;FJR#$@6s*ZlepZXZOyYPsw3`}m??Jii1?oI2-?D25RHa-5 znh%!};AXhF>%e}XV9?`=@ZEo=1SMp-`)|$v!X$5vq~g&xw8->ET>HKzRcNrIWb8U$ zM?@KeSXcmKD^`=+MMyQp+74PT_XD*VdTmDg9BKRNT#6l<1A5*3rT^4~mUym<0xk3l ziktOJ-OrD%fR@XmD_&6%X6+&I$6(STibjhPCvv6zkq=d=?;AMYBc+|V7L78H%G*ce zI06z8XHT)1;`eh$zG#8OiPXez$b=pB@l}+-pkg*9JW$~uP-@bTLn(GFX()gHN5uR2 zoitu=b5Iola^KB2%Epj8I)cm$-J2Ja3JX8EuJ zli0&f%Gss$)ZefNzpaQea$b&Qa*JmEmK+m~;i^J}w&YHII&YDOtWj_8 zv9?zVq9|1NoIC{>ZXJ3Mc!XFrO8A()AbBuvcPLDz1iSXXGZ8Lg8Z2TFiUXD%{G^qv z4h!w&*H0Nn)H7Ic>!8)FAGb&e#8(_)#mhIGB$EVI`vFu=%Ha!!Uj85BgD|JN?!(r9 zN1ggD?=keJ5M5%X(H~7b8t=k^YE)RGuUSHGJyhy~`Tj7^pSo{}JY z#^w6Z0(>a|i~fxmdkc8^Kh5BU7n7Nn2Iuxz#O1vp6p~3_8ViDP+hXzOX@N8+@bd4t zLDgiplj?#@VL_QcS8j^<)-Obsdgp|mtlsqqa)UfA%;b?#zrMxWg;f6OT6!$qX&Ry# z0l>C|Kz=xL5r8d?%bXLrYJPLRn+U$ssKl6I)m{B9LsS5K)#SaZCmv=BVsKOBO%dIkU4+8TW#1y! zj&L*sJ9l9z^EB!tCECec$~v8l1++|DdaG#;Cqv5DM2?g!D?|SVxwzN?GYie`s*VciW{5Sa%wqkL5o-pjs)QgGcCe0i&F^%w>#g=VI<9-4y=(aER7OPF)8Utfp|9-~N%yGJs14E{uR>9FoBw-S_)zcOzl z@aeYDGtNQW5@IH#cgSC)a3;G{V?GL{_5_QuJQe9RDf*``7$p-$LM%NE*grzT3WyNB z5mFjJ!!XpWepQeDgei<*+EXk6&B+l8{^QX>`B0yb2nO_|5Cd$2;V%j+d*wiCII*Tn zAN42({jW{(M0*4QNQ|B$W|7%}=6NwU$4`5_JGr)y1uky{EZ3B5C%>Ms=3Tq`-=?4m zE%HCQ7`jTNCgo%IU7>E;X9Mnz?E29D6+x6l$RKC`Rfj>!v!uf)6emEOoCe4_`iyz5 zSd>TJXW22QGI{vNF(7EC-o0m}B!Np)8!cd!#nM2yv0^YnPv~(hsETjJI7IdAcm>`u za~c6H&9++0o>Bm+c>W($vHzzA4hu6Ue4m(_ua*J{k_{z=e0&CDX5xOm6(t>&brnT` z8}fSNjAQ96cmCh+*n!{b9dK||_nB~x?^dQC*kAa!!X!@|4-^n2?+QR0H4k@sotM3_ zQjf!uiih>AmAM_~`^5Fj~a z9CE$&bTTFK(^#SRH2*2;?J*XCJ_m-ZG01d>@RlIOwpV^jdUf{qx?4sGrJsK(5+&`WgCZ z5P%Z6);aC_c3gc&mzGq6ijx4SM)cpBt2lbYy%p7LQuoA5(;Oh)jq3l2p!d&C0vI#d zN^1IGG2<65n~|6Kb&W(a(~~t0zqE@nn+UX*7(zu>WpP38>ClQnbzER+q6P{+lKj%( z-zWV2OOlI+)opA!k>+29Nwk$UL1G#!`9SAjz*rOXh(SDraDPU&wB47O8f>S$m74=V z4PauD{Nh|l_X{dZm~jbs%AVKjU^e1ne`f8+KM`}QFGmbd;7q+RuM)TAJ1Nw^F{zWb zu@{T;8GWI=AX_QSAkl}dY$>{1lqQJfG2RXUBvVC1w;y-0f3w96nyPB*+aL|LeS=jl zRl5q92R6g#(yUeiQ}6ER_1ZB9z}|W%Ou(!iUH0KUFpJm_jL%@QFnRZZ@?(*+3$DH} z{?G5)fCMlJ7&r3sV5DxY&hz@fydD+`m7Zy`7(LGSzJQ*7f8h5!LZ~PFZNpYVnmf%$8r5&V!3FcDHV7yDbx=Pz{&su?eM6hGBkgSrOpI10ski! zTl&O-0o|sWbcV(i0~=PY;Yps#{R?*NP%CQl(o9jovL|?dfWZi&mhWp)R%E&B7B25# z$3VPx{iQnd*5`)5SDhS_Da#i4!K*``S@E>3FSWZ|n-Q(X>n%wO=e<{Y0)jx8MHwD$ zzt7eme`E79!;3anW5`1@B7$d3eaK6eG(W!is|;m_nlQe~)-}KAdJm;H1L`}wWH=CA zD`a4d*|J2O_UTLN@m^R=!rm>bJ_j_?C>8E6Fe zGX&NdxC+=fr-c_OnDtg@9h>j|CJtl9aiFRiD!<4l`)WtW5*}2nT>^qpkmDvPOj6g&BZr6=84T}iOBy~QKc==iMcFo3r znKs5LsNHK@nmc^Gb++E}rQ~&i-^w>rvNIFPGdVK)kD_R~#fQX*=uY2rMfdv(m_4=G z!(OPUlokY_UY zc{g1@o6or%*);*ARxULnvgj-{_hj6b7qb8}!m85#PtYrPsaS;CB>S5Ew!2jv5+(eY za}1dCZFd<<>!CMWoFevouqg$2q zKTOK6pI*xt2K~v-&Ln~S*ZqLF>qOo@S#)mw1!y*xaPWyuuIP!(@>O$4l6EVaoBcnu zxH|*P+)=v6DA|^7$8%(+c<;~T||F28nBv_`S+h% z7_cs`a;4Ii$`n^%<5FJzsg&kd2=i?Wz(!>JT$z`YEuRDlY9+%tu0jH*BSbXhR1@Sy zJTZAJdk6Ia7{*!>zac3&dAN7bCdJ3oo|-8FtjrnERk#NtA1CXp<>WpPNVG)GHdq@d zXF6&fEMOEQN6|@0{u2HP^e(`%-ORnP0?MFvN%;J$9bYIN(E|QQQ3Qiv<7D#l$Eo>` z*ZxL1d$N>izoLC&Yxa{pI+3!3EW$3xAmVXv{@h{hgl*|Sm8brF8ClnMQCTfz-aQh5 zHT>u4!0g{=o}E)zrtc%4v~&q_h>P7WFr>b=K!c}&FU zN>K?CS|InWH!WO;LOFi0Z34~a39N5uajl!W@sFg|E zEUqU83#jtP24`WHTa>>I&cXWryyrPZxmA!sDTyuNreh+S9UJRed_?cV}H84HIAx-Ql)B4?+Np#TZ*n>XZzq7l_Q?^^x5FJAOcj-i^Kh z+SRa*i>r$N$T!)s-+_+4$8TH??`Mn&xMg@SE`MtHSQ(MiH+_gI{`e(>Vb-2SyFFE< zAjsdDuX25T*9oipg?SRSAM4~2-ilk;*^9$@9zD@)&qe^qb&$Pit7at(2~>HQ9b*Hg zSLz)^@23Q=$8iv#Kv;-S<6>;e^>}JmHAziaYJPHk$d5BoOpSU%)ijHF-phkF2BN_A zm!gP3vWT8JrSqJM$M|RQQ@fsUJC2rUG zLlM@Lrj<`s`KfPQ(fAV!?=C~ukmY9b#i`ME=-K*ppPNrJn(HX%O~UyOmo0_H3(2NX zk)E^FKmfi(pRzKz$ZIYnksjE?C-NGO9lJmJcRM zSJzo?+h8$E+=9t8bn%AP5T~5$p*&uij25r3#+b)am3m%%7*nV;FEv>+zxAA-*`ON#C zc<+Ort0Oco(4!uv*a6rT6%3o@7qOH?^nDYYdEd2&q{4H9bDN{k(qwPQ@ElRy@q>>j zh^NH=%b=641;j4<+W}1Yi>9z$@?6cu?w{9L73C})Yu!xZ12Q{z6}-l49c=?2^lS?@ z|AX1MjR#UaP2o|_Hf!CEfYq9rpvx}M1I5a)Tis<{9v~DkPVDIkmR(82^6z2iV*NSx z(;*zRrVZj|#sXXXx;hSnVafyr2L~R^dt-FnZzAL?w8K(OKA)Arm3OD?89VlF_gloT zrnLCvKFJtH*<#!tl?NySvnEogNedVZ)>~8<1R&c$D?z^{P{`|e3EaLFq^U`Hp^+yY zp8|SY=4R=s!TR$!JD1b-WPEZ39BGkJ0g#Vr;cKWo?grkDj4{BJ-N)I69Tn>liv~$o z#1N%W^0iI@-~3fM)RxLk@7`tZ2xi0*Fr5tmJG_=z5JM#WO>(%X8k&TH8NHmg??|niAe$|oX`a? zT>z+H#lj&*CJZ*X_0{L(^>UDwdlKK)JVzagGHjMXcd-s@*xMOy?(omd9T(ua6HcQA z=p8PH2(opkMG;u(G1-P#ZOgU!3EicO*nYcjtgyPhGSkw$$Qyp~N>-O$UQ}qWZ=qMv$p?jqtbMhi0%uI2> z^v#bbL!1okax1QMq*X|k7Me=qN$@U;iqc0lpbb0f?+K@&_rX?TB&OS`u-eV!;;W8v zTQ`t8Wb(PiX2W3G>0p{$-Kl~4WE4k0;|cI2^Aa*+2Cw&2&0a7Rf7a&%P$uaxh|~=& z-44F4WkC>$(fUd(QkN?tJuv?nDf&8QNm#m^_QnJTyUsQck=#| zx5GG2iVp$p9P}_a>>GHL@g<>sqg0w%{9z^oheN5139Udl#7#oNUQ)8powz|&{(Y?V z`0vJ*VW0OgjbXZO6>W872yvsq5x@rtY_0FJmAUPTx(5c%Z2#~Nw4fk4FY?uO4qW_Q8uX$pYs<~#+LWt_T{2Ic#1ji{Y5 z4U)pY`Cb9n?D$T<*&p}vU=eq~GleR73p2=eNuQ;nvTN!m8>$lq88H|2xrT~63v(t5 zD=Zf8#C&C1K%ZsuenYdfwXQrhLp(`_cMokQAMa}gv}v9%PS|b%qk@pT`r%Gs+fqoiL}MqcPA0H;R9)EMuCEPp?d zMzj#r``groZ_4t+ufAlGDM57!3G5cf(5%DbG8L$jC&F9xideHylpi|zRnu%R_42a3 zf&Eu{+~1LhF@Gts`tRwFSu#-n{+c4^voHxq6z@K&V(sdo~ z;l7HOpL{_xNml5dY}XfpU}(z~f8NIfz%f(rl)}uPD*>{kpa8p@k{>y30i(zDlKO?{ z7Iyv}a!Z$&BIp^O;6W;O!acE3K;SZZ?@;nR6OmusZCp?gRXRYUYD?y~q1>!+WBTwDk{nE%B4$vN# zoyQdX%38}UFL+me5uL9LG0xGlTa@}`3)#uY)#Ulzka6wHN;&Q{lKzTIf-`CH{4oL- zXK1sPl;)Fn=WLDI?7QW)oSmIXVM#v=B?IARltwq$jIIp|j4@kUv7`qU8R$K=k1@D{ zaDz05zWo!iCuAwU_41K9 zY@Ut*aF)kk8V0?qgTLy64f$>$=nj`%PBZ4pn!4^=_bxsQ*!(-V zO6;w(c0W~|iT~t<_I6)=Z>&REgeD#^EZHww3L}GLIzGBVNh($pp@p(uFoTg>l|5~! zN5BXh#ke?1*OJIyJtHkzMKV_9S)^lP%vsB+K?e0}d=yQ5>4j`EI&eDFx&7y{So7^p z&X%_0{mB>#>U3A|vgtbSEmzTrBjtY}@HFjAw|79&QTs420XS^Tb(82w#==0Vm9cn8 zu~3Pdgb5h@a4NdrGEgsa|A)5YtDGpt9BJbw?AGrmw8>n8g_kD96Jd~fuln7Xi`lLK_f*LE;xi#; z*;6K_OP|f{l2k#@kX4BEvQQHRp0wn@LuaJa$$h+rqnuvivu!%So1|son}Qr#VVjOw z_F<%7b+cer3nf_}DoDI?9JKmmu~OnJA_ ziRAyjC-4?A!NDzWSx+7kmdgP%_38djsVi0=bO0l~T66zawq$D!7_=DI>OOkuj7iix zm5_*A0<~xObFdh*DdHGn<~}V^FYk_9Oa|Zun=PY-UQUoH!8yrvI8>vW`&?g500UsX zN}~a`jp_G80kP(Y^6_iGCqW6Or<%S2hk|E-_xx`F=rQDY)8$DsCUM2`JhOruv=<5d zsm~P2G*Uzvsez@Z=H|@_ycg<;Qh#r4df{+@cVCPi>KV5`>s*i@)KD{oQu$@y}!E$*b%y#UbY-w`u z?Q%T!z$JNojDBiQYIvVV1XEsVm-JftwvVCcbvPa@v)IQKU5SSJ4B#};@VNN2ru^X!Ddh2Q+XoB#Vr-7M92egez5c#FCh z;&oO^i<%D0>1ny9NCvoH*HaLa` zKMkqw9;>`nne1ts`>FYLNqLEPSPwk7(>agx&-2*zA(svFer2ii8$9N z+hY9HHs^K!W00rg(pPZ0SshlksJ zmSrUOv!N2h2Dk&^fUC=XwaBO+J^g1{)^@2~wk=PV>H|dn^iQr5^OwSx64(51=%m2I zUvFb*Xc7<5n}l!eFsa_z!Jl=(8g&h#3XM`l?HA=-tvT%OsvblvGbEXr&LNmeE{n6{ zP*Q6u>%WcZfUP~P z%k*0-t&5KjK_3gF^Ho}T>Rjm5^%mVXxW4^pwZLXkwD=@4S^3Fk?mZ}6fj&;?*%bPk z0A!D4*WYzHPT6T1FBYcn&WHzJYKk5gr)oyu>R==6}Q#_%npkRET)7vv6?A zlkrR_^hg{&2$r5u=qa7i(BS*N_XOV;QWJR}l?gZH*(34Xa#r2=p6)4*GbpjdOozUi z5i!5oKw#<63^j=@gntv|K%J^q^FHAJ84)MN{|43IIx&*UF7a6JM2ViWPh1d3L4#X7 zexQf~I`?uN$GxHXOasC!2JMd_uUT|E(4K1(*I}Z) znf4_G9wzR*VG99~p_ieCHPze5$Rv!OsBQLkFYOBwl`$=FdjfL^D5tW0GhESk-KR0i z{f&BCLu{Y#vb~S-vetA|cI)C($DDjk_TeGj_howS#imHP%!Q))_oCwtnN95OPrhMfW*mk;vE<1=B!OOnGgDnFp_{MuHao zNTU1fjpk6j^JhF2(<$0}L4b7XB#pR4x+$q8=+P6u>`uBEyDX(0wh&v^x6~SYn#aklGdRRs(ab9 zzUPa;IQ*05Js6IUeoJg#;nFGr)`ZvE&cw96Il@PHZak?&6QN~BHK9q`FN_FKP98_o z*?Gs)u;*(eyPrF={b6>uPx%N4s$#zVxGG-Bhvf2g?|#lFN9H7VzvDXwCOURQ`);17 z<)5fy$4qkNa;1@TSdGOQQRdyx?zUAn3z68nJTlt{C ze_#SdpYqw>&K#iOmSeN@_iY2Q8;PAf)O7h$6SOq!?fGP1jIb}01NuI`Y){ZmxiP{$ z-Z_@Jy!j|9J@hIuGSUq{SCsD--84o{6O?A&jQ|>!1$DwsMb3j5u*Q@fMrJCQ@u;yR zGrVsEk6Ims0G_otITz)x<$-3o(S#c=gw;@!(9?BS%9w+qm*hl>43_YsYw{woNVj2n ztMZz^ny-WBFq+lT?_Iph=x4FGts=pRV)SG1@Rfiy35Pt;@;j`W=xc*Mak=0RPKoIZ zos55|SicpcnbmceruFWBIg#DkZ+vm@U$jA^Jw(l?W@T~H(o0sBfn@T5N}kFl{?}e0 zG~7hyC598#^vb^b`AS*-z1NG&Skpp%psB>-)+?snxUAs19U$jQUn15M zTQEY)RWrVae;s~RC|(=INwVa`7q2M(>U`= z1!52kO~2F$7=0fZ%s|kB4V?Lj>F6s<(`O;iLJzVLFLB9@0V#GY)-HL4Z=Yo7x#^)u zFA#UW)mPIggikVUnQQlbxvwciteSbQh;g~%;Oy&k(HDL?Gv)XF!(g`@eCRUOh~K_F zPs)VwF2F!L*wKe75Q3Psw>_oE_B*AVRQ0xXrk{+4OASA2Xz(kgtSqODMadb$%Mz_~VgwxLM#=@mZlbeSv2_^RRG_bT@U6=rCHNIByKXy2#kQ#H~1AmdPytP}=suA*jqu1qr zIiT|HX4Zn(!d(h%OVRx);d#skk3{!Tc}$`rBVs2*=A@%Cvk?sm3{*JH>J-gUl1Ij@ zO;xMXZw!8im&S2ciIfWFR%4?hSbuPG!O3XFEO(6A`F}3J>(g$RBmRA-Tu{i&{Ob{M zj`Bx<*%aXOrbAH+^~{+UKLWxsgCB)ax^~9XHhr!El=G_wKDqhwNE4ArGDqvyY4&~U_7JlX+PDgz z9Dj3=CjQ&Pd^E#*r)Arb7u8dufp{{Y3GL&B>dlGT@wQp0X(Yq!cYHnDrizdc4vX0N z*mZ9p!Ga{bOLSrr1kjuoI>}#q2nvk+4Y59_t7z+&8@rbxf-k2js)aU>;K^aNaD?)F z%?>zk?%f(&r2*0ln&}`6tgq-_#PtIza0o(6ZrK%Sh&@pnJol0=4>p&XQq%#vphA5}~DDoJ?1 zL{v6tB>93t5`-)fd6xxIuS1j%wIV((;l({@udK0~_y`RrWGQ@B+dyu3WJPWp7Jq(w}7+nd5%7)%=_GQ3|$p; zGsJfP!OxJy`-O|n8m=45qi}%iDyqqocP$YMz&svnQQR6;Si~@MvYu8)d}N84lN3k$ zwVUR#)e$j=7s!m|yL;Q0wkW7M#8k#P$qEHy6P)wbes2!`%AQ${@n9F0plDfkLHR96BaFTdfSRWVmE|foQVY|4rK8K>6 zGvN>1{DU`dxUPJi)_{sqXQ|fa>@HR4NP*EPbXAjADHe-=Is$KH;;-kGzd+63oYUJD zG@uNAs&Lj-iSqHU!d-5(4^N^2oQA*nA;`Rxt4k8Ep98=hQY87A7+wx~7`gk_fTn^3 zIOx-APaJu=a~I0q)<#!P)v@M#Nn`}UtB`1lr!L$zl#LF$*TZqKuR1p?6+=M9jlLVK z)9u;;9aBrHOG{AaLqI@g&c~uCS+XFoo^YF;I$PNib2Rukdi-lmTcN9gRrsv4r+8$n zyQYj~3|kq~5*|;D)O7c(FO<9)^I&0idZi>AOBHTH7zk#H+0Z_uJ$Q0d8ad9uEr3PxR5AmhjcKNJ*Jk%i?z2E`r`h1k@^DbYLBZf_Tc5_vsuGb?ON{?g8r8Srjo7)FtU-tjDOfh|(;2^VyBB_n5Lpoz4a5=h8_d+_lF?vk6mvXmF5j+pVvGFUQni65EpUN|9iPat6|EvCnS96xs8dyAc8Y8eB6&NSOOAO_A_&Bm8axTlN1AFYO-Uicgeoye zNnK{J?$m#BhlJV`Y0bK3he$A0t4|c6TRb6B@eLTy^57*Ea_{03m3W=#%WT2Xm-V&= z<8wqVgkn7$BSSAfAq4-zEyxr=1LRPj+Tx-H(S0B0Px^XE*?ILr&jBHGhXt70X&EQ+alMmZ5W_h($NX#sso44V2s+$l5CY$5G2a$Mu^Ep|KF0C}A zT-IBPi;6UMEBiI0iNJvxyky6<1j@VCx5fT;2Z;h-|B5HA=pbB&EuZG;y)z(}Ch5GZ zf2gNi{&bBEYF~!1%KZ(LA;1CcQzGVcTxOo?oIZDwQ!3XWYmn;#(>AEdcvdDusv^I) z%bUczec*pE=+jyyga+P#b1TBj>t)#Xw%Q*lIw$jGH+L^W4C=1sI>KX|2Vkek?U|QS z!chdzKk;kf*h(I+uF)qHXpLBC_&B@90>X7;%!0{Ayd!HMn@g|zpkT(0KQ0Lst1Ra| zBbG4tgE5_=IM3qiE(>cq9tFBw0=fwbJ8PxV8THx=$^P4hUDJ@KOuaErw=olGeMO$d zV%HBZsB8>yA-qUX5+;o#23DRMYeMjao#zSZw8t2d(1&mn=nwSX5_E}CTX~pe=e<#S z>E_Yp_`gu8vY9bFCUs3`35yqs^^Qw-J&WkLFmfIj^QGJ=;i@AkBaZ^BW_9o0u7}o> zj)xc>mn9B!Cyx$aS(4eNXX_kHa{h5<_wLl9`qkb?<>y@=AeSi}Lhv*THpacbeVdnK1a|W} zbrlkAyoR5un5?2$nmBmG0dq`cDU%vawk;L^?fCOsU@bg@iVBwRvyvoL+NIOtU%u_U zd81h4G0Q!%TDzF2VV#k7FCLV8c;f9Ur*1z;QX#2me&hEhU?%DtI6TFnDj1C4)?AJH zg*7{fD)3dNcDB)*?@S=Y$2c`j1OUFd@>}tQhcrE1DDK@~O^n=RpWfOQBk(lJ)xgqi z5Cr{2KI1zyd-K5#C_B)~-IpZryRBk7Z`XdEU$?OP-BH4J7Nx^Po=5)R1zYwg7WiNM ziO5$KkWMB-$CzR2a?xPTNGfm*XD>k}cc zEfH(kxo>E&N`34;F}xQ3*ayWntr41omaAoC1Sh)&VNt&BDUh7Wq5B;JWZ-^ETbuVg_btqgdIw0T4DFrQISz+-xL?|0XE zlZx&!`1>FPj9x_8qa&QL{eHGXo(qn4^pyIq&d?=g`~5(<8a9Ee9r7xI7*#M49tW|vpr${OB~$yfap)i^Sysi{n||zJ!3FRRNe1(WpvLOsp^yB z@#X^1d=mj23=ItqVusl+4&C5LV;YnWJy{*xKsEIN4pcgH2Trucq=+gyA((7bIASM_ z@=daD&UWHW6gP0jNVMO&LtRB%zZ2oUAx;C{Kc~+VzQ;-(lGrtKwv2NPxMSB{E{SV9 zN{gg-@C9r)zC8|pzYcp5rf#yaLn{xVVekB{JH7B}ubfJ;lOZ#zp)*F54khnbe11GR z^!rl>1X1!PzkP^fxHpHV7FAvETl=ZH_D6#*=dg(4WD9E|9%hW`=R3gCy?EYsp~X>* zWjI*PZDAASQpUUARn1 zKOcnOId1$hK=ubwFJAGSSQV;$XW3j1czE}8f9i)F=2A^tZ3cnhxfKA}Xu)HibVG?K z_X$kLHA$0(*AGQH&?zPpj{C|^5#|=YO-7KCj9!FU`-wwFYL^VZ$dW5lZl;pNHpTwW zeu?4`ziTMV@ZrVz=q~@SmP~Ze^0~xIA)?rvu;6^P(+vGWS-Rl-D`nvhyv3`#JxTS+Q(e;uIVzRdN z^TQ!h?4EtLBfRui!@Qo9Le%34(0=|c@?Sc1Qiyqb10TQ&w8z>=^T}RGJ3<9Px){QI zOOPA&KQF@>VC`77QxFMRye9>0iP3o3Vl``0`jiZ}VUz_FzLMGo!9Jb;4wNtmm>hSP z&gA6VC2`TvK)|j=yJtUcVGvPRvkI_{jUloL=aH$CA!N%8ZymPOc$RDgH|3A}+RE9< zZeMJ~6f!F2!A;LD@KS9wzP66o;uQchrSR9C>V^U_pz{Tygdhui94no_xQc@lp?}m| z5G-D3|8+DF1BCX5rO(PJbxq_Y03K}qiTb(#pU8KzBmKFYSV@Ef0=8Gs9VW&4dAver zE>vY9aC*j`r-|vVGsvN$DNmNXo;i9HyKNqidcWuwh|Bn^9v;``U`@lz-UVrOH=B0#X5UF5uanxHcP#?PTwqE9+{zenK#GA3bZVIKc{1`8yXN&(j z`tGsPkJRWsRxJ3dr+6@GJN+xfyib9pYt5K@`kuty0`Zyfk;3NwIIU(wKbr$a$j_Lcv)7R{4k62WoIT+$%K7ON~8tMoG3dDhP*9Q_PozR4& zg_culp!=1RxO@@RGVI5G(^zfrxJUYPTc~n5oO`a~E%XNkGF9Cq*k&yqe)ZRAJwcx? z>*^Y8RJ_K?5zbVZ^{L}C4Nab=NDweEP;YV`SH}PB%}^-x2TnTq=~H4^K%IyqE~?cy ztkIqn_s9pDtWoscg{G*edNj}`&#XX$LhA-DPCT`d?S23^93Sp9YeGitvWf)?U^_lE zEFGIf6RvktD$@R7$A<8UOCiH?u2|=}L4kpH_&O)q|2}tU&Zb$sCd>VL+Oipl8aaP;Mnne#|SRPFVNV-#>*gwf&3mfb?p~% zYP&UQumI(6g_k1=dDsQC&KJ$JX@2*!?O*d!fbCpgcHrOYau$O238M#66{?M>^KbLC z1Pw^hOF?c4lgnmw2fDyv^2dcpu~T*fXfg`l-WVomUkgF!%y0UpbyP)88XOF<%<@L{ z&~HI$rz{Y8gNJv(0FJKhk89%=&~Lx|6lyupMh!}1_Bd)1K5OH9jZIsx_fk5P1FPC$ zRnKm{oj7Yx3Vi6aoBrEqV&I7HmjCuI zkM6Wq$vZ~@*u&0hY2OtzG4A}0wW#sMG@)IkbDQI{+hLoYtoJHU`7Bz04(96fY|A@?6VfyJfyFWLq*#^fCWZkC{zU^ z=xN7IIo;(tx$MR07$Tr;gDJxY7`S zOO23#8M*D^IWC8&ItY=7X=R+VYMC@aDGl&4x{Mp!aX!#V3mhR-4PWfkrUpB}SQZ^H zET{A>H%6e5ET%bXwkEo`*S}c07Jo{K_ZRUFG-Gq0p#% zqFT4D-!Eb>W{_bgw(H&6{+Gi}E>TAv6m^%`kTGu^*8|;!r_B#v?1*}9$!cq$fh-88 zf5;5I|Dedtqt0v`OVFWDS=*>Pdn;xuz1Q}OX zpot(#{f9qdCjlD3Sk!tWdWQ7jp|PXw$fq9n6*gm=LoBF}2O~`Q=4dgD;WKFi=Z{6N zuSC1aNUE#4a7-T9oe3M};@Cwc0IA#ZKzBEP8c1oWJ>;~k)7_lKW8qQyZb zg@T(q9%IAfuyGJA$HKT+WL+FJh43`R24TNAIO<}AmrHdctj9! ztZ36{=XT14Q*`x;m=NsWhi~EjavTjL_HA8SVnI`I=wDb-eqZH3{AuMmY zj$lfmT#|;Hj>L9rOBxTptr!r;4)3Gva?bQJ6t&tD!*eU%AiVr{zIjf4$VrsJ(jH5w z+%gc5xzk*9p(K`Erj9BfP==kRvv zdah_R3NLVjy}Q5#seCu8o~OmlUkeuw!C)j3|L#7o0-7-OlE}Y~O@zQ0rCpSorm%-W zTg3k9sH~5$fgwLjl(wP3XIV-g#FTBfR`^od2r%(G8=OA!R9#OusKJ+SQonLl zma%O7ktA>Pj9)~b8@sz1NBkiYEDhY!S*iPsDhs+q=Ag|-UUy2&AM&u z-(-B`XTiZ8uH=lR?U}71_cFa=0u>Yr6a=l;agCcs&)q74k&p+3VOS+%41ncq5W3v; z7{MyiN zj~et+kS-8|^0@dwS8A6IQ*}J8-_BMtmFaW`&Zjnq9(4p`J*X)a3n}hN0CKWIA#GaO z=942&qIXnRtY2}%@$yqxtb5cc+CsA{>0DW+1Vq}p^1YlbAdGJDdprh`nyRl<+Z*8) zFMBY^CPMis4TC0CuHZX{5*0v2SZ%2UtjndL9x~1Dd>{8y%HYAv?!5lxy#H(f+HiBV zGNWnleMmNI1+fQ6GM=;7;vV{;Uy(s(_@=7gvk-I%`6Mi!58s64kpaADzh1#O|ZT!uZ|Q5JTEzBUwoA+!?# zX<{vq3&!@!9WcW!=l!gqQAN&Iiynxb-Orz}b1=JK0y4Y%cq49v(bpG9<+T2cONI3j z&9CU|y4xMvve^8{&3tuRjhbZ62NZF}SW?GUoQl8Vh5F%Xkuh3BGt91@P}5JPsa2mh zL4mz^p#82&SkDIl3xEbHUw)Ej-1HW0a9E9W9T&lrn7{z-Ta`JdJGfqWmLSsoj%_Z_ zicklBaJ=vha$LI$euKSh_}1s{MfkySv3;tDVWa=6g78=>N$XGa%iL1o2gx!G9Z|K< zZ8qeFh2d4ZJq)wCs2p6tAohdPYmBN(hfCgn<*bPoWo%3UdC9KuYmDx`bZg4B;NREM zrTmu}?f}3d8g0*K6f!i35emuYV>f+}Va9IU$aDEfXmmGHx!r!c7BR@Hp=!ggn?i>! zG236*=+L!u+QgRf42&1KjX%DQ=?!`0_cmuP1ruI$~;8TX$z3>@NazHFTvwe3Gj zBadG?_Y$OT0P|q`lvgTv)-e(r_l<_t$G_fLKib#g7^U@cf@1hSJVt5_LDYVx_>}YL z&v#+-8K#{l&47oru=EVW#8&-NZ`$&) zEa9bgeQ|g|x8-Y%=s`Wc2p`#>+MSsi^b8EO?E|`0h6P;}99RbN+nIoRFgQ zc$P+;lO&m|-(f1EB_yR2a4Lzv*_qbKRA>gLGZ(Nob}*m{9!pmcxYAb+IG{?-X@ZpD zB8tlaTD#=Wcb1_LRg=gzAIe}zUI}s>+aTN{;N#ymy4)s3k=E7h;`;FICZJ~>`=KEI z9g@hUpgXIL>sNKIJ`|Cp%MUU(K?b!s?=@Tp?X8CEDA3f~zLh@nrA#&OK(A=ps-YYD z;jZE-c>ivivABgkA)5E02|>u~q?zb^>yo|ekoz&9lNE`ugxXl9ISf4v$ zf>ltbn(=M0P7GuJTONF$7hzWBw;u%1nxkk~=1;sb{~d7Jd+Dva z`P^Wm>yPI7blYOXmt+cmB=?lxJO34O=qVBl;G>^Y$}=plz6?mtp$VHZBOVvI!16yX z3LuU!6psAZ%+Wd$Kn>A6lUk0TXL@Epnfx)ZC50Fl}Y?>3!nJD7nqigEiN*^Fv0c>A-e+Csl^ zR%Y@-j$pa#5TH5#EI(sUlNe|k$w9_{3>uWuQ-lOOos7#TN z8Q&R8)1rV46b?0ED)U9CzaGFkWN9iC&X8miFmTBJFa91{3BvM$0?uCk+0w6qwm=+T z8nFKKe7cHon(uhzuX_W23e40fMK0%||M9vCZbZ>p`8-m&^`}|`a0-$ty(F=O%{#B% z%$p3$Iz)2|)bC!Ca+CdIZ=(gAxzRj}-Cbt@hiz}^?`sUDV*+`I#`}8H^vG)ja<-wB znK$E$r?iAQYar+_zC8%K|M7{<5=&0;V}*JzEP_I}s?~GYbD;#;c;f2r^)YyKYV&wG z%p|hj*3xO!eR<-PKwY#*$7PFF#sZDvur*dQaDz&JqATt9;6l%m>o&7_#{ml%1a42_{o;9Hyvc` z+BS0m2GdPOJQInM8~6VeYPP_i$XV<9EODR2W%6-SzK&CCkM-A+axVq^mjSu?NnD43 z3joGv@iE(!z{cC+@mVzn!m|?iUeURf*bU*#PuB@OOTp=QU1E}-356wGu!BlCp3zhD zdZ_m8#;(CWwE#RUh8sS<`iZe&?HX151?2pDDltwUR7U`!&5MF;zyc_FtA&V9nJEHlhVyFQdk=-|03z;#0NZUQ=gA7E+yd0*?Z=V zv26isN1(!@Jz8ld50lJgr`)2VqG2G&^{_eV>4SEAcBD`47r1TCuJ|H@d{0T&?{X(_ z*-&$)aX^62&_C|G?YuHAxZ4{6MDAw!$X;XMv)#Z-iYxL2wVBl&$jX1zzBLxCD0?`9 zkIdD4PS>Z7#%DK2`}$6Ec4;xX?;b3g*6i1zoi28ORzS!5wRdd)+kc5s_Z`nJ??2vy zX;?l(q>ROw6uyvQX)S@i@BQ1m#q|fVs^cHFsv-oWShAaBX*-iun91}CcYTyk1pe?; z7&izI35M@J#dE_&GMw+57ku~11L^kV5Q0y|EacLf#znnOr&UdOlG@qFV2vM1S=ed6 zsY%$%^~;#pd}5H`QtSr(#9eksIo{CC3Xe_4=-hf74aX2yVh1E00DL~F9S4|eX9xXd zOW02rKGwpTk2U-FvJ}K4`eUi#rDP6(@eCFc8E^M7r$-Gj(!_GoV}yukJFNS=FZr*O zeJu0?5&s6dzSZVEKTSrIJU8Yz>vF(Lwd(PKTvee5>NbGcNOu2Y5jU;DDl4wfF7SqP zBCTm`{Yam{=k^#)zO?daugnb2Zt!!*?FEP8aVmg5Tb=L{<<6C&PMxYeH}4OO3MnBFg8Twe@^eE6Xwny{xQog8PTiA~ z>zq!NnZX=j`cTl19q~DndHEX1_S~)F#-dkhxS0sd9X8|stF^Y|<1)##F@QM~A|ZA2W$6iSch~+%=|A-@5NT=|HLr z$jXY?fDXMYBceVvGsIT(-eRB?o16h61pj7Y0y0q?As2{}ddv>n5tMSZQ;2wXF%p@W z#K5McoM%`lE{?b~$5Lk`KRCx(@pq+d0;Jj|i8EoU`+EMg)9+R!ArF=LRa zl535i3b1Pv9d|m(+tm(DMHGf*C~z?pTrZJ^_hViBGs{&xBk@R##F5T8gEV6Aw*xOQ zDPI1^xk&Q_x)pVtsV~)Ee|_7`o+*y!$)l21z1?QHQD7Z3s{|&ZTXr7off%%Da_&hl ztjxMKWG#G`ELUk~ym73!4N1*&^1z9d-Ie!eKi%(=Ne*kzdC~uh=26+q29nmho+kE9 zShe7|yhPE7%S>94e;oMl28ju!k&(nvfbtWUi7Yb)j;gKzcr`G@oUN&}Q&K+SW(U^U z-??XJ!vAFzmi}<6?tq7|^_U^PgCQb= z-B6KvZWf0UjqW&>VaKr3VAZ{^y|>GYo}`%rLe}D>1n^lBy#xM_g6Is~GM+J%$Zp8! zF^{a)F+p{78NN7EDfacX|J{@>cAe!@gdvEagpMs$#(|!WHL7`0piIP-RrIQsvTIIc znZxtvQpPyfcKm1ji$X+;_{`s@@U7F$t^jXPVF~&^HR|uL5b&;WhV!Dp!ucR&_O~P6T2dZ+vR1+EWd|sE{7c0IL{^h7cTTfk9(EMo)2A!^$ zhr$z^2_{h6NyqK#lr4$4E=tbrx`qOJhha~LD57^5-ZRWjto_}>ncz^<|uvy1-K6YQOvN*<4&dP}Wdv%cV zB(~I2=Di5ZWI|YNGwP|X_B{0uZAarX+UEorS0!pOSBn5V$c=7+UQ;a@^SKhsItddC zjD}$ZLFU+?pbsMe4OHhg)fd;}7VUUk@0BjrRjd6H{b1~p;>?2OZ5BA^?a8D!)4Ly+ zaQn;d6Ke;b2?@`HF7OQvv#d)Z5X3S)sSEePt)~CJD~nd^nO`wa5EF=`ED19Am$(2B zM4bwQ2H8Kbaphd=Y5(;apn7mk2I$6>G<8!9?^4eGgs5zI`okKXwie`*h6-~9;bHh^ zr4(b!{=^M_SJ)iE3-{v%sCdRneL(^KZe9*zNB}7ipv7ks+s9}*UA%4D;c8vfpb{WM ziS;KYA_#m%*&PUIKCw$dS2sQ+rpC*J$`oQj|1QPHVI@khd@c8;FgA$i{Ck91DP1hU zrXG?;&ta`@GGXII1$JCz#b1sKp^@@c^xt*_h+%~J{$v6?+NJ%Swo_~!n=m?QvCRYP za2OQLRP$f)Vu7}2nNOz^Ya;irHhGYO84NR$huQ71h^*v4;7cXR^;CDzq{G7f<7a%2Wpp47khIg+A#6O(oB6R*8V#{;Bxn8 z55_Bcc7Q9%7}j}94a}ppk+4w)x~1{N?jBFKFSB9qGXy!KeL2NefW8u7&hk4hn=d>} z@^wNaB0m4`^PvJPTEzUomBQy-M=MS>aBM7=eu~9Fu5fF-qO_zU3o7Y1nQ%}}-QnVM zrg=a=zZ-E|c2ACqhxv<6txu1zeO7Q_Xy=+AZtltbDAx0j=ceSZZ`gC23hCD_WZfKz zUK72n=-6ChNkX6oF=6#=l~z(bi7%mjQX@n!G~2=Dwgi{&XrkSWB*U&3^YFI8T|fa4Xd^w@taz>&)uIF zVvRMAlo3Hby>jOtq2;LFAJ{YLwrcoAuubGW#Bp9AEmXwnH-o6nEr?ii-cpPVB|IH9 z{G|d!L@vktKi}jxA_3FA9u8*N#%-}O?+K>K7P85(544?iz>w*0V|o8L{3M|Bgl|3Y z(5}7&bs$CzJHp~0Pz{@$KNo_-;9=?*4r^grJ(ygtB>-gy+bS3RnvXMLrJ4LauMzndENg548s^1pG@{$TY$a@{?&g`IAtXxy5sM3IV6Jnv_> z;Dj`Ed3hNIk^$ zT(Y)1u7wwYg-Z>OuA_c0A*j?8UT2B?l9n+w@YLl=79&`I`QXo|fRz63waRaUWo7MZ z7|Q=O#sYm)#sA29J!YPEjz2wEI`w(~RTX$21fjVMe`jGnp&+IABJS@-X~%j0 z-62s2;_K7jZ+-ydCq@q#+Iw80^;Yx`C%z&;jeNz4I#sXccMrum@uSCqQOMkM$k)K{ z*DU)`XrTFO8Q+7=m!IWFaq+&=Da8pYX11HpHg;lB0J^-l3%8w8R5Vtre*gMOi4DkYy-YAj<(F&+4p$nDB^ehr$;-WxaWbfZ>}kQ#`a5=Ii%Em*ArCxVu0x<9cF%}E zkjRi9H0+$CF$Oy&8iN@LsN?Pf@3vT!Mmz!=FPEQ}{B~l|`qTD1^{Zai9h1GxBVhi_ zEPFw^49J39D5l0L?8yK3Ugfs#aR2&eoEzP4kJPiU&ZL0xa<$4$Ru?Tdiu|uFff{x- zh(Wzr`;ZD!H+3#$3vKgaWVEQ8lurqOhTg5hFB{M21D-lmGZ=d7O(Qn;rF$Gq1FLqo zhZ+r|OV>Nl)F6_!qd2Pc??1}6hNYf(zwj?aB~cf^r}@1Im%4uw4z%r{?gq8A3`7!% zB;uaVt3uUICQyiJ;Sh+$2*ud?k+Pl(q-U$s5ZzB1Kq71CT`z^wdf&+U*s&>ewD8z^ z?C!cQ3Go%{te>}+^3Fppf4{^8(vwXr9)0h4I`htG6(9+`K)+apyN$aCQ64GS*cTC! zPk})Tzm9E`RNm2GN#?MocO+M@TpjjTda^F0FMIM%c~!rv0`jS}320I_pDd}?t57if zefF~$U5&8gfi7y%_~1Inq+Sne$_8PyJgWMVY~2vYzi|D5iB5(&i#g_1A0TOR0b~HJ z>CzRKj-&q~gDGY&CUH4Wx8Bhm?xDXh%+fn(8V!KA80}h2Nd0f3#Ue^Q9fGyXyWGi@ zvN>a;4$zZ|hJaM5%0RF|sJ{@0JzPU&rthJ|I7>*CBfxKrtd=O*uKznKzyCZv`(C&m z?zt}IEvS`3I_F4i`OUhRsyp2Cs4w|+356g$aIn3Oje8d=zCdVGIkwd)q9VB)p8Cwr zf(c+7VaX;k2mqJ)<;$v7eGB{Y=OlyyF5UMC13z(1^$+$wDJtd(e(3s_xR$GPHCG7r z+Pm2n;mE5~&!-FmYnvf-fUu1p{^aU(-FJN^EOzXjHPJ_vRtld;$rNHA3Lf$ytO8_K zF~&b-Ray<+Ccc#{u0sSdSnJ>WQp_7PVyhJhX1q9#EhjFi+!MO{V96`?xxa>mOw1n< zSet-VaBQZ9n5m1H|AxPapUUjMok*HN`CadP1X1{bG3Y>NU=T6*djvzwR8}Vkb0{Zj zF!E6_CbK1<(fBZS@Gu+fC$62{NL)xiB*0YRbU4zJ|LM?&iMifxbQ zK7?`}K>g|Ue>7cXRFqxU9=cNm=}sx>?vPHA?v#@5ZfPW?TSU6MJBAMFM!K7s?|yvO z_nWo&G3P#K?|tnn&Zey{S45!*Bwl}!f&ENLjmNtLio=h646zgEZ72k5jlfDF`kbKC zB0c$o48Ut`zsQbY2Y^_no948QTug6hUw76*mwgNjO4RE!dCyt)B3H_w;Qr-^!=KlW@)=?wZf@&L5J4Q1TTA!=CbsIMSUp2O>u;G)pQ zM1a4QDe_1AbSg^Ks`(m=F&TaLWodv!Zn?|Vngu;|?b>*451Ju*)W?h$dV*KZ=0o7k zJ)Xw-aXVR=#&ESK*T?Ju9pC)R_AHwD+Br=WHX^t5=<6KgYg8QmfkN)n^-o+C3anLC&Yy>qsPg1KP?t#WYI526T8X^tykrTo@xVHo1 zSQ4lS6dxHWivo897*Z4%lF`!jIm0sCIMa1G!?>*~29^nOVy|xCox_BHGXcoX-|*_= z;9$3nQNP0@V2`zyex%+i1Xv**+DLCxi__nSyC z<^>RGDOG^VIlc8jPi1XJ5w$JkjlwYhr_w1X3?S$F{;S6P2h1cQ&UngtWkDvAQZmws zWuKTtulUV6Z}P*u_2R5eBr$IAp$x`FJ zSt7ylgs^f1HU}gCHEhn8A;m$Mx+Fl6gVGHZ5KM5Lry;wq6S;zBe%=!+X^Vqdnx*B3WvVlT&VpV$_C#inmN?tL)LTBV^)oJrn(C?0lHF{ zD79fai*#C3bP9xT8nehpxApOsCg^$f|0x6dYJb62xAwz(ySZ4oK|_k}%}R^V|G+(y z^@f*M1}-2<)Qb>r9Di6t8J=(|XJM?=pXQ}Gbp^xh62cAXHArGSKEGGLzBzU<>{S)B0e~7?t%pExXy?=Ts?iE^hzkivezvl;W`Eq*8S|`V;D>L?y zdg5c9H8BkAND@wTm^K0j4`PIG@P{63Tzcj0e)n!V%s4X=JLYjVWz!J*lm7m}(51kH zgoY|kqKOhh6noAeuj?xc_6J!T&Y6F7a{9F$-wA_dKMSuJ7`Pp2W($lxcWw|g z?KW9d?w>BL8?(PdN9>ccnaH+C#+Jq5NVV^SN)Xq%#d#<UXW@%PD)1EtUVVyH1;7BN;49+@s zRK0w_Y5aE4Xaf2?x%ROP@yLTERFy+{bh_XTWG3i)@9$C!Ds}F;Kbou$n zahQhD;tC4aBFr*Yu#669_7|@Qc^wL-ku8N3HCJE)Pq?!aN^_oPa~ntzG>6=EBs~lw z&i&5~4Slz0S1W~`T;E&f4Oy)Mp^=YNP{#tOPe-AhM;#w|vAKirGs%#N>#`1-JGKBD z_NFIhs#&R*TAg?tWq@_X>~N_%PSatgyT!i~OW+{A%*E!F1Q1lY1_}(Q)o9FSh}|d+ zbI^`}Cju7u{_7f7gqz>5$@k!{-bofgubVSj&j%l@%Uw~So}5w-oHlQZ4b33Bjx*ml`3sdd{)Vi=6rS-A2>#vwAUmu$|o!3pb zWg@EyZgk5jt*nc`Du_Ij1;iZy$EI-@FK%cXyTjj%;5Zp?!M+Ovvs9^|nn~oUru+>Q zdRQ4Ru*QA!{k)p@nNzaNX1}l5`D~OS&P$lT(SG(f?>l1Btt16DD%4pnP__%**bgmC z>blR3<`BV^iKs?}q|gBc{2G@72Se|_Z`*r*f$|z~yO)&Cy%%$Z+AI|Ks)Kg}!%jfP zaIKsCzvk)0Tr`@S3Ovr5d#W?Q9Cp#2dYfbx(Iwt%uLLe?vlrf7OiFlNn;gijj}2MI=zf$RKZpMauYGTIUbO*1O23r& zR6~A8m31ub@1BYsj3pEbwxEc$^E<_qY_J`)lsw^&O6&XRnIAHRBTsI&P9(O2=b^)u zS;m9DU!FE>1R8E$Z|<^hRhb`YqIQ8`&F*W&U%s=W@zuY1_%ElXB_kTG+&2(f#M)Ig zK*(Zim*6vo_19bS^~&U#kaiedARE!3@!O|zRtjrG`yJ7$L?20V>R-;arzz@qs0caB zjUiD{C@&IDo47k2-yrAPX{Af&HfN1vulHws9m|*1gitF<)>tS=e(OPGATcqhNkKBr z9IRD!Xx4`5#7PtNz20xn=B26oVQzmXGo0YglzaWby$NCs%cW0J3$ z2k84&XaAy$mEZv#=O42z3gl%-KTo5`6<1g=c=>&r%i||oZI4%PR(%(olo}>Es;FS> zikV?5&bTv7+P8a&94q8&qn}0Ykx2Y+*;8szIsTsee%22DNmhOJG^Tx@pNSo(g!^u% zi!z{S8j5fyQX4G^?hMwr`6I63;;mm%LrOg6G~PZ}oj0YcK}Jgdb6!>VpweeCa1K|G zS+g$P1bf{6PoPFA%#`jKKp~6$QlI9L=nV z9|$~kwY`q#9tJq?hIxcX{OyYqa9@40ZvoNY0v`B2>RfG_nydO+lM`c zC!SxB;(ei%Iqgt6%yYp=qYFZ#Mu1}xnT(tA(|s;+%TxDQa4!)RdQsu?5MuP|N7R5A z=8Qx8%(po4M}G#rWp|;xc{{`rR&0PH?J)-fF%(p`bae|{ic_l_(FbYr6`h|7=iy;7 zrveO&Q9oj{?l6cbe^(BYxR??XUTD*^-9;Dz)#pec$Hwiz%TB;xv6QvYLWf2TzPt7P zB1N%c_Scm}NLk3i&2t7SO#KW9xmo}ZR<}x>X>e$0sp%ZF(sbH;kMsjk%(^11`gh&p z%Y;#Y**O{;iLe=el-H;PX_$5(>%)Lb_{4rDh@asxfD&FViCutaROR)?=c|E7xJefa zw92OID6Ss#Bo#n<1vDo5i+e!M%qEiPL&V>o!wzFr%M1 zHZ_O<+ z2gzbXr&gZt{*3w_exZvmTDGy(_9Z1>ez*8?r+gtS7SITbc13p}b$oGrUrG9%3`AKi zFaxjMC|z@S-TfLr`8UHo2wQ@o!tE1EqY8<@jrM!mmprru$NhVavm3Q0|3k^WpE&K3 zr8zTjKKiJX$bFHwpDRrsmldK4JS}em%De4L0~eLirk=!0-vrUZs|dA((Zu~(=P$K9 z`y&A%ivygZ3Rh0)JdnjLe1+PE2=t+x`qr`7o2f!CiMVkGjiS8cFggw1(zy~1p?i01 z-}?U7m66PHyeKHmA*0X{_fKH6xHaku9>Nk?Mr*ZJr0zYE0q+X((p^92OA|OCW#eJV z>M@$_mCz^GCrrIK)aXV{{#Lp~@cbj=C7K9FqVL|Ke=hVkr7KUH)l^3-AQqY$ridFF z9!uUC_NmE0VKoMO@Nzl9idofU+{MFDM*CI&b^h;}&<2Kg4=?|{Tv)N1) zt?tM_%0VOINoivJh8UDFsA3*`jY{^;-zvZ--7W^^B~)&9dVE@5`hU6JwutOsFSL4$ zB?8v)S_Zx_Jd)pCx~4K$0S1WWK}Y0s_z>S7%_FTa%{uSvi*A~1ol2t{Y<#pTP%ltcScKR!sX zk9&_;QA2{%rQUtnA)Yq)@3)t%8b*gQsr8Fz$-E57-DMLhV7#f2mIU8l_{Nt-G3I#L zy^n`%;@ovTFj4Om0uDMl+Knkpu)DrnZj}k@>Xll2?dKFmPrOFEm(OH{0z63zM&zZ< zy|o{EBPGg)xuLriznkxH3%nC#UfH^jP1DJNHY!@AN~9(Nu=Ij=m_E+bNUUaVuN6&} zkqpVVtsis}?)7HjCfcv=diN7mEdGc(VqQQNoyQwe)HOPfa5$q?@OFa2_!S@(xql(c z!MWT>gw5mpvr+roEE%LLn!c`Ot5l|0pyqh-V5WD0n2Fduql-q_&ktUM4)bDmJdO6G za=hfBav|dvuoW!mMt`mKk4VA|eV0!B13Q@E8?chz)AxU*~0q&R2%j!{mJ9{ekW_2bp^1K zn^KEMlw_^ekGOj9Bw9-EbC9$RJFC?om5In{N2JMNy*62AZ?X`&?fBg==q7CF;`C+m9#gdTTi zkrl>!AF3j1HI7pag_HMvZUVsXjBmO$YY&Fb5Om+87IXNwD5i$@v&Yms=XkS*eL<-om|*nud7AM$_(&8B_^+E1lf#2bw}f9#?!2|tb=kndk7I$qKOF7-%6Jkywtx}5((LCiEEdng3F=D?A*+U@8;w^-)jtnpo}Un#Z>HGeEb=pb>hUTX^H2>u%&7 z9;?ZKPy9eTgfmB-;CI`>^U_n$c*ZtgVJ2E?f( zV#_)AL6#Nn^txl>0^$tC40xz7yGR>KZbcGFu6!W#SX3^iXgYi8hxfvye>WhKv+^#L z4Gyxpl%HRb+r9v5)Fe|Ac9_E)o)}&c}5k05-$;)}$EJC7f zOR_P*nBG7Zk{@QVqMb_da~_et3Hswuv1Vt^>{}4hGNH2^6tAjHq?fUCk;0Cyv_#uu zkLcR~mAq0ZCP6Uab?u}p=oGxNLXyiWW-Fe*nI9BE=1Vd}_!C9f+_GRVHX8|gHXH=U zX3leoP}iI_RC=agP`^;1Q@-)x@TcBbEl@QTJ{ygXrX1iRPR9(gt<*xsBk_e7>Po^= z$1ld!1Wwy?{=A^e;Y~<*e>ppQHOb7n4{j%dUMn^o6gd;URwWmxR&1xpKPsshr@zq! zTP=DpYDNQq0?A?q@cI7WI@%~7hgVaj(ZS!b#OY>iPbKSAS0trfNvJx+FX^mNOOe)N^cB&8f~ zb{fKJOjiq?!*+=*c6w8Gh`$Zmez;5;DB}%;WFMnYrX&@Je7F>;C)*a>>}M{TZbSI_ z>9dia6Rr%e1@EyK*vNLGMCtREw{jZ}DgF6|_b1L`u0P?BH?FF>wsvEtrl$Xu=zixc z9YUq>Y3tSP@m%hXv-+zMU$(9Vfu=z>1!Q?Mv+J%TjM7+#QpB$enhJPK(j?&Q%QXqQ zPdzYIn;JjyYe-k-qW?YB*XawvD!7B8-<5)O6Nn%K*os2vE^*1YD>aPq$zFGV4PF*R zpOqk2K)y94^Gk5N;?>^=VPbPC;II7cQ1-6dztDcajh6UP>*5O7WwuaSRrP$+kyb$m zEYuV1*3R|Eglu1@)S+kmc0VK4qzXP1Biwnr+YbS^HOzU`0(RBU9Oyw(KB zQ4tcBIiEHhM-^C49oRCKMTTsyoj)uMeG3#aQ%Umbmym}shWn+-;7j#;aU*5{MFM^I zB@Fu`qfWhbOm6$N0iW^_XlmIrF6FV5dQrwF6BC@d(9iy=zw=C{m$N|DHBfbODL?+9=?!ho=oVT2tmd!?IC?y9qF=1n=>eMpn0?~D^oz$PIdWuZgL0i{=l6T{zR z;5bmT_TzP7cF@7!Q;&K+53rN@76d~PiY;$DNEc7yX}7(Ze~QM4(Jeukf=uxkzTiG* z-L4`(Lh*ePh&t{~01`TDPkz%5jTl>7%3IeLKD`FNx>*`60Yc9if%`FduQ?FC25e%nG`P55P8BIM(klwjRB%YA0s6o$8 zl5PLZIqbU;niBeNc&UR&=uD`^Xlqkcou>xISm;NqmQOb%G7Re%Bz~EFY7}kBX7fD~ zb%t(064V>ugCQfn_n-=HA|;EWUg3@Q%#Fw5jjiD=>g4jh&T=B4|3IM{-T71r-L?PS z?C@4iSdqYuV7SBL9W0l2j?#5EO3KqpT2 zN5jHb$N5Lcuw%XxA2-pqd!hK9Ryc5UTG}DhODVSi8WF_xBx;2ml$0b<{OvPCQHXrV zmUgX`Ff0kUSd~%jcj^VINN*!2@#96TiuwUkCNR?IUFnfywrc+m1hbUHzszr-`x4GY zPaHY{V)-N(Y)(1FGpdK5YGJa>(`awDyzDb3q0LEct^1MD>V;NLf@FaHMIp(2uu=Eu zO|p1>yv?$fZd}|B_<*rck!CdXl@hG13+$S}SMZSj11ztUUG2JS_F2W4ecR#aE%UgU+sur+hhP z@ZaOB&SPQ(LEs#wWn@8Q%6qWc?NKz44ou0+^(EYd-X5=F(1i*sGoxiwfH?PH z$+@4PsUL+&?oU!)$Q}MELgo1ueusM}<3Dr~{TewjZazg*N=*t^ChrD)WZ0yD z^Qg09skoH%x;WK3rQ}#cJ|8y<@uYD}IAy+`8BIz+cFLOBM2)menfznO=^wnYfj6mz zI*yHn{b3)ok$&9LAqOd%`&=qplojiq+YdPi!fU6-T1;r-@~OG17^OT82uSM~PX;PR{V~XP@e4+VncO&;#>wwMjn6lfd|I}$mS;L?c2>_DyR~odn zJRM=cPZ$rrYqc1#mcDH=N`YOOWKzp>v&0;Qe5ioMt~Ke?#b+TZG<38C@&sOy#pvYJ zm+yNO&JjDaieWw?s-^qaVv~U26IPvuNC(c>T)@w@zHi`Cpz%AQ z^cm*lJHjp}<}XW+`Pjh#!aA#RE~S06Qo>7OOI; zvl3jQl7*>9NtB6s6~$l&U)B*c5iARVZL#*ajCH7D8H9V@F~*rD&-}fEP1ce!iLpQ_ z!Bm;~&27B^N2KBQBbF{!H$RG!g1ox)km3Q@92J8t5v%O|UuY%}$>^H)%F=Sq_qA^J68 z1)gD9j2;6nH}T`K3zs!5PO9)>QWj3>u>!koX}AvA&y`m&l2N1~;nTr_$>yARWW|o- zdV6dvab*_7A_7*->au=eXqj;qi)*>sSKy}-ash+od&XaYZIcPe4d2R|4t5Mel?$)Q6|=JJs$#p9j!c|mf4I*ZHg{Ab*ukr}^5*Aj zISu1o%!(TO%%ms?Zx&@X9K(>yR}L#s27_i&(X^rZ#1d=TA=g0A=d0Nf!*$u)|GmZ~ za*~3oQ8Xx~=2>|heE|+bWTkRr7rFf?J(^-bCG#T49ZIT8bLX{TR_<(ivieWUYMXjHY$UeEj|UYtNzHcA5Lr40)lX!ZG%3_gj9d4oAb=BueR*`HD_w;dn!T52DC`aX_ zk2F*R05gKon2Ss)FXJKUdGa*W(K4P#J*5w)VBerz=qej~t2r01GEjLl6KinDo_nbO zp6W|-Hld>cuYMni^b3sZZwn)j*ZEbCjlK|NfGkxJ6};(| z2AEG-2$K8Q`B>6V=8KnkFvBB(Fs8E79|DurDMCq-;Q}pmxQLV%9JR+r(I%tYIHO+!n;WkMOsm&Y2cniB`DgdjNGhvQOx z(?#T<)THfUhRXAUx|nb;xi-LitZffHk6ZWG91cZdnShvV(Ly)DUW1G_zQf4SW!9b5 z|GtTR7?!?(EbNG~t*(Y<&WjH+@iv6u9R|uTh`?{!4q@T_I`+IiUh9&&Wf|_5O?cR# z{;`bXQ;Cf%gfA|t7g=d6GN4^|)@E_db~#3n%H@wO>awWr6%>HqDVb%`VqALm2uzo4 z1Oge5QI050u)l5=e_np>6}juG%_VRb0hhCNj`k;_9KCT9+wo+LJ2n=)b0rFei90o? zDvQxvYO$d2x*zKr6NR1{^}m0jQR7hUYg9*Fabm#p>wF#B*d{iDaE8({e3FM_hv?CW zhkjf*2NtopRwBCuw#NG13_~s zysPYxt2k1}>9QB77`J}?g1*lwqVHniGV&k(c)`NwQv1-MVQ5nUeC?tc5Jfe%f3Zak zm=L`uXeqT^3Cgv5ZpVNRPxLYx(6yR*;+M2#9xGXmgYdrF4~&yG+|q8YIE1TEQ>RXW zFZ;O7Wza3=`=fr)opd!R-ahjX`CrlBN3$=xV4#aKHD``kzaS6$U{W|zP>1hw{Oqu& z)U?rmg{GCzpTrjz*&CThs3gsaY6*( zQquCPli4<4PxC134{_-V+|y<#Lv-$vXJkzM*00tNy>F?y2n!aQb(2i523 zfb9iK7Ho>#th$|t&cm>2?PP;3W0^Lg9Wc(}aVZyDbTxEwQ>DQ8%fc(um zvjZ{!47i96W2NQZzlU=^`|H3Vw6O>Ek%=ex)GACqFMED=hGR|37#Fvlei$IxH8qQ4 zh#a(sYPXeFOcjO1UNbtF;V?ZkMzt4nx$zH6eVNsblrIS7i&1q-azE~~egGF;6;e>4 zN~C7H;PbxB*|$UN9gQCm4uDv!+mR=9o!3U@eP5}s?bi}Wx;D5eMP*n-Fk-)mRGGex zgwOwOxkKINqqIgm@j0`&6ROKRjd$E>AqBfwZ}f0+=O1i8IkZNu9$XqJpln7x=WMF@ zA9r0(8$sSB#X5ZM&kacgMOR_W4S^kNwQ7&X8igaNP27 zaaK;iT@5+0${7Pr*dv{9{&HU%fdcHRx2S7NvS@L>{`qkljm>%FS9D~-yP+B@I~S@) zDB&-&?FUyF^L;8t+C}?6!yB(_!XbtP_LRN{3m{DAmFzt@-F%WHFAFN$G@F_wrKb^{VH%snoRApY(PNIV7;wk4xtNxd4Bp zFicRGePCEX9t=dThHkWPO{i(6ltQt!QwK)JSk32K6`CJA94)t})ZFdYM>Ot5M<(e# zz8atV*DpMT!8Y37e|jq>KQav9yZ+CHsmw;BZK8J~L>jT3`mz-oaM0l;WEIioj4H^J z0m-UIWa4EaL;;8#-r}u9(0AQQ`Tf|90c_Q9`vEdf`n`396Pid{=PiSV57y47Z+_8` zMFFLdB&6FB&r0vV+s*`(*ViVi&yH4Bxat)?LFKC1dbRfK2!GYS4f!6N$#vrx6!PYbSz?aw(*SG%p?z-cA1Fh~x zIWxLA3o-%)H^6n5fz5bI1=3JKr9PxSmRKYoZvqy=>&MsXbQzUe1SD)+>#H6Q(8HDC zgR5~Uc8a;c-D?ahhISm9`mkq8U)XsFl^klPV~>a}3)Sz1obpu6!o zUKc&q6bOIc^qqhZo8hug!efr5ZnaheZsAv4Ibcq@c-hz74b;Xj$9`7stmFp@Sy4 zK$%-F%3{6H>URc>=q7^KT1><2T{u(*OL2Wa9YfY!^H&Gi9-F1B*oL_N?Z>}9AybM; zl9Yr)X<{P&T*OnvnmQu>Zoh$Df36Yqgwp#bH7pvyh)toZ>)4n*oPV3FN0w*YW~YiW z1MGU=v$X}NO*6bfig)&en$*uU=d3hc<(nL62rgYb#cB@9s;W>I?|=tbZ)l3PW`A$9%@yp==Fc8$KL zNQ&*g$SW?-`v7Zd@K$)WcQb|nv9H<~1#PSb<%>oO+6h&|sv=7aX@Ny@nIcUeE}H=AZ^+-zS&ci3FSlt^J_c662x zwDx^ypp+=OZV(lFMaSb#Q@*3@M{sL_9yzP$@N2 z!TIOfsnT_X7bUz7+Zc|`ah7%bk_(bQ_9%(PRk->$b+_d0Lv7Z16!gA$>|nl_s7!Gvq9zf^ zVow!bje*t22&I3mE;>ws|KpC~pLY!aWzZR>pdz1jIroXYCR5k^|^ z-=rTVJ}V}IP=BW^PBFai{V0XeL)t!TDf%8`bpMsoh&$5V&2>02rhMU2^PSl!>hC1$ zK9R@%FW#Cn&j_*^AHU60eUFH{N-=u$^M7c%S0^hoZ&7^~WWaBfUPUisCEfXx>q9)Y z0I)HT%67Y2nlK~-wNRV%H&Y_qt9Mr7xA32BBmcWzsC2R6JyUR88K`2|N&T;Ah8Y+V zQfAC~Iy$J4B`?`%%87{^02TT@9#^%Pnr`$!DT;59 z-o9?ICeSwT#I5Kw+Mzg+NJd<0hqj#M5sqxC!=vcE6q!w+*>ZvkiMWsWh2t?HtS~p!8*hEh%3T|}2kY4q6 zXE)#awbyRkA#(q_S_z!G;Q?h)eUa5TN#-uIsX{yK)1&ufT(I>EzgxU9&Y=(4?FR>E zo4wow)Nkab(6O}#FE-2s2oQ>sL&YPHz4U9h)OpsNg~w9ab~e{TNS1s+V~y3MK9l&M zhJ^=&T!Nfeoaoe;nx|i5D4F7pF&;!kNt%PdPL^u{I>j+tt?d}=ubofHCv}CbAQK&_ zTe>k;;WS%O2oKW%D^+F0X`?awxKBNR-zRwwYe09Nr6wTj8@jfu!4ZPZs{@FAQ+M6eP6L z#`%S7qc}MU;7wrlMFM_&x%ch&_B!iLW(80^8_=+>?vv3Ge4efiDDPIfRqn}=k+$;S zGK73}D4MN3k`oO~IDH8<%)QQV5M4TiYMghi0GvnrNKz0Y-fO(pp@;%w4pETSx0zvv z;%PNbO0FBy#Jx|bwiESr>BlfX7m$YvR9UwlDnGpZ!hXd-b&}fCgQ>v?!6&GWWzcih>7u4W+$`ya(k$x;EIVWMyABHde>d z0`~6Hg*fEObS3Csl{6Lw;)`&cw}`8ZcSOB89hN1-Yd%1T!%-`^9m={Z9ff-p;)SF2 zZl0UZ3Tl|qx-{8efjg#9KX@rrkQWuRLlURNovH?t{vGaCgq=HJk%9bP>D~sgJ)^Vc z(ysT+ie_y!7Qg^;&VnM%G(m?6&*zF*Q%^!}tk{8;=0&3+SRyjmp>^sU=N}|O@T-4L z+ljDy9ZpS}D8aG+#sq=zqKm=O6Pps0p=3obKupu>)sExtQTZYce2>!=6vPyLM9*nW zMh}!SII+85D~~(?ugUj7aDzT3$z3GYAw3#E1|E&|kguR#r_2W~H=_Kp5PI8dU?EL; zlJDP6bQSsWIXrJcG23k4Goeh*g&cnrA=C_G3;TauJ1=Db?)g|?DK&?jkTK0k9eu1cEBbpT;A+o>idmR#p1qQ^-+$@5V;2J`+936TLOh=MEJQ+~NPd z=86EsD}IX#k@YfJjK@w5vj@i#1s=DO2)n`)Dpa;!5+xnp#G=bH>2C};+x@o_%o2U> zs4~-m1z$grJ+d(eCE>Dg+ituHum)@#tH~D@ap3NS=S#eg)wtlRwIa{#@@H#YJm4n4 zaOlZ=o})$VgYEy351Y`{sbCHW()gPR>+XJ`PWnPP?-xyhNe;VA*9%YDPCH;A#>=c! zyzBb4rm6yMp;n_2k81`GE=f9i(8~cFzf^Z1>$x5{3u3TXj^k9z%zDt$;+Je{&F-Q< z$}ofRJ}rs01#%+k+;-o^6ow2FDduZ${wiNcq>&SRGP1&fX7hT!pMmm?KpW+|$4^tV zfI0r`fZz3yz4F+V1uFVEJ_*81GvRgZky6~_{6nnk+0u#iI&iIMHo)T z5=lfUKiXoSDG=*^r6Ap&luI_YdiJkA?MB$;%g`p}trzjnQ(zXJlyCj$N2UZ)nP}ev z;5c$m?0Iukz-zJ5{!Z>|>3{EBFMGj<`H$2PC9a!poZ!E4yJaEvE{I2)3aOpE(N0s=(Ajw>NXH?yuWb!#eAj9TBgN{D>_ruj#7LC!adv{_3I z=B&a5fOVls%yFCk^)zqY5q%{crm5=I9$sA`KT zK&MqxS7%7O{6<@URP{}n_ovQpN${ucy^JKF%NKGgkp^Ecm9He(6g%mseKzz;Ni$lH zJ{CB=JgtG57;22VYx|DC~9Wx4COEUJcFi- z>Adx3j0z;4>l)^03S^y*CsT*6R~9J~c+zPoC&tU{74(R&G%#*(ehWTN^Jx0@exoDe z^F3+z-#;+j!_eFjNSpBF&AO!;J>64R`Dt=ei|a711OO=#_BuK1i1b}hg;F?#_nUAv z8RRTz#{t|W)3(V~(xHD8vAz==s@Ok~w7@#nA>2OWT8QmqHfBX+03rQc=@GDJU3Gnq zzwA*7h}2tuwv@q-$K`?D=9?@S4L^Q~2uh_2jG>iF`uaC~Oxx!)rM-HG|E{AMD*&^o zgJq>aWL`{R;uEid;QO}#vZ-qWFeyFVua!G*s=9{n=$kk>cxF8ML<6f?3S_zuucY;# zT^z0crX0MP@4GQ1uf20%w=TOJMab!TwsGHh#WQS4XDYlqez1N~?->um2ydYxegm{y zs#SX$2x19i&J!N34G6ok0LV#l4PVSR(iIO#{0j2qTGaQi##m{;6*Ovg4F`AsHZzCl zeLK*4|EJ6B`R+i1Lh9ENPp5Tq1i623S((7yre-oiUKq9l5t1#IGMR`_vJEKwvaGoC zGS+cP4ZBlXp;&GYiWHuV^4Xw+Y~wy*2whq4dw=5#RIc4rw;r)c*EV^9udy#EBx0%K z*^6ZH)Olw4&%q|S(Dh@GApIcpaj?4p%B_0Zk5JJB5S$-*yadQpz@ZU9f z$z+3akUyo7Z@nl?0vicxJFeNt0P3I|A6+kr(l|xu$$^8b4CqU=U8~odh7nzGRc_KZ z)3Raed!g~`mAlQiXa*I9*2Opy073tv&+#=7*b4IkaOQhW+47Ie2OkIQYPc)8b^Heq z+Rr%8O?QKfr5d{VTHl4^R&Y0-tFCw?X9M8IkjJwC!Mv`SAZ8; zkjTgpZ=BiSkZjA<=vY(%Kc=}Lf&?<{_fS66jqltS`NxM5N&wIMW+7XUSCNeW>byu% z=mW(fGo?EJg>y^43S_s9Aw~Wp<4P|13j1*ThzcDv*I(Ahrx>sE{PN*V=5npq`%2L^ zUqYA5%`@qn0FP(>$NOu6rvM&7!|rLQ?wG!EYbbUMv%$B$8xM{z+DpikGXoGAc8@~M z?7K?Cks%gu7Z>#Z?Hub$00Ze78i&w+@z5kmqDw~mSRCC`EI@-hTEjU<1x4zjwmBb|pZhfzc@3__k_p<>m`Oa?Aa_^DF|CBBoDM z-WYu?NvMk+PIj4H4;`XADqS~j%qzXu9ROy52BZ5O9tY5w2Vs!6Ags6~ng}(o_9OP` z7Xrax|4mCIf9kMGr>rE~L0y`|A(}Nk>^G5i=mc|L9!bVfI0sL@i7=92g=;WsfFoS^ z-3aYhESA( zh0OzJPQ`!F>*6_UFFJS(bmPF@=M4g-hAh3tvbI@P#=SN`Af}OL@;~Afh3no3*bz*Y z1-K=dUU|Tbeeb#5Ipp;m;ZP`~PAQl4rjaz`qkIbPcUiiJLV&C+d+wDyYE7%Ow&b|e zWkFduH`N81ByQPEbptk%sWVbQcZSdM)}f($?EZYSSk`?zlEeyf3z7Kmc6pGp<_f(UKSJsVjhNCv=^LBUr89e3>0p?ca_u z6fI;yx^yGbNI)O}*@I|?Fn<6CO{rXGPJvZi=W%7*Dg&~^{9kjsJQZo$x0yWl{chPd z8PElfWsHhsL}86}=+fskN|9-G_zV5C4xjr=z}kJMIV3Ir=+g~Uf9CuUns2E(4VB+l zj~u`ao*90ZA-IwkZKe%avZEYLxL!Ib$3Qn9WUl@P3bs%E0Mn=`vd>feRl1Nd4o49ee{MqiLa;jG~dNnd$=B7sE}f} z6tW!A3;`Nyl?9)s&B~rzeaw?Jum<#k#{beYq+o%FmUjLU=gw|z!qI=5*YhPJo|8jl zM$6%Z9$-#nQu-J7yO9S760El-HWLP^@2~Tsv*_9~gDLs6%~p8HyYI3(tB_C>Hs5v# zu}Tu6_eCj_uFF#w>KJ9#i8$cf*jy6@E;n(3u04I7fi3{LbTZeW`vWp)u~;cgBJ7Pf zRI_rYv}Up>qzvh*aL24~%3Zgz)yw!OBU5g->WN?itY3zukknkC*-K#FmEeK!^K#eP zJWl7fsJrOC_mdXAbR{Q!X&8ML{VM3+BRhJt&TqIb8vBLLr%E{qmSU}Fz8Mb~c{U~E zYXH80ewE%MlzCA`c@NsQGW3!F%{^9j${&TkPZ2$MUx63q9ClT3>AJ;m?$>U@fDPO0 z9T=lRQsF97PYXr!{Qpx4;Q@)z6OGBh&sv| zCMcuSZ_l1rd>*g5ptx^j=@>rE)W^Nb{L>LV^zP~3Upt!l&M)^jfK2qRy`9#K`Dlr< zf`?M8*7|}-*>>T#?T>8N{iQJW2XH0|A9SVgC72a-xP5>gf<{49_7=l?>P(@-A=hyLrtW_ zLr%@mAla2?QXr2Nt$#R0G9A%49S;OAc6zbZM5nfz1SMA#4+VT0wW?bIzD49kqDI{fdiSu8Tr2! zNACIdQfOTJLNTA#=jlW{gE@w6Au0FU((1k#D9AD z8*pjzZ2(q%BKdq>DDxtGAQAJ%4p3Srq*`08r+O@4iNc#IQ!KQXJ~XuHCxSN}Z7%(74;5Bdr_ za2+@0O$kUTSX-@W--AWd*kcg?!W+Zr(vA!ud7QUbe(D#0Te65g_FEkEWZ(7N=09b< z`a?Jr>5nur3=k?nQTYy zu$`48f88)^O@orBtAORE)wkb9KNPDQ2~T67rMXga(K&>>aA3Ov9QuDuP`J{R&mS`hGNZo?pKkC@o8;*_H00`+B{%| zHuqGkT9;J_IEZ9_eG+C(ZyHaWpeCQqUu5kc*|&Sl7;{TR6l1how77R+`+CtWPBN6? zbZ$H0bXsQ*9d8s&e60h7CrqPzxStLDXq|BHA6_gYuq8&Mj`GM>*PpEO5RNGOIFfJz z{{Tx#*BZqnUUS|hF)gG}?0%>5?Sbg#liE-4J>w+!Wm!-ZAyWYtb630aqMT`x6!{L- zCi@LJTri!ejEI23n^(ufBHNuVt;4L<|D)+E!=n1WwukN(7(yBeiJ?mx>F$*78bC^f zp#|w~Pzh0_r8@*AMOqr9yL--ie*gD+zVZp!XYX~dJJ#x(EV1WJNDRw)LVX9W76;`V z$%8{tmVN*BPf4JWBY3;A<$qS^8c6n7Fx^D{S2AJL@3c~Vpwz$6IH9VSmoEpYM(h(j z#I4*Ky2EuM?o{(8&e?OIyV_Luvj5^+O!CBaLw;YQ_N=z?GKU9qS2Wl)vU0H5mD<@~0e zWPicAs?kQ^5po$pHdi<~>sQ_YD$WOVrL=rd{Lk`#3Du@uW(d!xfl-Ho)@_}0v_>EN zG~DhlTSkG|A)`NN;li`Oz1&>V^uXb+G_$@*di^eVD73cwZf!W<4Iqgtn%Ll8zL{z> zwJ*lh-)$4344JTd^DKcQvn&*Tf1<+4eyZ0fZz3VsY-}rq3SP3tnY1NnGEZK9GpWxl zRm;+@7O9KMx9xaUNB^B#_UbC&7I6Mgdiyc;@5zGyL9e%i2(%y$>opz4r?V%I()aS? z^*aEHh3A*MBG*%WCvLAt)F^MUtUdH-M)?xD0oh6%)5~w%E|s-zG}Zr_O0@|7*R@|z zGNS*F+{f8a-wJ4sM}GH~Hl2M2dhJ*BswOtKtL>e#2?>9iqNEqT)Se`aHgv(J=Ek5d6i zZyl(FGe4)OKkaLRb?&)=%c*L?2LN&t-ajSLz{kU&DU6+@D$312uwPrioKNUHT zUS0pjjQIF+?}-^L)ki+DuvC8fnK{Dr^tr2=?3t}(L0-S>JfAJwcI4^br!R+FB)and zwkWz1^xEt<7Pz${skw$-iuCp$G`G+{Oo}*j+b6!LWN-o*P_A$WyG@MkTJO!4gTD>$ zY-(ZbN|2AT6{4LdrQAWnD2OzS@$GSTA+_i=4pvC;WOYbM&E_z0&Fv)lds)Uc!G8Wf z{{xp=zG$yyk?0vPii>q@ts%OmE!1mL>UcR_*>tT>K_kh;d%7m^##16 zh(CM~6vxdZ&>j1{Fa;wbF(sbKE9b(kVRK5@ZwV+xHD>dB@xPF759}Q_$X~L@Bu{|y zswZB)qpHgdC5xAwafLvqT|SLxTT0$aFy8hnZz+{j?V@iHR>>{&1Y#h!8?KmE;nALZ z-c_5LRTxB7y;`V4Eu1jW=mS26*`hK$`gZjOEB35dd9Q zjxDEv{zCMH%ep2UwoSc~8W8~QLn0S|AWPQ-qZ80jKaxZcjgmH$6!fHmc`A`s(*W*0 z#bpL|esid2E>nf2?ovi0$8|)@d>iy!`>OUGazQp*=wy>5m$)l~Vw^bE^$}BrsY$L<=6Kb`N2rMK~k5EirzJ3#i)pZX6Cm3KR&l(v!=kk)P7^~#_g~9{E?GH zXUCm)u5VY<=%?nDAd2`m`U!Fm==BdlAMsnd~)LAg8EtQS^mi9IZ* zh?7|}cOxKDzcogatow=7`EQi9?8l5=ZpyjyYpuHLUy_d^NXLMeE9?_cd@(uKsEzxZ zOZ`B0m4sFjBq9(oehWF-iS0qH zmCq~BL5S20rs;fFHASP>o{jo*#!|~_<>$Pnm{>K6o9lE1Ckp>ZWnAE#fo6F>f$WJ#*>T$)`rXJ9q%ENe$OJ%w|_?*w|}L z%pEKB6%1Rx82p)oOyC6eEHJqs3Jf$TG{8nPT>eH|gNfMzjyJS{e!L677USZl*=reM zkVD#De_h}*4gLb}xUgOA1V4|7z0tlM3Zi6ro!gdU>6hG-acO7U`Xc_a)yQ#Xu4-6~ z_t<`=^Rc-q=ph)PK0Dv&+?eru+RJ&utXkC>iMU!8R88G~G5+>AL6X0|@zw90VEJP_ zic|&^>>W&**gTm83VJmr``fIg#n34aFI`IJ--0cnW6*N_44)o z^0*fl=$@7B_uADQPGza}+aF+4b^pP{zsCxJLT>%LPHAYOVv>^6tyq@`pn5_Cv)?Qd zB!m2zoUm5&iN=mTA3^l4+KVP;SM){FjVy!I<{d`*?uv0K|GB(6P<=QEJi1n`2k0?D zZ%n#|&Fr2q^=fA60q`6i;%vyEZW4=8nMk_lc}dIC{hfQR6K~+-4@81u@q|+*+JKB4 z=$q=dwz(WPW_|XSf^19-JJPS7AeB^t=%7EMCOSZF25bIm?JFWoG+u{Jo_ zl_UB5r2L>kh&vQm1hWfP2AQB>?k2d>u1)wAa&KkzPpto%V7omf5R09798S|GUg;v3 zYyXZfz}9w0&~eB^g`Nec-?{wu=p|(XrAkg!cz1{P*NLl?nRjW8D-SoN{T+Lkvn#zR zN_3&t7g#L+e8*oes+A-L82(m>Ljk8lq8DKQH>GyQJ?~^-e{ePMmB}3&mW&s4$@eUZ z@(Al>wit<)bcP*)lDu*=AQE3QeJ7~$Yls#_RRuFU+9HkEZrO<>v?) zdUs|bQFUjD+O~SG@+Z1j!GEg;RgKx>pu??EY*m#5pGt@+X=FM12Z1HUIg^iuKy=-) zr=|!A2IJLYJtgo6Af?w4cbAALEa^vB49e)f0E5bW9rdVZ62dCm_{os1JfA_Oxm__Q1r|~m&B{RTP&>*@ba`V2X z<3e1gva|HtD(#gw%yZNxvfzVf>F)IF0nNX#*PovCeCIO1S!Eh4LJ-Y-K;JYOf|Oie zO_2mAzv3*3+?Z?LE{q_q7GE-pJJ7{`9XC-6bUpoIcZIO=+)GMI zno>w}_-+-?NXQ&nuuAa*fhvM8Dnz+Bm4gp{m^L*JMXc#mOw{~pp`m7k;zjOgT=#Tm zD?K0Li7_z;<`0&PhA3zs?zpw*B0ID2qra>u4Mq$J{^Ete}L-W_%YS zH7fAPGuaY=1yO}U-w__lcj(BQ+fae?ma~`?Y2Ovy{@{IB?|O5Fr{$+Ok71RL2Em7% zUd9@i$hjtjNLg9>BceJ3!&^z&;a!-`RNTlXtJZ~QOvce+ag^1o|9%O; zzAgMf0*1wP9vumN9-nY!DT;e*Rx(PwlTKxm)8YFB#)*1&V&x_uVVE4~y@qhLS#t6W z=iVB(DjBP^~woGUIM*{!SX?VWfEX^g{R9^r|k9prbKj<~YZddHYe3z7A=&&Qc& zSzgP*pMTf9Rn+9+UwdXL8m8#OUO)h2JUsh^8iq0Rb`ybk|oYBU;$tww9vyDNM&*M{>B_*Hx| z8_%4(8@lWB(x*)heSpf2{p61kl3GV1bl0@h4p=BGUR1cqHYxt{LRVEZgdlUDX%9UE z?*ntH)rdJ#DwYQgmegpZ)yHi%bwaiAe6V&saWI5@!pV7 z7N$mr$2+zX;%_4=6dX8Z&Z|d3S7=trsi}BL?{$U_9#Ygp9AXG;?&QdI>hng z4nZEwR{j`)WbbpT?Hpr`BCM7j_ovUzF$Dj~(c&Jaw*2tu{D_Q7eIF!A^-y2EB9S{9 z4OnDIlhq|(Zkk*lANUq#NWnz4Trle7KA@HN%h%$LOt$Cf`3eS>`;awiLm18b7$!|dV=F^Sts&vVO1GxHaIbYs~> zq{9+e3JNfFw9JZO2^Ya)bOF)!0qCbOtc<)Bw$u-Wr;Ff*d&*Gq240_-(mxZnb8Y@?;S2{R*cLs~BEp8_ILY6Vdo^@1Fv?8JH^iIo3m*eE zGiHZ{Cnyx`gsUy?-AEzbo;JtE&Wb{iP?Y3r&~nMxyHi_t2oz5t5lM9bFYRJST7e6u zuhTs^GG1;qp()X*R~)Q9ranR+aozJX0vju*7!qG1>E4Yat6zN%1M4gu?Mk%+Jlx@* zbv$FXvwVzMy=a{)kNN`jM7BbL;^ZI~lN70QmOa1cwZTujooBjA1%=qIUxp5nOKkN0 zJmi;xp4#W`Rub~pKQ{jeF(*ege`oviIIgxIpXkw&&_3>>eXfm`V5dpvbYaM_O~nqe zCZajSLR_~CQE`!r%ch>x4(V8w>1r#m(CO{%@ely>r`zCE$yTAO`w<4d0<)r?-uvVW4-Bl-@T8Q#~u zRwNl-nM9|s7|S4!GSF~S-4e{mXf0&ke!e8)b+&7?`adX=VhY@QMDg>2&o+$Re@5JN zwpvy}hxL2v6ILr+m|?i=C3_2GOpsX8Wf%=ioOk?N0y`7Ln4V|Y)?&??uw{vPs@?r#Z(YDI%c8b+sh80 zA_^~a-brK;Uo<;@EduaR2iI1-Y5npn`i$(eB$f8hryTW#EY1pFtyj-Bp9kEJh(XK5 zUS9!DddShB^h4nJ)OC)Cz7DvJs)vR~?X&3%{QccJLX1`8+4$Wu@ODF|Q zXtM`D`UBaA$)oO7@+Sa6#^#E#Kx|);MELZ*2xIh0EvDf#5!;JtIcC__+VGv=tqqDwR(jm}| zkYwv-xJS%-!Poyee=l>~vIZ;(tW6hy6>5VU0?Ih+>!^})x#m|WOyQfNa97`C3P30h z-xiHVX>l*S?}GkcL&wL?uxFq(TG-qSt^5UG7A}_H06t2 zN~F*HP>1|XyY}#1`h1VOxmZVhspCW?upMICZ2!(AnD7+Q7`#uX*JAuA8>fqWd~1#v zL+UQKQ|&(Tl3h^^)AF>cp#0L&8sdY@i>ejK>;AO)DMPB9>~QVKhqZ%yt-7+!8N(3x zZv?VUy9i5Ng}f?agWpinMF|)vi7w4#0=WxxOsFDa3T(Y< zmVwkd#67PMHvNrRx&<}n3LBBLPKxAA;j>Wr{egy0=iV6FxrquKiqq4|Vf2ZtF8ela zjkq=s=IQf_OySPC&96`Sm&JnUg8YsZpo*}wFkVST)OlJ%@#QRZ=q{~{mkA>aHRzx} zUQRN46%s7w?@k=8k%losLjoYLVDK^iHWp}NR9NDaRl0D~m{9$e+5wcl!9gMk!{2bR5;rkgJ ziuoS!2}ZiDBZ?eRhD*;V!|~qlUmu}u7Go=46-lTxhOBWZkF7mOc^TppGH^`wGcr;Q z3nZr}>tX~-bP_3IM%JQ6A*!y}4%m$%BxY8^=xE4*1do`@`a!VQ)zW@~QJk1HPL5T20d`ZYa-54@sR30L7pKC<Gn20&3|z#oI5!g`v}0>OkY}y+jG=A80sr( z=5$%BtQ42*Vd$i!!v_bf|7MOMXSq1z`64U94`n;}kckN-rWU3fqo_6LMaZrv<5!I5 z59L)${&qZJqIvto{rW!YcNoR}FW35lF@vK#XG|Z7SYY>@l?*svFb}G0=gU5Bh7#66=>hvD`fm&1~HPvl;zlbMYFs^IzNCr2yvaNCTqn31d5^@d=YAF<^ zS&@*lZwlTh8bl7t+xxW&`@)_K%Jrtnd#j zNNKHH4Z{GgX7mfKG91R!0h&S16f8rGdw_HI{=D#KweH4qWmD!aE^v=-*Z2%_`!cX4 z9Uy*3@<~$^a7D9)yYk>K{2`;vU5M*n&bw@%867Z6PEM9HIr%()`=#Jo<~g!=3lsYu z4HZ}LdC{$fC06Xkxv}4`eqdgzg5|X6va9xH9dXnkb&ANW)>no1h3?N-wFyDXFj5U( zmzs)xIa%>&V2tX&l3X~Q(?ZZ*KYfJl*%Gim?8hTCeyBuT4169q-K*za+wVfQ)#RUr zTN^yXWo(`pxa(W+x;a-`Ri7piUdSM06wIw-04W2S(Q_lP%>)!Pwm4L3tnzzKpZ@;i z%1@o(&|-y;oD&Uqs6WWOkYz#P|H`n-6{GW>dB^^yk=LFoG)f195`r=MWzu&TlHXq_ z*>=|?<3gjW3XRsue`m|}g{=E-2%?<2N{ii#jYW76wH@@e-9ZI5kR4+i1G`}%c`Pb6 z#huQb z)n_fK`4NI~?HQ{4meCFOA{_VZK79+H)Sb;B|96v4 ziBwTN5O2p)DinPmMBhn-3?Mix18WZG%jo}T=5x9d0`Q(<0c-o%8`zB&nh?kaK0gI< zN`Iji0@_x1gWU~X_bUfU=4W9s-P~w(WNT5p!8Dbw0yQt%z8@e4{d))`6K9+ZNfk&N zkNdozD)_KC@Q5g&x;r69w6e@ny)fJ*h%%2em%VyY&c;_Dbi+8u3vwSVbSjmY4ahPj=e(s!6vE z#EjwRXZ!gsf_UMza&LWWw()y&KZ!#m(CvgVt_%{*Dsn z&gQLR&h~bdoy8b;R|dvJ5Ov2|R%taIRRAYrfs_l@t(RJgf2m#Hb`x{aI z^s9=t`)&0EyYl6@m}3C)*Jt?V)P2o<74EvlQ5gvNxUyNrqn!kES;Je$Dy_Gfpc@$~ ziRh4I$lOmA&x|rvd&pLzh4HOD1l*)r8kYsXS`0i`Za}k!_Q2wM`Q!PL^&kI**`pZG zVlZ4|tsC2T{~28CyFZ|f)*F=}qf3fza4sgyq01mPb3-r@SYm);W6Ko;R5xR;C0OglY<=Umk zj-AB6h6wtVN!@0{HUmo)%3Teg#q*($654S^cU6)0)N#)Vi3EO4Qqu7KML&BhW68nF zP|7dQ6dq%5Goi(4rTbHk{tK@*Lz9JY`IAt^dhBm@r(K9NJTlw!%vzRnZ^um4PrMnY>dhg1CQ{k6)O77?$GCg{OmBrxe0qTbjj2GgVBuWA2qZ@Pe_f;&ixpg76xhuBwwvC&G z{E*w(^Dq=^=tg%~#|_yvui9f(It48=p}4f7Le~!{%@>tO9b7Pw`cGh7GRX3YpC7-_ zhQ298h8Vs1{^-%T-a+W^VdGbw6nwe+y{K_rSHn-hrQkiV{zFaleC)rr`rm5f5M_Lw zz=cugBe4E9Kx`h+HRQc7k~yK?u*$D4kB4alf>j4=;=%3Le?pMkI7i3%w~3MwzXw&0 zv{*@9vU4vHAItYFZGIGCiR9?Wo>GWlZmA6t?bie;K>7S!ns?;0qgT<57N=Cm2N{H( zH6q(SnivRTdlMtW(gS_BaR+awRv*?itGcioeptoCQjv3Q#pn}+-xT|A{CAt?u2axJ zehNIS%3X@)o*w*Q-)VjNR8lMagjh`E5pQA7@#BhRPs09WdD1Ln|5?&gDm}7!o#)+K zM8~~hML|%*zL%nt6Fs09LBzs((E3gQagMuu7l#Nn@KMdzvmUy$Y};`bd=3q_Hi7T^ zj+l3#dgNx*rL%E#-z=UjsB)sgJUJI<_Tnzo`f996oT);|*ffjh-FipD585~+RS$UI z-$&VFTd8BvC^Mb>lN_T8XXu~drm6Lse3Kt|@8-PO1%VS2H%4Gdd0*^2g)H+5y|F8d z*M&gPLMte%r4&;4(6J3aJxY_nZ%#t8%Tne6Fejod#Kmqz_@PGq%G8UhkN@Oq!EvIU zk6`fpzYbXnkL=E~a&wr<9OfC;iK~M_UZzc2%tTD0J{+!By?cNd{nVZPm5lnk_&G6v zGVE{N^7pH@9;z7L3V_xz->adpC;=ey&+iJ}1f`(tVB0kOZMnRSZO zy)?aA76Kh;-_In;w7w$m&2a;` zySHI7I?3@cQi-1jO7FS48YU?kxc;4*Io%L5w1n7Z>3(~h9^<5e#iZknNhKPz6avBV zU3*B6+4#dhq<0V0)?)e{&&Pu1N5$%rUMW(uU+Zs8JN7m^$*&A zWaVeml;PZr!4DfLF$^2|k_axwDCIlBA#eW=KZ_iWj84l+Ch%7?e*k$^%fQwFy~v!H z+Zd5q=uHvtAHKMmm1|T2;svZ&Af0k;`#F+`6EB&2QlP`9zLBJkOMcjE?Tt`&W&xL3 zt<*MmG7d1QA=(&mPY6;J&8PZy#Q88h!CDtZu(LCeob z3#?8RSD*86mJ3rXHc^bhF0<`BmHh7L&>iS|*PWi&7oE*E!2_9g+to~>C4gp2 z1Vs5HvSY&!`kfaWT$T8bjtV2vHOQVcWn`fI-o+4nrDa#6oe#fWC zlo&{hp2UIznSNn~1>-~km7(CBorpHA_M3r^|76%VU8?r9KzYcMQrNATtUyz{1{mM! z0kLuShhNR>{Gg0Hlu;3If9T)Mtp-w0XN^XQrN~rWU9;yRRBGrB)L=W5>I3evmDgak zw!$`bk1-wz>|kO7wXUgPXy!+@=YnzaTEYli9Npd!mkC}Q<(vyW(v+@i>?x)$hf-~V zQ((&kxZS*a#k%;NM1&0R%)MMW?`5zK`EWDtv~$^ZNbis{AHn?Q2O{HCtA-0J@wl&U zkqg_i6s#v4B||sp&Cl6YS?KD4EOxUr-3BjM@&_uO=S( zZq@21miS)5D!=b)iG+W9+DWhp-}Yo+V8U5=7!;;KoXt#|ZT8YV#4CdJtABlYI9_-A z5CooRJE*x@TTB#2|1%4K_@E2XoN`G_z|Dx7XmH zLT4Tbgt&1*De2)H@d|M#jU3G3r>-SdWQByHB_9_`0T7Z()kTPEo3|mdb`Q4QZP77f0`ud-}I8T9o;y9Xvdz9(}oe#jViAh&p? zt9p}wslM>#)qjEjsH^TN#DqJEp02FI_vxBJYsF}mJHKSL6o>v{=1g0JHAO9~)`3t5-LfCxs!qPCvWG& z=bOHj8#H2)y^YNnAYLGu1w?=nbYd|b(vJ}QK{>EmRZ&xqGQ@PN6XM#w0P+w~yVq6S zU&R=7#x%0KSML(NhbL@Z61Eya_UkaP#tlmcs;^qCyxrv~LK#}hg$8>~!>NO5wQG_a z8Wxz20*-SBkXWKYNQ;BTPV)c3zy~>*KLhHN8iz=M)1p+bw-e795^du(1mUw)Pr-{& zUvv0Jb<;aFRe`Iq>wf8YnP`=x{OlqF^k{&$ixl!p6qz2wY!jd1XR5-XQ*kRA;Kcih zU0w6+C{q9WMvblS?3mmFf+lWImewpFZrM6Q5?WE*}O9NT}t+ z1e_HK1{iF@YL=*auZpaUG4pe=1}+t%96XGBo;}}{$Bs4T^s>YSk@>UGl=OL4?tMc6 zLpWA<>II8nu1oFfbzoJ5!rnCH_Nu?LY8B4!@Lg<$XoJ^vUfk)?56%QHFxbY<#Dlhu;)EEChv=kT*U6i+>bE4) z0ee^{G*Y75;3;7$(JH_+(B1*3%yV})jQz6l&1BA};JKogUVX#oeY?v63TlL!OV3N~ zuu^%#59eWrf9lY{sjRW^u{9xTY+eFBqNWjLQrKMiPdKa2*VGUn#?=}0tJ1|QZyBF4 z3hyzJ?`ZiiyfEARJhaStTTviGDK(-=zo5?(uO~x83zb4;al?X+#A3Qa_Hs)9{`zQ@ zuSPPsby;Eb-@C`$!)_i3h1{KdPW&cudQfpK_msCZzEgDDsYzn4!Bt|Wx(iJ88(b$rfyD&wGe_u}!Aq>>I#GQHC{g;37(IuCg2su~nisqk z^c53aF(s4K&x8Uz-&BI+v006)$CY`p$}ZVm8d8o{EmZfTB?MhrRp5ToOuLRp-cq=$ zQ{LG_$;0Rr@%we(+kQaS1lSE)+Tu#ODe^ZLz$Z&Iim(q_eL;eJKGS4Q9DBlR6PC04 zY|mCI5!qiHaPV0wkvphS7CUTp^f#5<%-%tbST#W%`V( z>HCOGf}$RODz-;Q;#NZivCR>G{xD7ot(;;dkHJsx<5FBgG!C`XM}2A72Q^d7)qk;i z*x^{Ir-A(RJ;qzfg)Ny^V;0J&w&)xvecGnawNSC4XuYuBD|fRRmrG9bHgAG5`%Dm1 z#1OwbEw*I1v+V3P-mC}sm{1_Jq0R7zhj%gm{FsytK@>>35Q~O&-FqEu-X%p)NP}O7 zX26lAa+lwogo5Qy#}saFBI>inRb}3SJIwLr)eNf1`#hJZqshNWgmUy4^7DHO`m}O^ z>IrSCIo)`8le!*8uOaL@Gy*%*w(qLo{c97U(v;!;aaHs%1|}4as9gM{XTg!smOs4*f)`$yo=O)O!#gl(XUENbzEbG7YD0~VWI^D)mmp5}cu*X0 z@tJT`j%1|XAi&mhPUGT5?qU#L0 zr({*3nFZ)5<`pyjVqX{_16xOC`YLms248DSh*C@gse?!@I z?IEr64=sF>wiq4XMQ%BcQM;kUiX?{BIsG7icQWE%7-dj6NyN(Qv8Ulvhq)3ldEB4IR`oE&B*rl-w26i3BlYbzAo1ThLjMxVIJ)V$KX$QAExhC z=)Zdg+ooW=2kL`ebiP}1og%uoH(#achWZc=R`mG2h4+oPI9EZT#II2U3g0D3p7PP& z9@FXdBDi3|?$q&o?y^->fsw=~E_A(`F}#oTT~VKrHyi<-ShK!EB!HM6N+zH6@n`99 zi=qyC1(_*aP%EBTL?pv>AsDAeZ@QNH5K(ER5d%dE^JL6>EOd@$qgSlN;WvQu5k6?R+k zv51a-2&@D)eh*d;QD%&UcKPl88I-y3CY{!+Ri9-tAOaPoe#*{Mf_pHx1N6za%w|3v z6ANePjwbN8*`GCDPpssS#NinvwQ?PCRgIUz_)g`@S0uJqiViWox?eG=XTpKRAVR4~f zy&PQIKTRZKFRm%iB=Y{j^qb>TrafW7tjd+Pgda};gKqYS|C(I!X6tg#VwbRzCR{WH z7WfV`)@hFA4cArhKZyFUoNF0Q-zq$qQVu(YT{8qL6C-LjDAM7H^0pf2_Go{+<9HaW z4#5HU(?;JJOR6NY51vW8V8ChU2p>U_7>R5nZs_ZGRwy!}9(4mvOasCBfp-S&50{Qs z(~G*>yrAoFJJT8K+k_J*dP?M`c#R}cfrH+BjM2Zp$>Sk~ah!Hz*LB+NAspAGswNJbF(LRgF5~hy(1iimHlq=R5yhwNkJuZyo zmoQFwK_P&|OM4}G9-ylV;=SwTw$S0M>h5ncknXp?uYlpML(X7nj=m$j3|Nnk4|YDy z$zH;|!;w(#M+TXZ$5AJ{$2-$!pKYInNV?1mF4>7?61>C6cGRJuuXSn7lms) zWJXT*xo-MMlYT5J#yB*UYAELD4$*}Lb+6n~8uKM0WE%m&0I>n@MEbxr$($*hd^X_| zeQb)IMmCY=vce;cqu9Dz$9d{qAHzjC5zZp=g|ti-lsA0@TWmZ2pB`Yv+Z=Fgcm3W|Cr01 z#?F(q5%@YzpWq;@tUO0Rxm_d~orO5|w4NK#5TMR#msF^6qservUX%g{I_F5o_qfJ0 zItl#;=u^@04SmI`>@sCk=vm1kbzWxN@_QXE-Zy)1;)01u0!DPvV~1-smDTng)MRo0 z8o>z^2#H#Vz-6)57;!YoQL`;UqsLMtrR7`lPRrboq1YH-)5H6tpoi1Zam4+?v3>`> z%yhLVJ|uUxTADa2WfYnQQ9ZR`W`ahCftBvduSYu@KHekBe&j_*q5B2T%98NlzUR|- zF}B$=HNIS&LFNhQYW$6}WSAmRoKAq2ZttmUO};nttWYudk;zt|k;L_oy(`J|a^b-b z`X1gcC}zwz#X)}0iW9?5exLC>+vLWv!ll+yfazb-xtX~Bv|ma3hkt+BRm7}AQGR@S zH6`M(w>MJXe?b(W^Q?h9sQ!1(ueGU;Fd9ZCVl=Kn^v!R(Z=@qOUnQ4}UAC9KT0Hk? zJLkjrmi@OV_NJqV5{smc_bV22$4aEmivPf5cNj~nRL1Ny?}UXgp5YKx=060AO8Q$s zMG-?SYZLlU1aZS^GXf9qWQKk@214c-Q4#~P zcaY%miS#I9)T(W!M4Pv_D^jtak;6@3#Ph03YDjURcz$WF3i;PQzWViQx`^ zlXJ?GlMLRHeSS#rLjJqqaBKK?Q*K)6Q{kCPvv;ugZn5zUlpTK*_DmGz1R9?(lwbP_ z=#zq8AgR@U@-Q6Nnslzvp#3M4Xjv*qB(y&EmBlrw`|w(V!jZeXZZ2 z3z)zom(_CLKIk9P4Sn-U>GYCIge}fy%}Lly)b|X3?#1ErOeP771z@{L|D&c{@25*M z)g6cd@4e+yo>#>v@UnEY1c$=^)5_XF4mZCQtB-5&ld=H9_|toG{(IYx&k}9zm$XvT zqY$KXQ*2lDoXal-pBEgRiX01NSQXK3tL!wqan)wJhfGKXtCaQBk=E?Sl z(3DXE8cQ41xk@sjBYx+0pE_Hz569!uD2ww&$<=6sn{j64osi@(N$I{HT6kN^!IBC+ zlU&=RW~VFXTfeCznfI^TKOk+@W1VH6d zDgPWZFA1mA;o9ND)bSF{A~qMLdJ%MeFsodLSrjI*5O7g*o8$5iiNSG5tZ&PqadviY zfAk?ujmKocT%9YP@WEWsLr>8k&CM_5uit4wR>C&bgMm;qa7eFPzD_l|NA&yc&ge13CAC= zno_yCNCz8Kz7T%iBF{GwqE2}B1C~CypYS}ZyV-@!*9S6{NAfWyq$imu1KH_bBlfg! zQM(b`r6lJchCucxwEg;LO2KE#z{6q|jO^S5Q)DzOnmxY8XIuE2sZdx>j-mG%IaZZL zu(ZfTR$hB5%k)czrrbI}#OvxH(7YK=QYPkhg%E-ofLiWIP$i3rll~#-{4cZbtGdl_ z&2vz&!q-)fth71_ltK4^g38WUix+aU*9*9Y?TI8L3g03-s^)m>@qzaIAKo@YLoHuj zIc49N6RHo=GmNke#~GJ*mj8_HmRvaerS?u?wsa`(YXlALh_ID0MT|;vkHM9=UicgL zX{d`H0Wr#vzJ@&&4Q-|^XV_wmH5Fzgaki-tM%NK@BF5e&b$c%LH?d5D+4H)dyU2~c z^=FakU?4!RA^I;pm<&k#au+}Wmr*Ehk#eiZyL`#AW}HB1JP+08(20>mqpQRo1Vol60rW zyqGkGPi|s4{uFABSr24PiWQS6BI*6SrML>8SZWyKE*U7;O5z^1sV=%o0lM zpoiUYaggA}I()`J4f7%7U^SIB3+82EWU(%r)(u0=FP0RD*t&Ekf7?T4gALQ&C|2%g zP{Gc1?@#^h+z9izrS2BRk6^}0(he8d-cfJr`3W|+R`Et-+%96f+)v;Ald_$saGTYn z(A^k%4m!nqZ}CjnH7j5BQz6=wiSO=f#@?5^|%B^R2}TJG+n?^Wl^0vU{lwd@bWwQAPfe6ZBeEHL>It#QSKrAemKKG%h}# zsYh0&8{^>+z=YJG{j2x&H?M@IlU8l?Hd!dA z!U-fu)^Vzw`_SK^_XxNdM`JMI^ufsR9$r2JEVd%x0@fXQAGKl`=+scMe+3pbV-lC& zEAOt5Cd+VPm|7dr9%DjYzq~#uN*6orYL0g{g%N}+|3EPEr@X=-Ik9_+!!gwz*xSUI z){P3k%+8c5r}Cf>m8rWI`(l;vsrC2j;QS9mq@Cn+*@K^5(~D3R1*Y)Gzy6Fi=+@=S zl%&?Q_V-_qm^LKL*l3{w{Y;pmeHRz_n)%`pYR#x5v3B4bu=junGq+gU;CFR!@!`{R zIoy0nU&7BTZ)jHTXRbkvV7OFEP19I8n26?YJ%}urt8oW6X4tOAGlMgNh`-u$cs>7` z{_?BCKVrFVucx7*(lWL8y9Gqc)_~8@=E3ygAV5~|3v`K+W8`LcfwTdSe@tLw4K{aclFvpNpjT2Sn%QG^i zDU1))a&J<8JQi|RY$T#%ZfAG$B?vfYi&TY%z_h3+9>&hw@?O%TR_d;?Wfc!J;?BCa(@x4tUlcAc^`q2 zicW&V>i3d~ZgnO_POe6qTG3on7i9gCpk+JYM8&!sc`M(wJa(E;Dy+p5I*}S ztdXG>U{-7o_JU@S4|HbWie!9P=z=6eRY8ld~3>Q_u+3T391Pv zh4~zU;P`k1O_*_Bf{WtnV{2_vTpm5b_;ZVq&QQ2jC?p^gPZ7N_64SinaRcQghW9ak zz)M{oQps(<pCI1M zY$Bq0sm`7GHo%&v<#ah%w6!|Y=ne&7!X`&MBm$IbWR&CjL{qu5-Hv;oYxK-y_yGU- zGw$yfSRx4*g32nf9)SI411W)dh+lyIQz8rhQzAi(AQK-!%Z<+O2LU@g#4RGcbd_!w z5Em}(yz2k1GWmt@oM`ZyviU7qO9(%ZRjr#gn%`Q_7e^;OkEC>)HtAB13AR71MVa`sP&y z7ZgBh$*=!V$kX-I^V;qm_~ta>*YHmlnP#M!bcZNg(6OKHc!3G)OWc7WU!y2wDOX>a zZ4+lq-LoAj?LXh~Y(I5EIkNv2HW>bL`jc*k0KX%6(fS*ELQH+x^)C*9k*N)d>=!~6 zCZ3SD67fvPOE^Ra5~{as&aX9OdFstQi<7kGDOy~A1TmT>VX-za3heVgzNKa)w%6ev zlgJm&O9@s?V5Ax}Sd3!PTdTt(Um5|7eEEPq*R0;@N@6*I(fT^01x3-=ZUX(tmUT03 zadSaTK#Z`(#Kf;E_~OF(J^(+?ht7R5)Jnv9iC%wBrmv!x@3mJ8W_GqxzmT01s$HLM zP7nEldrMYs6{GxJPRH_HmT&9bZ!__PXDFFuYQ~8}0$}7}u}GkwmW%WshqDuC_zzYt zO5%uN-Mot`!3LtKHh;kT8l8dh80tyaGka&zp}}3i=X2o}nZ zt&ds}gr*_=QZYvv$Q(2q?B-%uK6A&&Yq~6y=*jA!*v>oA%tXcu*Y1d{SdFZ5yyew zZ~xk4)O>bWmSaMG-&Q@{!P3PucrQL+uU;9i2yXLMeF@b3fzI$|%3VGD>b*vJ`oN2V zFO|Wi%KL^7au=nq(VSePu+{{ek4_ugoXs%u4lF6)>)t=k^gmGp6DLGVEwn1$HOiGJ zkz+^)Rj&%}#Jk&Gz(HR2LLipU!g&qnO=S@ts`608 z=Q&c+F&R~5W!u&`gfgFkB5iZ3-71qZBZ17L*;~G zsB?Pj@Oq3H2N_EMt@r|hHNonwTV4dpbI89^)k+fq{1*mwGJdS@Td$Uw4yf6;zhu-m z7=uqD)bTM9$9?>C^IU}8r@e1e|8`qs)McQ=>%|1V9JLyz+!*Oj>2?hwhnU#abUqss z2Xd%WJt7N8KAVUmnmjp}$b65zL6YPxbBnk!H}7!G%>Z9XxZ==e*=?7H_KV>HAdZH)-_0MK9p7YACeqttKA86`X=HU zGwRSjnm=mabI;c&r{UBolgjlhUqQFSwG8`^zmXVv(YfK&IxSv?Lj=%b7W$F^#hJ@# zzhCqnY>?yWFEo&}a-n+gwoBCMyg0J%YSTcw^MW8FEu0;T_RqA#6el)AyTztc=W`8sQA@yH|P7 zHYj*-{Z!#APq&M0kN`q62# zFA9*l3^hwBfr@^+3%S))?hxF+bLJ3T2LLdOKHUqtPv-(MQhDwl(9Z_=(c;F&E!NvE zdgO?^(#P+lye;qf+7RmZZ)1pl4R2HV>lomRFaYr5A3xJ~Dl_F26GTFP$loi2lVx8m zrpd;d7nYi5U_NgUIlW`22TW%D%-^X|Glg32(lR!&|v%S`H4QttLXS zR#8e4{hN1RPX+I#F2J;5EHdV-Vgu3DO^i|OlSg`#B`PiYC=OY(#_YqBc0p}w8W!5+ z9_DW-!j+MmQZI?Kks@~ATXnE2{#rD(J|wi4>PepNGtHu@-zf_#4gS11AwD?x>*voI zK$@X2BiZ!}^;U7@z~K)?+Ah@rBL~J`tRp^4`npu^*OilXqD01^?;ZBp*T9(qPe-`Pn~J!vgn^7*Ck= zaL(mLCRYAe>d(n?K`!Wur)M~ism)p*Xg^#X&}=eMGbwK??k7r7@KbOl5x z9gjI=0+QtJSIdI$xb^#SdBES3ttMr#DjH^*&yA>IL4ZLj+Nt2}rVg=Y0*T!D2cQa{>AW?4vl1$<5>R+@HQ}ubJT@`+;7$zr7NDcR>h-rCS^2 z1|P1Len;3Wzii!qY4O<|@!!jcZI;NgwQy{0*s0roSu01v&I~Y4L9IwDsQ!u+yH{H( zKVuj>0L>UdPA5wov`gUD+I5@nN)nIxrAE|dj6aNd8y0O^3{Bm}h}H^En#^QwKW^!_w=7BZp9fYv zs~GMhqndmA16r+GgP~0R1LF+Mm$oHSgLcW{t#7ae8g3EA0vBIp^enP$G(k~Vs$B#Q z)XeT1HlvY9-VBR4QXPB`?X1(cbrYFomf9fs9>vIv!tuhK1r*MXLv;w{vubHTdLg=G zJhj#^E0kX{WiDsNl&s0Jo^?{RnW09IysYA*OwL{`5Ht+kX-7U5l?$~4zuYV9eNM>+ zyF{o1=xnvBd%e1XIl#dk$Ay-@KlLQOmEoe{4f-`+aU_5Bb-8qXOc(Xiq3Gw$jtZoi z6Ae1?*|wrPbD;3=_;d!c5>K~$v}zC{Pyev^>ib2wilsD~l!IQT*9Q6e<4T^zspo2* zC;9L#2y9fq^-G)e4_Fx$$9$3_s6@Git@FmGqON>k*22ak&?Se-$b%6!>{sWyO_jI| z|Ge!mNELd#)aG+45^z6i>-Ahs`Y#M*ha@P0%=|XadWo*T0Dw7-msEg)^=~`jR)#%S z5N~?YO4d48getAixdUw*g7H6Mbx=6OBk0}tuLVghU%~dD(hyQ+MZsEm{!~T}dk`e* zr2Ld`{qx7im$B8r1EiI=%zkT{M=XAV5E_cb6va5Z4VLF;VPQGxh#7Ot8-gIf5V@tZ z9=DGah{A_w)%6!b?hG=;GhBfG*?ejX#a)YadnmZr)*4zzN$eCfu&AvVAl^$hJcNxuVLk-q4HR*s;e%?lzuhPS7B$YnoXv-0b{SSTYC z|CyTv_U6>6br0_szW?rO!B5k&$I-jQ6#+{w^7c6(Jm!;iUrIm7(D*nWFk5_EAXh)R z9WO(A0ih_TzUXm2ndxdhIo?CvVK_jtTw?u*Q2Ja7|1dgjDhIXmJ|x2H3(~7SMk%p0 zWIqlJuA{rALwHPtA8M0}E-1wQ&J8qeryn9#RKx<2Cbb%!*Uke}8=WqLX{tE=La{Uy zQw?&EeXc+m#l1f!0L_UPw4brFV(Wa4Sz~LnL$qACmI%tu^g~63Hlmv=%Xs$}`Ia+! zjz&0?@7&y$ktL)FrY%dzTW${W(2}>zF|aJ$-$VgM6D5#N~>gTp^Y3P}!MRQZg^s zqTG<%-xZQ*BnXN45(E_?HiwR^3Gy00jvV|ln6!AbN*HM%sTo39-=Nofm{Z&05@S)c|%uIVhI&*lb3uU0c(%v z{zyNNVQek60xfP>Za>wBPSh&vFrqp-%!rZyI>8n0lX>98{}HC?X0ZGYvG9riF&=MC zF%0b1++bO)7)NskA+;PD67&?G8C$(E9s77}ig*+E!1V@-jF z;zW(_W?44opoH?ZA+JBbmu-5uCK3n0E4FA!azfGW%eDTA@P+iz(+skGK z0%ej3D)}aypUBeYPFQyOrA8nad7MuiVu_jfC2G|98@;lgn$mdo{G{ZVgo@qM3u&yv z1{L;nj_MbPnKH)n@{l$k6&&pEogsEyEMY{6GC@?d9(^w=brR+3Y`F#P+evpkm3!|D z?r%f{9U)<&XWB7;cak%z63kreXi1wfSf4Rie`ENa^#Xb#e}fO+`|pOFH;4}llhnC^ zubr0_1bK7zX5S%#g^ySMRFw0!B^k)}%sZ}4^rY+bygwq69u`G+vt24L3heI3GBpb5#^Tox=#4 zy-D6{U_>X;;SCw~=dO1s2nqu5VRKMo4?pp&gBkWwxDnx(VgHUk|(^7kiv<{Q1{EV~uO#GM@$X4Rgs4 z;c$XbAnc{TBi^tMrV=?u8l5OeNId%b!Wr@g3G@AMq}jfht>Q!>S`K<#B3066k>?1# zNa0zZu*`z_`yZtV4q`dshQ(1e2$%!O%g-WHe5MJUF8ggxmbza^6Ct%>MN}?I!f8E% zAfE>K)fh2KnuRGMc>O-|z>v#TBpywQb_mnR_hKLpV5nwTIiK)l07>CUb*@W{0z!k@ zVmU!(c+RwD-@efzBz+y}Sw`F;o&g(URh=EaWe43*8X@Pze(7@}MbrY88o5~}ju8dz z`h^vZC=V|o)8_h*Lp5||?kA(V@3nt?$e7oC!;+LDr<20*qu@gbCYB)pC9!`^VQR)R z*ZcR~ZGzaV#$O%fR=n$9#gmQD%PL>-8+H46cinYEAa|adJq|1O={->evge)(_%n-z zObrXl2-eb)4QrRnd7Ci%+E+|(8WBdNK&0i_XPDj_#pKh^c)UV-&OTnG%XZc6Q#TIw z&vV_;VZ=-3zb11S)nuc%iiXvwA+K1U_(c(4qbI#TD*QIXThTH}d1GCD?oUpXuba%k zkxcVC1idrSY!OaZwce5E(mwug3Fv!wX1Y^`Z>QfFUw;JL*?VPMSzPrxK_k^-*Hl7^ zm?nqFL*#tKKN62Br*UQ+h=1)vnDcbWM^-tnG6@> zM+j;$pS+afM)tG@B+LWGitIvBkRlQ#cPn}*7U|!K3mcP4kwB*BBV*UJJBD_W2}X>D z_v%aW1~B`X(4q@6c*^?G#_FQF;MTe*Oaon zXA^Zk#Nul5i?Ns6LWY|afsc{;Vy@9i^-0<%O|yw<{hneaDQob&$mOdR(HW(!*0tED zsl+Yng66V!n)^?Sf&HzLx5BX~qE_x2nD|(OK$mbam@NfJN?wP zEwKnc1J*xEt^lj#j57{kv=V+nN~N(36MqQ-G6hZLTQIK+kTRb;(OGKT7(O!|;JCt)%n! z!$TdrRo(4Amu3mF;S+?c{*?J0?k2_y(je5#} zh|NHL>=LCLRv>59-NbhX5^#Et+K=m*$hx?PCYAhVN(gx7zFTd~JyB!Yg-)!L2uPhr zLwax(2g`8EtC@;erM5hN>sL%9GwY-)AdVRbXm%aTk4Wa(CjH)qwQU)^=DK`A7Kt;;@&%@{ajY)i4Mg2;fo)qacy z3Hg6Rep?L5yylSh;^pV-Tb?7mA7#rYJX@3|3Zc@(7zD=Ra5w2oD0F8ia83~BAy6dm z7h>#Ix-)(0z3CjiPNY5Pm%@`U%D2Kug{k;DR|-=9OdbrAUq1aEk{BqLc;IN7MYeu~ z)<0o}y>vdZmlv$rLSAq2)5M?l*o*WwjJq?*MwEicP$?8fa~}TS{yt|j`hykRwD&0y z;W5c-G&zjGqk6N(h!rdtA!89Xcycl=t`|FlHDeo>2kL))rg^SgM;njwk=)7JzRp#6 z(kR3Dn@@!M@u0dAv)qu)Tv#{sxd~peIpIWUa==?A)eECteHlP?3 z%ctA)&6N;nRzf60nB8Fpd;!=$HhS82m~tkFdWUkd`O9^8SlVt?{#es*E3-xb@L?5k zhUj~%QGr$zbN5$Etw$bvv z_Iur#TXDbBIqSF6gS>N9CQU^P-)3(O#HurFg;1=UvVqmksS0!U%)|n@f;9w1=QIwY zvHF-6U!)Wxlg`z}l|yJ3`CxQnfu&6(svyR2^3_YTo*!>mhl??PyslPFet*hQE%!a- zyjIY7MgeJi+)SQ#_6+M8lw)wS%CJ(dtKq$HN&czzTg7d><1-~G_6y#E_kK@wDAHdd z2wq?na!Rqt$G>7lWn(4APE}EeBJvk>Ud^wqI2 z1?Oxo`=5?~qYUi(rFG`RycokX7#?IL`ADwBOm62Zm4;yQ+GuYU)Prt}ol4$e4Y)J6 z-FQ&k}B5ydx&Eg|@uyt5QxS>pM+X_9bb# zJ&In*fTRQ{%|9veztP=WvX6vaRI+hU;Ih9>^r#PMrwZ84Q=r$u)Te5(-ZLQuC`#c@ zd8hLYveqFO6zNhmzPutQpxa0|@V5C;#F-`8kxbc8^Dkgu?hJKEEk|Y;=@3{yLE71< zd_|_)7HHm$w9M~diST}G3ey28jum~X-bkU#!5c#Zp{rKX?J`lK+F;`_TZE-l9xZp# zDoSKG6BIpsy$7q?d|c|$c;1iiFia&nbY+&&{A(S0`P8GTg}IGSt{bE^sKD-M6lt$x zxA8kkyp_RtBEnfPuF3+kv2M5C5qDAlwuYB$2r%F z)X1Iow(gh%-?o*Z3w^(8n@0!WW{oJh8qrn1zj0`If7muLRg6H0+8?0ZSUk3cbcV!$ z+>n{ZI>sCu37DCnKsJXB+m|kuu{i4n%Z1ec-n>1G;yE`ugayWc zS>;ESnjBK$#jS{fhsjFO)-%ursg_fHOhOn>7t9?LBx5i#J@i5Tv_u~z)AqUL&kc_= zx?u2PaB+G;-?AN#8|3uaw<~hgUAC)sX;E#9-NbzDf}Ey_fk%!HDdevwTU`a)WeAL5 zemhr22QUPj7SmC(Usg@*k9fkyNB1VB&cB0qeq1&d&mkbW>or;((NWGRaQ_f|g24qo z@BPZ`FJt%|KyF^|%?_g5z7>>Cw_7GZl5NH*dtI*2{~i;d8cEO~*g3}y@C&Gojn!7U7TCo93Mz%=}C zE`~7-9qr?;U+mWXMe=Vr+;{sQ;!HykU0hTqQq?X^c~l|?&hJR-PUkbhDyCMU0z zVQZB_4UpDw)$SWEd>O2#mdFEiSV5_U`cJZue^Gkp)VfjUgf5-7O-D>mjaIwoQf`wU zhFJB{x$*6J>W+k{Ux)nOYxm2mw?F2HPt(?;GeOLR+AX(+;xn6_tapdzc6!!(*u6Fj ze`5w4EmD6{kG~=)R>|6I-TfMUYNDWA7Xc9=a$X6Z-0}?LWx8-ASplZZ+~<89bG7!d z&#EC!yzQ1BA;Nty}5X%dvVIYFO^PNOG*J8a_^9Q zM~AuMR=P|0l8nTM@7eEG#M#w>)6v~dZ&t*pY32Kqcv-Q^pj9ca^w>sKP8;X`VT(Rl zcTM)%bfmErpLRw)D+(nVyUy*A=+51=@nvj0uyMhP1AQtJiRf6?FimmR(N)n{ot0Vj zBTHmum|P^?H@7x*+)5c^(iB<{7n4k`X`i-?nd+qk01D_8wEJ1(s^imnw!uWhpNQ(H zA(0^k@S2@%VTVmT@-j2tLZTwG{ls_Bt*|f)y~1FIpw%?fGvH*> z0t6R`X$%7UI3fPw>D|vHzHm1}!mcY~dask4*!YAQhZgnjQ4KUa;-=Xp?`(aEDTv>8 z?fovp6II^9XS!;F$x9=p-)XYmRiktaUZmO3tzxi;TGOzAu_SAY;Z@($JU&5UB0t+PQ03lkTAZ_r6 zIP^DMA*DF)VrLXr_va5A=a1aKmzpM0b0=Mh);Y@S5mPL36>XoGMoEPTL6t zoPBZec6{P*oxSi+TXi%Ke~(-ILV&RsJ+~|?05FYsxC?N^mzT6`k{*^8gQ4E%O>Hqh za*)T2FCK06jk9O~N9x*Z%zs<>?za{vMIi0qF{F9{JtRviH z+P=_@_^?u?VSuKUc3SAdP&loUz<*g;GfhXX!f~ z&bWhjC^HGzO+Tf)Oa9zR}wOejWdiG?n7)w*J)9VcG^1ZEd-jQEOc@?W|VMp=r z$9wgsFnR;*KQzR0r_~GakFPF878qmR9cYIwNrRpiYH1<;{E9FG8Ti86)B)Y6{nIIc@)t zA7@NcDl+4V`aEal9?2OaXSUySpiD=k>W3Bi$q*7rme>~*Y>2ry+Ccq`Cn(dF=$fyV zTtG+K`qY!QHa#bBb~o@cC}iogt#7PF%a<--t7XEx%l{Z45f0SZE?-7D}9HyHl>lWYg# zXc_fy&lXRf!_TNtJX}Krm?%eA%~&G#lw(p#oTQM{>?6nes`P@6Pz`2{$3&@|sI~ZI z*~gA;$E^5dsUa@(j@IlkZNkn79Bm-#Ss!rv?yC+}G2%?o3{LHyE7=#wv=yp=z0NviZT1Ll_Xy3JGhMLX@&Z*rF%hCG zLpRSs*7%?K`sD(&(}RWy;rpkw?>Ql$m>smEryqU;@73>DSVndQU<~iS-{~!UHdbTy zSolD^bQp2AfA`34?R%VK=*V{|Y2c;2f0u|@PeMdPe5$%cQoqj;g<%5k9DeLd9{PLG zf=DoznBOSQ7k=~#K4e9RnpQ3~6->c<`U&v-zl<6rAw*{V`@^Y4k`S{$*wy#~1HQvP zy0Y`c&UR-Rz=>paN%m}yZZOPt%zi)nLpNVbUI{MPF9&J7>h3Fku$A}PgQeeFTf-z9EX{k69`VyhTCWp&0`MbB9gAUc+;B|-9#svtyzPlb@U300 zBLWU_*&8|-(fTec3ui_T|3+nFwHp|LN2LiEOsxHq*vP-dZ#_+Z)MMRM5->UO17kA_ z{+gxu|9b)ImF58YT`RJEq(+$IU#-H!iLCcrw|A+K{}I*@0IrQxaeW<$4S-_FOoovN z8;^itd8%ChVLJo zZyA>2<~%6a3X6Yd&+M)-c{cG$`vkYQdm}ldgeKRIEJ~5vy6vj^r=U7N3m#6*Os^ez zlL{FO`v}&F4}j{C^ijoC`uJdnh(dYeXND!z@?k_au}MiApES3<5iGbATppr0IE^7} zct_!Xi;q6??<|UJw*QbqY^u*yJY`|HD9&Ezi~OsT-v++f&-^JC7E}wf+|O z?4@>BHrp{Xvib)o4@*{v7!(zh%n}Gx>BgxebCG1c=@04ep2ab;rFKY$Y3Ay7j#SMR zoV8>+E@nFZ&Ge)mZ#tUq63l}lbMfMDo%|WJ9#L%aSuTj{2fA76aCwHsUUp7b2-%RV zl)$l}GiMSeYAk*(GuylVE9;MX z!)l>~C}g$P=zM{%ejS`UmBdMr*x;HEm1ycrc6hHe9idtLq4RJP`7MBnXiXZL9$gB! z@;550DD!z=;P7i%T8}R}uX1-EqZINox)4S^5s=2aR1&i)yC?DNa-`tsi;4CQ1zwr? z?KyUjuOc=?+n}%S%=YY7;snE>-FRcT)dC*e3fzuYMv`!?Cl~{qs`~(0aQa4j4AJtj zUU&QUt~=b`@m(0iVko!(nxivgR<$zwt#il0sst;M z?3H8*9)j^Rx|WaF@yEz>36#;)S*frwP#B6uY`y-FH|_o1)`S=tU5yDb0IMf(1$dlq zw{cl==^vJYJN}8s^?g{6yZ9}1b>QDW_G(ShPruxVpKvEyZ%a_7bEB!N$p=h>8?C11 zelFI#!d^oB#)zf!h=u#&{(eK$#?g0Rn}S|{XJ*!MWa;~gg>oBO zic{oK*K$&~G@q1;-8cVi3UhaBBqo!My+@Xpt;V04 z9Mss`LFzJ#?>2fT?N^t&9Y{Mp&dj;A4k5NtMPYqc4CQ!1_kMb~*ys@eJ``J#e3g_b z-{{@$TJmnq@#b&ig0|z$G~-Rj^SKm_)!zHM?v|_g`|A|;kb%#^#UYh`V$~!p5}*;D zP%V4*AME?MDew7I-eref3rVxmn1!U^9ipB1&YN;16b9`2Z{MX@`0<7*HSdM24oSLW zqoygs%f+9Ovue`hmw;7N*`~_kf7i=8eA4|Vq(AcKv&tgWfU}$lv2&9g5^A`LV4-4Y zRa?9x3$Dd?whPoyOVmVRxwZH4VDOJ;Ms$uK{vF(FcMJ#4Ig2Exm548z?mv-Dv|BnE zRl96MfU=DnELy`C!=#SexsrG9RtZn=hVR>b7#-?rpqb^(7}e1nvw7FlxgM`Izo(dI zzNJ|}x@>9~$%9^A&?O*2&vDzhVW#EwJUV|ezy3S-yfG^tJ|w;H;Fqge91Z0>$%(Vq z({7>rj;dMyIfxIVSVSghPEukb@LnWh1C3^Ouu z_?9LK10$kppH8*dwZ_Ok4g~AKnR}{RwF8}KJOj=rV$bv=SDj=q<4;6}6HP{VgE`Ft zs>TN#=?+BIp6MLMKt|kyhdL1`;Y!$?j#gI!RBz0+b+DxCH3n=1FbtB(Vg-Q}#Gyne zcvyXj7@H9%oFCEZ7-RXgTLwxwwc5O3IHI0*16O`k?+3S7b0+2n(LF;6G%~Yz>1F$E z04#aO_3p>4Esm?B7dz$bWNDMF8%R+(R$WP8fB%ec5DSzh5Yx)^-xdoyKQ?R~^2}l0 zVhl8976YM2CeSjbH`)lei3OW0Tg{4DbY(Uj>dUbZy%u%8#M9-F3vgfiS!Mc&cnRff zM1Y-vB9DP8-Je*rxN5QJ2K#k+0y^RTUbD!h4i9nB7CS4I z`jtSot&)6#*QZ5_*Z&%6XRrL;hDfsB>|8G&?o8`$*}Sh_H}4Q0^6Tt%s~oiJ>{WJ+ zU)GFk*9;Y|4L^?T@4mfwVzdZ(SuKSQGPmpG371leX|RYy8zv~E8`5M0(}W%|K^|cN zuTPgvH58T`--Dxk6qCnmQ=gzm#~vb`bcWj3%o30GtvwQ^mk_s8QJ61M4d4;ZcZhBJ z_Pep_z>DPgS`I#>35!P4344M%9UFv%4GbevqCiPvjE5RhR{5;3_5?i{jVfcsHVQZH zm8DA!T?&UWi?cs?&0|*?=G?bm?{Q+I5%Q#~4c_a_cbE55k|Xd{!lINSbzAhiTibCV z$W=EP?llY_CG!_qTdwVZaiWarGDWIPcv3U-i9`qGSc7^V11=h?s=?+Z?4$lW|KO|I zyuI1>kK?LSvsG_D=_ZdI)Y;*#wxERwa8OgZ$jJnmRs{8)&tCCd6hjeFj~jlH(1(G1 z)5qZ4rX!VY=(Mz(eQXuoR_cKf0T)6okLLFtc-DH+3X%=o9G;Sh;#z8J7Gx5= zL%!^!%0Q;{+LU(}t&sfzNq-7ZFZV766;*l&UxZ9)SZ=G zOopnw3pJVw{}D8jetTcP5Bw>3ph#Pw4))rfKx{IQ1>M%=ENu}1#2$X`W?Ef8Jw2HP z*-K$#kcO0{l<9N-$C2wV8eG3L?yv*adN^Z)tebUdB?E9wUN;wup4*x)*O4G8#!CW* zqWE4V(+Zi0($Z#a5LWQar=Oa{8kV;RDhlMGVEMAVE=Bn0D~i~tN#h>tP#o;Qy+`ZP zogF3lTq|u1EaF`cwWS_gqpf!O?uGlBm}BqZkcq4dK6xAq5BjxmcI8EZUC-rqeye2mAeQ=w21)1b~gT%Y=Y z6;zHFj}m%5%g?H~838f1`A<*^9sTOH0CR7-l^BUIKgfBZ-#Is0b@Lvj$(I1bs=G*0F zvHu6XBC(0JaH@S)%X3;nn-6kiH{el5^F)v0zjndFX0@V&q>_ka+Ab&%FyX^YL|WYx z?xg{oR$wu18e9|s5nv&!4UkJ<+B>hs!h7J#grMr`)}Lrs<($mTlY}X!qts;m%r+VS zmWX5TrFL468fL60efEfUHBw@YQYCDAJfr6mEw77gp7YzguH;rYp<}U_ZkdkbAaoXQ zk+2$dMzJRGz)|9YN&@y67;!+jbP4%!|2k5?zQ+K3&n`+Y5(4%5*^>T$c;$^YOltaJ zHV}p*`Lud4LVi{M&kIOIHngY zWDMhq&zQZtOUQ@V`(H1nPx`k|Y`Ue_V>tITV@Fw?hxr%)bR`=ChLtHJLXpx$qCxkZ zix{5nd!J3JjVt<*eE4C{l{sM~U^COIiBH~ct>IK+?-6g52~>yhM8=ZvWD7a=yFbrQ z%#bc45hf&+l~I_uyqPtt(t);QDb4!u+WI(pQcAYGD#}p%3nV|?3JMBh#y=$t|%pk@?)`w8`g)PziE*8mL zk#ej64gVL5t~QU{SE|VsgIseH!ezS6jNidjOIK>G$4yTK2L7ezaj58NDbfP=Og@tN zW1kBWfhi>;mZZ_bk8e(%397Q6jGBlI`C$zH`fp$mX2XB1LyvNBwlT$|YlE9p+07W_ z0osrDDQE6;VIqzj;b{lr&<_n8hyLzGtDU1~q~r{Gm!3jLsJnrYc52#yj14ozB*b&k zB@)V9cy!1$xDuf48p$?S$C5{_&eC#8hRoXo*nGelK*c;0>rZ-g zkbT4{KjroJ&bk_!azPF;ZQ#XM)=5=fp|{8lRa-b)pF1)aH{#hcY5b~o_dO_*1^JcPn4N^$lY=gr&<8!g3`LN-O2DMMhX$7inom%B4=eq z#Dvx#Oe7*XbSw<^FTVu#4=@c<$wHh9+DrFO8w3E0Mz@=D04^0&V?4#N{gd{q@yQ83 zkvAa=BJ{;PZe0p{YWmK+7`CQDZTu0+KOQh%3nqhS}pfQnbfDmAgu*o=z2%VBgQfr`_4grh6hTO z=5Lr_vGdfY9DY*@uvf9v_}Cp>qlgG*8wi8{op?gaPGL#{^pU-q%0P6q>@-`OUu5u@ zzCHa}&!gTKLLa~G95!KgTtPPKKeqUa=|MCM7FSo5-o6-rHT6}si0i4y+o@hHiP5m6dQ>};0TwVB>T1JCc*~QzzsPU0NLe>!l>er#QG9rPJF>uvX7XV}1?$UH5LFQqMW{aNv4#m90_k@7wj$>HH_P z{KlrA1q`s-&PD$9Y&QE_U&2x&n$lrJTWpCo0PlGOF)#9AOKJGwjt$Y58)kCGGjX*UA^)n%>U6P zdOR2N3KFC3qz6A^H8H=z98(5e#csvCVvC{vM4cKv)mCZ$Esgv#TgCw;{c9I7eg_p( z{Jsu9{7T<_A&8=aeK4uwbUl0caSF%S@jL z4AsQhL#~L^-8d&diY7l(GQ`+oVN8vo8!Xh$7#gi!)4J zY+LMPFVx!{SQ_5_^Y_Y|+G|XIcQcA@_^?3u4(ZP4&h3mkMn40D%Sd=Z@iKuuz)INA7lAX#$dzqc8gkr3tU(axYRB6u0T`;}!tZI=KC*Aj8o_n_+Ktp?)W0Khc$^MS z6?{Kp$v!3{6@q00IO0P&Ug=wp$^Fejf4}GBDafW-C#xb#+r)wa7{2ejh??BzWEvTK zni!PV`3@!@&CVXnL&RywgPiADAcIlgMpx&#n4>dI+!=4>{lNzIXVR5KHMJ?Htv@fh zRt>kkjjDyjKeioeRWVf(RQ`n<5mLdBs`cm|N6M%yn=*2Ft-!i$57optePo9aDh8IC z6|w7DeU*PlK-Do4P)de;Jf`l@{%lweE>>Gi1&dcP=#3piu6=HyOMPcuqQZXHM9eUp zhJ@&(czvorzpug$Ca6hh%#vB&QnJ8EiGS+yE&k$Lba-<-->#9prQx477AI_}cf1{-JRMkwM2Uqe{k)NZ>rLZC!>&ItO|dDlI`JO`UpQ2 zyT9)npBi_){mcLR>50&5PqfzQcBtHD{4a9W{G9Lm0qWxNgYp?20t3)zM{r;9R9Cns zVs`4y8wn-;Ca>{n+&#`$#a}JC)vgr47i3f7S1L-(7Iq*^S-3(PB2LguRM2T?sw>(( zvSqs^rvQ@lKclI_tHgXIi0TD9w1RC}fx}Z<>v25fkwc3#d;DcY2dWh6zMq^VAh)G^ zk+qRxy8i=);pkg-lN&%-=GSmY*o=JNcuKpEMOo{Cf{*u9q21tq9BTH2d;|aT#ul)Oi@*HHa zXooDO@^WJnY776mn08{L{qy?qdab}#;*HG>gUa+v#MGXPva-H;KtP^MecQJa1f`56 zLUO4=i{xWGd{K7m8%ZBfwq8Si>GqQj#A3LPUG5-0#s%?eN|qz;_N(dJBweAtX6A;3 zh)s){I3$AF>2Mg|)_g@CzvdhkXS?VOr8(Pck&RsLw&zrcrz_3jyr%djLIJP%2?vdc z=d%6{jlO3e0Ql$K-FSo^?u*Txip<3cbN^)(Hp(_>F(}_~;Drj-+VN&7dJElbi-8IRLcm*2C zZXmM2>g~@rQD@ScA!`ZUSpn`R#8a%@Y#BE!?YT8Z+y6RNWV1IQ+Y8#mx00#Q%D!LO z)9Zze?@pBx-GICmQ^@74DVHzfj2AHXwblIQ;XOS2oKaTq_pawy+Pk-rhy2O&Y_>tY zqdKy=XaOKa4r!^zjgn7X=VkeRDW34P9lKR9+M;vC)ZaQT&M|z3B0Zwbc6tXloTDgkV-PMnj!`?uxe*)qX*Vw{OUrBHzDqe23Xi%>Vn)M<8Xjd^RJl zZ2_8K+@3@!n(*eZ`z0Dxhgu5Cpx`nT;JAcCSetPoYB(dlR6KI~;Wq3TpUho77n6Ls zPhk1h#{i)Gw0y1HM^tm%E}_?IhqRkIJi+6x21Vv*z~Q>?u8N~#Y` z8$hHkyLe^Yy853%P%vCSK2(9Q&TLGOfI+JV~G!fx!;vdjm!e)9@ zu?qF7qi#pZDB+j-{aBD=eKJ$wse5i*gdJ#>*do=QRneF{o|`{-M>d;QpS$rbga{S% zJ`uVBJPSCd&wC2b-`zBbMBNVTj!$_L0|4Xv2muu1SIgrnZ~m-%95%d#I42GT!aq!Q z`=n8V;o^o*`?xuNdn~G}p!BIE9(2U5_t#Fuv*PY}8)dsAW?Lv$J zaucylC#Gm!T8}Ht#Q_`toWDPX*qjOxq^T~#Fo*GQMMG}ut^_^1p~N0tdjw6j=XwtR zJ)2H(QRpGzNhF_n@^?BJ5U5v_7T`)Q{izCG$-r<>DEIq*x7_7TECh$L*%990}LF^-j<0g;hBR1RY8c5fdHfkEQps z9DR5G@(K#?oQw&F67q{a0Y4#Ru_~J7aW48JC7-s8FrTE$QGiVVDb#OArdKNR$2WsO zadu3A86HxpC>|o%?g-Ge_>n;rcYv-kOI|P)W`in&rF$w^u9}Bp!*j7s6G3z5gI%t7 zu$Kbrsna>3u^*sv6DXDA|EH3{rQ&*!hhd zA->M~xG=|#KxUH)J;u>U`^vCs7ce9l&rY*{(8sDe>!BV;He35r?g1 zfE-0~Na{)fQko-CWTBDfk%K2YJO=Crw)S`tU*#t}| zYzc3wF3cR(eZ|z9Hs^6Jo*&xEuzNu$(VI)Sj)r>V`ZjDh3UM65nEI=1{hKUlSjvgS z@9bw!+D$rWV9w{-ob6S_vz{Nq7GkzNj;?EqvuAqlKv%~Zr14#*K4>9J5*CQyXEPL; z#0)s4)NXXnv3y=o!7fNC(tpkGZ<8hYP>txnGV+U`wWi|OH69K`kx~3DpFQ*Xxa}&` z(Q-Y>z73!4pPEHH{(mfM?1JLzp9cH*z}wZ|*A=xdSpFYRUme!;AGJMt5;6n?1Zky1 zKmqB|AdP}FQi9S5lA}9BxiWXs#93lCFIsyV#%5EcoRAU4#4=J5OS_;D<=Ql;{F{_?KBsqL z{-7O>K}P6^qsDML_##A)WB1-Q@VB$#zGOzHvp?tEJ6^lmx9Nlap zBpXPPYm8i75FqR`H6y#NkNrvKbq8fi01??{#9W&%(Z35NpITSnF)u|N4qacs3pQ+# z-38e*j~43FM7-0u5+>*BTQ@};nLM}7%_=W3!VW8GcbMra%UcX!2sHzU2QWtv%0sws z=Xd1*nZ!!;Gj;&H6Ruo5)AB<`pTl`szumG_uY8g)D0>J6t86{6U}0JGUXh^t1J7A- z5F0S|Sm}=~TbQf#^VRTd9=!(tMt5XUk(0N{v@)L-rEJgE`o`__a+B9_lnecBG|I4k z=NCCx=9#V@l|I=$?k9ar6hI+Rdyo=MF<|T+^Lr{IanlqW5ooA=Se)Kg#Bjo^6odL*2d`T zt0P5pasQ>dam$s(SNoLOyCd3bjnBLl>gYZFxv|$6_AP24O-8-7=e&f&PVX-S+j3;r z{^~WrAo+|Izx`18>FUMu37YNmh8R7oDd$+J@b+`UoB#6y1ku47*gIP2l#0GP8{9vz zCbE4?*LcPlX6g~l=C@}23ssi#`7ml_a|;1$M}4$sH^Qo&0W$%h`?{B^ts_JSaea$9 zlUiS0QhYx{+u?osa7P`_o{8qIV5bKh^;q(RR>OG*^@Q_7X!|LA+WNMYpy|MuR7YQ@ zx2&%7JH~Kx6JSAua_gSzajuRCUmr5SvRzkDWN$>{p7c0<#UwGmSvL9P`{kcUK9K)W zT1|h7st^LPksE35KlA8AQu7llTTm!fkQxqXqPoe+FK~WdR6(J%)g4o$)3nh3t<91dt{}ou0Y4M)-IOkp&<|s45C)Jg{i6#CaEBqsom@a76-yv?&>JQin|{p3WK0(~~BR5*~mB-XT1E+$gz$UypQ%?}{@`~UJ}R9dDBMcSj}89zq` z;|4*eM!_4t@lXhc%82`rH3R9S3`S??1CYl63`xM8AmoPK-f>rrc^XEe;(mODBzGet zcP8~xMa5!V?%EGwx%jTL1h&ex699=5?MR0(h9B#Q-yAknTQ5CIzrY{9#-I2)f9pcS zR3Huc#b!9ns3x7KyBW~8-0th>?SIBLa>s_|yFfuyU9aIFQP0=0j}~LJ+aRXsbs&Yd>@;o4gzdtBO}h{>kk@YD)N@xC(bI167X|{FTBP+ z_k&vA({gltl6div+Gcjd{ugqclp`rJh)kBq+-J1QzV7gOua9oHUriWSm<%BZ*9<)k z?0C++si|T)Suo>d!3`rl(pchdS4>_`tP+MAULP>qX9hIrEo&WM2JR`_yv0ByC2!tyF5nL z6SSUzmWP2+YRgc_A0fS6!OX0t?w(%a=MBn(uC|^5pMaaEKgXKk8QXD9h8CJXVrYyw z+~P4&2Hj;M*Ko+_@@pkwM2^7>7Z_mC?`ez4qdnrMPO2Sx_TFv6R=(eb+~-89c`&$r zMICVnuTQJ#z1_KCy`r%hP;<8c7^GSA9^X5;Zv~6EubOER;_rNaW0YLY#+)DDBw!+{ zhMpY7vjXhM`)RJKmpbA&Czxh=;GAUTX(5-0fTZ+PI6Wv6_8j5cBY& z>Cwd31|Ns3Bn6>+-xBkmtw<|%Brh3Wr@>B5{MLOP5#FPIDHXn#KYpENrJRVzK}*7| z3~`i6fi|qkyXq~;aQhp!IS?}V>o&#j;TC~|>O23=wk;^D+0WQmr|U&|NpyVN$x?-H zic8%q^}oQ3$PiAs#;)U&8p?1&K^ucERJ1eteMyNudWFPX=t- z$O>N4ap3WWbp`WdS7`E>Ba+iEg#a;>CKL<%+w&&vdt51fSHJSoe+YWn+9o)B@3{kY zt)>WObpWO>GySS5YFws3@58D7$wl{tHK#}xrLIN54_c3W9q&64yiEgMC2Q{A5mTRU(jVy)@1*hyRq71P zR{|tHXXiw|8zcI2ccs|C-v0HWpzB$tm~a5VVjTX3KePne^g9ICib9t)hL4z{blULL zD#P36KHuqDM8E8BN`C7NHSM$|J+Z z=B2LzCwQ$mfjx1(mH9m)RYGoCL4%`Pnb_tyR1fA#O=zZm*067 z!|B$jPsEYL?c-h7Pmx>iq|rYsA<|qiR&Vv6L}|eGbzT`~Zc?GQqyXQ`#>+$LC0_@j z+8HGdK&9wyXggN>*NgvISa$U(C8P&oWyF39=6(PA@sY$UKQ+9DWd)_Q3z(o~?aXa7%YRt)XTTC>Rt?UI`s z=cOvv7kxU6HR2<$x{;-|d$Lh^rDe67K0!a1@&qXfz?tKjhuT-a{lLBO)RdcteYyY3 zngWv-y=k^Yi`UA+iRqV@_g}et{t#WH6Ee8MP0TT zD`2aB?gxLAtMvCd2Cpcg5Dg*HchyqWcd_hJWb$Wy>v5~5g}!#`Q4!b5yhFxo`zTg& z*94=V8iGec&OTInT-;1S-~Bk^q1rr&U3t=h+kKX!Ewhod(&#H<^>QfM^b?&+%qDCU zKKlyIhCDH`f<~UjDkJ@Fw-wPD<(xFzOgk;W6!;qR8o(){d$Lm=is(Lhj|9w8l2B`Y zh(lOK$Zw3(RySG<(dTv`&>Y7Exz{~{tE^S^LO;3teb-PEN0ElwdYweUV}tdId>bJ1 znhDQgp~uzu{*q^KpVTp~hlC4hue5I)J-9<)9kvZA07C+}+KnEYE5|OwqAjjgdjH8b zL&cJ#XQrOnO(jkG;M|LW7|Q%xSGQqy)9VaAK`Dt*K3`-?N$hK91N%*XI+z1%qBe!9 zeC>qzT?=f;M)D*@NmZMsjF_9Wv69tqL0%To1q1;0s0NLax75+E+%#AvMQGs zfFg1^pK{%i#zu%UKwX-mkpmZ_01@v$r7r+U!>9|iZpM#q+aJk%7;d}s zW=~NC)*d>ERQm?Q*#y<-hAZ_;{Wnbqzh;Vi;(rrjhVckrxy&5_f_(dMRUGkSV#9Oz zvrwO^;H*(n)|)3?!=&+*l-fiJH#P+rXgC-KDtun{hIaJq*eA}eu(K$Jb`I`A>gcmU zE9&FKaJB5gm+|6b`^c8|)_aRFl}`iY*b64}5qCoK8iD(4@|O(~VQFu&h+I=dr947v z&h-AllKdBHgIC9iVFLJu26Gco6=f#9+~93U22+QKE{C4OLvDg=_*n0~Q+SGn@X`<7 zQ*XUZSjusMW0M{WMu!a3zhz9e%MsY>!SHlCaOo!od&`5;O8@0G17?SflQEuFxPPJe zGAkCv=ImIUDfW;VqZ5`kS6+-(HkZv;=U|e~zsOGnJx$%Oa{2oAV^IG_itVe}_+;t7 zme9JYmu7%MgP6>8to}6nh8~6?|FxDys>4qCemaACNR6_@w}yF#aLle2H0SwV7_$ny z>l1fJWr?5djGonv`o>(Rc}8wAK5tj~I;p}@`a!|-q=^c7V0sINpT?6uYqQN%D2u4; z^bMg6d5_L}`J%HM7;r8er3Ru#TctnM5(ajB!Q30f{0ENzwcTy^#Udi^;qn*2b7JcB z7T4ol9eUxprelhj(u4UAEo=_p4e^iIQwP=Z5Ke2`xk&!&x^GybXEq4|0|$2b263kB z4x?M(-~@=+d|vf=t0@g}9C>vUXNB$ChrpX(rkl=V%tK3tJ zqm%xS(EN7Y7LHdQuTL>%!~8sOqY)s1?lWyZU?A*r`gY%hdn{@QjoAg<=@_zrJ3z4) ze&9^cY=104x^gkz7AgOfW@m)~08vuWepgBP({^i~^eP+xSlXYjOJE7Rf8369<%%4W zIc&aFpNWaPf=H|Em#kE0|G6uRzGBMp z-dzYoQS~dG`)x{{(@U3rm}?NsXNT8a{S zPyRQ|9$GHBsP1uT-n_fQLa#nutQt%fiB<4Kt9*3xMA>>oBd-o1uWg_8a!L!ORt!&5 z8w>Vov?87XliZQnL9g>a%wd3I+rKZ-Oi0#Rv6LM2EL2TQ_^bnljuO9_bX==}p@hY+ zLLA3_K4*VDP$J|#NK!@t=y=5@62p#nQ7fw{m}x1C!R#`j4>7OVu*VEoc$Ay8*Jv>Z zZ_(Qgk|U@gah4B?<86=#RByBe(Rr_QQOxK%(H`*cO0}d2TIzHD<71fh zem^@oApdn%+GZf;xOUw7c$)M8%KMr)<6pItCB~WfO2PR$)7|^~XEF;R zX2A8fnq?$rLdyh4*@E!zTL7Wk6u?Op4ZAj0YQaZ8gSVeBBkP{&k6)|5#Ah|+CjKqy zg9NRhdOh%+Ey;o*f$pu&o69+<{s&`py7Kr>KwtdR#XZpuxEaLnpZNzrg@S!nY!3c7 zyB{vbB0RsO^1qr-dFnT|L>@I(=T|vYZ~wHoD6R1`9#^%rQIEblK*4xbl?%Pu%kvO3 zC#LHKD5TRu?T2?cYtO&Q-h4-2ov&k> zFW!$R;5~|tgzPS>nOsT4zR%!wmWf2oMqGI9+G|^F>t?k~g59)93#d#19`L94Z1uM5 zD|B%WH25gqlE(Hl2iRYE8FP>03sf5}-j_t4;$#PCeLqG_^nR}z&zClQ(LP-jV_5$O zazC!X$%~irCH1wB;b_%gJ8UaMHkdQhv#bgq+Crg1 zI}Z0LLkIRkcD;d2Dd*S~G!-V+^zL`qTpNsF*uZtVAXQUEi#z4`ah!(FrUhz=4HIiL zlCR5yw}}BU@nCrS5B*zv-ILv>PUNC;Mi~A=*^IiJs`3Q}1MY{+ZYi18 z1D{x*C$IYJy_%l@wDa#uemVZ9T!~!2({^NLpW?+RxRYhmBvWzaaZuMfn15l$wjiFU z7WME8^lDXS$~lVo8~5$z+Xty^+2=C&APatl;HX!nGD+HWB9&p#JpSL;Po{cD^U2>g-S+PUCtzCV1~&~(#-u^!!`ti)3}T&mI0T>XfXcSNZ4TT+>)qZ~DvjRGqN%HZ zV1K|nJ5R@z;dp=$rHT0CW?=MP&ACvrtG|ROv&`7MT5@o!m%IFQ+`Lby`h;)Zv$AV1 zLJq^2!9;r>ukJWnnpNs4n@Y)iTB~0H%VR*+CfE{BI znZMkN&0SLwszavfIA66eKQ?HXgQZm>Cf$Lpyl)j^0|{`X<Qg?ASQx#^;NR{ga#v zAkad~3p9EGd_tn{@>J?>&vYxK0+s{!+T}y8U70YM4ke5tEUH#qpd9ig+Q3o=1!feE z;_rQUQ30uEvgO)fy0p+l6sb1v-~OaXnzMhN zn~eLt)ceqEpQ`XlyHJM_Sr9qyw}B@^iq=3KGrY`w_TI+7upXdy#B2ngiw8In)A2 zM0L#315oLd&vxQut_ioiklE0%gbA9R z90j>uh`~htAA6%dyj%kg*X>oA*vFFHEOFw$?fYU~fVMi2q*6+3Pi!q64EyS%nsE1D zbkdVP=M_&s7G}Y{T^wQQMFK2(5cn8GdJOs;aK&^|9h$6|{IUF?VJ3R^@^F9uSA&nE z`<>7GY=-BTLvvnSlg-=_U!Ul_upehhr;yjKwpA9#`YLiOIllBskDlySkv=IcY1$an z{IaHbWa*t^jv5)rvyu#F#hGA}GpkhpfI>nXAI3T~wF1<6PKac^k2m51R7Vang~wk0ti} zAvgGs6puf!wQ4hwN|)80gX*(678^wo{M4_(o_2X2uMS#VHzSmNnbH~8c175RzOKms z!k6#uDf~0F8f`oX`)1Trgws-qh{*Ujh=EeF2H3O5vr;zj<$ki!q#4~wYi_sGzv3r^I(@XgQ5tF-azSY}Gw?4o>;2y@*KU;|R zlo3gEUshPNuAc z8$~EdQ-%(>-P`C>)J*607ub!!WMLOlU}G0T$(CA|8gKRJJ08b9?x=n}sKuFRHWe)w zS@!jE{gR2ZM*z&ycoxx8dDMG{T!8z~SF|0=f}}YU>{=@A-#*lyr%)hJI5EY152J@^ZB;7c>X$UqwT-0Z*HoFqS{cbKsS;gW(9CToFS-KS_YrW+d4!JU$<5S@W|LfAI{Hr zqVN!{Bap>FDbYWdn5S>bjbbnMW;^+b5kwCjpdZVKA68(_Y5b+pr!7CDR+vCDjJOs8m1dWzGs4TmB{*s(yMpbSe_U>&NqUDDl7Hw$Z={qy8RY zyuaI$B-{2ZW5^fp>+hQ^2W>dQ!r`bOzV+^L^6kTe*zwbqL&cp!POsUrc1jKU-qNKE zv&7QNFWD5BCts5xnL+&cJXsw>Y0v0x596MpE;;yL2h1deR({R6aJ+iWuH8iZed0Po z?LmZ`02|c5gtOKSe_DGy4WE%_R&wFF!;ZL4zb$Aat}zSCAP3(+h=VXRRPmXhj*gS_e04_fCn~Sa0k29uf4<&sZZb+9&q_`CVU7-e^vVRTZ-50(bHE;{#NPk zeKZ#x!-dhN1;T3NTP`%ujTKcUE4{W<7F{M~=o)W07u_~wfTLJAKlCc@?=xhqGQ=-A z!V)hLwgyiXh-{p#?Qn4fH<0i1Nxv1+Y;wsbzIvPp;aBMZ%f3oM<*mZx}f%QL;BG9oc+9FWCPo-b7l zA}7u4M^wA5IL{+7hlg^=(Vl~&+qhwzFhW0dW_>qlRKq9_J92i#bwq|83yAQGpoxYF z1rEHT(Y4A|v9Y=n>^0lQx0`;%y9A@5M@|LJd3X8g7e%1v#o5129GX7x7r>w7H=iQj zhwrF-gntxkyW00S2|7Zx*SD+N+EcdhOhWZEsFuCYBv4xnXuRwjIPCGmH6FH-S{w)G z@9Bi{I>+m?ChZOAebFhq=jYse0aiUW*P~7TZ_7oKf$JxA+(fOKSmtiZ64xrMh^Rg8 zV(Ur%$k%k(KWQ;$#_taiG# z66>J;fP_xV`+CUS^)L`ahWt-2Lm}9AzOqEF%u(q*V!y^p(pjj)wMb!5@OKUpJB2?O z)!oMUz-03dp^s58u@)%z^()wHXpSb~q>$F+Cm@%KA6n(($#-euM^g?z1l?bD0=9)$ z!lHN$sOF^nI#x>Hd@T$R_8HFYoJTU4ArbYg$DRE(UD-)+4iVjfcJ>e`jhFUYjdODB z*ckXPKW>AEawv~WMWS_B%@$Ci49~n;4Ir2deT?hMZTqt>-{rU682{f454%~eY$^5( zA7FfGj>T0_R|HhZI7-L@Z4V6NzPQqlFb~6mBl)nW%XU85SN)$CAnNwej!Z-@Hx_-l z3L+rT;TVdHI7yIArB4On=Dv@lk{i3HsnEd_+xZIX!%Ri*U5?KK;bjlOTDM1A@9yE^ zzKZXJvp#}?!7S`ss!CfEpHDp`Lk3CrJ7zI^v;1z>;HE<(!(!T+S42yL%_lce73S0O zKaP=(Xxc=gCz{pAIHk!}ObbapLz~3t-L#7J7#Nal!kDH&aEH1FMp#oMJFaVlMh?%p z_epv``W{(}N>MWCq+!vW;AF(bUqONx(0A~6US`C0Pw}2-sFyFnqd-%MgghD5nEmL( z2s!5XAtEUFeHt=@J%a@ zbaJ|3SPah;PVihBZK!#!!4H|)Pv`C)77Il&B2EWbi%zSL=zg8xe_UwBdsX5=x_G+| zB}8|UpXMK+L=mZ_o6hgvfozKUoLpQ$IM>P)c2vLEciHQg6x)LtLspMt#?2OsoZ4Q6$^u3F&kvH5kPV zi#4q7jr!n8T^HvtCiVMQU0xiBBDQxAI#+xz9IG78{v+&1jei9s^ z&%{1oUSXt&vuL2R)x2QdbAdvL_Nhi3!EdHfP(v|pHxLNRf4r^jqR9L&9UyPPBY|#6jsK?1AcACX zR%SMasHXOGRF(;sBEVa(jm8ry~#bTuJJ9e<2y_GvXkJe7Y#A0ExYI*m3Sf^!2;| zX6f>MxIQFc*q77CDXqBwmMEID>nbfGy!VvAE!^yS+1!Qd=7ygqp09P@aw3fb|D_OEBC$+*N)D>h@Vjbr)Xh- z-?P)e_o`Y4V^k~nc;aiLSx`D5GHN!OkFt9sU?`e@0PH&6-OKhTZxcW;8YL=a}Bk$HJ!uSSQ= zuB)w9GlR4n(C+S1@A;WB#5N2+Y0QPcgkVqB{yRZ;e(u)6Kh$`Rg)LU%uu{^n{0C?C zqK6*HdDavx@s@7`LBqYL4K(-p{3FydW-aDVO%hd;+DW_YeLeU!MBMv+b=<6sY&&P+ ztok{pg^~mKVv3|dfW{^^`Qa|5_fy{q`h7%&q;rFPYWMR`QMHq?XFk9$Kdr5)U9u^q zsrr}lDt%b(zN)afN)$}vClyqB_S2Nx<4}j(;$m7V$Aw5*Qj<8^a`=7W$G@=lgnyFm z)7D=&wyYjycw|6!Ew8&;4)xACLr=;7y|RsjAQ6e@(N)^?l;7}GoxZ;cfYNA3hDLuq z#RlWzHVz%8FtSqIqT`rVP;tDj$sq`CG(m{dc;zrRpm#Q2JmHDNNRBW1J^_!|GCV;G ztCNj2BS&ewF3@l3`a7IX9IYk@_tPu=296?&POYb7ev)r zPho?t<4aC0C5ip5G>9`R=|Y1h#5VQ&kZz@I-&67Pow&93gV_Mhz;|u$2{M$|OkDyr z6%M4;ySjbh=Zr57=Avydt5MVpj}^oyW)2Zz>Ez49aFE{9M(DK%lzx zSYWIPs{5d~F;ya2Fu9|jIRh?SoFaLdz;_S;apVSW{^sF;kbucfO$x&XYnC|t!Z5fw zSLaHg|J$H5<(%AW@@0|jJ2SKQ5pn~3ovw)<<3+58GMeB5m$$&uoy=natwPA^K`Ni0Y88r$7T%4FgR(4Z310s`)wOS zxMs*6OsGpxKpn}JLO7)L3HiQ{-4(uRw4adCaMbCP;cEcPTE7*yreef(8?lVcf zu+YHD<%~xp$}QePIZWmBG=vX*cO@53w#m+a?#nj;@g3M4_f`Iq&5qRa>$GPF-5$5( zU`UajFf;@5xQsM@Z@8}Kp1&d8j?trHNs$mo^p5FT3Z|mite#1%d&Dviz<<3Ork>=c zH;Xl?)M?UJ)ecS$J%W&}^Q;SPJg)lkF3KE{;4QIP8NP)e2O>^_&29VuP1B z-}HMTjxZE#u;Ukzik1vYzvto@~F&4ztE-V-Vj@mfik=$QtSWqsv2H1#u0pSoNPMA|~e6SCm$eG*}?q8GFXfQ7QvXL|Nn%K>w{i>Gv)pWUDZ->T~ ze|$*gxDxvVAiWG7C4%?v)3p~3)8ed0XKWosq9Z5Tc%_3@83vAXI7iLQtmzn{=L0eA zL)1^X@TiNhAlOMj#+|(SAacOfzJ5zK%<|!g7AmgUE3*d4FyqRnkGfL*JHBU4iIGjd zVXpN3hGgJbo*j(6A9=wbSi8tK(vl-%5qz+?4wFp`&_G>Xbm1))TbX8IzrDV|1mCVw zr}E0+?m?z6ecVqN0>vipfyHP|KncaY&-{F-iyQ(=g*1;?H>}U~246c3cGfkRgoVMj z$Ue4N5^?sZ_-3C!aXU)l=8k@rcqaeT0R9NG0J}E!*&)SXSHO{vTw0AUYc9kw(TzRh z(~}{3rbs5;^7GxkV?XMZx z)+VFN`Pzm~j6#HQccas(uLNAx;8IKoF4?^}c@$`zvfmCQB+wxoL%}0jyeS@%ms2{e zqj%Ri2&#!c<{iZ#YEfUW1Y7E*;4e+G(tkiqxXlh`2Y;sLYHe}so<9yAYqoOgYP6GG z*7jACbMh}00PMsT*3BR*GJPB4@XF*w=Z?ZevPE^=Mtl1Vh|w+Vd6K%3S>R@;bA?2v zEA?}nWC#BY)yef0%6+WdqFK$dHvpJ=&Gp6%vn(OvHmKIP){N8mH~qud(h}v|Y&Ca| zj`S_QTTq~sEd({1Y|Wp_&=+RmE8^!)jWhX8#E_?R^C>t_GYvb5V=UD!g)O-DEG1Ly zF)x}Z7{Q+*iy{r5>u{lU^IREdZw|e=`BRyOJR;=;6W}3xV0^BUMhfI7Qu#61Wn>)a zTRb0lE`uFy#fYRBY^9A^GYr@xTbH_`dRsx%!0;i}&gL$To>tDBn{;5`D(h4n*oU=E zXWxpN^Xh-`ueoiMcIgEfVu$QtvljxyLN%jiujY@b-1nS*7dxhkv#0bv7+OBYS&J*z zzqi6xQhM({AHrccR7dj>ulMx2zSB@8;vK0|%>nbdFGCiv1b@Z7?0Y7$>E+@-sThUR z$sS!DtE3KLkr^%& zdxfN8jAl+!3n;Zy#AR1ueb5gjPsL}Hnf2hseIFJ%gGks}7G?H*moN7~=0{G(D)uX_ zXD?pF`n36P4W@`5+P3Zdk^iQ!GiwoX)ld^x!^4CdYW{BUFUj`dp-ZNdGTjnAXD|qF z{%TpnuljNOXr|@0JQYY9B&{_~fQ!HlPIbm*g#6>H>K&HC%ggCFlS*4Vg^`4ql<-*s z)^A4Gs31}(m|wo5Kf%U~2A@LS*3*gEA^xT3JA;W`^5JVAhlmfm56Q%plk42OEjTmq z@@ie_YoEBTTi+Un-kan%+fBZ@ZtgtQZl}BpfqZ}S*D>g%h}Wod(LIo@&kYYL||f5gd*|uYy%UC%tGDM9if$~Ah8E0?}kAS_C8l>LOnF@UrAn2ANrtpH@#Z4c$1~amTx2E9^n1M zegQ|p~BqS4j*71%+sFT!;Hv&H~DV1bs6Qf z{UjudTQ(vS-z+a2Geza$gjI;UrGj^dBdg!)MOixi2qh)_Y+))xau9R;BLnO=e)CDc z#{Kz7=AkTSQe+{|y~4%s)7!7A8fWi;^eX{#AH{0VBy`N?O~ul7tuwct8g!rFG^@p3 zgyv?^!O;`lP}_;%|U8#G+G7B5`UEP!Q+LUGwK_JnEVV>(j$#vePHffSxe{?Ajk)g z+E~GG5VGiK3OuScLfpgnFNJ9da=cGVtXN_FhvqB;r7-{^^27VPcxSWhIzHyjD*AdD@PAbroQ;$!&(#?`f}QDN`4g zm!!sgDFdw5nqA3C4Y#S6-@!uLj$R8*jk5I;aIM!YlFEw#bGhc106n2A&h8L5y;k*Dg>X8YaXMsrVhOcoMu5DFhu2yDW=DkK3>f6#o77jwcJ7(xS$S#o%I~8p5l0q zwf>|nGOtg3e1yJiN%^#a6k}MMmqIbCKbD9n&*p7mud9tv>UQi1;;^T1UFt_^?1vSf5Y(U~ zT3|qGr0`?^hM3kBV46O;JAyAB>SU8}HcFT2F5k>K-o5$TB!%ACh5DL5Ww&8@)9%n=Vb7`(=ycW=v36iJyne#vHW%Su=5X`xBH$ZwDlEC1d9+ykVWK~Xtaez zv9pUE?na?)BFW=uP4;M+*ShZ|Rbl_0k~;A^%<>r(Bbpp@D!NCeWopWhj0`@_6=BHo zWGMG8aEc?Mz|aQLT9aY+T<=d^g+IWweo$S)WBgJ!N(L?h;2Vnp%HuB&r0u0=Ie2k7 zyo5NZ5suZ9vBhu1pRchMS%X6XRS%$slxGdOzETg_r%ifCExpVGg}k zDaMbsgSmt2;5K_l#6K5uf_zOgxz#qhBK$H_sk_Hd1gW{y&5Pc+3!rFpi*nhLF6i7A zs{z(+jjkJG{bPjf3|8-z8HMB<>sD*82#}Ra*|E2PuSuSm3hnQa_hsOcHd+ZAERQ}# z-^yQz0@Xx{w(ZqTXfqPWJ|hBis6r;mM)rs8T?RlG`&cy(GIzuJjHR6%37CC(^+q1X3* zyIaMN6j;=v*Z?OHm&Tv~iygNBD6X3KkbCViEPbyj`W zXwx-0iCaszCnrv>XOx=KI6-2L_u$p@9hM8NQ4m8xz@ zf3gUA$l^C{B227Hh$ju&nDA$7G)T1d| zBgx5e0PqDlipzwW`e9E_GjosR3E**BZ7XkK2f~wbOJrD8!(Ayb-^v9MtY~3lU%z!Y zEClSZ=}kgk27oWeh-5&WOE+B+6i_mIal$~i_8MRjB?GNexHmv&{2YgsMl)9%@(QQ)xsBPl!(2l8@$ME%FZ9Bu;QHn|+@kso5 zkaVrr+X0`7?mrZ!jY@ID??zV`l&n*smlD`t4X<9nd~lkwc^8sDW#>lc10^Vg55wcP zaV1H6J=85qP)Gp~i=PoO4aZxf5>Xw3vfCyzBpvcmlUO5ClpSkT!>Cn#t7a0*(&KfvloB%E4kOy}J0j{E5ah3P{RsLC8R*NjM0E?Z1Lt&DxVfo-8!D3}WYu%hT|&$M0l(3FT5vdF;%&AKc0RoPn^6e}`j1=`aaky9M3jp;A&;3p&Q&f0 z7Fs*g%Dc(F6CGtYd;xC4urER zbEhI1tnOgt>u^Uh=bsn^1*VJH>-&RpcQrXB6lotsE&|imJj{uXax%}m!>LE*_1gVL zU41wu!4s-C1rV90ekJ$#XGYo)9Q$rS1qlJ5S2C!O7(z$Rrugh~4Z^(?oX>&9R#~vV z?8;S0sBKGf<+E#!K-Qnh~p7*6u6g#2+<&^3r-4^uCCZ0x1hrOLn0AZtcW z1Xt18czc%)UD<373bQv`V}s8jN`tV70<6Ak#o;0?QN#8sIQrR*35-Fg3_4gO=K8aP z=5~e-f$jD?7Y_6y)<-svKs;G8P5MehsYQ3<12PX^l082Zx_B`r+JTp)_`{wn7?ekN zLlCM}@}`6O0=s-~VXEQNT4s;{eg_^nr1;8(sXf#03j{my*~f)8QHO(gml3TIgooem zPVwZZmEYQ2v?Hv=@in8FlJf6?nqD;6&w)q}!`Cd30#2Kg&6kc3cq(|S5 z>^@lSY?9_IeCPBYm|ChjjLl}edK?OKqBGuzg}2x*KpC$r0FGiywfQX=k&+?!(6^U4d?zb> z$ebYL%5h}#7?00UM)v5(b+{BcJPpY($3~aB`fDpcZ{MH#s0}>Mj=rtGw|kr4gyh@B z{Hj6ZUB(OmmdmguLTq`lK9^!Sz&$w)#bY_Tu&}m#q-&m)U{-Ve|8E3bjIt9i$(3pM z9DZ=$*nr=#^R`+Gmu?Y83d*OQ@a?<@*X11O%nM20<)Eohpc zBTzf2mHl5~VaKInBn(L&F*`42JDHjNADX^0D$2HNd+3Hix}>C2L|PgNX%LX^?hud| z8fm%dZV(WVF6k0!k&^BhVCWoXzRUMn-?jYdFJ_-Rj@a8w#=#lWkoV-9#yq9cJ8YC+ z?0=l8W0&<0LlCh*@OY!5honyw8*{&KC43ngLIHXOQ-im`p4|bL z319%=;g^(*X|$^V7EE#)T#~M+aYVXO0xlgA0C(mdYp5W|%=kTpW2wPYxdNY$6$p^Lz^11*r66c599HsqXXa$52dC55XC+wj6K!$$33q{ zwv^O7JYxM{2P1B2eg=;bw`ZImC=gbz_N}&b{;zvX7MndAlO^qFJo-W*mPW}si+nsA zWsJYKJ05G(Up=@;-EaK)6GJ z6|lKRl#?1;Pcu4xkYoHr4ZA?-WYE|2K*nK;W^d_;Zxq+km3g+ z#6pNmkCZn9z=dJFIMZa1-e}wiWxyiFrUr+8yc&e?g5FBYxZjLZ0-bQ*wao_6=1^$X9*Ux)IUij|wBDs4?^Mmz zf8s@YC8`RA->wG|!4Nwx$6XfmfQG3fp!57e3XTl{-l(OcC9cWXr`~q5q}`s`{n>Z# zy=zW~{xKNMkFEV*55VPLwt#LX^t;F(XIxu_kxsK9j0)3WtT2$Fe!1KTB{~R|rA%hR zzD38f|B(|YP`@4A84GO$%wtjeY6j!ISe5@|a1;I&wh76+^c|p7s4*Pq-QX8;HO3nF zib)3&k)}kQ3XA}|^Gb8nKYFAJ9dt&3DLX>1Y341ikJ2bwq2Zew_;8$1V(u36HmLJG@+pWa~)fCFKujQ-1<4M0dUuV8zV=?GgKiE$5HxOT@p)tG@& zwKY}fW_nNu1nWP|ank-cHCzeW`A943$p(-rM=tB?GiG(T>?kW1jovQ&;Om9xhWWL`@d8} z`y$8|zBkAmDntTXW;<#{v9PeWr_41Iy)93~oKbNPwfXRKx8dJ{8}))yMX|InGL0OA zh-Yd1!F(b56yazf6!SO#SO`7{ETDCs8*h-lr9Na)=!v?;c?tcr5d;4-{1jwEQjN6L z0RiS8cG8y;61Y|DJf?vuk0o&$ZP0j`*dcqXwfNFiTJ|C(8&3~?tI_R=mxiy*=e-Te zcX`a5`+K+^jM5{u+v5$Jqtdw2w>Nwiw(>iZHfouD%@=Cpx%>xRsZtc1A+QF^#WF1|fHY5Mr?;_bja~h~Gn)CSA!8@^d9- z;8xFPQe+o9nwiPKR!<$d1g$lg1+g$Cy0}h}&n`_lG`>L^wGNFot(`wXkj&HL%H`dk zU+DNdue1;+NnVT8c0Yl*2V@z|(5>(V_ZVzqN=?8jS{(1sd-NT?OgtEcUXzA#d7k~$Mqk^ zDgUS{^!_b#2QqZ@k$fZtE%H$qxcl97${jJ3eB2p`t{yoD$jeet54LiW{_&sxMY=Q> z{Ib^MAxqgF@2F3YVTzNfDy6@PIfjL3i8!vV(&V?@(as3#*W=p{oq=hsDy<5Be{>%HbA=j#pJrP|bQ-;QW;r}YI2 zk$4feepw+b;^p{jw&Fr#Yx~0(AwfaUwkR!3wyj% zxMAIb7&s@@Msp#e)7wWcnSg!i->mGj&YHFE<_HYV=z6+i6=RXt_z3gwGW_|ng2c!m z6#U?GGi?5}zOPi2K@d=i-LMRMWgHSG3M_69;Hz@)NhQuku{@^u){^qc-mp`Qxnz01 zWm2XF^7pJP0Md~3+`FB%uRoxMarPHX5l>g6QMKW$aPsZbnd+lksn$rJKF!dWIOPTE8wNW=H0&EVbE=mi( za!=O*u-r4{&hL-mmCod;_0}f77;dAvfn9ZhC@5@INGrz zA;Xl?A%<#-?Z#34lpjwQLz#V7qJaJu4Xd`BI?H%|d98t)&!CX57y<-lgJ1$lO1Pih z9lB&LWv{u#vnZP|ZQO*)pALr)2z9Dw%8Df6cTz@l{f~-qNT1}ayTP*q^VxZzM`1uj z-{AOKG9U5EFEaJ;c4LL%!dne`MCifD5>(PjIr!~+dF7KMyH)-PGyK=?83T+K&qBORHS2l#JgKFU@!2Ahw;bj-LI+D>=eKL z(UqmZJgi-1zVJR{tCsC_*th$RZs$`6!`^7V88!+}4T`k$mQ)dt3-}!|TZ|#1ypUr| z`!3Nb0B}o2C(aG$#8=gsxjlOHgDuw;rPoPA)x(Ww!`L1r>4zsmW`9$sHet#-Z2e!O z(U1w24RN4u(!~YrKrcfxKHfAMh z81L!$+NtK$qrmcaF2-Nw-_KcbSf&NC+N$fV-63@V*#C`+-)EpRhV{wNi&s-c1}D_w z!_R%Zjg|gk0_geT$n(Lc+qLj;VdEs5u?+v^)^}I?ldy^A8#Z-s59Aegq6Yq!og6(N zx#4FW^9MRE{^h@BR-7OdULY&PB}9@VON2zR&esD-h_N@!7QSo50U5#Y{_wM_AE8zuQ53lg^pGRct?W^s?>2R0E1Kp+OEcK0)KS>Mi8rm4Yg`PJ+0lXl_ zj+2`x)6C)B&a3+o_NuOjsJv3MvGR^qf)}(@fI{Ri997gbpEV7rsw%gIn%JLlv znHDw*6FS2R1IV{+RFanwJ$)#7%%7rH+m zF+pI^{Js?O{tpBJ35H>g3CdVze~G|DdH=rNX6)^VP`~N(v?Ul}NR$-(`@0Z4fVA|) z7+@}8NNv9BOho>gKQ4D?>^IdG>?@7A`i+1*-=J01DzXt6ty*Au!48M=`*_XZAoGWM z!0h^*{N89>>DOC(;;sV&L~GGTuI)HELM|6At+X^t_f6U#UpcILR?fDR+iVT)fD#k( z`;3^`riI@`{V>I3B&F8*qLs%D`N<6#W!gg>LjHV|A1HnZ>rjAr16g7+?VhOM1X6+# zB6ak~Z1@<^;pG<6NyY#&_b0tRG%Vayvvqa}7wInk=ccf!?`|R$tXas=i9jeE2fpcm z^}`Ens(?Czm$qAw4Gc2A2po{A6?*}X0P>D1Q^I9r@L?b&Sr_WHITFWGP#Fe#K>AtfZm{uU44R2Ud{+=AEbuA%XHsrt`a5xykUSOy9;0(>t21tF`QORU zIIwDS23%IHg032Pc*uUlah)~zFsq;_#9QLCvhdC8%d==r?_aE5pLrm~jDk!p= zfdAo_O{q4=@p>cH?P>tUY1bn*?|M*sYmN8_xa`lG+jDn?0Muvp3)(gDNvxP>hy#uv zuRL)FB9&9)sR0YB7MY3RJV_IPtXa=&Q{5n)S@Te zg8cc|7=uKF=xVJC=_^(=}A5;l!_vv52l?$#ZyDm0s{b49GutA@9-v*@uLZ2WNMW4=Us zW%<4%Q0ZTW2rqk&9lm|gy56e@aKq9dfVP{l_<+n`g{Xx8H}hk|N0j^@g?Ijs!gHj) zGJO4VyX=M%@f!!z41X5nEsHA4?T%8;AD^gZ>G%nAEQ1eE#29-sLTY?>>y%MKEd>zw z3fB9Ku>xjMYos_?(Mm%h`>(tLc**)`(7msezN4M4;v*{Pc|iPD`~Ei-iz7q1h1at7 z+&n7Sp+z){4K~brwFa28f+*-%1ZaM7CEfDHlC2GwN!qb}eT4*v$$8ZoWwuC6RDbnQb-=Z}Vav4ls zrUw#&WC)FG8@VAThRA~dWV=g&gjsPk2!!Leuo( z0IP_pzBieTDcI+?pTyfcc;0(G$B0j`wQs z9uLj*>}-N;k%-$iavz&9qW9ZjPVhzK{wt8miG%?V2kQBypl@5==Z3PMnIibH86B4s z7tmF3@Mj0pYjVC!*lMz;O6SH~>StE65hy4o%G(Jn8IX_k_I|hGnfaAe{6^|wl6=vq zI$))OGKZ2n8juBu@$t$6o-&@*tR->fp{|$N9VjKXAvx*3SSQC&<>{>+!+=q(q#(EjZTltRH`B(y|Jp{kg8T0pwQ&eRu+mE%-i^FulDqq9#XEOTFiDw1rmVCL z?!O^|x{bu%R(Zy(;SZoP=~=4ssz+!52J@wd0BAVXY4Sb=%d~KAiaiq|`W9#iwMK3Q z9uzi;s$}3v*!E|!dju+7us`y0dk_P-8@BWr1@AEfrwaDhD)Ud~&*We?MS9=D98`Xa zGWfUM)^Dkz(6qP=GHbkvb#m=_9#vZ+Vgh=Ik1D&N(Ixeb`O(VO82FsD`$z*^eg@@f#w6Y<- zjP_qPhZ6z%CTc<%Y?M}fe0;*~*shGJ_AVOj4N;6cOZ@(kS88~xt0s$W=S)AIZXSPH zTh8QQgT@3V1nrKWgUm3cQJPqw%_e}p7Wq(@4i5Wf*mz^9XdGh`@oVDudW%nr@E7t- z)LyE1((ZAVP5N(F8DtMR;4qc4Fd!2wXa5*z|B}Sc@yX&hrfkY@Uf!A(4NJ^H9F$gW zYfn-Bkz##Mi@Qijqhqh9vDUHHP(+Z$6tRj+-zvY_4ju;Jh;!N>YD0E+p4Vg1_mVx{ zd|K`h_Lco95r=re@KC@rwQq&AwP5AvBN@=gQ4!Yw8k26|u3#sI2kXG8Q>LMA|HkZ1cKXH0jwfqD!*_ zIJ1QTqp+`tj=UJoTKr4wNtEHRZ5svxbrkoj5TM(ySr*#1lL`}0o)-+E%?fsx-Q*@q$l2GHp%YzSfNap7vNewPDiqYwaLTLx&} z7ns0_6j0hG5nAc!7UxpdeR@-CZvWi_ijKxhkMw{6IIVh1!9Va>jhz4Nau(o}fz&Vk z-y42e4vhVOlxd4u3!MhMuAny`3S@zr;#59ms9Q{_0(*0~{f%)C#WLS=D2bv5Lz*(n zE1FDDgeGMfr)PD5#}MC2ShK!sxYit_H{-vYAF+WN@yvepL;Mq*bnX73`e%}=>{!{! zsX|2?rkG_!*@F3e)y7H~FM8DwYG%32nDsvgnII1(J_GswS?)hRgAi5MLi3fwK{My) z;un^*CfKe?TD-|Q@+(;nI0+n?Y3jfA*sUn(a-@qiW%YT*>ukIxfjua!UsVD}86&{9 z*{p)Hgn>HPHzJI-oyB5*_d%e~8K$2cbjoy3W4NBhf>8(f{|%Nv-o-7aa#UP5x887r zY0R7*Ax9{OejbQiIg(ZS9WzbFMIt2jw*5SuQs3?F;mF%@4o7Wo6xlS=d4;P`*QR}~ z%;B$k?VcjeX=n$j;3#8A?VTn79=N88`%W5TZg~#Wt3eqt?T^tF2!R1Fj^DU)q^q(SID%PBtX)GTF5t@63V9i2Ss!tJj>8RIjWSe=F8)*I z?CadURGow1LuXJ5QeB&iYjs_XP!&QO;NSjF2^(Y(<$q$f5>SU)IA05%xhM92mJoD~nDVtH`)g?9{Lpn}iV|>`!1883EofHZO!6(4xNj z@1Z26DO`O{KgBzoL{|D;S)sjQnByEHSbT9*K=t4~UAo0zUt(D?F`HhpvoY5eD49J``mP~zb9H2hmnv(-`^ zCC`NO>{NfE<3s`|)emlfAl;B5i5w|Mb8ou;3<>2!1rg6|^*q}D;r8q08sJ03eG*;M zlPI1f$huG1C!eEenFtG$!9*DelQw}qorc`eJ4UddOC1w}*4Po9k2rmOx)^WUqh7h? z_5ImEXD>0weRmdKCk2&C$_wz_tY7y-?W|jkQ>hH|EaHxY#Oz2grWOL&*{x5&cgt(f z)VN)F6C&&q{%WzzVsn_4u*GBEV_#&5*1Suo22=7MkCl+7Q~cO)yYqQ{)8WM#$*)VK zq_ScFHWdLui!#L!PI$Ng2e*oqln;EJ*Bsq1Disu`WJn1u=FGSJFBO^%Jauj|z-{%L zihsD5hf9V@8vi!DwDLCYbJ^b}*~OqD!?O6kJ`3XpCq=wRk!^L;jqp`JQ<{e`G}YO` zhBeb~CY{t38n-gDO@0sB=>1>y8b`3OZh=h*`N7#6hZXx>OeZ)Xzk3@{@A%*#tE&fC zcI&YUHw>rQ%(SNOkD8swehVEVdc0OHJk;u=opX?;yt;7T_58RySb@g#q74z@?c9ik2_}T_kB1vlbrX5NuFL#8 zos$6+tlFE?v2iyrlIA7`d=;)$pCE%dQBHEkx#5)c1=!``h-}vSgTyh*i*PgH{~3ZM zi7}N~0AZ)%D~=qGJ;xjkXeSz=W3E=RtqzxAgmICDFCZ%}T5MfS^VFWoLU*cNNUbH0F43IQYxIa>&-uh@k<8u%>Kgi*{`H=g%PZl_+Rh{V-0LK z)g|jI4;wo>%nZtdjcB)_WvzV*h3|ba^ao)ung|;Yx2y$?iv%i#n@ahVK6y~NLs3P= zzncraiu8H%fb_gXN}0i2JJKOd`;Z(Y)py%%OY9Z)|Mvon{9yd;zk{@csfE92pS)bz z&t0ji>a_cGLl;hkpWfFUj*b%>r<7CLrt?DS3#md(>M@w*-IdRv&tO8^gBN7w`^0y$ z7FuCi3$JAP@N(|B{}f_hkcXj5AHQ0B`EIKFN)={e#Jj&jpYzd{bT1H<7)DB+;mga81 zTXykSj&S-@Ya<}`DY^c>f0ltY|>aW2Nj4hJpUXHYW zJUK+xL<05{-!G!C3rFat(@#uovR|~LUK>Mw%FBP@6X0J!VgAAePZJs!2r~#DRM;8x zDdU9RQ3n^S#7J${9&;gBmza2VJi6cy-Qr+%d{v0i;-J-lHw}K$m)=uWS0`7(&)y?L ziXX!9o*|8vGj-q^&9m>}ZcUAT=RFf|q+4T=m4u}?&Ea=-Id#xPm|6_dqDXa>-N;w40XMP(QEx%? zlx?42o%e>4x6wo%117@SSv8t@HO38IYU-0|iFy{JWz95EqTU-k>d!?(PZooSyvel- z0~IzNj-Q&17LhTn76fGOW6kW_zPpLbUY_Y_WbEIH)iixX&(`zJcVhHkI+Ii%SofgY zy?|ro$HC@}1Q4B1zxO+R-O$nO6O5`i=N*+CBKkmOsOj4bYOiRqsv;6})&G4k;%A)( z#bV;iuzW$~#auI-tK}*Pi|v73r=T=fKfg%8sRY0>jkOfINPchU<4Kxmf@DKl5WEp! z50I;oBgdgrED94;tEfWI>I*0kT%u4|VBvpmD22Uf%^T>tZ|_FPYg2R@_}Y`C~} zw$__YH9RpVbCEs`;32(zq88pJU9JG(aJj|7n_3|q;$o2c&GM?-_-bnOgJ4Ydt;?2Y zEXJdvkFf^d_>I&x;%dSwr&lWDt^m%wx+gn`luvjVcFGe#E~7tOU9`}hf-}LANj?wO zEy2*WvX%_|FG|)Ytyfa3lHO!U8W#@3mIbEY6O4$QbY-80{?Uv?fmdR4KSRbY2x=@M zJ|N32F3#%$V~K(eh23K@Y|Cx=OOx%M_IHe#e(4)v;LQr$kHDTjBhL%y%k^qDN%Oif zLD+Iz`bUf53a&_a=hA)R(_MbF{`G^{d1^|E!WOjcjjlC3VfF_cxJKy#m$;E;q-L{z ze6ETuv*GV|&B=MTKYpjtZAVOFKd$Xi^HrbgPc<3-tg{GOW@3V1{116)AQUD&i^x9K zgA=wJyz=MR2T_ed4?Ou5quH7H&D)Kn4R3@6AgRR`nW`F7o*vG*CY>KQ9-ohLUe+UK zPG0IEn-e{?sjXCjE8oYfoiro$CDy&&=Jqu&UH0YZ;SUSIidOhi!Cc0`e9^G5aYH?q}t1x;FNQojw}&`K9b__G?> zm9sQxEA+qkKyujlQHdfjP~b9%5K{fID8j;!eRsbIN(YuLOzp4k@bmFiz(dwgKsK-d z>peq=xLZ$xMlif2aLbAwSoX_LS!=h15F5u&k&PO`XYYJZn2^7drBio#bWi+tEQP%W z(1Ur+NU`ldQ=0o`7JEmZG)m39WeU9U|3Go%$j-L66I{Rw(%YuOwZD~bJ3T%$szV(N z8_#BetyEfU%gCRmJ@wqdN$NZrr%nS@h3%TJBZ61|`j#0zl=xg;I^NS#mvtDn78Q%R zmOBUp!=_U3f03ag=agWvw5T5XsU|zC-GFZ4RadUHS{Ll?+cD7i{iG!Q-(3zge&o!w zp%vwShRwh3FDU?@8-!JIc$+qgM^qD(t^bo4Mv zfjwbVVf82c4^GakdJ8h|uVm1kGpRzu7rqf(5ggvoc;jXA5tYL$n^U`T)(M5XDNb^| zL%#jrpZU5?YZCP@HC1X1HqCHD`SDje#{T>fbc%|)+jv|bkt=xQroZd0(_xS34=5yM zdZwAq`Cn5U0#)kF-|9*PYm#$|2t z7A;5z6i8xlDaNI@c0jaGw#!Fiq&Nmi>3q!83#JcHNtWZ*>(|Y4Vl1(~-stuYt#76o z@WJ*J$mNzg@pvL_SqSq_3*K|7Q?m}K!@}jAN}+ZsEq_oMX_P}@;Ls=P`TrNS6#ZSVIPO{06z7dg=?5^%wd z=7cq)a;pK)_^w@L&9@#laLYiK@}T+}xw^ko8YA#ngA)DsjvEVkw4dw0$*(ul z=lyLw4q22?9cNTsh&l(}1@3P!3Gv@TIaT4{nQ_03N8Jj$uM?A&hI*9Pn%w4wdU9$% zFBUo2fbY^iK~U|RED$%S)&n@wT#@NwUZekwDfGO$4q%)%J5_yh7DsFH+S+kAZQmy> zockq}=rdE=4I@}b&IkV933$V2J~7PzP$-+nOI`-)b4gZAP4g;B^(}=@wR{XTX;9Fwye@e*xxmsP1g8l$*O7-{2x6en*JEtLq5&N$>&g! z1MAt0K0ZG8Dl_IjWUalztNHSKke8JC^~SGz+C8RmhTnHSM6G+pOn7ka0;~>38}@$v z>i3S#V&W}s+i^gQ5CtJ#t@!WLC0vIwU@IV53`?RO{=;RHW12B@n)tcsK$t5!?p3kA zGx&$Sxp&|tH|?0~x0E=9sOTH>tU=_B!UTpTfR+pEfL1%KCC__wAUe=NNJ|Vdp~kzD zur(diK0kX8j9kve%7$|Nw*_e(e*|#NrnI!mnSdTE|y3c zs-XkovEYeJ>S1jiEv)Z#IJ(SqYcLLn2iI#%;cvV1Q(bX9t+2l8c61*;3Z$2(wmq5p z&%bgCZ_TJTH_Q;ZOL!@ZXhYLOjY+%Wdve&Jdbq86eV6^;kdZ3|e0R@-8KFKR5*8p? z!O@dXem)d0--I77E)Fs26-`q{Tl>(ar2wA;6Y(5xnz<(v$rePlW6fXqU(Gr6ZF&4v zx}SKS#pvDmC08_naO&15Jx)Fyk`oZ%HFR)&vze-myIj8%bj=G~B$1Z7j7-y3Nz4=L zAqW|H4!y_xLbfTXZY zK4iFodw7H`GdFu!up!SQ)tV(Xg6sQO7W7g!obtf{R!UGK_;IxFK;!ED4R~{((l3}D z9cFWOK zfJ1@i4YkTmCa)>fwO_KOWVKR!D;ji0*$uTK|E7wE`kUX~$tMCFxbu#Fo7oIO8Cmpf zmSk2*ZV%NQNM+B~bBG9uJm3>n@FC%ziR!7Y{@!Wx%$Q}ib2Ft-T+-n7;Y9HpkIQga zX`2UuYZ*Ca$zD28sdx^gEl9bs1>N8q9BU8fcp<~o+=Z|5uam&&-O)x|(V)uK{YqoAy{1Wwt)KJgXCR2l%+tzXuDK+mQIVew0Tk>*eRI z_xKG%i96ES_AzcyerBbIYCw>ZzQEctFpPj^Ug1)%m<7A=(MquAg?!_2z}D-j%l1#V zlSBvI>beWxc_1X!l7L@a$M8`)fd@OG*({;*u9lMhCnx&-#Uat#a& z+-XJpwCp){2}K%$$+rIz-0WR#uR?%UbRlFMJXqp5fMMbww)V9IUr)Rb@V$(53yjHG z|Hzf*8F{42GW9SudWgcQnb{I)VoS%D?w zp>Mw)F(ZlGd155VjW~{jJe7gM&U;6!(>XGkQxY!&5yol)kLX4_6+Fwsc zY#{?-M`gQGcqGVKwJ0bq;M5%>Tk&LR`p!#E-3OBWB|*smR1rIrgEst-?Tyas;rqt* zgPjODb*>;hU4xGDPFyQ4@`!or0shRqEE{L%Fdiczt?IdC<%|vXCq z!pfa9gNnAJD!Nq6Sijl@zAgn^#xrBsu#?mkBgxlW!!IX3pb(V1=EFnZce5+tyU=H0 zW5E?Pn4ml7<@(6YO-5TguH;oYKeVD$NBJP{M+!VGv0XxNtH;rwEQKq3AB3!aCMHz_ zlXwu-&qaM*>`)!<@>mqJ57>;FhMVtA;2qK0RTdUK+MgpK>zA3?*_IR2VEU(Ntozk< z1kc*#nwir#ie>m1%Ocz7j=jv!>q=xQ|5F~t6z$f^F}jKq?X2xIheB3G`$0iU zXzMJ_%wYh5tp_!&IO-!#v)54DbwIO!mP-gWfw_(6=s+4qeX7Ee5qf@Lk_AVj=2Mk zO1al{s6$wiPa1c3`cgyF56$DMlMJOl|5rum*2XfTFf%(u`dSg&w|-kN`VkItc7pT= zJ!Xm8>yyd(53Nolt&&$x-+F?vOxvGh!gv|Kzh<+0U6S^e@>%DG`@^BI|9yZ|g^a8CpQ77{-^vDhE*v3qq5^Rb@{C+lecHdGaS*xgVIo5c&MZuKekiSI58dXkq@ z^gC-rKk^LA-r98J;sF`|jWkDO>VHL>GN!=~4C@aNB$r)cfra~oIc4uU-?0 z`0w|BMPUdX_Sfc0OW2X4!&v5#CK}83>wea_`nbM7)QM*;x=|R(9)SFF*vNA_=K&7U zrj~25y^U5*qh>~!KPy8?o&RYNaE>eL0MiynkFC^3l zEMP8osEwyr84kzjs7LM0ZI|Tp?&r{1-~Jk`ZMETzL2OHc?l&jaz0Yi5(chB_;F@|) ze;nU`JX!361?`RnZpIbtM?vet?~JPiqw4)Or6zAOWZy0!G<}?CB?2TgkTDAeSE&~GEvX%l zBO>MOh@*PHlk0dwFPI2o_M>D1Zh_-ml8;ygb^|R5K%R&=6>7gLNbwp)mys?qkmi^m zLcky4tG)>Gve$A0a_GSYs96};jOSH8xNW z@Y*vUZQVaNE?UEihnEXY(xts-Ujw9?0JActAVnu(@wH2I6v zE&{gH9w2yU1!?PLad}!!tD%A$3F? z^J9={8WmZ_Jy0*HIz*x$Pvu{4){)AJ)2MYB4%7uqGjrvPDR9H}Io}^$i#^_$PS`;% zbpj9Zi0Zu-2tPNpZ22T8{4M09!}U~Vi(sbEIRA5=;lDY~I5`<#B1p;|C)4={{B-Gz z%*`EBRe={=vR203_3%THyU&n0bw1N$`{YQPF~cF`{BX)vfHpVm2SLp~F*0S@Wm(Ty zq2k?#aG_)~0O!1sY>q{WF(RP0Y(Py33{2_6%o{|u(aj1~s_KcHA2Zs%t>C9^d=jxk zXGE99{WWV7C5(T$3%OtZu`L`-uzty|k&&_E3OvnO72|xji8E?-I?+)xc&D4!#vxiN z<~sxJ8#OqER(g!Mks_qOWbhQ!8bD6 zcBvy@TO1}Ho9vcsz!?}cV`*+qWbU6UD!$Fk%2VJsdG}MC9v)|1q@6WF<+NRaI5>oU5g4%U^I0N_tJks4(!dR$<|N!l>xyUzlSDT_Bl4 zU{%y=X8FuieY~!Uh2i{T^E`wz;^0utl@AR#*LWOfcZ=2C!_%POcI?}&tpbdbogYuk zS38>Tf~OzQlo=yJlf^CWyQQw=wgggSf1-`)G^eGyu+R`~cJF#R*}6nQ=q z!R9l|VN50bg-IgX&xfeaP?3Xd4t#>Ns|Q9(Re{v*zwq7U37ZmNy)vLx8??zCZuWSL}5yZQp9M<7V zG>DA6vXVT{pT|Zej+@I90-XA-ak~?~!&?xY47b|qlEU&P6ltS9h!`&8k}cd<&RL_T zWcE=Q08W3w-Bw5U0=%K?)X9r6^9x3aZgCS3taGzyEAW62m3VNd4qyDn+)*Y~3p^uA z{yz4?J8K!%lNXJ+i*sIXOt~26mi_z>$*92kDsAzXRlRSszQ;cThP=N8_6k|ppMYh+ zR~3@X4EV~Lx1dEN&8_E&+X`A#Z(a@K#d@&1It{0$0ZUHd(fP&g^WB3fvp#p#Z^g5% zzv;Xfv0<|&3njYlZLr$qcGvai_ydL7T}h30lO8*Z*lgO-GdY-+u$)<5S#Q z-b;jSYx{K~{iO?DwdNq_B4s%aQ;s^JDDY*Vb!v|53h4X2(Z=J{Z{%!P(I1es7SNF@ zEeJ}{)~=gtXLvlH=d6I-vQX=SPe>^6`gM3}u@R`mD$1JEc&F{0=tMBG@2^XQG@29{)99?j&2OJ~en?bO2py&2%`@N&6iA-$1mH!5&g>eD*Fp8)Q-IOMrX#|Z%rN)Jnv;A=fq zI7haTeSljdt@I}vj&rluNXO9*joJc({L>0R0OCnzZ$fT|@I4sI1wyK~fa_97#pipXY_1@iZJaWg=%==S) zSK23!U(fIeEq^Y?tZ|U)@4fd56=Wr=@_}d5;I4gmyzrJ$q54agG3Hl0a?-l`Yaw{Q z^&WVD>KvTQ-$^%nbXt&0m3R^X7e4u-*J8{h`{!x>FL|PlnX)yn%wC44=H||g$AXbY zLl6GIqnc>ph0?NDIrzyn|5)RUjVpCsFM`nxA#Lk&PRePNoppR-{WA688d$6ce**r? zAwSuIi2aliUUnm}w7=1>jk3G>)n9v{SCSo7o|dK%4W zyJ>*}UW@fs z1N`{LQv-tI!?fnBHCB|EXlQ6FAIH>IJeF%zrzSlwb~x7jpkQX^5z3rQ00RZ?!=_`L zzj5;nZ0!98NmquOss4V~dLKL8#ZSA?KF8_W9NWZwEK7-R{sNUz4+;l5A$7ut-Q!XV zb5X)>sIB6Q>3Z}}R8xJ`?&=VmHazRHD|y(AVfdH${GO2gPXrm8rG@Jbg{0kllDrcO zDG-Mm4_qMtL*3rZSZ{NF{1YneWYXq-{HIw9Bt3Ot0}A zCAAL}ihbK&I6S7jpXPlCqN~%OO`h&3&>Ajq$WhJ9+qiobU76vO*^;${W9gvuqazxZ zl>Px8eLn~bqV6<*_3CA~1@%(a#^~sWKJ?%a9qtf4_=Xg4$P0P1UOWxto*Or~-fMD=tN*~C}rz*N1Qry1Rfj9ABrn;piNL3dW@^_s38nBTx ze2=q;0Z~nmSUV#Aq4X8{^84=q7FggFNxsx8_ii2b9Zs@H@p|^6ZnuJ&-;odR4n4^m zpC~TT$};?F>3Us+GihidFY)myjpFO8%T!1%J?KbIh? z&@^yg?c>Is%ebJb`6)U{wsg45_Kq#M=5@IZFle)$fcP*N(N#EBROot6BkxnVHpG{} zh_U23@bPV4>snGV*GNeX1Zh9GH-PjgD#s*05&^$$hNMI)Pvi z7wA&k8b?yh##Jq_KMNPvVw5qRi6J6f@Iw-p9 z(cLU~m-&hmH1qPpgkq}3YMe4NG2DdPQcTYep?m)ZXul?pWStUrMJ#%C^iExx-yTj| zI7v37@8%~{#wyf5d;CH9Kqg<-1Fc{O^O# z`az%q0-A+J*H!*nXmj98BNdSS>Ye2mN^fCga|>Ot$BT-oT%*;V9UHdCVmop)A@Z^Q z8=0%i()q;s%$9Kec;{>AGvE$v=X2NQL|k2O=DZV_fk+l3N5)uN{)kEI|D)+FqoQiR zHa>JW(%mT~jSLMUjYxM(3kXs}hjf>8iFBt7jfgZ4NOwqg4m0oZzt;PKFY|?gb)S9i zeeK`AuJz%Cpu4t*Id-rT<3|UB=5u;=%pnr?{IiS04k9}G&oTOwiTv7p)^ABh8voaW zRnJ;qK;@fa<}jQxKHQ2ZB=3Xq&%3#J5VK;TP%xqJJ!K zjbRDH-2*o8Fw#G;b6!`?%I#tw=>}3T zv(@!^IpsGS1dTUO&LENn&yVuXE1e5Y%q?fH zFeI_{=6SWzvw+EoB}JdMw?wegcSGMnP-3w)G55c_G)D6brmmGC8#5UA>kyBe$de=j~O2mF)Jdt$d9@92vdtY-9)2I@Z0g}9psD_D{b zN_qj&{yn|$=dY$ygmLADUKK?~gq}MfzvEU>q9y~)Wz*I)74t{`i^H2ZmLNq>1P&(X z;KWY9gSh9*&q$%*e0}c!rTSKA{v7O3+TJ9 z&=I^2f;fBIt5&ykq6chkig_N-nbq9Lq(SB~C9TT<9l&|O!})`7rVWi;?tc*SBZP(u zXXSr~aS3K1M)G@BgM7YUTdwGh?hS@Cz!2%j-z(d74_ZB*36Na)B68W*cTU6EpO1VC z1CN?E>!;>`Yl#Zie^f0W;=4|}^VSiEXXllgLAWCx7Rmh(!DVpwLsY}!8$bu-(xih# zSf}n^ypx%3Hnh&v(r!h3zXt{;)$eC^Q}#^S2(} z{8)qo>zQUiq*hP4(URk0<-4-r()+so7l_$x#OS0U29;y>JGNgmi2sb!M(p@$x&6z4 z?Gw_u@4{bD6noA`%(nsy{J^q={6fNEmbWu9yzKkfic!|TW^#yywuN9rz_PZ~#xn;03LI zC(~jy#NTfbjIs8BPv^TY*)AqBeB{LUfSBU zd=rmFtK&{mYIoi6M-_Sr2*|VeC`iBC6=ak~BL1~;IEpGUx;y|VwU~`EFYzB~ zaG(k)o9PC3g(xGTwC_-F=TBImsh-@tCSbH(?{PG8`gFEP8K}~^J61oZTq7LGn4Oce z*+1lgE0mk9`h%I7{F}G|p5f!Ol2dw~Q|P>kyp=?R-o-Mp+{S;V-QSnLy-Br|+gt~z zSOH3p{iLpC@8)XcezyUo+kKCJJKYg?pjW_!=2&VO z%x+(nBms_sE}iZlM|?rh&OK*T!~z7|&G83Ql=?J77ce#Tk8z2We}5#B3yc^V98cG!wjkFIf7nPy_}q^d2kvX54C@6Q(bNL) zd|rP#TOQYk-{>zw?&9B#>4mcs0$si=vyeC$3M%)jP+|580*T-JU;N};Ip7B zy8i)e@ER3+;u86uQeu15^v4O8@N8pFkqfJAN^ z6JmxSI&>rkl{6ee6-Ndp0@$PfXT;Om*g*sijhK6qeSv?7=$gdf z&JL;07o}`a%}w!&){JuCqBA1Xh>1bEH(0-J>%aaK)$(nN7dRBHv}_4>=THCi=q5s* zkvX@&;ksA>5Vbfb56rtSY0c(qzDA1`(Munq1mJuaR* z)KO&{X3qjBI({-&l!hgZ+N<~rAxQh7hr)pd#JF;EA&`*r zSzQ5>k-xO`v{Ow(qjCRmHQ>Yt+OOXOLyL@@?`4XBlnEDG-eA0F8@^&+-?&K5^abd- z!;o0(C0sGq=*H)!cjjEcaBlNAH{56Dft(W_3yhL;%_t*;Q z1*&hYG9kx1!qQM=GP5pG_I*`GOl0gb0mQY0{ohx4t~Rj1q0dFXN^}w`u)8ZZVbTPk;`tK z`Qy2w#mEslRI{&$2Dcy%`Ue zIIlIwBnIt>-cMm5IQNy5Kf@!)KR;I5`(D+w0YkyzS9sV7Vab^22d{>v9BtCkE+Dmf z5lIX(Xh=67O_+Lzc_gwDX0yV6&aCMD!?H{qY6ghe%ij>9Qf8CPkMkUSZZ|PJ#j$OP zSrvb)eB|E!$s-^oJDXC(^^XkU{m*YOorA&Z^%R+5!Iaz=F}yH?6LV{b0m%-Q{G@ZI|<6BPAIljNJup+dNspuKcju z5GLgf)0_C6z#Lv^v4l%icD|Ks{{)Q2rHHrl9|jQ#@^xmh2+tpBqz}4V{`wct)IaN% z%s}ljE{0&p_SEnx>}u$YbuGb1j)b575biIxremu{)9D?awFYr7EuZa36&i;T>g2i- zA@JUA>Ag+>`-jJnkn=m2SaxLCHsdSCU&NAp1$)xH2ruv}dRM5$(-?H+*LuA2Yr@H= z;q$WHCsUsn1Jn!JG#pms&Qc5P=YhyzhVw8bev4D$Bu`cnj2!|z0*|e6l7PE)xTsm+ z=?hhP6g+`y`si=C*^;`ptEb~Dmm6Jw>LKiAWeK<5F9GqvO9luHA4d>qaf;7&S~6ds z`AGVZ1zl0HeIbtpgZ%x($USF5LP9`R!115fJSXXv%tXj_$yW*Ql>Guovbod)sawwj z8Bn_Zw8oQQZ5ve%`+j8og82Jly90II`@)3WF-=}S7~nNpMu zaTzsTRp}IA^>j7%W04z(akzB#;pVH)YDCF=Uu^O6x_hZ8E#*U5{}9eL@EBmNpZ(X0 zCQDc!`1BrKwM{B7J= zq%mkff-Bu9)+Oyj^n+*Y^X861)NP38{^XtMs}sc?1CioMiPX(n?=tql(}9F4T+?_| zSmX=|9YX$|qG!dLMN6o!gREZhUZuMLrA#wzkmIzkpagYw|gxGl)B=xV zAxy{j-909v1N$XqPS9C(nhgo?q950X2mguyl*9BfrXj>NrMu-8Bo!?N!Mo&B#VrE> zG6!?iz#zrjh($9R(Hw)Q$v&f9KAyid$p#3G^haDTrwy6ze2tf}OWLEOGhSMgp;&(|!> zZt;bX%eOqs#r#?}&*eAAD_ya93&&RbYk9{jZLxhV^0+nBa-8vJe)m0^8xePI4T|m= zBRk^aKjhG`#~SKsb4L(++VCd`j2objDX8$9;7`JROr;Fx$XcRg`!9@c>l9+ew3{- zKn-V7yLHE`!^Sl|uMf2IKkpd^!N=Ie1Mc}rNM=c~(VRzQRbytp@7~`T!^~Iy3jMcy zAoiimgIlj#^~FFVKMq=TXxOXx^P6q!* zDA>4?=-#m5(_vg38&!FQJwNU!I~Yy`KOlfp`mB4C^T^%1wLFmjp63R1R$)5HOX8@J z$&I7nP)DJi!9_UtvC#NG@aBU0G~as8#PaVJq`iItFmO7medu<10z`_rTj1gr6;zSg z0-Vh)-wNDkGW8&h{a~~&h*4XYPl)jeVYb*Cnk{h6a$I7VhBF53S~M203wTjdLIXMF z@7cGOSZsrxMVIrskMrXK_exGNOQwjK`~1m85_@rvdsK&b(|Sr8Dx0eb-s7Gig08wB zUsgqrEuS;+aBFa!zCM`+pZV3`BT>@H1Ed#Pjj)j;Pzco$H80H(1&Dq=$TiM!sJdhQ z9C!?IaJQ%Tfph`?<7~yL{nK)t@@MIw|Hl7;ClZC}N=C#3jbe|pnZC~u>4<&5qWgmB zYDkT6K5#4D_H$i?;5kJ_o`-=r^CI3}VXq8X!hWYBQ_0dV#WU#k=O@r+^rdRP z9%`rkj|2;@9X={|odTR^pHcIpj4LgcMBWR0 zLQC2dlPK`~IXXH@@t(9W{YCSPLuDPss&$!=c}8G{DSAeK|BF-ik;#It;Q2gNz*pZr zx3|vw2&6cou2?&)v+-H_Xui&N`F8y4Ytb(*%g+?%m@hh`R}8Au*3qPL(m}!XK5Ra~ zFC>&hx+0G?LvNlx{$b~n`{N*h4DnZ42lAE?@Pdhp*R;sN!2=mo@;u8WX`0m1ctr{} zv>*?(CY5(I)|w%A8`0JszHHCX0Rven6zG8M%!23V1(dt1c*uqK+FkygOxiR>oe;Td z62JEvj8o3?iMr+H9s-Qebu|GBWV9+DdWX!ddF{@{r8&u8yVZ;^LL&SfURfethVpI@C9V5i9Bjj8l;D=e&W~aB> z*xs7|=^pJ_dqG{`jgRl&p)je-Kh{zY*RwR>AmkSuUxtViND|(p>6q38kq60Sn!^g* zO8-!hJI3o*Z7zIJnH}U3%ZiXYz-Acy!pjcOQcXFSlZqL-GC6D^XZAZi8c~a=4+f(0 z)oW_cLrwM8MJ-Ac=;R~AoS9Vy8H>x9vQbm|@3A61qY6Mst@-1AL^3A4Rmpkgzb*X8n zdyJ`zUf$FpqzfSDO)3fluHLoL@6<`L$Zh!?YJ8tz0(9U1pEv-mPijLG8))eVtfZ}gqN(B>3a&Oh2=_Le5!q5 z_X#Bh%AIE9-cB=#>3&`jlP+^f_jOHyKu`dwe_^nO;eaaOO;>?5(srGj&_7 zz1{pkrK2+eE-Qbt3{wd%BHV({R_kkExhuQ=?wog2ts|y;c z)U{8N)8cv2z=Ojy0)GGPe*N!R?;Vz%ltS4TOXEMlEZRD1MAS5g8<;!n3o_%zoREI= z6Uyc!snQM)67ihX&3#Hw`rd;Z`1{gza{r}!$C3fIk(1i24ZwE(>ttM(qR*b*%n0a;CL1V0B7n{idbPP`L;3 zEN8W7%L<6Xt|vw!t_D%-texM*!QZJ34X!$nP(y|RWq9H%>p9AA_#C92$sps%Qt4%* z=S-Be-Cs!_R0HjBzj-1#LSN|{RlFD9erx=sjtqJK1=t901@tQ@Y?%J?zq){I?|}h_ z8mxEx_QQ~Xpg4Ac4`zAfnm+({RLFpiXpJjD8UlrqI>aZf?Dm^qDpLC5$1-&rE;wD zUGs0Cix)R1+{bqb^JR3`H(Bn8zgh2w?I=G#s&j2OSt=E3&|Y!J{|RCAAUqC@*Y%=8 zLSn}+*f=;+{(KF2-M_RceB610HYAe?-$gYtMY5@Cf#M21*>3%Kg8`xfs4rX8 zt=`Z-v+=DCml2PLT$o7-$427|Uj{q-4?*9UD&%)3ww*F+h1Toj7X zjtlHtN6j1GLb$T~aQl$9~+_B_A;unm5cSU6q9(Vl~tK-)=p`@#I$`CCAu$oZ8u zhPd=+x_^zeL1fI#7lwaC#d~^S7C*6oJH4wjb3rAPc)t$6oEd~l9OibWOLMa#CGqzXspche{H}z@JFljm z>c3fPG+jR%?D01jOmRnkn<-f+MGsA9*~kE*?smGp+1|!1MnfKAXuhh|W3^_%^D3~- z{pQBs0P4*Q%0Jrr@5c%y1G^^x1c{SHI-bu)L4Fg!p#YLsS#P&Wg$zDe{t=Z#yoeCzB=6ytNx8>y&S~h; zC}>+y+kqE_l$Z>Tcyux>3PEp}92iI+WEsjF#4uGTGZ`^gpHgNfW%}I_#Jz65KOBvXt-RhPR;QA5Jo|8BmoXCn{wMUuz4Z)^ z@7X>H&-G}oUb$QA2U`&hG*az9R{sv$1r8=9FnxO!rxuME^dzBtX}KKFV?WEseuZ`E zNuTMAn#Y47hv`M=9^^&J=_bn=Z#iXz3|i_r@^Fy#9|f(t2Yh@DKuPmLQr(f$(*n+2 z<}n*NejQT23(C?ue()%8wb>!YQY+4sI8V^C*m;#WjVL>8Pq^`Q95ZjzNC)b74 zMJwr7|I}>2B>k%-1j&+T4h|`U_h!JSYno$~>kN{+@*1kj|B7MG{x*S9DOCJfa(=Ns zu6j~VimWzJYE+|LrT2NEYkd^)00{`gIEB&|UzMaaR-M;v#hQBcNeX|?XHV!EOl3FQ z4fsqv#?NVlCR6e;7wE+Q8)I@tkn_NO)KClLVQ1&?1eZzXb3Q|uCgxQ!?;nQbhl1w5 zvl*WnNt*-qbrK9TFT$l=W`f2RBLnZA4hlCXAc-UrD=mo{`o5 zxRLl59ZXmZ*oy4E+y|~%Uma?+RR#E8^$s40K_14>&Z`Put6LVTc+^v5G#-%jCjrO2nXm_PjJuCrv4!&Gh%#ar@3gr2Fbs^_c|t)=KhvBj#fPEwLx4hVzG00K%LG!aG>Z{mUEWPt7DT0P12DqDA zq{Q+R)6X6pmm_^XgH}DH42}TaD}%I%OBYQGDpiSw#l#_esXZJ)oYbLEmFB3pK?q}R zEr=zIIF7?WX6u1YS65fXvHol+aOL9>Z@`I@`SySM=DW(^M`id$1$Z}I->l52Mu&%t zlT=Pfzih7f^fHqRHY6Gy{b2-Fs?1)pM86qf zRZ2hPf<-6kx06fwE@6K~vupL-)p8lT!kOA0fbH`e9y!?Atq%LYHi-{F=%ljW!U`(* zPM-gxCAlyjLcG`h_kUZi$-bdoo9(Mv=;V=WDf-19WcU((W|{~7v&My(uv3fd+gz8^}QycnZLgyQ9j)}QS; zbzCi+?nO$vTKHc1HAni@L|*FYCjA`kzy*qI7J6A9@g(?>2XaH-Gxnfcf?G|iz`fe0 zX2~d@N$l1-yhmNPm4QKT;l7XF{bz`qAPbNmn7ey$j&+h#p}z5%^g+mNIwN#kMNL^Z z^x{EW<_#z1t0vxOEffhc`d7@GQmpuGQUvs+33i#NzQk;JiCAL;<#)dP0C`0|ax ztaznK2OK0&Lu8p!8We?{Ukd^GUL+0~ScNyW-p45NSFDJ+p1LStT-tm&*0KqBg4BnnI zj;G#54mAy>qX4uA1TRE(XkmaF*=@{XY<9OK$X_3C%Y`wMy*oQ;EKC-R8=hbS_?m?h zv)V~o)p>RW8yp~ueY`hE7QSH)lZIU0fGv)O$CK)xG)X>)H=OfL8(qz0xB2c&dD2LU z$_bxy?a8{RO{oC-UDp34_$eW0a^-wwd@U-6Z!GAg4cS1oV$of8?7~y^Sy3;e) zbQ{%c^0{6kDP(gd)HSv4F#iiNio_%R9=FaCM(*X~hy%?7mARAnpHr)xo zAR=vbaw|U`|82{XmJIo8K>L_LbN;!WoTNyG`?vmSaaZ25B zWqMbCHh)B6A{l&!)_x;l^!FQ^2lS4`zJ(YSX()u)wPnH_w(NG1int&tWu&B`J9e9g zrrp=ZGUDArcBF3u4_@-4t~vAm56B9|Cspc``;1fv`)^VlHk-*$g912c=)y9Qp{LfF z&Yz&$ej;b;(!76<2wbz?ck{*{iy3|MYgcf{iV@pHEe_Aiz6x>wT?OKyCT|R^ z4Ps0gi5_MT)4LnU_ir3`Xd{Drn;-S=ibTntvSUP!WT0K2%EWNIs?X-x`-!R1%TE+U z(Mo8D*MYDj$PHh|-K``;>yv1l$OX9is+u|@ zBm~>{cF+k1oZD`X3zi;i4kLVdC89FDmoUIbgOexoe!bO!?gDBZiJ;knSS2&Cny@dc z*!H(IFQ)um8~SnjUwaa;c4# zzONy<58`;aQwtIYoGi}e_+Lp47NNLZkONqk8?A3@-=-|;wI(bPm9EXi)^~)>HRv2k zWVIQm?yxv8@84C`bV}CY0qpM@N{%?1Y`@>*tnRZC6UfOP42gEQU9ak>UTqC=qH9kM ziFZ0bbiFca16@EF2crj%ro-48uM^2Wpf>rcac8Ff)|w-u_Ku17OTwE6u^J8v;=WTo zXD8mWWs*1lvh!(s24p!UYw(L*TcmIkn=qXwso^Nt85Nzd2IoQqFDEzJ1iAP*6>mRe zim}Y(B{N|)Egis$BPi&f?nlHt_i(`vqm%c`^l(~D=?79kF9Oc7PGz{I%DX}`)>0n3 z1eZmCjPoBL2>G7~u%e1L+ggu}AL(+V{`=oqjZoMpS>|LYQ&6|CN&4*iMBG&pLAX&Vxdr7b zYj}$VA`JF>QU-UP)l}s7K*{EX{tj>|Y&;v&~p(F-r**YMg=OUZP$6-08hU!Q{RngzSONCIOvE{iER=ow0L*JV!t2ILeqz> z1`#irBX&sWrgeclW&7p=rKlZ5+@DovO5c_p_mde2->W-u!^vIO<=S4 z!pLvED;nY9{Vh5M7)%BIyC^^^m%7L&T&X>2G%~*NrSW)ya$<8}j3!_`PWxL2kJD9QP*Jm@F+E zTa}Y8aD)8*FXDmVASYqZaJ-(U%2l&3oYu9$fw$LWys4hR5`OCY-dN7(O zIB=a^D<}29?}TFww&}@%zgzeU@JWgP6vZC?$5t`Cx8HlL{{C>Rmj%0|RB{k1znI#q zR072pxxGd43E!!b%k%qy22nj@!LZ22~Y?1@&`DDu&q8{GWQc2EZ z5S$2smE7NtfWHhx;css$(+$ak5ol|^SG>6RyGa_XfOA^+!~FEVd%%7}#Tx(xdOU8AFqKUR)p+F*5hO8~6$->bpErFc-Ttt6YFn`M_ zG70-3^`L>(uq75g*?i0NW*Lw_XuV|eA1j*6K$g3^;h;`StBJ3R zKVOvzyn2Ofm~l9Kx2M$TxNmEU1}Z)}m=>9MpqXU0jFgR558yTUgOvSdN)fNr6c38) zQ>f45c<}cx%7O1Og74)ksy9^DuU`H1`O_i)<~z0)cAU1gYxyIKSX4e=U-cG?4j-Xh zFNfmGOpIho>D#}FTZxFH{RZDt4oX+6BK6BH{zDu9pTX~ z$yS5y(b^;r^g~yg><{$Q%;1N_zibG3pj8|(7+(X2!jv6yWh4dI9_R@PeKqt#!m2Js zNr8{=YN{C!NL>lX*`k_T$N40MaiMQ`*bvkpIZVtkI1O+hbKY5IldbuF7XA0LXD&#u zzaGF_8#E$p&~1f<$;$CUb%QK%3}ujle5JvzyamfXv7iqMA17!yiZE3vPgN;Tv7Y~u zuR*A4N&1Qzv&tPM0apA4xBiAFH#qj`4Ds3-va2U`c~IiJGd<$I zbD(Wd9%I9Wrl*IJ@ckS!c`1@&JI^f}22;Df4PPANoejmYd&7p07ceVwB>`|4mH+3vBC|{o`1gz#zijEP} z{LDKLhb~oeIR9s`^d)qQFLXz$^5;z5$FJHu&?6FIs)sZ5{ax?>To7S4kd0JgX?!T~ z(TT>rD0LW&FB6AQ<2_*8v$7-B@Cr4l|6`@6yMdgAaMGA`7nzU?W1|Ou zjXfrB_3XFCXo5GC6LsQ%S*(PBIT;)#!WyqwxoD8}LEgWZ@{K;OjI%(nd(Go>2E6%e zgPZZKBr>SN?bJJ-xBv(AtIqVySPt{sw#Y`0PZMJEFUqen>=kSFaNpXgub%FV3<8lg z%dHkit-SaB_(pDT9An^W5vg2G1DDj0`$p_ z2C)9*>f>>=Xhh{q4lezbAFCsUpFqT{H159giKQhWy@}afU>sG`r5uiWyWX1aIIgvBupR@4QFrjq>W(yMyOe>r0i*` zh-}}*6cq%LNg3Vg!jT_%hiR!H+wCEbiKM8_?*{MYtaW?Yn-yMrYPJJlq;Uz`0}1Rj z!(oouKHWdrgq(N3y=UCl~JhDiTl9Ck-35jkQHWKaOG2p|8smjbP z;Bg6VcU8MwA4$_sL8QBUPeEvpDGbWjdXAF@U4ol+iI}dck`XUG%%~seb(j=V5KK&w z=g0RWEQknmhmF%#iHEa1tUG=&j8qnf4yFWX03q|Lyv3IlEo;pCUt7L)fd#SAkGOp3 zn7((uZ3@Ab6uvj3`sa^Vb(TZv-0lNiZvDg5q9v6rSVIBRt#EJNFzZ2ghH&-Mirkr> z_z4@z=1)lZfd`x_U*fzxms+=KNjREZpp@1IS56C-Lz1FM#1YB7q4i=%V5K;Y_B(mj zRE4wUiu1j@0@+r7OjX^PR+wA;6RQX6BdFeY*4CijgR_@|XBLHnLRmBX<;g1VUQ9CK36~& z`AabQV~_+zYpdf?Tc4Eh=V_ZF<{Yp1Muw0(8k(yx@`zsV3w2*ll^&6h=SLcga6$)H zS0HB#O764zZ1z>+GgTt^LM-TUWAc2dc42y9J@Fk=jDjGRDkjf_GOg&u*AoQCazg8` z#R^9X;5O9U%TUR+6OPRG=GLCR%My6wTk{YiBjK|qqgqy5=2uXkH{E* z3?yG~!3MUse`1{xg@?CJDGkGTa+o}0auRuRBP*XM^qji}NJikY&U0W;Jr9ze?ZFu} zs;D|4r@#<$*pk2tl8+aqX5MOph8qD=dGXi5Okz=A)k0KmXhB4(78z;|5yee~uBKSQ zZ*c8Kd)*yTmtDJ%%;Bkg7GsZ9AoF=>EdRy&>zPD${IkJW_O*T)0SvwOQ>83@ifX`l zC1U2ff^`0bYz_gQBXvr*7;E~>>&!n9_2ZB5A^rV{X39)Ang7em99wsTm7?7+C``*zoJr)KZUY60PnP7zH#gpG>8)*#Zf$K zt&t25Hpa-(!5*f_8vKfN{_ASaVdT|+=O#$e+t>`K_}w0$C-e2FvZ@Trv98w5&gEKV zPk-)aIZiU*0up6d14t>AAsy6DL65}Ypfs=I23~~F8=lop^qS0x2wQ_-$A_N~ zVy4~Ig>*TP==N&7X#-R%5(=f?G)2ov-ta?wlLNS=?-+j9G@Z>vD)Q_C#-kP<<+Ni) zdnL@PU+jd@~sDqxzj2aI}a#@;$8=WX(ckZfOKVglMpkF&s{S<~B zbW&oa_9GKZiXzmvFAd`~0}n+#)&mO$PgmVG8kGO#et^F`V-OU7b5tqQQTcZJPGH|Q zWc2qETr&<%i;+e7348>!PAMy=c|1nL?L(~ zQIjN`kd6D7BnUQUV^9@?4Md6uEwD>ZKduZA)HVG_c+>I0AR{6pgY9>=x1+bC*0s=XrWy|Z788hjfri+U36okO>3aFKl%p_wu8s!@DXtj*N1^a< zO&~*0iBl=E(IIE~3m@WvenaRk5c|#d{zjg}DH+rYh-)c5d0Zy zhjdMOydU=VLVj@)7>W-i2?4ct)tVF(hQi30>az0Fc zHtwiZqP4^RXHVWh#N(W3Tu;+$ieuVdcLZT%R3lI~3$wTZ%lrOj=b7I3p1LY2sB8ku z6aVe&`4?fMtk{<*2qF<~>?Eg(-9i($vM~z!$Ik*WYP+m)jFyeHKLQ7^F_MycC<|CM zjZol1a{UO~$psIWfCEs=9hqiRLTrtM6|(3ERr~NrR(1^h28^m7ZjKm5Sqt}78RCXB z5CT^3klMs{N|CF+ZI9Exjw0bZ4NGe-7&tl^Bu8g#rI_ZRbTAgg$aFOgQ}84%x64or zGTXjfzoan`CI@W|5!5Amp@Tr{J>B}@?_1+n)_6%Q?9)fXk>-LT&t^Rj=qUP5`$)3V ze{Q7wrm4plwMds?@@JDY_2)F6J4ymuv+ z=7aBQ7bHSnhI-=v`X>d110?q59Rv~7eLXXFzbFsw)zt*YrdDW%Xdk9yy0=xL%}V@` z>YH*cz*Ubb`ddgGR{cGRgo`5tlm@rrrt1OM8#lq{{2b!LlGpT z>|E33bI4Wtw>o-`GJY?-AJ5MgaiN}cs##tW-}#=P8Bic(HZr8cb2(X~0w~md0k-@0 zRLsvPZ|;)VsH}C6gG(?7UY3WO{k`Y>-M+K-3AABQUx?DkBR_k67(c>*2&=6@PDAdj zEoy69r>i!XA^%pXP)#NY(c;61#l}QZ#Z0ql3~CdRvq*b&fL3GKGY}^LjA;9u$(Dn5 zm0*c{5UgB%QzXpZ%hf@yXvC(p)Mp!ZGpPqM^w`fVwrG^B|2xP;{bHktoZ7gOWQ2BA z)e=1Fs(;c+4c30nZVaVS?=1_1{2YfGAbk^`sv-? z0V`nUI1lCtE_L>e;hz4Q+t;Thx2R2nR9|2fX~5Iu5JBwv`HZ*yu8Cd==&Dw>3ey%} zikke{39+;IW>46WOmo>G^*C`|{NzQB?)M}xB^iC(%MU!596Q*zK4aOonWR`LET6s2 zR{1U?m~h?M*V4n0Q`8E(ngHX{B^2LV`&Pn@N6EJ0vL9#>0Yoc1YvG^baOnFVPF}T$ zY+e`X-uEHyCjWF<^XZIpeoHX|U#>Gk<3b~Cbg`Y*p)YXSszWQY`D2y7-q15E31dDz zn7gQ2oU4f5!p;qGzaF$U!Ku&ll`tDt0X-o_eXPM^TQC?@?uvf6C>f8ktcY4=aAw!@ zwD5$W_rm|?aOgx%O79Cn-a^_>%oRU-E1Sv@p~i}dg!>om`i_2t8ik!-ayq<>m)2mq zl`z(L&+7emv^X7ujg8Z9<4v%;bX<2qfC7RnY^D^d!6i+(aF7BZHJf?ga<;LvZ_ifn05-C2 zgRC?cQlcFU5wj?Uq-gcopli)&ZSMoE%qw&jJ(sv+2!^h*iMd64uLAZy^Dt{QA@b_# zk5+l@lUwPvRyo3bX1+`iLwN5i-rxDFk%mo1N#lFS{h^eo4S5eg_qxEh4T}WQ=Q0R| zbf#1;q^ae_yeZ-Mg;<#;G!PpZPZoh;hBjAvw``6i(V@na-y&k7^@S^_SnyNBx1zSX z_3U@mCo39*8u0$1xx849yan{mqW43jw+$JdB#zo9d_aIWMON_~>rpVF3}0Gd=JhZG z0xLv;^CR=;(*0MPvF30dY5#RM=5e5dQ|iO4VSrEK-)&VgOI~bU{Gj03O?vlEa=Tz; z5E4frAeU8o0tr_0QT_@Xcs(nHoJqMxQa@XdyiGx3OF;$Vi3DP+M2Zbs+}x&o{IlM^DHF^G<`mJy%5%S8iad8P?9w1UqF&d!D5JP{X17GD)`xXN@m|d zs(#cAr;$ni4ab4>Y#4pe^ONswk-hts=~-{9&wBJbPwXL+X(FW&mZJzkVwPn^<7+HGTaJxo5)m)FKWOmhP4!q{Hv7Ul3 zI4V&!puQlt=c6lrRUm}4#28*t?=|+J*-Qc>!&R0rZ4`mY)YISj?~TUCzN<|1JZ%Vj zq5garVqwoU3ISu$yPkz_POvm7P}uNe%JCQOPcM6-*4@x38Z(8xHQu*$c_QXsUJ9J?2r=D=P!5w+I>&iS#$yt!xps#Y zaM`12F`4Use$Je@l{^9`@xSZAQ(s8dC@bW^-VmE?e=3mrKA45P1uafz?*ZYehgJRs zI>I+CXBFWyU+ljD4}nQ3A#!6*ecd$PC5)r}9Mx%`gzY1Cg@`Wnf z`@dvQrka%;`bZ!Q4kYw4f)GEs-F-UXZ0xjBgssxfDy|p`0Y%6W9ZOB}IAEqU$qFPZ zf4#c!5}9FVVqnR%|Hi{iRTj;>>(3@YCP}U7=y-s zWG)ko<7)ieF^Je)INyqCbKWw4KV4dW9EU(}@`wYPUK9p}EOWDi|7QW{nStM-c3u8a&9Y*^Mk*$&~$O ze&Mn}+klleO~52*fsCiilNpnlpJogJoDBte0~)n-#`fMGdT8{3<}tb+iwf`@|AhDm z{>MX^)nbF6;cAH2B95jj^xEIQtEf%Z!gxK`qU$_2ni#3?Pmp#9Bz5Z3t2vQ5_Do#1 zb1Z`5$4$Z$WaQ94bu7OM39(Rn>$L}KPnrMx=ZShUYRBW27u7=hwjtnFuDQ&JMj&`M z{s^teqP7NlL>O#A2||b$_DJ6+x;NhWBEYMjn?;z5E*l=*$BvJw znXr*w>VSMnlvl2y(&xVNb zDZvX(Oh6*JpA1{Rm>K=|Do9RC6TG0e|6jj}tt$&x#?9x>%@{>|@!oEHu46%rg@#g% zBCth+86N15mCs>GUxxZnzOW#ke|REB29}?GKJ;Q;CnGjPxCwy!e+P|1@}s*RdiToO z!o(5NeiCWqj60FC`AVY6x_dUvjj)|$bg_s>!~}|T7kJUeUsZy)Smdlu=3GKFUvAky z7vHNNN*L?A-a6OG_0f&5V*_p+!BiH2zN5b0ARuap2fNN4erbKt5VKI+?+vo`kg?#(McwC%s7FI0woIZGEw}s; ztlx!iX@6(g%$n*^TAZj%?fZJ;j+*1ATV|&jzLWswXw*hx)Z4#+D_1I`E2X2 zN%{fnAc84Q2P=h1{=FW*;s-)GR;4%!A$&#|&akg4y+0Fz>xVgnUF;PTS6x+w4yb>k zS#r4-b>X~{;3(rDdwXz3ukiM*5YIqX{{eC=*;4J5cb5-|RS2PYw#GWX#fZXy+B;Bh z1fkdb@vVq*kzppg$Aq|1j-Ww(JxZiyuukw*Va|YJ+Arp*m;6W$h?A3(sEzmWVa-=J zBhnWk@OPN_Rv~@A3oYpcX~tf#W@jxH;4)6d8p;2Glc>s|%6?*r-ObhC=7V2qUYt6) zB7qFPh6$oGw(HI&7K6dz6^Y0FLdrfRb^M{>)x~e#4FB)Kqcrj=31Mvu*NlYK1-!<7 zID>4n4=Rtt2;2^thn|_HfA+jV0ED^ zvc0O4dWQ={u7vXyA6j%1p%56p$W=Hlr;u$Sb)^k!cby-ZW(U{iLu@$} zh%Jo-Ebo3}EO=fK|1lUh`rS#rzr#QDqa{wL&5@ED_STR9fEar|i|*oOaqYV>v$*Gg ziZ_jvMZ{5Vkb&VxvZpag>zDIBo9hJz5r~@u+KB@|e~b^1*@%cwHDVo{~V( z=O!XvL%y);{gBI0jPP_#pc&pmT-b?N*N23Io63s=CtTRcp2fV@*nd)BFua|i_4+Ob z24XOt`!Wc=WQv>D9nYbkF5lCNY2$lI{bkP9>J|MOgVt5dC5AfWgdBa81?m*Ntg~8c z`ull4fV9lXdgYwgjGBd&#zXd3*)7jVpx;Ur1f0CN&<|~DMHy7AHmY@2!{pE<0&6LA z@7E}OTnLwAFk($BfbhN1uzinA)nLTlCvQIyL2c0fzO@Sj!OXuDcxa8OHb!N-zH4>)dlKTJdm@oizdvd%hW6RRQKDBaaExQ*iND9FS(Bpn7w$nj$b=NkZPG>byXg89 z9nQ&p7s{S~8BU)4H-4wuP~d-9$I?GJwO4^AwI{9V-~oND*M!^iUyq{b0pZaTRPUW0 zG9T*1v4~_2&U;Chh)k+S>NK!hiErPu8(+fS9Iq(7QITKuTb1n{MgG2_2oc?Q*%$w1_fNJKZcyNT|ZsU@D!i1Vc%Lm0K%?;h0I}<#~qH zz!Hap_T$C*=c9nnP-Nm4%jZ{cqhLX^S~Cbe7p6r_Fc@NJJyVu&joguo0=>hGayS3N zeE(+ecvQF1#a1z=YlQ04uHy-6)C_sc8)%`TtlKsokBVB+ayrEPsRnQ{U{UbNL}GKCtu5l ze=hk~K81bP@An3a<)Hv(xJV4eI~;EG*J#2S(dqel_r?0zKc7b!pU02bNOO=qO3{hO zUlGI;X2B$X4B4CY&2<9}aZZvAiuoh(|9EdV_Nc!RuGhyFsG941L?8jdmG{_JPc?bV zEbNbxNZO$HzBm)MIEBJA+D<S$a?*Zm$CZAez*009JnPJ{>&=})9M zqb=I>q_4i}HodI`GtZ0qhLqCHH1RvrLgZ}w%iV|+gTC7hU-LK;8&+b!Ks zYq)s*H*UixAI_}JTK~;JL8P~Io z51_syOwJ$H=F=6TSQq{LKSCYCl1JO67c#V*divJyOfL{eu>*}!hI;*NDEa)Es9xGkRfq?+LtkIKbU}3NzZwAKlZ^xysL?)vFz48hw>Ao< z+((OS<)89`*=RXsn}1Cj*Um-_i??hMtrky?xDd+(+^fpva{HX(lRVwj1Kr)k=DzDM z?i7tSsca-4Wo^>L8#+t*#ZPZ0HU6{Rm?Q0?cl5*FCc9}b+d@hA5dwW)Z#MV? zyzVAXE>6XC>$OU4DbfasLcuGnoMe+7T~Zyt$%!7SM=^=r2n2lT>krtjFV}x|lE`GY zT$_|uKzw7te_jyvOmV=Tn1fKhAElDrhbX|e0Fug?5|D^nj?gVRNOb?y&8^VeBUx-7 zJ*h8^3P%Fr3z%?lxV)UN?z=~ydl}Wbu)JZD5FDfx7+tD+#}V$!Dmx(oZk9LyS>!C4 zH8wT-Cwz3Sra#h^&U5*2-e%c*zs}(|>u_wSb#*XOjqp=3w)iJ(?ve-pkoIy+Lgnfd z%b(j$_EHy%s6_cp{AoZkpI{ueusrBM-#po_{dIg-(wh>!Guauz1;1rySBWg#o8UnLm+dVU2%-{CDkP($^LKOzS@xk!`>FIyChi!JZbs_tl*p ztT}s}X=$;eZl-bXoil@TDKU4L`w=D}8h*dkCD$g)y4l5=y3EAM1NzBBv|gACfWHp2u zBksBff-A%aQt$FOdqW=gBCPpVQkq*HH9MXAsp)SokrZt=dIUv5d)2Ky^8J2nvh2AE zB&)G|UQdzG%f2Ou2{)z+8hmK3j*WBMmCnS-_@?>V)7!R~5J+bKN2plAr!|AgLKY+P z&|{*glIL$jQ<&G6GK-%MTU|Sp%$U@vQ}gpg+Vd>xRY5c)1}93nTJe$B`9oQvv?Cjl z#PaH#_N6+Cu-yn!%o?+Pkza-JJ$(PTd-`P%a7^@OQfKu0iYHkaSQ;@105zDcp%FAs-)?I%nxu|P1tqoBe$qjR_%fCr)x;EmM37uj zlm?{-!qP;J*;JrGXRH3aijW^RhRW51AJE(K%!y9fx=`3!|0vFs*EL@j>x+w~kKkUj zdY7IRspCK@*^@Rzs0R6sOVA&F^k>rbGsx1$8fBFEPY6^{rT6Fe(YiOAJWIDBQbG$e zNn|*QHmeg&p1b21yGI94J4+SbMZfw{zG*v0U64u)8lK<10wzws!TpHc+mYBu_hasB zKlu0chPQk88QUPD#LWXNU#<}UA`0Zf;OM_eLQ`VVTAJ9QNiPiF-^xexkN^CpGG;Ez zWVqyo@#iIf@P~PqQ<=CfC6GP}BYs!*F-5)5>yG8%re{Vl7CTL=*pnaq7~?Cx{pQbo zLlz0%2L?0w6=SfoE><-Mb0^WW)n(>lrV>}CJf8BD5eqxBWF*m7&R=)?c4!>R7bFkE zhv8ig!Nk^?xE?=ac4jVTLmqCJ&}Zpj=#Pyv07Oz8n8Sk~;w9Jk=pf4vX~|4>4OIi&%E+wa z{l5S^p!8I~jQa*&@I|jmK>!$K4+?4$0x;l$K)^?HPQWZ)Hz*NRJiO3^CMG

6Xl2(;a%!h=0s;xIm~ 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 z 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