From 0f45a25b25e83a6ff3f4aaae5e9125eefa246045 Mon Sep 17 00:00:00 2001 From: Giovanni-Josserand Date: Tue, 27 Jan 2026 14:35:49 +0100 Subject: [PATCH 01/21] delete docker folder --- composer.lock | 2856 +++++++++++++++++++++++++++------- docker/backup/Dockerfile | 14 - docker/backup/backup_db.sh | 15 - docker/backup/entrypoint2.sh | 2 - docker/backups/07.sql | 359 ----- docker/backups/09.sql | 356 ----- docker/docker-compose.yml | 84 - docker/entrypoint.sh | 20 - docker/nginx/default.conf | 20 - docker/php/Dockerfile | 15 - 10 files changed, 2252 insertions(+), 1489 deletions(-) delete mode 100644 docker/backup/Dockerfile delete mode 100755 docker/backup/backup_db.sh delete mode 100755 docker/backup/entrypoint2.sh delete mode 100644 docker/backups/07.sql delete mode 100644 docker/backups/09.sql delete mode 100644 docker/docker-compose.yml delete mode 100644 docker/entrypoint.sh delete mode 100644 docker/nginx/default.conf delete mode 100644 docker/php/Dockerfile diff --git a/composer.lock b/composer.lock index b4ea3cb..61457c0 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9b70f3eee6c6f4f563bb287c45fdf7cf", + "content-hash": "5f0cf3f16e96836e2a0c890578c99f3e", "packages": [ { "name": "brick/math", - "version": "0.14.0", + "version": "0.14.1", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2" + "reference": "f05858549e5f9d7bb45875a75583240a38a281d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", - "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", + "url": "https://api.github.com/repos/brick/math/zipball/f05858549e5f9d7bb45875a75583240a38a281d0", + "reference": "f05858549e5f9d7bb45875a75583240a38a281d0", "shasum": "" }, "require": { @@ -56,7 +56,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.14.0" + "source": "https://github.com/brick/math/tree/0.14.1" }, "funding": [ { @@ -64,7 +64,7 @@ "type": "github" } ], - "time": "2025-08-29T12:40:03+00:00" + "time": "2025-11-24T14:40:29+00:00" }, { "name": "carbonphp/carbon-doctrine-types", @@ -135,6 +135,202 @@ ], "time": "2024-02-09T16:56:22+00:00" }, + { + "name": "clue/redis-protocol", + "version": "v0.3.2", + "source": { + "type": "git", + "url": "https://github.com/clue/redis-protocol.git", + "reference": "6f565332f5531b7722d1e9c445314b91862f6d6c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/redis-protocol/zipball/6f565332f5531b7722d1e9c445314b91862f6d6c", + "reference": "6f565332f5531b7722d1e9c445314b91862f6d6c", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "Clue\\Redis\\Protocol\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@lueck.tv" + } + ], + "description": "A streaming Redis protocol (RESP) parser and serializer written in pure PHP.", + "homepage": "https://github.com/clue/redis-protocol", + "keywords": [ + "parser", + "protocol", + "redis", + "resp", + "serializer", + "streaming" + ], + "support": { + "issues": "https://github.com/clue/redis-protocol/issues", + "source": "https://github.com/clue/redis-protocol/tree/v0.3.2" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2024-08-07T11:06:28+00:00" + }, + { + "name": "clue/redis-react", + "version": "v2.8.0", + "source": { + "type": "git", + "url": "https://github.com/clue/reactphp-redis.git", + "reference": "84569198dfd5564977d2ae6a32de4beb5a24bdca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/reactphp-redis/zipball/84569198dfd5564977d2ae6a32de4beb5a24bdca", + "reference": "84569198dfd5564977d2ae6a32de4beb5a24bdca", + "shasum": "" + }, + "require": { + "clue/redis-protocol": "^0.3.2", + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.0 || ^1.1", + "react/promise-timer": "^1.11", + "react/socket": "^1.16" + }, + "require-dev": { + "clue/block-react": "^1.5", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "Clue\\React\\Redis\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "Async Redis client implementation, built on top of ReactPHP.", + "homepage": "https://github.com/clue/reactphp-redis", + "keywords": [ + "async", + "client", + "database", + "reactphp", + "redis" + ], + "support": { + "issues": "https://github.com/clue/reactphp-redis/issues", + "source": "https://github.com/clue/reactphp-redis/tree/v2.8.0" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2025-01-03T16:18:33+00:00" + }, + { + "name": "clue/stream-filter", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/clue/stream-filter.git", + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/stream-filter/zipball/049509fef80032cb3f051595029ab75b49a3c2f7", + "reference": "049509fef80032cb3f051595029ab75b49a3c2f7", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "Clue\\StreamFilter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "A simple and modern approach to stream filtering in PHP", + "homepage": "https://github.com/clue/stream-filter", + "keywords": [ + "bucket brigade", + "callback", + "filter", + "php_user_filter", + "stream", + "stream_filter_append", + "stream_filter_register" + ], + "support": { + "issues": "https://github.com/clue/stream-filter/issues", + "source": "https://github.com/clue/stream-filter/tree/v1.7.0" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2023-12-20T15:40:13+00:00" + }, { "name": "dflydev/dot-access-data", "version": "v3.0.3", @@ -379,29 +575,28 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v3.4.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "8c784d071debd117328803d86b2097615b457500" + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", - "reference": "8c784d071debd117328803d86b2097615b457500", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/d61a8a9604ec1f8c3d150d09db6ce98b32675013", + "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013", "shasum": "" }, "require": { - "php": "^7.2|^8.0", - "webmozart/assert": "^1.0" + "php": "^8.2|^8.3|^8.4|^8.5" }, "replace": { "mtdowling/cron-expression": "^1.0" }, "require-dev": { - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0" + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.32|^2.1.31", + "phpunit/phpunit": "^8.5.48|^9.0" }, "type": "library", "extra": { @@ -432,7 +627,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.6.0" }, "funding": [ { @@ -440,7 +635,7 @@ "type": "github" } ], - "time": "2024-10-09T13:47:03+00:00" + "time": "2025-10-31T18:51:33+00:00" }, { "name": "egulias/email-validator", @@ -510,32 +705,79 @@ "time": "2025-03-06T22:45:56+00:00" }, { - "name": "fruitcake/php-cors", - "version": "v1.3.0", + "name": "evenement/evenement", + "version": "v3.0.2", "source": { "type": "git", - "url": "https://github.com/fruitcake/php-cors.git", - "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", - "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", "shasum": "" }, "require": { - "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6|^7" + "php": ">=7.0" }, "require-dev": { - "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Evenement\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" + }, + "time": "2023-08-08T05:53:35+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "shasum": "" + }, + "require": { + "php": "^8.1", + "symfony/http-foundation": "^5.4|^6.4|^7.3|^8" + }, + "require-dev": { + "phpstan/phpstan": "^2", "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.5" + "squizlabs/php_codesniffer": "^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -566,7 +808,7 @@ ], "support": { "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" + "source": "https://github.com/fruitcake/php-cors/tree/v1.4.0" }, "funding": [ { @@ -578,20 +820,20 @@ "type": "github" } ], - "time": "2023-10-12T05:21:21+00:00" + "time": "2025-12-03T09:33:47+00:00" }, { "name": "giggsey/libphonenumber-for-php-lite", - "version": "9.0.20", + "version": "9.0.21", "source": { "type": "git", "url": "https://github.com/giggsey/libphonenumber-for-php-lite.git", - "reference": "3b0b569a0fe8ec5aecbd972f64ddbc2ce30ebd0a" + "reference": "ab593d0ced185c149459d283a770d842662dd54e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/3b0b569a0fe8ec5aecbd972f64ddbc2ce30ebd0a", - "reference": "3b0b569a0fe8ec5aecbd972f64ddbc2ce30ebd0a", + "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/ab593d0ced185c149459d283a770d842662dd54e", + "reference": "ab593d0ced185c149459d283a770d842662dd54e", "shasum": "" }, "require": { @@ -656,28 +898,28 @@ "issues": "https://github.com/giggsey/libphonenumber-for-php-lite/issues", "source": "https://github.com/giggsey/libphonenumber-for-php-lite" }, - "time": "2025-12-05T12:07:18+00:00" + "time": "2025-12-18T14:36:21+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.1.3", + "version": "v1.1.4", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945" + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945", - "reference": "3ba905c11371512af9d9bdd27d99b782216b6945", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3" + "phpoption/phpoption": "^1.9.5" }, "require-dev": { - "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28" + "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" }, "type": "library", "autoload": { @@ -706,7 +948,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" }, "funding": [ { @@ -718,7 +960,7 @@ "type": "tidelift" } ], - "time": "2024-07-20T21:45:45+00:00" + "time": "2025-12-27T19:43:20+00:00" }, { "name": "guzzlehttp/guzzle", @@ -1133,16 +1375,16 @@ }, { "name": "laravel/framework", - "version": "v12.34.0", + "version": "v12.47.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "f9ec5a5d88bc8c468f17b59f88e05c8ac3c8d687" + "reference": "ab8114c2e78f32e64eb238fc4b495bea3f8b80ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/f9ec5a5d88bc8c468f17b59f88e05c8ac3c8d687", - "reference": "f9ec5a5d88bc8c468f17b59f88e05c8ac3c8d687", + "url": "https://api.github.com/repos/laravel/framework/zipball/ab8114c2e78f32e64eb238fc4b495bea3f8b80ec", + "reference": "ab8114c2e78f32e64eb238fc4b495bea3f8b80ec", "shasum": "" }, "require": { @@ -1230,6 +1472,7 @@ "illuminate/process": "self.version", "illuminate/queue": "self.version", "illuminate/redis": "self.version", + "illuminate/reflection": "self.version", "illuminate/routing": "self.version", "illuminate/session": "self.version", "illuminate/support": "self.version", @@ -1254,13 +1497,13 @@ "league/flysystem-sftp-v3": "^3.25.1", "mockery/mockery": "^1.6.10", "opis/json-schema": "^2.4.1", - "orchestra/testbench-core": "^10.7.0", + "orchestra/testbench-core": "^10.8.1", "pda/pheanstalk": "^5.0.6|^7.0.0", "php-http/discovery": "^1.15", "phpstan/phpstan": "^2.0", "phpunit/phpunit": "^10.5.35|^11.5.3|^12.0.1", "predis/predis": "^2.3|^3.0", - "resend/resend-php": "^0.10.0", + "resend/resend-php": "^0.10.0|^1.0", "symfony/cache": "^7.2.0", "symfony/http-client": "^7.2.0", "symfony/psr-http-message-bridge": "^7.2.0", @@ -1294,7 +1537,7 @@ "predis/predis": "Required to use the predis connector (^2.3|^3.0).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", - "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).", + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0|^1.0).", "symfony/cache": "Required to PSR-6 cache bridge (^7.2).", "symfony/filesystem": "Required to enable support for relative symbolic links (^7.2).", "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.2).", @@ -1316,6 +1559,7 @@ "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Log/functions.php", + "src/Illuminate/Reflection/helpers.php", "src/Illuminate/Support/functions.php", "src/Illuminate/Support/helpers.php" ], @@ -1324,7 +1568,8 @@ "Illuminate\\Support\\": [ "src/Illuminate/Macroable/", "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" + "src/Illuminate/Conditionable/", + "src/Illuminate/Reflection/" ] } }, @@ -1348,20 +1593,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-10-14T13:58:31+00:00" + "time": "2026-01-13T15:29:06+00:00" }, { "name": "laravel/prompts", - "version": "v0.3.7", + "version": "v0.3.10", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "a1891d362714bc40c8d23b0b1d7090f022ea27cc" + "reference": "360ba095ef9f51017473505191fbd4ab73e1cab3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/a1891d362714bc40c8d23b0b1d7090f022ea27cc", - "reference": "a1891d362714bc40c8d23b0b1d7090f022ea27cc", + "url": "https://api.github.com/repos/laravel/prompts/zipball/360ba095ef9f51017473505191fbd4ab73e1cab3", + "reference": "360ba095ef9f51017473505191fbd4ab73e1cab3", "shasum": "" }, "require": { @@ -1377,7 +1622,7 @@ "require-dev": { "illuminate/collections": "^10.0|^11.0|^12.0", "mockery/mockery": "^1.5", - "pestphp/pest": "^2.3|^3.4", + "pestphp/pest": "^2.3|^3.4|^4.0", "phpstan/phpstan": "^1.12.28", "phpstan/phpstan-mockery": "^1.1.3" }, @@ -1405,22 +1650,104 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.7" + "source": "https://github.com/laravel/prompts/tree/v0.3.10" }, - "time": "2025-09-19T13:47:56+00:00" + "time": "2026-01-13T20:29:29+00:00" }, { - "name": "laravel/sanctum", - "version": "v4.2.0", + "name": "laravel/reverb", + "version": "v1.7.0", "source": { "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "fd6df4f79f48a72992e8d29a9c0ee25422a0d677" + "url": "https://github.com/laravel/reverb.git", + "reference": "4300fbbc3535f5cbbdf600b00edca1e4c515bfcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/fd6df4f79f48a72992e8d29a9c0ee25422a0d677", - "reference": "fd6df4f79f48a72992e8d29a9c0ee25422a0d677", + "url": "https://api.github.com/repos/laravel/reverb/zipball/4300fbbc3535f5cbbdf600b00edca1e4c515bfcf", + "reference": "4300fbbc3535f5cbbdf600b00edca1e4c515bfcf", + "shasum": "" + }, + "require": { + "clue/redis-react": "^2.6", + "guzzlehttp/psr7": "^2.6", + "illuminate/console": "^10.47|^11.0|^12.0", + "illuminate/contracts": "^10.47|^11.0|^12.0", + "illuminate/http": "^10.47|^11.0|^12.0", + "illuminate/support": "^10.47|^11.0|^12.0", + "laravel/prompts": "^0.1.15|^0.2.0|^0.3.0", + "php": "^8.2", + "pusher/pusher-php-server": "^7.2", + "ratchet/rfc6455": "^0.4", + "react/promise-timer": "^1.10", + "react/socket": "^1.14", + "symfony/console": "^6.0|^7.0", + "symfony/http-foundation": "^6.3|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^8.36|^9.15|^10.8", + "pestphp/pest": "^2.0|^3.0|^4.0", + "phpstan/phpstan": "^1.10", + "ratchet/pawl": "^0.4.1", + "react/async": "^4.2", + "react/http": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Output": "Laravel\\Reverb\\Output" + }, + "providers": [ + "Laravel\\Reverb\\ApplicationManagerServiceProvider", + "Laravel\\Reverb\\ReverbServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Reverb\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Joe Dixon", + "email": "joe@laravel.com" + } + ], + "description": "Laravel Reverb provides a real-time WebSocket communication backend for Laravel applications.", + "keywords": [ + "WebSockets", + "laravel", + "real-time", + "websocket" + ], + "support": { + "issues": "https://github.com/laravel/reverb/issues", + "source": "https://github.com/laravel/reverb/tree/v1.7.0" + }, + "time": "2026-01-06T16:26:25+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v4.2.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "47d26f1d310879ff757b971f5a6fc631d18663fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/47d26f1d310879ff757b971f5a6fc631d18663fd", + "reference": "47d26f1d310879ff757b971f5a6fc631d18663fd", "shasum": "" }, "require": { @@ -1434,9 +1761,8 @@ }, "require-dev": { "mockery/mockery": "^1.6", - "orchestra/testbench": "^9.0|^10.0", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^11.3" + "orchestra/testbench": "^9.15|^10.8", + "phpstan/phpstan": "^1.10" }, "type": "library", "extra": { @@ -1471,20 +1797,20 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2025-07-09T19:45:24+00:00" + "time": "2026-01-11T18:20:25+00:00" }, { "name": "laravel/serializable-closure", - "version": "v2.0.6", + "version": "v2.0.8", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "038ce42edee619599a1debb7e81d7b3759492819" + "reference": "7581a4407012f5f53365e11bafc520fd7f36bc9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/038ce42edee619599a1debb7e81d7b3759492819", - "reference": "038ce42edee619599a1debb7e81d7b3759492819", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/7581a4407012f5f53365e11bafc520fd7f36bc9b", + "reference": "7581a4407012f5f53365e11bafc520fd7f36bc9b", "shasum": "" }, "require": { @@ -1493,7 +1819,7 @@ "require-dev": { "illuminate/support": "^10.0|^11.0|^12.0", "nesbot/carbon": "^2.67|^3.0", - "pestphp/pest": "^2.36|^3.0", + "pestphp/pest": "^2.36|^3.0|^4.0", "phpstan/phpstan": "^2.0", "symfony/var-dumper": "^6.2.0|^7.0.0" }, @@ -1532,20 +1858,20 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2025-10-09T13:42:30+00:00" + "time": "2026-01-08T16:22:46+00:00" }, { "name": "laravel/tinker", - "version": "v2.10.1", + "version": "v2.11.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3" + "reference": "3d34b97c9a1747a81a3fde90482c092bd8b66468" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/22177cc71807d38f2810c6204d8f7183d88a57d3", - "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3", + "url": "https://api.github.com/repos/laravel/tinker/zipball/3d34b97c9a1747a81a3fde90482c092bd8b66468", + "reference": "3d34b97c9a1747a81a3fde90482c092bd8b66468", "shasum": "" }, "require": { @@ -1554,7 +1880,7 @@ "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0", "php": "^7.2.5|^8.0", "psy/psysh": "^0.11.1|^0.12.0", - "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0|^8.0" }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", @@ -1596,22 +1922,22 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.10.1" + "source": "https://github.com/laravel/tinker/tree/v2.11.0" }, - "time": "2025-01-27T14:24:01+00:00" + "time": "2025-12-19T19:16:45+00:00" }, { "name": "league/commonmark", - "version": "2.7.1", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "10732241927d3971d28e7ea7b5712721fa2296ca" + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/10732241927d3971d28e7ea7b5712721fa2296ca", - "reference": "10732241927d3971d28e7ea7b5712721fa2296ca", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb", "shasum": "" }, "require": { @@ -1648,7 +1974,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.8-dev" + "dev-main": "2.9-dev" } }, "autoload": { @@ -1705,7 +2031,7 @@ "type": "tidelift" } ], - "time": "2025-07-20T12:47:49+00:00" + "time": "2025-11-26T21:48:24+00:00" }, { "name": "league/config", @@ -1791,16 +2117,16 @@ }, { "name": "league/flysystem", - "version": "3.30.0", + "version": "3.30.2", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "2203e3151755d874bb2943649dae1eb8533ac93e" + "reference": "5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/2203e3151755d874bb2943649dae1eb8533ac93e", - "reference": "2203e3151755d874bb2943649dae1eb8533ac93e", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277", + "reference": "5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277", "shasum": "" }, "require": { @@ -1868,22 +2194,22 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.30.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.30.2" }, - "time": "2025-06-25T13:29:59+00:00" + "time": "2025-11-10T17:13:11+00:00" }, { "name": "league/flysystem-local", - "version": "3.30.0", + "version": "3.30.2", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10" + "reference": "ab4f9d0d672f601b102936aa728801dd1a11968d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/6691915f77c7fb69adfb87dcd550052dc184ee10", - "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/ab4f9d0d672f601b102936aa728801dd1a11968d", + "reference": "ab4f9d0d672f601b102936aa728801dd1a11968d", "shasum": "" }, "require": { @@ -1917,9 +2243,9 @@ "local" ], "support": { - "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.2" }, - "time": "2025-05-21T10:34:19+00:00" + "time": "2025-11-10T11:23:37+00:00" }, { "name": "league/mime-type-detection", @@ -1979,33 +2305,38 @@ }, { "name": "league/uri", - "version": "7.5.1", + "version": "7.8.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "81fb5145d2644324614cc532b28efd0215bda430" + "reference": "4436c6ec8d458e4244448b069cc572d088230b76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430", - "reference": "81fb5145d2644324614cc532b28efd0215bda430", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/4436c6ec8d458e4244448b069cc572d088230b76", + "reference": "4436c6ec8d458e4244448b069cc572d088230b76", "shasum": "" }, "require": { - "league/uri-interfaces": "^7.5", - "php": "^8.1" + "league/uri-interfaces": "^7.8", + "php": "^8.1", + "psr/http-factory": "^1" }, "conflict": { "league/uri-schemes": "^1.0" }, "suggest": { "ext-bcmath": "to improve IPV4 host parsing", + "ext-dom": "to convert the URI into an HTML anchor tag", "ext-fileinfo": "to create Data URI from file contennts", "ext-gmp": "to improve IPV4 host parsing", "ext-intl": "to handle IDN host with the best performance", - "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", - "league/uri-components": "Needed to easily manipulate URI objects components", + "ext-uri": "to use the PHP native URI class", + "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain", + "league/uri-components": "to provide additional tools to manipulate URI objects components", + "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP", "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", @@ -2033,6 +2364,7 @@ "description": "URI manipulation library", "homepage": "https://uri.thephpleague.com", "keywords": [ + "URN", "data-uri", "file-uri", "ftp", @@ -2045,9 +2377,11 @@ "psr-7", "query-string", "querystring", + "rfc2141", "rfc3986", "rfc3987", "rfc6570", + "rfc8141", "uri", "uri-template", "url", @@ -2057,7 +2391,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.5.1" + "source": "https://github.com/thephpleague/uri/tree/7.8.0" }, "funding": [ { @@ -2065,26 +2399,25 @@ "type": "github" } ], - "time": "2024-12-08T08:40:02+00:00" + "time": "2026-01-14T17:24:56+00:00" }, { "name": "league/uri-interfaces", - "version": "7.5.0", + "version": "7.8.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742" + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", - "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/c5c5cd056110fc8afaba29fa6b72a43ced42acd4", + "reference": "c5c5cd056110fc8afaba29fa6b72a43ced42acd4", "shasum": "" }, "require": { "ext-filter": "*", "php": "^8.1", - "psr/http-factory": "^1", "psr/http-message": "^1.1 || ^2.0" }, "suggest": { @@ -2092,6 +2425,7 @@ "ext-gmp": "to improve IPV4 host parsing", "ext-intl": "to handle IDN host with the best performance", "php-64bit": "to improve IPV4 host parsing", + "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification", "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" }, "type": "library", @@ -2116,7 +2450,7 @@ "homepage": "https://nyamsprod.com" } ], - "description": "Common interfaces and classes for URI representation and interaction", + "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI", "homepage": "https://uri.thephpleague.com", "keywords": [ "data-uri", @@ -2141,7 +2475,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0" + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.8.0" }, "funding": [ { @@ -2149,20 +2483,20 @@ "type": "github" } ], - "time": "2024-12-08T08:18:47+00:00" + "time": "2026-01-15T06:54:53+00:00" }, { "name": "monolog/monolog", - "version": "3.9.0", + "version": "3.10.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", - "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", "shasum": "" }, "require": { @@ -2180,7 +2514,7 @@ "graylog2/gelf-php": "^1.4.2 || ^2.0", "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", + "mongodb/mongodb": "^1.8 || ^2.0", "php-amqplib/php-amqplib": "~2.4 || ^3", "php-console/php-console": "^3.1.8", "phpstan/phpstan": "^2", @@ -2240,7 +2574,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.9.0" + "source": "https://github.com/Seldaek/monolog/tree/3.10.0" }, "funding": [ { @@ -2252,20 +2586,20 @@ "type": "tidelift" } ], - "time": "2025-03-24T10:02:05+00:00" + "time": "2026-01-02T08:56:05+00:00" }, { "name": "nesbot/carbon", - "version": "3.10.3", + "version": "3.11.0", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f" + "reference": "bdb375400dcd162624531666db4799b36b64e4a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f", - "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/bdb375400dcd162624531666db4799b36b64e4a1", + "reference": "bdb375400dcd162624531666db4799b36b64e4a1", "shasum": "" }, "require": { @@ -2273,9 +2607,9 @@ "ext-json": "*", "php": "^8.1", "psr/clock": "^1.0", - "symfony/clock": "^6.3.12 || ^7.0", + "symfony/clock": "^6.3.12 || ^7.0 || ^8.0", "symfony/polyfill-mbstring": "^1.0", - "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0" + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0 || ^8.0" }, "provide": { "psr/clock-implementation": "1.0" @@ -2357,29 +2691,29 @@ "type": "tidelift" } ], - "time": "2025-09-06T13:39:36+00:00" + "time": "2025-12-02T21:04:28+00:00" }, { "name": "nette/schema", - "version": "v1.3.2", + "version": "v1.3.3", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "da801d52f0354f70a638673c4a0f04e16529431d" + "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/da801d52f0354f70a638673c4a0f04e16529431d", - "reference": "da801d52f0354f70a638673c4a0f04e16529431d", + "url": "https://api.github.com/repos/nette/schema/zipball/2befc2f42d7c715fd9d95efc31b1081e5d765004", + "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004", "shasum": "" }, "require": { "nette/utils": "^4.0", - "php": "8.1 - 8.4" + "php": "8.1 - 8.5" }, "require-dev": { "nette/tester": "^2.5.2", - "phpstan/phpstan-nette": "^1.0", + "phpstan/phpstan-nette": "^2.0@stable", "tracy/tracy": "^2.8" }, "type": "library", @@ -2389,6 +2723,9 @@ } }, "autoload": { + "psr-4": { + "Nette\\": "src" + }, "classmap": [ "src/" ] @@ -2417,26 +2754,26 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.3.2" + "source": "https://github.com/nette/schema/tree/v1.3.3" }, - "time": "2024-10-06T23:10:23+00:00" + "time": "2025-10-30T22:57:59+00:00" }, { "name": "nette/utils", - "version": "v4.0.8", + "version": "v4.1.1", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede" + "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede", - "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede", + "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72", + "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72", "shasum": "" }, "require": { - "php": "8.0 - 8.5" + "php": "8.2 - 8.5" }, "conflict": { "nette/finder": "<3", @@ -2459,7 +2796,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2506,22 +2843,22 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.8" + "source": "https://github.com/nette/utils/tree/v4.1.1" }, - "time": "2025-08-06T21:43:34+00:00" + "time": "2025-12-22T12:14:32+00:00" }, { "name": "nikic/php-parser", - "version": "v5.6.1", + "version": "v5.7.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2" + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", - "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", "shasum": "" }, "require": { @@ -2564,37 +2901,37 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" }, - "time": "2025-08-13T20:13:15+00:00" + "time": "2025-12-06T11:56:16+00:00" }, { "name": "nunomaduro/termwind", - "version": "v2.3.2", + "version": "v2.3.3", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "eb61920a53057a7debd718a5b89c2178032b52c0" + "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/eb61920a53057a7debd718a5b89c2178032b52c0", - "reference": "eb61920a53057a7debd718a5b89c2178032b52c0", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/6fb2a640ff502caace8e05fd7be3b503a7e1c017", + "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "^8.2", - "symfony/console": "^7.3.4" + "symfony/console": "^7.3.6" }, "require-dev": { "illuminate/console": "^11.46.1", "laravel/pint": "^1.25.1", "mockery/mockery": "^1.6.12", - "pestphp/pest": "^2.36.0 || ^3.8.4", + "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.1.3", "phpstan/phpstan": "^1.12.32", "phpstan/phpstan-strict-rules": "^1.6.2", - "symfony/var-dumper": "^7.3.4", + "symfony/var-dumper": "^7.3.5", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -2637,7 +2974,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.3.2" + "source": "https://github.com/nunomaduro/termwind/tree/v2.3.3" }, "funding": [ { @@ -2653,20 +2990,518 @@ "type": "github" } ], - "time": "2025-10-18T11:10:27+00:00" + "time": "2025-11-20T02:34:59+00:00" }, { - "name": "phpoption/phpoption", - "version": "1.9.4", + "name": "nyholm/psr7", + "version": "1.8.2", "source": { "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d" + "url": "https://github.com/Nyholm/psr7.git", + "reference": "a71f2b11690f4b24d099d6b16690a90ae14fc6f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", - "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", + "url": "https://api.github.com/repos/Nyholm/psr7/zipball/a71f2b11690f4b24d099d6b16690a90ae14fc6f3", + "reference": "a71f2b11690f4b24d099d6b16690a90ae14fc6f3", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0" + }, + "provide": { + "php-http/message-factory-implementation": "1.0", + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.9", + "php-http/message-factory": "^1.0", + "php-http/psr7-integration-tests": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", + "symfony/error-handler": "^4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.8-dev" + } + }, + "autoload": { + "psr-4": { + "Nyholm\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + }, + { + "name": "Martijn van der Ven", + "email": "martijn@vanderven.se" + } + ], + "description": "A fast PHP7 implementation of PSR-7", + "homepage": "https://tnyholm.se", + "keywords": [ + "psr-17", + "psr-7" + ], + "support": { + "issues": "https://github.com/Nyholm/psr7/issues", + "source": "https://github.com/Nyholm/psr7/tree/1.8.2" + }, + "funding": [ + { + "url": "https://github.com/Zegnat", + "type": "github" + }, + { + "url": "https://github.com/nyholm", + "type": "github" + } + ], + "time": "2024-09-09T07:06:30+00:00" + }, + { + "name": "paragonie/sodium_compat", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/sodium_compat.git", + "reference": "4714da6efdc782c06690bc72ce34fae7941c2d9f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/4714da6efdc782c06690bc72ce34fae7941c2d9f", + "reference": "4714da6efdc782c06690bc72ce34fae7941c2d9f", + "shasum": "" + }, + "require": { + "php": "^8.1", + "php-64bit": "*" + }, + "require-dev": { + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^7|^8|^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" + }, + "suggest": { + "ext-sodium": "Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "files": [ + "autoload.php" + ], + "psr-4": { + "ParagonIE\\Sodium\\": "namespaced/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com" + }, + { + "name": "Frank Denis", + "email": "jedisct1@pureftpd.org" + } + ], + "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists", + "keywords": [ + "Authentication", + "BLAKE2b", + "ChaCha20", + "ChaCha20-Poly1305", + "Chapoly", + "Curve25519", + "Ed25519", + "EdDSA", + "Edwards-curve Digital Signature Algorithm", + "Elliptic Curve Diffie-Hellman", + "Poly1305", + "Pure-PHP cryptography", + "RFC 7748", + "RFC 8032", + "Salpoly", + "Salsa20", + "X25519", + "XChaCha20-Poly1305", + "XSalsa20-Poly1305", + "Xchacha20", + "Xsalsa20", + "aead", + "cryptography", + "ecdh", + "elliptic curve", + "elliptic curve cryptography", + "encryption", + "libsodium", + "php", + "public-key cryptography", + "secret-key cryptography", + "side-channel resistant" + ], + "support": { + "issues": "https://github.com/paragonie/sodium_compat/issues", + "source": "https://github.com/paragonie/sodium_compat/tree/v2.5.0" + }, + "time": "2025-12-30T16:12:18+00:00" + }, + { + "name": "php-http/client-common", + "version": "2.7.3", + "source": { + "type": "git", + "url": "https://github.com/php-http/client-common.git", + "reference": "dcc6de29c90dd74faab55f71b79d89409c4bf0c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/client-common/zipball/dcc6de29c90dd74faab55f71b79d89409c4bf0c1", + "reference": "dcc6de29c90dd74faab55f71b79d89409c4bf0c1", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/httplug": "^2.0", + "php-http/message": "^1.6", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0 || ^2.0", + "symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0 || ^7.0 || ^8.0", + "symfony/polyfill-php80": "^1.17" + }, + "require-dev": { + "doctrine/instantiator": "^1.1", + "guzzlehttp/psr7": "^1.4", + "nyholm/psr7": "^1.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.33 || ^9.6.7" + }, + "suggest": { + "ext-json": "To detect JSON responses with the ContentTypePlugin", + "ext-libxml": "To detect XML responses with the ContentTypePlugin", + "php-http/cache-plugin": "PSR-6 Cache plugin", + "php-http/logger-plugin": "PSR-3 Logger plugin", + "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" + }, + "type": "library", + "autoload": { + "psr-4": { + "Http\\Client\\Common\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Common HTTP Client implementations and tools for HTTPlug", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "common", + "http", + "httplug" + ], + "support": { + "issues": "https://github.com/php-http/client-common/issues", + "source": "https://github.com/php-http/client-common/tree/2.7.3" + }, + "time": "2025-11-29T19:12:34+00:00" + }, + { + "name": "php-http/discovery", + "version": "1.20.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/discovery.git", + "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/discovery/zipball/82fe4c73ef3363caed49ff8dd1539ba06044910d", + "reference": "82fe4c73ef3363caed49ff8dd1539ba06044910d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "nyholm/psr7": "<1.0", + "zendframework/zend-diactoros": "*" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "*", + "psr/http-factory-implementation": "*", + "psr/http-message-implementation": "*" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "graham-campbell/phpspec-skip-example-extension": "^5.0", + "php-http/httplug": "^1.0 || ^2.0", + "php-http/message-factory": "^1.0", + "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3", + "sebastian/comparator": "^3.0.5 || ^4.0.8", + "symfony/phpunit-bridge": "^6.4.4 || ^7.0.1" + }, + "type": "composer-plugin", + "extra": { + "class": "Http\\Discovery\\Composer\\Plugin", + "plugin-optional": true + }, + "autoload": { + "psr-4": { + "Http\\Discovery\\": "src/" + }, + "exclude-from-classmap": [ + "src/Composer/Plugin.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations", + "homepage": "http://php-http.org", + "keywords": [ + "adapter", + "client", + "discovery", + "factory", + "http", + "message", + "psr17", + "psr7" + ], + "support": { + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.20.0" + }, + "time": "2024-10-02T11:20:13+00:00" + }, + { + "name": "php-http/httplug", + "version": "2.4.1", + "source": { + "type": "git", + "url": "https://github.com/php-http/httplug.git", + "reference": "5cad731844891a4c282f3f3e1b582c46839d22f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/httplug/zipball/5cad731844891a4c282f3f3e1b582c46839d22f4", + "reference": "5cad731844891a4c282f3f3e1b582c46839d22f4", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/promise": "^1.1", + "psr/http-client": "^1.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "require-dev": { + "friends-of-phpspec/phpspec-code-coverage": "^4.1 || ^5.0 || ^6.0", + "phpspec/phpspec": "^5.1 || ^6.0 || ^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eric GELOEN", + "email": "geloen.eric@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "HTTPlug, the HTTP client abstraction for PHP", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "http" + ], + "support": { + "issues": "https://github.com/php-http/httplug/issues", + "source": "https://github.com/php-http/httplug/tree/2.4.1" + }, + "time": "2024-09-23T11:39:58+00:00" + }, + { + "name": "php-http/message", + "version": "1.16.2", + "source": { + "type": "git", + "url": "https://github.com/php-http/message.git", + "reference": "06dd5e8562f84e641bf929bfe699ee0f5ce8080a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/message/zipball/06dd5e8562f84e641bf929bfe699ee0f5ce8080a", + "reference": "06dd5e8562f84e641bf929bfe699ee0f5ce8080a", + "shasum": "" + }, + "require": { + "clue/stream-filter": "^1.5", + "php": "^7.2 || ^8.0", + "psr/http-message": "^1.1 || ^2.0" + }, + "provide": { + "php-http/message-factory-implementation": "1.0" + }, + "require-dev": { + "ergebnis/composer-normalize": "^2.6", + "ext-zlib": "*", + "guzzlehttp/psr7": "^1.0 || ^2.0", + "laminas/laminas-diactoros": "^2.0 || ^3.0", + "php-http/message-factory": "^1.0.2", + "phpspec/phpspec": "^5.1 || ^6.3 || ^7.1", + "slim/slim": "^3.0" + }, + "suggest": { + "ext-zlib": "Used with compressor/decompressor streams", + "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", + "laminas/laminas-diactoros": "Used with Diactoros Factories", + "slim/slim": "Used with Slim Framework PSR-7 implementation" + }, + "type": "library", + "autoload": { + "files": [ + "src/filters.php" + ], + "psr-4": { + "Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "HTTP Message related tools", + "homepage": "http://php-http.org", + "keywords": [ + "http", + "message", + "psr-7" + ], + "support": { + "issues": "https://github.com/php-http/message/issues", + "source": "https://github.com/php-http/message/tree/1.16.2" + }, + "time": "2024-10-02T11:34:13+00:00" + }, + { + "name": "php-http/promise", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/php-http/promise.git", + "reference": "fc85b1fba37c169a69a07ef0d5a8075770cc1f83" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/promise/zipball/fc85b1fba37c169a69a07ef0d5a8075770cc1f83", + "reference": "fc85b1fba37c169a69a07ef0d5a8075770cc1f83", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3", + "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Http\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/php-http/promise/issues", + "source": "https://github.com/php-http/promise/tree/1.3.1" + }, + "time": "2024-03-15T13:55:21+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.5", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", "shasum": "" }, "require": { @@ -2716,7 +3551,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.4" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" }, "funding": [ { @@ -2728,7 +3563,7 @@ "type": "tidelift" } ], - "time": "2025-08-21T11:53:16+00:00" + "time": "2025-12-27T19:41:33+00:00" }, { "name": "propaganistas/laravel-phone", @@ -3216,16 +4051,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.12", + "version": "v0.12.18", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "cd23863404a40ccfaf733e3af4db2b459837f7e7" + "reference": "ddff0ac01beddc251786fe70367cd8bbdb258196" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/cd23863404a40ccfaf733e3af4db2b459837f7e7", - "reference": "cd23863404a40ccfaf733e3af4db2b459837f7e7", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/ddff0ac01beddc251786fe70367cd8bbdb258196", + "reference": "ddff0ac01beddc251786fe70367cd8bbdb258196", "shasum": "" }, "require": { @@ -3233,18 +4068,19 @@ "ext-tokenizer": "*", "nikic/php-parser": "^5.0 || ^4.0", "php": "^8.0 || ^7.4", - "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + "symfony/console": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" }, "conflict": { "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.2" + "bamarni/composer-bin-plugin": "^1.2", + "composer/class-map-generator": "^1.6" }, "suggest": { + "composer/class-map-generator": "Improved tab completion performance with better class discovery.", "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", - "ext-pdo-sqlite": "The doc command requires SQLite to work.", "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, "bin": [ @@ -3288,9 +4124,70 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.12" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.18" }, - "time": "2025-09-20T13:46:31+00:00" + "time": "2025-12-17T14:35:46+00:00" + }, + { + "name": "pusher/pusher-php-server", + "version": "7.2.7", + "source": { + "type": "git", + "url": "https://github.com/pusher/pusher-http-php.git", + "reference": "148b0b5100d000ed57195acdf548a2b1b38ee3f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/148b0b5100d000ed57195acdf548a2b1b38ee3f7", + "reference": "148b0b5100d000ed57195acdf548a2b1b38ee3f7", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "guzzlehttp/guzzle": "^7.2", + "paragonie/sodium_compat": "^1.6|^2.0", + "php": "^7.3|^8.0", + "psr/log": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "overtrue/phplint": "^2.3", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Pusher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Library for interacting with the Pusher REST API", + "keywords": [ + "events", + "messaging", + "php-pusher-server", + "publish", + "push", + "pusher", + "real time", + "real-time", + "realtime", + "rest", + "trigger" + ], + "support": { + "issues": "https://github.com/pusher/pusher-http-php/issues", + "source": "https://github.com/pusher/pusher-http-php/tree/7.2.7" + }, + "time": "2025-01-06T10:56:20+00:00" }, { "name": "ralouphie/getallheaders", @@ -3414,20 +4311,20 @@ }, { "name": "ramsey/uuid", - "version": "4.9.1", + "version": "4.9.2", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440" + "reference": "8429c78ca35a09f27565311b98101e2826affde0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/81f941f6f729b1e3ceea61d9d014f8b6c6800440", - "reference": "81f941f6f729b1e3ceea61d9d014f8b6c6800440", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0", + "reference": "8429c78ca35a09f27565311b98101e2826affde0", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -3486,28 +4383,616 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.9.1" + "source": "https://github.com/ramsey/uuid/tree/4.9.2" }, - "time": "2025-09-04T20:59:21+00:00" + "time": "2025-12-14T04:43:48+00:00" }, { - "name": "symfony/clock", - "version": "v7.3.0", + "name": "ratchet/rfc6455", + "version": "v0.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/clock.git", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" + "url": "https://github.com/ratchetphp/RFC6455.git", + "reference": "859d95f85dda0912c6d5b936d036d044e3af47ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "url": "https://api.github.com/repos/ratchetphp/RFC6455/zipball/859d95f85dda0912c6d5b936d036d044e3af47ef", + "reference": "859d95f85dda0912c6d5b936d036d044e3af47ef", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/clock": "^1.0", - "symfony/polyfill-php83": "^1.28" + "php": ">=7.4", + "psr/http-factory-implementation": "^1.0", + "symfony/polyfill-php80": "^1.15" + }, + "require-dev": { + "guzzlehttp/psr7": "^2.7", + "phpunit/phpunit": "^9.5", + "react/socket": "^1.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ratchet\\RFC6455\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "role": "Developer" + }, + { + "name": "Matt Bonneau", + "role": "Developer" + } + ], + "description": "RFC6455 WebSocket protocol handler", + "homepage": "http://socketo.me", + "keywords": [ + "WebSockets", + "rfc6455", + "websocket" + ], + "support": { + "chat": "https://gitter.im/reactphp/reactphp", + "issues": "https://github.com/ratchetphp/RFC6455/issues", + "source": "https://github.com/ratchetphp/RFC6455/tree/v0.4.0" + }, + "time": "2025-02-24T01:18:22+00:00" + }, + { + "name": "react/cache", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, Promise-based cache interface for ReactPHP", + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" + }, + { + "name": "react/dns", + "version": "v1.14.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/7562c05391f42701c1fccf189c8225fece1cd7c3", + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3 || ^2", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.14.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2025-11-18T19:34:28+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/ba276bda6083df7e0050fd9b33f66ad7a4ac747a", + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.6.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2025-11-17T20:46:25+00:00" + }, + { + "name": "react/promise", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a", + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpstan/phpstan": "1.12.28 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2025-08-19T18:57:03+00:00" + }, + { + "name": "react/promise-timer", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise-timer.git", + "reference": "4f70306ed66b8b44768941ca7f142092600fafc1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/4f70306ed66b8b44768941ca7f142092600fafc1", + "reference": "4f70306ed66b8b44768941ca7f142092600fafc1", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.7.0 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\Timer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.", + "homepage": "https://github.com/reactphp/promise-timer", + "keywords": [ + "async", + "event-loop", + "promise", + "reactphp", + "timeout", + "timer" + ], + "support": { + "issues": "https://github.com/reactphp/promise-timer/issues", + "source": "https://github.com/reactphp/promise-timer/tree/v1.11.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-04T14:27:45+00:00" + }, + { + "name": "react/socket", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/ef5b17b81f6f60504c539313f94f2d826c5faa08", + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.13", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.6 || ^1.2.1", + "react/stream": "^1.4" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3.3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], + "support": { + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.17.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2025-11-19T20:47:34+00:00" + }, + { + "name": "react/stream", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-11T12:45:25+00:00" + }, + { + "name": "symfony/clock", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "832119f9b8dbc6c8e6f65f30c5969eca1e88764f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/832119f9b8dbc6c8e6f65f30c5969eca1e88764f", + "reference": "832119f9b8dbc6c8e6f65f30c5969eca1e88764f", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "psr/clock": "^1.0" }, "provide": { "psr/clock-implementation": "1.0" @@ -3546,7 +5031,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.3.0" + "source": "https://github.com/symfony/clock/tree/v8.0.0" }, "funding": [ { @@ -3557,25 +5042,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-11-12T15:46:48+00:00" }, { "name": "symfony/console", - "version": "v7.3.4", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db" + "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", - "reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db", + "url": "https://api.github.com/repos/symfony/console/zipball/732a9ca6cd9dfd940c639062d5edbde2f6727fb6", + "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6", "shasum": "" }, "require": { @@ -3583,7 +5072,7 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2" + "symfony/string": "^7.2|^8.0" }, "conflict": { "symfony/dependency-injection": "<6.4", @@ -3597,16 +5086,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3640,7 +5129,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.4" + "source": "https://github.com/symfony/console/tree/v7.4.3" }, "funding": [ { @@ -3660,24 +5149,24 @@ "type": "tidelift" } ], - "time": "2025-09-22T15:31:00+00:00" + "time": "2025-12-23T14:50:43+00:00" }, { "name": "symfony/css-selector", - "version": "v7.3.0", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2" + "reference": "6225bd458c53ecdee056214cb4a2ffaf58bd592b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2", - "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/6225bd458c53ecdee056214cb4a2ffaf58bd592b", + "reference": "6225bd458c53ecdee056214cb4a2ffaf58bd592b", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "type": "library", "autoload": { @@ -3709,7 +5198,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.3.0" + "source": "https://github.com/symfony/css-selector/tree/v8.0.0" }, "funding": [ { @@ -3720,12 +5209,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-10-30T14:17:19+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3796,32 +5289,33 @@ }, { "name": "symfony/error-handler", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4" + "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", - "reference": "99f81bc944ab8e5dae4f21b4ca9972698bbad0e4", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/48be2b0653594eea32dcef130cca1c811dcf25c2", + "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/deprecation-contracts": "<2.5", "symfony/http-kernel": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", "symfony/webpack-encore-bundle": "^1.0|^2.0" }, "bin": [ @@ -3853,7 +5347,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.3.4" + "source": "https://github.com/symfony/error-handler/tree/v7.4.0" }, "funding": [ { @@ -3873,28 +5367,28 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-11-05T14:29:59+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.3.3", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191" + "reference": "573f95783a2ec6e38752979db139f09fec033f03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/573f95783a2ec6e38752979db139f09fec033f03", + "reference": "573f95783a2ec6e38752979db139f09fec033f03", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<6.4", + "symfony/security-http": "<7.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -3903,13 +5397,14 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/error-handler": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/stopwatch": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -3937,7 +5432,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v8.0.0" }, "funding": [ { @@ -3957,7 +5452,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-10-30T14:17:19+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -4037,23 +5532,23 @@ }, { "name": "symfony/finder", - "version": "v7.3.2", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe" + "reference": "fffe05569336549b20a1be64250b40516d6e8d06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe", - "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe", + "url": "https://api.github.com/repos/symfony/finder/zipball/fffe05569336549b20a1be64250b40516d6e8d06", + "reference": "fffe05569336549b20a1be64250b40516d6e8d06", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4081,7 +5576,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.3.2" + "source": "https://github.com/symfony/finder/tree/v7.4.3" }, "funding": [ { @@ -4101,27 +5596,26 @@ "type": "tidelift" } ], - "time": "2025-07-15T13:41:35+00:00" + "time": "2025-12-23T14:50:43+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.3.4", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6" + "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c061c7c18918b1b64268771aad04b40be41dd2e6", - "reference": "c061c7c18918b1b64268771aad04b40be41dd2e6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a70c745d4cea48dbd609f4075e5f5cbce453bd52", + "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.1" }, "conflict": { "doctrine/dbal": "<3.6", @@ -4130,13 +5624,13 @@ "require-dev": { "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4.12|^7.1.5", - "symfony/clock": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0" + "symfony/cache": "^6.4.12|^7.1.5|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4164,7 +5658,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.4" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.3" }, "funding": [ { @@ -4184,29 +5678,29 @@ "type": "tidelift" } ], - "time": "2025-09-16T08:38:17+00:00" + "time": "2025-12-23T14:23:49+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.4", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "b796dffea7821f035047235e076b60ca2446e3cf" + "reference": "885211d4bed3f857b8c964011923528a55702aa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b796dffea7821f035047235e076b60ca2446e3cf", - "reference": "b796dffea7821f035047235e076b60ca2446e3cf", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/885211d4bed3f857b8c964011923528a55702aa5", + "reference": "885211d4bed3f857b8c964011923528a55702aa5", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^7.3", - "symfony/http-foundation": "^7.3", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^7.3|^8.0", + "symfony/http-foundation": "^7.4|^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -4216,6 +5710,7 @@ "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", "symfony/doctrine-bridge": "<6.4", + "symfony/flex": "<2.10", "symfony/form": "<6.4", "symfony/http-client": "<6.4", "symfony/http-client-contracts": "<2.5", @@ -4233,27 +5728,27 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^7.1", - "symfony/routing": "^6.4|^7.0", - "symfony/serializer": "^7.1", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^7.1|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.1|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0", "twig/twig": "^3.12" }, "type": "library", @@ -4282,7 +5777,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.3.4" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.3" }, "funding": [ { @@ -4302,20 +5797,20 @@ "type": "tidelift" } ], - "time": "2025-09-27T12:32:17+00:00" + "time": "2025-12-31T08:43:57+00:00" }, { "name": "symfony/mailer", - "version": "v7.3.4", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "ab97ef2f7acf0216955f5845484235113047a31d" + "reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/ab97ef2f7acf0216955f5845484235113047a31d", - "reference": "ab97ef2f7acf0216955f5845484235113047a31d", + "url": "https://api.github.com/repos/symfony/mailer/zipball/e472d35e230108231ccb7f51eb6b2100cac02ee4", + "reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4", "shasum": "" }, "require": { @@ -4323,8 +5818,8 @@ "php": ">=8.2", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/mime": "^7.2", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/mime": "^7.2|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -4335,10 +5830,10 @@ "symfony/twig-bridge": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -4366,7 +5861,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.3.4" + "source": "https://github.com/symfony/mailer/tree/v7.4.3" }, "funding": [ { @@ -4386,24 +5881,25 @@ "type": "tidelift" } ], - "time": "2025-09-17T05:51:54+00:00" + "time": "2025-12-16T08:02:06+00:00" }, { "name": "symfony/mime", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35" + "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35", - "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35", + "url": "https://api.github.com/repos/symfony/mime/zipball/bdb02729471be5d047a3ac4a69068748f1a6be7a", + "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -4418,11 +5914,11 @@ "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3" + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0" }, "type": "library", "autoload": { @@ -4454,7 +5950,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.3.4" + "source": "https://github.com/symfony/mime/tree/v7.4.0" }, "funding": [ { @@ -4474,7 +5970,78 @@ "type": "tidelift" } ], - "time": "2025-09-16T08:38:17+00:00" + "time": "2025-11-16T10:14:42+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d2b592535ffa6600c265a3893a7f7fd2bad82dd7", + "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v8.0.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-11-12T15:55:31+00:00" }, { "name": "symfony/polyfill-ctype", @@ -5307,16 +6874,16 @@ }, { "name": "symfony/process", - "version": "v7.3.4", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" + "reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", + "url": "https://api.github.com/repos/symfony/process/zipball/2f8e1a6cdf590ca63715da4d3a7a3327404a523f", + "reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f", "shasum": "" }, "require": { @@ -5348,7 +6915,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.4" + "source": "https://github.com/symfony/process/tree/v7.4.3" }, "funding": [ { @@ -5368,20 +6935,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-12-19T10:00:43+00:00" }, { "name": "symfony/routing", - "version": "v7.3.4", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c" + "reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/8dc648e159e9bac02b703b9fbd937f19ba13d07c", - "reference": "8dc648e159e9bac02b703b9fbd937f19ba13d07c", + "url": "https://api.github.com/repos/symfony/routing/zipball/5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090", + "reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090", "shasum": "" }, "require": { @@ -5395,11 +6962,11 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5433,7 +7000,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.4" + "source": "https://github.com/symfony/routing/tree/v7.4.3" }, "funding": [ { @@ -5453,20 +7020,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-12-19T10:00:43+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.6.0", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", "shasum": "" }, "require": { @@ -5520,7 +7087,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" }, "funding": [ { @@ -5531,43 +7098,47 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-25T09:37:31+00:00" + "time": "2025-07-15T11:30:57+00:00" }, { "name": "symfony/string", - "version": "v7.3.4", + "version": "v8.0.1", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f96476035142921000338bad71e5247fbc138872" + "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", - "reference": "f96476035142921000338bad71e5247fbc138872", + "url": "https://api.github.com/repos/symfony/string/zipball/ba65a969ac918ce0cc3edfac6cdde847eba231dc", + "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=8.4", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-intl-grapheme": "^1.33", + "symfony/polyfill-intl-normalizer": "^1.0", + "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/emoji": "^7.1", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/emoji": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -5606,7 +7177,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.4" + "source": "https://github.com/symfony/string/tree/v8.0.1" }, "funding": [ { @@ -5626,38 +7197,31 @@ "type": "tidelift" } ], - "time": "2025-09-11T14:36:48+00:00" + "time": "2025-12-01T09:13:36+00:00" }, { "name": "symfony/translation", - "version": "v7.3.4", + "version": "v8.0.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "ec25870502d0c7072d086e8ffba1420c85965174" + "reference": "60a8f11f0e15c48f2cc47c4da53873bb5b62135d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174", - "reference": "ec25870502d0c7072d086e8ffba1420c85965174", + "url": "https://api.github.com/repos/symfony/translation/zipball/60a8f11f0e15c48f2cc47c4da53873bb5b62135d", + "reference": "60a8f11f0e15c48f2cc47c4da53873bb5b62135d", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" + "php": ">=8.4", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation-contracts": "^3.6.1" }, "conflict": { "nikic/php-parser": "<5.0", - "symfony/config": "<6.4", - "symfony/console": "<6.4", - "symfony/dependency-injection": "<6.4", "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<6.4", - "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<6.4", - "symfony/yaml": "<6.4" + "symfony/service-contracts": "<2.5" }, "provide": { "symfony/translation-implementation": "2.3|3.0" @@ -5665,17 +7229,17 @@ "require-dev": { "nikic/php-parser": "^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/config": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^6.4|^7.0", + "symfony/routing": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -5706,7 +7270,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.3.4" + "source": "https://github.com/symfony/translation/tree/v8.0.3" }, "funding": [ { @@ -5726,20 +7290,20 @@ "type": "tidelift" } ], - "time": "2025-09-07T11:39:36+00:00" + "time": "2025-12-21T10:59:45+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.6.0", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d" + "reference": "65a8bc82080447fae78373aa10f8d13b38338977" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d", - "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977", "shasum": "" }, "require": { @@ -5788,7 +7352,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" }, "funding": [ { @@ -5799,25 +7363,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-27T08:32:26+00:00" + "time": "2025-07-15T13:41:35+00:00" }, { "name": "symfony/uid", - "version": "v7.3.1", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb" + "reference": "2498e9f81b7baa206f44de583f2f48350b90142c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/a69f69f3159b852651a6bf45a9fdd149520525bb", - "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb", + "url": "https://api.github.com/repos/symfony/uid/zipball/2498e9f81b7baa206f44de583f2f48350b90142c", + "reference": "2498e9f81b7baa206f44de583f2f48350b90142c", "shasum": "" }, "require": { @@ -5825,7 +7393,7 @@ "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5862,7 +7430,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.3.1" + "source": "https://github.com/symfony/uid/tree/v7.4.0" }, "funding": [ { @@ -5873,25 +7441,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-27T19:55:54+00:00" + "time": "2025-09-25T11:02:55+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.3.4", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb" + "reference": "7e99bebcb3f90d8721890f2963463280848cba92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", - "reference": "b8abe7daf2730d07dfd4b2ee1cecbf0dd2fbdabb", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7e99bebcb3f90d8721890f2963463280848cba92", + "reference": "7e99bebcb3f90d8721890f2963463280848cba92", "shasum": "" }, "require": { @@ -5903,10 +7475,10 @@ "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/uid": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", "twig/twig": "^3.12" }, "bin": [ @@ -5945,7 +7517,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.4" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.3" }, "funding": [ { @@ -5965,27 +7537,27 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-12-18T07:04:31+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "v2.3.0", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "0d72ac1c00084279c1816675284073c5a337c20d" + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", - "reference": "0d72ac1c00084279c1816675284073c5a337c20d", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/f0292ccf0ec75843d65027214426b6b163b48b41", + "reference": "f0292ccf0ec75843d65027214426b6b163b48b41", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "php": "^7.4 || ^8.0", - "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "require-dev": { "phpstan/phpstan": "^2.0", @@ -6018,32 +7590,103 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.4.0" }, - "time": "2024-12-21T16:25:41+00:00" + "time": "2025-12-02T11:56:42+00:00" }, { - "name": "vlucas/phpdotenv", - "version": "v5.6.2", + "name": "typesense/typesense-php", + "version": "v5.2.0", "source": { "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" + "url": "https://github.com/typesense/typesense-php.git", + "reference": "1fbf79e1c10a8fd4cc3df9c3cddbe158e93542f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", - "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "url": "https://api.github.com/repos/typesense/typesense-php/zipball/1fbf79e1c10a8fd4cc3df9c3cddbe158e93542f7", + "reference": "1fbf79e1c10a8fd4cc3df9c3cddbe158e93542f7", + "shasum": "" + }, + "require": { + "ext-json": "*", + "monolog/monolog": "^2.1 || ^3.0 || ^3.3", + "nyholm/psr7": "^1.3", + "php": ">=7.4", + "php-http/client-common": "^1.0 || ^2.3", + "php-http/discovery": "^1.0", + "php-http/httplug": "^1.0 || ^2.2", + "psr/http-client-implementation": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "require-dev": { + "mockery/mockery": "^1.6", + "phpunit/phpunit": "^11.2", + "squizlabs/php_codesniffer": "3.*", + "symfony/http-client": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Typesense\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Typesense", + "email": "contact@typesense.org", + "homepage": "https://typesense.org", + "role": "Developer" + }, + { + "name": "Abdullah Al-Faqeir", + "email": "abdullah@devloops.net", + "homepage": "https://www.devloops.net", + "role": "Developer" + } + ], + "description": "PHP client for Typesense Search Server: https://github.com/typesense/typesense", + "homepage": "https://github.com/typesense/typesense-php", + "support": { + "docs": "https://typesense.org/api", + "issues": "https://github.com/typesense/typesense-php/issues", + "source": "https://github.com/typesense/typesense-php" + }, + "funding": [ + { + "url": "https://github.com/typesense", + "type": "github" + } + ], + "time": "2025-08-15T15:21:26+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.3", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "955e7815d677a3eaa7075231212f2110983adecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.3", + "graham-campbell/result-type": "^1.1.4", "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3", - "symfony/polyfill-ctype": "^1.24", - "symfony/polyfill-mbstring": "^1.24", - "symfony/polyfill-php80": "^1.24" + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", @@ -6092,7 +7735,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" }, "funding": [ { @@ -6104,7 +7747,7 @@ "type": "tidelift" } ], - "time": "2025-04-30T23:37:27+00:00" + "time": "2025-12-27T19:49:13+00:00" }, { "name": "voku/portable-ascii", @@ -6179,79 +7822,21 @@ } ], "time": "2024-11-21T01:49:47+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.12.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "541057574806f942c94662b817a50f63f7345360" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/541057574806f942c94662b817a50f63f7345360", - "reference": "541057574806f942c94662b817a50f63f7345360", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-date": "*", - "ext-filter": "*", - "php": "^7.2 || ^8.0" - }, - "suggest": { - "ext-intl": "", - "ext-simplexml": "", - "ext-spl": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.12.0" - }, - "time": "2025-10-20T12:43:39+00:00" } ], "packages-dev": [ { "name": "brianium/paratest", - "version": "v7.14.1", + "version": "v7.16.1", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "e1a93c38a94f4808faf75552e835666d3a6f8bb2" + "reference": "f0fdfd8e654e0d38bc2ba756a6cabe7be287390b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/e1a93c38a94f4808faf75552e835666d3a6f8bb2", - "reference": "e1a93c38a94f4808faf75552e835666d3a6f8bb2", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/f0fdfd8e654e0d38bc2ba756a6cabe7be287390b", + "reference": "f0fdfd8e654e0d38bc2ba756a6cabe7be287390b", "shasum": "" }, "require": { @@ -6262,24 +7847,24 @@ "fidry/cpu-core-counter": "^1.3.0", "jean85/pretty-package-versions": "^2.1.1", "php": "~8.3.0 || ~8.4.0 || ~8.5.0", - "phpunit/php-code-coverage": "^12.4.0", + "phpunit/php-code-coverage": "^12.5.2", "phpunit/php-file-iterator": "^6", "phpunit/php-timer": "^8", - "phpunit/phpunit": "^12.4.0", + "phpunit/phpunit": "^12.5.4", "sebastian/environment": "^8.0.3", - "symfony/console": "^6.4.20 || ^7.3.4", - "symfony/process": "^6.4.20 || ^7.3.4" + "symfony/console": "^7.3.4 || ^8.0.0", + "symfony/process": "^7.3.4 || ^8.0.0" }, "require-dev": { "doctrine/coding-standard": "^14.0.0", "ext-pcntl": "*", "ext-pcov": "*", "ext-posix": "*", - "phpstan/phpstan": "^2.1.30", + "phpstan/phpstan": "^2.1.33", "phpstan/phpstan-deprecation-rules": "^2.0.3", - "phpstan/phpstan-phpunit": "^2.0.7", + "phpstan/phpstan-phpunit": "^2.0.11", "phpstan/phpstan-strict-rules": "^2.0.7", - "symfony/filesystem": "^6.4.13 || ^7.3.2" + "symfony/filesystem": "^7.3.2 || ^8.0.0" }, "bin": [ "bin/paratest", @@ -6319,7 +7904,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.14.1" + "source": "https://github.com/paratestphp/paratest/tree/v7.16.1" }, "funding": [ { @@ -6331,7 +7916,7 @@ "type": "paypal" } ], - "time": "2025-10-06T08:26:52+00:00" + "time": "2026-01-08T07:23:06+00:00" }, { "name": "doctrine/deprecations", @@ -6689,16 +8274,16 @@ }, { "name": "laravel/pail", - "version": "v1.2.3", + "version": "v1.2.4", "source": { "type": "git", "url": "https://github.com/laravel/pail.git", - "reference": "8cc3d575c1f0e57eeb923f366a37528c50d2385a" + "reference": "49f92285ff5d6fc09816e976a004f8dec6a0ea30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pail/zipball/8cc3d575c1f0e57eeb923f366a37528c50d2385a", - "reference": "8cc3d575c1f0e57eeb923f366a37528c50d2385a", + "url": "https://api.github.com/repos/laravel/pail/zipball/49f92285ff5d6fc09816e976a004f8dec6a0ea30", + "reference": "49f92285ff5d6fc09816e976a004f8dec6a0ea30", "shasum": "" }, "require": { @@ -6715,9 +8300,9 @@ "require-dev": { "laravel/framework": "^10.24|^11.0|^12.0", "laravel/pint": "^1.13", - "orchestra/testbench-core": "^8.13|^9.0|^10.0", - "pestphp/pest": "^2.20|^3.0", - "pestphp/pest-plugin-type-coverage": "^2.3|^3.0", + "orchestra/testbench-core": "^8.13|^9.17|^10.8", + "pestphp/pest": "^2.20|^3.0|^4.0", + "pestphp/pest-plugin-type-coverage": "^2.3|^3.0|^4.0", "phpstan/phpstan": "^1.12.27", "symfony/var-dumper": "^6.3|^7.0" }, @@ -6764,20 +8349,20 @@ "issues": "https://github.com/laravel/pail/issues", "source": "https://github.com/laravel/pail" }, - "time": "2025-06-05T13:55:57+00:00" + "time": "2025-11-20T16:29:35+00:00" }, { "name": "laravel/pint", - "version": "v1.25.1", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9" + "reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/5016e263f95d97670d71b9a987bd8996ade6d8d9", - "reference": "5016e263f95d97670d71b9a987bd8996ade6d8d9", + "url": "https://api.github.com/repos/laravel/pint/zipball/c67b4195b75491e4dfc6b00b1c78b68d86f54c90", + "reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90", "shasum": "" }, "require": { @@ -6788,13 +8373,13 @@ "php": "^8.2.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.87.2", - "illuminate/view": "^11.46.0", - "larastan/larastan": "^3.7.1", - "laravel-zero/framework": "^11.45.0", + "friendsofphp/php-cs-fixer": "^3.92.4", + "illuminate/view": "^12.44.0", + "larastan/larastan": "^3.8.1", + "laravel-zero/framework": "^12.0.4", "mockery/mockery": "^1.6.12", - "nunomaduro/termwind": "^2.3.1", - "pestphp/pest": "^2.36.0" + "nunomaduro/termwind": "^2.3.3", + "pestphp/pest": "^3.8.4" }, "bin": [ "builds/pint" @@ -6820,6 +8405,7 @@ "description": "An opinionated code formatter for PHP.", "homepage": "https://laravel.com", "keywords": [ + "dev", "format", "formatter", "lint", @@ -6830,20 +8416,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2025-09-19T02:57:12+00:00" + "time": "2026-01-05T16:49:17+00:00" }, { "name": "laravel/sail", - "version": "v1.46.0", + "version": "v1.52.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "eb90c4f113c4a9637b8fdd16e24cfc64f2b0ae6e" + "reference": "64ac7d8abb2dbcf2b76e61289451bae79066b0b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/eb90c4f113c4a9637b8fdd16e24cfc64f2b0ae6e", - "reference": "eb90c4f113c4a9637b8fdd16e24cfc64f2b0ae6e", + "url": "https://api.github.com/repos/laravel/sail/zipball/64ac7d8abb2dbcf2b76e61289451bae79066b0b3", + "reference": "64ac7d8abb2dbcf2b76e61289451bae79066b0b3", "shasum": "" }, "require": { @@ -6856,7 +8442,7 @@ }, "require-dev": { "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^2.0" }, "bin": [ "bin/sail" @@ -6893,7 +8479,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2025-09-23T13:44:39+00:00" + "time": "2026-01-01T02:46:03+00:00" }, { "name": "mockery/mockery", @@ -7040,16 +8626,16 @@ }, { "name": "nunomaduro/collision", - "version": "v8.8.2", + "version": "v8.8.3", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb" + "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", - "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/1dc9e88d105699d0fee8bb18890f41b274f6b4c4", + "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4", "shasum": "" }, "require": { @@ -7071,7 +8657,7 @@ "laravel/sanctum": "^4.1.1", "laravel/tinker": "^2.10.1", "orchestra/testbench-core": "^9.12.0 || ^10.4", - "pestphp/pest": "^3.8.2", + "pestphp/pest": "^3.8.2 || ^4.0.0", "sebastian/environment": "^7.2.1 || ^8.0" }, "type": "library", @@ -7135,45 +8721,45 @@ "type": "patreon" } ], - "time": "2025-06-25T02:12:12+00:00" + "time": "2025-11-20T02:55:25+00:00" }, { "name": "pestphp/pest", - "version": "v4.1.2", + "version": "v4.3.1", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "08b09f2e98fc6830050c0237968b233768642d46" + "reference": "bc57a84e77afd4544ff9643a6858f68d05aeab96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/08b09f2e98fc6830050c0237968b233768642d46", - "reference": "08b09f2e98fc6830050c0237968b233768642d46", + "url": "https://api.github.com/repos/pestphp/pest/zipball/bc57a84e77afd4544ff9643a6858f68d05aeab96", + "reference": "bc57a84e77afd4544ff9643a6858f68d05aeab96", "shasum": "" }, "require": { - "brianium/paratest": "^7.14.0", - "nunomaduro/collision": "^8.8.2", - "nunomaduro/termwind": "^2.3.1", + "brianium/paratest": "^7.16.0", + "nunomaduro/collision": "^8.8.3", + "nunomaduro/termwind": "^2.3.3", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", - "pestphp/pest-plugin-profanity": "^4.1.0", + "pestphp/pest-plugin-profanity": "^4.2.1", "php": "^8.3.0", - "phpunit/phpunit": "^12.4.0", - "symfony/process": "^7.3.4" + "phpunit/phpunit": "^12.5.4", + "symfony/process": "^7.4.3|^8.0.0" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.4.0", + "phpunit/phpunit": ">12.5.4", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, "require-dev": { "pestphp/pest-dev-tools": "^4.0.0", "pestphp/pest-plugin-browser": "^4.1.1", - "pestphp/pest-plugin-type-coverage": "^4.0.2", - "psy/psysh": "^0.12.12" + "pestphp/pest-plugin-type-coverage": "^4.0.3", + "psy/psysh": "^0.12.18" }, "bin": [ "bin/pest" @@ -7239,7 +8825,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v4.1.2" + "source": "https://github.com/pestphp/pest/tree/v4.3.1" }, "funding": [ { @@ -7251,7 +8837,7 @@ "type": "github" } ], - "time": "2025-10-05T19:09:49+00:00" + "time": "2026-01-04T16:29:59+00:00" }, { "name": "pestphp/pest-plugin", @@ -7545,16 +9131,16 @@ }, { "name": "pestphp/pest-plugin-profanity", - "version": "v4.1.0", + "version": "v4.2.1", "source": { "type": "git", "url": "https://github.com/pestphp/pest-plugin-profanity.git", - "reference": "e279c844b6868da92052be27b5202c2ad7216e80" + "reference": "343cfa6f3564b7e35df0ebb77b7fa97039f72b27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-profanity/zipball/e279c844b6868da92052be27b5202c2ad7216e80", - "reference": "e279c844b6868da92052be27b5202c2ad7216e80", + "url": "https://api.github.com/repos/pestphp/pest-plugin-profanity/zipball/343cfa6f3564b7e35df0ebb77b7fa97039f72b27", + "reference": "343cfa6f3564b7e35df0ebb77b7fa97039f72b27", "shasum": "" }, "require": { @@ -7595,9 +9181,9 @@ "unit" ], "support": { - "source": "https://github.com/pestphp/pest-plugin-profanity/tree/v4.1.0" + "source": "https://github.com/pestphp/pest-plugin-profanity/tree/v4.2.1" }, - "time": "2025-09-10T06:17:03+00:00" + "time": "2025-12-08T00:13:17+00:00" }, { "name": "phar-io/manifest", @@ -7772,16 +9358,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.6.3", + "version": "5.6.6", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9" + "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94f8051919d1b0369a6bcc7931d679a511c03fe9", - "reference": "94f8051919d1b0369a6bcc7931d679a511c03fe9", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/5cee1d3dfc2d2aa6599834520911d246f656bcb8", + "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8", "shasum": "" }, "require": { @@ -7791,7 +9377,7 @@ "phpdocumentor/reflection-common": "^2.2", "phpdocumentor/type-resolver": "^1.7", "phpstan/phpdoc-parser": "^1.7|^2.0", - "webmozart/assert": "^1.9.1" + "webmozart/assert": "^1.9.1 || ^2" }, "require-dev": { "mockery/mockery": "~1.3.5 || ~1.6.0", @@ -7830,22 +9416,22 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.3" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.6" }, - "time": "2025-08-01T19:43:32+00:00" + "time": "2025-12-22T21:13:58+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.10.0", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" + "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", - "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/92a98ada2b93d9b201a613cb5a33584dde25f195", + "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195", "shasum": "" }, "require": { @@ -7888,22 +9474,22 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.12.0" }, - "time": "2024-11-09T15:12:26+00:00" + "time": "2025-11-21T15:09:14+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "2.3.0", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495" + "reference": "16dbf9937da8d4528ceb2145c9c7c0bd29e26374" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495", - "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/16dbf9937da8d4528ceb2145c9c7c0bd29e26374", + "reference": "16dbf9937da8d4528ceb2145c9c7c0bd29e26374", "shasum": "" }, "require": { @@ -7935,29 +9521,29 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.1" }, - "time": "2025-08-30T15:50:23+00:00" + "time": "2026-01-12T11:33:04+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "12.4.0", + "version": "12.5.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "67e8aed88f93d0e6e1cb7effe1a2dfc2fee6022c" + "reference": "4a9739b51cbcb355f6e95659612f92e282a7077b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/67e8aed88f93d0e6e1cb7effe1a2dfc2fee6022c", - "reference": "67e8aed88f93d0e6e1cb7effe1a2dfc2fee6022c", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4a9739b51cbcb355f6e95659612f92e282a7077b", + "reference": "4a9739b51cbcb355f6e95659612f92e282a7077b", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^5.6.1", + "nikic/php-parser": "^5.7.0", "php": ">=8.3", "phpunit/php-file-iterator": "^6.0", "phpunit/php-text-template": "^5.0", @@ -7965,10 +9551,10 @@ "sebastian/environment": "^8.0.3", "sebastian/lines-of-code": "^4.0", "sebastian/version": "^6.0", - "theseer/tokenizer": "^1.2.3" + "theseer/tokenizer": "^2.0.1" }, "require-dev": { - "phpunit/phpunit": "^12.3.7" + "phpunit/phpunit": "^12.5.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -7977,7 +9563,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "12.4.x-dev" + "dev-main": "12.5.x-dev" } }, "autoload": { @@ -8006,7 +9592,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.4.0" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.2" }, "funding": [ { @@ -8026,7 +9612,7 @@ "type": "tidelift" } ], - "time": "2025-09-24T13:44:41+00:00" + "time": "2025-12-24T07:03:04+00:00" }, { "name": "phpunit/php-file-iterator", @@ -8275,16 +9861,16 @@ }, { "name": "phpunit/phpunit", - "version": "12.4.0", + "version": "12.5.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f62aab5794e36ccd26860db2d1bbf89ac19028d9" + "reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f62aab5794e36ccd26860db2d1bbf89ac19028d9", - "reference": "f62aab5794e36ccd26860db2d1bbf89ac19028d9", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4ba0e923f9d3fc655de22f9547c01d15a41fc93a", + "reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a", "shasum": "" }, "require": { @@ -8298,7 +9884,7 @@ "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.3", - "phpunit/php-code-coverage": "^12.4.0", + "phpunit/php-code-coverage": "^12.5.1", "phpunit/php-file-iterator": "^6.0.0", "phpunit/php-invoker": "^6.0.0", "phpunit/php-text-template": "^5.0.0", @@ -8320,7 +9906,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "12.4-dev" + "dev-main": "12.5-dev" } }, "autoload": { @@ -8352,7 +9938,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/12.4.0" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.4" }, "funding": [ { @@ -8376,7 +9962,7 @@ "type": "tidelift" } ], - "time": "2025-10-03T04:28:03+00:00" + "time": "2025-12-15T06:05:34+00:00" }, { "name": "sebastian/cli-parser", @@ -9329,28 +10915,28 @@ }, { "name": "symfony/yaml", - "version": "v7.3.3", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "d4f4a66866fe2451f61296924767280ab5732d9d" + "reference": "24dd4de28d2e3988b311751ac49e684d783e2345" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/d4f4a66866fe2451f61296924767280ab5732d9d", - "reference": "d4f4a66866fe2451f61296924767280ab5732d9d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/24dd4de28d2e3988b311751ac49e684d783e2345", + "reference": "24dd4de28d2e3988b311751ac49e684d783e2345", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -9381,7 +10967,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.3.3" + "source": "https://github.com/symfony/yaml/tree/v7.4.1" }, "funding": [ { @@ -9401,7 +10987,7 @@ "type": "tidelift" } ], - "time": "2025-08-27T11:34:33+00:00" + "time": "2025-12-04T18:11:45+00:00" }, { "name": "ta-tikoma/phpunit-architecture-test", @@ -9464,23 +11050,23 @@ }, { "name": "theseer/tokenizer", - "version": "1.2.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/7989e43bf381af0eac72e4f0ca5bcbfa81658be4", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" + "php": "^8.1" }, "type": "library", "autoload": { @@ -9502,7 +11088,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + "source": "https://github.com/theseer/tokenizer/tree/2.0.1" }, "funding": [ { @@ -9510,7 +11096,69 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2025-12-08T11:19:18+00:00" + }, + { + "name": "webmozart/assert", + "version": "2.1.2", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "ce6a2f100c404b2d32a1dd1270f9b59ad4f57649" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/ce6a2f100c404b2d32a1dd1270f9b59ad4f57649", + "reference": "ce6a2f100c404b2d32a1dd1270f9b59ad4f57649", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-date": "*", + "ext-filter": "*", + "php": "^8.2" + }, + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-feature/2-0": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Woody Gilk", + "email": "woody.gilk@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/2.1.2" + }, + "time": "2026-01-13T14:02:24+00:00" } ], "aliases": [], @@ -9522,5 +11170,5 @@ "php": "^8.2" }, "platform-dev": {}, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.9.0" } diff --git a/docker/backup/Dockerfile b/docker/backup/Dockerfile deleted file mode 100644 index 85c300c..0000000 --- a/docker/backup/Dockerfile +++ /dev/null @@ -1,14 +0,0 @@ -FROM alpine:latest - -RUN apk add --no-cache mariadb-client bash dcron - -RUN mkdir -p /backups -RUN mkdir -p /etc/periodic/15min - -COPY backup/backup_db.sh /etc/periodic/15min/backup_db -COPY backup/entrypoint2.sh /entrypoint.sh - -RUN chmod +x /etc/periodic/15min/backup_db -RUN chmod +x /entrypoint.sh - -ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker/backup/backup_db.sh b/docker/backup/backup_db.sh deleted file mode 100755 index 8536db9..0000000 --- a/docker/backup/backup_db.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash - -DB_USER="root" -DB_PASS="root" -DB_NAME="laravel" -BACKUP_DIR="/backups" - -mkdir -p "$BACKUP_DIR" - -DAY=$(date +%d) -FILE="$BACKUP_DIR/$DAY.sql" - -mysqldump -h mariadb -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$FILE" - -echo "[$(date)] Backup $DB_NAME sauvegardé dans $FILE" >> "$BACKUP_DIR/backup.log" \ No newline at end of file diff --git a/docker/backup/entrypoint2.sh b/docker/backup/entrypoint2.sh deleted file mode 100755 index fa52e5b..0000000 --- a/docker/backup/entrypoint2.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -crond -f -l 2 diff --git a/docker/backups/07.sql b/docker/backups/07.sql deleted file mode 100644 index 219ad3e..0000000 --- a/docker/backups/07.sql +++ /dev/null @@ -1,359 +0,0 @@ -/*M!999999\- enable the sandbox mode */ --- MariaDB dump 10.19-11.4.9-MariaDB, for Linux (x86_64) --- --- Host: mariadb Database: laravel --- ------------------------------------------------------ --- Server version 12.1.2-MariaDB-ubu2404 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*M!100616 SET @OLD_NOTE_VERBOSITY=@@NOTE_VERBOSITY, NOTE_VERBOSITY=0 */; - --- --- Table structure for table `cache` --- - -DROP TABLE IF EXISTS `cache`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `cache` ( - `key` varchar(255) NOT NULL, - `value` mediumtext NOT NULL, - `expiration` int(11) NOT NULL, - PRIMARY KEY (`key`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `cache` --- - -LOCK TABLES `cache` WRITE; -/*!40000 ALTER TABLE `cache` DISABLE KEYS */; -/*!40000 ALTER TABLE `cache` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `cache_locks` --- - -DROP TABLE IF EXISTS `cache_locks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `cache_locks` ( - `key` varchar(255) NOT NULL, - `owner` varchar(255) NOT NULL, - `expiration` int(11) NOT NULL, - PRIMARY KEY (`key`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `cache_locks` --- - -LOCK TABLES `cache_locks` WRITE; -/*!40000 ALTER TABLE `cache_locks` DISABLE KEYS */; -/*!40000 ALTER TABLE `cache_locks` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `events` --- - -DROP TABLE IF EXISTS `events`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `events` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL, - `description` varchar(255) NOT NULL, - `start` datetime DEFAULT NULL, - `end` datetime DEFAULT NULL, - `created_at` timestamp NULL DEFAULT NULL, - `updated_at` timestamp NULL DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `events` --- - -LOCK TABLES `events` WRITE; -/*!40000 ALTER TABLE `events` DISABLE KEYS */; -/*!40000 ALTER TABLE `events` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `jobs` --- - -DROP TABLE IF EXISTS `jobs`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `jobs` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `queue` varchar(255) NOT NULL, - `payload` longtext NOT NULL, - `attempts` tinyint(3) unsigned NOT NULL, - `reserved_at` int(10) unsigned DEFAULT NULL, - `available_at` int(10) unsigned NOT NULL, - `created_at` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - KEY `jobs_queue_index` (`queue`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `jobs` --- - -LOCK TABLES `jobs` WRITE; -/*!40000 ALTER TABLE `jobs` DISABLE KEYS */; -/*!40000 ALTER TABLE `jobs` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `migrations` --- - -DROP TABLE IF EXISTS `migrations`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `migrations` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `migration` varchar(255) NOT NULL, - `batch` int(11) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `migrations` --- - -LOCK TABLES `migrations` WRITE; -/*!40000 ALTER TABLE `migrations` DISABLE KEYS */; -INSERT INTO `migrations` VALUES -(1,'2025_10_13_213713_create_jobs_table',1), -(2,'2025_10_13_215246_create_users_table',1), -(3,'2025_10_14_210658_create_sessions_table',1), -(4,'2025_10_14_210940_add_remember_token_to_users_table',1), -(5,'2025_10_27_211752_create_events_table',1), -(6,'2025_11_07_103448_create_notifications_table',1), -(7,'2025_11_09_144248_create_tasks_table',1), -(8,'2025_11_14_081656_task_user',1), -(9,'2025_11_28_112359_create_cache_table',1), -(10,'2025_12_10_092809_notification_user',1); -/*!40000 ALTER TABLE `migrations` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `notification_user` --- - -DROP TABLE IF EXISTS `notification_user`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `notification_user` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `notification_id` bigint(20) unsigned NOT NULL, - `user_id` bigint(20) unsigned NOT NULL, - `created_at` timestamp NULL DEFAULT NULL, - `updated_at` timestamp NULL DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `notification_user_notification_id_foreign` (`notification_id`), - KEY `notification_user_user_id_foreign` (`user_id`), - CONSTRAINT `notification_user_notification_id_foreign` FOREIGN KEY (`notification_id`) REFERENCES `notifications` (`id`) ON DELETE CASCADE, - CONSTRAINT `notification_user_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `notification_user` --- - -LOCK TABLES `notification_user` WRITE; -/*!40000 ALTER TABLE `notification_user` DISABLE KEYS */; -/*!40000 ALTER TABLE `notification_user` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `notifications` --- - -DROP TABLE IF EXISTS `notifications`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `notifications` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `created_at` timestamp NULL DEFAULT NULL, - `updated_at` timestamp NULL DEFAULT NULL, - `content` varchar(255) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `notifications` --- - -LOCK TABLES `notifications` WRITE; -/*!40000 ALTER TABLE `notifications` DISABLE KEYS */; -/*!40000 ALTER TABLE `notifications` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `sessions` --- - -DROP TABLE IF EXISTS `sessions`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `sessions` ( - `id` varchar(255) NOT NULL, - `user_id` bigint(20) unsigned DEFAULT NULL, - `ip_address` varchar(45) DEFAULT NULL, - `user_agent` text DEFAULT NULL, - `payload` longtext NOT NULL, - `last_activity` int(11) NOT NULL, - PRIMARY KEY (`id`), - KEY `sessions_user_id_index` (`user_id`), - KEY `sessions_last_activity_index` (`last_activity`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `sessions` --- - -LOCK TABLES `sessions` WRITE; -/*!40000 ALTER TABLE `sessions` DISABLE KEYS */; -INSERT INTO `sessions` VALUES -('fOfGv56vGFKcMJg1VDjGMMrJEsrCmHWUuc1KR90q',1,'192.168.200.1','Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0','YTo0OntzOjY6Il90b2tlbiI7czo0MDoidEoyRHJsR2R2MHdIRGVvdXZwaTBsWUZxb1JPUGFBbHZZa1dYYkM5ayI7czo1MDoibG9naW5fd2ViXzU5YmEzNmFkZGMyYjJmOTQwMTU4MGYwMTRjN2Y1OGVhNGUzMDk4OWQiO2k6MTtzOjk6Il9wcmV2aW91cyI7YToyOntzOjM6InVybCI7czoyOToiaHR0cDovL2xvY2FsaG9zdC9hcGkvdXNlcnMvbWUiO3M6NToicm91dGUiO047fXM6NjoiX2ZsYXNoIjthOjI6e3M6Mzoib2xkIjthOjA6e31zOjM6Im5ldyI7YTowOnt9fX0=',1767779264), -('UohGNwK6dEqkqfRsteqqWYUFzI2dHrDTZPBIpOo3',1,'192.168.200.1','Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0','YTo0OntzOjY6Il90b2tlbiI7czo0MDoiYmNlb2JoTkRheDY0blRveXdEVjYxM25McEFNRmxGTXdVdjdCdFpabCI7czo2OiJfZmxhc2giO2E6Mjp7czozOiJvbGQiO2E6MDp7fXM6MzoibmV3IjthOjA6e319czo5OiJfcHJldmlvdXMiO2E6Mjp7czozOiJ1cmwiO3M6Mjg6Imh0dHA6Ly9sb2NhbGhvc3QvYXBpL3VzZXJzLzMiO3M6NToicm91dGUiO047fXM6NTA6ImxvZ2luX3dlYl81OWJhMzZhZGRjMmIyZjk0MDE1ODBmMDE0YzdmNThlYTRlMzA5ODlkIjtpOjE7fQ==',1767785280), -('x3RIOoCY2S7bcIzRxSNC0E8TL2O8J3ZvNu8CERSv',NULL,'192.168.200.1','Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0','YTozOntzOjY6Il90b2tlbiI7czo0MDoiSFBIc21Xa29QQmxiMzhWaE5GVlRqYTRmTlJoWEVlOEM4MTlGcU5KbyI7czo2OiJfZmxhc2giO2E6Mjp7czozOiJvbGQiO2E6MDp7fXM6MzoibmV3IjthOjA6e319czo5OiJfcHJldmlvdXMiO2E6Mjp7czozOiJ1cmwiO3M6MzY6Imh0dHA6Ly9sb2NhbGhvc3Qvc2FuY3R1bS9jc3JmLWNvb2tpZSI7czo1OiJyb3V0ZSI7czoxOToic2FuY3R1bS5jc3JmLWNvb2tpZSI7fX0=',1767798400); -/*!40000 ALTER TABLE `sessions` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `task_user` --- - -DROP TABLE IF EXISTS `task_user`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `task_user` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `task_id` bigint(20) unsigned NOT NULL, - `user_id` bigint(20) unsigned NOT NULL, - `created_at` timestamp NULL DEFAULT NULL, - `updated_at` timestamp NULL DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `task_user_task_id_foreign` (`task_id`), - KEY `task_user_user_id_foreign` (`user_id`), - CONSTRAINT `task_user_task_id_foreign` FOREIGN KEY (`task_id`) REFERENCES `tasks` (`id`) ON DELETE CASCADE, - CONSTRAINT `task_user_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `task_user` --- - -LOCK TABLES `task_user` WRITE; -/*!40000 ALTER TABLE `task_user` DISABLE KEYS */; -/*!40000 ALTER TABLE `task_user` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `tasks` --- - -DROP TABLE IF EXISTS `tasks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `tasks` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL, - `description` varchar(255) NOT NULL, - `location` varchar(255) NOT NULL, - `start` datetime NOT NULL, - `end` datetime NOT NULL, - `max_participants` int(11) NOT NULL, - `events_id` bigint(20) unsigned NOT NULL, - `created_at` timestamp NULL DEFAULT NULL, - `updated_at` timestamp NULL DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `tasks_events_id_foreign` (`events_id`), - CONSTRAINT `tasks_events_id_foreign` FOREIGN KEY (`events_id`) REFERENCES `events` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `tasks` --- - -LOCK TABLES `tasks` WRITE; -/*!40000 ALTER TABLE `tasks` DISABLE KEYS */; -/*!40000 ALTER TABLE `tasks` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `users` --- - -DROP TABLE IF EXISTS `users`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `users` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL, - `lastname` varchar(255) NOT NULL, - `email` varchar(255) NOT NULL, - `password` varchar(255) NOT NULL, - `phone` varchar(255) DEFAULT NULL, - `validate` int(11) NOT NULL, - `role` int(11) DEFAULT NULL, - `verified_at` datetime DEFAULT NULL, - `created_at` timestamp NULL DEFAULT NULL, - `updated_at` timestamp NULL DEFAULT NULL, - `remember_token` varchar(100) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `users_email_unique` (`email`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `users` --- - -LOCK TABLES `users` WRITE; -/*!40000 ALTER TABLE `users` DISABLE KEYS */; -INSERT INTO `users` VALUES -(1,'Malo','Leblond','a@gmail.com','$2y$12$xbPw0/LtE7w8uzkk/EHxPey0vD8IrgqCwUxl8hYqGDbmrQp5dzF86','+33 7 67 87 11 11',1,NULL,NULL,'2026-01-05 08:35:22','2026-01-05 08:35:22','FsnEvcbRjNXNd2W0JhD535V6OIJKWl6WWHgfNAjwDvwrNKzSX5Wzv5h5J5nq'), -(2,'user2','user','b@gmail.com','$2y$12$pg2rdRW3gTw7BMC0l/PVIud719YTuspoGapfNNWmOx1JXb7sVbitq','+33 7 55 55 55 55',1,NULL,NULL,'2026-01-05 10:00:58','2026-01-05 10:00:58',NULL), -(3,'user3','user','lejhkdks@gmail.com','$2y$12$4Qt3VW147P.BiFW3qToCU.hpnRGo/KMhv2wKh4OZwhqeAZK0K1N2y','+33 7 88 88 88 88',1,NULL,NULL,'2026-01-05 10:01:38','2026-01-05 10:01:38',NULL), -(4,'compte1','sjs','1@gmail.com','$2y$12$ct4u8kOHqKg9ona.KzrjLuHFZfgkSsG3xQPFkAjoLnBy9hoUa/U4O','+33 9 88 88 88 88',1,NULL,NULL,'2026-01-07 15:06:07','2026-01-07 15:06:07',NULL), -(5,'compte2','sknssk','2@gmail.com','$2y$12$CsTLO8A0a4nRaiRBNEOn5O5gLas3ortE.zkT/91XX5OjIp.tKBa6q','+33 855 55 55 55',1,NULL,NULL,'2026-01-07 15:06:41','2026-01-07 15:06:41',NULL); -/*!40000 ALTER TABLE `users` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*M!100616 SET NOTE_VERBOSITY=@OLD_NOTE_VERBOSITY */; - --- Dump completed on 2026-01-07 15:23:54 diff --git a/docker/backups/09.sql b/docker/backups/09.sql deleted file mode 100644 index 9f82d89..0000000 --- a/docker/backups/09.sql +++ /dev/null @@ -1,356 +0,0 @@ -/*M!999999\- enable the sandbox mode */ --- MariaDB dump 10.19-11.4.9-MariaDB, for Linux (x86_64) --- --- Host: mariadb Database: laravel --- ------------------------------------------------------ --- Server version 12.1.2-MariaDB-ubu2404 - -/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; -/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; -/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; -/*!40101 SET NAMES utf8mb4 */; -/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; -/*!40103 SET TIME_ZONE='+00:00' */; -/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; -/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; -/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -/*M!100616 SET @OLD_NOTE_VERBOSITY=@@NOTE_VERBOSITY, NOTE_VERBOSITY=0 */; - --- --- Table structure for table `cache` --- - -DROP TABLE IF EXISTS `cache`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `cache` ( - `key` varchar(255) NOT NULL, - `value` mediumtext NOT NULL, - `expiration` int(11) NOT NULL, - PRIMARY KEY (`key`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `cache` --- - -LOCK TABLES `cache` WRITE; -/*!40000 ALTER TABLE `cache` DISABLE KEYS */; -/*!40000 ALTER TABLE `cache` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `cache_locks` --- - -DROP TABLE IF EXISTS `cache_locks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `cache_locks` ( - `key` varchar(255) NOT NULL, - `owner` varchar(255) NOT NULL, - `expiration` int(11) NOT NULL, - PRIMARY KEY (`key`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `cache_locks` --- - -LOCK TABLES `cache_locks` WRITE; -/*!40000 ALTER TABLE `cache_locks` DISABLE KEYS */; -/*!40000 ALTER TABLE `cache_locks` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `events` --- - -DROP TABLE IF EXISTS `events`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `events` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL, - `description` varchar(255) NOT NULL, - `start` datetime DEFAULT NULL, - `end` datetime DEFAULT NULL, - `created_at` timestamp NULL DEFAULT NULL, - `updated_at` timestamp NULL DEFAULT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `events` --- - -LOCK TABLES `events` WRITE; -/*!40000 ALTER TABLE `events` DISABLE KEYS */; -/*!40000 ALTER TABLE `events` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `jobs` --- - -DROP TABLE IF EXISTS `jobs`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `jobs` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `queue` varchar(255) NOT NULL, - `payload` longtext NOT NULL, - `attempts` tinyint(3) unsigned NOT NULL, - `reserved_at` int(10) unsigned DEFAULT NULL, - `available_at` int(10) unsigned NOT NULL, - `created_at` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - KEY `jobs_queue_index` (`queue`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `jobs` --- - -LOCK TABLES `jobs` WRITE; -/*!40000 ALTER TABLE `jobs` DISABLE KEYS */; -/*!40000 ALTER TABLE `jobs` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `migrations` --- - -DROP TABLE IF EXISTS `migrations`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `migrations` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `migration` varchar(255) NOT NULL, - `batch` int(11) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `migrations` --- - -LOCK TABLES `migrations` WRITE; -/*!40000 ALTER TABLE `migrations` DISABLE KEYS */; -INSERT INTO `migrations` VALUES -(1,'2025_10_13_213713_create_jobs_table',1), -(2,'2025_10_13_215246_create_users_table',1), -(3,'2025_10_14_210658_create_sessions_table',1), -(4,'2025_10_14_210940_add_remember_token_to_users_table',1), -(5,'2025_10_27_211752_create_events_table',1), -(6,'2025_11_07_103448_create_notifications_table',1), -(7,'2025_11_09_144248_create_tasks_table',1), -(8,'2025_11_14_081656_task_user',1), -(9,'2025_11_28_112359_create_cache_table',1), -(10,'2025_12_10_092809_notification_user',1); -/*!40000 ALTER TABLE `migrations` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `notification_user` --- - -DROP TABLE IF EXISTS `notification_user`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `notification_user` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `notification_id` bigint(20) unsigned NOT NULL, - `user_id` bigint(20) unsigned NOT NULL, - `created_at` timestamp NULL DEFAULT NULL, - `updated_at` timestamp NULL DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `notification_user_notification_id_foreign` (`notification_id`), - KEY `notification_user_user_id_foreign` (`user_id`), - CONSTRAINT `notification_user_notification_id_foreign` FOREIGN KEY (`notification_id`) REFERENCES `notifications` (`id`) ON DELETE CASCADE, - CONSTRAINT `notification_user_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `notification_user` --- - -LOCK TABLES `notification_user` WRITE; -/*!40000 ALTER TABLE `notification_user` DISABLE KEYS */; -/*!40000 ALTER TABLE `notification_user` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `notifications` --- - -DROP TABLE IF EXISTS `notifications`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `notifications` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `created_at` timestamp NULL DEFAULT NULL, - `updated_at` timestamp NULL DEFAULT NULL, - `content` varchar(255) NOT NULL, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `notifications` --- - -LOCK TABLES `notifications` WRITE; -/*!40000 ALTER TABLE `notifications` DISABLE KEYS */; -/*!40000 ALTER TABLE `notifications` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `sessions` --- - -DROP TABLE IF EXISTS `sessions`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `sessions` ( - `id` varchar(255) NOT NULL, - `user_id` bigint(20) unsigned DEFAULT NULL, - `ip_address` varchar(45) DEFAULT NULL, - `user_agent` text DEFAULT NULL, - `payload` longtext NOT NULL, - `last_activity` int(11) NOT NULL, - PRIMARY KEY (`id`), - KEY `sessions_user_id_index` (`user_id`), - KEY `sessions_last_activity_index` (`last_activity`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `sessions` --- - -LOCK TABLES `sessions` WRITE; -/*!40000 ALTER TABLE `sessions` DISABLE KEYS */; -INSERT INTO `sessions` VALUES -('6hFPozHN6KwcsaTCwjLfYBKL1TZN1jh6ViET3Qdw',1,'192.168.200.1','Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0','YTo0OntzOjY6Il90b2tlbiI7czo0MDoib0MyMTNvSWJSc1U5blVqUDkxQ3I5bW9RcDhZOXBpR2F5ZHdBUGF1USI7czo2OiJfZmxhc2giO2E6Mjp7czozOiJvbGQiO2E6MDp7fXM6MzoibmV3IjthOjA6e319czo5OiJfcHJldmlvdXMiO2E6Mjp7czozOiJ1cmwiO3M6Mjg6Imh0dHA6Ly9sb2NhbGhvc3QvYXBpL3VzZXJzLzUiO3M6NToicm91dGUiO047fXM6NTA6ImxvZ2luX3dlYl81OWJhMzZhZGRjMmIyZjk0MDE1ODBmMDE0YzdmNThlYTRlMzA5ODlkIjtpOjE7fQ==',1767803921); -/*!40000 ALTER TABLE `sessions` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `task_user` --- - -DROP TABLE IF EXISTS `task_user`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `task_user` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `task_id` bigint(20) unsigned NOT NULL, - `user_id` bigint(20) unsigned NOT NULL, - `created_at` timestamp NULL DEFAULT NULL, - `updated_at` timestamp NULL DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `task_user_task_id_foreign` (`task_id`), - KEY `task_user_user_id_foreign` (`user_id`), - CONSTRAINT `task_user_task_id_foreign` FOREIGN KEY (`task_id`) REFERENCES `tasks` (`id`) ON DELETE CASCADE, - CONSTRAINT `task_user_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `task_user` --- - -LOCK TABLES `task_user` WRITE; -/*!40000 ALTER TABLE `task_user` DISABLE KEYS */; -/*!40000 ALTER TABLE `task_user` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `tasks` --- - -DROP TABLE IF EXISTS `tasks`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `tasks` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL, - `description` varchar(255) NOT NULL, - `location` varchar(255) NOT NULL, - `start` datetime NOT NULL, - `end` datetime NOT NULL, - `max_participants` int(11) NOT NULL, - `events_id` bigint(20) unsigned NOT NULL, - `created_at` timestamp NULL DEFAULT NULL, - `updated_at` timestamp NULL DEFAULT NULL, - PRIMARY KEY (`id`), - KEY `tasks_events_id_foreign` (`events_id`), - CONSTRAINT `tasks_events_id_foreign` FOREIGN KEY (`events_id`) REFERENCES `events` (`id`) ON DELETE CASCADE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `tasks` --- - -LOCK TABLES `tasks` WRITE; -/*!40000 ALTER TABLE `tasks` DISABLE KEYS */; -/*!40000 ALTER TABLE `tasks` ENABLE KEYS */; -UNLOCK TABLES; - --- --- Table structure for table `users` --- - -DROP TABLE IF EXISTS `users`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8mb4 */; -CREATE TABLE `users` ( - `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(255) NOT NULL, - `lastname` varchar(255) NOT NULL, - `email` varchar(255) NOT NULL, - `password` varchar(255) NOT NULL, - `phone` varchar(255) DEFAULT NULL, - `validate` int(11) NOT NULL, - `role` int(11) DEFAULT NULL, - `verified_at` datetime DEFAULT NULL, - `created_at` timestamp NULL DEFAULT NULL, - `updated_at` timestamp NULL DEFAULT NULL, - `remember_token` varchar(100) DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `users_email_unique` (`email`) -) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `users` --- - -LOCK TABLES `users` WRITE; -/*!40000 ALTER TABLE `users` DISABLE KEYS */; -INSERT INTO `users` VALUES -(1,'Malo','Leblond','a@gmail.com','$2y$12$xbPw0/LtE7w8uzkk/EHxPey0vD8IrgqCwUxl8hYqGDbmrQp5dzF86','+33 7 67 87 11 11',1,NULL,NULL,'2026-01-05 08:35:22','2026-01-05 08:35:22','FsnEvcbRjNXNd2W0JhD535V6OIJKWl6WWHgfNAjwDvwrNKzSX5Wzv5h5J5nq'), -(2,'user2','user','b@gmail.com','$2y$12$pg2rdRW3gTw7BMC0l/PVIud719YTuspoGapfNNWmOx1JXb7sVbitq','+33 7 55 55 55 55',0,NULL,NULL,'2026-01-05 10:00:58','2026-01-05 10:00:58',NULL), -(4,'compte1','sjs','1@gmail.com','$2y$12$ct4u8kOHqKg9ona.KzrjLuHFZfgkSsG3xQPFkAjoLnBy9hoUa/U4O','+33 9 88 88 88 88',0,NULL,NULL,'2026-01-07 15:06:07','2026-01-07 15:06:07',NULL), -(5,'compte2','sknssk','2@gmail.com','$2y$12$CsTLO8A0a4nRaiRBNEOn5O5gLas3ortE.zkT/91XX5OjIp.tKBa6q','+33 855 55 55 55',0,NULL,NULL,'2026-01-07 15:06:41','2026-01-07 15:06:41',NULL); -/*!40000 ALTER TABLE `users` ENABLE KEYS */; -UNLOCK TABLES; -/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; - -/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; -/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; -/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; -/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; -/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; -/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; -/*M!100616 SET NOTE_VERBOSITY=@OLD_NOTE_VERBOSITY */; - --- Dump completed on 2026-01-09 8:30:01 diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml deleted file mode 100644 index b00ced6..0000000 --- a/docker/docker-compose.yml +++ /dev/null @@ -1,84 +0,0 @@ -version: "3.8" - -services: - php: - build: - context: . - dockerfile: ./php/Dockerfile - container_name: app-php - extra_hosts: - - "host.docker.internal:host-gateway" - volumes: - - ../:/var/www/app - environment: - - GIT_TOKEN=${GIT_TOKEN} - - GIT_REPO=${GIT_REPO} - depends_on: - - mariadb - - - nginx: - image: nginx - container_name: app-nginx - volumes: - - ../:/var/www/app - - ./nginx/default.conf:/etc/nginx/conf.d/default.conf - ports: - - "80:80" - depends_on: - - php - - mariadb: - image: mariadb:latest - environment: - MYSQL_ROOT_PASSWORD: root - MYSQL_DATABASE: laravel - ports: - - "3306:3306" - volumes: - - dbdata:/var/lib/mysql - - - typesense: - image: typesense/typesense:29.0 - restart: on-failure - ports: - - "8108:8108" - volumes: - - typesense-data:/data - command: '--data-dir /data --api-key=xyz --enable-cors' - - backup: - build: - context: . - dockerfile: ./backup/Dockerfile - container_name: app-backup - volumes: - - ./backups:/backups - depends_on: - - mariadb - restart: unless-stopped - - reverb: - build: - context: . - dockerfile: ./php/Dockerfile - container_name: app-reverb - command: php artisan reverb:start --host=0.0.0.0 --port=8080 - volumes: - - ../:/var/www/app - ports: - - "8080:8080" - depends_on: - - php - - mariadb - -volumes: - dbdata: - typesense-data: - -networks: - default: - ipam: - config: - - subnet: 192.168.200.0/24 diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh deleted file mode 100644 index 33a3b78..0000000 --- a/docker/entrypoint.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -APP_DIR=/var/www/app - -if [ ! -d "$APP_DIR/.git" ]; then - git clone https://oauth2:${GIT_TOKEN}@${GIT_REPO} $APP_DIR -else - cd $APP_DIR - git pull -fi - -cd $APP_DIR - -mkdir -p storage bootstrap/cache -chown -R www-data:www-data storage bootstrap/cache -chmod -R 775 storage bootstrap/cache - -composer install --no-interaction --prefer-dist - -exec "$@" diff --git a/docker/nginx/default.conf b/docker/nginx/default.conf deleted file mode 100644 index a63bf51..0000000 --- a/docker/nginx/default.conf +++ /dev/null @@ -1,20 +0,0 @@ -server { - listen 80; - server_name 127.0.0.1; - - root /var/www/app/public; - index index.php index.html; - - location / { - try_files $uri $uri/ /index.php?$query_string; - } - - location ~ \.php$ { - include fastcgi_params; - fastcgi_pass php:9000; - fastcgi_index index.php; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param SERVER_NAME 127.0.0.1; - fastcgi_param HTTPS off; - } -} diff --git a/docker/php/Dockerfile b/docker/php/Dockerfile deleted file mode 100644 index 2ad886d..0000000 --- a/docker/php/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM php:8.4-fpm - -RUN apt-get update && apt-get install -y \ - git unzip libzip-dev libpng-dev libonig-dev \ - && docker-php-ext-install pdo_mysql zip pcntl - -COPY --from=composer:2 /usr/bin/composer /usr/bin/composer - -COPY ./entrypoint.sh /usr/local/bin/entrypoint.sh -RUN chmod +x /usr/local/bin/entrypoint.sh - -WORKDIR /var/www/app - -ENTRYPOINT ["entrypoint.sh"] -CMD ["php-fpm"] From 32341b0311cae2349f14247c8195de70b8017441 Mon Sep 17 00:00:00 2001 From: Giovanni-Josserand Date: Tue, 27 Jan 2026 14:36:43 +0100 Subject: [PATCH 02/21] update .env.example --- .env.example | 3 --- 1 file changed, 3 deletions(-) diff --git a/.env.example b/.env.example index c1ff976..2a27d34 100644 --- a/.env.example +++ b/.env.example @@ -1,6 +1,3 @@ -GIT_REPO= -GIT_TOKEN= - APP_NAME=Laravel APP_ENV=local APP_KEY= From d4526487ed7ca938d7056deff895c0a4e19add47 Mon Sep 17 00:00:00 2001 From: Giovanni-Josserand Date: Fri, 30 Jan 2026 17:34:43 +0100 Subject: [PATCH 03/21] test public --- .env.example | 79 ------------------------------- .gitignore | 3 ++ README.md | 38 --------------- public/{favicon.ico => .gitkeep} | 0 public/.htaccess | 25 ---------- public/assets/index-1oYDhgBl.js | 76 ----------------------------- public/assets/index-2TOp4kWm.js | 76 ----------------------------- public/assets/index-4OUq_vxg.js | 76 ----------------------------- public/assets/index-6M3Y5nkP.js | 76 ----------------------------- public/assets/index-B3dCebGH.js | 76 ----------------------------- public/assets/index-B4rvWBwS.css | 1 - public/assets/index-B5DnEe0d.js | 76 ----------------------------- public/assets/index-B66BuXas.js | 76 ----------------------------- public/assets/index-BJkX9rSc.js | 76 ----------------------------- public/assets/index-BJwsSbH7.js | 76 ----------------------------- public/assets/index-BLddflSd.js | 76 ----------------------------- public/assets/index-BMtYBaQz.css | 1 - public/assets/index-BQNqXcS_.css | 1 - public/assets/index-BQYKakzO.js | 76 ----------------------------- public/assets/index-BQlsf5oA.css | 1 - public/assets/index-BSf7xV6j.js | 76 ----------------------------- public/assets/index-Bfpdzk6P.js | 76 ----------------------------- public/assets/index-BgMrkmww.css | 1 - public/assets/index-Bm5We1uf.js | 76 ----------------------------- public/assets/index-BvRP-kgt.js | 76 ----------------------------- public/assets/index-ByalYeqA.js | 76 ----------------------------- public/assets/index-BzdKBygo.js | 76 ----------------------------- public/assets/index-C4dsdFKD.js | 76 ----------------------------- public/assets/index-CATBc-cQ.js | 76 ----------------------------- public/assets/index-CDjhjlfD.js | 76 ----------------------------- public/assets/index-CFXQbFDr.js | 76 ----------------------------- public/assets/index-CGb94hkx.css | 1 - public/assets/index-CIWQ7fkL.js | 76 ----------------------------- public/assets/index-CIjI-TNx.js | 76 ----------------------------- public/assets/index-CKdvSQ9U.js | 76 ----------------------------- public/assets/index-CL56Lhut.css | 1 - public/assets/index-CLiyH9yH.css | 1 - public/assets/index-CMEg7UKd.js | 76 ----------------------------- public/assets/index-CNwnVkws.js | 76 ----------------------------- public/assets/index-CPRDcUp9.js | 76 ----------------------------- public/assets/index-CRrNVUJ9.js | 76 ----------------------------- public/assets/index-CWaKn317.js | 76 ----------------------------- public/assets/index-CWk17JCk.js | 76 ----------------------------- public/assets/index-CZ0yZL7w.js | 76 ----------------------------- public/assets/index-CZvaLtKa.js | 76 ----------------------------- public/assets/index-C_mG1ZTJ.js | 76 ----------------------------- public/assets/index-Ca2hRpqL.js | 76 ----------------------------- public/assets/index-CgZwBQ0p.js | 76 ----------------------------- public/assets/index-ChcHfFqo.js | 76 ----------------------------- public/assets/index-Cs6psoQN.js | 76 ----------------------------- public/assets/index-CtdWuJCB.js | 76 ----------------------------- public/assets/index-CuzfGhJL.css | 1 - public/assets/index-Cv4kaukA.css | 1 - public/assets/index-D-FiBItI.js | 76 ----------------------------- public/assets/index-D3Yn4LIw.css | 1 - public/assets/index-D5hccwDI.js | 76 ----------------------------- public/assets/index-D5o_BUYw.js | 76 ----------------------------- public/assets/index-DBM3_c2_.js | 76 ----------------------------- public/assets/index-DBz-GVvs.css | 1 - public/assets/index-DCsEUhmA.css | 1 - public/assets/index-DF2S30zy.js | 76 ----------------------------- public/assets/index-DGJVfaBG.js | 76 ----------------------------- public/assets/index-DJd7TFgz.js | 76 ----------------------------- public/assets/index-DMJNEaWY.js | 76 ----------------------------- public/assets/index-DN3ApxPq.css | 1 - public/assets/index-DQpAG6Cr.js | 76 ----------------------------- public/assets/index-DTRyE-FJ.js | 76 ----------------------------- public/assets/index-DXteuq7O.js | 76 ----------------------------- public/assets/index-DdRcXUns.js | 76 ----------------------------- public/assets/index-DiA6kHh4.js | 76 ----------------------------- public/assets/index-DkC5cLYs.js | 76 ----------------------------- public/assets/index-DnPLUDGI.css | 1 - public/assets/index-Ds7V0ATz.css | 1 - public/assets/index-DsAzPXkR.js | 76 ----------------------------- public/assets/index-DsqSAIP_.css | 1 - public/assets/index-Dy636JGR.js | 76 ----------------------------- public/assets/index-DyR9y3T_.js | 76 ----------------------------- public/assets/index-Dz-l0zVM.js | 76 ----------------------------- public/assets/index-F5-D1tpH.js | 61 ------------------------ public/assets/index-GnYt9-Uz.js | 76 ----------------------------- public/assets/index-GwhAcOZv.js | 76 ----------------------------- public/assets/index-Hf0teXvl.js | 61 ------------------------ public/assets/index-K0Ho3vqG.css | 1 - public/assets/index-Mvp4y-4K.css | 1 - public/assets/index-MvwSI0qd.js | 76 ----------------------------- public/assets/index-PWe1iwJh.js | 76 ----------------------------- public/assets/index-TqintTrS.js | 76 ----------------------------- public/assets/index-V3isPvNQ.js | 76 ----------------------------- public/assets/index-XhozbIEn.js | 76 ----------------------------- public/assets/index-ZVXi3yFG.js | 76 ----------------------------- public/assets/index-_QRXthoT.css | 1 - public/assets/index-aEAkCgtk.js | 76 ----------------------------- public/assets/index-aJsljhss.js | 76 ----------------------------- public/assets/index-bJSjdvPU.js | 76 ----------------------------- public/assets/index-d_Ujps9N.js | 76 ----------------------------- public/assets/index-kuwnq1ZQ.js | 76 ----------------------------- public/assets/index-mG6LtLIg.js | 76 ----------------------------- public/assets/index-nxm61PZa.js | 76 ----------------------------- public/assets/index-rqyCEOxE.js | 76 ----------------------------- public/assets/index-rvA2OT8-.js | 76 ----------------------------- public/assets/index-rxt4I4gf.js | 76 ----------------------------- public/assets/index-ss8VR2no.css | 1 - public/assets/index-v6wDzZKI.js | 76 ----------------------------- public/assets/index-vTWTNLiV.css | 1 - public/bell.svg | 3 -- public/close.svg | 1 - public/empty.png | Bin 80727 -> 0 bytes public/filter.svg | 1 - public/icons/pen.svg | 4 -- public/icons/settings-wheel.svg | 4 -- public/icons/theme/dark.svg | 33 ------------- public/icons/theme/light.svg | 29 ------------ public/index.php | 20 -------- public/logo.png | Bin 100732 -> 0 bytes public/logoIcone.png | Bin 51177 -> 0 bytes public/person.svg | 1 - public/react.svg | 1 - public/robots.txt | 2 - public/search.svg | 1 - public/sortByAlpha.svg | 1 - public/sortByAntiAlpha.svg | 5 -- public/timerArrowDown.svg | 1 - public/timerArrowUp.svg | 1 - public/vite.svg | 1 - 124 files changed, 3 insertions(+), 6095 deletions(-) delete mode 100644 .env.example delete mode 100644 README.md rename public/{favicon.ico => .gitkeep} (100%) delete mode 100644 public/.htaccess delete mode 100644 public/assets/index-1oYDhgBl.js delete mode 100644 public/assets/index-2TOp4kWm.js delete mode 100644 public/assets/index-4OUq_vxg.js delete mode 100644 public/assets/index-6M3Y5nkP.js delete mode 100644 public/assets/index-B3dCebGH.js delete mode 100644 public/assets/index-B4rvWBwS.css delete mode 100644 public/assets/index-B5DnEe0d.js delete mode 100644 public/assets/index-B66BuXas.js delete mode 100644 public/assets/index-BJkX9rSc.js delete mode 100644 public/assets/index-BJwsSbH7.js delete mode 100644 public/assets/index-BLddflSd.js delete mode 100644 public/assets/index-BMtYBaQz.css delete mode 100644 public/assets/index-BQNqXcS_.css delete mode 100644 public/assets/index-BQYKakzO.js delete mode 100644 public/assets/index-BQlsf5oA.css delete mode 100644 public/assets/index-BSf7xV6j.js delete mode 100644 public/assets/index-Bfpdzk6P.js delete mode 100644 public/assets/index-BgMrkmww.css delete mode 100644 public/assets/index-Bm5We1uf.js delete mode 100644 public/assets/index-BvRP-kgt.js delete mode 100644 public/assets/index-ByalYeqA.js delete mode 100644 public/assets/index-BzdKBygo.js delete mode 100644 public/assets/index-C4dsdFKD.js delete mode 100644 public/assets/index-CATBc-cQ.js delete mode 100644 public/assets/index-CDjhjlfD.js delete mode 100644 public/assets/index-CFXQbFDr.js delete mode 100644 public/assets/index-CGb94hkx.css delete mode 100644 public/assets/index-CIWQ7fkL.js delete mode 100644 public/assets/index-CIjI-TNx.js delete mode 100644 public/assets/index-CKdvSQ9U.js delete mode 100644 public/assets/index-CL56Lhut.css delete mode 100644 public/assets/index-CLiyH9yH.css delete mode 100644 public/assets/index-CMEg7UKd.js delete mode 100644 public/assets/index-CNwnVkws.js delete mode 100644 public/assets/index-CPRDcUp9.js delete mode 100644 public/assets/index-CRrNVUJ9.js delete mode 100644 public/assets/index-CWaKn317.js delete mode 100644 public/assets/index-CWk17JCk.js delete mode 100644 public/assets/index-CZ0yZL7w.js delete mode 100644 public/assets/index-CZvaLtKa.js delete mode 100644 public/assets/index-C_mG1ZTJ.js delete mode 100644 public/assets/index-Ca2hRpqL.js delete mode 100644 public/assets/index-CgZwBQ0p.js delete mode 100644 public/assets/index-ChcHfFqo.js delete mode 100644 public/assets/index-Cs6psoQN.js delete mode 100644 public/assets/index-CtdWuJCB.js delete mode 100644 public/assets/index-CuzfGhJL.css delete mode 100644 public/assets/index-Cv4kaukA.css delete mode 100644 public/assets/index-D-FiBItI.js delete mode 100644 public/assets/index-D3Yn4LIw.css delete mode 100644 public/assets/index-D5hccwDI.js delete mode 100644 public/assets/index-D5o_BUYw.js delete mode 100644 public/assets/index-DBM3_c2_.js delete mode 100644 public/assets/index-DBz-GVvs.css delete mode 100644 public/assets/index-DCsEUhmA.css delete mode 100644 public/assets/index-DF2S30zy.js delete mode 100644 public/assets/index-DGJVfaBG.js delete mode 100644 public/assets/index-DJd7TFgz.js delete mode 100644 public/assets/index-DMJNEaWY.js delete mode 100644 public/assets/index-DN3ApxPq.css delete mode 100644 public/assets/index-DQpAG6Cr.js delete mode 100644 public/assets/index-DTRyE-FJ.js delete mode 100644 public/assets/index-DXteuq7O.js delete mode 100644 public/assets/index-DdRcXUns.js delete mode 100644 public/assets/index-DiA6kHh4.js delete mode 100644 public/assets/index-DkC5cLYs.js delete mode 100644 public/assets/index-DnPLUDGI.css delete mode 100644 public/assets/index-Ds7V0ATz.css delete mode 100644 public/assets/index-DsAzPXkR.js delete mode 100644 public/assets/index-DsqSAIP_.css delete mode 100644 public/assets/index-Dy636JGR.js delete mode 100644 public/assets/index-DyR9y3T_.js delete mode 100644 public/assets/index-Dz-l0zVM.js delete mode 100644 public/assets/index-F5-D1tpH.js delete mode 100644 public/assets/index-GnYt9-Uz.js delete mode 100644 public/assets/index-GwhAcOZv.js delete mode 100644 public/assets/index-Hf0teXvl.js delete mode 100644 public/assets/index-K0Ho3vqG.css delete mode 100644 public/assets/index-Mvp4y-4K.css delete mode 100644 public/assets/index-MvwSI0qd.js delete mode 100644 public/assets/index-PWe1iwJh.js delete mode 100644 public/assets/index-TqintTrS.js delete mode 100644 public/assets/index-V3isPvNQ.js delete mode 100644 public/assets/index-XhozbIEn.js delete mode 100644 public/assets/index-ZVXi3yFG.js delete mode 100644 public/assets/index-_QRXthoT.css delete mode 100644 public/assets/index-aEAkCgtk.js delete mode 100644 public/assets/index-aJsljhss.js delete mode 100644 public/assets/index-bJSjdvPU.js delete mode 100644 public/assets/index-d_Ujps9N.js delete mode 100644 public/assets/index-kuwnq1ZQ.js delete mode 100644 public/assets/index-mG6LtLIg.js delete mode 100644 public/assets/index-nxm61PZa.js delete mode 100644 public/assets/index-rqyCEOxE.js delete mode 100644 public/assets/index-rvA2OT8-.js delete mode 100644 public/assets/index-rxt4I4gf.js delete mode 100644 public/assets/index-ss8VR2no.css delete mode 100644 public/assets/index-v6wDzZKI.js delete mode 100644 public/assets/index-vTWTNLiV.css delete mode 100644 public/bell.svg delete mode 100644 public/close.svg delete mode 100644 public/empty.png delete mode 100644 public/filter.svg delete mode 100644 public/icons/pen.svg delete mode 100644 public/icons/settings-wheel.svg delete mode 100644 public/icons/theme/dark.svg delete mode 100644 public/icons/theme/light.svg delete mode 100644 public/index.php delete mode 100644 public/logo.png delete mode 100644 public/logoIcone.png delete mode 100644 public/person.svg delete mode 100644 public/react.svg delete mode 100644 public/robots.txt delete mode 100644 public/search.svg delete mode 100644 public/sortByAlpha.svg delete mode 100644 public/sortByAntiAlpha.svg delete mode 100644 public/timerArrowDown.svg delete mode 100644 public/timerArrowUp.svg delete mode 100644 public/vite.svg diff --git a/.env.example b/.env.example deleted file mode 100644 index 2a27d34..0000000 --- a/.env.example +++ /dev/null @@ -1,79 +0,0 @@ -APP_NAME=Laravel -APP_ENV=local -APP_KEY= -APP_DEBUG=true -APP_URL=http://localhost:8000 - -APP_LOCALE=en -APP_FALLBACK_LOCALE=en -APP_FAKER_LOCALE=en_US - -APP_MAINTENANCE_DRIVER=file -# APP_MAINTENANCE_STORE=database - -PHP_CLI_SERVER_WORKERS=4 - -BCRYPT_ROUNDS=12 - -LOG_CHANNEL=stack -LOG_STACK=single -LOG_DEPRECATIONS_CHANNEL=null -LOG_LEVEL=debug - -DB_CONNECTION=mysql -DB_HOST=mariadb -DB_PORT=3306 -DB_DATABASE=laravel -DB_USERNAME=root -DB_PASSWORD=root - -SESSION_DRIVER=database -SESSION_LIFETIME=120 -SESSION_ENCRYPT=false -SESSION_PATH=/ -SESSION_DOMAIN=localhost -SESSION_SECURE_COOKIE=false - -BROADCAST_CONNECTION=reverb -REVERB_APP_ID=local -REVERB_APP_KEY=local -REVERB_APP_SECRET=local -REVERB_HOST=reverb -REVERB_PORT=8080 -REVERB_SCHEME=http -PUSHER_APP_CLUSTER="mt1" - -CACHE_STORE=file -QUEUE_CONNECTION=sync - -FILESYSTEM_DISK=local -# CACHE_PREFIX= - -MEMCACHED_HOST=127.0.0.1 - -REDIS_CLIENT=phpredis -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=log -MAIL_SCHEME=null -MAIL_HOST=127.0.0.1 -MAIL_PORT=2525 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_FROM_ADDRESS="hello@example.com" -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= -AWS_USE_PATH_STYLE_ENDPOINT=false - -VITE_APP_NAME="${APP_NAME}" - -SANCTUM_STATEFUL_DOMAINS=localhost,127.0.0.1,localhost:8000 - -TYPESENSE_CONNECTION=typesense -TYPESENSE_API_KEY=xyz diff --git a/.gitignore b/.gitignore index b71b1ea..eb9c5c9 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ Homestead.json Homestead.yaml Thumbs.db + +/public/* +!/public/.gitkeep diff --git a/README.md b/README.md deleted file mode 100644 index 471be1e..0000000 --- a/README.md +++ /dev/null @@ -1,38 +0,0 @@ -

Laravel Logo

- -[Frontend repository](https://iutbg-gitlab.iutbourg.univ-lyon1.fr/sae-but2/2025-26/gestion-benevoles-association/Frontend) - -# Gestion des bénévoles d'une association - -## Installation - -- [Installer Laravel](https://laravel.com/docs/12.x#installing-php) -- Configurer le projet - - Renommer le fichier `.env.example` en `.env` - - Remplir le `APP_KEY` dans `.env` - - Remplir les paramètres de connexion à la base de données - -Exemple configuration base de donnée (.env) - - DB_CONNECTION=mariadb - DB_HOST=127.0.0.1 - DB_PORT=3306 - DB_DATABASE=sae - DB_USERNAME=root - DB_PASSWORD=root - - - -## Installation avec Docker - -- Installer Docker -- Lancer les commandes depuis la racine du projet: -``` -docker compose down -v -docker compose up --build -d -docker exec app-php php artisan key:generate -docker exec app-php php artisan migrate -``` - -docker compose stop -docker compose start diff --git a/public/favicon.ico b/public/.gitkeep similarity index 100% rename from public/favicon.ico rename to public/.gitkeep diff --git a/public/.htaccess b/public/.htaccess deleted file mode 100644 index b574a59..0000000 --- a/public/.htaccess +++ /dev/null @@ -1,25 +0,0 @@ - - - Options -MultiViews -Indexes - - - RewriteEngine On - - # Handle Authorization Header - RewriteCond %{HTTP:Authorization} . - RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] - - # Handle X-XSRF-Token Header - RewriteCond %{HTTP:x-xsrf-token} . - RewriteRule .* - [E=HTTP_X_XSRF_TOKEN:%{HTTP:X-XSRF-Token}] - - # Redirect Trailing Slashes If Not A Folder... - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_URI} (.+)/$ - RewriteRule ^ %1 [L,R=301] - - # Send Requests To Front Controller... - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^ index.php [L] - diff --git a/public/assets/index-1oYDhgBl.js b/public/assets/index-1oYDhgBl.js deleted file mode 100644 index 9eda043..0000000 --- a/public/assets/index-1oYDhgBl.js +++ /dev/null @@ -1,76 +0,0 @@ -function u_(a,n){for(var l=0;ls[o]})}}}return Object.freeze(Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}))}(function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const c of o)if(c.type==="childList")for(const u of c.addedNodes)u.tagName==="LINK"&&u.rel==="modulepreload"&&s(u)}).observe(document,{childList:!0,subtree:!0});function l(o){const c={};return o.integrity&&(c.integrity=o.integrity),o.referrerPolicy&&(c.referrerPolicy=o.referrerPolicy),o.crossOrigin==="use-credentials"?c.credentials="include":o.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function s(o){if(o.ep)return;o.ep=!0;const c=l(o);fetch(o.href,c)}})();function f_(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var wf={exports:{}},Ds={};/** - * @license React - * react-jsx-runtime.production.js - * - * 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. - */var dp;function d_(){if(dp)return Ds;dp=1;var a=Symbol.for("react.transitional.element"),n=Symbol.for("react.fragment");function l(s,o,c){var u=null;if(c!==void 0&&(u=""+c),o.key!==void 0&&(u=""+o.key),"key"in o){c={};for(var h in o)h!=="key"&&(c[h]=o[h])}else c=o;return o=c.ref,{$$typeof:a,type:s,key:u,ref:o!==void 0?o:null,props:c}}return Ds.Fragment=n,Ds.jsx=l,Ds.jsxs=l,Ds}var hp;function h_(){return hp||(hp=1,wf.exports=d_()),wf.exports}var x=h_(),zf={exports:{}},Ct={};/** - * @license React - * react.production.js - * - * 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. - */var mp;function m_(){if(mp)return Ct;mp=1;var a=Symbol.for("react.transitional.element"),n=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),o=Symbol.for("react.profiler"),c=Symbol.for("react.consumer"),u=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),g=Symbol.for("react.memo"),v=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),_=Symbol.iterator;function S(T){return T===null||typeof T!="object"?null:(T=_&&T[_]||T["@@iterator"],typeof T=="function"?T:null)}var O={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},U=Object.assign,k={};function Y(T,V,F){this.props=T,this.context=V,this.refs=k,this.updater=F||O}Y.prototype.isReactComponent={},Y.prototype.setState=function(T,V){if(typeof T!="object"&&typeof T!="function"&&T!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,T,V,"setState")},Y.prototype.forceUpdate=function(T){this.updater.enqueueForceUpdate(this,T,"forceUpdate")};function A(){}A.prototype=Y.prototype;function X(T,V,F){this.props=T,this.context=V,this.refs=k,this.updater=F||O}var P=X.prototype=new A;P.constructor=X,U(P,Y.prototype),P.isPureReactComponent=!0;var J=Array.isArray;function rt(){}var D={H:null,A:null,T:null,S:null},nt=Object.prototype.hasOwnProperty;function at(T,V,F){var et=F.ref;return{$$typeof:a,type:T,key:V,ref:et!==void 0?et:null,props:F}}function pt(T,V){return at(T.type,V,T.props)}function ft(T){return typeof T=="object"&&T!==null&&T.$$typeof===a}function xt(T){var V={"=":"=0",":":"=2"};return"$"+T.replace(/[=:]/g,function(F){return V[F]})}var Mt=/\/+/g;function St(T,V){return typeof T=="object"&&T!==null&&T.key!=null?xt(""+T.key):V.toString(36)}function ot(T){switch(T.status){case"fulfilled":return T.value;case"rejected":throw T.reason;default:switch(typeof T.status=="string"?T.then(rt,rt):(T.status="pending",T.then(function(V){T.status==="pending"&&(T.status="fulfilled",T.value=V)},function(V){T.status==="pending"&&(T.status="rejected",T.reason=V)})),T.status){case"fulfilled":return T.value;case"rejected":throw T.reason}}throw T}function j(T,V,F,et,ht){var bt=typeof T;(bt==="undefined"||bt==="boolean")&&(T=null);var Lt=!1;if(T===null)Lt=!0;else switch(bt){case"bigint":case"string":case"number":Lt=!0;break;case"object":switch(T.$$typeof){case a:case n:Lt=!0;break;case v:return Lt=T._init,j(Lt(T._payload),V,F,et,ht)}}if(Lt)return ht=ht(T),Lt=et===""?"."+St(T,0):et,J(ht)?(F="",Lt!=null&&(F=Lt.replace(Mt,"$&/")+"/"),j(ht,V,F,"",function(oi){return oi})):ht!=null&&(ft(ht)&&(ht=pt(ht,F+(ht.key==null||T&&T.key===ht.key?"":(""+ht.key).replace(Mt,"$&/")+"/")+Lt)),V.push(ht)),1;Lt=0;var ue=et===""?".":et+":";if(J(T))for(var ae=0;ae>>1,Et=j[dt];if(0>>1;dto(F,W))eto(ht,F)?(j[dt]=ht,j[et]=W,dt=et):(j[dt]=F,j[V]=W,dt=V);else if(eto(ht,W))j[dt]=ht,j[et]=W,dt=et;else break t}}return Z}function o(j,Z){var W=j.sortIndex-Z.sortIndex;return W!==0?W:j.id-Z.id}if(a.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var c=performance;a.unstable_now=function(){return c.now()}}else{var u=Date,h=u.now();a.unstable_now=function(){return u.now()-h}}var m=[],g=[],v=1,y=null,_=3,S=!1,O=!1,U=!1,k=!1,Y=typeof setTimeout=="function"?setTimeout:null,A=typeof clearTimeout=="function"?clearTimeout:null,X=typeof setImmediate<"u"?setImmediate:null;function P(j){for(var Z=l(g);Z!==null;){if(Z.callback===null)s(g);else if(Z.startTime<=j)s(g),Z.sortIndex=Z.expirationTime,n(m,Z);else break;Z=l(g)}}function J(j){if(U=!1,P(j),!O)if(l(m)!==null)O=!0,rt||(rt=!0,xt());else{var Z=l(g);Z!==null&&ot(J,Z.startTime-j)}}var rt=!1,D=-1,nt=5,at=-1;function pt(){return k?!0:!(a.unstable_now()-atj&&pt());){var dt=y.callback;if(typeof dt=="function"){y.callback=null,_=y.priorityLevel;var Et=dt(y.expirationTime<=j);if(j=a.unstable_now(),typeof Et=="function"){y.callback=Et,P(j),Z=!0;break e}y===l(m)&&s(m),P(j)}else s(m);y=l(m)}if(y!==null)Z=!0;else{var T=l(g);T!==null&&ot(J,T.startTime-j),Z=!1}}break t}finally{y=null,_=W,S=!1}Z=void 0}}finally{Z?xt():rt=!1}}}var xt;if(typeof X=="function")xt=function(){X(ft)};else if(typeof MessageChannel<"u"){var Mt=new MessageChannel,St=Mt.port2;Mt.port1.onmessage=ft,xt=function(){St.postMessage(null)}}else xt=function(){Y(ft,0)};function ot(j,Z){D=Y(function(){j(a.unstable_now())},Z)}a.unstable_IdlePriority=5,a.unstable_ImmediatePriority=1,a.unstable_LowPriority=4,a.unstable_NormalPriority=3,a.unstable_Profiling=null,a.unstable_UserBlockingPriority=2,a.unstable_cancelCallback=function(j){j.callback=null},a.unstable_forceFrameRate=function(j){0>j||125dt?(j.sortIndex=W,n(g,j),l(m)===null&&j===l(g)&&(U?(A(D),D=-1):U=!0,ot(J,W-dt))):(j.sortIndex=Et,n(m,j),O||S||(O=!0,rt||(rt=!0,xt()))),j},a.unstable_shouldYield=pt,a.unstable_wrapCallback=function(j){var Z=_;return function(){var W=_;_=Z;try{return j.apply(this,arguments)}finally{_=W}}}})(jf)),jf}var vp;function y_(){return vp||(vp=1,Af.exports=v_()),Af.exports}var Nf={exports:{}},je={};/** - * @license React - * react-dom.production.js - * - * 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. - */var yp;function b_(){if(yp)return je;yp=1;var a=sd();function n(m){var g="https://react.dev/errors/"+m;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(n){console.error(n)}}return a(),Nf.exports=b_(),Nf.exports}/** - * @license React - * react-dom-client.production.js - * - * 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. - */var _p;function __(){if(_p)return Os;_p=1;var a=y_(),n=sd(),l=Wv();function s(t){var e="https://react.dev/errors/"+t;if(1Et||(t.current=dt[Et],dt[Et]=null,Et--)}function F(t,e){Et++,dt[Et]=t.current,t.current=e}var et=T(null),ht=T(null),bt=T(null),Lt=T(null);function ue(t,e){switch(F(bt,e),F(ht,t),F(et,null),e.nodeType){case 9:case 11:t=(t=e.documentElement)&&(t=t.namespaceURI)?Lg(t):0;break;default:if(t=e.tagName,e=e.namespaceURI)e=Lg(e),t=Bg(e,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}V(et),F(et,t)}function ae(){V(et),V(ht),V(bt)}function oi(t){t.memoizedState!==null&&F(Lt,t);var e=et.current,i=Bg(e,t.type);e!==i&&(F(ht,t),F(et,i))}function qi(t){ht.current===t&&(V(et),V(ht)),Lt.current===t&&(V(Lt),Es._currentValue=W)}var ge,Pn;function Hn(t){if(ge===void 0)try{throw Error()}catch(i){var e=i.stack.trim().match(/\n( *(at )?)/);ge=e&&e[1]||"",Pn=-1)":-1f||E[r]!==L[f]){var G=` -`+E[r].replace(" at new "," at ");return t.displayName&&G.includes("")&&(G=G.replace("",t.displayName)),G}while(1<=r&&0<=f);break}}}finally{jl=!1,Error.prepareStackTrace=i}return(i=t?t.displayName||t.name:"")?Hn(i):""}function mc(t,e){switch(t.tag){case 26:case 27:case 5:return Hn(t.type);case 16:return Hn("Lazy");case 13:return t.child!==e&&e!==null?Hn("Suspense Fallback"):Hn("Suspense");case 19:return Hn("SuspenseList");case 0:case 15:return On(t.type,!1);case 11:return On(t.type.render,!1);case 1:return On(t.type,!0);case 31:return Hn("Activity");default:return""}}function rr(t){try{var e="",i=null;do e+=mc(t,i),i=t,t=t.return;while(t);return e}catch(r){return` -Error generating stack: `+r.message+` -`+r.stack}}var Vi=Object.prototype.hasOwnProperty,Nl=a.unstable_scheduleCallback,Ll=a.unstable_cancelCallback,gc=a.unstable_shouldYield,pc=a.unstable_requestPaint,fe=a.unstable_now,ci=a.unstable_getCurrentPriorityLevel,Bl=a.unstable_ImmediatePriority,Xi=a.unstable_UserBlockingPriority,Ye=a.unstable_NormalPriority,wn=a.unstable_LowPriority,Ul=a.unstable_IdlePriority,vc=a.log,Hl=a.unstable_setDisableYieldValue,ui=null,ie=null;function zn(t){if(typeof vc=="function"&&Hl(t),ie&&typeof ie.setStrictMode=="function")try{ie.setStrictMode(ui,t)}catch{}}var Ae=Math.clz32?Math.clz32:cr,or=Math.log,yc=Math.LN2;function cr(t){return t>>>=0,t===0?32:31-(or(t)/yc|0)|0}var Wn=256,fi=262144,Sa=4194304;function In(t){var e=t&42;if(e!==0)return e;switch(t&-t){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function di(t,e,i){var r=t.pendingLanes;if(r===0)return 0;var f=0,d=t.suspendedLanes,p=t.pingedLanes;t=t.warmLanes;var b=r&134217727;return b!==0?(r=b&~d,r!==0?f=In(r):(p&=b,p!==0?f=In(p):i||(i=b&~t,i!==0&&(f=In(i))))):(b=r&~d,b!==0?f=In(b):p!==0?f=In(p):i||(i=r&~t,i!==0&&(f=In(i)))),f===0?0:e!==0&&e!==f&&(e&d)===0&&(d=f&-f,i=e&-e,d>=i||d===32&&(i&4194048)!==0)?e:f}function hi(t,e){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&e)===0}function ur(t,e){switch(t){case 1:case 2:case 4:case 8:case 64:return e+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function mi(){var t=Sa;return Sa<<=1,(Sa&62914560)===0&&(Sa=4194304),t}function Ea(t){for(var e=[],i=0;31>i;i++)e.push(t);return e}function Ma(t,e){t.pendingLanes|=e,e!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function bc(t,e,i,r,f,d){var p=t.pendingLanes;t.pendingLanes=i,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=i,t.entangledLanes&=i,t.errorRecoveryDisabledLanes&=i,t.shellSuspendCounter=0;var b=t.entanglements,E=t.expirationTimes,L=t.hiddenUpdates;for(i=p&~i;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var i0=/[\n"\\]/g;function hn(t){return t.replace(i0,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function Sc(t,e,i,r,f,d,p,b){t.name="",p!=null&&typeof p!="function"&&typeof p!="symbol"&&typeof p!="boolean"?t.type=p:t.removeAttribute("type"),e!=null?p==="number"?(e===0&&t.value===""||t.value!=e)&&(t.value=""+Ce(e)):t.value!==""+Ce(e)&&(t.value=""+Ce(e)):p!=="submit"&&p!=="reset"||t.removeAttribute("value"),e!=null?Ec(t,p,Ce(e)):i!=null?Ec(t,p,Ce(i)):r!=null&&t.removeAttribute("value"),f==null&&d!=null&&(t.defaultChecked=!!d),f!=null&&(t.checked=f&&typeof f!="function"&&typeof f!="symbol"),b!=null&&typeof b!="function"&&typeof b!="symbol"&&typeof b!="boolean"?t.name=""+Ce(b):t.removeAttribute("name")}function wd(t,e,i,r,f,d,p,b){if(d!=null&&typeof d!="function"&&typeof d!="symbol"&&typeof d!="boolean"&&(t.type=d),e!=null||i!=null){if(!(d!=="submit"&&d!=="reset"||e!=null)){xc(t);return}i=i!=null?""+Ce(i):"",e=e!=null?""+Ce(e):i,b||e===t.value||(t.value=e),t.defaultValue=e}r=r??f,r=typeof r!="function"&&typeof r!="symbol"&&!!r,t.checked=b?t.checked:!!r,t.defaultChecked=!!r,p!=null&&typeof p!="function"&&typeof p!="symbol"&&typeof p!="boolean"&&(t.name=p),xc(t)}function Ec(t,e,i){e==="number"&&dr(t.ownerDocument)===t||t.defaultValue===""+i||(t.defaultValue=""+i)}function Qi(t,e,i,r){if(t=t.options,e){e={};for(var f=0;f"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Oc=!1;if(ea)try{var ql={};Object.defineProperty(ql,"passive",{get:function(){Oc=!0}}),window.addEventListener("test",ql,ql),window.removeEventListener("test",ql,ql)}catch{Oc=!1}var Ca=null,wc=null,mr=null;function Bd(){if(mr)return mr;var t,e=wc,i=e.length,r,f="value"in Ca?Ca.value:Ca.textContent,d=f.length;for(t=0;t=Gl),Vd=" ",Xd=!1;function Gd(t,e){switch(t){case"keyup":return A0.indexOf(e.keyCode)!==-1;case"keydown":return e.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function $d(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var Ji=!1;function N0(t,e){switch(t){case"compositionend":return $d(e);case"keypress":return e.which!==32?null:(Xd=!0,Vd);case"textInput":return t=e.data,t===Vd&&Xd?null:t;default:return null}}function L0(t,e){if(Ji)return t==="compositionend"||!Nc&&Gd(t,e)?(t=Bd(),mr=wc=Ca=null,Ji=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(e.ctrlKey||e.altKey||e.metaKey)||e.ctrlKey&&e.altKey){if(e.char&&1=e)return{node:i,offset:e-t};t=r}t:{for(;i;){if(i.nextSibling){i=i.nextSibling;break t}i=i.parentNode}i=void 0}i=Id(i)}}function eh(t,e){return t&&e?t===e?!0:t&&t.nodeType===3?!1:e&&e.nodeType===3?eh(t,e.parentNode):"contains"in t?t.contains(e):t.compareDocumentPosition?!!(t.compareDocumentPosition(e)&16):!1:!1}function nh(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var e=dr(t.document);e instanceof t.HTMLIFrameElement;){try{var i=typeof e.contentWindow.location.href=="string"}catch{i=!1}if(i)t=e.contentWindow;else break;e=dr(t.document)}return e}function Uc(t){var e=t&&t.nodeName&&t.nodeName.toLowerCase();return e&&(e==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||e==="textarea"||t.contentEditable==="true")}var X0=ea&&"documentMode"in document&&11>=document.documentMode,Pi=null,Hc=null,Kl=null,kc=!1;function ah(t,e,i){var r=i.window===i?i.document:i.nodeType===9?i:i.ownerDocument;kc||Pi==null||Pi!==dr(r)||(r=Pi,"selectionStart"in r&&Uc(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Kl&&Zl(Kl,r)||(Kl=r,r=ro(Hc,"onSelect"),0>=p,f-=p,kn=1<<32-Ae(e)+f|i<Dt?(Nt=ct,ct=null):Nt=ct.sibling;var Vt=B(z,ct,N[Dt],$);if(Vt===null){ct===null&&(ct=Nt);break}t&&ct&&Vt.alternate===null&&e(z,ct),w=d(Vt,w,Dt),qt===null?yt=Vt:qt.sibling=Vt,qt=Vt,ct=Nt}if(Dt===N.length)return i(z,ct),Ut&&aa(z,Dt),yt;if(ct===null){for(;DtDt?(Nt=ct,ct=null):Nt=ct.sibling;var Za=B(z,ct,Vt.value,$);if(Za===null){ct===null&&(ct=Nt);break}t&&ct&&Za.alternate===null&&e(z,ct),w=d(Za,w,Dt),qt===null?yt=Za:qt.sibling=Za,qt=Za,ct=Nt}if(Vt.done)return i(z,ct),Ut&&aa(z,Dt),yt;if(ct===null){for(;!Vt.done;Dt++,Vt=N.next())Vt=Q(z,Vt.value,$),Vt!==null&&(w=d(Vt,w,Dt),qt===null?yt=Vt:qt.sibling=Vt,qt=Vt);return Ut&&aa(z,Dt),yt}for(ct=r(ct);!Vt.done;Dt++,Vt=N.next())Vt=q(ct,z,Dt,Vt.value,$),Vt!==null&&(t&&Vt.alternate!==null&&ct.delete(Vt.key===null?Dt:Vt.key),w=d(Vt,w,Dt),qt===null?yt=Vt:qt.sibling=Vt,qt=Vt);return t&&ct.forEach(function(c_){return e(z,c_)}),Ut&&aa(z,Dt),yt}function Jt(z,w,N,$){if(typeof N=="object"&&N!==null&&N.type===U&&N.key===null&&(N=N.props.children),typeof N=="object"&&N!==null){switch(N.$$typeof){case S:t:{for(var yt=N.key;w!==null;){if(w.key===yt){if(yt=N.type,yt===U){if(w.tag===7){i(z,w.sibling),$=f(w,N.props.children),$.return=z,z=$;break t}}else if(w.elementType===yt||typeof yt=="object"&&yt!==null&&yt.$$typeof===nt&&Ci(yt)===w.type){i(z,w.sibling),$=f(w,N.props),ts($,N),$.return=z,z=$;break t}i(z,w);break}else e(z,w);w=w.sibling}N.type===U?($=_i(N.props.children,z.mode,$,N.key),$.return=z,z=$):($=Mr(N.type,N.key,N.props,null,z.mode,$),ts($,N),$.return=z,z=$)}return p(z);case O:t:{for(yt=N.key;w!==null;){if(w.key===yt)if(w.tag===4&&w.stateNode.containerInfo===N.containerInfo&&w.stateNode.implementation===N.implementation){i(z,w.sibling),$=f(w,N.children||[]),$.return=z,z=$;break t}else{i(z,w);break}else e(z,w);w=w.sibling}$=Qc(N,z.mode,$),$.return=z,z=$}return p(z);case nt:return N=Ci(N),Jt(z,w,N,$)}if(ot(N))return st(z,w,N,$);if(xt(N)){if(yt=xt(N),typeof yt!="function")throw Error(s(150));return N=yt.call(N),_t(z,w,N,$)}if(typeof N.then=="function")return Jt(z,w,Rr(N),$);if(N.$$typeof===X)return Jt(z,w,Dr(z,N),$);Ar(z,N)}return typeof N=="string"&&N!==""||typeof N=="number"||typeof N=="bigint"?(N=""+N,w!==null&&w.tag===6?(i(z,w.sibling),$=f(w,N),$.return=z,z=$):(i(z,w),$=$c(N,z.mode,$),$.return=z,z=$),p(z)):i(z,w)}return function(z,w,N,$){try{Il=0;var yt=Jt(z,w,N,$);return ol=null,yt}catch(ct){if(ct===rl||ct===wr)throw ct;var qt=nn(29,ct,null,z.mode);return qt.lanes=$,qt.return=z,qt}finally{}}}var Di=Th(!0),Dh=Th(!1),za=!1;function iu(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function lu(t,e){t=t.updateQueue,e.updateQueue===t&&(e.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function Ra(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function Aa(t,e,i){var r=t.updateQueue;if(r===null)return null;if(r=r.shared,(Xt&2)!==0){var f=r.pending;return f===null?e.next=e:(e.next=f.next,f.next=e),r.pending=e,e=Er(t),uh(t,null,i),e}return Sr(t,r,e,i),Er(t)}function es(t,e,i){if(e=e.updateQueue,e!==null&&(e=e.shared,(i&4194048)!==0)){var r=e.lanes;r&=t.pendingLanes,i|=r,e.lanes=i,M(t,i)}}function su(t,e){var i=t.updateQueue,r=t.alternate;if(r!==null&&(r=r.updateQueue,i===r)){var f=null,d=null;if(i=i.firstBaseUpdate,i!==null){do{var p={lane:i.lane,tag:i.tag,payload:i.payload,callback:null,next:null};d===null?f=d=p:d=d.next=p,i=i.next}while(i!==null);d===null?f=d=e:d=d.next=e}else f=d=e;i={baseState:r.baseState,firstBaseUpdate:f,lastBaseUpdate:d,shared:r.shared,callbacks:r.callbacks},t.updateQueue=i;return}t=i.lastBaseUpdate,t===null?i.firstBaseUpdate=e:t.next=e,i.lastBaseUpdate=e}var ru=!1;function ns(){if(ru){var t=sl;if(t!==null)throw t}}function as(t,e,i,r){ru=!1;var f=t.updateQueue;za=!1;var d=f.firstBaseUpdate,p=f.lastBaseUpdate,b=f.shared.pending;if(b!==null){f.shared.pending=null;var E=b,L=E.next;E.next=null,p===null?d=L:p.next=L,p=E;var G=t.alternate;G!==null&&(G=G.updateQueue,b=G.lastBaseUpdate,b!==p&&(b===null?G.firstBaseUpdate=L:b.next=L,G.lastBaseUpdate=E))}if(d!==null){var Q=f.baseState;p=0,G=L=E=null,b=d;do{var B=b.lane&-536870913,q=B!==b.lane;if(q?(jt&B)===B:(r&B)===B){B!==0&&B===ll&&(ru=!0),G!==null&&(G=G.next={lane:0,tag:b.tag,payload:b.payload,callback:null,next:null});t:{var st=t,_t=b;B=e;var Jt=i;switch(_t.tag){case 1:if(st=_t.payload,typeof st=="function"){Q=st.call(Jt,Q,B);break t}Q=st;break t;case 3:st.flags=st.flags&-65537|128;case 0:if(st=_t.payload,B=typeof st=="function"?st.call(Jt,Q,B):st,B==null)break t;Q=y({},Q,B);break t;case 2:za=!0}}B=b.callback,B!==null&&(t.flags|=64,q&&(t.flags|=8192),q=f.callbacks,q===null?f.callbacks=[B]:q.push(B))}else q={lane:B,tag:b.tag,payload:b.payload,callback:b.callback,next:null},G===null?(L=G=q,E=Q):G=G.next=q,p|=B;if(b=b.next,b===null){if(b=f.shared.pending,b===null)break;q=b,b=q.next,q.next=null,f.lastBaseUpdate=q,f.shared.pending=null}}while(!0);G===null&&(E=Q),f.baseState=E,f.firstBaseUpdate=L,f.lastBaseUpdate=G,d===null&&(f.shared.lanes=0),Ua|=p,t.lanes=p,t.memoizedState=Q}}function Oh(t,e){if(typeof t!="function")throw Error(s(191,t));t.call(e)}function wh(t,e){var i=t.callbacks;if(i!==null)for(t.callbacks=null,t=0;td?d:8;var p=j.T,b={};j.T=b,Tu(t,!1,e,i);try{var E=f(),L=j.S;if(L!==null&&L(b,E),E!==null&&typeof E=="object"&&typeof E.then=="function"){var G=W0(E,r);ss(t,e,G,on(t))}else ss(t,e,r,on(t))}catch(Q){ss(t,e,{then:function(){},status:"rejected",reason:Q},on())}finally{Z.p=d,p!==null&&b.types!==null&&(p.types=b.types),j.T=p}}function ib(){}function Mu(t,e,i,r){if(t.tag!==5)throw Error(s(476));var f=rm(t).queue;sm(t,f,e,W,i===null?ib:function(){return om(t),i(r)})}function rm(t){var e=t.memoizedState;if(e!==null)return e;e={memoizedState:W,baseState:W,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ra,lastRenderedState:W},next:null};var i={};return e.next={memoizedState:i,baseState:i,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ra,lastRenderedState:i},next:null},t.memoizedState=e,t=t.alternate,t!==null&&(t.memoizedState=e),e}function om(t){var e=rm(t);e.next===null&&(e=t.alternate.memoizedState),ss(t,e.next.queue,{},on())}function Cu(){return De(Es)}function cm(){return he().memoizedState}function um(){return he().memoizedState}function lb(t){for(var e=t.return;e!==null;){switch(e.tag){case 24:case 3:var i=on();t=Ra(i);var r=Aa(e,t,i);r!==null&&(Ze(r,e,i),es(r,e,i)),e={cache:tu()},t.payload=e;return}e=e.return}}function sb(t,e,i){var r=on();i={lane:r,revertLane:0,gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null},Vr(t)?dm(e,i):(i=Xc(t,e,i,r),i!==null&&(Ze(i,t,r),hm(i,e,r)))}function fm(t,e,i){var r=on();ss(t,e,i,r)}function ss(t,e,i,r){var f={lane:r,revertLane:0,gesture:null,action:i,hasEagerState:!1,eagerState:null,next:null};if(Vr(t))dm(e,f);else{var d=t.alternate;if(t.lanes===0&&(d===null||d.lanes===0)&&(d=e.lastRenderedReducer,d!==null))try{var p=e.lastRenderedState,b=d(p,i);if(f.hasEagerState=!0,f.eagerState=b,en(b,p))return Sr(t,e,f,0),Wt===null&&xr(),!1}catch{}finally{}if(i=Xc(t,e,f,r),i!==null)return Ze(i,t,r),hm(i,e,r),!0}return!1}function Tu(t,e,i,r){if(r={lane:2,revertLane:lf(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Vr(t)){if(e)throw Error(s(479))}else e=Xc(t,i,r,2),e!==null&&Ze(e,t,2)}function Vr(t){var e=t.alternate;return t===Tt||e!==null&&e===Tt}function dm(t,e){ul=Lr=!0;var i=t.pending;i===null?e.next=e:(e.next=i.next,i.next=e),t.pending=e}function hm(t,e,i){if((i&4194048)!==0){var r=e.lanes;r&=t.pendingLanes,i|=r,e.lanes=i,M(t,i)}}var rs={readContext:De,use:Hr,useCallback:se,useContext:se,useEffect:se,useImperativeHandle:se,useLayoutEffect:se,useInsertionEffect:se,useMemo:se,useReducer:se,useRef:se,useState:se,useDebugValue:se,useDeferredValue:se,useTransition:se,useSyncExternalStore:se,useId:se,useHostTransitionStatus:se,useFormState:se,useActionState:se,useOptimistic:se,useMemoCache:se,useCacheRefresh:se};rs.useEffectEvent=se;var mm={readContext:De,use:Hr,useCallback:function(t,e){return Be().memoizedState=[t,e===void 0?null:e],t},useContext:De,useEffect:Ph,useImperativeHandle:function(t,e,i){i=i!=null?i.concat([t]):null,Yr(4194308,4,em.bind(null,e,t),i)},useLayoutEffect:function(t,e){return Yr(4194308,4,t,e)},useInsertionEffect:function(t,e){Yr(4,2,t,e)},useMemo:function(t,e){var i=Be();e=e===void 0?null:e;var r=t();if(Oi){zn(!0);try{t()}finally{zn(!1)}}return i.memoizedState=[r,e],r},useReducer:function(t,e,i){var r=Be();if(i!==void 0){var f=i(e);if(Oi){zn(!0);try{i(e)}finally{zn(!1)}}}else f=e;return r.memoizedState=r.baseState=f,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:f},r.queue=t,t=t.dispatch=sb.bind(null,Tt,t),[r.memoizedState,t]},useRef:function(t){var e=Be();return t={current:t},e.memoizedState=t},useState:function(t){t=bu(t);var e=t.queue,i=fm.bind(null,Tt,e);return e.dispatch=i,[t.memoizedState,i]},useDebugValue:Su,useDeferredValue:function(t,e){var i=Be();return Eu(i,t,e)},useTransition:function(){var t=bu(!1);return t=sm.bind(null,Tt,t.queue,!0,!1),Be().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,e,i){var r=Tt,f=Be();if(Ut){if(i===void 0)throw Error(s(407));i=i()}else{if(i=e(),Wt===null)throw Error(s(349));(jt&127)!==0||Lh(r,e,i)}f.memoizedState=i;var d={value:i,getSnapshot:e};return f.queue=d,Ph(Uh.bind(null,r,d,t),[t]),r.flags|=2048,dl(9,{destroy:void 0},Bh.bind(null,r,d,i,e),null),i},useId:function(){var t=Be(),e=Wt.identifierPrefix;if(Ut){var i=Yn,r=kn;i=(r&~(1<<32-Ae(r)-1)).toString(32)+i,e="_"+e+"R_"+i,i=Br++,0<\/script>",d=d.removeChild(d.firstChild);break;case"select":d=typeof r.is=="string"?p.createElement("select",{is:r.is}):p.createElement("select"),r.multiple?d.multiple=!0:r.size&&(d.size=r.size);break;default:d=typeof r.is=="string"?p.createElement(f,{is:r.is}):p.createElement(f)}}d[tt]=e,d[it]=r;t:for(p=e.child;p!==null;){if(p.tag===5||p.tag===6)d.appendChild(p.stateNode);else if(p.tag!==4&&p.tag!==27&&p.child!==null){p.child.return=p,p=p.child;continue}if(p===e)break t;for(;p.sibling===null;){if(p.return===null||p.return===e)break t;p=p.return}p.sibling.return=p.return,p=p.sibling}e.stateNode=d;t:switch(we(d,f,r),f){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break t;case"img":r=!0;break t;default:r=!1}r&&ca(e)}}return ee(e),Yu(e,e.type,t===null?null:t.memoizedProps,e.pendingProps,i),null;case 6:if(t&&e.stateNode!=null)t.memoizedProps!==r&&ca(e);else{if(typeof r!="string"&&e.stateNode===null)throw Error(s(166));if(t=bt.current,al(e)){if(t=e.stateNode,i=e.memoizedProps,r=null,f=Te,f!==null)switch(f.tag){case 27:case 5:r=f.memoizedProps}t[tt]=e,t=!!(t.nodeValue===i||r!==null&&r.suppressHydrationWarning===!0||jg(t.nodeValue,i)),t||Oa(e,!0)}else t=oo(t).createTextNode(r),t[tt]=e,e.stateNode=t}return ee(e),null;case 31:if(i=e.memoizedState,t===null||t.memoizedState!==null){if(r=al(e),i!==null){if(t===null){if(!r)throw Error(s(318));if(t=e.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(s(557));t[tt]=e}else xi(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;ee(e),t=!1}else i=Jc(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=i),t=!0;if(!t)return e.flags&256?(ln(e),e):(ln(e),null);if((e.flags&128)!==0)throw Error(s(558))}return ee(e),null;case 13:if(r=e.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(f=al(e),r!==null&&r.dehydrated!==null){if(t===null){if(!f)throw Error(s(318));if(f=e.memoizedState,f=f!==null?f.dehydrated:null,!f)throw Error(s(317));f[tt]=e}else xi(),(e.flags&128)===0&&(e.memoizedState=null),e.flags|=4;ee(e),f=!1}else f=Jc(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=f),f=!0;if(!f)return e.flags&256?(ln(e),e):(ln(e),null)}return ln(e),(e.flags&128)!==0?(e.lanes=i,e):(i=r!==null,t=t!==null&&t.memoizedState!==null,i&&(r=e.child,f=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(f=r.alternate.memoizedState.cachePool.pool),d=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(d=r.memoizedState.cachePool.pool),d!==f&&(r.flags|=2048)),i!==t&&i&&(e.child.flags|=8192),Zr(e,e.updateQueue),ee(e),null);case 4:return ae(),t===null&&cf(e.stateNode.containerInfo),ee(e),null;case 10:return la(e.type),ee(e),null;case 19:if(V(de),r=e.memoizedState,r===null)return ee(e),null;if(f=(e.flags&128)!==0,d=r.rendering,d===null)if(f)cs(r,!1);else{if(re!==0||t!==null&&(t.flags&128)!==0)for(t=e.child;t!==null;){if(d=Nr(t),d!==null){for(e.flags|=128,cs(r,!1),t=d.updateQueue,e.updateQueue=t,Zr(e,t),e.subtreeFlags=0,t=i,i=e.child;i!==null;)fh(i,t),i=i.sibling;return F(de,de.current&1|2),Ut&&aa(e,r.treeForkCount),e.child}t=t.sibling}r.tail!==null&&fe()>Wr&&(e.flags|=128,f=!0,cs(r,!1),e.lanes=4194304)}else{if(!f)if(t=Nr(d),t!==null){if(e.flags|=128,f=!0,t=t.updateQueue,e.updateQueue=t,Zr(e,t),cs(r,!0),r.tail===null&&r.tailMode==="hidden"&&!d.alternate&&!Ut)return ee(e),null}else 2*fe()-r.renderingStartTime>Wr&&i!==536870912&&(e.flags|=128,f=!0,cs(r,!1),e.lanes=4194304);r.isBackwards?(d.sibling=e.child,e.child=d):(t=r.last,t!==null?t.sibling=d:e.child=d,r.last=d)}return r.tail!==null?(t=r.tail,r.rendering=t,r.tail=t.sibling,r.renderingStartTime=fe(),t.sibling=null,i=de.current,F(de,f?i&1|2:i&1),Ut&&aa(e,r.treeForkCount),t):(ee(e),null);case 22:case 23:return ln(e),cu(),r=e.memoizedState!==null,t!==null?t.memoizedState!==null!==r&&(e.flags|=8192):r&&(e.flags|=8192),r?(i&536870912)!==0&&(e.flags&128)===0&&(ee(e),e.subtreeFlags&6&&(e.flags|=8192)):ee(e),i=e.updateQueue,i!==null&&Zr(e,i.retryQueue),i=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(i=t.memoizedState.cachePool.pool),r=null,e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(r=e.memoizedState.cachePool.pool),r!==i&&(e.flags|=2048),t!==null&&V(Mi),null;case 24:return i=null,t!==null&&(i=t.memoizedState.cache),e.memoizedState.cache!==i&&(e.flags|=2048),la(pe),ee(e),null;case 25:return null;case 30:return null}throw Error(s(156,e.tag))}function fb(t,e){switch(Kc(e),e.tag){case 1:return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 3:return la(pe),ae(),t=e.flags,(t&65536)!==0&&(t&128)===0?(e.flags=t&-65537|128,e):null;case 26:case 27:case 5:return qi(e),null;case 31:if(e.memoizedState!==null){if(ln(e),e.alternate===null)throw Error(s(340));xi()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 13:if(ln(e),t=e.memoizedState,t!==null&&t.dehydrated!==null){if(e.alternate===null)throw Error(s(340));xi()}return t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 19:return V(de),null;case 4:return ae(),null;case 10:return la(e.type),null;case 22:case 23:return ln(e),cu(),t!==null&&V(Mi),t=e.flags,t&65536?(e.flags=t&-65537|128,e):null;case 24:return la(pe),null;case 25:return null;default:return null}}function Hm(t,e){switch(Kc(e),e.tag){case 3:la(pe),ae();break;case 26:case 27:case 5:qi(e);break;case 4:ae();break;case 31:e.memoizedState!==null&&ln(e);break;case 13:ln(e);break;case 19:V(de);break;case 10:la(e.type);break;case 22:case 23:ln(e),cu(),t!==null&&V(Mi);break;case 24:la(pe)}}function us(t,e){try{var i=e.updateQueue,r=i!==null?i.lastEffect:null;if(r!==null){var f=r.next;i=f;do{if((i.tag&t)===t){r=void 0;var d=i.create,p=i.inst;r=d(),p.destroy=r}i=i.next}while(i!==f)}}catch(b){Zt(e,e.return,b)}}function La(t,e,i){try{var r=e.updateQueue,f=r!==null?r.lastEffect:null;if(f!==null){var d=f.next;r=d;do{if((r.tag&t)===t){var p=r.inst,b=p.destroy;if(b!==void 0){p.destroy=void 0,f=e;var E=i,L=b;try{L()}catch(G){Zt(f,E,G)}}}r=r.next}while(r!==d)}}catch(G){Zt(e,e.return,G)}}function km(t){var e=t.updateQueue;if(e!==null){var i=t.stateNode;try{wh(e,i)}catch(r){Zt(t,t.return,r)}}}function Ym(t,e,i){i.props=wi(t.type,t.memoizedProps),i.state=t.memoizedState;try{i.componentWillUnmount()}catch(r){Zt(t,e,r)}}function fs(t,e){try{var i=t.ref;if(i!==null){switch(t.tag){case 26:case 27:case 5:var r=t.stateNode;break;case 30:r=t.stateNode;break;default:r=t.stateNode}typeof i=="function"?t.refCleanup=i(r):i.current=r}}catch(f){Zt(t,e,f)}}function qn(t,e){var i=t.ref,r=t.refCleanup;if(i!==null)if(typeof r=="function")try{r()}catch(f){Zt(t,e,f)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof i=="function")try{i(null)}catch(f){Zt(t,e,f)}else i.current=null}function qm(t){var e=t.type,i=t.memoizedProps,r=t.stateNode;try{t:switch(e){case"button":case"input":case"select":case"textarea":i.autoFocus&&r.focus();break t;case"img":i.src?r.src=i.src:i.srcSet&&(r.srcset=i.srcSet)}}catch(f){Zt(t,t.return,f)}}function qu(t,e,i){try{var r=t.stateNode;jb(r,t.type,i,e),r[it]=e}catch(f){Zt(t,t.return,f)}}function Vm(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&Va(t.type)||t.tag===4}function Vu(t){t:for(;;){for(;t.sibling===null;){if(t.return===null||Vm(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&Va(t.type)||t.flags&2||t.child===null||t.tag===4)continue t;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Xu(t,e,i){var r=t.tag;if(r===5||r===6)t=t.stateNode,e?(i.nodeType===9?i.body:i.nodeName==="HTML"?i.ownerDocument.body:i).insertBefore(t,e):(e=i.nodeType===9?i.body:i.nodeName==="HTML"?i.ownerDocument.body:i,e.appendChild(t),i=i._reactRootContainer,i!=null||e.onclick!==null||(e.onclick=ta));else if(r!==4&&(r===27&&Va(t.type)&&(i=t.stateNode,e=null),t=t.child,t!==null))for(Xu(t,e,i),t=t.sibling;t!==null;)Xu(t,e,i),t=t.sibling}function Kr(t,e,i){var r=t.tag;if(r===5||r===6)t=t.stateNode,e?i.insertBefore(t,e):i.appendChild(t);else if(r!==4&&(r===27&&Va(t.type)&&(i=t.stateNode),t=t.child,t!==null))for(Kr(t,e,i),t=t.sibling;t!==null;)Kr(t,e,i),t=t.sibling}function Xm(t){var e=t.stateNode,i=t.memoizedProps;try{for(var r=t.type,f=e.attributes;f.length;)e.removeAttributeNode(f[0]);we(e,r,i),e[tt]=t,e[it]=i}catch(d){Zt(t,t.return,d)}}var ua=!1,be=!1,Gu=!1,Gm=typeof WeakSet=="function"?WeakSet:Set,Ee=null;function db(t,e){if(t=t.containerInfo,df=po,t=nh(t),Uc(t)){if("selectionStart"in t)var i={start:t.selectionStart,end:t.selectionEnd};else t:{i=(i=t.ownerDocument)&&i.defaultView||window;var r=i.getSelection&&i.getSelection();if(r&&r.rangeCount!==0){i=r.anchorNode;var f=r.anchorOffset,d=r.focusNode;r=r.focusOffset;try{i.nodeType,d.nodeType}catch{i=null;break t}var p=0,b=-1,E=-1,L=0,G=0,Q=t,B=null;e:for(;;){for(var q;Q!==i||f!==0&&Q.nodeType!==3||(b=p+f),Q!==d||r!==0&&Q.nodeType!==3||(E=p+r),Q.nodeType===3&&(p+=Q.nodeValue.length),(q=Q.firstChild)!==null;)B=Q,Q=q;for(;;){if(Q===t)break e;if(B===i&&++L===f&&(b=p),B===d&&++G===r&&(E=p),(q=Q.nextSibling)!==null)break;Q=B,B=Q.parentNode}Q=q}i=b===-1||E===-1?null:{start:b,end:E}}else i=null}i=i||{start:0,end:0}}else i=null;for(hf={focusedElem:t,selectionRange:i},po=!1,Ee=e;Ee!==null;)if(e=Ee,t=e.child,(e.subtreeFlags&1028)!==0&&t!==null)t.return=e,Ee=t;else for(;Ee!==null;){switch(e=Ee,d=e.alternate,t=e.flags,e.tag){case 0:if((t&4)!==0&&(t=e.updateQueue,t=t!==null?t.events:null,t!==null))for(i=0;i title"))),we(d,r,i),d[tt]=t,Pt(d),r=d;break t;case"link":var p=Jg("link","href",f).get(r+(i.href||""));if(p){for(var b=0;bJt&&(p=Jt,Jt=_t,_t=p);var z=th(b,_t),w=th(b,Jt);if(z&&w&&(q.rangeCount!==1||q.anchorNode!==z.node||q.anchorOffset!==z.offset||q.focusNode!==w.node||q.focusOffset!==w.offset)){var N=Q.createRange();N.setStart(z.node,z.offset),q.removeAllRanges(),_t>Jt?(q.addRange(N),q.extend(w.node,w.offset)):(N.setEnd(w.node,w.offset),q.addRange(N))}}}}for(Q=[],q=b;q=q.parentNode;)q.nodeType===1&&Q.push({element:q,left:q.scrollLeft,top:q.scrollTop});for(typeof b.focus=="function"&&b.focus(),b=0;bi?32:i,j.T=null,i=Pu,Pu=null;var d=ka,p=ga;if(xe=0,vl=ka=null,ga=0,(Xt&6)!==0)throw Error(s(331));var b=Xt;if(Xt|=4,eg(d.current),Wm(d,d.current,p,i),Xt=b,vs(0,!1),ie&&typeof ie.onPostCommitFiberRoot=="function")try{ie.onPostCommitFiberRoot(ui,d)}catch{}return!0}finally{Z.p=f,j.T=r,bg(t,e)}}function xg(t,e,i){e=gn(i,e),e=zu(t.stateNode,e,2),t=Aa(t,e,2),t!==null&&(Ma(t,2),Vn(t))}function Zt(t,e,i){if(t.tag===3)xg(t,t,i);else for(;e!==null;){if(e.tag===3){xg(e,t,i);break}else if(e.tag===1){var r=e.stateNode;if(typeof e.type.getDerivedStateFromError=="function"||typeof r.componentDidCatch=="function"&&(Ha===null||!Ha.has(r))){t=gn(i,t),i=Sm(2),r=Aa(e,i,2),r!==null&&(Em(i,r,e,t),Ma(r,2),Vn(r));break}}e=e.return}}function ef(t,e,i){var r=t.pingCache;if(r===null){r=t.pingCache=new gb;var f=new Set;r.set(e,f)}else f=r.get(e),f===void 0&&(f=new Set,r.set(e,f));f.has(i)||(Zu=!0,f.add(i),t=_b.bind(null,t,e,i),e.then(t,t))}function _b(t,e,i){var r=t.pingCache;r!==null&&r.delete(e),t.pingedLanes|=t.suspendedLanes&i,t.warmLanes&=~i,Wt===t&&(jt&i)===i&&(re===4||re===3&&(jt&62914560)===jt&&300>fe()-Pr?(Xt&2)===0&&yl(t,0):Ku|=i,pl===jt&&(pl=0)),Vn(t)}function Sg(t,e){e===0&&(e=mi()),t=bi(t,e),t!==null&&(Ma(t,e),Vn(t))}function xb(t){var e=t.memoizedState,i=0;e!==null&&(i=e.retryLane),Sg(t,i)}function Sb(t,e){var i=0;switch(t.tag){case 31:case 13:var r=t.stateNode,f=t.memoizedState;f!==null&&(i=f.retryLane);break;case 19:r=t.stateNode;break;case 22:r=t.stateNode._retryCache;break;default:throw Error(s(314))}r!==null&&r.delete(e),Sg(t,i)}function Eb(t,e){return Nl(t,e)}var io=null,_l=null,nf=!1,lo=!1,af=!1,qa=0;function Vn(t){t!==_l&&t.next===null&&(_l===null?io=_l=t:_l=_l.next=t),lo=!0,nf||(nf=!0,Cb())}function vs(t,e){if(!af&&lo){af=!0;do for(var i=!1,r=io;r!==null;){if(t!==0){var f=r.pendingLanes;if(f===0)var d=0;else{var p=r.suspendedLanes,b=r.pingedLanes;d=(1<<31-Ae(42|t)+1)-1,d&=f&~(p&~b),d=d&201326741?d&201326741|1:d?d|2:0}d!==0&&(i=!0,Tg(r,d))}else d=jt,d=di(r,r===Wt?d:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),(d&3)===0||hi(r,d)||(i=!0,Tg(r,d));r=r.next}while(i);af=!1}}function Mb(){Eg()}function Eg(){lo=nf=!1;var t=0;qa!==0&&Lb()&&(t=qa);for(var e=fe(),i=null,r=io;r!==null;){var f=r.next,d=Mg(r,e);d===0?(r.next=null,i===null?io=f:i.next=f,f===null&&(_l=i)):(i=r,(t!==0||(d&3)!==0)&&(lo=!0)),r=f}xe!==0&&xe!==5||vs(t),qa!==0&&(qa=0)}function Mg(t,e){for(var i=t.suspendedLanes,r=t.pingedLanes,f=t.expirationTimes,d=t.pendingLanes&-62914561;0b)break;var G=E.transferSize,Q=E.initiatorType;G&&Ng(Q)&&(E=E.responseEnd,p+=G*(E"u"?null:document;function Qg(t,e,i){var r=xl;if(r&&typeof e=="string"&&e){var f=hn(e);f='link[rel="'+t+'"][href="'+f+'"]',typeof i=="string"&&(f+='[crossorigin="'+i+'"]'),$g.has(f)||($g.add(f),t={rel:t,crossOrigin:i,href:e},r.querySelector(f)===null&&(e=r.createElement("link"),we(e,"link",t),Pt(e),r.head.appendChild(e)))}}function Gb(t){pa.D(t),Qg("dns-prefetch",t,null)}function $b(t,e){pa.C(t,e),Qg("preconnect",t,e)}function Qb(t,e,i){pa.L(t,e,i);var r=xl;if(r&&t&&e){var f='link[rel="preload"][as="'+hn(e)+'"]';e==="image"&&i&&i.imageSrcSet?(f+='[imagesrcset="'+hn(i.imageSrcSet)+'"]',typeof i.imageSizes=="string"&&(f+='[imagesizes="'+hn(i.imageSizes)+'"]')):f+='[href="'+hn(t)+'"]';var d=f;switch(e){case"style":d=Sl(t);break;case"script":d=El(t)}xn.has(d)||(t=y({rel:"preload",href:e==="image"&&i&&i.imageSrcSet?void 0:t,as:e},i),xn.set(d,t),r.querySelector(f)!==null||e==="style"&&r.querySelector(xs(d))||e==="script"&&r.querySelector(Ss(d))||(e=r.createElement("link"),we(e,"link",t),Pt(e),r.head.appendChild(e)))}}function Zb(t,e){pa.m(t,e);var i=xl;if(i&&t){var r=e&&typeof e.as=="string"?e.as:"script",f='link[rel="modulepreload"][as="'+hn(r)+'"][href="'+hn(t)+'"]',d=f;switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":d=El(t)}if(!xn.has(d)&&(t=y({rel:"modulepreload",href:t},e),xn.set(d,t),i.querySelector(f)===null)){switch(r){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(i.querySelector(Ss(d)))return}r=i.createElement("link"),we(r,"link",t),Pt(r),i.head.appendChild(r)}}}function Kb(t,e,i){pa.S(t,e,i);var r=xl;if(r&&t){var f=fn(r).hoistableStyles,d=Sl(t);e=e||"default";var p=f.get(d);if(!p){var b={loading:0,preload:null};if(p=r.querySelector(xs(d)))b.loading=5;else{t=y({rel:"stylesheet",href:t,"data-precedence":e},i),(i=xn.get(d))&&_f(t,i);var E=p=r.createElement("link");Pt(E),we(E,"link",t),E._p=new Promise(function(L,G){E.onload=L,E.onerror=G}),E.addEventListener("load",function(){b.loading|=1}),E.addEventListener("error",function(){b.loading|=2}),b.loading|=4,uo(p,e,r)}p={type:"stylesheet",instance:p,count:1,state:b},f.set(d,p)}}}function Fb(t,e){pa.X(t,e);var i=xl;if(i&&t){var r=fn(i).hoistableScripts,f=El(t),d=r.get(f);d||(d=i.querySelector(Ss(f)),d||(t=y({src:t,async:!0},e),(e=xn.get(f))&&xf(t,e),d=i.createElement("script"),Pt(d),we(d,"link",t),i.head.appendChild(d)),d={type:"script",instance:d,count:1,state:null},r.set(f,d))}}function Jb(t,e){pa.M(t,e);var i=xl;if(i&&t){var r=fn(i).hoistableScripts,f=El(t),d=r.get(f);d||(d=i.querySelector(Ss(f)),d||(t=y({src:t,async:!0,type:"module"},e),(e=xn.get(f))&&xf(t,e),d=i.createElement("script"),Pt(d),we(d,"link",t),i.head.appendChild(d)),d={type:"script",instance:d,count:1,state:null},r.set(f,d))}}function Zg(t,e,i,r){var f=(f=bt.current)?co(f):null;if(!f)throw Error(s(446));switch(t){case"meta":case"title":return null;case"style":return typeof i.precedence=="string"&&typeof i.href=="string"?(e=Sl(i.href),i=fn(f).hoistableStyles,r=i.get(e),r||(r={type:"style",instance:null,count:0,state:null},i.set(e,r)),r):{type:"void",instance:null,count:0,state:null};case"link":if(i.rel==="stylesheet"&&typeof i.href=="string"&&typeof i.precedence=="string"){t=Sl(i.href);var d=fn(f).hoistableStyles,p=d.get(t);if(p||(f=f.ownerDocument||f,p={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},d.set(t,p),(d=f.querySelector(xs(t)))&&!d._p&&(p.instance=d,p.state.loading=5),xn.has(t)||(i={rel:"preload",as:"style",href:i.href,crossOrigin:i.crossOrigin,integrity:i.integrity,media:i.media,hrefLang:i.hrefLang,referrerPolicy:i.referrerPolicy},xn.set(t,i),d||Pb(f,t,i,p.state))),e&&r===null)throw Error(s(528,""));return p}if(e&&r!==null)throw Error(s(529,""));return null;case"script":return e=i.async,i=i.src,typeof i=="string"&&e&&typeof e!="function"&&typeof e!="symbol"?(e=El(i),i=fn(f).hoistableScripts,r=i.get(e),r||(r={type:"script",instance:null,count:0,state:null},i.set(e,r)),r):{type:"void",instance:null,count:0,state:null};default:throw Error(s(444,t))}}function Sl(t){return'href="'+hn(t)+'"'}function xs(t){return'link[rel="stylesheet"]['+t+"]"}function Kg(t){return y({},t,{"data-precedence":t.precedence,precedence:null})}function Pb(t,e,i,r){t.querySelector('link[rel="preload"][as="style"]['+e+"]")?r.loading=1:(e=t.createElement("link"),r.preload=e,e.addEventListener("load",function(){return r.loading|=1}),e.addEventListener("error",function(){return r.loading|=2}),we(e,"link",i),Pt(e),t.head.appendChild(e))}function El(t){return'[src="'+hn(t)+'"]'}function Ss(t){return"script[async]"+t}function Fg(t,e,i){if(e.count++,e.instance===null)switch(e.type){case"style":var r=t.querySelector('style[data-href~="'+hn(i.href)+'"]');if(r)return e.instance=r,Pt(r),r;var f=y({},i,{"data-href":i.href,"data-precedence":i.precedence,href:null,precedence:null});return r=(t.ownerDocument||t).createElement("style"),Pt(r),we(r,"style",f),uo(r,i.precedence,t),e.instance=r;case"stylesheet":f=Sl(i.href);var d=t.querySelector(xs(f));if(d)return e.state.loading|=4,e.instance=d,Pt(d),d;r=Kg(i),(f=xn.get(f))&&_f(r,f),d=(t.ownerDocument||t).createElement("link"),Pt(d);var p=d;return p._p=new Promise(function(b,E){p.onload=b,p.onerror=E}),we(d,"link",r),e.state.loading|=4,uo(d,i.precedence,t),e.instance=d;case"script":return d=El(i.src),(f=t.querySelector(Ss(d)))?(e.instance=f,Pt(f),f):(r=i,(f=xn.get(d))&&(r=y({},i),xf(r,f)),t=t.ownerDocument||t,f=t.createElement("script"),Pt(f),we(f,"link",r),t.head.appendChild(f),e.instance=f);case"void":return null;default:throw Error(s(443,e.type))}else e.type==="stylesheet"&&(e.state.loading&4)===0&&(r=e.instance,e.state.loading|=4,uo(r,i.precedence,t));return e.instance}function uo(t,e,i){for(var r=i.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),f=r.length?r[r.length-1]:null,d=f,p=0;p title"):null)}function Wb(t,e,i){if(i===1||e.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof e.precedence!="string"||typeof e.href!="string"||e.href==="")break;return!0;case"link":if(typeof e.rel!="string"||typeof e.href!="string"||e.href===""||e.onLoad||e.onError)break;switch(e.rel){case"stylesheet":return t=e.disabled,typeof e.precedence=="string"&&t==null;default:return!0}case"script":if(e.async&&typeof e.async!="function"&&typeof e.async!="symbol"&&!e.onLoad&&!e.onError&&e.src&&typeof e.src=="string")return!0}return!1}function Wg(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function Ib(t,e,i,r){if(i.type==="stylesheet"&&(typeof r.media!="string"||matchMedia(r.media).matches!==!1)&&(i.state.loading&4)===0){if(i.instance===null){var f=Sl(r.href),d=e.querySelector(xs(f));if(d){e=d._p,e!==null&&typeof e=="object"&&typeof e.then=="function"&&(t.count++,t=ho.bind(t),e.then(t,t)),i.state.loading|=4,i.instance=d,Pt(d);return}d=e.ownerDocument||e,r=Kg(r),(f=xn.get(f))&&_f(r,f),d=d.createElement("link"),Pt(d);var p=d;p._p=new Promise(function(b,E){p.onload=b,p.onerror=E}),we(d,"link",r),i.instance=d}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(i,e),(e=i.state.preload)&&(i.state.loading&3)===0&&(t.count++,i=ho.bind(t),e.addEventListener("load",i),e.addEventListener("error",i))}}var Sf=0;function t_(t,e){return t.stylesheets&&t.count===0&&go(t,t.stylesheets),0Sf?50:800)+e);return t.unsuspend=i,function(){t.unsuspend=null,clearTimeout(r),clearTimeout(f)}}:null}function ho(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)go(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var mo=null;function go(t,e){t.stylesheets=null,t.unsuspend!==null&&(t.count++,mo=new Map,e.forEach(e_,t),mo=null,ho.call(t))}function e_(t,e){if(!(e.state.loading&4)){var i=mo.get(t);if(i)var r=i.get(null);else{i=new Map,mo.set(t,i);for(var f=t.querySelectorAll("link[data-precedence],style[data-precedence]"),d=0;d"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(a)}catch(n){console.error(n)}}return a(),Rf.exports=__(),Rf.exports}var S_=x_();/** - * react-router v7.10.1 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */var Iv=a=>{throw TypeError(a)},E_=(a,n,l)=>n.has(a)||Iv("Cannot "+l),Lf=(a,n,l)=>(E_(a,n,"read from private field"),l?l.call(a):n.get(a)),M_=(a,n,l)=>n.has(a)?Iv("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(a):n.set(a,l),Sp="popstate";function C_(a={}){function n(s,o){let{pathname:c,search:u,hash:h}=s.location;return Ks("",{pathname:c,search:u,hash:h},o.state&&o.state.usr||null,o.state&&o.state.key||"default")}function l(s,o){return typeof o=="string"?o:Jn(o)}return D_(n,l,null,a)}function wt(a,n){if(a===!1||a===null||typeof a>"u")throw new Error(n)}function ce(a,n){if(!a){typeof console<"u"&&console.warn(n);try{throw new Error(n)}catch{}}}function T_(){return Math.random().toString(36).substring(2,10)}function Ep(a,n){return{usr:a.state,key:a.key,idx:n}}function Ks(a,n,l=null,s){return{pathname:typeof a=="string"?a:a.pathname,search:"",hash:"",...typeof n=="string"?li(n):n,state:l,key:n&&n.key||s||T_()}}function Jn({pathname:a="/",search:n="",hash:l=""}){return n&&n!=="?"&&(a+=n.charAt(0)==="?"?n:"?"+n),l&&l!=="#"&&(a+=l.charAt(0)==="#"?l:"#"+l),a}function li(a){let n={};if(a){let l=a.indexOf("#");l>=0&&(n.hash=a.substring(l),a=a.substring(0,l));let s=a.indexOf("?");s>=0&&(n.search=a.substring(s),a=a.substring(0,s)),a&&(n.pathname=a)}return n}function D_(a,n,l,s={}){let{window:o=document.defaultView,v5Compat:c=!1}=s,u=o.history,h="POP",m=null,g=v();g==null&&(g=0,u.replaceState({...u.state,idx:g},""));function v(){return(u.state||{idx:null}).idx}function y(){h="POP";let k=v(),Y=k==null?null:k-g;g=k,m&&m({action:h,location:U.location,delta:Y})}function _(k,Y){h="PUSH";let A=Ks(U.location,k,Y);g=v()+1;let X=Ep(A,g),P=U.createHref(A);try{u.pushState(X,"",P)}catch(J){if(J instanceof DOMException&&J.name==="DataCloneError")throw J;o.location.assign(P)}c&&m&&m({action:h,location:U.location,delta:1})}function S(k,Y){h="REPLACE";let A=Ks(U.location,k,Y);g=v();let X=Ep(A,g),P=U.createHref(A);u.replaceState(X,"",P),c&&m&&m({action:h,location:U.location,delta:0})}function O(k){return ty(k)}let U={get action(){return h},get location(){return a(o,u)},listen(k){if(m)throw new Error("A history only accepts one active listener");return o.addEventListener(Sp,y),m=k,()=>{o.removeEventListener(Sp,y),m=null}},createHref(k){return n(o,k)},createURL:O,encodeLocation(k){let Y=O(k);return{pathname:Y.pathname,search:Y.search,hash:Y.hash}},push:_,replace:S,go(k){return u.go(k)}};return U}function ty(a,n=!1){let l="http://localhost";typeof window<"u"&&(l=window.location.origin!=="null"?window.location.origin:window.location.href),wt(l,"No window.location.(origin|href) available to create URL");let s=typeof a=="string"?a:Jn(a);return s=s.replace(/ $/,"%20"),!n&&s.startsWith("//")&&(s=l+s),new URL(s,l)}var Ys,Mp=class{constructor(a){if(M_(this,Ys,new Map),a)for(let[n,l]of a)this.set(n,l)}get(a){if(Lf(this,Ys).has(a))return Lf(this,Ys).get(a);if(a.defaultValue!==void 0)return a.defaultValue;throw new Error("No value found for context")}set(a,n){Lf(this,Ys).set(a,n)}};Ys=new WeakMap;var O_=new Set(["lazy","caseSensitive","path","id","index","children"]);function w_(a){return O_.has(a)}var z_=new Set(["lazy","caseSensitive","path","id","index","middleware","children"]);function R_(a){return z_.has(a)}function A_(a){return a.index===!0}function Fs(a,n,l=[],s={},o=!1){return a.map((c,u)=>{let h=[...l,String(u)],m=typeof c.id=="string"?c.id:h.join("-");if(wt(c.index!==!0||!c.children,"Cannot specify children on an index route"),wt(o||!s[m],`Found a route id collision on id "${m}". Route id's must be globally unique within Data Router usages`),A_(c)){let g={...c,id:m};return s[m]=Cp(g,n(g)),g}else{let g={...c,id:m,children:void 0};return s[m]=Cp(g,n(g)),c.children&&(g.children=Fs(c.children,n,h,s,o)),g}})}function Cp(a,n){return Object.assign(a,{...n,...typeof n.lazy=="object"&&n.lazy!=null?{lazy:{...a.lazy,...n.lazy}}:{}})}function Pa(a,n,l="/"){return qs(a,n,l,!1)}function qs(a,n,l,s){let o=typeof n=="string"?li(n):n,c=Tn(o.pathname||"/",l);if(c==null)return null;let u=ey(a);N_(u);let h=null;for(let m=0;h==null&&m{let v={relativePath:g===void 0?u.path||"":g,caseSensitive:u.caseSensitive===!0,childrenIndex:h,route:u};if(v.relativePath.startsWith("/")){if(!v.relativePath.startsWith(s)&&m)return;wt(v.relativePath.startsWith(s),`Absolute route path "${v.relativePath}" nested under path "${s}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),v.relativePath=v.relativePath.slice(s.length)}let y=Fn([s,v.relativePath]),_=l.concat(v);u.children&&u.children.length>0&&(wt(u.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${y}".`),ey(u.children,n,_,y,m)),!(u.path==null&&!u.index)&&n.push({path:y,score:q_(y,u.index),routesMeta:_})};return a.forEach((u,h)=>{if(u.path===""||!u.path?.includes("?"))c(u,h);else for(let m of ny(u.path))c(u,h,!0,m)}),n}function ny(a){let n=a.split("/");if(n.length===0)return[];let[l,...s]=n,o=l.endsWith("?"),c=l.replace(/\?$/,"");if(s.length===0)return o?[c,""]:[c];let u=ny(s.join("/")),h=[];return h.push(...u.map(m=>m===""?c:[c,m].join("/"))),o&&h.push(...u),h.map(m=>a.startsWith("/")&&m===""?"/":m)}function N_(a){a.sort((n,l)=>n.score!==l.score?l.score-n.score:V_(n.routesMeta.map(s=>s.childrenIndex),l.routesMeta.map(s=>s.childrenIndex)))}var L_=/^:[\w-]+$/,B_=3,U_=2,H_=1,k_=10,Y_=-2,Tp=a=>a==="*";function q_(a,n){let l=a.split("/"),s=l.length;return l.some(Tp)&&(s+=Y_),n&&(s+=U_),l.filter(o=>!Tp(o)).reduce((o,c)=>o+(L_.test(c)?B_:c===""?H_:k_),s)}function V_(a,n){return a.length===n.length&&a.slice(0,-1).every((s,o)=>s===n[o])?a[a.length-1]-n[n.length-1]:0}function X_(a,n,l=!1){let{routesMeta:s}=a,o={},c="/",u=[];for(let h=0;h{if(v==="*"){let O=h[_]||"";u=c.slice(0,c.length-O.length).replace(/(.)\/+$/,"$1")}const S=h[_];return y&&!S?g[v]=void 0:g[v]=(S||"").replace(/%2F/g,"/"),g},{}),pathname:c,pathnameBase:u,pattern:a}}function G_(a,n=!1,l=!0){ce(a==="*"||!a.endsWith("*")||a.endsWith("/*"),`Route path "${a}" will be treated as if it were "${a.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${a.replace(/\*$/,"/*")}".`);let s=[],o="^"+a.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(u,h,m)=>(s.push({paramName:h,isOptional:m!=null}),m?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return a.endsWith("*")?(s.push({paramName:"*"}),o+=a==="*"||a==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):l?o+="\\/*$":a!==""&&a!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,n?void 0:"i"),s]}function $_(a){try{return a.split("/").map(n=>decodeURIComponent(n).replace(/\//g,"%2F")).join("/")}catch(n){return ce(!1,`The URL path "${a}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${n}).`),a}}function Tn(a,n){if(n==="/")return a;if(!a.toLowerCase().startsWith(n.toLowerCase()))return null;let l=n.endsWith("/")?n.length-1:n.length,s=a.charAt(l);return s&&s!=="/"?null:a.slice(l)||"/"}function Q_({basename:a,pathname:n}){return n==="/"?a:Fn([a,n])}var Z_=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,nc=a=>Z_.test(a);function K_(a,n="/"){let{pathname:l,search:s="",hash:o=""}=typeof a=="string"?li(a):a,c;if(l)if(nc(l))c=l;else{if(l.includes("//")){let u=l;l=l.replace(/\/\/+/g,"/"),ce(!1,`Pathnames cannot have embedded double slashes - normalizing ${u} -> ${l}`)}l.startsWith("/")?c=Dp(l.substring(1),"/"):c=Dp(l,n)}else c=n;return{pathname:c,search:J_(s),hash:P_(o)}}function Dp(a,n){let l=n.replace(/\/+$/,"").split("/");return a.split("/").forEach(o=>{o===".."?l.length>1&&l.pop():o!=="."&&l.push(o)}),l.length>1?l.join("/"):"/"}function Bf(a,n,l,s){return`Cannot include a '${a}' character in a manually specified \`to.${n}\` field [${JSON.stringify(s)}]. Please separate it out to the \`to.${l}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function ay(a){return a.filter((n,l)=>l===0||n.route.path&&n.route.path.length>0)}function ac(a){let n=ay(a);return n.map((l,s)=>s===n.length-1?l.pathname:l.pathnameBase)}function ic(a,n,l,s=!1){let o;typeof a=="string"?o=li(a):(o={...a},wt(!o.pathname||!o.pathname.includes("?"),Bf("?","pathname","search",o)),wt(!o.pathname||!o.pathname.includes("#"),Bf("#","pathname","hash",o)),wt(!o.search||!o.search.includes("#"),Bf("#","search","hash",o)));let c=a===""||o.pathname==="",u=c?"/":o.pathname,h;if(u==null)h=l;else{let y=n.length-1;if(!s&&u.startsWith("..")){let _=u.split("/");for(;_[0]==="..";)_.shift(),y-=1;o.pathname=_.join("/")}h=y>=0?n[y]:"/"}let m=K_(o,h),g=u&&u!=="/"&&u.endsWith("/"),v=(c||u===".")&&l.endsWith("/");return!m.pathname.endsWith("/")&&(g||v)&&(m.pathname+="/"),m}var Fn=a=>a.join("/").replace(/\/\/+/g,"/"),F_=a=>a.replace(/\/+$/,"").replace(/^\/*/,"/"),J_=a=>!a||a==="?"?"":a.startsWith("?")?a:"?"+a,P_=a=>!a||a==="#"?"":a.startsWith("#")?a:"#"+a,lc=class{constructor(a,n,l,s=!1){this.status=a,this.statusText=n||"",this.internal=s,l instanceof Error?(this.data=l.toString(),this.error=l):this.data=l}};function Js(a){return a!=null&&typeof a.status=="number"&&typeof a.statusText=="string"&&typeof a.internal=="boolean"&&"data"in a}function nr(a){return a.map(n=>n.route.path).filter(Boolean).join("/").replace(/\/\/*/g,"/")||"/"}var Ia=Symbol("Uninstrumented");function W_(a,n){let l={lazy:[],"lazy.loader":[],"lazy.action":[],"lazy.middleware":[],middleware:[],loader:[],action:[]};a.forEach(o=>o({id:n.id,index:n.index,path:n.path,instrument(c){let u=Object.keys(l);for(let h of u)c[h]&&l[h].push(c[h])}}));let s={};if(typeof n.lazy=="function"&&l.lazy.length>0){let o=Ol(l.lazy,n.lazy,()=>{});o&&(s.lazy=o)}if(typeof n.lazy=="object"){let o=n.lazy;["middleware","loader","action"].forEach(c=>{let u=o[c],h=l[`lazy.${c}`];if(typeof u=="function"&&h.length>0){let m=Ol(h,u,()=>{});m&&(s.lazy=Object.assign(s.lazy||{},{[c]:m}))}})}return["loader","action"].forEach(o=>{let c=n[o];if(typeof c=="function"&&l[o].length>0){let u=c[Ia]??c,h=Ol(l[o],u,(...m)=>Op(m[0]));h&&(h[Ia]=u,s[o]=h)}}),n.middleware&&n.middleware.length>0&&l.middleware.length>0&&(s.middleware=n.middleware.map(o=>{let c=o[Ia]??o,u=Ol(l.middleware,c,(...h)=>Op(h[0]));return u?(u[Ia]=c,u):o})),s}function I_(a,n){let l={navigate:[],fetch:[]};if(n.forEach(s=>s({instrument(o){let c=Object.keys(o);for(let u of c)o[u]&&l[u].push(o[u])}})),l.navigate.length>0){let s=a.navigate[Ia]??a.navigate,o=Ol(l.navigate,s,(...c)=>{let[u,h]=c;return{to:typeof u=="number"||typeof u=="string"?u:u?Jn(u):".",...wp(a,h??{})}});o&&(o[Ia]=s,a.navigate=o)}if(l.fetch.length>0){let s=a.fetch[Ia]??a.fetch,o=Ol(l.fetch,s,(...c)=>{let[u,,h,m]=c;return{href:h??".",fetcherKey:u,...wp(a,m??{})}});o&&(o[Ia]=s,a.fetch=o)}return a}function Ol(a,n,l){return a.length===0?null:async(...s)=>{let o=await iy(a,l(...s),()=>n(...s),a.length-1);if(o.type==="error")throw o.value;return o.value}}async function iy(a,n,l,s){let o=a[s],c;if(o){let u,h=async()=>(u?console.error("You cannot call instrumented handlers more than once"):u=iy(a,n,l,s-1),c=await u,wt(c,"Expected a result"),c.type==="error"&&c.value instanceof Error?{status:"error",error:c.value}:{status:"success",error:void 0});try{await o(h,n)}catch(m){console.error("An instrumentation function threw an error:",m)}u||await h(),await u}else try{c={type:"success",value:await l()}}catch(u){c={type:"error",value:u}}return c||{type:"error",value:new Error("No result assigned in instrumentation chain.")}}function Op(a){let{request:n,context:l,params:s,unstable_pattern:o}=a;return{request:t1(n),params:{...s},unstable_pattern:o,context:e1(l)}}function wp(a,n){return{currentUrl:Jn(a.state.location),..."formMethod"in n?{formMethod:n.formMethod}:{},..."formEncType"in n?{formEncType:n.formEncType}:{},..."formData"in n?{formData:n.formData}:{},..."body"in n?{body:n.body}:{}}}function t1(a){return{method:a.method,url:a.url,headers:{get:(...n)=>a.headers.get(...n)}}}function e1(a){if(a1(a)){let n={...a};return Object.freeze(n),n}else return{get:n=>a.get(n)}}var n1=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function a1(a){if(a===null||typeof a!="object")return!1;const n=Object.getPrototypeOf(a);return n===Object.prototype||n===null||Object.getOwnPropertyNames(n).sort().join("\0")===n1}var ly=["POST","PUT","PATCH","DELETE"],i1=new Set(ly),l1=["GET",...ly],s1=new Set(l1),r1=new Set([301,302,303,307,308]),o1=new Set([307,308]),Uf={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},c1={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},ws={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},u1=a=>({hasErrorBoundary:!!a.hasErrorBoundary}),sy="remix-router-transitions",ry=Symbol("ResetLoaderData");function f1(a){const n=a.window?a.window:typeof window<"u"?window:void 0,l=typeof n<"u"&&typeof n.document<"u"&&typeof n.document.createElement<"u";wt(a.routes.length>0,"You must provide a non-empty routes array to createRouter");let s=a.hydrationRouteProperties||[],o=a.mapRouteProperties||u1,c=o;if(a.unstable_instrumentations){let M=a.unstable_instrumentations;c=R=>({...o(R),...W_(M.map(H=>H.route).filter(Boolean),R)})}let u={},h=Fs(a.routes,c,void 0,u),m,g=a.basename||"/";g.startsWith("/")||(g=`/${g}`);let v=a.dataStrategy||p1,y={...a.future},_=null,S=new Set,O=null,U=null,k=null,Y=a.hydrationData!=null,A=Pa(h,a.history.location,g),X=!1,P=null,J;if(A==null&&!a.patchRoutesOnNavigation){let M=Mn(404,{pathname:a.history.location.pathname}),{matches:R,route:H}=Eo(h);J=!0,A=R,P={[H.id]:M}}else if(A&&!a.hydrationData&&mi(A,h,a.history.location.pathname).active&&(A=null),A)if(A.some(M=>M.route.lazy))J=!1;else if(!A.some(M=>rd(M.route)))J=!0;else{let M=a.hydrationData?a.hydrationData.loaderData:null,R=a.hydrationData?a.hydrationData.errors:null;if(R){let H=A.findIndex(K=>R[K.route.id]!==void 0);J=A.slice(0,H+1).every(K=>!Pf(K.route,M,R))}else J=A.every(H=>!Pf(H.route,M,R))}else{J=!1,A=[];let M=mi(null,h,a.history.location.pathname);M.active&&M.matches&&(X=!0,A=M.matches)}let rt,D={historyAction:a.history.action,location:a.history.location,matches:A,initialized:J,navigation:Uf,restoreScrollPosition:a.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:a.hydrationData&&a.hydrationData.loaderData||{},actionData:a.hydrationData&&a.hydrationData.actionData||null,errors:a.hydrationData&&a.hydrationData.errors||P,fetchers:new Map,blockers:new Map},nt="POP",at=null,pt=!1,ft,xt=!1,Mt=new Map,St=null,ot=!1,j=!1,Z=new Set,W=new Map,dt=0,Et=-1,T=new Map,V=new Set,F=new Map,et=new Map,ht=new Set,bt=new Map,Lt,ue=null;function ae(){if(_=a.history.listen(({action:M,location:R,delta:H})=>{if(Lt){Lt(),Lt=void 0;return}ce(bt.size===0||H!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let K=fi({currentLocation:D.location,nextLocation:R,historyAction:M});if(K&&H!=null){let I=new Promise(mt=>{Lt=mt});a.history.go(H*-1),Wn(K,{state:"blocked",location:R,proceed(){Wn(K,{state:"proceeding",proceed:void 0,reset:void 0,location:R}),I.then(()=>a.history.go(H))},reset(){let mt=new Map(D.blockers);mt.set(K,ws),ge({blockers:mt})}}),at?.resolve(),at=null;return}return On(M,R)}),l){A1(n,Mt);let M=()=>j1(n,Mt);n.addEventListener("pagehide",M),St=()=>n.removeEventListener("pagehide",M)}return D.initialized||On("POP",D.location,{initialHydration:!0}),rt}function oi(){_&&_(),St&&St(),S.clear(),ft&&ft.abort(),D.fetchers.forEach((M,R)=>Hl(R)),D.blockers.forEach((M,R)=>cr(R))}function qi(M){return S.add(M),()=>S.delete(M)}function ge(M,R={}){M.matches&&(M.matches=M.matches.map(I=>{let mt=u[I.route.id],lt=I.route;return lt.element!==mt.element||lt.errorElement!==mt.errorElement||lt.hydrateFallbackElement!==mt.hydrateFallbackElement?{...I,route:mt}:I})),D={...D,...M};let H=[],K=[];D.fetchers.forEach((I,mt)=>{I.state==="idle"&&(ht.has(mt)?H.push(mt):K.push(mt))}),ht.forEach(I=>{!D.fetchers.has(I)&&!W.has(I)&&H.push(I)}),[...S].forEach(I=>I(D,{deletedFetchers:H,newErrors:M.errors??null,viewTransitionOpts:R.viewTransitionOpts,flushSync:R.flushSync===!0})),H.forEach(I=>Hl(I)),K.forEach(I=>D.fetchers.delete(I))}function Pn(M,R,{flushSync:H}={}){let K=D.actionData!=null&&D.navigation.formMethod!=null&&He(D.navigation.formMethod)&&D.navigation.state==="loading"&&M.state?._isRedirect!==!0,I;R.actionData?Object.keys(R.actionData).length>0?I=R.actionData:I=null:K?I=D.actionData:I=null;let mt=R.loaderData?kp(D.loaderData,R.loaderData,R.matches||[],R.errors):D.loaderData,lt=D.blockers;lt.size>0&&(lt=new Map(lt),lt.forEach((gt,vt)=>lt.set(vt,ws)));let tt=ot?!1:ur(M,R.matches||D.matches),it=pt===!0||D.navigation.formMethod!=null&&He(D.navigation.formMethod)&&M.state?._isRedirect!==!0;m&&(h=m,m=void 0),ot||nt==="POP"||(nt==="PUSH"?a.history.push(M,M.state):nt==="REPLACE"&&a.history.replace(M,M.state));let ut;if(nt==="POP"){let gt=Mt.get(D.location.pathname);gt&>.has(M.pathname)?ut={currentLocation:D.location,nextLocation:M}:Mt.has(M.pathname)&&(ut={currentLocation:M,nextLocation:D.location})}else if(xt){let gt=Mt.get(D.location.pathname);gt?gt.add(M.pathname):(gt=new Set([M.pathname]),Mt.set(D.location.pathname,gt)),ut={currentLocation:D.location,nextLocation:M}}ge({...R,actionData:I,loaderData:mt,historyAction:nt,location:M,initialized:!0,navigation:Uf,revalidation:"idle",restoreScrollPosition:tt,preventScrollReset:it,blockers:lt},{viewTransitionOpts:ut,flushSync:H===!0}),nt="POP",pt=!1,xt=!1,ot=!1,j=!1,at?.resolve(),at=null,ue?.resolve(),ue=null}async function Hn(M,R){if(at?.resolve(),at=null,typeof M=="number"){at||(at=Xp());let $t=at.promise;return a.history.go(M),$t}let H=Jf(D.location,D.matches,g,M,R?.fromRouteId,R?.relative),{path:K,submission:I,error:mt}=zp(!1,H,R),lt=D.location,tt=Ks(D.location,K,R&&R.state);tt={...tt,...a.history.encodeLocation(tt)};let it=R&&R.replace!=null?R.replace:void 0,ut="PUSH";it===!0?ut="REPLACE":it===!1||I!=null&&He(I.formMethod)&&I.formAction===D.location.pathname+D.location.search&&(ut="REPLACE");let gt=R&&"preventScrollReset"in R?R.preventScrollReset===!0:void 0,vt=(R&&R.flushSync)===!0,Bt=fi({currentLocation:lt,nextLocation:tt,historyAction:ut});if(Bt){Wn(Bt,{state:"blocked",location:tt,proceed(){Wn(Bt,{state:"proceeding",proceed:void 0,reset:void 0,location:tt}),Hn(M,R)},reset(){let $t=new Map(D.blockers);$t.set(Bt,ws),ge({blockers:$t})}});return}await On(ut,tt,{submission:I,pendingError:mt,preventScrollReset:gt,replace:R&&R.replace,enableViewTransition:R&&R.viewTransition,flushSync:vt})}function jl(){ue||(ue=Xp()),Xi(),ge({revalidation:"loading"});let M=ue.promise;return D.navigation.state==="submitting"?M:D.navigation.state==="idle"?(On(D.historyAction,D.location,{startUninterruptedRevalidation:!0}),M):(On(nt||D.historyAction,D.navigation.location,{overrideNavigation:D.navigation,enableViewTransition:xt===!0}),M)}async function On(M,R,H){ft&&ft.abort(),ft=null,nt=M,ot=(H&&H.startUninterruptedRevalidation)===!0,hi(D.location,D.matches),pt=(H&&H.preventScrollReset)===!0,xt=(H&&H.enableViewTransition)===!0;let K=m||h,I=H&&H.overrideNavigation,mt=H?.initialHydration&&D.matches&&D.matches.length>0&&!X?D.matches:Pa(K,R,g),lt=(H&&H.flushSync)===!0;if(mt&&D.initialized&&!j&&M1(D.location,R)&&!(H&&H.submission&&He(H.submission.formMethod))){Pn(R,{matches:mt},{flushSync:lt});return}let tt=mi(mt,K,R.pathname);if(tt.active&&tt.matches&&(mt=tt.matches),!mt){let{error:le,notFoundMatches:Ht,route:kt}=Sa(R.pathname);Pn(R,{matches:Ht,loaderData:{},errors:{[kt.id]:le}},{flushSync:lt});return}ft=new AbortController;let it=Dl(a.history,R,ft.signal,H&&H.submission),ut=a.getContext?await a.getContext():new Mp,gt;if(H&&H.pendingError)gt=[Wa(mt).route.id,{type:"error",error:H.pendingError}];else if(H&&H.submission&&He(H.submission.formMethod)){let le=await mc(it,R,H.submission,mt,ut,tt.active,H&&H.initialHydration===!0,{replace:H.replace,flushSync:lt});if(le.shortCircuited)return;if(le.pendingActionResult){let[Ht,kt]=le.pendingActionResult;if(un(kt)&&Js(kt.error)&&kt.error.status===404){ft=null,Pn(R,{matches:le.matches,loaderData:{},errors:{[Ht]:kt.error}});return}}mt=le.matches||mt,gt=le.pendingActionResult,I=Hf(R,H.submission),lt=!1,tt.active=!1,it=Dl(a.history,it.url,it.signal)}let{shortCircuited:vt,matches:Bt,loaderData:$t,errors:It}=await rr(it,R,mt,ut,tt.active,I,H&&H.submission,H&&H.fetcherSubmission,H&&H.replace,H&&H.initialHydration===!0,lt,gt);vt||(ft=null,Pn(R,{matches:Bt||mt,...Yp(gt),loaderData:$t,errors:It}))}async function mc(M,R,H,K,I,mt,lt,tt={}){Xi();let it=z1(R,H);if(ge({navigation:it},{flushSync:tt.flushSync===!0}),mt){let vt=await Ea(K,R.pathname,M.signal);if(vt.type==="aborted")return{shortCircuited:!0};if(vt.type==="error"){if(vt.partialMatches.length===0){let{matches:$t,route:It}=Eo(h);return{matches:$t,pendingActionResult:[It.id,{type:"error",error:vt.error}]}}let Bt=Wa(vt.partialMatches).route.id;return{matches:vt.partialMatches,pendingActionResult:[Bt,{type:"error",error:vt.error}]}}else if(vt.matches)K=vt.matches;else{let{notFoundMatches:Bt,error:$t,route:It}=Sa(R.pathname);return{matches:Bt,pendingActionResult:[It.id,{type:"error",error:$t}]}}}let ut,gt=Yo(K,R);if(!gt.route.action&&!gt.route.lazy)ut={type:"error",error:Mn(405,{method:M.method,pathname:R.pathname,routeId:gt.route.id})};else{let vt=wl(c,u,M,K,gt,lt?[]:s,I),Bt=await ci(M,vt,I,null);if(ut=Bt[gt.route.id],!ut){for(let $t of K)if(Bt[$t.route.id]){ut=Bt[$t.route.id];break}}if(M.signal.aborted)return{shortCircuited:!0}}if(Bi(ut)){let vt;return tt&&tt.replace!=null?vt=tt.replace:vt=Bp(ut.response.headers.get("Location"),new URL(M.url),g)===D.location.pathname+D.location.search,await fe(M,ut,!0,{submission:H,replace:vt}),{shortCircuited:!0}}if(un(ut)){let vt=Wa(K,gt.route.id);return(tt&&tt.replace)!==!0&&(nt="PUSH"),{matches:K,pendingActionResult:[vt.route.id,ut,gt.route.id]}}return{matches:K,pendingActionResult:[gt.route.id,ut]}}async function rr(M,R,H,K,I,mt,lt,tt,it,ut,gt,vt){let Bt=mt||Hf(R,lt),$t=lt||tt||Vp(Bt),It=!ot&&!ut;if(I){if(It){let Se=Vi(vt);ge({navigation:Bt,...Se!==void 0?{actionData:Se}:{}},{flushSync:gt})}let At=await Ea(H,R.pathname,M.signal);if(At.type==="aborted")return{shortCircuited:!0};if(At.type==="error"){if(At.partialMatches.length===0){let{matches:Rn,route:dn}=Eo(h);return{matches:Rn,loaderData:{},errors:{[dn.id]:At.error}}}let Se=Wa(At.partialMatches).route.id;return{matches:At.partialMatches,loaderData:{},errors:{[Se]:At.error}}}else if(At.matches)H=At.matches;else{let{error:Se,notFoundMatches:Rn,route:dn}=Sa(R.pathname);return{matches:Rn,loaderData:{},errors:{[dn.id]:Se}}}}let le=m||h,{dsMatches:Ht,revalidatingFetchers:kt}=Rp(M,K,c,u,a.history,D,H,$t,R,ut?[]:s,ut===!0,j,Z,ht,F,V,le,g,a.patchRoutesOnNavigation!=null,vt);if(Et=++dt,!a.dataStrategy&&!Ht.some(At=>At.shouldLoad)&&!Ht.some(At=>At.route.middleware&&At.route.middleware.length>0)&&kt.length===0){let At=Ae();return Pn(R,{matches:H,loaderData:{},errors:vt&&un(vt[1])?{[vt[0]]:vt[1].error}:null,...Yp(vt),...At?{fetchers:new Map(D.fetchers)}:{}},{flushSync:gt}),{shortCircuited:!0}}if(It){let At={};if(!I){At.navigation=Bt;let Se=Vi(vt);Se!==void 0&&(At.actionData=Se)}kt.length>0&&(At.fetchers=Nl(kt)),ge(At,{flushSync:gt})}kt.forEach(At=>{ie(At.key),At.controller&&W.set(At.key,At.controller)});let We=()=>kt.forEach(At=>ie(At.key));ft&&ft.signal.addEventListener("abort",We);let{loaderResults:fn,fetcherResults:Pt}=await Bl(Ht,kt,M,K);if(M.signal.aborted)return{shortCircuited:!0};ft&&ft.signal.removeEventListener("abort",We),kt.forEach(At=>W.delete(At.key));let Ie=Mo(fn);if(Ie)return await fe(M,Ie.result,!0,{replace:it}),{shortCircuited:!0};if(Ie=Mo(Pt),Ie)return V.add(Ie.key),await fe(M,Ie.result,!0,{replace:it}),{shortCircuited:!0};let{loaderData:Gi,errors:tn}=Hp(D,H,fn,vt,kt,Pt);ut&&D.errors&&(tn={...D.errors,...tn});let qe=Ae(),$i=or(Et),gi=qe||$i||kt.length>0;return{matches:H,loaderData:Gi,errors:tn,...gi?{fetchers:new Map(D.fetchers)}:{}}}function Vi(M){if(M&&!un(M[1]))return{[M[0]]:M[1].data};if(D.actionData)return Object.keys(D.actionData).length===0?null:D.actionData}function Nl(M){return M.forEach(R=>{let H=D.fetchers.get(R.key),K=zs(void 0,H?H.data:void 0);D.fetchers.set(R.key,K)}),new Map(D.fetchers)}async function Ll(M,R,H,K){ie(M);let I=(K&&K.flushSync)===!0,mt=m||h,lt=Jf(D.location,D.matches,g,H,R,K?.relative),tt=Pa(mt,lt,g),it=mi(tt,mt,lt);if(it.active&&it.matches&&(tt=it.matches),!tt){wn(M,R,Mn(404,{pathname:lt}),{flushSync:I});return}let{path:ut,submission:gt,error:vt}=zp(!0,lt,K);if(vt){wn(M,R,vt,{flushSync:I});return}let Bt=a.getContext?await a.getContext():new Mp,$t=(K&&K.preventScrollReset)===!0;if(gt&&He(gt.formMethod)){await gc(M,R,ut,tt,Bt,it.active,I,$t,gt);return}F.set(M,{routeId:R,path:ut}),await pc(M,R,ut,tt,Bt,it.active,I,$t,gt)}async function gc(M,R,H,K,I,mt,lt,tt,it){Xi(),F.delete(M);let ut=D.fetchers.get(M);Ye(M,R1(it,ut),{flushSync:lt});let gt=new AbortController,vt=Dl(a.history,H,gt.signal,it);if(mt){let Yt=await Ea(K,new URL(vt.url).pathname,vt.signal,M);if(Yt.type==="aborted")return;if(Yt.type==="error"){wn(M,R,Yt.error,{flushSync:lt});return}else if(Yt.matches)K=Yt.matches;else{wn(M,R,Mn(404,{pathname:H}),{flushSync:lt});return}}let Bt=Yo(K,H);if(!Bt.route.action&&!Bt.route.lazy){let Yt=Mn(405,{method:it.formMethod,pathname:H,routeId:R});wn(M,R,Yt,{flushSync:lt});return}W.set(M,gt);let $t=dt,It=wl(c,u,vt,K,Bt,s,I),le=await ci(vt,It,I,M),Ht=le[Bt.route.id];if(!Ht){for(let Yt of It)if(le[Yt.route.id]){Ht=le[Yt.route.id];break}}if(vt.signal.aborted){W.get(M)===gt&&W.delete(M);return}if(ht.has(M)){if(Bi(Ht)||un(Ht)){Ye(M,va(void 0));return}}else{if(Bi(Ht))if(W.delete(M),Et>$t){Ye(M,va(void 0));return}else return V.add(M),Ye(M,zs(it)),fe(vt,Ht,!1,{fetcherSubmission:it,preventScrollReset:tt});if(un(Ht)){wn(M,R,Ht.error);return}}let kt=D.navigation.location||D.location,We=Dl(a.history,kt,gt.signal),fn=m||h,Pt=D.navigation.state!=="idle"?Pa(fn,D.navigation.location,g):D.matches;wt(Pt,"Didn't find any matches after fetcher action");let Ie=++dt;T.set(M,Ie);let Gi=zs(it,Ht.data);D.fetchers.set(M,Gi);let{dsMatches:tn,revalidatingFetchers:qe}=Rp(We,I,c,u,a.history,D,Pt,it,kt,s,!1,j,Z,ht,F,V,fn,g,a.patchRoutesOnNavigation!=null,[Bt.route.id,Ht]);qe.filter(Yt=>Yt.key!==M).forEach(Yt=>{let Ce=Yt.key,kl=D.fetchers.get(Ce),_c=zs(void 0,kl?kl.data:void 0);D.fetchers.set(Ce,_c),ie(Ce),Yt.controller&&W.set(Ce,Yt.controller)}),ge({fetchers:new Map(D.fetchers)});let $i=()=>qe.forEach(Yt=>ie(Yt.key));gt.signal.addEventListener("abort",$i);let{loaderResults:gi,fetcherResults:At}=await Bl(tn,qe,We,I);if(gt.signal.aborted)return;if(gt.signal.removeEventListener("abort",$i),T.delete(M),W.delete(M),qe.forEach(Yt=>W.delete(Yt.key)),D.fetchers.has(M)){let Yt=va(Ht.data);D.fetchers.set(M,Yt)}let Se=Mo(gi);if(Se)return fe(We,Se.result,!1,{preventScrollReset:tt});if(Se=Mo(At),Se)return V.add(Se.key),fe(We,Se.result,!1,{preventScrollReset:tt});let{loaderData:Rn,errors:dn}=Hp(D,Pt,gi,void 0,qe,At);or(Ie),D.navigation.state==="loading"&&Ie>Et?(wt(nt,"Expected pending action"),ft&&ft.abort(),Pn(D.navigation.location,{matches:Pt,loaderData:Rn,errors:dn,fetchers:new Map(D.fetchers)})):(ge({errors:dn,loaderData:kp(D.loaderData,Rn,Pt,dn),fetchers:new Map(D.fetchers)}),j=!1)}async function pc(M,R,H,K,I,mt,lt,tt,it){let ut=D.fetchers.get(M);Ye(M,zs(it,ut?ut.data:void 0),{flushSync:lt});let gt=new AbortController,vt=Dl(a.history,H,gt.signal);if(mt){let kt=await Ea(K,new URL(vt.url).pathname,vt.signal,M);if(kt.type==="aborted")return;if(kt.type==="error"){wn(M,R,kt.error,{flushSync:lt});return}else if(kt.matches)K=kt.matches;else{wn(M,R,Mn(404,{pathname:H}),{flushSync:lt});return}}let Bt=Yo(K,H);W.set(M,gt);let $t=dt,It=wl(c,u,vt,K,Bt,s,I),Ht=(await ci(vt,It,I,M))[Bt.route.id];if(W.get(M)===gt&&W.delete(M),!vt.signal.aborted){if(ht.has(M)){Ye(M,va(void 0));return}if(Bi(Ht))if(Et>$t){Ye(M,va(void 0));return}else{V.add(M),await fe(vt,Ht,!1,{preventScrollReset:tt});return}if(un(Ht)){wn(M,R,Ht.error);return}Ye(M,va(Ht.data))}}async function fe(M,R,H,{submission:K,fetcherSubmission:I,preventScrollReset:mt,replace:lt}={}){H||(at?.resolve(),at=null),R.response.headers.has("X-Remix-Revalidate")&&(j=!0);let tt=R.response.headers.get("Location");wt(tt,"Expected a Location header on the redirect Response"),tt=Bp(tt,new URL(M.url),g);let it=Ks(D.location,tt,{_isRedirect:!0});if(l){let It=!1;if(R.response.headers.has("X-Remix-Reload-Document"))It=!0;else if(nc(tt)){const le=ty(tt,!0);It=le.origin!==n.location.origin||Tn(le.pathname,g)==null}if(It){lt?n.location.replace(tt):n.location.assign(tt);return}}ft=null;let ut=lt===!0||R.response.headers.has("X-Remix-Replace")?"REPLACE":"PUSH",{formMethod:gt,formAction:vt,formEncType:Bt}=D.navigation;!K&&!I&>&&vt&&Bt&&(K=Vp(D.navigation));let $t=K||I;if(o1.has(R.response.status)&&$t&&He($t.formMethod))await On(ut,it,{submission:{...$t,formAction:tt},preventScrollReset:mt||pt,enableViewTransition:H?xt:void 0});else{let It=Hf(it,K);await On(ut,it,{overrideNavigation:It,fetcherSubmission:I,preventScrollReset:mt||pt,enableViewTransition:H?xt:void 0})}}async function ci(M,R,H,K){let I,mt={};try{I=await y1(v,M,R,K,H,!1)}catch(lt){return R.filter(tt=>tt.shouldLoad).forEach(tt=>{mt[tt.route.id]={type:"error",error:lt}}),mt}if(M.signal.aborted)return mt;for(let[lt,tt]of Object.entries(I))if(O1(tt)){let it=tt.result;mt[lt]={type:"redirect",response:S1(it,M,lt,R,g)}}else mt[lt]=await x1(tt);return mt}async function Bl(M,R,H,K){let I=ci(H,M,K,null),mt=Promise.all(R.map(async it=>{if(it.matches&&it.match&&it.request&&it.controller){let gt=(await ci(it.request,it.matches,K,it.key))[it.match.route.id];return{[it.key]:gt}}else return Promise.resolve({[it.key]:{type:"error",error:Mn(404,{pathname:it.path})}})})),lt=await I,tt=(await mt).reduce((it,ut)=>Object.assign(it,ut),{});return{loaderResults:lt,fetcherResults:tt}}function Xi(){j=!0,F.forEach((M,R)=>{W.has(R)&&Z.add(R),ie(R)})}function Ye(M,R,H={}){D.fetchers.set(M,R),ge({fetchers:new Map(D.fetchers)},{flushSync:(H&&H.flushSync)===!0})}function wn(M,R,H,K={}){let I=Wa(D.matches,R);Hl(M),ge({errors:{[I.route.id]:H},fetchers:new Map(D.fetchers)},{flushSync:(K&&K.flushSync)===!0})}function Ul(M){return et.set(M,(et.get(M)||0)+1),ht.has(M)&&ht.delete(M),D.fetchers.get(M)||c1}function vc(M,R){ie(M,R?.reason),Ye(M,va(null))}function Hl(M){let R=D.fetchers.get(M);W.has(M)&&!(R&&R.state==="loading"&&T.has(M))&&ie(M),F.delete(M),T.delete(M),V.delete(M),ht.delete(M),Z.delete(M),D.fetchers.delete(M)}function ui(M){let R=(et.get(M)||0)-1;R<=0?(et.delete(M),ht.add(M)):et.set(M,R),ge({fetchers:new Map(D.fetchers)})}function ie(M,R){let H=W.get(M);H&&(H.abort(R),W.delete(M))}function zn(M){for(let R of M){let H=Ul(R),K=va(H.data);D.fetchers.set(R,K)}}function Ae(){let M=[],R=!1;for(let H of V){let K=D.fetchers.get(H);wt(K,`Expected fetcher: ${H}`),K.state==="loading"&&(V.delete(H),M.push(H),R=!0)}return zn(M),R}function or(M){let R=[];for(let[H,K]of T)if(K0}function yc(M,R){let H=D.blockers.get(M)||ws;return bt.get(M)!==R&&bt.set(M,R),H}function cr(M){D.blockers.delete(M),bt.delete(M)}function Wn(M,R){let H=D.blockers.get(M)||ws;wt(H.state==="unblocked"&&R.state==="blocked"||H.state==="blocked"&&R.state==="blocked"||H.state==="blocked"&&R.state==="proceeding"||H.state==="blocked"&&R.state==="unblocked"||H.state==="proceeding"&&R.state==="unblocked",`Invalid blocker state transition: ${H.state} -> ${R.state}`);let K=new Map(D.blockers);K.set(M,R),ge({blockers:K})}function fi({currentLocation:M,nextLocation:R,historyAction:H}){if(bt.size===0)return;bt.size>1&&ce(!1,"A router only supports one blocker at a time");let K=Array.from(bt.entries()),[I,mt]=K[K.length-1],lt=D.blockers.get(I);if(!(lt&<.state==="proceeding")&&mt({currentLocation:M,nextLocation:R,historyAction:H}))return I}function Sa(M){let R=Mn(404,{pathname:M}),H=m||h,{matches:K,route:I}=Eo(H);return{notFoundMatches:K,route:I,error:R}}function In(M,R,H){if(O=M,k=R,U=H||null,!Y&&D.navigation===Uf){Y=!0;let K=ur(D.location,D.matches);K!=null&&ge({restoreScrollPosition:K})}return()=>{O=null,k=null,U=null}}function di(M,R){return U&&U(M,R.map(K=>j_(K,D.loaderData)))||M.key}function hi(M,R){if(O&&k){let H=di(M,R);O[H]=k()}}function ur(M,R){if(O){let H=di(M,R),K=O[H];if(typeof K=="number")return K}return null}function mi(M,R,H){if(a.patchRoutesOnNavigation)if(M){if(Object.keys(M[0].params).length>0)return{active:!0,matches:qs(R,H,g,!0)}}else return{active:!0,matches:qs(R,H,g,!0)||[]};return{active:!1,matches:null}}async function Ea(M,R,H,K){if(!a.patchRoutesOnNavigation)return{type:"success",matches:M};let I=M;for(;;){let mt=m==null,lt=m||h,tt=u;try{await a.patchRoutesOnNavigation({signal:H,path:R,matches:I,fetcherKey:K,patch:(gt,vt)=>{H.aborted||Ap(gt,vt,lt,tt,c,!1)}})}catch(gt){return{type:"error",error:gt,partialMatches:I}}finally{mt&&!H.aborted&&(h=[...h])}if(H.aborted)return{type:"aborted"};let it=Pa(lt,R,g),ut=null;if(it){if(Object.keys(it[0].params).length===0)return{type:"success",matches:it};if(ut=qs(lt,R,g,!0),!(ut&&I.lengthH.route.id===R[K].route.id)}function bc(M){u={},m=Fs(M,c,void 0,u)}function fr(M,R,H=!1){let K=m==null;Ap(M,R,m||h,u,c,H),K&&(h=[...h],ge({}))}return rt={get basename(){return g},get future(){return y},get state(){return D},get routes(){return h},get window(){return n},initialize:ae,subscribe:qi,enableScrollRestoration:In,navigate:Hn,fetch:Ll,revalidate:jl,createHref:M=>a.history.createHref(M),encodeLocation:M=>a.history.encodeLocation(M),getFetcher:Ul,resetFetcher:vc,deleteFetcher:ui,dispose:oi,getBlocker:yc,deleteBlocker:cr,patchRoutes:fr,_internalFetchControllers:W,_internalSetRoutes:bc,_internalSetStateDoNotUseOrYouWillBreakYourApp(M){ge(M)}},a.unstable_instrumentations&&(rt=I_(rt,a.unstable_instrumentations.map(M=>M.router).filter(Boolean))),rt}function d1(a){return a!=null&&("formData"in a&&a.formData!=null||"body"in a&&a.body!==void 0)}function Jf(a,n,l,s,o,c){let u,h;if(o){u=[];for(let g of n)if(u.push(g),g.route.id===o){h=g;break}}else u=n,h=n[n.length-1];let m=ic(s||".",ac(u),Tn(a.pathname,l)||a.pathname,c==="path");if(s==null&&(m.search=a.search,m.hash=a.hash),(s==null||s===""||s===".")&&h){let g=od(m.search);if(h.route.index&&!g)m.search=m.search?m.search.replace(/^\?/,"?index&"):"?index";else if(!h.route.index&&g){let v=new URLSearchParams(m.search),y=v.getAll("index");v.delete("index"),y.filter(S=>S).forEach(S=>v.append("index",S));let _=v.toString();m.search=_?`?${_}`:""}}return l!=="/"&&(m.pathname=Q_({basename:l,pathname:m.pathname})),Jn(m)}function zp(a,n,l){if(!l||!d1(l))return{path:n};if(l.formMethod&&!w1(l.formMethod))return{path:n,error:Mn(405,{method:l.formMethod})};let s=()=>({path:n,error:Mn(400,{type:"invalid-body"})}),c=(l.formMethod||"get").toUpperCase(),u=hy(n);if(l.body!==void 0){if(l.formEncType==="text/plain"){if(!He(c))return s();let y=typeof l.body=="string"?l.body:l.body instanceof FormData||l.body instanceof URLSearchParams?Array.from(l.body.entries()).reduce((_,[S,O])=>`${_}${S}=${O} -`,""):String(l.body);return{path:n,submission:{formMethod:c,formAction:u,formEncType:l.formEncType,formData:void 0,json:void 0,text:y}}}else if(l.formEncType==="application/json"){if(!He(c))return s();try{let y=typeof l.body=="string"?JSON.parse(l.body):l.body;return{path:n,submission:{formMethod:c,formAction:u,formEncType:l.formEncType,formData:void 0,json:y,text:void 0}}}catch{return s()}}}wt(typeof FormData=="function","FormData is not available in this environment");let h,m;if(l.formData)h=If(l.formData),m=l.formData;else if(l.body instanceof FormData)h=If(l.body),m=l.body;else if(l.body instanceof URLSearchParams)h=l.body,m=Up(h);else if(l.body==null)h=new URLSearchParams,m=new FormData;else try{h=new URLSearchParams(l.body),m=Up(h)}catch{return s()}let g={formMethod:c,formAction:u,formEncType:l&&l.formEncType||"application/x-www-form-urlencoded",formData:m,json:void 0,text:void 0};if(He(g.formMethod))return{path:n,submission:g};let v=li(n);return a&&v.search&&od(v.search)&&h.append("index",""),v.search=`?${h}`,{path:Jn(v),submission:g}}function Rp(a,n,l,s,o,c,u,h,m,g,v,y,_,S,O,U,k,Y,A,X){let P=X?un(X[1])?X[1].error:X[1].data:void 0,J=o.createURL(c.location),rt=o.createURL(m),D;if(v&&c.errors){let St=Object.keys(c.errors)[0];D=u.findIndex(ot=>ot.route.id===St)}else if(X&&un(X[1])){let St=X[0];D=u.findIndex(ot=>ot.route.id===St)-1}let nt=X?X[1].statusCode:void 0,at=nt&&nt>=400,pt={currentUrl:J,currentParams:c.matches[0]?.params||{},nextUrl:rt,nextParams:u[0].params,...h,actionResult:P,actionStatus:nt},ft=nr(u),xt=u.map((St,ot)=>{let{route:j}=St,Z=null;if(D!=null&&ot>D?Z=!1:j.lazy?Z=!0:rd(j)?v?Z=Pf(j,c.loaderData,c.errors):h1(c.loaderData,c.matches[ot],St)&&(Z=!0):Z=!1,Z!==null)return Wf(l,s,a,ft,St,g,n,Z);let W=at?!1:y||J.pathname+J.search===rt.pathname+rt.search||J.search!==rt.search||m1(c.matches[ot],St),dt={...pt,defaultShouldRevalidate:W},Et=Qo(St,dt);return Wf(l,s,a,ft,St,g,n,Et,dt)}),Mt=[];return O.forEach((St,ot)=>{if(v||!u.some(F=>F.route.id===St.routeId)||S.has(ot))return;let j=c.fetchers.get(ot),Z=j&&j.state!=="idle"&&j.data===void 0,W=Pa(k,St.path,Y);if(!W){if(A&&Z)return;Mt.push({key:ot,routeId:St.routeId,path:St.path,matches:null,match:null,request:null,controller:null});return}if(U.has(ot))return;let dt=Yo(W,St.path),Et=new AbortController,T=Dl(o,St.path,Et.signal),V=null;if(_.has(ot))_.delete(ot),V=wl(l,s,T,W,dt,g,n);else if(Z)y&&(V=wl(l,s,T,W,dt,g,n));else{let F={...pt,defaultShouldRevalidate:at?!1:y};Qo(dt,F)&&(V=wl(l,s,T,W,dt,g,n,F))}V&&Mt.push({key:ot,routeId:St.routeId,path:St.path,matches:V,match:dt,request:T,controller:Et})}),{dsMatches:xt,revalidatingFetchers:Mt}}function rd(a){return a.loader!=null||a.middleware!=null&&a.middleware.length>0}function Pf(a,n,l){if(a.lazy)return!0;if(!rd(a))return!1;let s=n!=null&&a.id in n,o=l!=null&&l[a.id]!==void 0;return!s&&o?!1:typeof a.loader=="function"&&a.loader.hydrate===!0?!0:!s&&!o}function h1(a,n,l){let s=!n||l.route.id!==n.route.id,o=!a.hasOwnProperty(l.route.id);return s||o}function m1(a,n){let l=a.route.path;return a.pathname!==n.pathname||l!=null&&l.endsWith("*")&&a.params["*"]!==n.params["*"]}function Qo(a,n){if(a.route.shouldRevalidate){let l=a.route.shouldRevalidate(n);if(typeof l=="boolean")return l}return n.defaultShouldRevalidate}function Ap(a,n,l,s,o,c){let u;if(a){let g=s[a];wt(g,`No route found to patch children into: routeId = ${a}`),g.children||(g.children=[]),u=g.children}else u=l;let h=[],m=[];if(n.forEach(g=>{let v=u.find(y=>oy(g,y));v?m.push({existingRoute:v,newRoute:g}):h.push(g)}),h.length>0){let g=Fs(h,o,[a||"_","patch",String(u?.length||"0")],s);u.push(...g)}if(c&&m.length>0)for(let g=0;gn.children?.some(o=>oy(l,o))):!1}var jp=new WeakMap,cy=({key:a,route:n,manifest:l,mapRouteProperties:s})=>{let o=l[n.id];if(wt(o,"No route found in manifest"),!o.lazy||typeof o.lazy!="object")return;let c=o.lazy[a];if(!c)return;let u=jp.get(o);u||(u={},jp.set(o,u));let h=u[a];if(h)return h;let m=(async()=>{let g=w_(a),y=o[a]!==void 0&&a!=="hasErrorBoundary";if(g)ce(!g,"Route property "+a+" is not a supported lazy route property. This property will be ignored."),u[a]=Promise.resolve();else if(y)ce(!1,`Route "${o.id}" has a static property "${a}" defined. The lazy property will be ignored.`);else{let _=await c();_!=null&&(Object.assign(o,{[a]:_}),Object.assign(o,s(o)))}typeof o.lazy=="object"&&(o.lazy[a]=void 0,Object.values(o.lazy).every(_=>_===void 0)&&(o.lazy=void 0))})();return u[a]=m,m},Np=new WeakMap;function g1(a,n,l,s,o){let c=l[a.id];if(wt(c,"No route found in manifest"),!a.lazy)return{lazyRoutePromise:void 0,lazyHandlerPromise:void 0};if(typeof a.lazy=="function"){let v=Np.get(c);if(v)return{lazyRoutePromise:v,lazyHandlerPromise:v};let y=(async()=>{wt(typeof a.lazy=="function","No lazy route function found");let _=await a.lazy(),S={};for(let O in _){let U=_[O];if(U===void 0)continue;let k=R_(O),A=c[O]!==void 0&&O!=="hasErrorBoundary";k?ce(!k,"Route property "+O+" is not a supported property to be returned from a lazy route function. This property will be ignored."):A?ce(!A,`Route "${c.id}" has a static property "${O}" defined but its lazy function is also returning a value for this property. The lazy route property "${O}" will be ignored.`):S[O]=U}Object.assign(c,S),Object.assign(c,{...s(c),lazy:void 0})})();return Np.set(c,y),y.catch(()=>{}),{lazyRoutePromise:y,lazyHandlerPromise:y}}let u=Object.keys(a.lazy),h=[],m;for(let v of u){if(o&&o.includes(v))continue;let y=cy({key:v,route:a,manifest:l,mapRouteProperties:s});y&&(h.push(y),v===n&&(m=y))}let g=h.length>0?Promise.all(h).then(()=>{}):void 0;return g?.catch(()=>{}),m?.catch(()=>{}),{lazyRoutePromise:g,lazyHandlerPromise:m}}async function Lp(a){let n=a.matches.filter(o=>o.shouldLoad),l={};return(await Promise.all(n.map(o=>o.resolve()))).forEach((o,c)=>{l[n[c].route.id]=o}),l}async function p1(a){return a.matches.some(n=>n.route.middleware)?uy(a,()=>Lp(a)):Lp(a)}function uy(a,n){return v1(a,n,s=>s,T1,l);function l(s,o,c){if(c)return Promise.resolve(Object.assign(c.value,{[o]:{type:"error",result:s}}));{let{matches:u}=a,h=Math.min(Math.max(u.findIndex(g=>g.route.id===o),0),Math.max(u.findIndex(g=>g.shouldCallHandler()),0)),m=Wa(u,u[h].route.id).route.id;return Promise.resolve({[m]:{type:"error",result:s}})}}}async function v1(a,n,l,s,o){let{matches:c,request:u,params:h,context:m,unstable_pattern:g}=a,v=c.flatMap(_=>_.route.middleware?_.route.middleware.map(S=>[_.route.id,S]):[]);return await fy({request:u,params:h,context:m,unstable_pattern:g},v,n,l,s,o)}async function fy(a,n,l,s,o,c,u=0){let{request:h}=a;if(h.signal.aborted)throw h.signal.reason??new Error(`Request aborted: ${h.method} ${h.url}`);let m=n[u];if(!m)return await l();let[g,v]=m,y,_=async()=>{if(y)throw new Error("You may only call `next()` once per middleware");try{return y={value:await fy(a,n,l,s,o,c,u+1)},y.value}catch(S){return y={value:await c(S,g,y)},y.value}};try{let S=await v(a,_),O=S!=null?s(S):void 0;return o(O)?O:y?O??y.value:(y={value:await _()},y.value)}catch(S){return await c(S,g,y)}}function dy(a,n,l,s,o){let c=cy({key:"middleware",route:s.route,manifest:n,mapRouteProperties:a}),u=g1(s.route,He(l.method)?"action":"loader",n,a,o);return{middleware:c,route:u.lazyRoutePromise,handler:u.lazyHandlerPromise}}function Wf(a,n,l,s,o,c,u,h,m=null){let g=!1,v=dy(a,n,l,o,c);return{...o,_lazyPromises:v,shouldLoad:h,shouldRevalidateArgs:m,shouldCallHandler(y){return g=!0,m?typeof y=="boolean"?Qo(o,{...m,defaultShouldRevalidate:y}):Qo(o,m):h},resolve(y){let{lazy:_,loader:S,middleware:O}=o.route,U=g||h||y&&!He(l.method)&&(_||S),k=O&&O.length>0&&!S&&!_;return U&&(He(l.method)||!k)?b1({request:l,unstable_pattern:s,match:o,lazyHandlerPromise:v?.handler,lazyRoutePromise:v?.route,handlerOverride:y,scopedContext:u}):Promise.resolve({type:"data",result:void 0})}}}function wl(a,n,l,s,o,c,u,h=null){return s.map(m=>m.route.id!==o.route.id?{...m,shouldLoad:!1,shouldRevalidateArgs:h,shouldCallHandler:()=>!1,_lazyPromises:dy(a,n,l,m,c),resolve:()=>Promise.resolve({type:"data",result:void 0})}:Wf(a,n,l,nr(s),m,c,u,!0,h))}async function y1(a,n,l,s,o,c){l.some(g=>g._lazyPromises?.middleware)&&await Promise.all(l.map(g=>g._lazyPromises?.middleware));let u={request:n,unstable_pattern:nr(l),params:l[0].params,context:o,matches:l},m=await a({...u,fetcherKey:s,runClientMiddleware:g=>{let v=u;return uy(v,()=>g({...v,fetcherKey:s,runClientMiddleware:()=>{throw new Error("Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler")}}))}});try{await Promise.all(l.flatMap(g=>[g._lazyPromises?.handler,g._lazyPromises?.route]))}catch{}return m}async function b1({request:a,unstable_pattern:n,match:l,lazyHandlerPromise:s,lazyRoutePromise:o,handlerOverride:c,scopedContext:u}){let h,m,g=He(a.method),v=g?"action":"loader",y=_=>{let S,O=new Promise((Y,A)=>S=A);m=()=>S(),a.signal.addEventListener("abort",m);let U=Y=>typeof _!="function"?Promise.reject(new Error(`You cannot call the handler for a route which defines a boolean "${v}" [routeId: ${l.route.id}]`)):_({request:a,unstable_pattern:n,params:l.params,context:u},...Y!==void 0?[Y]:[]),k=(async()=>{try{return{type:"data",result:await(c?c(A=>U(A)):U())}}catch(Y){return{type:"error",result:Y}}})();return Promise.race([k,O])};try{let _=g?l.route.action:l.route.loader;if(s||o)if(_){let S,[O]=await Promise.all([y(_).catch(U=>{S=U}),s,o]);if(S!==void 0)throw S;h=O}else{await s;let S=g?l.route.action:l.route.loader;if(S)[h]=await Promise.all([y(S),o]);else if(v==="action"){let O=new URL(a.url),U=O.pathname+O.search;throw Mn(405,{method:a.method,pathname:U,routeId:l.route.id})}else return{type:"data",result:void 0}}else if(_)h=await y(_);else{let S=new URL(a.url),O=S.pathname+S.search;throw Mn(404,{pathname:O})}}catch(_){return{type:"error",result:_}}finally{m&&a.signal.removeEventListener("abort",m)}return h}async function _1(a){let n=a.headers.get("Content-Type");return n&&/\bapplication\/json\b/.test(n)?a.body==null?null:a.json():a.text()}async function x1(a){let{result:n,type:l}=a;if(my(n)){let s;try{s=await _1(n)}catch(o){return{type:"error",error:o}}return l==="error"?{type:"error",error:new lc(n.status,n.statusText,s),statusCode:n.status,headers:n.headers}:{type:"data",data:s,statusCode:n.status,headers:n.headers}}return l==="error"?qp(n)?n.data instanceof Error?{type:"error",error:n.data,statusCode:n.init?.status,headers:n.init?.headers?new Headers(n.init.headers):void 0}:{type:"error",error:C1(n),statusCode:Js(n)?n.status:void 0,headers:n.init?.headers?new Headers(n.init.headers):void 0}:{type:"error",error:n,statusCode:Js(n)?n.status:void 0}:qp(n)?{type:"data",data:n.data,statusCode:n.init?.status,headers:n.init?.headers?new Headers(n.init.headers):void 0}:{type:"data",data:n}}function S1(a,n,l,s,o){let c=a.headers.get("Location");if(wt(c,"Redirects returned/thrown from loaders/actions must have a Location header"),!nc(c)){let u=s.slice(0,s.findIndex(h=>h.route.id===l)+1);c=Jf(new URL(n.url),u,o,c),a.headers.set("Location",c)}return a}function Bp(a,n,l){if(nc(a)){let s=a,o=s.startsWith("//")?new URL(n.protocol+s):new URL(s),c=Tn(o.pathname,l)!=null;if(o.origin===n.origin&&c)return o.pathname+o.search+o.hash}return a}function Dl(a,n,l,s){let o=a.createURL(hy(n)).toString(),c={signal:l};if(s&&He(s.formMethod)){let{formMethod:u,formEncType:h}=s;c.method=u.toUpperCase(),h==="application/json"?(c.headers=new Headers({"Content-Type":h}),c.body=JSON.stringify(s.json)):h==="text/plain"?c.body=s.text:h==="application/x-www-form-urlencoded"&&s.formData?c.body=If(s.formData):c.body=s.formData}return new Request(o,c)}function If(a){let n=new URLSearchParams;for(let[l,s]of a.entries())n.append(l,typeof s=="string"?s:s.name);return n}function Up(a){let n=new FormData;for(let[l,s]of a.entries())n.append(l,s);return n}function E1(a,n,l,s=!1,o=!1){let c={},u=null,h,m=!1,g={},v=l&&un(l[1])?l[1].error:void 0;return a.forEach(y=>{if(!(y.route.id in n))return;let _=y.route.id,S=n[_];if(wt(!Bi(S),"Cannot handle redirect results in processLoaderData"),un(S)){let O=S.error;if(v!==void 0&&(O=v,v=void 0),u=u||{},o)u[_]=O;else{let U=Wa(a,_);u[U.route.id]==null&&(u[U.route.id]=O)}s||(c[_]=ry),m||(m=!0,h=Js(S.error)?S.error.status:500),S.headers&&(g[_]=S.headers)}else c[_]=S.data,S.statusCode&&S.statusCode!==200&&!m&&(h=S.statusCode),S.headers&&(g[_]=S.headers)}),v!==void 0&&l&&(u={[l[0]]:v},l[2]&&(c[l[2]]=void 0)),{loaderData:c,errors:u,statusCode:h||200,loaderHeaders:g}}function Hp(a,n,l,s,o,c){let{loaderData:u,errors:h}=E1(n,l,s);return o.filter(m=>!m.matches||m.matches.some(g=>g.shouldLoad)).forEach(m=>{let{key:g,match:v,controller:y}=m;if(y&&y.signal.aborted)return;let _=c[g];if(wt(_,"Did not find corresponding fetcher result"),un(_)){let S=Wa(a.matches,v?.route.id);h&&h[S.route.id]||(h={...h,[S.route.id]:_.error}),a.fetchers.delete(g)}else if(Bi(_))wt(!1,"Unhandled fetcher revalidation redirect");else{let S=va(_.data);a.fetchers.set(g,S)}}),{loaderData:u,errors:h}}function kp(a,n,l,s){let o=Object.entries(n).filter(([,c])=>c!==ry).reduce((c,[u,h])=>(c[u]=h,c),{});for(let c of l){let u=c.route.id;if(!n.hasOwnProperty(u)&&a.hasOwnProperty(u)&&c.route.loader&&(o[u]=a[u]),s&&s.hasOwnProperty(u))break}return o}function Yp(a){return a?un(a[1])?{actionData:{}}:{actionData:{[a[0]]:a[1].data}}:{}}function Wa(a,n){return(n?a.slice(0,a.findIndex(s=>s.route.id===n)+1):[...a]).reverse().find(s=>s.route.hasErrorBoundary===!0)||a[0]}function Eo(a){let n=a.length===1?a[0]:a.find(l=>l.index||!l.path||l.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:n}],route:n}}function Mn(a,{pathname:n,routeId:l,method:s,type:o,message:c}={}){let u="Unknown Server Error",h="Unknown @remix-run/router error";return a===400?(u="Bad Request",s&&n&&l?h=`You made a ${s} request to "${n}" but did not provide a \`loader\` for route "${l}", so there is no way to handle the request.`:o==="invalid-body"&&(h="Unable to encode submission body")):a===403?(u="Forbidden",h=`Route "${l}" does not match URL "${n}"`):a===404?(u="Not Found",h=`No route matches URL "${n}"`):a===405&&(u="Method Not Allowed",s&&n&&l?h=`You made a ${s.toUpperCase()} request to "${n}" but did not provide an \`action\` for route "${l}", so there is no way to handle the request.`:s&&(h=`Invalid request method "${s.toUpperCase()}"`)),new lc(a||500,u,new Error(h),!0)}function Mo(a){let n=Object.entries(a);for(let l=n.length-1;l>=0;l--){let[s,o]=n[l];if(Bi(o))return{key:s,result:o}}}function hy(a){let n=typeof a=="string"?li(a):a;return Jn({...n,hash:""})}function M1(a,n){return a.pathname!==n.pathname||a.search!==n.search?!1:a.hash===""?n.hash!=="":a.hash===n.hash?!0:n.hash!==""}function C1(a){return new lc(a.init?.status??500,a.init?.statusText??"Internal Server Error",a.data)}function T1(a){return a!=null&&typeof a=="object"&&Object.entries(a).every(([n,l])=>typeof n=="string"&&D1(l))}function D1(a){return a!=null&&typeof a=="object"&&"type"in a&&"result"in a&&(a.type==="data"||a.type==="error")}function O1(a){return my(a.result)&&r1.has(a.result.status)}function un(a){return a.type==="error"}function Bi(a){return(a&&a.type)==="redirect"}function qp(a){return typeof a=="object"&&a!=null&&"type"in a&&"data"in a&&"init"in a&&a.type==="DataWithResponseInit"}function my(a){return a!=null&&typeof a.status=="number"&&typeof a.statusText=="string"&&typeof a.headers=="object"&&typeof a.body<"u"}function w1(a){return s1.has(a.toUpperCase())}function He(a){return i1.has(a.toUpperCase())}function od(a){return new URLSearchParams(a).getAll("index").some(n=>n==="")}function Yo(a,n){let l=typeof n=="string"?li(n).search:n.search;if(a[a.length-1].route.index&&od(l||""))return a[a.length-1];let s=ay(a);return s[s.length-1]}function Vp(a){let{formMethod:n,formAction:l,formEncType:s,text:o,formData:c,json:u}=a;if(!(!n||!l||!s)){if(o!=null)return{formMethod:n,formAction:l,formEncType:s,formData:void 0,json:void 0,text:o};if(c!=null)return{formMethod:n,formAction:l,formEncType:s,formData:c,json:void 0,text:void 0};if(u!==void 0)return{formMethod:n,formAction:l,formEncType:s,formData:void 0,json:u,text:void 0}}}function Hf(a,n){return n?{state:"loading",location:a,formMethod:n.formMethod,formAction:n.formAction,formEncType:n.formEncType,formData:n.formData,json:n.json,text:n.text}:{state:"loading",location:a,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function z1(a,n){return{state:"submitting",location:a,formMethod:n.formMethod,formAction:n.formAction,formEncType:n.formEncType,formData:n.formData,json:n.json,text:n.text}}function zs(a,n){return a?{state:"loading",formMethod:a.formMethod,formAction:a.formAction,formEncType:a.formEncType,formData:a.formData,json:a.json,text:a.text,data:n}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:n}}function R1(a,n){return{state:"submitting",formMethod:a.formMethod,formAction:a.formAction,formEncType:a.formEncType,formData:a.formData,json:a.json,text:a.text,data:n?n.data:void 0}}function va(a){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:a}}function A1(a,n){try{let l=a.sessionStorage.getItem(sy);if(l){let s=JSON.parse(l);for(let[o,c]of Object.entries(s||{}))c&&Array.isArray(c)&&n.set(o,new Set(c||[]))}}catch{}}function j1(a,n){if(n.size>0){let l={};for(let[s,o]of n)l[s]=[...o];try{a.sessionStorage.setItem(sy,JSON.stringify(l))}catch(s){ce(!1,`Failed to save applied view transitions in sessionStorage (${s}).`)}}}function Xp(){let a,n,l=new Promise((s,o)=>{a=async c=>{s(c);try{await l}catch{}},n=async c=>{o(c);try{await l}catch{}}});return{promise:l,resolve:a,reject:n}}var Yi=C.createContext(null);Yi.displayName="DataRouter";var ar=C.createContext(null);ar.displayName="DataRouterState";C.createContext(!1);var cd=C.createContext({isTransitioning:!1});cd.displayName="ViewTransition";var gy=C.createContext(new Map);gy.displayName="Fetchers";var N1=C.createContext(null);N1.displayName="Await";var Dn=C.createContext(null);Dn.displayName="Navigation";var sc=C.createContext(null);sc.displayName="Location";var Un=C.createContext({outlet:null,matches:[],isDataRoute:!1});Un.displayName="Route";var ud=C.createContext(null);ud.displayName="RouteError";function L1(a,{relative:n}={}){wt(Rl(),"useHref() may be used only in the context of a component.");let{basename:l,navigator:s}=C.useContext(Dn),{hash:o,pathname:c,search:u}=ir(a,{relative:n}),h=c;return l!=="/"&&(h=c==="/"?l:Fn([l,c])),s.createHref({pathname:h,search:u,hash:o})}function Rl(){return C.useContext(sc)!=null}function xa(){return wt(Rl(),"useLocation() may be used only in the context of a component."),C.useContext(sc).location}var py="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function vy(a){C.useContext(Dn).static||C.useLayoutEffect(a)}function si(){let{isDataRoute:a}=C.useContext(Un);return a?J1():B1()}function B1(){wt(Rl(),"useNavigate() may be used only in the context of a component.");let a=C.useContext(Yi),{basename:n,navigator:l}=C.useContext(Dn),{matches:s}=C.useContext(Un),{pathname:o}=xa(),c=JSON.stringify(ac(s)),u=C.useRef(!1);return vy(()=>{u.current=!0}),C.useCallback((m,g={})=>{if(ce(u.current,py),!u.current)return;if(typeof m=="number"){l.go(m);return}let v=ic(m,JSON.parse(c),o,g.relative==="path");a==null&&n!=="/"&&(v.pathname=v.pathname==="/"?n:Fn([n,v.pathname])),(g.replace?l.replace:l.push)(v,g.state,g)},[n,l,c,o,a])}var U1=C.createContext(null);function H1(a){let n=C.useContext(Un).outlet;return C.useMemo(()=>n&&C.createElement(U1.Provider,{value:a},n),[n,a])}function ir(a,{relative:n}={}){let{matches:l}=C.useContext(Un),{pathname:s}=xa(),o=JSON.stringify(ac(l));return C.useMemo(()=>ic(a,JSON.parse(o),s,n==="path"),[a,o,s,n])}function k1(a,n,l,s,o){wt(Rl(),"useRoutes() may be used only in the context of a component.");let{navigator:c}=C.useContext(Dn),{matches:u}=C.useContext(Un),h=u[u.length-1],m=h?h.params:{},g=h?h.pathname:"/",v=h?h.pathnameBase:"/",y=h&&h.route;{let A=y&&y.path||"";yy(g,!y||A.endsWith("*")||A.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${g}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. - -Please change the parent to .`)}let _=xa(),S;S=_;let O=S.pathname||"/",U=O;if(v!=="/"){let A=v.replace(/^\//,"").split("/");U="/"+O.replace(/^\//,"").split("/").slice(A.length).join("/")}let k=Pa(a,{pathname:U});return ce(y||k!=null,`No routes matched location "${S.pathname}${S.search}${S.hash}" `),ce(k==null||k[k.length-1].route.element!==void 0||k[k.length-1].route.Component!==void 0||k[k.length-1].route.lazy!==void 0,`Matched leaf route at location "${S.pathname}${S.search}${S.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`),G1(k&&k.map(A=>Object.assign({},A,{params:Object.assign({},m,A.params),pathname:Fn([v,c.encodeLocation?c.encodeLocation(A.pathname.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:A.pathname]),pathnameBase:A.pathnameBase==="/"?v:Fn([v,c.encodeLocation?c.encodeLocation(A.pathnameBase.replace(/\?/g,"%3F").replace(/#/g,"%23")).pathname:A.pathnameBase])})),u,l,s,o)}function Y1(){let a=F1(),n=Js(a)?`${a.status} ${a.statusText}`:a instanceof Error?a.message:JSON.stringify(a),l=a instanceof Error?a.stack:null,s="rgba(200,200,200, 0.5)",o={padding:"0.5rem",backgroundColor:s},c={padding:"2px 4px",backgroundColor:s},u=null;return console.error("Error handled by React Router default ErrorBoundary:",a),u=C.createElement(C.Fragment,null,C.createElement("p",null,"💿 Hey developer 👋"),C.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",C.createElement("code",{style:c},"ErrorBoundary")," or"," ",C.createElement("code",{style:c},"errorElement")," prop on your route.")),C.createElement(C.Fragment,null,C.createElement("h2",null,"Unexpected Application Error!"),C.createElement("h3",{style:{fontStyle:"italic"}},n),l?C.createElement("pre",{style:o},l):null,u)}var q1=C.createElement(Y1,null),V1=class extends C.Component{constructor(a){super(a),this.state={location:a.location,revalidation:a.revalidation,error:a.error}}static getDerivedStateFromError(a){return{error:a}}static getDerivedStateFromProps(a,n){return n.location!==a.location||n.revalidation!=="idle"&&a.revalidation==="idle"?{error:a.error,location:a.location,revalidation:a.revalidation}:{error:a.error!==void 0?a.error:n.error,location:n.location,revalidation:a.revalidation||n.revalidation}}componentDidCatch(a,n){this.props.onError?this.props.onError(a,n):console.error("React Router caught the following error during render",a)}render(){return this.state.error!==void 0?C.createElement(Un.Provider,{value:this.props.routeContext},C.createElement(ud.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function X1({routeContext:a,match:n,children:l}){let s=C.useContext(Yi);return s&&s.static&&s.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(s.staticContext._deepestRenderedBoundaryId=n.route.id),C.createElement(Un.Provider,{value:a},l)}function G1(a,n=[],l=null,s=null,o=null){if(a==null){if(!l)return null;if(l.errors)a=l.matches;else if(n.length===0&&!l.initialized&&l.matches.length>0)a=l.matches;else return null}let c=a,u=l?.errors;if(u!=null){let v=c.findIndex(y=>y.route.id&&u?.[y.route.id]!==void 0);wt(v>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(u).join(",")}`),c=c.slice(0,Math.min(c.length,v+1))}let h=!1,m=-1;if(l)for(let v=0;v=0?c=c.slice(0,m+1):c=[c[0]];break}}}let g=l&&s?(v,y)=>{s(v,{location:l.location,params:l.matches?.[0]?.params??{},unstable_pattern:nr(l.matches),errorInfo:y})}:void 0;return c.reduceRight((v,y,_)=>{let S,O=!1,U=null,k=null;l&&(S=u&&y.route.id?u[y.route.id]:void 0,U=y.route.errorElement||q1,h&&(m<0&&_===0?(yy("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),O=!0,k=null):m===_&&(O=!0,k=y.route.hydrateFallbackElement||null)));let Y=n.concat(c.slice(0,_+1)),A=()=>{let X;return S?X=U:O?X=k:y.route.Component?X=C.createElement(y.route.Component,null):y.route.element?X=y.route.element:X=v,C.createElement(X1,{match:y,routeContext:{outlet:v,matches:Y,isDataRoute:l!=null},children:X})};return l&&(y.route.ErrorBoundary||y.route.errorElement||_===0)?C.createElement(V1,{location:l.location,revalidation:l.revalidation,component:U,error:S,children:A(),routeContext:{outlet:null,matches:Y,isDataRoute:!0},onError:g}):A()},null)}function fd(a){return`${a} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function $1(a){let n=C.useContext(Yi);return wt(n,fd(a)),n}function Q1(a){let n=C.useContext(ar);return wt(n,fd(a)),n}function Z1(a){let n=C.useContext(Un);return wt(n,fd(a)),n}function dd(a){let n=Z1(a),l=n.matches[n.matches.length-1];return wt(l.route.id,`${a} can only be used on routes that contain a unique "id"`),l.route.id}function K1(){return dd("useRouteId")}function F1(){let a=C.useContext(ud),n=Q1("useRouteError"),l=dd("useRouteError");return a!==void 0?a:n.errors?.[l]}function J1(){let{router:a}=$1("useNavigate"),n=dd("useNavigate"),l=C.useRef(!1);return vy(()=>{l.current=!0}),C.useCallback(async(o,c={})=>{ce(l.current,py),l.current&&(typeof o=="number"?await a.navigate(o):await a.navigate(o,{fromRouteId:n,...c}))},[a,n])}var Gp={};function yy(a,n,l){!n&&!Gp[a]&&(Gp[a]=!0,ce(!1,l))}var $p={};function Qp(a,n){!a&&!$p[n]&&($p[n]=!0,console.warn(n))}var P1="useOptimistic",Zp=p_[P1],W1=()=>{};function I1(a){return Zp?Zp(a):[a,W1]}function tx(a){let n={hasErrorBoundary:a.hasErrorBoundary||a.ErrorBoundary!=null||a.errorElement!=null};return a.Component&&(a.element&&ce(!1,"You should not include both `Component` and `element` on your route - `Component` will be used."),Object.assign(n,{element:C.createElement(a.Component),Component:void 0})),a.HydrateFallback&&(a.hydrateFallbackElement&&ce(!1,"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used."),Object.assign(n,{hydrateFallbackElement:C.createElement(a.HydrateFallback),HydrateFallback:void 0})),a.ErrorBoundary&&(a.errorElement&&ce(!1,"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used."),Object.assign(n,{errorElement:C.createElement(a.ErrorBoundary),ErrorBoundary:void 0})),n}var ex=["HydrateFallback","hydrateFallbackElement"],nx=class{constructor(){this.status="pending",this.promise=new Promise((a,n)=>{this.resolve=l=>{this.status==="pending"&&(this.status="resolved",a(l))},this.reject=l=>{this.status==="pending"&&(this.status="rejected",n(l))}})}};function ax({router:a,flushSync:n,unstable_onError:l,unstable_useTransitions:s}){let[o,c]=C.useState(a.state),[u,h]=I1(o),[m,g]=C.useState(),[v,y]=C.useState({isTransitioning:!1}),[_,S]=C.useState(),[O,U]=C.useState(),[k,Y]=C.useState(),A=C.useRef(new Map),X=C.useCallback((D,{deletedFetchers:nt,newErrors:at,flushSync:pt,viewTransitionOpts:ft})=>{at&&l&&Object.values(at).forEach(Mt=>l(Mt,{location:D.location,params:D.matches[0]?.params??{},unstable_pattern:nr(D.matches)})),D.fetchers.forEach((Mt,St)=>{Mt.data!==void 0&&A.current.set(St,Mt.data)}),nt.forEach(Mt=>A.current.delete(Mt)),Qp(pt===!1||n!=null,'You provided the `flushSync` option to a router update, but you are not using the `` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from "react-router/dom"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.');let xt=a.window!=null&&a.window.document!=null&&typeof a.window.document.startViewTransition=="function";if(Qp(ft==null||xt,"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available."),!ft||!xt){n&&pt?n(()=>c(D)):s===!1?c(D):C.startTransition(()=>{s===!0&&h(Mt=>Kp(Mt,D)),c(D)});return}if(n&&pt){n(()=>{O&&(_?.resolve(),O.skipTransition()),y({isTransitioning:!0,flushSync:!0,currentLocation:ft.currentLocation,nextLocation:ft.nextLocation})});let Mt=a.window.document.startViewTransition(()=>{n(()=>c(D))});Mt.finished.finally(()=>{n(()=>{S(void 0),U(void 0),g(void 0),y({isTransitioning:!1})})}),n(()=>U(Mt));return}O?(_?.resolve(),O.skipTransition(),Y({state:D,currentLocation:ft.currentLocation,nextLocation:ft.nextLocation})):(g(D),y({isTransitioning:!0,flushSync:!1,currentLocation:ft.currentLocation,nextLocation:ft.nextLocation}))},[a.window,n,O,_,s,h,l]);C.useLayoutEffect(()=>a.subscribe(X),[a,X]),C.useEffect(()=>{v.isTransitioning&&!v.flushSync&&S(new nx)},[v]),C.useEffect(()=>{if(_&&m&&a.window){let D=m,nt=_.promise,at=a.window.document.startViewTransition(async()=>{s===!1?c(D):C.startTransition(()=>{s===!0&&h(pt=>Kp(pt,D)),c(D)}),await nt});at.finished.finally(()=>{S(void 0),U(void 0),g(void 0),y({isTransitioning:!1})}),U(at)}},[m,_,a.window,s,h]),C.useEffect(()=>{_&&m&&u.location.key===m.location.key&&_.resolve()},[_,O,u.location,m]),C.useEffect(()=>{!v.isTransitioning&&k&&(g(k.state),y({isTransitioning:!0,flushSync:!1,currentLocation:k.currentLocation,nextLocation:k.nextLocation}),Y(void 0))},[v.isTransitioning,k]);let P=C.useMemo(()=>({createHref:a.createHref,encodeLocation:a.encodeLocation,go:D=>a.navigate(D),push:(D,nt,at)=>a.navigate(D,{state:nt,preventScrollReset:at?.preventScrollReset}),replace:(D,nt,at)=>a.navigate(D,{replace:!0,state:nt,preventScrollReset:at?.preventScrollReset})}),[a]),J=a.basename||"/",rt=C.useMemo(()=>({router:a,navigator:P,static:!1,basename:J,unstable_onError:l}),[a,P,J,l]);return C.createElement(C.Fragment,null,C.createElement(Yi.Provider,{value:rt},C.createElement(ar.Provider,{value:u},C.createElement(gy.Provider,{value:A.current},C.createElement(cd.Provider,{value:v},C.createElement(ox,{basename:J,location:u.location,navigationType:u.historyAction,navigator:P,unstable_useTransitions:s===!0},C.createElement(ix,{routes:a.routes,future:a.future,state:u,unstable_onError:l})))))),null)}function Kp(a,n){return{...a,navigation:n.navigation.state!=="idle"?n.navigation:a.navigation,revalidation:n.revalidation!=="idle"?n.revalidation:a.revalidation,actionData:n.navigation.state!=="submitting"?n.actionData:a.actionData,fetchers:n.fetchers}}var ix=C.memo(lx);function lx({routes:a,future:n,state:l,unstable_onError:s}){return k1(a,void 0,l,s,n)}function sx({to:a,replace:n,state:l,relative:s}){wt(Rl()," may be used only in the context of a component.");let{static:o}=C.useContext(Dn);ce(!o," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:c}=C.useContext(Un),{pathname:u}=xa(),h=si(),m=ic(a,ac(c),u,s==="path"),g=JSON.stringify(m);return C.useEffect(()=>{h(JSON.parse(g),{replace:n,state:l,relative:s})},[h,g,s,n,l]),null}function rx(a){return H1(a.context)}function ox({basename:a="/",children:n=null,location:l,navigationType:s="POP",navigator:o,static:c=!1,unstable_useTransitions:u}){wt(!Rl(),"You cannot render a inside another . You should never have more than one in your app.");let h=a.replace(/^\/*/,"/"),m=C.useMemo(()=>({basename:h,navigator:o,static:c,unstable_useTransitions:u,future:{}}),[h,o,c,u]);typeof l=="string"&&(l=li(l));let{pathname:g="/",search:v="",hash:y="",state:_=null,key:S="default"}=l,O=C.useMemo(()=>{let U=Tn(g,h);return U==null?null:{location:{pathname:U,search:v,hash:y,state:_,key:S},navigationType:s}},[h,g,v,y,_,S,s]);return ce(O!=null,` is not able to match the URL "${g}${v}${y}" because it does not start with the basename, so the won't render anything.`),O==null?null:C.createElement(Dn.Provider,{value:m},C.createElement(sc.Provider,{children:n,value:O}))}var qo="get",Vo="application/x-www-form-urlencoded";function rc(a){return typeof HTMLElement<"u"&&a instanceof HTMLElement}function cx(a){return rc(a)&&a.tagName.toLowerCase()==="button"}function ux(a){return rc(a)&&a.tagName.toLowerCase()==="form"}function fx(a){return rc(a)&&a.tagName.toLowerCase()==="input"}function dx(a){return!!(a.metaKey||a.altKey||a.ctrlKey||a.shiftKey)}function hx(a,n){return a.button===0&&(!n||n==="_self")&&!dx(a)}var Co=null;function mx(){if(Co===null)try{new FormData(document.createElement("form"),0),Co=!1}catch{Co=!0}return Co}var gx=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function kf(a){return a!=null&&!gx.has(a)?(ce(!1,`"${a}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${Vo}"`),null):a}function px(a,n){let l,s,o,c,u;if(ux(a)){let h=a.getAttribute("action");s=h?Tn(h,n):null,l=a.getAttribute("method")||qo,o=kf(a.getAttribute("enctype"))||Vo,c=new FormData(a)}else if(cx(a)||fx(a)&&(a.type==="submit"||a.type==="image")){let h=a.form;if(h==null)throw new Error('Cannot submit a