diff --git a/Updated_Cms/.editorconfig b/Updated_Cms/.editorconfig
deleted file mode 100644
index 1671c9b9d9..0000000000
--- a/Updated_Cms/.editorconfig
+++ /dev/null
@@ -1,18 +0,0 @@
-root = true
-
-[*]
-charset = utf-8
-end_of_line = lf
-insert_final_newline = true
-indent_style = space
-indent_size = 4
-trim_trailing_whitespace = true
-
-[*.md]
-trim_trailing_whitespace = false
-
-[*.{yml,yaml}]
-indent_size = 2
-
-[docker-compose.yml]
-indent_size = 4
diff --git a/Updated_Cms/.env.example b/Updated_Cms/.env.example
deleted file mode 100644
index 016078e5d4..0000000000
--- a/Updated_Cms/.env.example
+++ /dev/null
@@ -1,128 +0,0 @@
-APP_NAME=Laravel
-APP_ENV=local
-APP_KEY=
-APP_DEBUG=true
-APP_URL=http://localhost
-
-LOG_CHANNEL=stack
-LOG_DEPRECATIONS_CHANNEL=null
-LOG_LEVEL=debug
-
-# Change those to match your database settings
-DB_CONNECTION=mysql
-DB_HOST=127.0.0.1
-DB_PORT=3306
-DB_DATABASE=atomcms
-DB_USERNAME=root
-DB_PASSWORD=password
-
-BROADCAST_DRIVER=log
-CACHE_DRIVER=file
-FILESYSTEM_DISK=local
-QUEUE_CONNECTION=sync
-SESSION_DRIVER=database
-SESSION_LIFETIME=120
-
-MEMCACHED_HOST=127.0.0.1
-
-REDIS_HOST=127.0.0.1
-REDIS_PASSWORD=null
-REDIS_PORT=6379
-
-MAIL_MAILER=smtp
-MAIL_HOST=mailhog
-MAIL_PORT=1025
-MAIL_USERNAME=null
-MAIL_PASSWORD=null
-MAIL_ENCRYPTION=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
-
-PUSHER_APP_ID=
-PUSHER_APP_KEY=
-PUSHER_APP_SECRET=
-PUSHER_HOST=
-PUSHER_PORT=443
-PUSHER_SCHEME=https
-PUSHER_APP_CLUSTER=mt1
-
-VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
-VITE_PUSHER_HOST="${PUSHER_HOST}"
-VITE_PUSHER_PORT="${PUSHER_PORT}"
-VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
-VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
-
-## Custom variables
-RCON_HOST=127.0.0.1
-RCON_PORT=3001
-
-# Find retros settings
-FINDRETROS_NAME=
-FINDRETROS_ENABLED=false
-
-# Recaptcha settings
-GOOGLE_RECAPTCHA_SITE_KEY=
-GOOGLE_RECAPTCHA_SECRET_KEY=
-
-# Turnstile
-TURNSTILE_SITE_KEY=
-TURNSTILE_SECRET_KEY=
-
-# If set to true, Atom will rename any colliding table names when migration the first time around
-RENAME_COLLIDING_TABLES=false
-
-# Flash client settings
-FLASH_CLIENT_ENABLED=false
-EMULATOR_IP=127.0.0.1
-EMULATOR_PORT=3000
-SWF_BASE_PATH=client/flash
-HABBO_SWF=Habbo.swf
-PRODUCTION_FOLDER=gordon/PRODUCTION
-EXTERNAL_FURNIDATA=gamedata/furnidata.xml
-EXTERNAL_FIGUREMAP=gamedata/figuremap.xml
-EXTERNAL_FIGUREDATA=gamedata/figuredata.xml
-EXTERNAL_PRODUCTDATA=gamedata/productdata.txt
-EXTERNAL_TEXTS=gamedata/external_flash_texts.txt
-EXTERNAL_VARIABLES=gamedata/external_variables.txt
-EXTERNAL_OVERRIDE_TEXTS=gamedata/override/external_flash_override_texts.txt
-EXTERNAL_OVERRIDE_VARIABLES=gamedata/override/external_override_variables.txt
-
-# Only enable if you come from a CMS like RevCMS
-# This will only work if your password is hashed using md5
-# By default Atom CMS uses bcrypt, this is purely used to ease the process, when switching from a CMS using md5
-CONVERT_PASSWORDS=false
-
-# Enable this if your site is running through https, but you're experiencing issues with requests being made to "http"
-FORCE_HTTPS=false
-
-# Default language for the site
-APP_LOCALE=en
-
-# Enter the time in minutes that a password reset token can be valid
-PASSWORD_RESET_TOKEN_TIME=15
-
-# General paypal options
-PAYPAL_MODE='sandbox'
-PAYPAL_PAYMENT_ACTION='Order'
-PAYPAL_CURRENCY='USD'
-PAYPAL_NOTIFY_URL=
-PAYPAL_LOCALE='en_US'
-PAYPAL_VALIDATE_SSL=true
-
-#PayPal Setting & API Credentials - sandbox
-PAYPAL_SANDBOX_CLIENT_ID=
-PAYPAL_SANDBOX_CLIENT_SECRET=
-PAYPAL_SANDBOX_APP_ID=
-
-#PayPal Setting & API Credentials - live
-PAYPAL_LIVE_CLIENT_ID=
-PAYPAL_LIVE_CLIENT_SECRET=
-PAYPAL_LIVE_APP_ID=
-
-FORTIFY_PREFIX=
diff --git a/Updated_Cms/.env.testing.example b/Updated_Cms/.env.testing.example
deleted file mode 100644
index 52e0da8ce9..0000000000
--- a/Updated_Cms/.env.testing.example
+++ /dev/null
@@ -1,41 +0,0 @@
-APP_NAME=Atom
-APP_ENV=testing
-APP_KEY=base64:GENERATE_NEW_KEY_HERE
-APP_DEBUG=true
-APP_URL=http://localhost
-
-LOG_CHANNEL=stack
-LOG_DEPRECATIONS_CHANNEL=null
-LOG_LEVEL=debug
-
-DB_CONNECTION=mariadb
-DB_HOST=127.0.0.1
-DB_PORT=3306
-DB_DATABASE=testing
-DB_USERNAME=docker
-DB_PASSWORD=password
-
-BROADCAST_DRIVER=log
-CACHE_DRIVER=array
-FILESYSTEM_DISK=local
-QUEUE_CONNECTION=sync
-SESSION_DRIVER=array
-SESSION_LIFETIME=120
-
-MAIL_MAILER=array
-
-# Testing specific settings
-BCRYPT_ROUNDS=4
-TELESCOPE_ENABLED=false
-
-# Disable CAPTCHA for testing
-GOOGLE_RECAPTCHA_ENABLED=0
-CLOUDFLARE_TURNSTILE_ENABLED=0
-
-# Cloudflare Turnstile (test keys)
-TURNSTILE_SITE_KEY=1x00000000000000000000AA
-TURNSTILE_SECRET_KEY=1x0000000000000000000000000000000AA
-
-# Google reCAPTCHA (dummy values for testing)
-GOOGLE_RECAPTCHA_SITE_KEY=dummy_site_key
-GOOGLE_RECAPTCHA_SECRET_KEY=dummy_secret_key
\ No newline at end of file
diff --git a/Updated_Cms/.gitattributes b/Updated_Cms/.gitattributes
deleted file mode 100644
index 7dbbf41a4b..0000000000
--- a/Updated_Cms/.gitattributes
+++ /dev/null
@@ -1,11 +0,0 @@
-* text=auto
-
-*.blade.php diff=html
-*.css diff=css
-*.html diff=html
-*.md diff=markdown
-*.php diff=php
-
-/.github export-ignore
-CHANGELOG.md export-ignore
-.styleci.yml export-ignore
diff --git a/Updated_Cms/.github/workflows/laravel.yml b/Updated_Cms/.github/workflows/laravel.yml
deleted file mode 100644
index c61a7e0535..0000000000
--- a/Updated_Cms/.github/workflows/laravel.yml
+++ /dev/null
@@ -1,77 +0,0 @@
- name: Laravel
-
- on:
- push:
- branches: [ "main", "dev" ]
- pull_request:
- branches: [ "main", "dev" ]
-
- jobs:
- tests:
- runs-on: ubuntu-latest
-
- services:
- mariadb:
- image: mariadb:11
- env:
- MYSQL_ALLOW_EMPTY_PASSWORD: yes
- MYSQL_DATABASE: atomcms_testing
- ports:
- - 3306:3306
- options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3
-
- steps:
- - uses: actions/checkout@v4
- with:
- fetch-depth: 1
-
- - name: Cache composer dependencies
- uses: actions/cache@v4
- with:
- path: vendor
- key: composer-${{ hashFiles('**/composer.lock') }}
- restore-keys: |
- composer-
-
- - name: Install PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: 8.4
-
- - name: Install composer dependencies
- run: |
- composer install --no-scripts
-
- - name: Install NPM dependencies
- run: npm install
-
- - name: Compile assets
- run: npm run build:atom
-
- - name: Prepare Laravel Application
- run: |
- cp .env.testing.example .env.testing
- # Override database config for GitHub Actions
- sed -i 's/DB_USERNAME=docker/DB_USERNAME=root/' .env.testing
- sed -i 's/DB_PASSWORD=password/DB_PASSWORD=/' .env.testing
- sed -i 's/DB_DATABASE=testing/DB_DATABASE=atomcms_testing/' .env.testing
- php artisan key:generate --env=testing
-
- - name: Debug Laravel Configuration
- run: |
- php artisan config:cache --env=testing
- php artisan route:cache --env=testing
- php artisan view:cache --env=testing
-
- - name: Create storage directories
- run: |
- mkdir -p storage/app/public
- mkdir -p storage/framework/cache
- mkdir -p storage/framework/sessions
- mkdir -p storage/framework/views
- mkdir -p storage/logs
- chmod -R 755 storage
-
- - name: Run Test suite with debug
- run: |
- php artisan test --env=testing --stop-on-failure
diff --git a/Updated_Cms/.github/workflows/lint.yml b/Updated_Cms/.github/workflows/lint.yml
deleted file mode 100644
index 65b4e8fb1a..0000000000
--- a/Updated_Cms/.github/workflows/lint.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-name: Fix Code Style
-
-on: [push]
-
-permissions:
- contents: write
-
-jobs:
- lint:
- runs-on: ubuntu-latest
- strategy:
- fail-fast: true
- matrix:
- php: [8.4]
-
- steps:
- - name: Checkout code
- uses: actions/checkout@v5
- with:
- token: ${{ secrets.GITHUB_TOKEN }}
- fetch-depth: 0
-
- - name: Setup PHP
- uses: shivammathur/setup-php@v2
- with:
- php-version: ${{ matrix.php }}
- tools: composer, pint
-
- - name: Install composer dependencies
- run: composer install --prefer-dist --no-interaction --no-progress
-
- - name: Run Pint
- run: pint
-
- - name: Commit linted files
- uses: stefanzweifel/git-auto-commit-action@v5
- with:
- commit_message: 'style: fix code style with Laravel Pint'
diff --git a/Updated_Cms/.gitignore b/Updated_Cms/.gitignore
deleted file mode 100644
index 2beb5534d8..0000000000
--- a/Updated_Cms/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-/node_modules
-/public/build
-/public/hot
-/public/client
-/public/storage
-/storage/*.key
-/storage/app/public
-/storage/framework/*
-/vendor
-/public/static
-.env
-.env.backup
-.env.testing
-.phpunit.result.cache
-Homestead.json
-Homestead.yaml
-auth.json
-npm-debug.log
-yarn-error.log
-yarn.lock
-/.idea
-/.vscode
-/public/assets/images/generated-logos
-CLAUDE.md
-.phpunit.cache
diff --git a/Updated_Cms/CODEOWNERS b/Updated_Cms/CODEOWNERS
deleted file mode 100644
index 43bceaebd7..0000000000
--- a/Updated_Cms/CODEOWNERS
+++ /dev/null
@@ -1,4 +0,0 @@
-# These owners will be the default owners for everything in
-# the repo. Unless a later match takes precedence, the owners will be requested for
-# review when someone opens a pull request.
-* @ObjectRetros
diff --git a/Updated_Cms/LICENSE b/Updated_Cms/LICENSE
deleted file mode 100644
index 924a625a81..0000000000
--- a/Updated_Cms/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright 2023 ObjectRetros
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/Updated_Cms/README.md b/Updated_Cms/README.md
deleted file mode 100644
index cefe530de1..0000000000
--- a/Updated_Cms/README.md
+++ /dev/null
@@ -1,299 +0,0 @@
-
-
-
-A modern, community-driven Retro CMS built with Laravel 12.x
-
-[](https://discord.gg/pP6HyZedAj)
-[](https://laravel.com)
-[](https://php.net)
-
-[Live Demos](#-live-preview) • [Installation](#-installation) • [Documentation](https://github.com/atom-retros/atomcms/wiki) • [Contributing](#-contributing)
-
-
-
->[!NOTE]
->Disclaimer: Educational Use Only
->
-> Atom CMS is provided as an educational resource for learning purposes only. The creators and contributors are not responsible for any misuse or unintended consequences arising from its use. By using Atom CMS, you agree to take full responsibility for your actions and ensure compliance with all applicable laws and regulations in your jurisdiction.
-
-
-## 🎯 About
-
-Atom CMS is a modern, community-driven CMS designed to provide a flexible and user-friendly platform for retro hotel management. Built on Laravel 12.x with a focus on extensibility and ease of use, Atom CMS features a built-in theme system that allows you to use any CSS framework or create fully customized vanilla designs.
-
-### Built With
-
-- **[Laravel 12.x](https://laravel.com/docs/11.x)** - Elegant PHP framework powering the backend
-- **[Vite](https://vitejs.dev/)** - Next-generation frontend tooling for blazing-fast builds
-- **[TailwindCSS](https://tailwindcss.com/)** - Utility-first CSS framework for responsive design
-
----
-
-## ✨ Features
-
-- 🎨 **Built-in Theme System** - Use any CSS framework or create custom themes
-- 🔐 **Secure Authentication** - Laravel-powered authentication and authorization
-- 🌍 **Multi-language Support** - Built-in localization for global audiences
-- 📊 **Integrated Housekeeping** - Comprehensive admin panel
-- 🔄 **Rcon System** - Real-time server communication
-- 📱 **Responsive Design** - Mobile-first approach with TailwindCSS
-- 🚀 **Modern Stack** - Latest PHP 8.2+ features
-
----
-
-## 👀 Live Preview
-
-Experience Atom CMS with our official themes:
-
-- **Dusk Theme**: [https://dusk.atomcms.dev](https://dusk.atomcms.dev)
-- **Atom Theme**: [https://atom.atomcms.dev](https://atom.atomcms.dev)
-
----
-
-## 🚧 Requirements
-
-| Requirement | Version |
-|------------|---------|
-| PHP | 8.2 or higher |
-| MySQL | 8.x or higher |
-| MariaDB | 10.x or higher |
-| Composer | v2 |
-| Node.js | LTS |
-| Database | [Arcturus Morningstar](https://github.com/ObjectRetros/retro-hotel-files/blob/main/arcturus-3-5-3-database.sql) |
-
-### Required PHP Extensions
-
-Ensure the following extensions are enabled in your `php.ini`:
-
-```ini
-extension=curl
-extension=fileinfo
-extension=gd
-extension=mbstring
-extension=openssl
-extension=pdo_mysql
-extension=sockets
-extension=intl
-```
-
-**Note:** Remove the semicolon (`;`) prefix if the extension is commented out.
-
----
-
-## 📦 Installation
-
-### Windows Setup
-
-```bash
-# Clone the repository
-git clone https://github.com/ObjectRetros/atomcms.git
-cd atomcms
-
-# Configure environment
-copy .env.example .env
-# Edit .env and update your database credentials
-
-# Install dependencies
-composer install
-npm install
-
-# Set up database and generate key
-php artisan migrate --seed
-php artisan key:generate
-
-# Build assets
-npm run build:atom
-# For development: npm run dev:atom
-```
-
-#### IIS Configuration
-
-Point your IIS site to the `public` folder inside the `atomcms` directory.
-
-#### Required Permissions
-
-Grant "Full control" to both `IUSR` and `IIS_IUSRS` for the atomcms folder.
-
-**Visual guide:** [Permission setup tutorial](https://gyazo.com/7d5f38525a762c1b26bbd7552ca93478)
-
-#### Troubleshooting cURL SSL Errors
-
-If you encounter cURL 60 errors:
-
-1. Download the latest [cacert.pem](https://curl.se/docs/caextract.html)
-2. Place it in `C:/`
-3. Edit `php.ini` and update:
- ```ini
- curl.cainfo = "C:/cacert-2025-09-09.pem"
- ```
-4. Restart your web server
-
-#### Complete Windows Tutorial
-
-New to retro hotel setup? Follow our comprehensive three-part series:
-
-- [Part 1: Basic Setup](https://devbest.com/threads/how-to-set-up-a-retro-in-2022-iis-nitro-html5-part-1.92532/)
-- [Part 2: Configuration](https://devbest.com/threads/how-to-set-up-a-retro-in-2022-iis-nitro-html5-part-2.92533/)
-- [Part 3: Finalization](https://devbest.com/threads/how-to-set-up-a-retro-in-2022-iis-nitro-html5-part-3.92543/)
-
----
-
-### Linux Setup
-
-```bash
-# Clone the repository
-git clone https://github.com/ObjectRetros/atomcms.git
-cd atomcms
-
-# Configure environment
-cp .env.example .env
-# Edit .env and update your database credentials
-
-# Install dependencies
-composer install
-npm install
-
-# Set up database and generate key
-php artisan migrate --seed
-php artisan key:generate
-
-# Build assets
-npm run build:atom
-# For development: npm run dev:atom
-```
-
-#### Set Permissions
-
-```bash
-sudo chown -R $USER:www-data storage
-sudo chown -R $USER:www-data bootstrap/cache
-chmod -R 775 storage
-chmod -R 775 bootstrap/cache
-```
-
-#### NGINX Configuration
-
-For NGINX setup, refer to Laravel's [deployment documentation](https://laravel.com/docs/12.x/deployment#nginx).
-
-#### Complete Linux Tutorial
-
-Need help setting up your retro hotel on Linux? Follow our comprehensive Ubuntu tutorial:
-
-- [Complete Ubuntu Setup Guide](https://git.krews.org/duckietm/ubuntu-tutorial) - Step-by-step instructions for Ubuntu
-
----
-
-## ⚙️ Configuration
-
-### Production Environment
-
-Update these variables in your `.env` file for production:
-
-```dotenv
-APP_ENV=production
-APP_DEBUG=false
-FORCE_HTTPS=true # If using Cloudflare's "Always use HTTPS"
-```
-
-### Cloudflare Turnstile Captcha
-
-Protect your site from bots:
-
-1. Visit [Cloudflare Turnstile](https://www.cloudflare.com/products/turnstile/)
-2. Sign in and select your site
-3. Copy the site and secret keys to your `.env` file
-
-### Important: Disable Rocket Loader
-
-Atom CMS uses JavaScript that conflicts with Cloudflare's Rocket Loader. To disable:
-
-1. Go to your Cloudflare dashboard
-2. Navigate to **Speed** → **Optimization**
-3. Find **Rocket Loader™** and disable it
-
-### Migrating from Another CMS
-
-If migrating from Cosmic CMS or similar platforms:
-
-Set `RENAME_COLLIDING_TABLES=true` in your `.env` file. Atom CMS will automatically handle table conflicts.
-
-**Note:** We recommend proper manual cleanup, but this feature helps avoid common migration issues.
-
----
-
-## 🧪 Testing
-
-Atom CMS includes a growing test suite using Pest.
-
-### Run Tests
-
-```bash
-# Using Pest
-vendor/bin/pest
-
-# Using Artisan
-php artisan test
-```
-
----
-
-## 📚 Documentation
-
-For detailed documentation, addons, tips, and tricks, visit our [official wiki](https://github.com/atom-retros/atomcms/wiki).
-
-### Learning Laravel
-
-New to Laravel? These free resources will help:
-- [Official bootcamp & course](https://learn.laravel.com) - Official Laravel bootcamp & course
-- [Laravel 11 from Scratch](https://laracasts.com/series/30-days-to-learn-laravel-11) - Official Laracasts course
----
-
-## 🤝 Contributing
-
-We welcome contributions! To maintain code quality and streamline reviews, please read our [contribution guidelines](https://github.com/ObjectRetros/atomcms/wiki/0.-Contribution-guidelines) before submitting a pull request.
-
----
-
-## 🏆 Credits
-
-Atom CMS is made possible by our amazing community:
-
-### Core Contributors
-
-- **Kasja** - Design direction, Dusk theme, ideas & graphics
-- **INicollas** - Dark mode, Turbolinks, article reactions, user sessions, PT-BR translations, Orion Housekeeping
-- **Kani** - Rcon system, FindRetros API, Atom CMS v2 creator/maintainer
-- **DuckieTM** - Badge drawer, bugfixes, housekeeping features
-- **EntenKoeniq** - Auto language registration, color scheme selection, various page fixes
-
-### Contributors
-
-- **Dominic** - Performance improvements, user sessions
-- **Beny** - FindRetros API fixes, Cloudflare fixes
-- **Live** - French translations, bugfixes
-- **MisterDeen** - Custom Discord widget
-- **DamienJolly**, **Danbo**, **Diddy/Josh** - Various bugfixes and improvements
-- **Sonay** - Material theme inspiration
-- **Raizer** - Circinus
-
-### Translations
-
-- **Oliver** - Finnish
-- **Damue & EntenKoeniq** - German
-- **Talion** - Turkish
-- **CentralCee, Rille & Tuborgs** - Swedish
-- **Yannick** - Dutch
-- **Gedomi** - Spanish
-- **Lorenzune** - Italian
-- **Twana** - Norwegian
-- **Plow** - French
-
----
-
-
-
-**[⬆ Back to Top](#atom-cms)**
-
-Made with ❤️ by the Atom CMS Community
-
-
diff --git a/Updated_Cms/app/Actions/Fortify/Controllers/TwoFactorAuthenticatedSessionController.php b/Updated_Cms/app/Actions/Fortify/Controllers/TwoFactorAuthenticatedSessionController.php
deleted file mode 100644
index 86beeb01ea..0000000000
--- a/Updated_Cms/app/Actions/Fortify/Controllers/TwoFactorAuthenticatedSessionController.php
+++ /dev/null
@@ -1,58 +0,0 @@
-guard = $guard;
- }
-
- /**
- * Attempt to authenticate a new session using the two factor authentication code.
- */
- public function store(TwoFactorLoginRequest $request): TwoFactorLoginResponse
- {
- $user = $request->challengedUser();
-
- if ($code = $request->validRecoveryCode()) {
- $user->replaceRecoveryCode($code);
-
- event(new RecoveryCodeReplaced($user, $code));
- } elseif (! $request->hasValidCode()) {
- throw ValidationException::withMessages([
- 'code' => __('Invalid Two Factor Authentication code'),
- ]);
- }
-
- $this->guard->login($user, $request->remember());
-
- $request->session()->regenerate();
-
- $user->update([
- 'ip_current' => $request->ip(),
- ]);
-
- return app(TwoFactorLoginResponse::class);
- }
-}
diff --git a/Updated_Cms/app/Actions/Fortify/CreateNewUser.php b/Updated_Cms/app/Actions/Fortify/CreateNewUser.php
deleted file mode 100644
index 2fd1909ad1..0000000000
--- a/Updated_Cms/app/Actions/Fortify/CreateNewUser.php
+++ /dev/null
@@ -1,158 +0,0 @@
- __('Registration is disabled.'),
- ]);
- }
-
- $ip = request()?->ip();
- if (! filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6)) {
- throw ValidationException::withMessages([
- 'registration' => __('Your IP address seems to be invalid'),
- ]);
- }
-
- $matchingIpCount = User::query()
- ->where('ip_current', '=', $ip)
- ->orWhere('ip_register', '=', $ip)
- ->count();
-
- if ($matchingIpCount >= (int) (setting('max_accounts_per_ip') ?: 99)) {
- throw ValidationException::withMessages([
- 'registration' => __('You have reached the max amount of allowed account'),
- ]);
- }
-
- $this->validate($input);
-
- $user = User::create([
- 'username' => $input['username'],
- 'mail' => $input['mail'],
- 'password' => Hash::make($input['password']),
- 'account_created' => time(),
- 'last_login' => time(),
- 'motto' => setting('start_motto') ?: 'Welcome to the hotel!',
- 'look' => setting('start_look') ?: 'hr-100-61.hd-180-1.ch-210-66.lg-270-110.sh-305-62',
- 'credits' => setting('start_credits') ?: 1000,
- 'ip_register' => $ip,
- 'ip_current' => $ip,
- 'auth_ticket' => '',
- 'home_room' => (int) (setting('hotel_home_room') ?: 0),
- ]);
-
- $user->update([
- 'referral_code' => sprintf('%s%s', $user->id, Str::random(8)),
- ]);
-
- if (setting('requires_beta_code') !== '' && setting('requires_beta_code') !== '0') {
- WebsiteBetaCode::where('code', '=', $input['beta_code'])->update([
- 'user_id' => $user->id,
- ]);
- }
-
- // Referral
- if (isset($input['referral_code'])) {
- $referralUser = User::query()
- ->where('referral_code', '=', $input['referral_code'])
- ->first();
-
- if (is_null($referralUser)) {
- return redirect(RouteServiceProvider::HOME);
- }
-
- // If same IP skip referral incrementation
- if ($referralUser->ip_current == $user->ip_current || $referralUser->ip_register == $user->ip_register) {
- return redirect(RouteServiceProvider::HOME);
- }
-
- $referralUser->referrals()->updateOrCreate(['user_id' => $referralUser->id], [
- 'referrals_total' => $referralUser->referrals != null ? $referralUser->referrals->referrals_total += 1 : 1,
- ]);
-
- $referralUser->userReferrals()->create([
- 'referred_user_id' => $user->id,
- 'referred_user_ip' => $ip,
- ]);
- }
-
- if (setting('enable_discord_webhook') === '1') {
- $this->sendDiscordWebhook($user->username, $user->ip_register, $user->mail);
- }
-
- return $user;
- }
-
- private function validate(array $inputs): array
- {
- $rules = [
- 'username' => ['required', 'string', sprintf('regex:%s', setting('username_regex') ?: '/^[a-zA-Z0-9_.-]+$/'), 'max:25', Rule::unique('users'), new WebsiteWordfilterRule],
- 'mail' => ['required', 'string', 'email', 'max:255', Rule::unique('users')],
- 'password' => $this->passwordRules(),
- 'beta_code' => ['sometimes', 'string', new BetaCodeRule],
- 'terms' => ['required', 'accepted'],
- 'g-recaptcha-response' => ['sometimes', 'string', new GoogleRecaptchaRule],
- 'cf-turnstile-response' => [app(Turnstile::class)],
- ];
-
- $messages = [
- 'g-recaptcha-response.required' => __('The Google recaptcha must be completed'),
- 'g-recaptcha-response.string' => __('The google recaptcha was submitted with an invalid type'),
- ];
-
- return Validator::make($inputs, $rules, $messages)->validate();
- }
-
- private function sendDiscordWebhook(string $username, string $ip, string $email): void
- {
- if (setting('discord_webhook_url') === '') {
- Log::error('Discord webhook url not provided', ['Please provide a discord webhook url before being able to send any webhook requests.']);
-
- return;
- }
-
- $request = Http::asJson()->post(setting('discord_webhook_url'), [
- 'username' => sprintf('%s Bot', setting('hotel_name')),
- 'content' => "User: {$username} has just registered, with the IP: {$ip} and E-mail: {$email}",
- ]);
-
- // Log the error in-case webhook wasn't sent
- if (! $request->successful()) {
- Log::error('Failed to send Discord webhook notification', [
- 'username' => $username,
- 'ip' => $ip,
- 'email' => $email,
- 'response_status' => $request->status(),
- 'response_body' => $request->body(),
- ]);
- }
- }
-}
diff --git a/Updated_Cms/app/Actions/Fortify/DisableTwoFactorAuthentication.php b/Updated_Cms/app/Actions/Fortify/DisableTwoFactorAuthentication.php
deleted file mode 100644
index 274ecf990f..0000000000
--- a/Updated_Cms/app/Actions/Fortify/DisableTwoFactorAuthentication.php
+++ /dev/null
@@ -1,16 +0,0 @@
-forceFill([
- 'two_factor_secret' => null,
- 'two_factor_recovery_codes' => null,
- 'two_factor_confirmed' => false,
- ])->save();
- }
-}
diff --git a/Updated_Cms/app/Actions/Fortify/RedirectIfTwoFactorAuthenticatable.php b/Updated_Cms/app/Actions/Fortify/RedirectIfTwoFactorAuthenticatable.php
deleted file mode 100644
index 17837dd031..0000000000
--- a/Updated_Cms/app/Actions/Fortify/RedirectIfTwoFactorAuthenticatable.php
+++ /dev/null
@@ -1,194 +0,0 @@
-guard = $guard;
- $this->limiter = $limiter;
- }
-
- /**
- * Handle the incoming request.
- *
- * @return mixed
- */
- public function handle(Request $request, callable $next)
- {
- $user = $this->validateCredentials($request);
-
- if (Fortify::confirmsTwoFactorAuthentication()) {
- if ($user?->two_factor_secret &&
- ! is_null($user?->two_factor_confirmed_at) &&
- in_array(TwoFactorAuthenticatable::class, class_uses_recursive($user))) {
- return $this->twoFactorChallengeResponse($request, $user);
- } else {
- return $next($request);
- }
- }
-
- if ($user?->two_factor_secret &&
- in_array(TwoFactorAuthenticatable::class, class_uses_recursive($user))) {
- return $this->twoFactorChallengeResponse($request, $user);
- }
-
- return $next($request);
- }
-
- /**
- * Attempt to validate the incoming credentials.
- *
- * @return mixed
- */
- protected function validateCredentials(Request $request)
- {
- if (Fortify::$authenticateUsingCallback) {
- return tap(call_user_func(Fortify::$authenticateUsingCallback, $request), function ($user) use ($request): void {
- if (! $user) {
- $this->fireFailedEvent($request);
-
- $this->throwFailedAuthenticationException($request);
- }
- });
- }
-
- $model = $this->guard->getProvider()->getModel();
-
- return tap($model::where(Fortify::username(), $request->{Fortify::username()})->first(), function ($user) use ($request): void {
- // Update the users password to bcrypt, if they previously used md5
- if ($user && config('habbo.site.convert_passwords')) {
- $this->convertUserPassword($user, $request->input('password'));
- }
-
- if (! $user || ! $this->guard->getProvider()->validateCredentials($user, ['password' => $request->password])) {
- $this->fireFailedEvent($request, $user);
-
- $this->throwFailedAuthenticationException($request);
- }
-
- $this->validate($request);
-
- $user = User::select('id', 'password', 'rank')
- ->where('username', '=', $request->input('username'))
- ->first();
-
- if (setting('maintenance_enabled') === '1' && setting('min_maintenance_login_rank') > $user->rank) {
- throw ValidationException::withMessages([
- 'username' => __('Only staff can login during maintenance!'),
- ]);
- }
- });
- }
-
- /**
- * Throw a failed authentication validation exception.
- *
- *
- * @throws ValidationException
- */
- protected function throwFailedAuthenticationException(Request $request): void
- {
- $this->limiter->increment($request);
-
- throw ValidationException::withMessages([
- Fortify::username() => [trans('auth.failed')],
- ])->errorBag('login');
- }
-
- /**
- * Fire the failed authentication attempt event with the given arguments.
- */
- protected function fireFailedEvent(Request $request, ?Authenticatable $user = null): void
- {
- event(new Failed(config('fortify.guard'), $user, [
- Fortify::username() => $request->{Fortify::username()},
- 'password' => $request->password,
- ]));
- }
-
- /**
- * Get the two factor authentication enabled response.
- *
- * @param mixed $user
- */
- protected function twoFactorChallengeResponse(Request $request, $user): Response
- {
- $request->session()->put([
- 'login.id' => $user->getKey(),
- 'login.remember' => $request->filled('remember'),
- ]);
-
- event(new \Laravel\Fortify\Events\TwoFactorAuthenticationChallenged($user));
-
- return $request->wantsJson()
- ? response()->json(['two_factor' => true])
- : to_route('two-factor.login');
- }
-
- private function convertUserPassword(User $user, string $password)
- {
- if ($user->password == md5($password)) {
- $user->update([
- 'password' => Hash::make($password),
- ]);
- }
- }
-
- private function validate(Request $request): array
- {
- $rules = [];
-
- if (setting('google_recaptcha_enabled') !== '' && setting('google_recaptcha_enabled') !== '0') {
- $rules['g-recaptcha-response'] = ['required', 'string', new GoogleRecaptchaRule];
- }
-
- if (setting('cloudflare_turnstile_enabled') !== '' && setting('cloudflare_turnstile_enabled') !== '0') {
- $rules['cf-turnstile-response'] = ['required', app(Turnstile::class)];
- }
-
- $messages = [
- 'g-recaptcha-response.required' => __('The Google reCAPTCHA must be completed'),
- 'g-recaptcha-response.string' => __('The Google reCAPTCHA was submitted with an invalid type'),
- 'cf-turnstile-response.required' => __('The Cloudflare Turnstile response is required'),
- ];
-
- return Validator::make($request->all(), $rules, $messages)->validate();
- }
-}
diff --git a/Updated_Cms/app/Actions/Fortify/RedirectIfTwoFactorConfirmed.php b/Updated_Cms/app/Actions/Fortify/RedirectIfTwoFactorConfirmed.php
deleted file mode 100644
index e32b96cc9b..0000000000
--- a/Updated_Cms/app/Actions/Fortify/RedirectIfTwoFactorConfirmed.php
+++ /dev/null
@@ -1,10 +0,0 @@
- $this->passwordRules(),
- ])->validate();
-
- $user->forceFill([
- 'password' => Hash::make($input['password']),
- ])->save();
- }
-}
diff --git a/Updated_Cms/app/Actions/Fortify/Rules/PasswordValidationRules.php b/Updated_Cms/app/Actions/Fortify/Rules/PasswordValidationRules.php
deleted file mode 100644
index 7e0fac17a6..0000000000
--- a/Updated_Cms/app/Actions/Fortify/Rules/PasswordValidationRules.php
+++ /dev/null
@@ -1,16 +0,0 @@
- ['required', 'string', 'current_password:web'],
- 'password' => $this->passwordRules(),
- ], [
- 'current_password.current_password' => __('The provided password does not match your current password.'),
- ])->validateWithBag('updatePassword');
-
- $user->forceFill([
- 'password' => Hash::make($input['password']),
- ])->save();
- }
-}
diff --git a/Updated_Cms/app/Actions/Fortify/UpdateUserProfileInformation.php b/Updated_Cms/app/Actions/Fortify/UpdateUserProfileInformation.php
deleted file mode 100644
index d325d3bf6e..0000000000
--- a/Updated_Cms/app/Actions/Fortify/UpdateUserProfileInformation.php
+++ /dev/null
@@ -1,57 +0,0 @@
- ['required', 'string', 'max:255'],
-
- 'email' => [
- 'required',
- 'string',
- 'email',
- 'max:255',
- Rule::unique('users')->ignore($user->id),
- ],
- ])->validateWithBag('updateProfileInformation');
-
- if ($input['email'] !== $user->email &&
- $user instanceof MustVerifyEmail) {
- $this->updateVerifiedUser($user, $input);
- } else {
- $user->forceFill([
- 'name' => $input['name'],
- 'email' => $input['email'],
- ])->save();
- }
- }
-
- /**
- * Update the given verified user's profile information.
- *
- * @param mixed $user
- */
- protected function updateVerifiedUser($user, array $input): void
- {
- $user->forceFill([
- 'name' => $input['name'],
- 'email' => $input['email'],
- 'email_verified_at' => null,
- ])->save();
-
- $user->sendEmailVerificationNotification();
- }
-}
diff --git a/Updated_Cms/app/Actions/SendCurrency.php b/Updated_Cms/app/Actions/SendCurrency.php
deleted file mode 100644
index b500968884..0000000000
--- a/Updated_Cms/app/Actions/SendCurrency.php
+++ /dev/null
@@ -1,38 +0,0 @@
-rcon->isConnected) {
- match ($type) {
- 'credits' => $this->rcon->giveCredits($user, $amount),
- 'duckets' => $this->rcon->giveDuckets($user, $amount),
- 'diamonds' => $this->rcon->giveDiamonds($user, $amount),
- 'points' => $this->rcon->giveGotw($user, $amount),
- default => false,
- };
- } else {
- match ($type) {
- 'credits' => $user->increment('credits', $amount),
- 'duckets' => $user->currencies()->where('type', CurrencyTypes::Duckets)->increment('amount', $amount),
- 'diamonds' => $user->currencies()->where('type', CurrencyTypes::Diamonds)->increment('amount', $amount),
- 'points' => $user->currencies()->where('type', CurrencyTypes::Points)->increment('amount', $amount),
- default => false,
- };
- }
-
- return null;
- }
-}
diff --git a/Updated_Cms/app/Actions/SendFurniture.php b/Updated_Cms/app/Actions/SendFurniture.php
deleted file mode 100644
index b0a2d565cd..0000000000
--- a/Updated_Cms/app/Actions/SendFurniture.php
+++ /dev/null
@@ -1,28 +0,0 @@
-rcon->isConnected) {
- for ($i = 0; $i < $furni['amount']; $i++) {
- $this->rcon->sendGift($user, $furni['item_id'], 'Thank you for supporting ' . setting('hotel_name'));
- }
- } else {
- for ($i = 0; $i < $furni['amount']; $i++) {
- $user->items()->create([
- 'item_id' => $furni['item_id'],
- ]);
- }
- }
- }
- }
-}
diff --git a/Updated_Cms/app/Actions/UserActions.php b/Updated_Cms/app/Actions/UserActions.php
deleted file mode 100644
index d5756fc00a..0000000000
--- a/Updated_Cms/app/Actions/UserActions.php
+++ /dev/null
@@ -1,34 +0,0 @@
-update([
- 'username' => $username,
- ]);
- }
-
- public function updateEmail($user, $email): void
- {
- $user->update([
- 'mail' => $email,
- ]);
- }
-
- public function updateMotto($user, $motto): void
- {
- $user->update([
- 'motto' => $motto,
- ]);
- }
-
- public function updateField($user, string $field, ?string $value): void
- {
- $user->update([
- $field => $value,
- ]);
- }
-}
diff --git a/Updated_Cms/app/Console/Commands/AtomSetupCommand.php b/Updated_Cms/app/Console/Commands/AtomSetupCommand.php
deleted file mode 100644
index 91c9ea02e9..0000000000
--- a/Updated_Cms/app/Console/Commands/AtomSetupCommand.php
+++ /dev/null
@@ -1,148 +0,0 @@
-info(sprintf('Step %s/13', $step));
- $this->newLine();
- }
-
- public function handle(): void
- {
- Artisan::call('db:seed --class=WebsiteSettingsSeeder');
-
- if ($this->option('auto') === 'false') {
- $step = 1;
-
- $this->progressInfo($step);
- $step++;
-
- $hotelName = $this->ask('Enter your hotel name');
- WebsiteSetting::where('key', '=', 'hotel_name')->update([
- 'value' => empty($hotelName) ? 'Hotel' : $hotelName,
- ]);
-
- $this->progressInfo($step);
- $step++;
-
- $colorMode = $this->choice('Enter your preferred CMS color mode', ['light', 'dark'], 0);
- WebsiteSetting::where('key', '=', 'cms_color_mode')->update([
- 'value' => $colorMode,
- ]);
-
- $this->progressInfo($step);
- $step++;
-
- $startCredits = $this->ask('Enter the amount of credits new users should start with: (default is 5000)');
- WebsiteSetting::where('key', '=', 'start_credits')->update([
- 'value' => empty($startCredits) ? '5000' : $startCredits,
- ]);
-
- $this->progressInfo($step);
- $step++;
-
- $startDuckets = $this->ask('Enter the amount of credits new users should start with: (default is 5000)');
- WebsiteSetting::where('key', '=', 'start_duckets')->update([
- 'value' => empty($startDuckets) ? '5000' : $startDuckets,
- ]);
-
- $this->progressInfo($step);
- $step++;
-
- $startDiamonds = $this->ask('Enter the amount of diamonds new users should start with: (default is 100)');
- WebsiteSetting::where('key', '=', 'start_diamonds')->update([
- 'value' => empty($startDiamonds) ? '100' : $startDiamonds,
- ]);
-
- $this->progressInfo($step);
- $step++;
-
- $startPoints = $this->ask('Enter the amount of points new users should start with (default is 0)');
- WebsiteSetting::where('key', '=', 'start_points')->update([
- 'value' => empty($startPoints) ? '0' : $startPoints,
- ]);
-
- $this->progressInfo($step);
- $step++;
-
- $maxAccountsPerIP = $this->ask('Enter the amount of accounts a user can register per IP address (default is 2)');
- WebsiteSetting::where('key', '=', 'max_accounts_per_ip')->update([
- 'value' => empty($maxAccountsPerIP) ? '2' : $maxAccountsPerIP,
- ]);
-
- $this->progressInfo($step);
- $step++;
-
- $recaptchaEnabled = $this->choice('Google ReCaptcha enabled: (Do not forget to add your keys to your .env file in-case you set this to 1)', ['0', '1'], 0);
- WebsiteSetting::where('key', '=', 'google_recaptcha_enabled')->update([
- 'value' => $recaptchaEnabled,
- ]);
-
- $this->progressInfo($step);
- $step++;
-
- $wordfilterEnabled = $this->choice('CMS wordfilter enabled', ['0', '1'], 1);
- WebsiteSetting::where('key', '=', 'website_wordfilter_enabled')->update([
- 'value' => $wordfilterEnabled,
- ]);
-
- $this->progressInfo($step);
- $step++;
-
- $requiredBetaCode = $this->choice('Requires beta code to register', ['0', '1'], 0);
- WebsiteSetting::where('key', '=', 'requires_beta_code')->update([
- 'value' => $requiredBetaCode,
- ]);
-
- $this->progressInfo($step);
- $step++;
-
- $registrationDisabled = $this->choice('Disable registration (Can be re-enabled later inside website_settings table if set to 1)', ['0', '1'], 0);
- WebsiteSetting::where('key', '=', 'disable_registration')->update([
- 'value' => $registrationDisabled,
- ]);
-
- $this->progressInfo($step);
- $step++;
-
- $giveHC = $this->choice('Give all new users HC automatically', ['0', '1'], 0);
- WebsiteSetting::where('key', '=', 'give_hc_on_register')->update([
- 'value' => $giveHC,
- ]);
-
- $this->progressInfo($step);
-
- $maxCommentArticles = $this->ask('Enter the amount of comments each user can post per article (default is 2)');
- WebsiteSetting::where('key', '=', 'max_comment_per_article')->update([
- 'value' => empty($maxCommentArticles) ? '2' : $maxCommentArticles,
- ]);
- }
-
- $seeders = [
- 'WebsiteLanguageSeeder',
- 'WebsiteArticleSeeder',
- 'WebsitePermissionSeeder',
- 'WebsiteWordfilterSeeder',
- 'WebsiteTeamSeeder',
- 'WebsiteRuleCategorySeeder',
- 'WebsiteRuleSeeder',
- ];
-
- foreach ($seeders as $seeder) {
- Artisan::call(sprintf('db:seed --class=%s', $seeder));
- }
-
- $this->info('The setup was successful!');
- }
-}
diff --git a/Updated_Cms/app/Console/Commands/ImportAdsData.php b/Updated_Cms/app/Console/Commands/ImportAdsData.php
deleted file mode 100644
index 97ae9b10d4..0000000000
--- a/Updated_Cms/app/Console/Commands/ImportAdsData.php
+++ /dev/null
@@ -1,88 +0,0 @@
-getOrDefault('ads_path_filesystem');
-
- if (! $this->validatePath($adsPath)) {
- return;
- }
-
- $files = $this->getImageFiles($adsPath);
-
- if ($files === []) {
- $this->warn('No valid image files found in the ads directory.');
-
- return;
- }
-
- $this->processFiles($files);
-
- $this->info('Ads data import completed successfully.');
- }
-
- private function validatePath(?string $adsPath): bool
- {
- if (in_array($adsPath, [null, '', '0'], true)) {
- $this->error('Ads path is not configured in website_settings.');
-
- return false;
- }
-
- if (! is_dir($adsPath)) {
- $this->error("The ads path '{$adsPath}' does not exist in the filesystem.");
-
- return false;
- }
-
- return true;
- }
-
- private function getImageFiles(string $adsPath): array
- {
- return array_filter(scandir($adsPath), function ($file) use ($adsPath) {
- $filePath = $adsPath . DIRECTORY_SEPARATOR . $file;
-
- return is_file($filePath) &&
- in_array(strtolower(pathinfo($file, PATHINFO_EXTENSION)), self::ALLOWED_EXTENSIONS);
- });
- }
-
- private function processFiles(array $files): void
- {
- // Get existing images to avoid duplicates
- $existingImages = WebsiteAd::pluck('image')->toArray();
-
- $newFiles = Collection::make($files)
- ->filter(fn ($file) => ! in_array($file, $existingImages))
- ->map(fn ($file) => ['image' => $file])
- ->values();
-
- $skippedCount = count($files) - $newFiles->count();
- if ($skippedCount > 0) {
- $this->warn("Skipped {$skippedCount} existing files.");
- }
-
- $newFiles->chunk(self::CHUNK_SIZE)->each(function ($chunk): void {
- WebsiteAd::insert($chunk->toArray());
- $this->info('Processed ' . $chunk->count() . ' files.');
- });
- }
-}
diff --git a/Updated_Cms/app/Console/Commands/ImportBadgeData.php b/Updated_Cms/app/Console/Commands/ImportBadgeData.php
deleted file mode 100644
index 570f107e86..0000000000
--- a/Updated_Cms/app/Console/Commands/ImportBadgeData.php
+++ /dev/null
@@ -1,94 +0,0 @@
-settingsService->getOrDefault('nitro_external_texts_file');
-
- if (! $this->validateJsonFile($jsonPath)) {
- return;
- }
-
- try {
- $this->processBadgeData($jsonPath);
- $this->info('Badge data imported successfully.');
- } catch (Exception $e) {
- Log::error('Failed to import badge data: ' . $e->getMessage());
- $this->error('Failed to import badge data. Check the logs for details.');
- }
- }
-
- private function validateJsonFile(?string $jsonPath): bool
- {
- if (in_array($jsonPath, [null, '', '0'], true)) {
- $this->error('The JSON file path is not configured in the website settings.');
-
- return false;
- }
-
- if (! file_exists($jsonPath)) {
- $this->error('The JSON file does not exist at the specified path: ' . $jsonPath);
-
- return false;
- }
-
- return true;
- }
-
- private function processBadgeData(string $jsonPath): void
- {
- $jsonData = File::json($jsonPath);
-
- // Extract badge names and descriptions
- $badgeNames = Collection::make($jsonData)
- ->filter(fn ($value, $key) => str_starts_with((string) $key, 'badge_name_'))
- ->mapWithKeys(fn ($value, $key) => [str_replace('badge_name_', '', $key) => $value]);
-
- $badgeDescriptions = Collection::make($jsonData)
- ->filter(fn ($value, $key) => str_starts_with((string) $key, self::BADGE_PREFIX))
- ->mapWithKeys(fn ($value, $key) => [str_replace(self::BADGE_PREFIX, '', $key) => $value]);
-
- // Combine badge names and descriptions
- $badgeData = $badgeNames->map(fn ($name, $key) => [
- 'badge_key' => $key, // Use only the badge name (e.g., 14X12, 14XR1)
- 'badge_name' => $name,
- 'badge_description' => $badgeDescriptions->get($key, 'No description available'),
- ])->values();
-
- // Upsert the combined data in chunks
- $badgeData->chunk(self::CHUNK_SIZE)->each(function ($chunk): void {
- WebsiteBadge::upsert(
- $chunk->toArray(),
- ['badge_key'],
- ['badge_name', 'badge_description'],
- );
-
- $this->info('Processed ' . $chunk->count() . ' badges.');
- });
- }
-}
diff --git a/Updated_Cms/app/Console/Kernel.php b/Updated_Cms/app/Console/Kernel.php
deleted file mode 100644
index ab95470bd0..0000000000
--- a/Updated_Cms/app/Console/Kernel.php
+++ /dev/null
@@ -1,29 +0,0 @@
-command('inspire')->hourly();
- }
-
- /**
- * Register the commands for the application.
- */
- #[\Override]
- protected function commands(): void
- {
- $this->load(__DIR__ . '/Commands');
-
- require base_path('routes/console.php');
- }
-}
diff --git a/Updated_Cms/app/Enums/AchievementCategory.php b/Updated_Cms/app/Enums/AchievementCategory.php
deleted file mode 100644
index d9c6c41390..0000000000
--- a/Updated_Cms/app/Enums/AchievementCategory.php
+++ /dev/null
@@ -1,31 +0,0 @@
- self::Credits,
- 'duckets' => self::Duckets,
- 'diamonds' => self::Diamonds,
- 'points' => self::Points,
- default => null,
- };
- }
-
- public function getImage(): string
- {
- return match ($this->value) {
- CurrencyTypes::Credits->value => asset('assets/images/currencies/credits.gif'),
- CurrencyTypes::Duckets->value => asset('assets/images/currencies/duckets.png'),
- CurrencyTypes::Diamonds->value => asset('assets/images/currencies/diamonds.png'),
- CurrencyTypes::Points->value => asset('assets/images/currencies/points.png'),
- };
- }
-
- public static function toInput(): array
- {
- $allCurrencies = self::cases();
-
- return array_combine(
- array_column($allCurrencies, 'value'),
- array_column($allCurrencies, 'name'),
- );
- }
-}
diff --git a/Updated_Cms/app/Exceptions/Handler.php b/Updated_Cms/app/Exceptions/Handler.php
deleted file mode 100644
index 28c7d817a4..0000000000
--- a/Updated_Cms/app/Exceptions/Handler.php
+++ /dev/null
@@ -1,49 +0,0 @@
-, \Psr\Log\LogLevel::*>
- */
- protected $levels = [
- //
- ];
-
- /**
- * A list of the exception types that are not reported.
- *
- * @var array>
- */
- protected $dontReport = [
- //
- ];
-
- /**
- * A list of the inputs that are never flashed to the session on validation exceptions.
- *
- * @var array
- */
- protected $dontFlash = [
- 'current_password',
- 'password',
- 'password_confirmation',
- ];
-
- /**
- * Register the exception handling callbacks for the application.
- */
- #[\Override]
- public function register(): void
- {
- $this->reportable(function (Throwable $e): void {
- //
- });
- }
-}
diff --git a/Updated_Cms/app/Exceptions/MigrationFailedException.php b/Updated_Cms/app/Exceptions/MigrationFailedException.php
deleted file mode 100644
index 8483ffa54e..0000000000
--- a/Updated_Cms/app/Exceptions/MigrationFailedException.php
+++ /dev/null
@@ -1,7 +0,0 @@
-schema([
- DatePicker::make("{$name}_from"),
- DatePicker::make("{$name}_until"),
- ])
- ->query(function (Builder $query, array $data) use (&$name): Builder {
- return $query
- ->when(
- $data["{$name}_from"],
- fn (Builder $query, $date): Builder => $query->whereDate($name, '>=', $date),
- )
- ->when(
- $data["{$name}_until"],
- fn (Builder $query, $date): Builder => $query->whereDate($name, '<=', $date),
- );
- });
- }
-}
diff --git a/Updated_Cms/app/Filament/Pages/BadgePage.php b/Updated_Cms/app/Filament/Pages/BadgePage.php
deleted file mode 100644
index 9619683800..0000000000
--- a/Updated_Cms/app/Filament/Pages/BadgePage.php
+++ /dev/null
@@ -1,315 +0,0 @@
-user()->can('view::admin::' . static::$roleName);
- }
-
- #[\Override]
- public function getTitle(): string|Htmlable
- {
- return __(
- sprintf('filament::resources.resources.%s.navigation_label', static::$translateIdentifier),
- );
- }
-
- public function form(Schema $schema): Schema
- {
- return $schema
- ->components([
- Section::make(__('filament::resources.tabs.Main'))
- ->schema([
- TextInput::make('code')
- ->label(__('filament::resources.inputs.badge_code'))
- ->helperText(__('filament::resources.helpers.badge_code_helper'))
- ->afterStateUpdated(function (?string $state, Set $set): void {
- $set('code', strtoupper($state));
- })
- ->suffixAction(fn (): PageAction => PageAction::make('search')->icon('heroicon-o-magnifying-glass')->action(fn () => $this->searchBadgesByCode()),
- ),
-
- TextInput::make('image')
- ->label(__('filament::resources.inputs.badge_image'))
- ->placeholder('...')
- ->autocomplete()
- ->visible(fn (Get $get) => isset($this->data['image']) ?? false)
- ->prefixAction(
- fn (?string $state): PageAction => PageAction::make('visit')
- ->icon('heroicon-s-arrow-top-right-on-square')
- ->tooltip(__('filament::resources.common.Open link'))
- ->url($state)
- ->visible(fn () => ! in_array($state, [null, '', '0'], true))
- ->openUrlInNewTab(),
- ),
- ]),
-
- Section::make('Nitro Texts')
- ->collapsible()
- ->visible(fn () => isset($this->data['nitro']) && ! empty($this->data['nitro']))
- ->schema([
- TextInput::make('nitro.title')
- ->label(__('filament::resources.inputs.badge_title'))
- ->placeholder('...')
- ->visible(fn () => isset($this->data['nitro']['title']) ?? false),
-
- TextInput::make('nitro.description')
- ->label(__('filament::resources.inputs.badge_description'))
- ->placeholder('...')
- ->visible(fn () => isset($this->data['nitro']['description']) ?? false),
- ]),
-
- Section::make('Flash Texts')
- ->collapsible()
- ->visible(fn () => isset($this->data['flash']) && ! empty($this->data['flash']))
- ->schema([
- TextInput::make('flash.title')
- ->label(__('filament::resources.inputs.badge_title'))
- ->placeholder('...')
- ->visible(fn () => isset($this->data['flash']['title']) ?? false),
-
- TextInput::make('flash.description')
- ->label(__('filament::resources.inputs.badge_description'))
- ->placeholder('...')
- ->visible(fn () => isset($this->data['flash']['description']) ?? false),
- ]),
- ])
- ->statePath('data');
- }
-
- private function searchBadgesByCode(): void
- {
- $badgeCode = $this->form->getState()['code'] ?? null;
-
- if (empty($badgeCode)) {
- $this->notify('danger', __('filament::resources.notifications.badge_code_required'));
-
- return;
- }
-
- $badgeData = app(ExternalTextsParser::class)->getBadgeData($badgeCode);
- $this->badgeWasPreviouslyCreated = is_array($badgeData['nitro']) || is_array($badgeData['flash']);
-
- if ($this->badgeWasPreviouslyCreated) {
- Notification::make()
- ->icon('heroicon-o-check-circle')
- ->iconColor('success')
- ->color('success')
- ->title(__('filament::resources.notifications.badge_found'))
- ->send();
-
- $this->data = [
- 'code' => $badgeCode,
- ...$this->getDefaultDataBehavior(
- $badgeData['image'] ?? null,
- $badgeData['nitro']['title'] ?? null,
- $badgeData['nitro']['description'] ?? null,
- $badgeData['flash']['title'] ?? null,
- $badgeData['flash']['description'] ?? null,
- ),
- ];
-
- return;
- }
-
- Notification::make()
- ->color('success')
- ->icon('heroicon-o-check-circle')
- ->iconColor('success')
- ->title(__('filament::resources.notifications.create_badge'))
- ->send();
-
- $this->data = [
- 'code' => $badgeCode,
- ...$this->getDefaultDataBehavior(),
- ];
- }
-
- private function getDefaultDataBehavior(
- ?string $badgeImageUrl = null,
- ?string $nitroTitle = null,
- ?string $nitroDesc = null,
- ?string $flashTitle = null,
- ?string $flashDesc = null,
- ): array {
- return [
- 'image' => $badgeImageUrl ?? '',
- 'nitro' => [
- 'title' => $nitroTitle ?? '',
- 'description' => $nitroDesc ?? '',
- ],
- 'flash' => [
- 'title' => $flashTitle ?? '',
- 'description' => $flashDesc ?? '',
- ],
- ];
- }
-
- public function create()
- {
- $nitroEnabled = config('hotel.client.nitro.enabled');
- $flashEnabled = config('hotel.client.flash.enabled');
-
- // image and code fields are required when creating a new badge
- if (! $this->badgeWasPreviouslyCreated && (empty($this->data['image']) || empty($this->data['code']))) {
- $notificationTitle = empty($this->data['image']) ?
- __('filament::resources.notifications.badge_image_required') :
- __('filament::resources.notifications.badge_code_required');
-
- Notification::make()
- ->icon('heroicon-o-exclamation-triangle')
- ->iconColor('danger')
- ->color('danger')
- ->title($notificationTitle)
- ->send();
-
- return;
- }
-
- $externalTextsParser = app(ExternalTextsParser::class);
-
- if ((empty($this->data['nitro']) && $nitroEnabled) || (empty($this->data['flash']) && $flashEnabled)) {
- Notification::make()
- ->icon('heroicon-o-exclamation-triangle')
- ->iconColor('danger')
- ->color('danger')
- ->title(__('filament::resources.notifications.badge_texts_required'))
- ->send();
-
- return;
- }
-
- try {
- $this->uploadBadgeImage($externalTextsParser);
-
- if (! empty($this->data['nitro']) && $nitroEnabled) {
- $externalTextsParser->updateNitroBadgeTexts($this->data['code'], ...$this->data['nitro']);
- }
- if (! empty($this->data['flash']) && $flashEnabled) {
- $externalTextsParser->updateFlashBadgeTexts($this->data['code'], ...$this->data['flash']);
- }
- } catch (Throwable $exception) {
- Log::channel('badge')->error('[ORION BADGE RESOURCE] - ERROR: ' . $exception->getMessage());
-
- Notification::make()
- ->icon('heroicon-o-exclamation-triangle')
- ->iconColor('danger')
- ->color('danger')
- ->title(__('filament::resources.notifications.badge_update_failed'))
- ->send();
-
- return;
- }
-
- $this->data['image'] = $externalTextsParser->getBadgeImageUrl($this->data['code']);
- $this->badgeWasPreviouslyCreated = true;
-
- Notification::make()
- ->icon('heroicon-o-check-circle')
- ->iconColor('success')
- ->color('success')
- ->title(__('filament::resources.notifications.badge_updated'))
- ->send();
- }
-
- protected function uploadBadgeImage(ExternalTextsParser $parser): void
- {
- if (empty($this->data['image']) || ! filter_var($this->data['image'], FILTER_VALIDATE_URL)) {
- return;
- }
-
- if ($this->data['image'] == $parser->getBadgeImageUrl($this->data['code'])) {
- return;
- }
-
- $image = Http::get($this->data['image']);
-
- if (! $image->successful()) {
- return;
- }
-
- $contentType = $image->header('content-type');
-
- $gdImage = match ($contentType) {
- 'image/png' => imagecreatefrompng($this->data['image']),
- 'image/gif' => imagecreatefromgif($this->data['image']),
- 'image/jpeg' => imagecreatefromjpeg($this->data['image']),
- default => false
- };
-
- if ($gdImage === false) {
- Notification::make()
- ->icon('heroicon-o-exclamation-triangle')
- ->iconColor('danger')
- ->color('danger')
- ->title(__('filament::resources.notifications.badge_image_upload_failed'))
- ->send();
-
- return;
- }
-
- $uploadPath = public_path(sprintf('%s%s%s.gif',
- rtrim((string) config('hotel.client.flash.relative_files_path'), '\//'),
- '/c_images/album1584/',
- $this->data['code'],
- ));
-
- imagegif($gdImage, $uploadPath);
- }
-
- /**
- * @return array<\Filament\Actions\Action|ActionGroup>
- */
- protected function getHeaderActions(): array
- {
- return [
- PageAction::make('save')
- ->label(__('filament::resources.common.Update'))
- ->action(fn () => $this->create())
- ->color('primary')
- ->visible(fn () => isset($this->data['code']) && $this->badgeWasPreviouslyCreated),
-
- PageAction::make('create')
- ->label(__('filament::resources.common.Create'))
- ->action(fn () => $this->create())
- ->color('success')
- ->visible(fn () => isset($this->data['code']) && ! $this->badgeWasPreviouslyCreated),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Pages/Dashboard.php b/Updated_Cms/app/Filament/Pages/Dashboard.php
deleted file mode 100644
index b55ba826c7..0000000000
--- a/Updated_Cms/app/Filament/Pages/Dashboard.php
+++ /dev/null
@@ -1,26 +0,0 @@
-user()->can('view::admin::' . static::$roleName);
- }
-}
diff --git a/Updated_Cms/app/Filament/Pages/Login.php b/Updated_Cms/app/Filament/Pages/Login.php
deleted file mode 100644
index d3e02bdf06..0000000000
--- a/Updated_Cms/app/Filament/Pages/Login.php
+++ /dev/null
@@ -1,109 +0,0 @@
-rateLimit(5);
- } catch (TooManyRequestsException $exception) {
- Notification::make()
- ->title(__('filament-panels::pages/auth/login.notifications.throttled.title', [
- 'seconds' => $exception->secondsUntilAvailable,
- 'minutes' => ceil($exception->secondsUntilAvailable / 60),
- ]))
- ->body(array_key_exists('body', __('filament-panels::pages/auth/login.notifications.throttled') ?: []) ? __('filament-panels::pages/auth/login.notifications.throttled.body', [
- 'seconds' => $exception->secondsUntilAvailable,
- 'minutes' => ceil($exception->secondsUntilAvailable / 60),
- ]) : null)
- ->danger()
- ->send();
-
- return null;
- }
-
- $data = $this->form->getState();
-
- if (! Filament::auth()->attempt($this->getCredentialsFromFormData($data), $data['remember'] ?? false)) {
- $this->throwFailureValidationException();
- }
-
- $user = Filament::auth()->user();
-
- if (
- ($user instanceof FilamentUser) &&
- (! $user->canAccessPanel(Filament::getCurrentOrDefaultPanel()))
- ) {
- Filament::auth()->logout();
-
- $this->throwFailureValidationException();
- }
-
- session()->regenerate();
-
- return app(LoginResponse::class);
- }
-
- protected function throwFailureValidationException(): never
- {
- throw ValidationException::withMessages([
- 'data.username' => __('filament-panels::pages/auth/login.messages.failed'),
- ]);
- }
-
- protected function getFormSchema(): array
- {
- return [
- TextInput::make('username')
- ->label(__('filament::login.fields.username.label'))
- ->required()
- ->autocomplete(),
- TextInput::make('password')
- ->label(__('filament::login.fields.password.label'))
- ->password()
- ->required(),
- Checkbox::make('remember')
- ->label(__('filament::login.fields.remember.label')),
- ];
- }
-
- #[\Override]
- protected function getEmailFormComponent(): Component
- {
- return TextInput::make('username')
- ->label(__('filament::login.fields.username.label'))
- ->required()
- ->autocomplete()
- ->autofocus()
- ->extraInputAttributes(['tabindex' => 1]);
- }
-
- /**
- * @param array $data
- *
- * @return array
- */
- #[\Override]
- protected function getCredentialsFromFormData(array $data): array
- {
- return [
- 'username' => $data['username'],
- 'password' => $data['password'],
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/Articles/ArticleResource.php b/Updated_Cms/app/Filament/Resources/Atom/Articles/ArticleResource.php
deleted file mode 100644
index b0bac48467..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/Articles/ArticleResource.php
+++ /dev/null
@@ -1,227 +0,0 @@
-components(static::getForm());
- }
-
- public static function getForm(): array
- {
- return [
- Tabs::make('Main')
- ->tabs([
- Tab::make(__('filament::resources.tabs.Home'))
- ->icon('heroicon-o-home')
- ->schema([
- TextInput::make('title')
- ->label(__('filament::resources.inputs.title'))
- ->required()
- ->autocomplete()
- ->maxLength(255)
- ->columnSpan('full'),
-
- TextInput::make('short_story')
- ->label(__('filament::resources.inputs.description'))
- ->required()
- ->maxLength(255)
- ->autocomplete()
- ->columnSpan('full'),
-
- FileUpload::make('image')
- ->label(__('filament::resources.inputs.image'))
- ->directory('website_news_images')
- ->visibility('public'),
-
- RichEditor::make('full_story')
- ->label(__('filament::resources.inputs.content'))
- ->required()
- ->columnSpan('full'),
-
- Hidden::make('user_id')
- ->default(fn () => auth()->check() ? auth()->user()->id : null),
- ]),
-
- Tab::make(__('filament::resources.tabs.Configurations'))
- ->icon('heroicon-o-cog')
- ->schema([
- Toggle::make('is_visible')
- ->label(__('filament::resources.inputs.visible'))
- ->onIcon('heroicon-s-check')
- ->offIcon('heroicon-s-x-mark')
- ->default(true)
- ->live()
- ->afterStateUpdated(function (string $operation, $state, $record): void {
- if ($operation !== 'edit' || is_null($record)) {
- return;
- }
-
- try {
- if ($state) {
- $record->restore();
- } else {
- $record->delete();
- }
- } catch (Exception $e) {
- report($e);
- }
- })
- ->formatStateUsing(function ($record) {
- if (is_null($record)) {
- return true;
- }
-
- return is_null($record->deleted_at);
- }),
-
- Toggle::make('can_comment')
- ->onIcon('heroicon-s-check')
- ->label(__('filament::resources.inputs.allow_comments'))
- ->default(true)
- ->offIcon('heroicon-s-x-mark'),
- ]),
- ])->columnSpanFull(),
- ];
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('id', 'desc')
- ->poll('60s')
- ->columns(static::getTable())
- ->filters([
- TrashedFilter::make(),
- ])
- ->recordActions([
- ViewAction::make(),
- EditAction::make(),
- DeleteAction::make(),
- RestoreAction::make(),
- ForceDeleteAction::make(),
- ])
- ->toolbarActions([
- DeleteBulkAction::make(),
- RestoreBulkAction::make(),
- ForceDeleteBulkAction::make(),
- ]);
- }
-
- public static function getTable(): array
- {
- return [
- TextColumn::make('id')
- ->label(__('filament::resources.columns.id')),
-
- ImageColumn::make('image')
- ->circular()
- ->extraAttributes(['style' => 'image-rendering: pixelated'])
- ->size(50)
- ->label(__('filament::resources.columns.image')),
-
- TextColumn::make('title')
- ->label(__('filament::resources.columns.title'))
- ->searchable()
- ->limit(50),
-
- TextColumn::make('user.username')
- ->searchable()
- ->label(__('filament::resources.columns.by')),
-
- ToggleColumn::make('is_visible')
- ->label(__('filament::resources.columns.visible'))
- ->onIcon('heroicon-s-check')
- ->toggleable()
- ->state(fn ($record) => is_null($record->deleted_at))
- ->disabled(),
-
- ToggleColumn::make('allow_comments')
- ->label(__('filament::resources.columns.allow_comments'))
- ->onIcon('heroicon-s-check')
- ->toggleable()
- ->disabled(),
- ];
- }
-
- #[\Override]
- public static function getEloquentQuery(): Builder
- {
- return parent::getEloquentQuery()->withoutGlobalScopes([
- SoftDeletingScope::class,
- ]);
- }
-
- #[\Override]
- public static function getRelations(): array
- {
- return [
- TagsRelationManager::class,
- ];
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListArticles::route('/'),
- 'create' => CreateArticle::route('/create'),
- 'view' => ViewArticle::route('/{record}'),
- 'edit' => EditArticle::route('/{record}/edit'),
- ];
- }
-
- public static function getGlobalSearchEloquentQuery(): Builder
- {
- return parent::getGlobalSearchEloquentQuery()->withTrashed();
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/Articles/Pages/CreateArticle.php b/Updated_Cms/app/Filament/Resources/Atom/Articles/Pages/CreateArticle.php
deleted file mode 100644
index 2020419305..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/Articles/Pages/CreateArticle.php
+++ /dev/null
@@ -1,24 +0,0 @@
-getRecord();
-
- if (! $articleCreated || ! $articleCreated->visible) {
- return;
- }
-
- $articleCreated->createFollowersNotification();
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/Articles/Pages/EditArticle.php b/Updated_Cms/app/Filament/Resources/Atom/Articles/Pages/EditArticle.php
deleted file mode 100644
index e06ac4cbce..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/Articles/Pages/EditArticle.php
+++ /dev/null
@@ -1,19 +0,0 @@
-label(__('Send notifications'))
- ->color('gray')
- ->visible(fn (Model $record) => $record->user_id === Auth::id())
- ->requiresConfirmation()
- ->action(function (Model $record): void {
- $record->createFollowersNotification();
- }),
-
- EditAction::make(),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/Articles/RelationManagers/TagsRelationManager.php b/Updated_Cms/app/Filament/Resources/Atom/Articles/RelationManagers/TagsRelationManager.php
deleted file mode 100644
index e8f87ce20f..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/Articles/RelationManagers/TagsRelationManager.php
+++ /dev/null
@@ -1,59 +0,0 @@
-components([
- TextInput::make('name')
- ->required()
- ->maxLength(255),
- ]);
- }
-
- public function table(Table $table): Table
- {
- return $table
- ->columns(TagResource::getTable())
- ->modifyQueryUsing(fn ($query) => $query->latest())
- ->filters([
- //
- ])
- ->headerActions([
- CreateAction::make()
- ->schema(TagResource::getForm()),
-
- AttachAction::make()->preloadRecordSelect(),
- ])
- ->recordActions([
- ViewAction::make(),
- DetachAction::make(),
- ])
- ->toolbarActions([
- DetachBulkAction::make(),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/CameraWebs/CameraWebResource.php b/Updated_Cms/app/Filament/Resources/Atom/CameraWebs/CameraWebResource.php
deleted file mode 100644
index d180dbbce3..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/CameraWebs/CameraWebResource.php
+++ /dev/null
@@ -1,93 +0,0 @@
-components([
- Toggle::make('visible')
- ->label(__('Visible'))
- ->default(true),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('id', 'desc')
- ->columns([
- TextColumn::make('id')
- ->label(__('filament::resources.columns.id'))
- ->sortable(),
- TextColumn::make('user_id')
- ->label(__('filament::resources.columns.user_id')),
- TextColumn::make('room_id')
- ->label(__('filament::resources.columns.room_id')),
- TextColumn::make('timestamp')
- ->label(__('filament::resources.columns.created_at'))
- ->dateTime(),
- ImageColumn::make('url')
- ->label(__('filament::resources.columns.image'))
- ->extraAttributes(['style' => 'image-rendering: pixelated'])
- ->size(125),
- ToggleColumn::make('visible')
- ->label(__('Visible')),
- ])
- ->recordActions([
- DeleteAction::make(),
- ])
- ->toolbarActions([
- DeleteBulkAction::make(),
- ]);
- }
-
- #[\Override]
- public static function getRelations(): array
- {
- return [
- ];
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListCameraWeb::route('/'),
- 'edit' => EditCameraWeb::route('/{record}/edit'),
- ];
- }
-
- public static function canCreate(): bool
- {
- return false;
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/CameraWebs/Pages/EditCameraWeb.php b/Updated_Cms/app/Filament/Resources/Atom/CameraWebs/Pages/EditCameraWeb.php
deleted file mode 100644
index 5b4d712298..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/CameraWebs/Pages/EditCameraWeb.php
+++ /dev/null
@@ -1,19 +0,0 @@
-components([
- Section::make()
- ->schema([
- TextInput::make('key')
- ->label(__('filament::resources.inputs.key'))
- ->maxLength(50)
- ->autocomplete()
- ->unique(ignoreRecord: true)
- ->required(),
-
- TextInput::make('value')
- ->label(__('filament::resources.inputs.value'))
- ->required()
- ->maxLength(255)
- ->autocomplete(),
-
- TextInput::make('comment')
- ->label(__('filament::resources.inputs.comment'))
- ->nullable()
- ->maxLength(255)
- ->autocomplete()
- ->columnSpanFull(),
- ])
- ->columns([
- 'sm' => 2,
- ]),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('id', 'desc')
- ->columns([
- TextColumn::make('key')
- ->label(__('filament::resources.columns.key'))
- ->searchable(),
-
- TextColumn::make('value')
- ->label(__('filament::resources.columns.value'))
- ->searchable()
- ->limit(30),
-
- TextColumn::make('comment')
- ->label(__('filament::resources.columns.comment'))
- ->toggleable()
- ->searchable()
- ->tooltip(function (TextColumn $column): ?string {
- $state = $column->getState();
-
- if (strlen($state) <= $column->getCharacterLimit()) {
- return null;
- }
-
- return $state;
- })
- ->limit(60),
- ])
- ->filters([
- //
- ])
- ->recordActions([
- EditAction::make(),
- DeleteAction::make(),
- ])
- ->toolbarActions([
- // ...
- ]);
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ManageCmsSettings::route('/'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/CmsSettings/Pages/ManageCmsSettings.php b/Updated_Cms/app/Filament/Resources/Atom/CmsSettings/Pages/ManageCmsSettings.php
deleted file mode 100644
index 87abb290ec..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/CmsSettings/Pages/ManageCmsSettings.php
+++ /dev/null
@@ -1,24 +0,0 @@
-components(HelpQuestionResource::getForm(true));
- }
-
- public function table(Table $table): Table
- {
- return $table->columns(HelpQuestionResource::getTable())
- ->modifyQueryUsing(fn ($query) => $query->latest())
- ->filters([
- //
- ])
- ->headerActions([
- AttachAction::make(),
- ])
- ->recordActions([
- DetachAction::make(),
- ])
- ->toolbarActions([
- DetachBulkAction::make(),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/HelpQuestionResource/Pages/CreateHelpQuestion.php b/Updated_Cms/app/Filament/Resources/Atom/HelpQuestionResource/Pages/CreateHelpQuestion.php
deleted file mode 100644
index ee3c1da3ff..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/HelpQuestionResource/Pages/CreateHelpQuestion.php
+++ /dev/null
@@ -1,11 +0,0 @@
-components(HelpQuestionCategoryResource::getForm());
- }
-
- public function table(Table $table): Table
- {
- return $table->columns(HelpQuestionCategoryResource::getTable())
- ->modifyQueryUsing(fn ($query) => $query->latest('id'))
- ->filters([
- //
- ])
- ->headerActions([
- CreateAction::make(),
- AttachAction::make(),
- ])
- ->recordActions([
- EditAction::make(),
- DetachAction::make(),
- ])
- ->toolbarActions([
- DetachBulkAction::make(),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/HousekeepingPermissions/HousekeepingPermissionResource.php b/Updated_Cms/app/Filament/Resources/Atom/HousekeepingPermissions/HousekeepingPermissionResource.php
deleted file mode 100644
index 1a8acd8aee..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/HousekeepingPermissions/HousekeepingPermissionResource.php
+++ /dev/null
@@ -1,119 +0,0 @@
-components([
- Section::make()
- ->schema([
- TextInput::make('permission')
- ->label(__('filament::resources.inputs.permission'))
- ->maxLength(50)
- ->autocomplete()
- ->unique(ignoreRecord: true)
- ->required(),
-
- TextInput::make('min_rank')
- ->label(__('filament::resources.inputs.min_rank'))
- ->required()
- ->maxLength(255)
- ->autocomplete(),
-
- TextInput::make('description')
- ->label(__('filament::resources.inputs.description'))
- ->nullable()
- ->maxLength(255)
- ->autocomplete()
- ->columnSpanFull(),
- ])
- ->columns([
- 'sm' => 2,
- ]),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('id', 'asc')
- ->columns([
- TextColumn::make('permission')
- ->label(__('filament::resources.columns.permission'))
- ->searchable(),
-
- TextColumn::make('min_rank')
- ->label(__('filament::resources.columns.min_rank'))
- ->searchable()
- ->limit(30),
-
- TextColumn::make('description')
- ->label(__('filament::resources.columns.description'))
- ->toggleable()
- ->searchable()
- ->tooltip(function (TextColumn $column): ?string {
- $state = $column->getState();
-
- if (strlen($state) <= $column->getCharacterLimit()) {
- return null;
- }
-
- return $state;
- })
- ->limit(60),
- ])
- ->filters([
- //
- ])
- ->recordActions([
- EditAction::make(),
- DeleteAction::make(),
- ])
- ->toolbarActions([
- //
- ]);
- }
-
- #[\Override]
- public static function getRelations(): array
- {
- return [
- //
- ];
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListHousekeepingPermissions::route('/'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/HousekeepingPermissions/Pages/ListHousekeepingPermissions.php b/Updated_Cms/app/Filament/Resources/Atom/HousekeepingPermissions/Pages/ListHousekeepingPermissions.php
deleted file mode 100644
index 2e78f3d228..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/HousekeepingPermissions/Pages/ListHousekeepingPermissions.php
+++ /dev/null
@@ -1,19 +0,0 @@
-components([
- TextInput::make('label')
- ->label(__('filament::resources.inputs.label'))
- ->columnSpanFull()
- ->required()
- ->maxLength(255),
-
- TextInput::make('slug')
- ->label(__('filament::resources.inputs.slug')),
-
- TextInput::make('order')
- ->numeric()
- ->minValue(0)
- ->default(0)
- ->label(__('filament::resources.columns.order')),
-
- Toggle::make('visible')
- ->label(__('filament::resources.columns.visible')),
-
- Toggle::make('new_tab')
- ->label(__('filament::resources.columns.new_tab')),
- ])
- ->columns([
- 'sm' => 2,
- ]);
- }
-
- public function table(Table $table): Table
- {
- return $table
- ->columns([
- TextColumn::make('label'),
-
- TextColumn::make('slug')
- ->label(__('filament::resources.columns.slug')),
-
- ToggleColumn::make('visible')
- ->label(__('filament::resources.columns.visible')),
-
- ToggleColumn::make('new_tab')
- ->label(__('filament::resources.columns.new_tab')),
-
- TextColumn::make('order')
- ->label(__('filament::resources.columns.order')),
- ])
- ->reorderable('order')
- ->filters([
- //
- ])
- ->headerActions([
- CreateAction::make(),
- // Tables\Actions\AssociateAction::make(),
- ])
- ->recordActions([
- EditAction::make(),
- DissociateAction::make(),
- DeleteAction::make(),
- ])
- ->toolbarActions([
- DissociateBulkAction::make(),
- DeleteBulkAction::make(),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/Permissions/Pages/CreatePermission.php b/Updated_Cms/app/Filament/Resources/Atom/Permissions/Pages/CreatePermission.php
deleted file mode 100644
index a0bfaf85ac..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/Permissions/Pages/CreatePermission.php
+++ /dev/null
@@ -1,11 +0,0 @@
- ToggleButtons::make($name)
- ->label(function () use ($name) {
- $translationKey = "filament::resources.permissions.{$name}";
- $translation = __($translationKey);
-
- if ($translationKey == $translation) {
- return $name;
- }
-
- return $translation;
- })
- ->options(function () use ($needsSecondOption) {
- $options = [
- '0' => __('filament::resources.options.no'),
- '1' => __('filament::resources.options.yes'),
- ];
-
- if ($needsSecondOption) {
- $options['2'] = __('filament::resources.options.rights');
- }
-
- return $options;
- })
- ->icons(['0' => 'heroicon-o-check', '1' => 'heroicon-o-x-mark', '2' => 'heroicon-o-sparkles'])
- ->colors(['0' => 'danger', '1' => 'success'])
- ->grouped();
-
- return $schema
- ->components([
- Tabs::make('Main')
- ->tabs([
- Tab::make(__('filament::resources.tabs.General Information'))
- ->schema([
- TextInput::make('rank_name')
- ->label(__('filament::resources.inputs.name'))
- ->maxLength(25)
- ->required(),
-
- TextInput::make('badge')
- ->label(__('filament::resources.inputs.badge_code'))
- ->maxLength(12)
- ->required(),
-
- TextInput::make('level')
- ->label(__('filament::resources.inputs.level'))
- ->required(),
-
- TextInput::make('room_effect')
- ->label(__('filament::resources.inputs.room_effect'))
- ->required(),
- ]),
-
- Tab::make(__('filament::resources.tabs.In-game Permissions'))
- ->schema([
- Section::make(__('filament::resources.sections.permissions.title'))
- ->description(new HtmlString(__('filament::resources.sections.permissions.description')))
- ->schema([
- Grid::make()
- ->columns([
- 'sm' => 2,
- 'md' => 3,
- 'lg' => 3,
- ])
- ->schema(function () use ($groupedToggleButton) {
- $columns = Schema::getColumns('permissions');
-
- $arcturusPermissions = collect($columns)->filter(function (array $column) {
- $columnName = $column['name'] ?? null;
-
- if (! $columnName) {
- return false;
- }
-
- return str_starts_with($columnName, 'cmd')
- || str_starts_with($columnName, 'acc')
- || str_ends_with($columnName, 'cmd');
- })->values();
-
- return $arcturusPermissions->map(function (array $column) use ($groupedToggleButton) {
- $columnName = $column['name'];
- $needsSecondOption = $column['type_name'] == 'enum' && str_ends_with((string) $column['type'], "'2')");
-
- return $groupedToggleButton($columnName, $needsSecondOption);
- })->toArray();
- }),
- ]),
-
- ]),
-
- Tab::make(__('filament::resources.tabs.Configurations'))
- ->schema([
- Grid::make(['default' => 2])
- ->schema([
- Select::make('log_commands')
- ->label(__('filament::resources.inputs.log_commands'))
- ->columnSpanFull()
- ->options([
- '0' => __('filament::resources.options.no'),
- '1' => __('filament::resources.options.yes'),
- ]),
-
- TextInput::make('prefix')
- ->label(__('filament::resources.inputs.prefix'))
- ->maxLength(5)
- ->required(),
-
- ColorPicker::make('prefix_color')
- ->label(__('filament::resources.inputs.prefix_color'))
- ->required(),
-
- Toggle::make('hidden_rank')
- ->label(__('filament::resources.inputs.is_hidden'))
- ->columnSpanFull(),
-
- Section::make()
- ->schema([
- Grid::make()
- ->columns([
- 'md' => 2,
- ])
- ->schema([
- TextInput::make('auto_credits_amount')
- ->columnSpan(1)
- ->label(__('filament::resources.inputs.auto_credits_amount'))
- ->required(),
-
- TextInput::make('auto_pixels_amount')
- ->label(__('filament::resources.inputs.auto_pixels_amount'))
- ->required(),
-
- TextInput::make('auto_gotw_amount')
- ->label(__('filament::resources.inputs.auto_gotw_amount'))
- ->required(),
-
- TextInput::make('auto_points_amount')
- ->label(__('filament::resources.inputs.auto_points_amount'))
- ->required(),
- ]),
- ]),
- ]),
- ]),
- ])
- ->columnSpanFull()
- ->persistTabInQueryString(),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('id', 'desc')
- ->columns([
- TextColumn::make('id')
- ->label(__('filament::resources.columns.id')),
-
- HabboBadgeColumn::make('badge')
- ->alignCenter()
- ->label(__('filament::resources.columns.image')),
-
- TextColumn::make('rank_name')
- ->label(__('filament::resources.columns.name'))
- ->description(fn (Model $record) => Str::limit($record->description, 40))
- ->tooltip(function (Model $record): ?string {
- $description = $record->description;
-
- if (strlen($description) <= 40) {
- return null;
- }
-
- return $description;
- })
- ->searchable(),
-
- TextColumn::make('prefix')
- ->label(__('filament::resources.columns.prefix'))
- ->description(fn (Model $record) => $record->prefix_color)
- ->searchable(),
-
- ToggleColumn::make('hidden_rank')
- ->label(__('filament::resources.columns.is_hidden')),
- ])
- ->filters([
- //
- ])
- ->recordActions([
- ViewAction::make(),
- EditAction::make(),
- ])
- ->toolbarActions([
- ]);
- }
-
- #[\Override]
- public static function getRelations(): array
- {
- return [
- //
- ];
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListPermissions::route('/'),
- 'create' => CreatePermission::route('/create'),
- 'view' => ViewPermission::route('/{record}'),
- 'edit' => EditPermission::route('/{record}/edit'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/Tags/Pages/CreateTag.php b/Updated_Cms/app/Filament/Resources/Atom/Tags/Pages/CreateTag.php
deleted file mode 100644
index a592136ca6..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/Tags/Pages/CreateTag.php
+++ /dev/null
@@ -1,11 +0,0 @@
-components(ArticleResource::getForm());
- }
-
- public function table(Table $table): Table
- {
- return $table
- ->columns(ArticleResource::getTable())
- ->modifyQueryUsing(fn ($query) => $query->latest())
- ->filters([
- //
- ])
- ->headerActions([
- AttachAction::make()
- ->preloadRecordSelect(),
- ])
- ->recordActions([
- ViewAction::make(),
- DetachAction::make(),
- ])
- ->toolbarActions([
- DetachBulkAction::make(),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/Tags/TagResource.php b/Updated_Cms/app/Filament/Resources/Atom/Tags/TagResource.php
deleted file mode 100644
index 72efa4bf41..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/Tags/TagResource.php
+++ /dev/null
@@ -1,125 +0,0 @@
-components(static::getForm());
- }
-
- public static function getForm(): array
- {
- return [
- Tabs::make('Main')
- ->tabs([
- Tab::make(__('filament::resources.tabs.Home'))
- ->icon('heroicon-o-home')
- ->schema([
- TextInput::make('name')
- ->label(__('filament::resources.inputs.name'))
- ->required()
- ->maxLength(255)
- ->autocomplete()
- ->columnSpan('full'),
-
- ColorPicker::make('background_color')
- ->label(__('filament::resources.inputs.background_color'))
- ->required()
- ->columnSpan('full'),
- ]),
- ])->columnSpanFull(),
- ];
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('id', 'desc')
- ->columns(static::getTable())
- ->filters([
- //
- ])
- ->recordActions([
- ViewAction::make(),
- EditAction::make(),
- ])
- ->toolbarActions([
- DeleteBulkAction::make(),
- ]);
- }
-
- public static function getTable(): array
- {
- return [
- TextColumn::make('id')
- ->label(__('filament::resources.columns.id')),
-
- TextColumn::make('name')
- ->label(__('filament::resources.columns.name'))
- ->searchable()
- ->limit(50),
-
- ColorColumn::make('background_color')
- ->label(__('filament::resources.columns.background_color'))
- ->searchable()
- ->copyable()
- ->copyMessage(__('filament::resources.common.Sucessfull'))
- ->copyMessageDuration(1500),
- ];
- }
-
- #[\Override]
- public static function getRelations(): array
- {
- return [
- ArticlesRelationManager::class,
- ];
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListTags::route('/'),
- 'create' => CreateTag::route('/create'),
- 'view' => ViewTag::route('/{record}'),
- 'edit' => EditTag::route('/{record}/edit'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/Teams/Pages/CreateTeam.php b/Updated_Cms/app/Filament/Resources/Atom/Teams/Pages/CreateTeam.php
deleted file mode 100644
index 5be49423ae..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/Teams/Pages/CreateTeam.php
+++ /dev/null
@@ -1,11 +0,0 @@
-components([
- Section::make()
- ->schema([
- TextInput::make('rank_name')
- ->autofocus()
- ->maxLength(255)
- ->required()
- ->label(__('filament::resources.inputs.name')),
-
- TextInput::make('job_description')
- ->maxLength(255)
- ->label(__('filament::resources.inputs.description')),
-
- TextInput::make('badge')
- ->maxLength(255)
- ->label(__('filament::resources.inputs.badge_code'))
- ->required(),
-
- Toggle::make('hidden_rank')
- ->label(__('filament::resources.inputs.is_hidden')),
- ]),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('id', 'desc')
- ->columns([
- TextColumn::make('id')
- ->label(__('filament::resources.columns.id')),
-
- HabboBadgeColumn::make('badge')
- ->label(__('filament::resources.columns.badge')),
-
- TextColumn::make('rank_name')
- ->label(__('filament::resources.columns.name')),
-
- TextColumn::make('job_description')
- ->label(__('filament::resources.inputs.description')),
-
- IconColumn::make('hidden_rank')
- ->label(__('filament::resources.columns.is_hidden'))
- ->icon(fn (Model $record) => $record->hidden_rank ? 'heroicon-o-check-circle' : 'heroicon-o-x-circle')
- ->colors([
- 'danger' => false,
- 'success' => true,
- ]),
- ])
- ->filters([
- //
- ])
- ->recordActions([
- EditAction::make(),
- ])
- ->toolbarActions([
- DeleteBulkAction::make(),
- ]);
- }
-
- #[\Override]
- public static function getRelations(): array
- {
- return [
- //
- ];
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListTeams::route('/'),
- 'create' => CreateTeam::route('/create'),
- 'edit' => EditTeam::route('/{record}/edit'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/WebsiteDrawBadges/Pages/EditWebsiteDrawBadge.php b/Updated_Cms/app/Filament/Resources/Atom/WebsiteDrawBadges/Pages/EditWebsiteDrawBadge.php
deleted file mode 100644
index 000095b0ba..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/WebsiteDrawBadges/Pages/EditWebsiteDrawBadge.php
+++ /dev/null
@@ -1,11 +0,0 @@
-components([
- TextInput::make('badge_name')
- ->label(__('Badge Name'))
- ->nullable()
- ->maxLength(24)
- ->autocomplete(false),
- TextInput::make('badge_desc')
- ->label(__('Badge Description'))
- ->nullable()
- ->maxLength(255)
- ->autocomplete(false)
- ->columnSpanFull(),
- Toggle::make('published')
- ->label(__('Published'))
- ->default(false),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('id', 'desc')
- ->columns([
- TextColumn::make('id')
- ->label(__('ID'))
- ->sortable(),
- TextColumn::make('user_id')
- ->label(__('User ID')),
- TextColumn::make('user.username')
- ->label(__('Username'))
- ->sortable()
- ->searchable(),
- TextColumn::make('badge_name')
- ->limit(8)
- ->label(__('Badge Name')),
- TextColumn::make('badge_desc')
- ->label(__('Badge description'))
- ->limit(35)
- ->tooltip(function (TextColumn $column): ?string {
- $state = $column->getState();
- if (strlen($state) <= $column->getCharacterLimit()) {
- return null;
- }
-
- return $state;
- }),
- TextColumn::make('created_at')
- ->label(__('Created At'))
- ->dateTime(),
- ImageColumn::make('badge_url')
- ->label(__('Badge'))
- ->getStateUsing(fn ($record) => config('app.url') . $record->badge_url)
- ->extraAttributes(['style' => 'image-rendering: pixelated'])
- ->size(40),
- ToggleColumn::make('published')
- ->label(__('Published')),
- ])
- ->recordActions([
- DeleteAction::make()
- ->before(function (DeleteAction $action, WebsiteDrawBadge $record): void {
- $badgeCode = pathinfo($record->badge_path, PATHINFO_FILENAME);
-
- // Remove the badge from any user before deleting it.
- if ($record->published) {
- DB::table('users_badges')
- ->where('user_id', $record->user_id)
- ->where('badge_code', $badgeCode)
- ->delete();
- }
-
- // Remove from JSON
- $filePath = DB::table('website_settings')->where('key', 'nitro_external_texts_file')->value('value');
-
- if ($filePath && file_exists($filePath) && is_writable($filePath)) {
- $json = json_decode(file_get_contents($filePath), true);
- unset($json["badge_name_{$badgeCode}"]);
- unset($json["badge_desc_{$badgeCode}"]);
- file_put_contents($filePath, json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
- }
-
- // Delete the badge file from the filesystem
- $badgePath = $record->badge_path;
- if ($badgePath && file_exists($badgePath)) {
- unlink($badgePath);
- }
- }),
- ])
- ->toolbarActions([
- DeleteBulkAction::make()
- ->before(function (DeleteBulkAction $action, $records): void {
- foreach ($records as $record) {
- $badgeCode = pathinfo((string) $record->badge_path, PATHINFO_FILENAME);
-
- // Remove the badge from any user before deleting it.
- if ($record->published) {
- DB::table('users_badges')
- ->where('user_id', $record->user_id)
- ->where('badge_code', $badgeCode)
- ->delete();
- }
-
- $filePath = DB::table('website_settings')->where('key', 'nitro_external_texts_file')->value('value');
-
- if ($filePath && file_exists($filePath) && is_writable($filePath)) {
- $json = json_decode(file_get_contents($filePath), true);
- unset($json["badge_name_{$badgeCode}"]);
- unset($json["badge_desc_{$badgeCode}"]);
- file_put_contents($filePath, json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
- }
-
- $badgePath = $record->badge_path;
- if ($badgePath && file_exists($badgePath)) {
- unlink($badgePath);
- }
- }
- }),
- ]);
- }
-
- #[\Override]
- public static function getRelations(): array
- {
- return [];
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListWebsiteDrawBadge::route('/'),
- 'edit' => EditWebsiteDrawBadge::route('/{record}/edit'),
- ];
- }
-
- public static function canCreate(): bool
- {
- return false;
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Atom/WriteableBoxResource/Pages/ManageWriteableBoxes.php b/Updated_Cms/app/Filament/Resources/Atom/WriteableBoxResource/Pages/ManageWriteableBoxes.php
deleted file mode 100644
index 7bf5895f30..0000000000
--- a/Updated_Cms/app/Filament/Resources/Atom/WriteableBoxResource/Pages/ManageWriteableBoxes.php
+++ /dev/null
@@ -1,19 +0,0 @@
-query(UserOrder::latest())
- ->paginated([3, 5, 8])
- ->columns(ShopOrderResource::getTable())
- ->recordActions([
- ViewAction::make()->schema(ShopOrderResource::getForm()),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/DashboardResource/Widgets/OrdersAggregateChart.php b/Updated_Cms/app/Filament/Resources/DashboardResource/Widgets/OrdersAggregateChart.php
deleted file mode 100644
index 6befbd7a21..0000000000
--- a/Updated_Cms/app/Filament/Resources/DashboardResource/Widgets/OrdersAggregateChart.php
+++ /dev/null
@@ -1,79 +0,0 @@
-between(start: now()->startOfMonth(), end: now()->endOfMonth())
- ->perDay()
- ->count();
-
- $cancelledOrder = Trend::query(UserOrder::cancelled())
- ->between(start: now()->startOfMonth(), end: now()->endOfMonth())
- ->perDay()
- ->count();
-
- $completedOrder = Trend::query(UserOrder::completed())
- ->between(start: now()->startOfMonth(), end: now()->endOfMonth())
- ->perDay()
- ->count();
-
- $datasets = [
- $this->getDataset($pendingOrder, __('filament::resources.stats.orders_chart.pending'), '#fbbf24', '#f59e0b'),
- $this->getDataset($cancelledOrder, __('filament::resources.stats.orders_chart.cancelled'), '#dc2626', '#b91c1c'),
- $this->getDataset($completedOrder, __('filament::resources.stats.orders_chart.completed'), '#10b981', '#059669'),
- ];
-
- $data = $pendingOrder->map(fn (TrendValue $value) => $value->date)->merge(
- $cancelledOrder->map(fn (TrendValue $value) => $value->date),
- )->merge(
- $completedOrder->map(fn (TrendValue $value) => $value->date),
- )->unique()->sort()->flatten();
-
- return [
- 'datasets' => $datasets,
- 'labels' => $data,
- ];
- }
-
- protected function getDataset($data, $label, string $backgroundColor, string $borderColor): array
- {
- return [
- 'label' => $label,
- 'data' => $data->map(fn (TrendValue $value) => $value->aggregate),
- 'backgroundColor' => $backgroundColor,
- 'borderColor' => $borderColor,
- ];
- }
-
- protected function getType(): string
- {
- return 'bar';
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/Achievements/AchievementResource.php b/Updated_Cms/app/Filament/Resources/Hotel/Achievements/AchievementResource.php
deleted file mode 100644
index 50c0fe0ff3..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/Achievements/AchievementResource.php
+++ /dev/null
@@ -1,176 +0,0 @@
-components([
- Tabs::make('Main')
- ->tabs([
- Tab::make(__('filament::resources.tabs.Home'))
- ->icon('heroicon-o-home')
- ->schema([
- TextInput::make('name')
- ->label(__('filament::resources.inputs.name'))
- ->required()
- ->maxLength(64)
- ->autocomplete()
- ->columnSpan('full'),
-
- TextInput::make('level')
- ->label(__('filament::resources.inputs.level'))
- ->numeric()
- ->required()
- ->autocomplete()
- ->columnSpan('full'),
-
- Select::make('category')
- ->native(false)
- ->label(__('filament::resources.inputs.category'))
- ->options(AchievementCategory::toInput()),
- ]),
-
- Tab::make(__('filament::resources.tabs.Configurations'))
- ->icon('heroicon-o-cog')
- ->schema([
- Select::make('visible')
- ->native(false)
- ->label(__('filament::resources.inputs.visible'))
- ->options([
- '1' => __('filament::resources.common.Yes'),
- '0' => __('filament::resources.common.No'),
- ]),
-
- Select::make('reward_type')
- ->native(false)
- ->label(__('filament::resources.inputs.reward_type'))
- ->options(CurrencyTypes::toInput()),
-
- TextInput::make('reward_amount')
- ->label(__('filament::resources.inputs.reward_amount'))
- ->numeric()
- ->required(),
-
- TextInput::make('points')
- ->label(__('filament::resources.inputs.points'))
- ->helperText(__('filament::resources.helpers.achievement_points'))
- ->numeric()
- ->required(),
-
- TextInput::make('progress_needed')
- ->label(__('filament::resources.inputs.progress_needed'))
- ->helperText(__('filament::resources.helpers.achievement_progress_needed'))
- ->numeric()
- ->required(),
- ]),
- ])->columnSpanFull(),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('id', 'desc')
- ->columns([
- TextColumn::make('id')
- ->label(__('filament::resources.columns.id')),
-
- HabboBadgeColumn::make('badge')
- ->label(__('filament::resources.columns.badge')),
-
- TextColumn::make('name')
- ->label(__('filament::resources.columns.name'))
- ->searchable(),
-
- TextColumn::make('level')
- ->label(__('filament::resources.columns.level')),
-
- TextColumn::make('category')
- ->badge()
- ->searchable()
- ->label(__('filament::resources.columns.category'))
- ->toggleable(),
-
- ToggleColumn::make('visible')
- ->label(__('filament::resources.columns.visible'))
- ->disabled()
- ->toggleable(),
- ])
- ->filters([
- SelectFilter::make('visible')
- ->options([
- '1' => __('filament::resources.common.Yes'),
- '0' => __('filament::resources.common.No'),
- ])
- ->label(__('filament::resources.columns.visible'))
- ->placeholder(__('filament::resources.common.All')),
-
- SelectFilter::make('category')
- ->options(AchievementCategory::toInput())
- ->label(__('filament::resources.columns.category'))
- ->placeholder(__('filament::resources.common.All')),
- ])
- ->recordActions([
- ViewAction::make(),
- EditAction::make(),
- ])
- ->toolbarActions([]);
- }
-
- #[\Override]
- public static function getRelations(): array
- {
- return [
- //
- ];
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListAchievements::route('/'),
- 'create' => CreateAchievement::route('/create'),
- 'view' => ViewAchievement::route('/{record}'),
- 'edit' => EditAchievement::route('/{record}/edit'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/Achievements/Pages/CreateAchievement.php b/Updated_Cms/app/Filament/Resources/Hotel/Achievements/Pages/CreateAchievement.php
deleted file mode 100644
index 478e62f84e..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/Achievements/Pages/CreateAchievement.php
+++ /dev/null
@@ -1,11 +0,0 @@
-components([
- TextInput::make('badge_key')
- ->required()
- ->label('Badge Key - Expl. ATOM101')
- ->placeholder('This is the badge code'),
- TextInput::make('badge_name')
- ->required()
- ->label('Badge Name')
- ->placeholder('This is the name of the badge: Expl. The ATOM Badge'),
- Textarea::make('badge_description')
- ->required()
- ->label('Badge Description')
- ->placeholder('Please add a description for the badge.'),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- $settingsService = app(SettingsService::class);
- $badgesPath = $settingsService->getOrDefault('badges_path', '/gamedata/c_images/album1584/');
-
- return $table
- ->columns([
- ImageColumn::make('badge_key')
- ->label('Badge Image')
- ->getStateUsing(function ($record) use ($badgesPath) {
- $badgeName = str_replace('badge_desc_', '', $record->badge_key);
-
- return asset($badgesPath . $badgeName . '.gif');
- })
- ->width(50)
- ->height(50),
- TextColumn::make('badge_name')
- ->label('Badge Code & Name')
- ->formatStateUsing(fn ($record) => $record->badge_key . ' : ' . $record->badge_name)
- ->searchable(query: function ($query, $search): void {
- $query->where('badge_key', 'like', "%{$search}%")
- ->orWhere('badge_name', 'like', "%{$search}%");
- })
- ->sortable(),
- TextColumn::make('badge_description')
- ->label('Badge Description')
- ->getStateUsing(fn ($record) => Str::limit($record->badge_description, 65))
- ->searchable(),
- ])
- ->filters([])
- ->defaultSort('badge_key', 'asc')
- ->recordActions([
- EditAction::make(),
- DeleteAction::make(),
- ]);
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListBadgeTextEditors::route('/'),
- 'create' => CreateBadgeTextEditor::route('/create'),
- 'edit' => EditBadgeTextEditor::route('/{record}/edit'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/BadgeTextEditors/Pages/CreateBadgeTextEditor.php b/Updated_Cms/app/Filament/Resources/Hotel/BadgeTextEditors/Pages/CreateBadgeTextEditor.php
deleted file mode 100644
index 01b7500b22..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/BadgeTextEditors/Pages/CreateBadgeTextEditor.php
+++ /dev/null
@@ -1,11 +0,0 @@
-getCode() === '23000') {
- Log::error('Duplicate badge key error: ' . $e->getMessage());
-
- Notification::make()
- ->title('Duplicate Badge Key')
- ->body('The badge key already exists. Please use a unique badge key.')
- ->danger()
- ->persistent()
- ->send();
-
- return $record;
- }
- throw $e;
- }
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/BadgeTextEditors/Pages/ListBadgeTextEditors.php b/Updated_Cms/app/Filament/Resources/Hotel/BadgeTextEditors/Pages/ListBadgeTextEditors.php
deleted file mode 100644
index e267fefe21..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/BadgeTextEditors/Pages/ListBadgeTextEditors.php
+++ /dev/null
@@ -1,153 +0,0 @@
-label('Add Badge')
- ->color('info')
- ->modalHeading('Add a New Badge')
- ->modalButton('Create Badge')
- ->after(function (): void {
- Notification::make()
- ->title('Badge Created')
- ->body('The badge was successfully created.')
- ->success()
- ->send();
- }),
- Action::make('export')
- ->label('Export to ExternalTexts')
- ->action('exportToJson'),
- Action::make('backup')
- ->label('Create Backup of ExternalTexts')
- ->color('success')
- ->action('createBackup'),
- ];
- }
-
- public function exportToJson(SettingsService $settingsService)
- {
- $jsonPath = $settingsService->getOrDefault('nitro_external_texts_file');
-
- if ($jsonPath === '' || $jsonPath === '0') {
- Notification::make()
- ->title('Export Failed')
- ->body('The JSON file path is not configured in the website settings.')
- ->danger()
- ->send();
-
- return;
- }
-
- if (! file_exists($jsonPath)) {
- Notification::make()
- ->title('Export Failed')
- ->body('The JSON file does not exist at the specified path.')
- ->danger()
- ->send();
-
- return;
- }
-
- $jsonData = json_decode(file_get_contents($jsonPath), true);
-
- $badges = WebsiteBadge::all();
- $badgeKeys = $badges->pluck('badge_key')->toArray();
-
- foreach ($jsonData as $key => $value) {
- if (
- (str_starts_with((string) $key, 'badge_desc_') || str_starts_with((string) $key, 'badge_name_')) &&
- ! in_array(str_replace(['badge_desc_', 'badge_name_'], '', $key), $badgeKeys)
- ) {
- unset($jsonData[$key]);
- }
- }
-
- foreach ($badges as $badge) {
- $jsonData['badge_desc_' . $badge->badge_key] = $badge->badge_description;
- $jsonData['badge_name_' . $badge->badge_key] = $badge->badge_name;
- }
-
- try {
- $result = file_put_contents(
- $jsonPath,
- json_encode($jsonData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),
- );
-
- if ($result === false) {
- throw new Exception('Failed to write to the JSON file.');
- }
-
- Notification::make()
- ->title('Export Successful')
- ->body('Badge data exported successfully.')
- ->success()
- ->send();
- } catch (Exception $e) {
- Log::error('Failed to export badge data: ' . $e->getMessage());
-
- Notification::make()
- ->title('Export Failed')
- ->body('Failed to export badge data. Please check file permissions or contact your administrator.')
- ->danger()
- ->send();
- }
- }
-
- public function createBackup(SettingsService $settingsService)
- {
- $jsonPath = $settingsService->getOrDefault('nitro_external_texts_file');
-
- if ($jsonPath === '' || $jsonPath === '0') {
- Notification::make()
- ->title('Backup Failed')
- ->body('The JSON file path is not configured in the website settings.')
- ->danger()
- ->send();
-
- return;
- }
-
- if (! file_exists($jsonPath)) {
- Notification::make()
- ->title('Backup Failed')
- ->body('The JSON file does not exist at the specified path.')
- ->danger()
- ->send();
-
- return;
- }
-
- $backupPath = dirname($jsonPath) . '/ExternalTexts_' . time() . '.json';
-
- if (copy($jsonPath, $backupPath)) {
- Notification::make()
- ->title('Backup Successful')
- ->body('A backup of the JSON file has been created: ' . basename($backupPath))
- ->success()
- ->send();
- } else {
- Notification::make()
- ->title('Backup Failed')
- ->body('Failed to create a backup of the JSON file.')
- ->danger()
- ->send();
- }
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/BadgeUploads/BadgeUploadResource.php b/Updated_Cms/app/Filament/Resources/Hotel/BadgeUploads/BadgeUploadResource.php
deleted file mode 100644
index 1b78f84f6d..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/BadgeUploads/BadgeUploadResource.php
+++ /dev/null
@@ -1,69 +0,0 @@
-components([
- FileUpload::make('badge_file')
- ->label('Upload Badge')
- ->disk('local')
- ->directory(setting('badge_path_filesystem'))
- ->required()
- ->getUploadedFileNameForStorageUsing(
- fn (TemporaryUploadedFile $file): string => strtolower(str_replace([' ', '-', 'æ', 'ø', 'å'], ['_', '_', 'ae', 'oe', 'aa'], $file->getClientOriginalName())),
- ),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->columns([
- TextColumn::make('filename')
- ->label('File Name')
- ->sortable(),
- TextColumn::make('path')
- ->label('File Path'),
- ])
- ->filters([]);
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ManageBadgeUploads::route('/'),
- ];
- }
-
- public static function getFiles(): array
- {
- $badgePath = env('BadgePath', 'badges');
- $files = Storage::disk('local')->files($badgePath);
-
- return collect($files)->map(fn ($file) => [
- 'filename' => basename($file),
- 'path' => $file,
- ])->toArray();
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/BadgeUploads/Pages/ManageBadgeUploads.php b/Updated_Cms/app/Filament/Resources/Hotel/BadgeUploads/Pages/ManageBadgeUploads.php
deleted file mode 100644
index c9d8dc14ec..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/BadgeUploads/Pages/ManageBadgeUploads.php
+++ /dev/null
@@ -1,48 +0,0 @@
-form->fill([]);
- }
-
- protected function getFormSchema(): array
- {
- return [
- FileUpload::make('badge_file')
- ->label('Upload Badge')
- ->disk('badges')
- ->preserveFilenames()
- ->acceptedFileTypes(['image/gif'])
- ->rules(['mimes:gif'])
- ->required(),
- ];
- }
-
- public function save(): void
- {
- $this->form->getState();
-
- Notification::make()
- ->title('Badge uploaded successfully!')
- ->success()
- ->send();
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/CatalogPages/CatalogPageResource.php b/Updated_Cms/app/Filament/Resources/Hotel/CatalogPages/CatalogPageResource.php
deleted file mode 100644
index 5153a4f02c..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/CatalogPages/CatalogPageResource.php
+++ /dev/null
@@ -1,180 +0,0 @@
-components([
- TextInput::make('parent_id')
- ->required()
- ->integer(),
-
- TextInput::make('caption_save')
- ->required(),
-
- TextInput::make('caption')
- ->required(),
-
- TextInput::make('page_layout')
- ->required(),
-
- TextInput::make('icon_color')
- ->required()
- ->integer(),
-
- TextInput::make('icon_image')
- ->required()
- ->integer(),
-
- TextInput::make('min_rank')
- ->required()
- ->integer(),
-
- TextInput::make('order_num')
- ->required()
- ->integer(),
-
- TextInput::make('visible')
- ->required(),
-
- TextInput::make('enabled')
- ->required(),
-
- TextInput::make('club_only')
- ->required(),
-
- TextInput::make('vip_only')
- ->required(),
-
- TextInput::make('page_headline')
- ->required(),
-
- TextInput::make('page_teaser')
- ->required(),
-
- TextInput::make('page_special'),
-
- TextInput::make('page_text1'),
-
- TextInput::make('page_text2'),
-
- TextInput::make('page_text_details'),
-
- TextInput::make('page_text_teaser'),
-
- TextInput::make('room_id')
- ->integer(),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->columns([
- TextColumn::make('parent_id'),
-
- TextColumn::make('caption_save'),
-
- TextColumn::make('caption')
- ->searchable()
- ->sortable(),
-
- TextColumn::make('page_layout'),
-
- TextColumn::make('icon_color'),
-
- ImageColumn::make('icon_image'),
-
- TextColumn::make('min_rank'),
-
- TextColumn::make('order_num'),
-
- TextColumn::make('visible'),
-
- TextColumn::make('enabled'),
-
- TextColumn::make('club_only'),
-
- TextColumn::make('vip_only'),
-
- TextColumn::make('page_headline'),
-
- TextColumn::make('page_teaser'),
-
- TextColumn::make('page_special'),
-
- TextColumn::make('page_text1'),
-
- TextColumn::make('page_text2'),
-
- TextColumn::make('room_id'),
-
- TextColumn::make('includes'),
- ])
- ->filters([
- //
- ])
- ->recordActions([
- EditAction::make(),
- DeleteAction::make(),
- ])
- ->toolbarActions([
- BulkActionGroup::make([
- DeleteBulkAction::make(),
- ]),
- ]);
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListCatalogPages::route('/'),
- 'create' => CreateCatalogPage::route('/create'),
- 'edit' => EditCatalogPage::route('/{record}/edit'),
- ];
- }
-
- #[\Override]
- public static function getRelations(): array
- {
- return [
- CatalogItemsRelationManager::class,
- ];
- }
-
- public static function getGloballySearchableAttributes(): array
- {
- return ['caption'];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/CatalogPages/Pages/CreateCatalogPage.php b/Updated_Cms/app/Filament/Resources/Hotel/CatalogPages/Pages/CreateCatalogPage.php
deleted file mode 100644
index 2ecb70f4f6..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/CatalogPages/Pages/CreateCatalogPage.php
+++ /dev/null
@@ -1,18 +0,0 @@
-components([
- Select::make('item_ids')
- ->label('Furniture Item')
- ->relationship(
- name: 'itemBase',
- titleAttribute: 'item_name',
- modifyQueryUsing: fn (Builder $query) => $query->orderBy('item_name'),
- )
- ->searchable()
- ->required()
- ->preload()
- ->createOptionForm([
- TextInput::make('sprite_id')
- ->label('Sprite ID')
- ->numeric()
- ->default(0),
- TextInput::make('public_name')
- ->maxLength(56),
- TextInput::make('item_name')
- ->required()
- ->maxLength(70),
- TextInput::make('type')
- ->default('s')
- ->maxLength(3),
- Grid::make(3)
- ->schema([
- TextInput::make('width')
- ->numeric()
- ->default(1),
- TextInput::make('length')
- ->numeric()
- ->default(1),
- TextInput::make('stack_height')
- ->numeric()
- ->default(0.00),
- ]),
- Grid::make(3)
- ->schema([
- Toggle::make('allow_stack')
- ->default(true),
- Toggle::make('allow_sit')
- ->default(false),
- Toggle::make('allow_lay')
- ->default(false),
- ]),
- Grid::make(3)
- ->schema([
- Toggle::make('allow_walk')
- ->default(false),
- Toggle::make('allow_gift')
- ->default(true),
- Toggle::make('allow_trade')
- ->default(true),
- ]),
- Grid::make(3)
- ->schema([
- Toggle::make('allow_recycle')
- ->default(false),
- Toggle::make('allow_marketplace_sell')
- ->default(false),
- Toggle::make('allow_inventory_stack')
- ->default(true),
- ]),
- TextInput::make('interaction_type')
- ->default('default')
- ->maxLength(500),
- Grid::make(2)
- ->schema([
- TextInput::make('interaction_modes_count')
- ->numeric()
- ->default(1),
- TextInput::make('vending_ids')
- ->default('0')
- ->maxLength(255),
- ]),
- Grid::make(2)
- ->schema([
- TextInput::make('multiheight')
- ->default('0')
- ->maxLength(50),
- TextInput::make('customparams')
- ->maxLength(256),
- ]),
- Grid::make(2)
- ->schema([
- TextInput::make('effect_id_male')
- ->numeric()
- ->default(0),
- TextInput::make('effect_id_female')
- ->numeric()
- ->default(0),
- ]),
- TextInput::make('clothing_on_walk')
- ->maxLength(255),
- ])
- ->columnSpanFull(),
-
- TextInput::make('catalog_name')
- ->label('Catalog Name')
- ->required()
- ->maxLength(100)
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
-
- Grid::make(2)
- ->schema([
- TextInput::make('cost_credits')
- ->label('Cost Credits')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? '')
- ->default(3),
-
- TextInput::make('cost_points')
- ->label('Cost Points')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? '')
- ->default(0),
- ]),
-
- Grid::make(2)
- ->schema([
- TextInput::make('points_type')
- ->label('Points Type')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? '')
- ->default(0),
-
- TextInput::make('amount')
- ->label('Amount')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? '')
- ->default(1),
- ]),
-
- Grid::make(2)
- ->schema([
- Toggle::make('limited_stack')
- ->label('Limited Stack')
- ->dehydrateStateUsing(fn ($state) => $state ? '1' : '0'),
-
- Toggle::make('limited_sells')
- ->label('Limited Sells')
- ->dehydrateStateUsing(fn ($state) => $state ? '1' : '0'),
- ]),
-
- Grid::make(3)
- ->schema([
- TextInput::make('order_number')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? '')
- ->default(1),
-
- TextInput::make('offer_id')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
-
- TextInput::make('song_id')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? '')
- ->default(0),
- ]),
-
- Textarea::make('extradata')
- ->label('Extra Data')
- ->maxLength(500)
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
-
- Grid::make(2)
- ->schema([
- Toggle::make('have_offer')
- ->label('Have Offer')
- ->default(true)
- ->dehydrateStateUsing(fn ($state) => $state ? '1' : '0'),
-
- Toggle::make('club_only')
- ->label('Club Only')
- ->default(false)
- ->dehydrateStateUsing(fn ($state) => $state ? '1' : '0'),
- ]),
- ]);
- }
-
- public function table(Table $table): Table
- {
- return $table
- ->recordTitleAttribute('catalog_name')
- ->columns([
- ImageColumn::make('icon')
- ->getStateUsing(fn ($record) => url($record->itemBase?->icon()))
- ->size('25px')
-
- ->label('Icon')
- ->circular(),
-
- TextColumn::make('itemBase.item_name')
- ->label('Furniture Name')
- ->sortable()
- ->searchable(),
-
- TextColumn::make('catalog_name')
- ->label('Catalog Name')
- ->sortable()
- ->searchable(),
-
- TextColumn::make('cost_credits')
- ->label('Credits')
- ->sortable(),
-
- TextColumn::make('cost_points')
- ->label('Points')
- ->sortable(),
-
- IconColumn::make('limited_stack')
- ->label('Limited')
- ->boolean(),
-
- IconColumn::make('club_only')
- ->label('HC Only')
- ->boolean(),
-
- TextColumn::make('itemBase.type')
- ->label('Type')
- ->toggleable(isToggledHiddenByDefault: true),
-
- TextColumn::make('itemBase.width')
- ->label('Width')
- ->toggleable(isToggledHiddenByDefault: true),
-
- TextColumn::make('itemBase.length')
- ->label('Length')
- ->toggleable(isToggledHiddenByDefault: true),
-
- TextColumn::make('order_number')
- ->label('Order')
- ->sortable()
- ->toggleable(isToggledHiddenByDefault: true),
- ])
- ->filters([
- SelectFilter::make('type')
- ->query(fn (Builder $query, array $data): Builder => empty($data['values'])
- ? $query
- : $query->whereHas('itemBase', function (Builder $query) use ($data): void {
- $query->whereIn('type', $data['values']);
- }))
- ->options(
- fn () => ItemBase::query()
- ->select('type')
- ->distinct()
- ->orderBy('type')
- ->pluck('type', 'type')
- ->toArray(),
- )
- ->multiple()
- ->searchable()
- ->preload(),
-
- TernaryFilter::make('club_only')
- ->label('HC Only'),
-
- TernaryFilter::make('limited_stack')
- ->label('Limited'),
- ])
- ->defaultSort('order_number')
- ->headerActions([
- CreateAction::make(),
- ])
- ->recordActions([
- EditAction::make()->label('Edit Catalog Item'),
-
- Action::make('editItemBase')
- ->label('Edit Item base')
- ->icon('heroicon-m-cube')
- ->modalWidth('3xl')
- ->modalHeading('Edit Item Base')
- ->fillForm(function ($record) {
- $itemBase = $record->itemBase;
- if (! $itemBase) {
- return [];
- }
-
- return [
- 'sprite_id' => $itemBase->sprite_id,
- 'public_name' => $itemBase->public_name,
- 'item_name' => $itemBase->item_name,
- 'type' => $itemBase->type,
- 'width' => $itemBase->width,
- 'length' => $itemBase->length,
- 'stack_height' => $itemBase->stack_height,
- 'allow_stack' => $itemBase->allow_stack,
- 'allow_sit' => $itemBase->allow_sit,
- 'allow_lay' => $itemBase->allow_lay,
- 'allow_walk' => $itemBase->allow_walk,
- 'allow_gift' => $itemBase->allow_gift,
- 'allow_trade' => $itemBase->allow_trade,
- 'allow_recycle' => $itemBase->allow_recycle,
- 'allow_marketplace_sell' => $itemBase->allow_marketplace_sell,
- 'allow_inventory_stack' => $itemBase->allow_inventory_stack,
- 'interaction_type' => $itemBase->interaction_type,
- 'interaction_modes_count' => $itemBase->interaction_modes_count,
- 'vending_ids' => $itemBase->vending_ids,
- 'multiheight' => $itemBase->multiheight,
- 'customparams' => $itemBase->customparams,
- 'effect_id_male' => $itemBase->effect_id_male,
- 'effect_id_female' => $itemBase->effect_id_female,
- 'clothing_on_walk' => $itemBase->clothing_on_walk,
- ];
- })
- ->schema([
- TextInput::make('sprite_id')
- ->label('Sprite ID')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- TextInput::make('public_name')
- ->label('Public Name')
- ->maxLength(56)
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- TextInput::make('item_name')
- ->label('Item Name')
- ->required()
- ->maxLength(70),
- TextInput::make('type')
- ->maxLength(3)
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- Grid::make(3)
- ->schema([
- TextInput::make('width')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- TextInput::make('length')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- TextInput::make('stack_height')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- ]),
- Grid::make(3)
- ->schema([
- Toggle::make('allow_stack'),
- Toggle::make('allow_sit'),
- Toggle::make('allow_lay'),
- ]),
- Grid::make(3)
- ->schema([
- Toggle::make('allow_walk'),
- Toggle::make('allow_gift'),
- Toggle::make('allow_trade'),
- ]),
- Grid::make(3)
- ->schema([
- Toggle::make('allow_recycle'),
- Toggle::make('allow_marketplace_sell'),
- Toggle::make('allow_inventory_stack'),
- ]),
- TextInput::make('interaction_type')
- ->maxLength(500)
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- Grid::make(2)
- ->schema([
- TextInput::make('interaction_modes_count')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- TextInput::make('vending_ids')
- ->maxLength(255)
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- ]),
- Grid::make(2)
- ->schema([
- TextInput::make('multiheight')
- ->maxLength(50)
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- TextInput::make('customparams')
- ->maxLength(256)
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- ]),
- Grid::make(2)
- ->schema([
- TextInput::make('effect_id_male')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- TextInput::make('effect_id_female')
- ->numeric()
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- ]),
- TextInput::make('clothing_on_walk')
- ->maxLength(255)
- ->nullable()
- ->dehydrateStateUsing(fn ($state) => $state ?? ''),
- ])
- ->action(function (array $data, $record): void {
- // Transform any null or empty values to empty strings
- $data = collect($data)->map(function ($value) {
- if ($value === null || $value === '') {
- return '';
- }
- if (is_bool($value)) {
- return $value ? '1' : '0';
- }
-
- return $value;
- })->toArray();
-
- $record->itemBase->forceFill($data)->save();
- })
- ->visible(fn ($record) => $record->itemBase !== null),
- DeleteAction::make(),
- ])
- ->toolbarActions([
- BulkActionGroup::make([
- DeleteBulkAction::make(),
- ]),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/ChatlogPrivates/ChatlogPrivateResource.php b/Updated_Cms/app/Filament/Resources/Hotel/ChatlogPrivates/ChatlogPrivateResource.php
deleted file mode 100644
index 6ecb5d3fca..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/ChatlogPrivates/ChatlogPrivateResource.php
+++ /dev/null
@@ -1,96 +0,0 @@
-components([
- TextInput::make('sender')
- ->disabled()
- ->formatStateUsing(fn ($record) => $record->sender?->username)
- ->label(__('filament::resources.inputs.sender')),
-
- TextInput::make('receiver')
- ->disabled()
- ->formatStateUsing(fn ($record) => $record->receiver?->username)
- ->label(__('filament::resources.inputs.receiver')),
-
- Textarea::make('message')
- ->label(__('filament::resources.inputs.message'))
- ->columnSpanFull()
- ->disabled(),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('timestamp', 'desc')
- ->columns(self::getTable())
- ->filters([])
- ->recordActions([
- ViewAction::make(),
- ])
- ->toolbarActions([]);
- }
-
- public static function getTable(): array
- {
- return [
- TextColumn::make('sender.username')
- ->label(__('filament::resources.columns.sender'))
- ->toggleable()
- ->searchable(isIndividual: true),
-
- TextColumn::make('receiver.username')
- ->label(__('filament::resources.columns.receiver'))
- ->toggleable()
- ->searchable(isIndividual: true),
-
- TextColumn::make('message')
- ->label(__('filament::resources.columns.message'))
- ->limit(40)
- ->searchable(isIndividual: true),
-
- TextColumn::make('timestamp')
- ->label(__('filament::resources.columns.executed_at'))
- ->dateTime('Y-m-d H:i')
- ->toggleable(),
- ];
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ManageChatlogPrivates::route('/'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/ChatlogPrivates/Pages/ManageChatlogPrivates.php b/Updated_Cms/app/Filament/Resources/Hotel/ChatlogPrivates/Pages/ManageChatlogPrivates.php
deleted file mode 100644
index 0aaea3e36e..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/ChatlogPrivates/Pages/ManageChatlogPrivates.php
+++ /dev/null
@@ -1,16 +0,0 @@
-components([
- TextInput::make('room')
- ->label(__('filament::resources.inputs.room'))
- ->formatStateUsing(fn ($record) => $record->room?->name)
- ->columnSpanFull()
- ->disabled(),
-
- TextInput::make('sender')
- ->label(__('filament::resources.inputs.sender'))
- ->formatStateUsing(fn ($record) => $record->sender?->username)
- ->disabled(),
-
- TextInput::make('receiver')
- ->label(__('filament::resources.inputs.receiver'))
- ->formatStateUsing(fn ($record) => $record->receiver?->username)
- ->disabled(),
-
- Textarea::make('message')
- ->label(__('filament::resources.inputs.message'))
- ->columnSpanFull()
- ->disabled(),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('timestamp', 'desc')
- ->columns(self::getTable())
- ->filters([
- //
- ])
- ->recordActions([
- ViewAction::make(),
- ])
- ->toolbarActions([]);
- }
-
- public static function getTable(): array
- {
- return [
- TextColumn::make('room.name')
- ->label(__('filament::resources.columns.room'))
- ->toggleable()
- ->searchable(isIndividual: true),
-
- TextColumn::make('sender.username')
- ->label(__('filament::resources.columns.sender'))
- ->toggleable()
- ->searchable(isIndividual: true),
-
- TextColumn::make('receiver.username')
- ->label(__('filament::resources.columns.receiver'))
- ->toggleable()
- ->searchable(isIndividual: true),
-
- TextColumn::make('message')
- ->label(__('filament::resources.columns.message'))
- ->limit(40)
- ->searchable(isIndividual: true),
-
- TextColumn::make('timestamp')
- ->label(__('filament::resources.columns.executed_at'))
- ->dateTime('Y-m-d H:i')
- ->toggleable(),
- ];
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ManageChatlogRooms::route('/'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/ChatlogRooms/Pages/ManageChatlogRooms.php b/Updated_Cms/app/Filament/Resources/Hotel/ChatlogRooms/Pages/ManageChatlogRooms.php
deleted file mode 100644
index 8ed6c4c707..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/ChatlogRooms/Pages/ManageChatlogRooms.php
+++ /dev/null
@@ -1,16 +0,0 @@
-components([]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('timestamp', 'desc')
- ->columns([
- TextColumn::make('user.username')
- ->label(__('filament::resources.columns.username'))
- ->searchable(),
-
- TextColumn::make('command')
- ->label(__('filament::resources.columns.command'))
- ->searchable(),
-
- TextColumn::make('succes')
- ->badge()
- ->color(fn (string $state): string => match ($state) {
- 'yes' => 'primary',
- 'no' => 'warning'
- })
- ->label(__('filament::resources.columns.success'))
- ->formatStateUsing(fn (string $state): string => __("filament::resources.options.{$state}")),
-
- TextColumn::make('timestamp')
- ->label(__('filament::resources.columns.executed_at'))
- ->dateTime('Y-m-d H:i')
- ->searchable(),
- ])
- ->filters([
- SelectFilter::make('succes')
- ->label(__('filament::resources.filters.success'))
- ->options([
- 'yes' => __('filament::resources.options.yes'),
- 'no' => __('filament::resources.options.no'),
- ]),
- ])
- ->recordActions([])
- ->toolbarActions([]);
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ManageCommandLogs::route('/'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/CommandLogs/Pages/ManageCommandLogs.php b/Updated_Cms/app/Filament/Resources/Hotel/CommandLogs/Pages/ManageCommandLogs.php
deleted file mode 100644
index b076207bb9..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/CommandLogs/Pages/ManageCommandLogs.php
+++ /dev/null
@@ -1,21 +0,0 @@
-query());
- }
-
- #[\Override]
- public function get($columns = ['*']): Collection
- {
- return collect(); // Return an empty collection
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/EmulatorSettings/EmulatorSettingResource.php b/Updated_Cms/app/Filament/Resources/Hotel/EmulatorSettings/EmulatorSettingResource.php
deleted file mode 100644
index ed3f158ad0..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/EmulatorSettings/EmulatorSettingResource.php
+++ /dev/null
@@ -1,93 +0,0 @@
-components([
- Section::make()
- ->schema([
- TextInput::make('key')
- ->label(__('filament::resources.inputs.key'))
- ->required()
- ->maxLength(100)
- ->unique(ignoreRecord: true),
-
- TextInput::make('value')
- ->label(__('filament::resources.inputs.value'))
- ->required()
- ->maxLength(512),
- ]),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->columns([
- TextColumn::make('key')
- ->label(__('filament::resources.columns.key'))
- ->searchable(),
-
- TextColumn::make('value')
- ->label(__('filament::resources.columns.value'))
- ->searchable(),
- ])
- ->filters([
- //
- ])
- ->recordActions([
- ViewAction::make(),
- EditAction::make(),
- ])
- ->toolbarActions([]);
- }
-
- #[\Override]
- public static function getRelations(): array
- {
- return [
- //
- ];
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListEmulatorSettings::route('/'),
- 'create' => CreateEmulatorSetting::route('/create'),
- 'edit' => EditEmulatorSetting::route('/{record}/edit'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/EmulatorSettings/Pages/CreateEmulatorSetting.php b/Updated_Cms/app/Filament/Resources/Hotel/EmulatorSettings/Pages/CreateEmulatorSetting.php
deleted file mode 100644
index a8513e4a09..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/EmulatorSettings/Pages/CreateEmulatorSetting.php
+++ /dev/null
@@ -1,11 +0,0 @@
-components([
- TextInput::make('key')
- ->label(__('filament::resources.inputs.key'))
- ->required()
- ->maxLength(100)
- ->unique(ignoreRecord: true),
-
- TextInput::make('value')
- ->label(__('filament::resources.inputs.value'))
- ->required()
- ->maxLength(512),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->columns([
- TextColumn::make('key')
- ->label(__('filament::resources.columns.key'))
- ->searchable(),
-
- TextColumn::make('value')
- ->label(__('filament::resources.columns.value'))
- ->searchable(),
- ])
- ->filters([
- //
- ])
- ->recordActions([
- EditAction::make(),
- ])
- ->toolbarActions([
- BulkActionGroup::make([
- DeleteBulkAction::make(),
- ]),
- ]);
- }
-
- #[\Override]
- public static function getRelations(): array
- {
- return [
- //
- ];
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ManageEmulatorTexts::route('/'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/EmulatorTexts/Pages/ManageEmulatorTexts.php b/Updated_Cms/app/Filament/Resources/Hotel/EmulatorTexts/Pages/ManageEmulatorTexts.php
deleted file mode 100644
index a3e1f5da0b..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/EmulatorTexts/Pages/ManageEmulatorTexts.php
+++ /dev/null
@@ -1,24 +0,0 @@
-components([
- Select::make('permission_id')
- ->label('Rank')
- ->relationship('permission', 'rank_name')
- ->required()
- ->searchable()
- ->preload()
- ->unique(ignoreRecord: true)
- ->placeholder('Select a rank'),
- Textarea::make('description')
- ->label('Position Description')
- ->required()
- ->maxLength(65535)
- ->columnSpanFull(),
- DateTimePicker::make('apply_from')
- ->label('Application Start Date')
- ->nullable(),
- DateTimePicker::make('apply_to')
- ->label('Application End Date')
- ->nullable(),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->columns([
- TextColumn::make('permission.rank_name')
- ->label('Rank')
- ->sortable()
- ->searchable(),
- TextColumn::make('description')
- ->label('Description')
- ->limit(50)
- ->searchable(),
- TextColumn::make('apply_from')
- ->label('Apply From')
- ->dateTime()
- ->sortable(),
- TextColumn::make('apply_to')
- ->label('Apply To')
- ->dateTime()
- ->sortable(),
- TextColumn::make('created_at')
- ->label('Created')
- ->dateTime()
- ->sortable(),
- ])
- ->filters([
- ])
- ->recordActions([
- EditAction::make(),
- DeleteAction::make()
- ->requiresConfirmation()
- ->modalHeading('Delete Open Position')
- ->modalDescription('This will also delete all related staff applications. Are you sure?')
- ->modalSubmitActionLabel('Yes, delete')
- ->successNotification(
- Notification::make()
- ->success()
- ->title('Open Position Deleted')
- ->body('The open position and its related staff applications have been deleted successfully.'),
- ),
- ])
- ->toolbarActions([
- DeleteBulkAction::make()
- ->requiresConfirmation()
- ->modalHeading('Delete Open Positions')
- ->modalDescription('This will also delete all related staff applications for the selected positions. Are you sure?')
- ->modalSubmitActionLabel('Yes, delete')
- ->successNotification(
- Notification::make()
- ->success()
- ->title('Open Positions Deleted')
- ->body('The selected open positions and their related staff applications have been deleted successfully.'),
- ),
- ]);
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListOpenPositions::route('/'),
- 'create' => CreateOpenPosition::route('/create'),
- 'edit' => EditOpenPosition::route('/{record}/edit'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/OpenPositions/Pages/CreateOpenPosition.php b/Updated_Cms/app/Filament/Resources/Hotel/OpenPositions/Pages/CreateOpenPosition.php
deleted file mode 100644
index 532e5b52e1..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/OpenPositions/Pages/CreateOpenPosition.php
+++ /dev/null
@@ -1,11 +0,0 @@
-components([
- Select::make('user_id')
- ->relationship('user', 'username')
- ->required()
- ->searchable(),
- Select::make('rank_id')
- ->relationship('rank', 'rank_name')
- ->required()
- ->searchable(),
- Textarea::make('content')
- ->required()
- ->columnSpanFull(),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->columns([
- TextColumn::make('user.username')
- ->label('User')
- ->sortable()
- ->searchable(),
- TextColumn::make('rank.rank_name')
- ->label('Rank')
- ->sortable()
- ->searchable(),
- TextColumn::make('content')
- ->limit(50)
- ->sortable(),
- TextColumn::make('created_at')
- ->dateTime()
- ->sortable(),
- TextColumn::make('updated_at')
- ->dateTime()
- ->sortable(),
- ])
- ->filters([
- // Add filters if needed
- ])
- ->recordActions([
- EditAction::make(),
- DeleteAction::make(),
- ])
- ->toolbarActions([
- DeleteBulkAction::make(),
- ]);
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListStaffApplications::route('/'),
- 'edit' => EditStaffApplication::route('/{record}/edit'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/WebsiteAds/Pages/CreateWebsiteAd.php b/Updated_Cms/app/Filament/Resources/Hotel/WebsiteAds/Pages/CreateWebsiteAd.php
deleted file mode 100644
index 17365019ac..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/WebsiteAds/Pages/CreateWebsiteAd.php
+++ /dev/null
@@ -1,11 +0,0 @@
-label('Create new ADS')
- ->color('success'),
- Action::make('importAdsData')
- ->label('Import ADS Images from folder')
- ->color('info')
- ->action(function (): void {
- Artisan::call('import:ads-data');
- session()->flash('success', 'ADS data imported successfully!');
- })
- ->requiresConfirmation()
- ->modalHeading('Import ADS Data')
- ->modalDescription('Are you sure you want to import ADS data? This action cannot be undone.')
- ->modalButton('Yes, import data'),
- Action::make('emptyTable')
- ->label('Empty Database Table')
- ->color('danger')
- ->action(function (): void {
- WebsiteAd::truncate();
- session()->flash('success', 'The table has been emptied successfully!');
- })
- ->requiresConfirmation()
- ->modalHeading('Empty Table')
- ->modalDescription('Are you sure you want to empty the table? This action cannot be undone and will delete all records.')
- ->modalButton('Yes, empty table'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/WebsiteAds/WebsiteAdResource.php b/Updated_Cms/app/Filament/Resources/Hotel/WebsiteAds/WebsiteAdResource.php
deleted file mode 100644
index 100fb401ab..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/WebsiteAds/WebsiteAdResource.php
+++ /dev/null
@@ -1,81 +0,0 @@
-components([
- FileUpload::make('image')
- ->label('Image')
- ->disk('ads')
- ->preserveFilenames()
- ->image()
- ->rules(['required', 'image', 'mimes:jpeg,png,jpg,gif'])
- ->validationMessages([
- 'required' => 'Please upload an image.', 'image' => 'The file must be a valid image.', 'mimes' => 'Only JPEG, PNG, JPG, and GIF images are allowed.'])
- ->required()
- ->getUploadedFileNameForStorageUsing(
- fn (TemporaryUploadedFile $file): string => strtolower(str_replace([' ', '-', 'æ', 'ø', 'å'], ['_', '_', 'ae', 'oe', 'aa'], $file->getClientOriginalName())),
- ),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->columns([
- Stack::make([
- ImageColumn::make('image_url')
- ->label('')
- ->extraAttributes(['style' => 'image-rendering: pixelated'])
- ->size(125),
- TextColumn::make('image')
- ->label('')
- ->alignCenter()
- ->searchable(),
- ]),
- TextColumn::make('created_at')
- ->dateTime(),
- ])
- ->filters([
- ])
- ->recordActions([
- DeleteAction::make(),
- ])
- ->searchable();
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListWebsiteAds::route('/'),
- 'create' => CreateWebsiteAd::route('/create'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/Hotel/WordFilters/Pages/ManageWordFilters.php b/Updated_Cms/app/Filament/Resources/Hotel/WordFilters/Pages/ManageWordFilters.php
deleted file mode 100644
index ff960bb2dc..0000000000
--- a/Updated_Cms/app/Filament/Resources/Hotel/WordFilters/Pages/ManageWordFilters.php
+++ /dev/null
@@ -1,19 +0,0 @@
-components([
- TextInput::make('key')
- ->label(__('filament::resources.inputs.key'))
- ->maxLength(256)
- ->unique('wordfilter', 'key', ignoreRecord: true)
- ->required(),
-
- TextInput::make('replacement')
- ->label(__('filament::resources.inputs.replacement'))
- ->maxLength(16)
- ->required(),
-
- Select::make('hide')
- ->native(false)
- ->label(__('filament::resources.inputs.hideable'))
- ->default('0')
- ->options([
- '0' => __('filament::resources.options.no'),
- '1' => __('filament::resources.options.yes'),
- ]),
-
- Select::make('report')
- ->native(false)
- ->label(__('filament::resources.inputs.reportable'))
- ->default('0')
- ->options([
- '0' => __('filament::resources.options.no'),
- '1' => __('filament::resources.options.yes'),
- ]),
-
- TextInput::make('mute')
- ->label(__('filament::resources.inputs.mute_time'))
- ->columnSpanFull()
- ->default(0),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->columns([
- TextColumn::make('key')
- ->label(__('filament::resources.columns.key'))
- ->searchable(),
-
- TextColumn::make('replacement')
- ->label(__('filament::resources.columns.replacement'))
- ->searchable(),
-
- IconColumn::make('hide')
- ->label(__('filament::resources.columns.hideable'))
- ->icon(fn (string $state): string => $state === '0' ? 'heroicon-o-x-circle' : 'heroicon-o-check-circle')
- ->colors([
- 'danger' => '0',
- 'success' => '1',
- ]),
-
- IconColumn::make('report')
- ->label(__('filament::resources.columns.reportable'))
- ->icon(fn (string $state): string => $state === '0' ? 'heroicon-o-x-circle' : 'heroicon-o-check-circle')
- ->colors([
- 'danger' => '0',
- 'success' => '1',
- ]),
-
- TextColumn::make('mute')
- ->label(__('filament::resources.columns.mute_time'))
- ->searchable(),
- ])
- ->filters([
-
- ])
- ->recordActions([
- EditAction::make(),
- DeleteAction::make(),
- ])
- ->toolbarActions([
- DeleteBulkAction::make(),
- ]);
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ManageWordFilters::route('/'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/User/Bans/BanResource.php b/Updated_Cms/app/Filament/Resources/User/Bans/BanResource.php
deleted file mode 100644
index 5b919a800d..0000000000
--- a/Updated_Cms/app/Filament/Resources/User/Bans/BanResource.php
+++ /dev/null
@@ -1,144 +0,0 @@
-components([
- Textarea::make('ban_reason')
- ->label(__('filament::resources.inputs.reason'))
- ->columnSpanFull(),
-
- Select::make('type')
- ->native(false)
- ->label(__('filament::resources.inputs.type'))
- ->columnSpanFull()
- ->options([
- 'account' => __('filament::resources.common.Account'),
- 'ip' => __('filament::resources.common.IP'),
- 'machine' => __('filament::resources.common.Machine'),
- 'super' => __('filament::resources.common.Super'),
- ]),
-
- DateTimePicker::make('ban_expire')
- ->native(false)
- ->label(__('filament::resources.inputs.expires_at'))
- ->displayFormat('Y-m-d H:i')
- ->format('U')
- ->columnSpanFull(),
- ]);
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('id', 'desc')
- ->columns([
- TextColumn::make('id')
- ->label(__('filament::resources.columns.id')),
-
- UserAvatarColumn::make('avatar')
- ->toggleable()
- ->pointer('user.look')
- ->label(__('filament::resources.columns.avatar'))
- ->options('&size=m&head_direction=3&gesture=sml&headonly=1'),
-
- TextColumn::make('user.username')
- ->label(__('filament::resources.columns.username'))
- ->searchable(),
-
- TextColumn::make('staff.username')
- ->label(__('filament::resources.columns.by'))
- ->searchable(),
-
- TextColumn::make('ban_reason')
- ->label(__('filament::resources.columns.reason'))
- ->tooltip(function (TextColumn $column): ?string {
- $state = $column->getState();
-
- if (strlen($state) <= $column->getCharacterLimit()) {
- return null;
- }
-
- return $state;
- })
- ->limit(15)
- ->searchable(),
-
- TextColumn::make('type')
- ->badge()
- ->label(__('filament::resources.columns.type'))
- ->formatStateUsing(fn (string $state): string => match ($state) {
- 'account' => __('filament::resources.common.Account'),
- 'ip' => __('filament::resources.common.IP'),
- 'machine' => __('filament::resources.common.Machine'),
- 'super' => __('filament::resources.common.Super'),
- })
- ->color(fn (string $state): string => match ($state) {
- 'account' => 'primary',
- 'ip' => 'success',
- 'machine' => 'primary',
- 'super' => 'danger',
- }),
-
- TextColumn::make('timestamp')
- ->label(__('filament::resources.columns.banned_at'))
- ->date('Y-m-d H:i'),
-
- TextColumn::make('ban_expire')
- ->label(__('filament::resources.columns.expires_at'))
- ->formatStateUsing(fn (string $state): string => $state == 0 ? __('filament::resources.common.Never') : date('Y-m-d H:i', $state)),
- ])
- ->filters([
- //
- ])
- ->recordActions([
- EditAction::make(),
- DeleteAction::make(),
- ])
- ->toolbarActions([
- DeleteBulkAction::make(),
- ]);
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ManageBans::route('/'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/User/Bans/Pages/ManageBans.php b/Updated_Cms/app/Filament/Resources/User/Bans/Pages/ManageBans.php
deleted file mode 100644
index 9dd64ec062..0000000000
--- a/Updated_Cms/app/Filament/Resources/User/Bans/Pages/ManageBans.php
+++ /dev/null
@@ -1,18 +0,0 @@
-getRecord(),
- $data,
- );
- }
-
- public static function getEloquentQuery(): Builder
- {
- return static::getModel()::query()->with(['currencies', 'settings']);
- }
-
- /**
- * @throws Halt
- */
- protected function beforeSave(): void
- {
- $user = $this->getRecord();
- $data = $this->form->getState();
-
- if ($data['rank'] > auth()->user()->rank) {
- Notification::make()
- ->danger()
- ->title(__('You cannot edit this user!'))
- ->body(__('You cannot edit users with a higher rank than yours.'))
- ->send();
-
- $this->halt();
- }
-
- $rcon = app(RconService::class);
-
- if (! $user->online) {
- DB::transaction(function () use ($user, $data): void {
- $this->treatChangedCurrenciesWithoutRcon($user, $data);
- });
-
- return;
- }
-
- if ($user->online && ! $rcon->isConnected()) {
- Notification::make()
- ->danger()
- ->title(__('RCON is not enabled!'))
- ->body(__('You cannot edit users because RCON is not enabled and the user is online.'))
- ->send();
-
- $this->halt();
- }
-
- DB::transaction(function () use ($user, $data, $rcon): void {
- if ($data['credits'] != $user->credits) {
- $rcon->giveCredits($user, -$user->credits + $data['credits']);
- }
-
- $this->checkUsernameChangedPermission($user, $data, $rcon);
- $this->treatChangedCurrencies($user, $data);
- $this->treatChangedUserRank($user, $data, $rcon);
- $this->treatChangedUserMotto($user, $data, $rcon);
- });
- }
-
- private function treatChangedCurrenciesWithoutRcon(Model $user, array $data): void
- {
- $user->currencies->each(function (UserCurrency $currency) use ($data, $user): void {
- $updatedCurrencyAmount = $data["currency_{$currency->type}"] ?? $currency->amount;
- if ($updatedCurrencyAmount == $currency->amount) {
- return;
- }
-
- $updated = $user->currencies()->where('type', $currency->type)->update(['amount' => $updatedCurrencyAmount]);
-
- if ($updated) {
- activity()
- ->performedOn($currency)
- ->withProperties(['old_amount' => $currency->amount, 'new_amount' => $updatedCurrencyAmount, 'user_id' => $user->id, 'type' => $currency->type])
- ->event('updated')
- ->log("Currency updated for user {$user->username}");
-
- } else {
- activity()
- ->withProperties(['user_id' => $user->id, 'type' => $currency->type])
- ->event('failed_update')
- ->log("Failed to update currency for user {$user->username}");
- }
- });
-
- $user->settings->update(['can_change_name' => $data['allow_change_username'] ? '1' : '0']);
- }
-
- private function checkUsernameChangedPermission(Model $user, array $data, RconService $rcon): void
- {
- if ($data['allow_change_username'] == $user->settings->can_change_name) {
- return;
- }
-
- if (! $rcon->isConnected()) {
- Notification::make()
- ->danger()
- ->title(__('RCON is not enabled!'))
- ->body(__('You cannot edit users because RCON is not enabled and the user is online.'))
- ->send();
-
- $this->halt();
- }
-
- $rcon->disconnectUser($user);
- $user->settings->update(['can_change_name' => $data['allow_change_username'] ? '1' : '0']);
- }
-
- private function treatChangedCurrencies(Model $user, array $data): void
- {
- $user->currencies->each(function (UserCurrency $currency) use ($data, $user): void {
- $updatedCurrencyAmount = $data["currency_{$currency->type}"] ?? $currency->amount;
- $currencyType = match ($currency->type) {
- CurrencyTypes::Duckets => 'duckets',
- CurrencyTypes::Diamonds => 'diamonds',
- CurrencyTypes::Points => 'points',
- };
-
- if ($updatedCurrencyAmount == $currency->amount) {
- return;
- }
-
- app(SendCurrency::class)->execute($user, $currencyType, -$currency->amount + $updatedCurrencyAmount);
- });
- }
-
- private function treatChangedUserRank(Model $user, array $data, RconService $rcon): void
- {
- if ($data['rank'] == $user->rank) {
- return;
- }
- if ($data['rank'] > auth()->user()->rank) {
- return;
- }
-
- if ($user->online && ! $rcon->isConnected()) {
- Notification::make()
- ->danger()
- ->title(__('RCON is not enabled!'))
- ->body(__('You cannot edit users because RCON is not enabled and the user is online.'))
- ->send();
-
- $this->halt();
- }
-
- if (! $user->online) {
- $user->update(['rank' => $data['rank']]);
-
- return;
- }
-
- $rcon->alertUser($user, __('You have been disconnected because your rank has been changed. Please re-enter the hotel.'));
- \Illuminate\Support\Sleep::sleep(2);
-
- $rcon->disconnectUser($user);
- $rcon->setRank($user, $data['rank']);
- }
-
- private function treatChangedUserMotto(Model $user, array $data, RconService $rcon): void
- {
- if ($data['motto'] == $user->motto) {
- return;
- }
-
- if ($user->online && ! $rcon->isConnected()) {
- Notification::make()
- ->danger()
- ->title(__('RCON is not enabled!'))
- ->body(__('You cannot edit users because RCON is not enabled and the user is online.'))
- ->send();
-
- $this->halt();
- }
-
- if (! $user->online) {
- $user->update(['motto' => $data['motto']]);
-
- return;
- }
-
- $rcon->setMotto($user, $data['motto']);
- $rcon->alertUser($user, __('Your motto has been changed by a staff member.'));
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/User/Users/Pages/ListUsers.php b/Updated_Cms/app/Filament/Resources/User/Users/Pages/ListUsers.php
deleted file mode 100644
index 5a3875cb0f..0000000000
--- a/Updated_Cms/app/Filament/Resources/User/Users/Pages/ListUsers.php
+++ /dev/null
@@ -1,84 +0,0 @@
-modal()
- ->color('gray')
- ->modalHeading(__('filament::resources.actions.send_notifications'))
- ->icon('heroicon-o-bell')
- ->schema([
- Select::make('users')
- ->label(__('filament::resources.inputs.users'))
- ->searchable()
- ->getSearchResultsUsing(fn (string $search): array => User::where('username', 'like', "%{$search}%")->limit(50)->pluck('username', 'id')->toArray())
- ->multiple()
- ->native(false)
- ->nullable(),
-
- TextInput::make('message')
- ->label(__('filament::resources.inputs.message'))
- ->maxLength(100)
- ->required(),
-
- TextInput::make('url')
- ->label(__('filament::resources.inputs.url'))
- ->nullable(),
-
- Toggle::make('as_staff')
- ->label(__('filament::resources.inputs.as_staff'))
- ->default(false),
- ])
- ->action(function (array $data): void {
- $notifications = collect();
- $allUsersId = collect($data['users'])->values();
- $senderId = $data['as_staff'] ? null : auth()->id();
-
- if ($allUsersId->isEmpty()) {
- $allUsersId = User::select('id')->get()->pluck('id');
- }
-
- $allUsersId->each(function ($userId) use ($senderId, $data, $notifications): void {
- $notifications->push([
- 'sender_id' => $senderId,
- 'recipient_id' => $userId,
- 'type' => NotificationType::HousekeepingCustomMessage,
- 'message' => $data['message'],
- 'url' => $data['url'] ?? null,
- 'created_at' => now(),
- 'updated_at' => now(),
- ]);
- });
-
- UserNotification::insert($notifications->toArray());
-
- Notification::make()
- ->body(__('Notification sent successfully.'))
- ->icon('heroicon-o-check-circle')
- ->iconColor('success')
- ->send();
- }),
-
- CreateAction::make(),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/User/Users/Pages/ViewUser.php b/Updated_Cms/app/Filament/Resources/User/Users/Pages/ViewUser.php
deleted file mode 100644
index eadc03b048..0000000000
--- a/Updated_Cms/app/Filament/Resources/User/Users/Pages/ViewUser.php
+++ /dev/null
@@ -1,20 +0,0 @@
-getRecord(),
- $data,
- );
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/BadgesRelationManager.php b/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/BadgesRelationManager.php
deleted file mode 100644
index 312bc5ca91..0000000000
--- a/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/BadgesRelationManager.php
+++ /dev/null
@@ -1,132 +0,0 @@
-components([
- TextInput::make('badge_code')
- ->label(__('filament::resources.inputs.badge_code'))
- ->required()
- ->maxLength(255)
- ->columnSpanFull(),
- ]);
- }
-
- public function table(Table $table): Table
- {
- return $table
- ->modifyQueryUsing(fn ($query) => $query->latest('id'))
- ->columns([
- TextColumn::make('id')
- ->label(__('filament::resources.columns.id')),
-
- HabboBadgeColumn::make('badge')
- ->alignCenter()
- ->label(__('filament::resources.columns.image')),
-
- TextColumn::make('badge_code')
- ->label(__('filament::resources.columns.badge_code'))
- ->searchable(),
-
- IconColumn::make('slot_id')
- ->label(__('filament::resources.columns.equipped'))
- ->icon(fn ($record) => $record->slot_id > 0 ? 'heroicon-o-check-circle' : 'heroicon-o-x-circle')
- ->colors([
- 'success' => fn (string $state) => $state > 0,
- 'danger' => fn (string $state) => $state <= 0,
- ]),
- ])
- ->filters([
- //
- ])
- ->headerActions([
- CreateAction::make()
- ->before(function (CreateAction $action, RelationManager $livewire): void {
- $user = $livewire->getOwnerRecord();
- $hasRconEnabled = config('hotel.rcon.enabled');
-
- if (! $user->online) {
- return;
- }
-
- if (! $hasRconEnabled) {
- Notification::make()
- ->danger()
- ->title('RCON is not enabled!')
- ->body("You can't send badges to online users if RCON is not enabled.")
- ->persistent()
- ->send();
- } else {
- $rcon = app(RconService::class);
- $data = $action->getFormData();
-
- $rcon->sendSafelyFromDashboard('sendBadge', [$user, $data['badge_code']], 'RCON: Failed to send the badge');
- }
-
- $action->cancel();
- }),
- ])
- ->recordActions([
- DeleteAction::make()
- ->before(fn (DeleteAction $action, RelationManager $livewire) => self::onDeleteBadgeAction($action, $livewire)),
- ])
- ->toolbarActions([
- DeleteBulkAction::make()
- ->before(fn (DeleteBulkAction $action, RelationManager $livewire) => self::onDeleteBadgeAction($action, $livewire)),
- ]);
- }
-
- public static function onDeleteBadgeAction(DeleteAction|DeleteBulkAction $action, RelationManager $livewire): void
- {
- $user = $livewire->getOwnerRecord();
- $hasRconEnabled = config('hotel.rcon.enabled');
-
- if (! $user->online) {
- return;
- }
-
- if (! $hasRconEnabled) {
- Notification::make()
- ->danger()
- ->title('RCON is not enabled!')
- ->body("You can't remove badges to online users if RCON is not enabled.")
- ->persistent()
- ->send();
- } else {
- $rcon = app(RconService::class);
- $badge = $action instanceof DeleteAction
- ? $action->getRecord()?->badge_code
- : $action->getRecords()->map(fn ($record) => $record->badge_code)->join(';');
-
- $rcon->sendSafelyFromDashboard('removeBadge', [$user, $badge], 'RCON: Failed to remove the badge');
- }
-
- $action->cancel();
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/ChatLogPrivateRelationManager.php b/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/ChatLogPrivateRelationManager.php
deleted file mode 100644
index aa03f37f91..0000000000
--- a/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/ChatLogPrivateRelationManager.php
+++ /dev/null
@@ -1,26 +0,0 @@
-columns(ChatlogPrivateResource::getTable())
- ->defaultSort('timestamp', 'desc');
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/ChatLogRelationManager.php b/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/ChatLogRelationManager.php
deleted file mode 100644
index 5634076acb..0000000000
--- a/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/ChatLogRelationManager.php
+++ /dev/null
@@ -1,26 +0,0 @@
-columns(ChatlogRoomResource::getTable())
- ->defaultSort('timestamp', 'desc');
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/SettingsRelationManager.php b/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/SettingsRelationManager.php
deleted file mode 100644
index 20bdc26128..0000000000
--- a/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/SettingsRelationManager.php
+++ /dev/null
@@ -1,184 +0,0 @@
-components([
- Tabs::make('Settings')
- ->schema([
- Tab::make(__('filament::resources.tabs.Account Data'))
- ->schema([
- TextInput::make('achievement_score')
- ->label(__('filament::resources.inputs.achievement_score'))
- ->disabled()
- ->required(),
-
- TextInput::make('respects_received')
- ->label(__('filament::resources.inputs.respects_received'))
- ->disabled()
- ->required(),
-
- Select::make('can_trade')
- ->native(false)
- ->label(__('filament::resources.inputs.can_trade'))
- ->options([
- '0' => __('filament::resources.common.No'),
- '1' => __('filament::resources.common.Yes'),
- ])
- ->required(),
-
- Select::make('block_following')
- ->native(false)
- ->label(__('filament::resources.inputs.block_following'))
- ->options([
- '0' => __('filament::resources.common.No'),
- '1' => __('filament::resources.common.Yes'),
- ])
- ->required(),
-
- Select::make('block_friendrequests')
- ->native(false)
- ->label(__('filament::resources.inputs.block_friendrequests'))
- ->options([
- '0' => __('filament::resources.common.No'),
- '1' => __('filament::resources.common.Yes'),
- ])
- ->required(),
-
- Select::make('block_roominvites')
- ->native(false)
- ->label(__('filament::resources.inputs.block_roominvites'))
- ->options([
- '0' => __('filament::resources.common.No'),
- '1' => __('filament::resources.common.Yes'),
- ])
- ->required(),
-
- TextInput::make('max_rooms')
- ->label(__('filament::resources.inputs.max_rooms'))
- ->numeric()
- ->required(),
-
- TextInput::make('max_friends')
- ->label(__('filament::resources.inputs.max_friends'))
- ->numeric()
- ->required(),
- ])
- ->columns(['sm' => 2]),
-
- Tab::make(__('filament::resources.tabs.Extra Settings'))
- ->schema([
- Select::make('old_chat')
- ->native(false)
- ->label(__('filament::resources.inputs.old_chat'))
- ->options([
- '0' => __('filament::resources.common.No'),
- '1' => __('filament::resources.common.Yes'),
- ])
- ->required(),
-
- Select::make('block_camera_follow')
- ->native(false)
- ->label(__('filament::resources.inputs.block_camera_follow'))
- ->options([
- '0' => __('filament::resources.common.No'),
- '1' => __('filament::resources.common.Yes'),
- ])
- ->required(),
-
- Select::make('ignore_bots')
- ->native(false)
- ->label(__('filament::resources.inputs.ignore_bots'))
- ->options([
- '0' => __('filament::resources.common.No'),
- '1' => __('filament::resources.common.Yes'),
- ])
- ->required(),
-
- Select::make('ignore_pets')
- ->native(false)
- ->label(__('filament::resources.inputs.ignore_pets'))
- ->options([
- '0' => __('filament::resources.common.No'),
- '1' => __('filament::resources.common.Yes'),
- ])
- ->required(),
- ])->columns(['sm' => 2]),
- ])->columnSpanFull(),
- ]);
- }
-
- public function table(Table $table): Table
- {
- return $table
- ->columns([
- TextColumn::make('achievement_score')
- ->label(__('filament::resources.columns.achievement_score'))
- ->toggleable(),
-
- TextColumn::make('respects_received')
- ->label(__('filament::resources.columns.respects_received'))
- ->toggleable(),
-
- TextColumn::make('online_time')
- ->label(__('filament::resources.columns.online_time'))
- ->formatStateUsing(fn (string $state) => __(':m minutes', ['m' => round(CarbonInterval::seconds($state)->totalMinutes)]))
- ->toggleable(),
-
- IconColumn::make('can_trade')
- ->label(__('filament::resources.columns.can_trade'))
- ->icon(fn (string $state) => $state === '1' ? 'heroicon-o-check-circle' : 'heroicon-o-x-circle')
- ->colors([
- 'success' => '1',
- 'danger' => '0',
- ]),
-
- IconColumn::make('can_change_name')
- ->label(__('filament::resources.columns.can_change_name'))
- ->icon(fn (string $state) => $state === '1' ? 'heroicon-o-check-circle' : 'heroicon-o-x-circle')
- ->colors([
- 'success' => '1',
- 'danger' => '0',
- ]),
- ])
- ->filters([
- //
- ])
- ->headerActions([
- Action::make('helper')
- ->label('Settings Tip')
- ->icon('heroicon-o-exclamation-triangle')
- ->tooltip('You can only change the offline user settings.')
- ->extraAttributes(['style' => 'cursor: default !important']),
- ])
- ->recordActions([
- EditAction::make()
- ->disabled(fn (RelationManager $livewire) => $livewire->getOwnerRecord()->online),
- ])
- ->toolbarActions([]);
- }
-}
diff --git a/Updated_Cms/app/Filament/Resources/User/Users/UserResource.php b/Updated_Cms/app/Filament/Resources/User/Users/UserResource.php
deleted file mode 100644
index 2fe36cc951..0000000000
--- a/Updated_Cms/app/Filament/Resources/User/Users/UserResource.php
+++ /dev/null
@@ -1,298 +0,0 @@
-components([
- Tabs::make('Main')
- ->tabs([
- Tab::make(__('filament::resources.tabs.General Information'))
- ->schema([
- TextInput::make('username')
- ->label(__('filament::resources.inputs.username'))
- ->required()
- ->disabled()
- ->unique(ignoreRecord: true)
- ->maxLength(25),
-
- TextInput::make('motto')
- ->label(__('filament::resources.inputs.motto'))
- ->required()
- ->maxLength(127),
-
- Select::make('gender')
- ->native(false)
- ->label(__('filament::resources.inputs.gender'))
- ->options([
- 'M' => __('filament::resources.common.Male'),
- 'F' => __('filament::resources.common.Female'),
- ])
- ->required(),
-
- DateTimePicker::make('account_created')
- ->native(false)
- ->displayFormat('Y-m-d H:i:s')
- ->dehydrateStateUsing(fn (Model $record) => $record->account_created)
- ->disabled()
- ->label(__('filament::resources.inputs.created_at')),
-
- DateTimePicker::make('last_login')
- ->native(false)
- ->displayFormat('Y-m-d H:i:s')
- ->dehydrateStateUsing(fn (Model $record) => $record->last_login)
- ->disabled()
- ->label(__('filament::resources.inputs.last_login')),
-
- DateTimePicker::make('last_online')
- ->native(false)
- ->displayFormat('Y-m-d H:i:s')
- ->dehydrateStateUsing(fn (Model $record) => $record->last_online)
- ->disabled()
- ->label(__('filament::resources.inputs.last_online')),
-
- TextInput::make('ip_register')
- ->label(__('filament::resources.inputs.ip_register'))
- ->disabled(),
-
- TextInput::make('ip_current')
- ->label(__('filament::resources.inputs.ip_current'))
- ->disabled(),
-
- TextInput::make('referral_code')
- ->label(__('filament::resources.inputs.referral_code'))
- ->disabled(),
-
- TextInput::make('referrer_code')
- ->label(__('filament::resources.inputs.referrer_code'))
- ->nullable()
- ->maxLength(15),
-
- Select::make('team_id')
- ->native(false)
- ->label(__('filament::resources.inputs.team_id'))
- ->options(WebsiteTeam::all()->pluck('rank_name', 'id'))
- ->columnSpanFull(),
- ])->columns(['sm' => 2]),
-
- Tab::make(__('filament::resources.tabs.Currencies'))
- ->schema([
- TextInput::make('credits')
- ->label(__('filament::resources.common.Credits'))
- ->numeric()
- ->minValue(0)
- ->columnSpanFull(),
-
- TextInput::make('currency_0')
- ->label(__('filament::resources.common.Duckets'))
- ->numeric()
- ->minValue(0)
- ->columnSpanFull(),
-
- TextInput::make('currency_5')
- ->label(__('filament::resources.common.Diamonds'))
- ->numeric()
- ->minValue(0)
- ->columnSpanFull(),
-
- TextInput::make('currency_101')
- ->label(__('filament::resources.common.Points'))
- ->numeric()
- ->minValue(0)
- ->columnSpanFull(),
- ])
- ->columns(['sm' => 2]),
-
- Tab::make(__('filament::resources.tabs.Security'))
- ->schema([
- Section::make(__('filament::resources.tabs.Change Username'))
- ->description(__('filament::resources.helpers.change_username_description'))
- ->schema([
- Toggle::make('allow_change_username')
- ->label(__('filament::resources.inputs.allow_change_username')),
- ])->collapsible()->collapsed(),
-
- Section::make(__('filament::resources.tabs.Change Email'))
- ->schema([
- TextInput::make('mail')
- ->label(__('filament::resources.inputs.email'))
- ->email()
- ->required(),
- ])->collapsible()->collapsed(),
-
- Section::make(__('filament::resources.tabs.Change Password'))
- ->description(__('filament::resources.helpers.change_password_description'))
- ->schema([
- TextInput::make('password')
- ->label(__('filament::resources.inputs.new_password'))
- ->dehydrateStateUsing(fn ($state) => Hash::make($state))
- ->dehydrated(fn ($state) => filled($state))
- ->password()
- ->confirmed(),
-
- TextInput::make('password_confirmation')
- ->label(__('filament::resources.inputs.new_password_confirmation'))
- ->dehydrated(false)
- ->password(),
- ])->collapsible()
- ->columns(['sm' => 2])
- ->collapsed(),
-
- Section::make(__('filament::resources.tabs.Change Rank'))
- ->schema([
- Select::make('rank')
- ->native(false)
- ->label(__('filament::resources.inputs.rank'))
- ->options(Permission::where('id', '<', auth()->user()->rank)->get()->pluck('rank_name', 'id')),
-
- Toggle::make('is_hidden')
- ->label(__('filament::resources.inputs.is_hidden'))
- ->default(false),
- ])->collapsible()
- ->collapsed(),
- ]),
- ])->columnSpanFull(),
- ]);
- }
-
- #[\Override]
- public static function getEloquentQuery(): Builder
- {
- return static::getModel()::query();
- }
-
- #[\Override]
- public static function table(Table $table): Table
- {
- return $table
- ->defaultSort('id', 'desc')
- ->columns([
- TextColumn::make('id')
- ->label(__('filament::resources.columns.id'))
- ->searchable(),
-
- UserAvatarColumn::make('avatar')
- ->toggleable()
- ->label(__('filament::resources.columns.avatar'))
- ->options('&size=m&head_direction=3&gesture=sml&headonly=1'),
-
- TextColumn::make('username')
- ->label(__('filament::resources.columns.username'))
- ->searchable(),
-
- TextColumn::make('mail')
- ->label(__('filament::resources.columns.email'))
- ->toggleable()
- ->searchable()
- ->limit(50),
-
- TextColumn::make('motto')
- ->label(__('filament::resources.columns.motto'))
- ->toggleable()
- ->limit(30)
- ->searchable(),
-
- IconColumn::make('online')
- ->label(__('filament::resources.columns.online'))
- ->icon(fn (Model $record) => $record->online ? 'heroicon-o-check-circle' : 'heroicon-o-x-circle')
- ->colors([
- 'danger' => false,
- 'success' => true,
- ]),
-
- TextColumn::make('account_created')
- ->toggleable()
- ->date('Y-m-d H:i')
- ->label(__('filament::resources.columns.created_at')),
- ])
- ->filters([
- //
- ])
- ->recordActions([
- ViewAction::make(),
- EditAction::make(),
- ])
- ->toolbarActions([]);
- }
-
- #[\Override]
- public static function getRelations(): array
- {
- return [
- SettingsRelationManager::class,
- BadgesRelationManager::class,
- ChatLogRelationManager::class,
- ChatLogPrivateRelationManager::class,
- ];
- }
-
- public static function fillWithOutsideData(Model $record, array $formData): array
- {
- $formData['currency_0'] = $record->currency('duckets');
- $formData['currency_5'] = $record->currency('diamonds');
- $formData['currency_101'] = $record->currency('points');
-
- if ($record->settings) {
- $formData['allow_change_username'] = $record->settings->can_change_name;
- }
-
- return $formData;
- }
-
- public static function getPages(): array
- {
- return [
- 'index' => ListUsers::route('/'),
- 'create' => CreateUser::route('/create'),
- 'view' => ViewUser::route('/{record}'),
- 'edit' => EditUser::route('/{record}/edit'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Filament/Tables/Columns/HabboBadgeColumn.php b/Updated_Cms/app/Filament/Tables/Columns/HabboBadgeColumn.php
deleted file mode 100644
index 15f15064a3..0000000000
--- a/Updated_Cms/app/Filament/Tables/Columns/HabboBadgeColumn.php
+++ /dev/null
@@ -1,33 +0,0 @@
-getRecord();
-
- if (! method_exists($record, 'getBadgePath')) {
- return '';
- }
-
- return $record->getBadgePath();
- }
-
- public function getBadgeName(): string
- {
- $record = $this->getRecord();
-
- if (! method_exists($record, 'getBadgeName')) {
- return '';
- }
-
- return $record->getBadgeName();
- }
-}
diff --git a/Updated_Cms/app/Filament/Tables/Columns/UserAvatarColumn.php b/Updated_Cms/app/Filament/Tables/Columns/UserAvatarColumn.php
deleted file mode 100644
index af8fdd731e..0000000000
--- a/Updated_Cms/app/Filament/Tables/Columns/UserAvatarColumn.php
+++ /dev/null
@@ -1,47 +0,0 @@
-getRecord();
- $figureImagerUrl = setting('avatar_imager');
-
- if ($figureImagerUrl === '' || $figureImagerUrl === '0') {
- return '';
- }
-
- $figure = $this->figurePointer
- ? data_get($record, $this->figurePointer)
- : $record->look;
-
- return "{$figureImagerUrl}{$figure}{$this->avatarOptions}";
- }
-
- public function options(string $avatarOptions): UserAvatarColumn
- {
- $this->avatarOptions = $avatarOptions;
-
- return $this;
- }
-
- /**
- * Used to reference the user's figure string through relationships in a Laravel model. By default it will take the look property of the main class.
- */
- public function pointer(string $figurePointer): UserAvatarColumn
- {
- $this->figurePointer = $figurePointer;
-
- return $this;
- }
-}
diff --git a/Updated_Cms/app/Filament/Traits/TranslatableResource.php b/Updated_Cms/app/Filament/Traits/TranslatableResource.php
deleted file mode 100644
index 8d6399702e..0000000000
--- a/Updated_Cms/app/Filament/Traits/TranslatableResource.php
+++ /dev/null
@@ -1,39 +0,0 @@
-between(
- start: now()->startOfMonth(),
- end: now()->endOfMonth(),
- )
- ->perDay()
- ->count();
-
- $label = __('filament::resources.stats.articles_chart.label');
-
- return [
- 'datasets' => [
- [
- 'label' => $label,
- 'data' => $data->map(fn (TrendValue $value) => $value->aggregate),
- ],
- ],
- 'labels' => $data->map(fn (TrendValue $value) => $value->date),
- ];
- }
-
- protected function getType(): string
- {
- return 'line';
- }
-}
diff --git a/Updated_Cms/app/Filament/Widgets/TopDashboardOverview.php b/Updated_Cms/app/Filament/Widgets/TopDashboardOverview.php
deleted file mode 100644
index d99588799e..0000000000
--- a/Updated_Cms/app/Filament/Widgets/TopDashboardOverview.php
+++ /dev/null
@@ -1,54 +0,0 @@
-getLocale()))
- ->description(__('filament::resources.stats.users_count.description'))
- ->chart([20, 20])
- ->descriptionIcon('heroicon-m-user-group', IconPosition::Before)
- ->color('success'),
-
- Stat::make(__('filament::resources.stats.furniture_count.title'), Number::format(ItemDefinition::count(), '0', '1', app()->getLocale()))
- ->description(__('filament::resources.stats.furniture_count.description'))
- ->descriptionIcon('heroicon-m-cube', IconPosition::Before)
- ->chart([20, 20])
- ->color('success'),
-
- Stat::make(__('filament::resources.stats.rooms_count.title'), Number::format(Room::count(), '0', '1', app()->getLocale()))
- ->description(__('filament::resources.stats.rooms_count.description'))
- ->descriptionIcon('heroicon-m-building-storefront', IconPosition::Before)
- ->chart([20, 20])
- ->color('success'),
-
- Stat::make(__('filament::resources.stats.photos_count.title'), Number::format(CameraWeb::count(), '0', '1', app()->getLocale()))
- ->description(__('filament::resources.stats.photos_count.description'))
- ->descriptionIcon('heroicon-m-camera', IconPosition::Before)
- ->chart([20, 20])
- ->color('success'),
-
- Stat::make(__('filament::resources.stats.badge_count.title'), Number::format(WebsiteBadge::count(), '0', '1', app()->getLocale()))
- ->description(__('filament::resources.stats.badge_count.description'))
- ->descriptionIcon('heroicon-m-gif', IconPosition::Before)
- ->chart([20, 20])
- ->color('success'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Helpers/helper.php b/Updated_Cms/app/Helpers/helper.php
deleted file mode 100644
index 19eafa0662..0000000000
--- a/Updated_Cms/app/Helpers/helper.php
+++ /dev/null
@@ -1,76 +0,0 @@
-getOrDefault($setting);
- }
-}
-
-if (! function_exists('hasPermission')) {
- function hasPermission(string $permission): string
- {
- return app(PermissionsService::class)->getOrDefault($permission);
- }
-}
-
-if (! function_exists('hasHousekeepingPermission')) {
- function hasHousekeepingPermission(string $permission): string
- {
- return app(HousekeepingPermissionsService::class)->getOrDefault($permission);
- }
-}
-
-if (! function_exists('strLimit')) {
- function strLimit(string $string, int $limit, string $replacement = '...'): string
- {
- return Str::limit($string, $limit, $replacement);
- }
-}
-
-if (! function_exists('findMigration')) {
- function findMigration(string $tableName): string
- {
- foreach (glob(database_path('migrations/*.php')) as $filename) {
- $content = file_get_contents($filename);
- if ($content !== false && str_contains($content, "Schema::create('$tableName'")) {
- return basename($filename);
- }
- }
- return '';
- }
-}
-
-if (! function_exists('columnExists')) {
- function columnExists(string $table, string $column): bool
- {
- return Schema::hasColumn($table, $column);
- }
-}
-
-if (! function_exists('dropForeignKeyIfExists')) {
- function dropForeignKeyIfExists(string $table, string $column): void
- {
- $connection = Schema::getConnection();
- $tableWithPrefix = $connection->getTablePrefix() . $table;
-
- $foreignKeys = collect($connection->select('SELECT CONSTRAINT_NAME
- FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
- WHERE TABLE_SCHEMA = DATABASE()
- AND TABLE_NAME = ?
- AND COLUMN_NAME = ?', [$tableWithPrefix, $column]))
- ->pluck('CONSTRAINT_NAME');
-
- foreach ($foreignKeys as $foreignKey) {
- if (! empty($foreignKey)) {
- $connection->statement("ALTER TABLE {$table} DROP FOREIGN KEY {$foreignKey}");
- }
- }
- }
-}
\ No newline at end of file
diff --git a/Updated_Cms/app/Http/Controllers/Api/HotelApiController.php b/Updated_Cms/app/Http/Controllers/Api/HotelApiController.php
deleted file mode 100644
index ef7b3efbdc..0000000000
--- a/Updated_Cms/app/Http/Controllers/Api/HotelApiController.php
+++ /dev/null
@@ -1,29 +0,0 @@
-userApiService->fetchUser($username, $columns));
- }
-
- public function onlineUsers($columns = ['username', 'motto', 'look'], bool $randomOrder = true): OnlineUsersResource
- {
- return new OnlineUsersResource($this->userApiService->onlineUsers($columns, $randomOrder));
- }
-
- public function onlineUserCount(): OnlineUserCountResource
- {
- return new OnlineUserCountResource($this->userApiService->onlineUserCount());
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Articles/ArticleController.php b/Updated_Cms/app/Http/Controllers/Articles/ArticleController.php
deleted file mode 100644
index 00656d2d7c..0000000000
--- a/Updated_Cms/app/Http/Controllers/Articles/ArticleController.php
+++ /dev/null
@@ -1,46 +0,0 @@
-articlesService->getArticles(true);
-
- return view('community.articles', [
- 'articles' => $articles,
- ]);
- }
-
- public function show(WebsiteArticle $article): View
- {
- return view('community.article', [
- 'article' => $article,
- 'otherArticles' => WebsiteArticle::whereNot('slug', $article->slug)->latest('id')->take(15)->get(),
- 'myReactions' => Auth::check() ? $article->reactions->where('user_id', Auth::id())->pluck('reaction') : [],
- 'articleReactions' => collect($article->reactions)->groupBy('reaction', true),
- ]);
- }
-
- public function toggleReaction(WebsiteArticle $article, Request $request): JsonResponse
- {
- $response = $this->reactionService->toggleReaction($article, Auth::user(), $request);
-
- return response()->json($response);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Articles/WebsiteArticleCommentsController.php b/Updated_Cms/app/Http/Controllers/Articles/WebsiteArticleCommentsController.php
deleted file mode 100644
index 7971297ada..0000000000
--- a/Updated_Cms/app/Http/Controllers/Articles/WebsiteArticleCommentsController.php
+++ /dev/null
@@ -1,29 +0,0 @@
-commentService->store($request->get('comment'), $article);
-
- return back()->with('success', __('You comment has been posted!'));
- }
-
- public function destroy(WebsiteArticleComment $comment): RedirectResponse
- {
- $this->commentService->destroy($comment);
-
- return back()->with('success', __('You comment has been deleted!'));
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Badge/BadgeController.php b/Updated_Cms/app/Http/Controllers/Badge/BadgeController.php
deleted file mode 100644
index c6f8920a77..0000000000
--- a/Updated_Cms/app/Http/Controllers/Badge/BadgeController.php
+++ /dev/null
@@ -1,124 +0,0 @@
-getOrDefault('drawbadge_currency_value', 150);
- $currencyType = $settingsService->getOrDefault('drawbadge_currency_type', 'credits');
- $badgesPath = $settingsService->getOrDefault('badge_path_filesystem');
-
- $folderError = false;
- $errorMessage = '';
-
- if ($badgesPath === '' || $badgesPath === '0') {
- $folderError = true;
- $errorMessage = 'Badges path not configured.';
- } elseif (! file_exists($badgesPath)) {
- $folderError = true;
- $errorMessage = 'Badges path not configured.';
- } elseif (! is_writable($badgesPath)) {
- $folderError = true;
- $errorMessage = 'Badges folder does not have write access.';
- }
-
- return view('draw-badge', ['cost' => $cost, 'currencyType' => $currencyType, 'folderError' => $folderError, 'errorMessage' => $errorMessage]);
- }
-
- public function buy(Request $request, SendCurrency $sendCurrency, SettingsService $settingsService)
- {
- $user = Auth::user();
- $cost = (int) $settingsService->getOrDefault('drawbadge_currency_value', 150);
- $currencyType = $settingsService->getOrDefault('drawbadge_currency_type', 'credits');
-
- $currentAmount = match ($currencyType) {
- 'credits' => $user->credits ?? 0,
- 'duckets' => $user->currencies()->where('type', CurrencyTypes::Duckets)->value('amount') ?? 0,
- 'diamonds' => $user->currencies()->where('type', CurrencyTypes::Diamonds)->value('amount') ?? 0,
- 'points' => $user->currencies()->where('type', CurrencyTypes::Points)->value('amount') ?? 0,
- default => 0,
- };
-
- if ($currentAmount < $cost) {
- return response()->json(['success' => false, 'message' => 'Insufficient ' . $currencyType . '.'], 400);
- }
-
- $result = $sendCurrency->execute($user, $currencyType, -$cost);
-
- if ($result === false) {
- return response()->json(['success' => false, 'message' => 'Failed to deduct ' . $currencyType . '.'], 500);
- }
-
- $badgeData = $request->input('badge_data');
- if (! $badgeData) {
- return response()->json(['success' => false, 'message' => 'No badge data provided.'], 400);
- }
-
- $badgeData = preg_replace('#^data:image/\w+;base64,#i', '', (string) $badgeData);
- $decoded = base64_decode((string) $badgeData, true);
-
- if ($decoded === false) {
- return response()->json(['success' => false, 'message' => 'Invalid base64 data.'], 400);
- }
-
- $info = @getimagesizefromstring($decoded);
- if (
- $info === false ||
- $info['mime'] !== 'image/gif' ||
- $info[0] !== self::BADGE_WIDTH ||
- $info[1] !== self::BADGE_HEIGHT
- ) {
- return response()->json(['success' => false, 'message' => 'Invalid GIF image or incorrect dimensions.'], 400);
- }
-
- if (strlen($decoded) > self::MAX_BADGE_SIZE_BYTES) {
- return response()->json(['success' => false, 'message' => 'Image file too large.'], 400);
- }
-
- $image = @imagecreatefromstring($decoded);
- if ($image === false) {
- return response()->json(['success' => false, 'message' => 'Failed to process image.'], 400);
- }
-
- $badgesPath = $settingsService->getOrDefault('badge_path_filesystem');
- if ($badgesPath === '' || $badgesPath === '0') {
- return response()->json(['success' => false, 'message' => 'Badges path not configured.'], 500);
- }
-
- $filename = $user->id . '_' . time() . '.gif';
- $fullPath = rtrim($badgesPath, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR . $filename;
-
- if (! imagegif($image, $fullPath)) {
- return response()->json(['success' => false, 'message' => 'Failed to save badge file.'], 500);
- }
-
- $baseUrl = $settingsService->getOrDefault('badges_path', '/badges/');
- $badgeUrl = rtrim($baseUrl, '/') . '/' . $filename;
-
- WebsiteDrawBadge::create([
- 'user_id' => $user->id,
- 'badge_path' => $fullPath,
- 'badge_url' => $badgeUrl,
- 'badge_name' => $request->input('badge_name'),
- 'badge_desc' => $request->input('badge_description'),
- ]);
-
- return response()->json(['success' => true, 'badge_path_filesystem' => $fullPath]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Client/FlashController.php b/Updated_Cms/app/Http/Controllers/Client/FlashController.php
deleted file mode 100644
index da15c4e6b8..0000000000
--- a/Updated_Cms/app/Http/Controllers/Client/FlashController.php
+++ /dev/null
@@ -1,21 +0,0 @@
-update([
- 'ip_current' => request()->ip(),
- ]);
-
- return view('client.flash', [
- 'sso' => Auth::user()->ssoTicket(),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Client/NitroController.php b/Updated_Cms/app/Http/Controllers/Client/NitroController.php
deleted file mode 100644
index 8734b01169..0000000000
--- a/Updated_Cms/app/Http/Controllers/Client/NitroController.php
+++ /dev/null
@@ -1,21 +0,0 @@
-update([
- 'ip_current' => request()->ip(),
- ]);
-
- return view('client.nitro', [
- 'sso' => Auth::user()->ssoTicket(),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Community/LeaderboardController.php b/Updated_Cms/app/Http/Controllers/Community/LeaderboardController.php
deleted file mode 100644
index 6cbee37b15..0000000000
--- a/Updated_Cms/app/Http/Controllers/Community/LeaderboardController.php
+++ /dev/null
@@ -1,56 +0,0 @@
-staffIds = $this->staffService->fetchEmployeeIds();
- }
-
- public function __invoke(): View
- {
- $topCredits = User::query()
- ->whereNotIn('id', $this->staffIds)
- ->orderByDesc('credits')
- ->take(9)
- ->get();
-
- $getUserCurrency = fn ($type) => UserCurrency::query()
- ->whereNotIn('user_id', $this->staffIds)
- ->where('type', $type)
- ->orderByDesc('amount')
- ->take(9)
- ->with('user:id,username,look')
- ->get();
-
- return view('leaderboard', [
- 'credits' => $topCredits,
- 'duckets' => $getUserCurrency(0),
- 'diamonds' => $getUserCurrency(5),
- 'mostOnline' => $this->retrieveSettings('online_time'),
- 'respectsReceived' => $this->retrieveSettings('respects_received'),
- 'achievementScores' => $this->retrieveSettings('achievement_score'),
- ]);
- }
-
- private function retrieveSettings($column)
- {
- return UserSetting::select('user_id', $column)
- ->whereNotIn('user_id', $this->staffIds)
- ->orderByDesc($column)
- ->take(9)
- ->with('user:id,username,look')
- ->get();
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Community/PhotosController.php b/Updated_Cms/app/Http/Controllers/Community/PhotosController.php
deleted file mode 100644
index a822ce4b13..0000000000
--- a/Updated_Cms/app/Http/Controllers/Community/PhotosController.php
+++ /dev/null
@@ -1,19 +0,0 @@
- $this->cameraService->fetchPhotos(true),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Community/RoomController.php b/Updated_Cms/app/Http/Controllers/Community/RoomController.php
deleted file mode 100644
index f9b10555b9..0000000000
--- a/Updated_Cms/app/Http/Controllers/Community/RoomController.php
+++ /dev/null
@@ -1,17 +0,0 @@
- $room->load('owner:id,username,look'),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Community/Staff/StaffApplicationsController.php b/Updated_Cms/app/Http/Controllers/Community/Staff/StaffApplicationsController.php
deleted file mode 100644
index b0df3752ab..0000000000
--- a/Updated_Cms/app/Http/Controllers/Community/Staff/StaffApplicationsController.php
+++ /dev/null
@@ -1,47 +0,0 @@
- $this->staffApplicationService->fetchOpenPositions(),
- ]);
- }
-
- public function show(WebsiteOpenPosition $position)
- {
- return view('community.staff-applications-apply', [
- 'position' => $position->load('permission'),
- ]);
- }
-
- public function store(WebsiteOpenPosition $position, StaffApplicationFormRequest $request): RedirectResponse
- {
- if ($this->staffApplicationService->hasUserAppliedForPosition($request->user(), $position->permission->id)) {
- return back()->withErrors([
- 'message' => __('You have already applied for this position.'),
- ]);
- }
-
- if (! $this->staffApplicationService->isPositionOpenForApplication($position)) {
- return back()->withErrors([
- 'message' => __('You cannot apply for this position.'),
- ]);
- }
-
- $this->staffApplicationService->storeApplication($request->user(), $position->permission->id, $request->input('content'));
-
- return to_route('staff-applications.index')->with('success', __('Your application has been submitted!'));
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Community/Staff/StaffController.php b/Updated_Cms/app/Http/Controllers/Community/Staff/StaffController.php
deleted file mode 100644
index 9baf1226a9..0000000000
--- a/Updated_Cms/app/Http/Controllers/Community/Staff/StaffController.php
+++ /dev/null
@@ -1,21 +0,0 @@
-staffService->fetchStaffPositions();
-
- return view('community.staff', [
- 'employees' => $employees,
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Community/Staff/WebsiteTeamsController.php b/Updated_Cms/app/Http/Controllers/Community/Staff/WebsiteTeamsController.php
deleted file mode 100644
index be45eb1664..0000000000
--- a/Updated_Cms/app/Http/Controllers/Community/Staff/WebsiteTeamsController.php
+++ /dev/null
@@ -1,21 +0,0 @@
-teamService->fetchTeams();
-
- return view('community.teams', [
- 'employees' => $employees,
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Community/WebsiteRareValuesController.php b/Updated_Cms/app/Http/Controllers/Community/WebsiteRareValuesController.php
deleted file mode 100644
index 1ab1cc2a2c..0000000000
--- a/Updated_Cms/app/Http/Controllers/Community/WebsiteRareValuesController.php
+++ /dev/null
@@ -1,81 +0,0 @@
- $this->valueCategoriesService->fetchCategoriesByPriority(),
- 'categoriesNav' => $this->valueCategoriesService->fetchAllCategories(),
- ]);
- }
-
- public function category(int $id): View|RedirectResponse
- {
- $category = $this->valueCategoriesService->fetchCategoryById($id);
-
- if (! $category instanceof \App\Models\Community\RareValue\WebsiteRareValueCategory) {
- return back()->withErrors([
- 'message' => __('The entered category does not exist'),
- ]);
- }
-
- return view('rare-values', [
- 'categories' => $category,
- 'categoriesNav' => $this->valueCategoriesService->fetchAllCategories(),
- ]);
- }
-
- public function search(RareSearchFormRequest $request): View|RedirectResponse
- {
- $searchTerm = $request->input('search');
-
- $categories = $this->valueCategoriesService->searchCategories($searchTerm);
-
- if ($categories->isEmpty()) {
- return back()->withErrors([
- 'message' => __('It seems like there were no rares matching your search input'),
- ]);
- }
-
- return view('rare-values', [
- 'categories' => $categories,
- 'categoriesNav' => WebsiteRareValueCategory::has('furniture')->get(),
- ]);
- }
-
- public function value(WebsiteRareValue $value): View
- {
- $items = Item::with(['user:id,username,look'])
- ->where('item_id', $value->item_id)
- ->get();
-
- $itemsPerUser = $items->groupBy('user_id')->map(fn ($group) => [
- 'user' => $group->first()->user,
- 'item_count' => $group->count(),
- ]);
-
- if ((bool) setting('enable_caching')) {
- Cache::remember('allItems_' . $value->id, setting('cache_timer'), fn () => $items);
- }
-
- return view('value', [
- 'value' => $value,
- 'items' => $itemsPerUser,
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Controller.php b/Updated_Cms/app/Http/Controllers/Controller.php
deleted file mode 100644
index 77ec359ab4..0000000000
--- a/Updated_Cms/app/Http/Controllers/Controller.php
+++ /dev/null
@@ -1,12 +0,0 @@
- WebsiteHelpCenterCategory::orderBy('position')->get(),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Help/TicketController.php b/Updated_Cms/app/Http/Controllers/Help/TicketController.php
deleted file mode 100644
index 8ce4e54152..0000000000
--- a/Updated_Cms/app/Http/Controllers/Help/TicketController.php
+++ /dev/null
@@ -1,120 +0,0 @@
-with([
- 'message' => __('You cannot access this page'),
- ]);
- }
-
- return view('help-center.tickets.index', [
- 'tickets' => WebsiteHelpCenterTicket::orderBy('open')->with('user:id,username')->paginate(15),
- ]);
- }
-
- public function create()
- {
- return view('help-center.tickets.create', [
- 'categories' => WebsiteHelpCenterCategory::get(),
- 'openTickets' => WebsiteHelpCenterTicket::where('open', true)->where('user_id', Auth::id())->get(),
- ]);
- }
-
- public function store(WebsiteTicketFormRequest $request)
- {
- Auth::user()->tickets()->create($request->validated());
-
- return back()->with('success', __('Ticket submitted!'));
- }
-
- public function edit(WebsiteHelpCenterTicket $ticket)
- {
- if (! $ticket->canManageTicket()) {
- return back()->with([
- 'message' => __('You cannot manage others tickets.'),
- ]);
- }
-
- $ticket->load([
- 'user:id,username,look',
- 'category',
- 'replies.user:id,username,look',
- ]);
-
- return view('help-center.tickets.edit', [
- 'ticket' => $ticket,
- 'categories' => WebsiteHelpCenterCategory::get(),
- 'openTickets' => WebsiteHelpCenterTicket::where('open', true)->where('id', '!=', $ticket->id)->where('user_id', Auth::id())->get(),
- ]);
- }
-
- public function update(WebsiteHelpCenterTicket $ticket, WebsiteTicketFormRequest $request)
- {
- if (! $ticket->canManageTicket()) {
- return back()->with([
- 'message' => __('You cannot manage others tickets.'),
- ]);
- }
-
- $ticket->update($request->validated());
-
- return to_route('help-center.ticket.show', $ticket)->with('success', __('Ticket updated!'));
- }
-
- public function show(WebsiteHelpCenterTicket $ticket)
- {
- if (! $ticket->canManageTicket()) {
- return back()->with([
- 'message' => __('You cannot view others tickets.'),
- ]);
- }
-
- $ticket->load([
- 'user:id,username,look',
- 'category',
- 'replies.user:id,username,look',
- ]);
-
- return view('help-center.tickets.show', [
- 'ticket' => $ticket,
- 'openTickets' => WebsiteHelpCenterTicket::where('open', true)->where('id', '!=', $ticket->id)->where('user_id', Auth::id())->get(),
- ]);
- }
-
- public function destroy(WebsiteHelpCenterTicket $ticket)
- {
- if (! $ticket->canDeleteTicket()) {
- return back()->with([
- 'message' => __('You cannot delete others tickets.'),
- ]);
- }
-
- $ticket->delete();
-
- return to_route('me.show')->with('success', __('The ticket has been deleted!'));
- }
-
- public function toggleTicketStatus(WebsiteHelpCenterTicket $ticket)
- {
- if (! $ticket->canManageTicket()) {
- return back()->with([
- 'message' => __('You manage others tickets.'),
- ]);
- }
-
- $ticket->open ? $ticket->update(['open' => false]) : $ticket->update(['open' => true]);
-
- return back()->with('success', __('The ticket status has been changed!'));
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Help/TicketReplyController.php b/Updated_Cms/app/Http/Controllers/Help/TicketReplyController.php
deleted file mode 100644
index ffcfab4b39..0000000000
--- a/Updated_Cms/app/Http/Controllers/Help/TicketReplyController.php
+++ /dev/null
@@ -1,47 +0,0 @@
-isOpen()) {
- return back()->with([
- 'message' => __('You cannot reply to the ticket as it has been closed.'),
- ]);
- }
-
- if (! $ticket->canManageTicket()) {
- return back()->with([
- 'message' => __('You cannot reply to others tickets.'),
- ]);
- }
-
- $data = $request->validated();
- $ticket->replies()->create([
- 'user_id' => $request->user()->id,
- 'content' => $data['content'],
- ]);
-
- return back()->with('success', __('The reply has been submitted!'));
- }
-
- public function destroy(WebsiteHelpCenterTicketReply $reply)
- {
- if (! $reply->canDeleteReply()) {
- return back()->with([
- 'message' => __('You do not have permission to delete this reply.'),
- ]);
- }
-
- $reply->delete();
-
- return back()->with('success', __('The reply has been deleted!'));
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Help/WebsiteRulesController.php b/Updated_Cms/app/Http/Controllers/Help/WebsiteRulesController.php
deleted file mode 100644
index ca5ce1f1a6..0000000000
--- a/Updated_Cms/app/Http/Controllers/Help/WebsiteRulesController.php
+++ /dev/null
@@ -1,17 +0,0 @@
- WebsiteRuleCategory::with('rules')->get(),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Miscellaneous/HomeController.php b/Updated_Cms/app/Http/Controllers/Miscellaneous/HomeController.php
deleted file mode 100644
index ec22a340ad..0000000000
--- a/Updated_Cms/app/Http/Controllers/Miscellaneous/HomeController.php
+++ /dev/null
@@ -1,27 +0,0 @@
- WebsiteArticle::latest('id')
- ->take(4)
- ->has('user')
- ->with('user:id,username,look')
- ->get(),
- 'photos' => CameraWeb::latest('id')
- ->take(4)
- ->where('visible', true)
- ->with('user:id,username,look')
- ->get(),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Miscellaneous/InstallationController.php b/Updated_Cms/app/Http/Controllers/Miscellaneous/InstallationController.php
deleted file mode 100644
index 805be24630..0000000000
--- a/Updated_Cms/app/Http/Controllers/Miscellaneous/InstallationController.php
+++ /dev/null
@@ -1,119 +0,0 @@
-validate([
- 'installation_key' => ['required', 'string', 'max:255', new ValidateInstallationKeyRule],
- ]);
-
- WebsiteInstallation::first()->update([
- 'step' => 1,
- 'user_ip' => $request->ip(),
- ]);
-
- return to_route('installation.show-step', 1);
- }
-
- public function showStep($currentStep)
- {
- $settings = $this->getSettingsForStep((int) $currentStep);
-
- return view('installation.step-' . $currentStep, [
- 'settings' => $settings,
- ]);
- }
-
- public function saveStepSettings(Request $request)
- {
- $this->updateSettings($request);
-
- WebsiteInstallation::increment('step');
-
- return to_route('installation.show-step', WebsiteInstallation::first()->step);
- }
-
- public function previousStep()
- {
- WebsiteInstallation::decrement('step');
-
- return to_route('installation.show-step', WebsiteInstallation::first()->step);
- }
-
- public function restartInstallation()
- {
- WebsiteInstallation::first()->update([
- 'step' => 0,
- 'installation_key' => Str::uuid(),
- 'user_ip' => null,
- ]);
-
- WebsiteSetting::where('key', 'theme')->update([
- 'value' => 'atom',
- ]);
-
- return to_route('installation.index');
- }
-
- public function completeInstallation()
- {
- WebsiteInstallation::latest()->first()->update([
- 'completed' => true,
- ]);
-
- if (Cache::has('website_permissions')) {
- Cache::forget('website_permissions');
- }
-
- if (Cache::has('website_settings')) {
- Cache::forget('website_settings');
- }
-
- return to_route('welcome');
- }
-
- private function updateSettings(Request $request)
- {
- foreach ($request->except('_token') as $key => $value) {
- WebsiteSetting::where('key', '=', $key)->update([
- 'value' => $value ?? '',
- ]);
- }
- }
-
- private function getSettingsForStep(int $step)
- {
- $settingsData = array_chunk(WebsiteSetting::all()->pluck('key')->toArray(), ceil(WebsiteSetting::count() / 4));
-
- $settings = match ($step) {
- 1 => $settingsData[0] ?? [],
- 2 => $settingsData[1] ?? [],
- 3 => $settingsData[2] ?? [],
- 4 => $settingsData[3] ?? [],
- 5 => [], // Completion step has no settings
- default => throw new Exception('Step does not exist'),
- };
-
- return WebsiteSetting::query()
- ->whereIn('key', $settings)
- ->select(['key', 'value', 'comment'])
- ->get();
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Miscellaneous/LocaleController.php b/Updated_Cms/app/Http/Controllers/Miscellaneous/LocaleController.php
deleted file mode 100644
index 9cc627594b..0000000000
--- a/Updated_Cms/app/Http/Controllers/Miscellaneous/LocaleController.php
+++ /dev/null
@@ -1,24 +0,0 @@
-exists()) {
- return back()->withErrors(['message' => __('The language selected is not supported')]);
- }
-
- App::setLocale($locale);
- Session::put('locale', $locale);
-
- return back();
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Miscellaneous/LogoGeneratorController.php b/Updated_Cms/app/Http/Controllers/Miscellaneous/LogoGeneratorController.php
deleted file mode 100644
index c6e0cc3151..0000000000
--- a/Updated_Cms/app/Http/Controllers/Miscellaneous/LogoGeneratorController.php
+++ /dev/null
@@ -1,40 +0,0 @@
-with([
- 'message' => __('You do not have permission to do this.'),
- ]);
- }
-
- return view('logo-generator');
- }
-
- public function store(Request $request)
- {
- $request->validate(['logo' => ['required', 'image']]);
- $file = $request->file('logo');
- $filename = $file->getClientOriginalName();
- $path = '/assets/images/generated-logos';
-
- $file->move(public_path($path), $filename);
-
- $setting = WebsiteSetting::where('key', 'cms_logo')->first();
-
- $setting->update([
- 'value' => sprintf('%s/%s', $path, $filename),
- ]);
-
- return response()->json(['success' => true, 'message' => 'Logo updated!']);
-
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Miscellaneous/MaintenanceController.php b/Updated_Cms/app/Http/Controllers/Miscellaneous/MaintenanceController.php
deleted file mode 100644
index a725765ade..0000000000
--- a/Updated_Cms/app/Http/Controllers/Miscellaneous/MaintenanceController.php
+++ /dev/null
@@ -1,17 +0,0 @@
- WebsiteMaintenanceTask::with('user:id,username,look')->simplePaginate(5),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Shop/PaypalController.php b/Updated_Cms/app/Http/Controllers/Shop/PaypalController.php
deleted file mode 100644
index 85ab50ae07..0000000000
--- a/Updated_Cms/app/Http/Controllers/Shop/PaypalController.php
+++ /dev/null
@@ -1,145 +0,0 @@
-provider = new PayPalClient;
- $this->provider->setApiCredentials(config('habbo.paypal'));
- $this->provider->getAccessToken();
- }
-
- public function process(AccountTopupFormRequest $request): Response|RedirectResponse
- {
- $amount = $request->integer('amount');
- $orderData = [
- 'intent' => 'CAPTURE',
- 'application_context' => [
- 'return_url' => route('paypal.successful-transaction'),
- 'cancel_url' => route('paypal.cancelled-transaction'),
- 'brand_name' => setting('hotel_name'),
- 'landing_page' => 'BILLING',
- 'shipping_preference' => 'NO_SHIPPING',
- 'user_action' => 'CONTINUE',
- ],
- 'purchase_units' => [
- 0 => [
- 'amount' => [
- 'currency_code' => config('habbo.paypal.currency'),
- 'value' => (string) $amount,
- ],
- ],
- ],
- ];
-
- $response = $this->provider->createOrder($orderData);
-
- if (isset($response['id']) === false) {
- Log::error('Error creating order', ['response' => $response]);
-
- return to_route('shop.index')->withErrors(
- ['message' => $response['message'] ?? __('Something went wrong')],
- );
- }
-
- foreach ($response['links'] as $links) {
- if ($links['rel'] === 'approve') {
- $request->user()->transactions()->create([
- 'transaction_id' => $response['id'],
- 'amount' => 0,
- ]);
-
- return redirect()->away($links['href']);
- }
- }
-
- return to_route('shop.index')->withErrors(
- ['message' => $response['message'] ?? __('Something went wrong')],
- );
- }
-
- public function successful(Request $request): Response
- {
- $request->validate([
- 'token' => ['required'],
- ]);
-
- $user = $request->user();
-
- $transaction = $user->transactions()->where('transaction_id', $request['token'])->first();
- if ($transaction === null) {
- return to_route('shop.index')->withErrors(['message' => __('Something went wrong, please try again later')]);
- }
-
- $response = $this->provider->capturePaymentOrder($request['token']);
- $paymentDetails = $response['purchase_units'][0]['payments']['captures'][0];
-
- if (! isset($response['status'], $paymentDetails)) {
- Log::error('Invalid response from PayPal', ['response' => $response]);
-
- return to_route('shop.index')->withErrors(['message' => __('Something went wrong, please try again later')]);
- }
-
- if (($response['status'] ?? null) === null) {
- $details = $response['error']['details'][0];
- $transaction->update([
- 'status' => $response['name'],
- 'description' => sprintf('%s - %s', $details['issue'], $details['description']),
- 'amount' => 0,
- ]);
-
- return to_route('shop.index')->withErrors(['message' => __('Something went wrong, please check your paypal account to make sure nothing was deducted and try again')]);
- }
-
- $paymentDetails = $response['purchase_units'][0]['payments']['captures'][0];
-
- $transaction->update([
- 'status' => $paymentDetails['status'],
- 'amount' => $paymentDetails['amount']['value'],
- 'currency' => $paymentDetails['amount']['currency_code'],
- ]);
-
- if ($response['status'] !== self::STATUS_COMPLETED) {
- return to_route('shop.index')->withErrors(
- ['message' => $response['message'] ?? __('Something went wrong')],
- );
- }
-
- $user->increment('website_balance', $paymentDetails['amount']['value']);
-
- return to_route('shop.index')->with('success', __('Transaction successful'));
- }
-
- public function cancelled(Request $request): Response
- {
- $request->validate([
- 'token' => ['required'],
- ]);
-
- $transaction = $request->user()->transactions()->where('transaction_id', $request['token'])->first();
- if ($transaction !== null) {
- $transaction->update([
- 'status' => self::STATUS_CANCELLED,
- 'description' => 'The user cancelled the transaction',
- ]);
- }
-
- return to_route('shop.index')->withErrors(
- ['message' => __('You have canceled the transaction')],
- );
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Shop/ShopController.php b/Updated_Cms/app/Http/Controllers/Shop/ShopController.php
deleted file mode 100644
index 9d0c518ec5..0000000000
--- a/Updated_Cms/app/Http/Controllers/Shop/ShopController.php
+++ /dev/null
@@ -1,142 +0,0 @@
-exists) {
- $packages = $category->articles()->orderBy('position');
- }
-
- return view('shop.shop', [
- 'articles' => $packages->with(['rank:id,rank_name', 'features'])->get(),
- 'categories' => WebsiteShopCategory::whereHas('articles')->get(),
- ]);
- }
-
- private function giveBadges(User $user, string $badges)
- {
- $badgeList = explode(';', $badges);
- $ownedBadges = $user->badges()->pluck('badge_code')->toArray();
-
- foreach ($badgeList as $badge) {
- if (in_array($badge, $ownedBadges)) {
- continue;
- }
-
- if ($this->rconService->isConnected) {
- $this->rconService->giveBadge($user, $badge);
-
- continue;
- }
-
- $user->badges()->updateOrCreate([
- 'user_id' => $user->id,
- 'badge_code' => $badge,
- ]);
- }
- }
-
- public function purchase(WebsiteShopArticle $package, Request $request, SendCurrency $sendCurrency): Response
- {
- $user = Auth::user();
-
- if ($request->has('receiver')) {
- if (! $package->is_giftable) {
- return to_route('shop.index')->withErrors(
- ['message' => __('This package is not giftable')],
- );
- }
-
- $user = User::where('username', $request->input('receiver'))->first();
-
- if (! $user) {
- return to_route('shop.index')->withErrors(
- ['message' => __('Recipient not found')],
- );
- }
-
- }
-
- if ($package->give_rank && $user->rank >= $package->give_rank) {
- $message = __('You are already this or a higher rank');
-
- if ($user->username !== Auth::user()->username) {
- $message = __('The recipient is already this or a higher rank');
- }
-
- return to_route('shop.index')->withErrors(
- ['message' => $message],
- );
- }
-
- if (! $this->rconService->isConnected && $user->online === '1') {
- return to_route('shop.index')->withErrors(
- ['message' => __('Please logout before purchasing a package')],
- );
- }
-
- if (Auth::user()->website_balance < $package->price()) {
- return to_route('shop.index')->withErrors(
- ['message' => __('You need to top-up your account with another $:amount to purchase this package', ['amount' => ($package->price() - Auth::user()->website_balance)])],
- );
- }
-
- Auth::user()?->decrement('website_balance', $package->price());
-
- $sendCurrency->execute($user, 'credits', $package->credits);
- $sendCurrency->execute($user, 'duckets', $package->duckets);
- $sendCurrency->execute($user, 'diamonds', $package->diamonds);
-
- if ($package->give_rank) {
- if ($this->rconService->isConnected) {
- $this->rconService->setRank($user, $package->give_rank);
- $this->rconService->disconnectUser($user);
- } else {
- $user->update([
- 'rank' => $package->give_rank,
- ]);
- }
- }
-
- if ($package->badges) {
- $this->giveBadges($user, $package->badges);
- }
-
- if ($package->furniture) {
- $this->handleFurniture(json_decode($package->furniture, true));
- }
-
- $message = __('You have successfully purchased the package :name', ['name' => $package->name]);
-
- if ($user->username !== Auth::user()->username) {
- $message = __('You have successfully purchased the package :name for :username', ['name' => $package->name, 'username' => $user->username]);
- }
-
- return to_route('shop.index')->with('success', $message);
- }
-
- public function handleFurniture(array $furniture)
- {
- $sendFurniture = app(SendFurniture::class);
-
- $sendFurniture->execute(Auth::user(), $furniture);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/Shop/ShopVoucherController.php b/Updated_Cms/app/Http/Controllers/Shop/ShopVoucherController.php
deleted file mode 100644
index d5a9f17043..0000000000
--- a/Updated_Cms/app/Http/Controllers/Shop/ShopVoucherController.php
+++ /dev/null
@@ -1,44 +0,0 @@
-user();
- $voucher = WebsiteShopVoucher::where('code', $request->string('code'))->first();
-
- if (is_null($voucher) || ($voucher->expires_at && $voucher->expires_at->lte(now()))) {
- return back()->withErrors([
- 'message' => __('No active voucher with the given code was found'),
- ]);
- }
-
- if ($user->usedShopVouchers()->where('voucher_id', $voucher->id)->exists()) {
- return back()->withErrors([
- 'message' => __('You can only use each shop voucher once'),
- ]);
- }
-
- $user->usedShopVouchers()->create([
- 'voucher_id' => $voucher->id,
- ]);
-
- $user->increment('website_balance', $voucher->amount);
-
- $voucher->increment('use_count');
-
- if ($voucher->max_uses && $voucher->use_count >= $voucher->max_uses) {
- $voucher->update([
- 'expires_at' => now(),
- ]);
- }
-
- return back()->with('success', __('Your balance has been increased by $:amount', ['amount' => $voucher->amount]));
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/User/AccountSettingsController.php b/Updated_Cms/app/Http/Controllers/User/AccountSettingsController.php
deleted file mode 100644
index 05a035fc1b..0000000000
--- a/Updated_Cms/app/Http/Controllers/User/AccountSettingsController.php
+++ /dev/null
@@ -1,69 +0,0 @@
- Auth::user()->load('settings:allow_name_change'),
- ]);
- }
-
- public function sessionLogs(Request $request): View
- {
- $sessions = $this->sessionService->fetchSessionLogs($request);
-
- return view('user.settings.session-logs', [
- 'logs' => $sessions,
- ]);
- }
-
- public function update(AccountSettingsFormRequest $request): RedirectResponse
- {
- $user = Auth::user();
-
- if ($user === null) {
- return back()->withErrors('User not found');
- }
-
- // $allowedNameChange = $user->settings?->allow_name_change && $user->username !== $request->input('username');
-
- if (! $this->rconService->isConnected() && Auth::user()->online === '1') {
- return back()->withErrors('You must be offline to change your account settings');
- }
-
- /** if ($allowedNameChange) {
- $this->rconService->disconnectUser($user);
- $this->userService->updateField($user, 'username', $request->input('username'));
- } **/
- if ($user->mail !== $request->input('mail')) {
- $this->userService->updateField($user, 'mail', $request->input('mail'));
- }
-
- if ($user->motto !== $request->input('motto')) {
- $this->rconService->setMotto($user, $request->input('motto'));
- $this->userService->updateField($user, 'motto', $request->input('motto'));
- }
-
- return to_route('settings.account.show')->with('success', __('Your account settings has been updated'));
- }
-
- public function twoFactor(): View
- {
- return view('user.settings.two-factor');
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/User/BannedController.php b/Updated_Cms/app/Http/Controllers/User/BannedController.php
deleted file mode 100644
index cbafb8a31b..0000000000
--- a/Updated_Cms/app/Http/Controllers/User/BannedController.php
+++ /dev/null
@@ -1,23 +0,0 @@
-ip())
- ->where('ban_expire', '>', time())
- ->orderByDesc('id')
- ->first();
-
- return view('banned', [
- 'ban' => $ipBan ?? Auth::user()->ban,
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/User/ForgotPasswordController.php b/Updated_Cms/app/Http/Controllers/User/ForgotPasswordController.php
deleted file mode 100644
index 098f900eb3..0000000000
--- a/Updated_Cms/app/Http/Controllers/User/ForgotPasswordController.php
+++ /dev/null
@@ -1,78 +0,0 @@
-validate([
- 'mail' => ['required', 'email'],
- ]);
-
- // Do not tell the user that this email does not exist to prevent possible attacks
- if (User::where('mail', $request->mail)->exists()) {
- $token = Str::uuid();
- PasswordResetToken::create([
- 'email' => $request->mail,
- 'token' => $token,
- ]);
-
- Mail::send('email.forgetPassword', ['token' => $token], function ($message) use ($request): void {
- $message->to($request->mail);
- $message->subject('Reset Password');
- });
- }
-
- return back()->with('success', __('We have e-mailed your password reset link!'));
- }
-
- public function showResetPassword(Request $request, string $token)
- {
- $prt = PasswordResetToken::select('token', 'created_at')->where('token', $token)->first();
- if ($prt === null) {
- return to_route('forgot.password.get')->withErrors('message', __('This token has expired!'));
- }
- $tokenExpiration = \Illuminate\Support\Facades\Date::now()->subMinutes(config('habbo.password_reset_token_time'));
- if ($prt->created_at->gte($tokenExpiration)) { // gte = greater than or equals
- $prt->delete();
-
- return to_route('forgot.password.get')->withErrors('message', __('This token has expired!'));
- }
-
- return view('auth.passwords.reset', [
- 'token' => $token,
- ]);
- }
-
- public function submitResetPassword(Request $request, string $token)
- {
- $request->validate([
- 'password' => ['required', 'min:8', 'confirmed'],
- 'password_confirmation' => ['required'],
- ]);
-
- $prt = PasswordResetToken::select('email', 'token')->where('token', $token)->first();
- if ($prt === null) {
- return to_route('forgot.password.get')->withErrors('message', __('This token has expired!'));
- }
-
- $prt->user->changePassword($request->password);
- $prt->delete();
-
- return to_route('login')->with('success', __('Your password has been successfully reset!'));
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/User/GuestbookController.php b/Updated_Cms/app/Http/Controllers/User/GuestbookController.php
deleted file mode 100644
index 0ba51d27a2..0000000000
--- a/Updated_Cms/app/Http/Controllers/User/GuestbookController.php
+++ /dev/null
@@ -1,54 +0,0 @@
-validateGuestbookPost($user, $request);
-
- $user->profileGuestbook()->create([
- 'user_id' => Auth::id(),
- 'message' => $request->input('message'),
- ]);
-
- return back()->with('success', __('Your message has been posted.'));
- }
-
- public function destroy(User $user, WebsiteUserGuestbook $guestbook)
- {
- if ($guestbook->user_id !== Auth::id() && $guestbook->profile_id !== $user->id && Auth::user()->rank < (int) setting('min_staff_rank')) {
- return back()->withErrors([
- 'message' => __('Do do not have permission to delete this message'),
- ]);
- }
-
- $guestbook->delete();
-
- return back()->with('success', __('Your message has been deleted.'));
- }
-
- private function validateGuestbookPost(User $user, GuestbookFormRequest $request)
- {
- if ($user->id === $request->user()->id) {
- return $this->redirectWithError(__('You cannot post a message on your own profile.'));
- }
-
- $maxAllowedPostCount = in_array(setting('max_guestbook_posts_per_profile'), ['', '0'], true) ? 3 : (int) setting('max_guestbook_posts_per_profile');
- if ($user->profileGuestbook()->where('user_id', $request->user()->id)->count() >= $maxAllowedPostCount) {
- return $this->redirectWithError(__('You have already posted :count messages on this profile.', ['count' => $maxAllowedPostCount]));
- }
- }
-
- private function redirectWithError($message)
- {
- return back()->withErrors(['message' => $message]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/User/MeController.php b/Updated_Cms/app/Http/Controllers/User/MeController.php
deleted file mode 100644
index d2a2bd9522..0000000000
--- a/Updated_Cms/app/Http/Controllers/User/MeController.php
+++ /dev/null
@@ -1,21 +0,0 @@
- Auth::user()?->getOnlineFriends(),
- 'user' => Auth::user()?->load('permission:id,rank_name'),
- 'articles' => WebsiteArticle::whereHas('user')->with('user:id,username,look')->latest()->take(5)->get(),
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/User/PasswordSettingsController.php b/Updated_Cms/app/Http/Controllers/User/PasswordSettingsController.php
deleted file mode 100644
index 959f71f9b7..0000000000
--- a/Updated_Cms/app/Http/Controllers/User/PasswordSettingsController.php
+++ /dev/null
@@ -1,27 +0,0 @@
-update([
- 'password' => Hash::make($request->input('password')),
- ]);
-
- return to_route('settings.password.show')->with('success', __('Your password has been changed!'));
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/User/ProfileController.php b/Updated_Cms/app/Http/Controllers/User/ProfileController.php
deleted file mode 100644
index eb96489f5b..0000000000
--- a/Updated_Cms/app/Http/Controllers/User/ProfileController.php
+++ /dev/null
@@ -1,65 +0,0 @@
-loadUserRelations($user);
-
- $friends = $this->getUserFriends($user->id);
- $groups = $this->getUserGroups($user->id);
-
- return view('user.profile', [
- 'user' => $user,
- 'friends' => $friends,
- 'groups' => $groups,
- 'guestbook' => $user->profileGuestbook()->with('user')->latest()->limit(5)->get(),
- 'photos' => $user->photos()->limit(3)->get(),
- ]);
- }
-
- private function loadUserRelations(User $user): User
- {
- return $user->load([
- 'badges' => function ($badges): void {
- $badges->where('slot_id', '>', '0')
- ->orderBy('slot_id')
- ->take(5);
- },
- 'rooms' => function ($rooms): void {
- $rooms->select('id', 'owner_id', 'name', 'users')
- ->orderByDesc('users')
- ->orderBy('id');
- },
- ]);
- }
-
- private function getUserFriends(int $userId)
- {
- return MessengerFriendship::select('user_two_id')
- ->where('user_one_id', '=', $userId)
- ->whereHas('user')
- ->with('user:id,username,look')
- ->inRandomOrder()
- ->take(12)
- ->get();
- }
-
- private function getUserGroups(int $userId)
- {
- return GuildMember::query()
- ->select(['guilds_members.id', 'guilds_members.guild_id', 'guilds_members.user_id', 'guilds.name', 'guilds.badge'])
- ->where('guilds_members.user_id', '=', $userId)
- ->join('guilds', 'guilds_members.guild_id', '=', 'guilds.id')
- ->inRandomOrder()
- ->take(6)
- ->get();
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/User/ReferralController.php b/Updated_Cms/app/Http/Controllers/User/ReferralController.php
deleted file mode 100644
index bb6d7ae7fd..0000000000
--- a/Updated_Cms/app/Http/Controllers/User/ReferralController.php
+++ /dev/null
@@ -1,33 +0,0 @@
-referrals || $user->referrals->referrals_total < setting('referrals_needed')) {
- return back()->withErrors([
- 'message' => __('You do not have enough referrals to claim your reward'),
- ]);
- }
-
- // Decrease the total amount of referrals with the amount needed to claim reward
- $user->referrals->decrement('referrals_total', setting('referrals_needed'));
-
- $rcon->giveDiamonds($user, setting('referral_reward_amount'));
-
- // Log the claim
- $user->claimedReferralLog()->create([
- 'ip_address' => request()->ip(),
- ]);
-
- return back()->with('success', __('Woah! You have successfully claimed your reward - Keep up the good work!'));
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/User/TwoFactorAuthenticationController.php b/Updated_Cms/app/Http/Controllers/User/TwoFactorAuthenticationController.php
deleted file mode 100644
index 05c571e3cf..0000000000
--- a/Updated_Cms/app/Http/Controllers/User/TwoFactorAuthenticationController.php
+++ /dev/null
@@ -1,42 +0,0 @@
-user());
-
- return to_route('settings.two-factor')->with('success', __('Two-factor authentication has been enabled. Please scan the QR code to continue.'));
- }
-
- public function verify(Request $request): RedirectResponse
- {
- $confirmed = $request->user()->confirmTwoFactorAuthentication($request->input('code'));
- if (! $confirmed) {
- return back()->withErrors('Invalid Two Factor Authentication code');
- }
-
- return to_route('settings.two-factor')->with('success', __('Two-factor authentication has been confirmed.'));
- }
-
- public function destroy(Request $request, DisableTwoFactorAuthentication $disable): RedirectResponse
- {
- $disable($request->user());
-
- return to_route('settings.two-factor')->with('success', __('Two-factor authentication has been disabled.'));
- }
-}
diff --git a/Updated_Cms/app/Http/Controllers/User/UserReferralController.php b/Updated_Cms/app/Http/Controllers/User/UserReferralController.php
deleted file mode 100644
index e0a4dcfd30..0000000000
--- a/Updated_Cms/app/Http/Controllers/User/UserReferralController.php
+++ /dev/null
@@ -1,18 +0,0 @@
-firstOrFail();
-
- return view('auth.register', [
- 'referral_code' => $referralCode,
- ]);
- }
-}
diff --git a/Updated_Cms/app/Http/Kernel.php b/Updated_Cms/app/Http/Kernel.php
deleted file mode 100644
index a5cd56bd30..0000000000
--- a/Updated_Cms/app/Http/Kernel.php
+++ /dev/null
@@ -1,110 +0,0 @@
-
- */
- protected $middleware = [
- // \App\Http\Middleware\TrustHosts::class,
- RealClientIpMiddleware::class,
- TrustProxies::class,
- HandleCors::class,
- PreventRequestsDuringMaintenance::class,
- ValidatePostSize::class,
- TrimStrings::class,
- ConvertEmptyStringsToNull::class,
- SetThemeMiddleware::class,
- InstallationMiddleware::class,
- ];
-
- /**
- * The application's route middleware groups.
- *
- * @var array>
- */
- protected $middlewareGroups = [
- 'web' => [
- EncryptCookies::class,
- AddQueuedCookiesToResponse::class,
- StartSession::class,
- ShareErrorsFromSession::class,
- VerifyCsrfToken::class,
- SubstituteBindings::class,
- LocalizationMiddleware::class,
- ],
-
- 'api' => [
- EnsureFrontendRequestsAreStateful::class,
- ThrottleRequests::class . ':api',
- SubstituteBindings::class,
- ],
- ];
-
- /**
- * The application's middleware aliases.
- *
- * Aliases may be used to conveniently assign middleware to routes and groups.
- *
- * @var array
- */
- protected $middlewareAliases = [
- 'auth' => Authenticate::class,
- 'auth.basic' => AuthenticateWithBasicAuth::class,
- 'auth.session' => AuthenticateSession::class,
- 'cache.headers' => SetCacheHeaders::class,
- 'can' => Authorize::class,
- 'guest' => RedirectIfAuthenticated::class,
- 'password.confirm' => RequirePassword::class,
- 'signed' => ValidateSignature::class,
- 'throttle' => ThrottleRequests::class,
- 'verified' => EnsureEmailIsVerified::class,
- 'maintenance' => MaintenanceMiddleware::class,
- 'check.ban' => BannedMiddleware::class,
- 'findretros.redirect' => FindRetrosMiddleware::class,
- 'vpn.checker' => VPNCheckerMiddleware::class,
- 'log.viewer' => LogViewerMiddleware::class,
- 'force.staff.2fa' => ForceStaffTwoFactorMiddleware::class,
- ];
-}
diff --git a/Updated_Cms/app/Http/Middleware/Authenticate.php b/Updated_Cms/app/Http/Middleware/Authenticate.php
deleted file mode 100644
index 28d3ce1d4d..0000000000
--- a/Updated_Cms/app/Http/Middleware/Authenticate.php
+++ /dev/null
@@ -1,18 +0,0 @@
-expectsJson() ? null : route('login');
- }
-}
diff --git a/Updated_Cms/app/Http/Middleware/BannedMiddleware.php b/Updated_Cms/app/Http/Middleware/BannedMiddleware.php
deleted file mode 100644
index 6142dbe8eb..0000000000
--- a/Updated_Cms/app/Http/Middleware/BannedMiddleware.php
+++ /dev/null
@@ -1,48 +0,0 @@
-ip())
- ->where('ban_expire', '>', time())
- ->whereIn('type', ['ip', 'machine'])
- ->orderByDesc('id')
- ->exists();
-
- if ($request->is('logout')) {
- return $next($request);
- }
-
- if (! $authenticated && ! $ipBan && $request->is('banned')) {
- return to_route('login');
- }
-
- if ($ipBan && ! $request->is('banned')) {
- return to_route('banned.show');
- }
-
- if ($authenticated) {
- $accountBan = $request->user()?->ban;
-
- if ($accountBan && ! $request->is('banned')) {
- return to_route('banned.show');
- }
-
- if (! $ipBan && ! $accountBan && $request->is('banned')) {
- return to_route('me.show');
- }
- }
-
- return $next($request);
- }
-}
diff --git a/Updated_Cms/app/Http/Middleware/EncryptCookies.php b/Updated_Cms/app/Http/Middleware/EncryptCookies.php
deleted file mode 100644
index 867695bdcf..0000000000
--- a/Updated_Cms/app/Http/Middleware/EncryptCookies.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- */
- protected $except = [
- //
- ];
-}
diff --git a/Updated_Cms/app/Http/Middleware/FindRetrosMiddleware.php b/Updated_Cms/app/Http/Middleware/FindRetrosMiddleware.php
deleted file mode 100644
index 36dd4e9213..0000000000
--- a/Updated_Cms/app/Http/Middleware/FindRetrosMiddleware.php
+++ /dev/null
@@ -1,23 +0,0 @@
-checkHasVoted()) {
- return redirect($findRetrosService->getRedirectUri());
- }
-
- return $next($request);
- }
-}
diff --git a/Updated_Cms/app/Http/Middleware/ForceStaffTwoFactorMiddleware.php b/Updated_Cms/app/Http/Middleware/ForceStaffTwoFactorMiddleware.php
deleted file mode 100644
index d1451ac53d..0000000000
--- a/Updated_Cms/app/Http/Middleware/ForceStaffTwoFactorMiddleware.php
+++ /dev/null
@@ -1,30 +0,0 @@
-user();
- $urls = [
- 'user/settings/two-factor',
- 'user/settings/2fa-verify',
- ];
-
- if (($user->rank >= setting('min_staff_rank') && ! $user->two_factor_confirmed) && ! in_array(request()->path(), $urls)) {
- return to_route('settings.two-factor');
- }
-
- return $next($request);
- }
-}
diff --git a/Updated_Cms/app/Http/Middleware/InstallationMiddleware.php b/Updated_Cms/app/Http/Middleware/InstallationMiddleware.php
deleted file mode 100644
index 3a9b581af1..0000000000
--- a/Updated_Cms/app/Http/Middleware/InstallationMiddleware.php
+++ /dev/null
@@ -1,159 +0,0 @@
-ensureInstallationTableExists();
-
- $installation = $this->getInstallation();
-
- if ($installation && $installation->completed && $request->is('installation*')) {
- Cache::rememberForever('app_installed', fn () => true);
-
- return to_route('welcome');
- }
-
- $isInstallationStepHandled = $this->handleInstallationSteps($request, $installation);
-
- if (! $isInstallationStepHandled) {
- return $this->redirectIfNotCompleted($installation);
- }
-
- return $next($request);
- }
-
- private function ensureInstallationTableExists()
- {
- if (! Schema::hasTable('website_installation')) {
- Artisan::call('migrate', ['--path' => 'database/migrations/' . findMigration('website_installation')]);
-
- if (! Schema::hasTable('website_installation')) {
- throw new MigrationFailedException('website_installation');
- }
- }
-
- if (! Schema::hasTable('sessions')) {
- Artisan::call('migrate', ['--path' => 'database/migrations/' . findMigration('sessions')]);
- }
- }
-
- private function getInstallation()
- {
- try {
- $installation = WebsiteInstallation::query()->first();
-
- if (! $installation) {
- return WebsiteInstallation::create([
- 'step' => 0,
- 'completed' => false,
- 'installation_key' => Str::uuid(),
- 'user_ip' => request()?->ip(),
- ]);
- }
-
- return $installation;
- } catch (Exception $e) {
- Log::error('Error fetching or creating WebsiteInstallation: ' . $e->getMessage());
- abort(500, 'An error occurred while setting up the installation.');
- }
- }
-
- private function handleInstallationSteps(Request $request, WebsiteInstallation $installation)
- {
- if ($installation->completed) {
- return true;
- }
-
- if ($this->isWelcomeStep($request, $installation)) {
- return true;
- }
-
- if ($this->isRedirectToWelcome($request, $installation)) {
- return false;
- }
-
- if ($this->isInvalidAccess($request, $installation)) {
- abort(403);
- }
-
- if ($this->isInvalidStep($request)) {
- return false;
- }
-
- return ! $this->isMismatchedStep($request, $installation);
- }
-
- private function isWelcomeStep(Request $request, WebsiteInstallation $installation)
- {
- return $installation->step === 0 && $request->getRequestUri() === '/installation';
- }
-
- private function isRedirectToWelcome(Request $request, WebsiteInstallation $installation)
- {
- return $installation->step === 0 && $request->getRequestUri() !== '/installation' && $request->method() !== 'POST';
- }
-
- private function isInvalidAccess(Request $request, WebsiteInstallation $installation)
- {
- return $installation->step > 0 && $request->ip() !== $installation->user_ip;
- }
-
- private function isInvalidStep(Request $request)
- {
- return ! $this->isValidStep($request) && $this->isNonPostRequest($request);
- }
-
- private function isMismatchedStep(Request $request, WebsiteInstallation $installation)
- {
- return $this->getCurrentStep($request) !== $installation->step && $this->isNonPostRequest($request);
- }
-
- private function isValidStep(Request $request)
- {
- $step = $this->getCurrentStep($request);
-
- return filter_var($step, FILTER_VALIDATE_INT) !== false;
- }
-
- private function isNonPostRequest(Request $request)
- {
- return $request->method() !== 'POST' || $request->is('restart-installation');
- }
-
- private function getCurrentStep(Request $request)
- {
- return (int) Str::after($request->path(), 'step/');
- }
-
- private function redirectToStep(int $step)
- {
- return to_route('installation.show-step', $step);
- }
-
- protected function redirectIfNotCompleted(WebsiteInstallation $installation)
- {
-
- if ($installation->step === 0) {
- return to_route('installation.index');
- }
-
- return $this->redirectToStep($installation->step ?: 1);
- }
-}
diff --git a/Updated_Cms/app/Http/Middleware/LocalizationMiddleware.php b/Updated_Cms/app/Http/Middleware/LocalizationMiddleware.php
deleted file mode 100644
index 66e89a30ac..0000000000
--- a/Updated_Cms/app/Http/Middleware/LocalizationMiddleware.php
+++ /dev/null
@@ -1,50 +0,0 @@
-doesntExist()) {
- $defaultCountry = config('habbo.site.default_language');
-
- App::setLocale($defaultCountry);
- Session::put('locale', $defaultCountry);
-
- return $next($request);
- }
-
- // Zet de gedetecteerde taal
- App::setLocale($countryCode);
- Session::put('locale', $countryCode);
-
- return $next($request);
- }
-}
\ No newline at end of file
diff --git a/Updated_Cms/app/Http/Middleware/LogViewerMiddleware.php b/Updated_Cms/app/Http/Middleware/LogViewerMiddleware.php
deleted file mode 100644
index 0b51abc62d..0000000000
--- a/Updated_Cms/app/Http/Middleware/LogViewerMiddleware.php
+++ /dev/null
@@ -1,24 +0,0 @@
-method() === 'POST';
- $isMaintenanceRequest = $request->is('maintenance');
- $maintenanceEnabled = setting('maintenance_enabled');
-
- $fortify2faRoutes = [
- 'two-factor.login',
- 'two-factor.confirm',
- ];
-
- if ($maintenanceEnabled && $isPostRequest && ! Auth::check()) {
- return $next($request);
- }
-
- $isFortify2faRoute = in_array($request->route()?->getName(), $fortify2faRoutes, true);
- if ($maintenanceEnabled && $isFortify2faRoute) {
- return $next($request);
- }
-
- if (Auth::check() && Auth::user()->rank >= setting('min_maintenance_login_rank')) {
- if ($isMaintenanceRequest) {
- return to_route('me.show');
- }
-
- return $next($request);
- }
-
- if (Auth::check() && Auth::user()->rank >= setting('min_maintenance_login_rank') && $isMaintenanceRequest) {
- return to_route('me.show');
- }
-
- if ($maintenanceEnabled && ! $isMaintenanceRequest && ! $isPostRequest) {
- return to_route('maintenance.show');
- }
-
- if (! $maintenanceEnabled && $isMaintenanceRequest && ! $isPostRequest) {
- return to_route('welcome');
- }
-
- if ($maintenanceEnabled && ! $isMaintenanceRequest && Auth::check() && Auth::user()->rank < setting('min_maintenance_login_rank')) {
- return to_route('maintenance.show');
- }
-
- return $next($request);
- }
-}
diff --git a/Updated_Cms/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/Updated_Cms/app/Http/Middleware/PreventRequestsDuringMaintenance.php
deleted file mode 100644
index 74cbd9a9ea..0000000000
--- a/Updated_Cms/app/Http/Middleware/PreventRequestsDuringMaintenance.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- */
- protected $except = [
- //
- ];
-}
diff --git a/Updated_Cms/app/Http/Middleware/RealClientIpMiddleware.php b/Updated_Cms/app/Http/Middleware/RealClientIpMiddleware.php
deleted file mode 100644
index 0b89f6eb80..0000000000
--- a/Updated_Cms/app/Http/Middleware/RealClientIpMiddleware.php
+++ /dev/null
@@ -1,47 +0,0 @@
-server->set('REMOTE_ADDR', $ip);
- break;
- }
- }
- }
-
- // Special handling for REMOTE_ADDR with multiple IPs
- $remoteAddr = \Illuminate\Support\Facades\Request::server('REMOTE_ADDR') ?? '';
- if (! empty($remoteAddr) && str_contains((string) $remoteAddr, ',')) {
- [$ip] = explode(',', (string) $remoteAddr);
- $ip = trim($ip);
- if (filter_var($ip, FILTER_VALIDATE_IP)) {
- $request->server->set('REMOTE_ADDR', $ip);
- }
- }
-
- return $next($request);
- }
-}
diff --git a/Updated_Cms/app/Http/Middleware/RedirectIfAuthenticated.php b/Updated_Cms/app/Http/Middleware/RedirectIfAuthenticated.php
deleted file mode 100644
index 3f9ba02ff7..0000000000
--- a/Updated_Cms/app/Http/Middleware/RedirectIfAuthenticated.php
+++ /dev/null
@@ -1,35 +0,0 @@
-check()) {
- if ($request->expectsJson()) {
- return response()->json();
- }
-
- return redirect(RouteServiceProvider::HOME);
- }
- }
-
- return $next($request);
- }
-}
diff --git a/Updated_Cms/app/Http/Middleware/SetThemeMiddleware.php b/Updated_Cms/app/Http/Middleware/SetThemeMiddleware.php
deleted file mode 100644
index e28a6f78f3..0000000000
--- a/Updated_Cms/app/Http/Middleware/SetThemeMiddleware.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- */
- protected $except = [
- 'current_password',
- 'password',
- 'password_confirmation',
- ];
-}
diff --git a/Updated_Cms/app/Http/Middleware/TrustHosts.php b/Updated_Cms/app/Http/Middleware/TrustHosts.php
deleted file mode 100644
index 398aaca033..0000000000
--- a/Updated_Cms/app/Http/Middleware/TrustHosts.php
+++ /dev/null
@@ -1,21 +0,0 @@
-
- */
- #[\Override]
- public function hosts(): array
- {
- return [
- $this->allSubdomainsOfApplicationUrl(),
- ];
- }
-}
diff --git a/Updated_Cms/app/Http/Middleware/TrustProxies.php b/Updated_Cms/app/Http/Middleware/TrustProxies.php
deleted file mode 100644
index 3391630ecc..0000000000
--- a/Updated_Cms/app/Http/Middleware/TrustProxies.php
+++ /dev/null
@@ -1,28 +0,0 @@
-|string|null
- */
- protected $proxies;
-
- /**
- * The headers that should be used to detect proxies.
- *
- * @var int
- */
- protected $headers =
- Request::HEADER_X_FORWARDED_FOR |
- Request::HEADER_X_FORWARDED_HOST |
- Request::HEADER_X_FORWARDED_PORT |
- Request::HEADER_X_FORWARDED_PROTO |
- Request::HEADER_X_FORWARDED_AWS_ELB;
-}
diff --git a/Updated_Cms/app/Http/Middleware/VPNCheckerMiddleware.php b/Updated_Cms/app/Http/Middleware/VPNCheckerMiddleware.php
deleted file mode 100644
index 116d048cf3..0000000000
--- a/Updated_Cms/app/Http/Middleware/VPNCheckerMiddleware.php
+++ /dev/null
@@ -1,81 +0,0 @@
-ip())->exists()) {
- return $next($request);
- }
-
- // Restrict user if IP is blacklisted
- if (WebsiteIpBlacklist::where('ip_address', $request->ip())->exists()) {
- return to_route('me.show')->withErrors([
- 'message' => __('Your IP have been restricted - If you think this is a mistake, you can contact us on our Discord.'),
- ]);
- }
-
- // Instantiate the necessary things to look up the visitor IP
- $ipService = new IpLookupService(setting('ipdata_api_key'));
- $userIp = $request->ip();
- $apiResponse = $ipService->ipLookup($userIp);
-
- $asn = $apiResponse['asn']['asn'] ?? '';
- $asnWhitelisted = WebsiteIpWhitelist::where('asn', $asn)
- ->where('whitelist_asn', '=', '1')
- ->exists();
-
- if ($asnWhitelisted) {
- return $next($request);
- }
-
- // Fetch all blacklisted ASNs
- $asnBlacklisted = WebsiteIpBlacklist::where('asn', $asn)
- ->where('blacklist_asn', '=', '1')
- ->exists();
-
- // Restrict the user if their ASN is within the blacklist table
- if ($asnBlacklisted) {
- return to_route('me.show')->withErrors([
- 'message' => __('Your IP have been restricted - If you think this is a mistake, you can contact us on our Discord.'),
- ]);
- }
-
- if (isset($apiResponse['threat']) && is_array($apiResponse['threat'])) {
- $filteredThreats = array_diff_key($apiResponse['threat'], array_flip(['blocklists', 'is_icloud_relay', 'is_datacenter', 'is_tor', 'is_proxy']));
-
- if (in_array(true, $filteredThreats, true)) {
- WebsiteIpBlacklist::create([
- 'ip_address' => $userIp,
- 'asn' => null,
- ]);
-
- return to_route('me.show')->withErrors([
- 'message' => __('Your IP has been restricted - If you think this is a mistake, you can contact us on our Discord.'),
- ]);
- }
- }
-
- return $next($request);
- }
-}
diff --git a/Updated_Cms/app/Http/Middleware/ValidateSignature.php b/Updated_Cms/app/Http/Middleware/ValidateSignature.php
deleted file mode 100644
index 093bf64af8..0000000000
--- a/Updated_Cms/app/Http/Middleware/ValidateSignature.php
+++ /dev/null
@@ -1,22 +0,0 @@
-
- */
- protected $except = [
- // 'fbclid',
- // 'utm_campaign',
- // 'utm_content',
- // 'utm_medium',
- // 'utm_source',
- // 'utm_term',
- ];
-}
diff --git a/Updated_Cms/app/Http/Middleware/VerifyCsrfToken.php b/Updated_Cms/app/Http/Middleware/VerifyCsrfToken.php
deleted file mode 100644
index 9e86521722..0000000000
--- a/Updated_Cms/app/Http/Middleware/VerifyCsrfToken.php
+++ /dev/null
@@ -1,17 +0,0 @@
-
- */
- protected $except = [
- //
- ];
-}
diff --git a/Updated_Cms/app/Http/Requests/AccountSettingsFormRequest.php b/Updated_Cms/app/Http/Requests/AccountSettingsFormRequest.php
deleted file mode 100644
index a5abff49cd..0000000000
--- a/Updated_Cms/app/Http/Requests/AccountSettingsFormRequest.php
+++ /dev/null
@@ -1,28 +0,0 @@
- ['sometimes', 'string', sprintf('regex:%s', setting('username_regex')), 'min:3', 'max:25', Rule::unique('users')->ignore($this->user()->id), new WebsiteWordfilterRule],
- 'mail' => ['required', 'email', Rule::unique('users')->ignore($this->user()->id), new WebsiteWordfilterRule],
- 'motto' => ['nullable', 'string', 'max:127', new WebsiteWordfilterRule],
- 'g-recaptcha-response' => [new GoogleRecaptchaRule],
- 'cf-turnstile-response' => [app(Turnstile::class)],
- ];
- }
-
- public function authorize(): bool
- {
- return true;
- }
-}
diff --git a/Updated_Cms/app/Http/Requests/AccountTopupFormRequest.php b/Updated_Cms/app/Http/Requests/AccountTopupFormRequest.php
deleted file mode 100644
index c7b8ad8d59..0000000000
--- a/Updated_Cms/app/Http/Requests/AccountTopupFormRequest.php
+++ /dev/null
@@ -1,15 +0,0 @@
- ['required', 'integer', 'min:1', 'max:250'],
- ];
- }
-}
diff --git a/Updated_Cms/app/Http/Requests/ArticleCommentFormRequest.php b/Updated_Cms/app/Http/Requests/ArticleCommentFormRequest.php
deleted file mode 100644
index 6c041d55f0..0000000000
--- a/Updated_Cms/app/Http/Requests/ArticleCommentFormRequest.php
+++ /dev/null
@@ -1,21 +0,0 @@
- ['required', 'string', 'min:2', 'max:255', new WebsiteWordfilterRule],
- ];
- }
-
- public function authorize(): bool
- {
- return true;
- }
-}
diff --git a/Updated_Cms/app/Http/Requests/GuestbookFormRequest.php b/Updated_Cms/app/Http/Requests/GuestbookFormRequest.php
deleted file mode 100644
index 892fe0309d..0000000000
--- a/Updated_Cms/app/Http/Requests/GuestbookFormRequest.php
+++ /dev/null
@@ -1,16 +0,0 @@
- ['required', 'string', 'max:32', new WebsiteWordfilterRule],
- ];
- }
-}
diff --git a/Updated_Cms/app/Http/Requests/PasswordSettingsFormRequest.php b/Updated_Cms/app/Http/Requests/PasswordSettingsFormRequest.php
deleted file mode 100644
index c57356df18..0000000000
--- a/Updated_Cms/app/Http/Requests/PasswordSettingsFormRequest.php
+++ /dev/null
@@ -1,24 +0,0 @@
- ['required', 'string', new CurrentPasswordRule],
- 'password' => $this->passwordRules(),
- 'g-recaptcha-response' => [new GoogleRecaptchaRule],
- 'cf-turnstile-response' => [app(Turnstile::class)],
- ];
- }
-}
diff --git a/Updated_Cms/app/Http/Requests/RareSearchFormRequest.php b/Updated_Cms/app/Http/Requests/RareSearchFormRequest.php
deleted file mode 100644
index 58f21804f3..0000000000
--- a/Updated_Cms/app/Http/Requests/RareSearchFormRequest.php
+++ /dev/null
@@ -1,20 +0,0 @@
- ['required', 'string', 'min:1', 'max:255'],
- ];
- }
-
- public function authorize(): bool
- {
- return true;
- }
-}
diff --git a/Updated_Cms/app/Http/Requests/RegisterFormRequest.php b/Updated_Cms/app/Http/Requests/RegisterFormRequest.php
deleted file mode 100644
index 1dae173c81..0000000000
--- a/Updated_Cms/app/Http/Requests/RegisterFormRequest.php
+++ /dev/null
@@ -1,38 +0,0 @@
- ['required', 'string', sprintf('regex:%s', setting('username_regex')), 'max:25', Rule::unique('users')],
- 'mail' => ['required', 'string', 'email', 'max:255', Rule::unique('users')],
- 'password' => ['required', 'string', 'confirmed', 'min:8'],
- 'terms' => ['required', 'accepted'],
- 'g-recaptcha-response' => [new GoogleRecaptchaRule],
- 'cf-turnstile-response' => [app(Turnstile::class)],
- ];
- }
-
- public function authorize(): bool
- {
- return true;
- }
-
- #[\Override]
- public function messages(): array
- {
- return [
- 'g-recaptcha-response.required' => __('The Google recaptcha must be completed'),
- 'g-recaptcha-response.string' => __('The google recaptcha was submitted with an invalid type'),
- ];
- }
-}
diff --git a/Updated_Cms/app/Http/Requests/ShopVoucherFormRequest.php b/Updated_Cms/app/Http/Requests/ShopVoucherFormRequest.php
deleted file mode 100644
index 179d67700e..0000000000
--- a/Updated_Cms/app/Http/Requests/ShopVoucherFormRequest.php
+++ /dev/null
@@ -1,19 +0,0 @@
- ['required', 'string'],
- 'g-recaptcha-response' => [new GoogleRecaptchaRule],
- 'cf-turnstile-response' => [app(Turnstile::class)],
- ];
- }
-}
diff --git a/Updated_Cms/app/Http/Requests/StaffApplicationFormRequest.php b/Updated_Cms/app/Http/Requests/StaffApplicationFormRequest.php
deleted file mode 100644
index c5c1a80d96..0000000000
--- a/Updated_Cms/app/Http/Requests/StaffApplicationFormRequest.php
+++ /dev/null
@@ -1,19 +0,0 @@
- ['required', 'string'],
- 'g-recaptcha-response' => [new GoogleRecaptchaRule],
- 'cf-turnstile-response' => [app(Turnstile::class)],
- ];
- }
-}
diff --git a/Updated_Cms/app/Http/Requests/WebsiteTicketFormRequest.php b/Updated_Cms/app/Http/Requests/WebsiteTicketFormRequest.php
deleted file mode 100644
index 3bee110739..0000000000
--- a/Updated_Cms/app/Http/Requests/WebsiteTicketFormRequest.php
+++ /dev/null
@@ -1,18 +0,0 @@
- ['required', 'integer', Rule::exists('website_help_center_categories', 'id')],
- 'title' => ['required', 'string', 'min:10', 'max:255'],
- 'content' => ['required', 'string', 'min:10', 'max:65000'],
- ];
- }
-}
diff --git a/Updated_Cms/app/Http/Requests/WebsiteTicketReplyFormRequest.php b/Updated_Cms/app/Http/Requests/WebsiteTicketReplyFormRequest.php
deleted file mode 100644
index 8b156055a6..0000000000
--- a/Updated_Cms/app/Http/Requests/WebsiteTicketReplyFormRequest.php
+++ /dev/null
@@ -1,15 +0,0 @@
- ['required', 'string', 'min:10', 'max:65000'],
- ];
- }
-}
diff --git a/Updated_Cms/app/Http/Resources/OnlineUserCountResource.php b/Updated_Cms/app/Http/Resources/OnlineUserCountResource.php
deleted file mode 100644
index b71d9ef019..0000000000
--- a/Updated_Cms/app/Http/Resources/OnlineUserCountResource.php
+++ /dev/null
@@ -1,23 +0,0 @@
- $this->resource,
- ];
- }
-}
diff --git a/Updated_Cms/app/Http/Resources/OnlineUsersResource.php b/Updated_Cms/app/Http/Resources/OnlineUsersResource.php
deleted file mode 100644
index 7ced825da2..0000000000
--- a/Updated_Cms/app/Http/Resources/OnlineUsersResource.php
+++ /dev/null
@@ -1,24 +0,0 @@
- $this->paginate(10),
- ];
- }
-}
diff --git a/Updated_Cms/app/Http/Resources/UserResource.php b/Updated_Cms/app/Http/Resources/UserResource.php
deleted file mode 100644
index cf8245e4cf..0000000000
--- a/Updated_Cms/app/Http/Resources/UserResource.php
+++ /dev/null
@@ -1,23 +0,0 @@
- $this->resource ?: 'No user found',
- ];
- }
-}
diff --git a/Updated_Cms/app/Models/Achievement.php b/Updated_Cms/app/Models/Achievement.php
deleted file mode 100644
index 51ba7bf76b..0000000000
--- a/Updated_Cms/app/Models/Achievement.php
+++ /dev/null
@@ -1,23 +0,0 @@
-getBadgeName());
- }
-
- public function getBadgeName(): string
- {
- return sprintf('%s%s', $this->name, (string) $this->level);
- }
-}
diff --git a/Updated_Cms/app/Models/Article.php b/Updated_Cms/app/Models/Article.php
deleted file mode 100644
index 85d29c6a56..0000000000
--- a/Updated_Cms/app/Models/Article.php
+++ /dev/null
@@ -1,147 +0,0 @@
-user_id = Auth::id();
- $article->slug = Str::slug($article->title);
- $article->predominant_color = getPredominantImageColor($article->image);
- });
-
- static::updating(function (Article $article): void {
- $article->slug = Str::slug($article->title);
-
- if ($article->isDirty('image')) {
- $article->predominant_color = getPredominantImageColor($article->image);
- }
- });
- }
-
- public function syncPaginatedComments(): void
- {
- $this->setRelation('comments',
- $this->comments()->defaultRelationships()->paginate(10)->fragment('comments'),
- );
- }
-
- public static function fromIdAndSlug(string $id, string $slug, bool $withDefaultRelationships = true): Builder
- {
- return Article::valid()
- ->when($withDefaultRelationships, fn ($query) => $query->defaultRelationships())
- ->whereId($id)
- ->whereSlug($slug);
- }
-
- public static function getLatestValidArticle(bool $withDefaultRelationships = true): ?Article
- {
- $article = Article::valid()
- ->when($withDefaultRelationships, fn ($query) => $query->defaultRelationships())
- ->latest()
- ->first();
-
- if (! $article) {
- return null;
- }
-
- $article->syncPaginatedComments();
-
- return $article;
- }
-
- public static function forIndex(int $limit): Builder
- {
- return Article::valid()
- ->with(['user:id,username,look,avatar_background'])
- ->select(['id', 'user_id', 'title', 'slug', 'is_promotion', 'image', 'description', 'promotion_ends_at', 'created_at', 'fixed'])
- ->limit($limit)
- ->latest();
- }
-
- #[\Illuminate\Database\Eloquent\Attributes\Scope]
- protected function valid(Builder $query): void
- {
- $query->whereVisible(true);
- }
-
- #[\Illuminate\Database\Eloquent\Attributes\Scope]
- protected function defaultRelationships(Builder $query): void
- {
- $query->with([
- 'user:id,username,look,gender',
- 'tags',
- 'reactions' => fn ($query) => $query->defaultRelationships(),
- 'user.followers',
- ]);
- }
-
- public function comments(): HasMany
- {
- return $this->hasMany(ArticleComment::class)->defaultBehavior();
- }
-
- public function reactions(): HasMany
- {
- return $this->hasMany(ArticleReaction::class)->defaultBehavior();
- }
-
- public function user()
- {
- return $this->belongsTo(User::class);
- }
-
- public function tags()
- {
- return $this->morphToMany(Tag::class, 'taggable');
- }
-
- protected function titleColor(): Attribute
- {
- return new Attribute(
- get: fn () => isDarkColor($this->predominant_color) ? '#fff' : '#000',
- );
- }
-
- public function createFollowersNotification(): void
- {
- $this->user->followers()
- ->with('user:id,username')
- ->each(fn (AuthorNotification $follower) => $follower->user->notify($this->user, NotificationType::ArticlePosted, $this->getNotificationUrl()),
- );
- }
- protected function casts(): array
- {
- return [
- 'visible' => 'boolean',
- 'fixed' => 'boolean',
- 'allow_comments' => 'boolean',
- 'is_promotion' => 'boolean',
- 'promotion_ends_at' => 'datetime',
- ];
- }
-}
diff --git a/Updated_Cms/app/Models/Articles/Tag.php b/Updated_Cms/app/Models/Articles/Tag.php
deleted file mode 100644
index 2c5f2e0c6c..0000000000
--- a/Updated_Cms/app/Models/Articles/Tag.php
+++ /dev/null
@@ -1,18 +0,0 @@
-morphedByMany(WebsiteArticle::class, 'taggable');
- }
-}
diff --git a/Updated_Cms/app/Models/Articles/WebsiteArticle.php b/Updated_Cms/app/Models/Articles/WebsiteArticle.php
deleted file mode 100644
index 5d7e7ebee7..0000000000
--- a/Updated_Cms/app/Models/Articles/WebsiteArticle.php
+++ /dev/null
@@ -1,65 +0,0 @@
-generateSlugsFrom('title')
- ->saveSlugsTo('slug')
- ->usingSeparator('-')->allowDuplicateSlugs();
- }
-
- public function user(): BelongsTo
- {
- return $this->belongsTo(User::class);
- }
-
- public function reactions(): HasMany
- {
- return $this->hasMany(WebsiteArticleReaction::class, 'article_id')
- ->whereActive(true);
- }
-
- public function comments(): HasMany
- {
- return $this->hasMany(WebsiteArticleComment::class, 'article_id');
- }
-
- public function userHasReachedArticleCommentLimit(): bool
- {
- return $this->comments()->where('user_id', '=', Auth::id())->count() >= (int) setting('max_comment_per_article');
- }
-
- #[\Override]
- protected static function boot()
- {
- parent::boot();
-
- static::saving(function ($model): void {
- if (empty($model->image)) {
- $model->image = '';
- }
- });
- }
-
- public function tags()
- {
- return $this->morphToMany(Tag::class, 'taggable');
- }
-}
diff --git a/Updated_Cms/app/Models/Articles/WebsiteArticleComment.php b/Updated_Cms/app/Models/Articles/WebsiteArticleComment.php
deleted file mode 100644
index e1c390bf89..0000000000
--- a/Updated_Cms/app/Models/Articles/WebsiteArticleComment.php
+++ /dev/null
@@ -1,28 +0,0 @@
-belongsTo(WebsiteArticle::class, 'article_id');
- }
-
- public function user(): BelongsTo
- {
- return $this->belongsTo(User::class);
- }
-
- public function canBeDeleted(): bool
- {
- return $this->user_id === Auth::id() || hasPermission('delete_article_comments');
- }
-}
diff --git a/Updated_Cms/app/Models/Articles/WebsiteArticleReaction.php b/Updated_Cms/app/Models/Articles/WebsiteArticleReaction.php
deleted file mode 100644
index cf86dfa5fe..0000000000
--- a/Updated_Cms/app/Models/Articles/WebsiteArticleReaction.php
+++ /dev/null
@@ -1,50 +0,0 @@
-where('article_id', $articleId)
- ->where('reaction', $reaction)
- ->first();
- }
-
- #[\Override]
- public static function boot()
- {
- parent::boot();
-
- static::creating(function ($model): void {
- $model->user_id = auth()->id();
- });
- }
-
- public function article(): BelongsTo
- {
- return $this->belongsTo(WebsiteArticle::class, 'article_id');
- }
-
- public function user(): BelongsTo
- {
- return $this->belongsTo(User::class);
- }
-}
diff --git a/Updated_Cms/app/Models/ChatlogPrivate.php b/Updated_Cms/app/Models/ChatlogPrivate.php
deleted file mode 100644
index a2d9ded115..0000000000
--- a/Updated_Cms/app/Models/ChatlogPrivate.php
+++ /dev/null
@@ -1,28 +0,0 @@
-belongsTo(User::class, 'user_from_id');
- }
-
- public function receiver(): BelongsTo
- {
- return $this->belongsTo(User::class, 'user_to_id');
- }
-}
diff --git a/Updated_Cms/app/Models/ChatlogRoom.php b/Updated_Cms/app/Models/ChatlogRoom.php
deleted file mode 100644
index 66b728fcbd..0000000000
--- a/Updated_Cms/app/Models/ChatlogRoom.php
+++ /dev/null
@@ -1,35 +0,0 @@
-belongsTo(Room::class);
- }
-
- public function sender()
- {
- return $this->belongsTo(User::class, 'user_from_id');
- }
-
- public function receiver()
- {
- return $this->belongsTo(User::class, 'user_to_id');
- }
-}
diff --git a/Updated_Cms/app/Models/CommandLog.php b/Updated_Cms/app/Models/CommandLog.php
deleted file mode 100644
index 80373b49b3..0000000000
--- a/Updated_Cms/app/Models/CommandLog.php
+++ /dev/null
@@ -1,31 +0,0 @@
-belongsTo(User::class);
- }
- protected function casts(): array
- {
- return [
- 'timestamp' => 'datetime',
- ];
- }
-}
diff --git a/Updated_Cms/app/Models/Community/RareValue/WebsiteRareValue.php b/Updated_Cms/app/Models/Community/RareValue/WebsiteRareValue.php
deleted file mode 100644
index a89c61e3a7..0000000000
--- a/Updated_Cms/app/Models/Community/RareValue/WebsiteRareValue.php
+++ /dev/null
@@ -1,38 +0,0 @@
- 'integer',
- ];
- }
-
- public function category(): BelongsTo
- {
- return $this->belongsTo(WebsiteRareValueCategory::class, 'category_id');
- }
-
- public function item(): BelongsTo
- {
- return $this->belongsTo(CatalogItem::class, 'item_id', 'item_ids');
- }
-
- public function isLimitedEdition(): bool
- {
- if (is_null($this->item)) {
- return false;
- }
-
- return $this->item->limited_stack > 0;
- }
-}
diff --git a/Updated_Cms/app/Models/Community/RareValue/WebsiteRareValueCategory.php b/Updated_Cms/app/Models/Community/RareValue/WebsiteRareValueCategory.php
deleted file mode 100644
index 37ca846119..0000000000
--- a/Updated_Cms/app/Models/Community/RareValue/WebsiteRareValueCategory.php
+++ /dev/null
@@ -1,16 +0,0 @@
-hasMany(WebsiteRareValue::class, 'category_id');
- }
-}
diff --git a/Updated_Cms/app/Models/Community/Staff/WebsiteOpenPosition.php b/Updated_Cms/app/Models/Community/Staff/WebsiteOpenPosition.php
deleted file mode 100644
index 873cd21123..0000000000
--- a/Updated_Cms/app/Models/Community/Staff/WebsiteOpenPosition.php
+++ /dev/null
@@ -1,55 +0,0 @@
-permission_id)->delete();
- });
- }
-
- public function permission()
- {
- return $this->belongsTo(Permission::class, 'permission_id', 'id');
- }
-
- public function applications()
- {
- return $this->hasMany(WebsiteStaffApplications::class, 'rank_id', 'permission_id');
- }
-
- #[\Illuminate\Database\Eloquent\Attributes\Scope]
- protected function canApply($query)
- {
- return $query->where('apply_from', '<=', now())->where('apply_to', '>', now());
- }
- protected function casts(): array
- {
- return [
- 'apply_from' => 'datetime',
- 'apply_to' => 'datetime',
- ];
- }
-}
diff --git a/Updated_Cms/app/Models/Community/Staff/WebsiteStaffApplications.php b/Updated_Cms/app/Models/Community/Staff/WebsiteStaffApplications.php
deleted file mode 100644
index e6b766875e..0000000000
--- a/Updated_Cms/app/Models/Community/Staff/WebsiteStaffApplications.php
+++ /dev/null
@@ -1,31 +0,0 @@
-belongsTo(Permission::class, 'rank_id');
- }
-
- public function user(): BelongsTo
- {
- return $this->belongsTo(User::class, 'user_id');
- }
-}
diff --git a/Updated_Cms/app/Models/Community/Staff/WebsiteTeam.php b/Updated_Cms/app/Models/Community/Staff/WebsiteTeam.php
deleted file mode 100644
index bc30a59e9b..0000000000
--- a/Updated_Cms/app/Models/Community/Staff/WebsiteTeam.php
+++ /dev/null
@@ -1,27 +0,0 @@
-hasMany(User::class, 'team_id', 'id');
- }
-
- public function getBadgePath(): string
- {
- return sprintf('%s%s.gif', setting('badges_path'), $this->getBadgeName());
- }
-
- public function getBadgeName(): string
- {
- return $this->badge ?: '';
- }
-}
diff --git a/Updated_Cms/app/Models/Compositions/HasBadge.php b/Updated_Cms/app/Models/Compositions/HasBadge.php
deleted file mode 100644
index a87ebe1d7e..0000000000
--- a/Updated_Cms/app/Models/Compositions/HasBadge.php
+++ /dev/null
@@ -1,10 +0,0 @@
-id, $this->slug]);
- }
-}
diff --git a/Updated_Cms/app/Models/EmulatorSetting.php b/Updated_Cms/app/Models/EmulatorSetting.php
deleted file mode 100644
index 6c1121a4d8..0000000000
--- a/Updated_Cms/app/Models/EmulatorSetting.php
+++ /dev/null
@@ -1,16 +0,0 @@
-belongsTo(ItemBase::class, 'item_ids', 'id');
- }
-}
diff --git a/Updated_Cms/app/Models/Game/Furniture/CatalogPage.php b/Updated_Cms/app/Models/Game/Furniture/CatalogPage.php
deleted file mode 100644
index 7959156953..0000000000
--- a/Updated_Cms/app/Models/Game/Furniture/CatalogPage.php
+++ /dev/null
@@ -1,18 +0,0 @@
-hasMany(CatalogItem::class, 'page_id');
- }
-}
diff --git a/Updated_Cms/app/Models/Game/Furniture/Item.php b/Updated_Cms/app/Models/Game/Furniture/Item.php
deleted file mode 100644
index 57093ea87d..0000000000
--- a/Updated_Cms/app/Models/Game/Furniture/Item.php
+++ /dev/null
@@ -1,19 +0,0 @@
-belongsTo(User::class);
- }
-}
diff --git a/Updated_Cms/app/Models/Game/Furniture/ItemBase.php b/Updated_Cms/app/Models/Game/Furniture/ItemBase.php
deleted file mode 100644
index 998bc6b2a5..0000000000
--- a/Updated_Cms/app/Models/Game/Furniture/ItemBase.php
+++ /dev/null
@@ -1,25 +0,0 @@
-item_name);
- }
-
- public function catalogItems(): HasMany
- {
- return $this->hasMany(CatalogItem::class, 'item_ids', 'id');
- }
-}
diff --git a/Updated_Cms/app/Models/Game/Guild/Guild.php b/Updated_Cms/app/Models/Game/Guild/Guild.php
deleted file mode 100644
index 169f10571d..0000000000
--- a/Updated_Cms/app/Models/Game/Guild/Guild.php
+++ /dev/null
@@ -1,18 +0,0 @@
-hasMany(GuildMember::class);
- }
-}
diff --git a/Updated_Cms/app/Models/Game/Guild/GuildMember.php b/Updated_Cms/app/Models/Game/Guild/GuildMember.php
deleted file mode 100644
index 6883f8042a..0000000000
--- a/Updated_Cms/app/Models/Game/Guild/GuildMember.php
+++ /dev/null
@@ -1,20 +0,0 @@
-hasMany(Guild::class);
- }
-}
diff --git a/Updated_Cms/app/Models/Game/Permission.php b/Updated_Cms/app/Models/Game/Permission.php
deleted file mode 100644
index f1c5d5d879..0000000000
--- a/Updated_Cms/app/Models/Game/Permission.php
+++ /dev/null
@@ -1,43 +0,0 @@
-hasMany(User::class, 'rank', 'id');
- }
-
- public function roles(): HasMany
- {
- return $this->hasMany(PermissionRole::class);
- }
-
- public function staffApplications(): HasMany
- {
- return $this->hasMany(StaffApplication::class, 'rank_id');
- }
-
- public function getBadgePath(): string
- {
- return sprintf('%s%s.gif', setting('badges_path'), $this->getBadgeName());
- }
-
- public function getBadgeName(): string
- {
- return $this->badge;
- }
-}
diff --git a/Updated_Cms/app/Models/Game/Player/MessengerFriendship.php b/Updated_Cms/app/Models/Game/Player/MessengerFriendship.php
deleted file mode 100644
index 91b851debe..0000000000
--- a/Updated_Cms/app/Models/Game/Player/MessengerFriendship.php
+++ /dev/null
@@ -1,15 +0,0 @@
-belongsTo(User::class, 'user_two_id', 'id');
- }
-}
diff --git a/Updated_Cms/app/Models/Game/Player/UserBadge.php b/Updated_Cms/app/Models/Game/Player/UserBadge.php
deleted file mode 100644
index 9c3b1b97e2..0000000000
--- a/Updated_Cms/app/Models/Game/Player/UserBadge.php
+++ /dev/null
@@ -1,23 +0,0 @@
-belongsTo(User::class, 'id');
- }
-}
diff --git a/Updated_Cms/app/Models/Game/Player/UserCurrency.php b/Updated_Cms/app/Models/Game/Player/UserCurrency.php
deleted file mode 100644
index 33d5df3ee0..0000000000
--- a/Updated_Cms/app/Models/Game/Player/UserCurrency.php
+++ /dev/null
@@ -1,23 +0,0 @@
-belongsTo(User::class, 'user_id', 'id');
- }
-}
diff --git a/Updated_Cms/app/Models/Game/Player/UserSetting.php b/Updated_Cms/app/Models/Game/Player/UserSetting.php
deleted file mode 100644
index 9aded77977..0000000000
--- a/Updated_Cms/app/Models/Game/Player/UserSetting.php
+++ /dev/null
@@ -1,21 +0,0 @@
-belongsTo(User::class);
- }
-}
diff --git a/Updated_Cms/app/Models/Game/Player/UserSubscription.php b/Updated_Cms/app/Models/Game/Player/UserSubscription.php
deleted file mode 100644
index faaf6e3eff..0000000000
--- a/Updated_Cms/app/Models/Game/Player/UserSubscription.php
+++ /dev/null
@@ -1,19 +0,0 @@
-belongsTo(User::class);
- }
-}
diff --git a/Updated_Cms/app/Models/Game/Room.php b/Updated_Cms/app/Models/Game/Room.php
deleted file mode 100644
index cd6cc76b1c..0000000000
--- a/Updated_Cms/app/Models/Game/Room.php
+++ /dev/null
@@ -1,24 +0,0 @@
-hasOne(Guild::class, 'room_id');
- }
-
- public function owner(): BelongsTo
- {
- return $this->belongsTo(User::class, 'owner_id', 'id');
- }
-}
diff --git a/Updated_Cms/app/Models/Help/WebsiteHelpCenterCategory.php b/Updated_Cms/app/Models/Help/WebsiteHelpCenterCategory.php
deleted file mode 100644
index e3a1db4a83..0000000000
--- a/Updated_Cms/app/Models/Help/WebsiteHelpCenterCategory.php
+++ /dev/null
@@ -1,12 +0,0 @@
-belongsTo(User::class);
- }
-
- public function category(): BelongsTo
- {
- return $this->belongsTo(WebsiteHelpCenterCategory::class);
- }
-
- public function replies(): HasMany
- {
- return $this->hasMany(WebsiteHelpCenterTicketReply::class, 'ticket_id');
- }
-
- public function canDeleteTicket()
- {
- return $this->user_id === Auth::id() || hasPermission('delete_website_tickets');
- }
-
- public function canManageTicket()
- {
- return $this->user_id === Auth::id() || hasPermission('manage_website_tickets');
- }
-
- public function canCloseTicket()
- {
- return $this->user_id === Auth::id() || hasPermission('manage_website_tickets');
- }
-
- public function isOpen()
- {
- return $this->open || hasPermission('manage_website_tickets');
- }
-
- protected function content(): \Illuminate\Database\Eloquent\Casts\Attribute
- {
- return \Illuminate\Database\Eloquent\Casts\Attribute::make(get: fn($value) => Purify::clean($value));
- }
-}
diff --git a/Updated_Cms/app/Models/Help/WebsiteHelpCenterTicketCategories.php b/Updated_Cms/app/Models/Help/WebsiteHelpCenterTicketCategories.php
deleted file mode 100644
index b28e8cb1d2..0000000000
--- a/Updated_Cms/app/Models/Help/WebsiteHelpCenterTicketCategories.php
+++ /dev/null
@@ -1,10 +0,0 @@
-belongsTo(WebsiteHelpCenterTicket::class, 'ticket_id');
- }
-
- public function user(): BelongsTo
- {
- return $this->belongsTo(User::class, 'user_id');
- }
-
- public function canDeleteReply()
- {
- return $this->user_id === Auth::id() || hasPermission('delete_website_ticket_replies');
- }
-
- protected function content(): \Illuminate\Database\Eloquent\Casts\Attribute
- {
- return \Illuminate\Database\Eloquent\Casts\Attribute::make(get: fn($value) => Purify::clean($value));
- }
-}
diff --git a/Updated_Cms/app/Models/Help/WebsiteHelpCenterTicketStatus.php b/Updated_Cms/app/Models/Help/WebsiteHelpCenterTicketStatus.php
deleted file mode 100644
index 5e2980a9d4..0000000000
--- a/Updated_Cms/app/Models/Help/WebsiteHelpCenterTicketStatus.php
+++ /dev/null
@@ -1,10 +0,0 @@
-belongsTo(WebsiteRuleCategory::class, 'category_id');
- }
-}
diff --git a/Updated_Cms/app/Models/Help/WebsiteRuleCategory.php b/Updated_Cms/app/Models/Help/WebsiteRuleCategory.php
deleted file mode 100644
index 9744d5d44b..0000000000
--- a/Updated_Cms/app/Models/Help/WebsiteRuleCategory.php
+++ /dev/null
@@ -1,16 +0,0 @@
-hasMany(WebsiteRule::class, 'category_id');
- }
-}
diff --git a/Updated_Cms/app/Models/ItemDefinition.php b/Updated_Cms/app/Models/ItemDefinition.php
deleted file mode 100644
index 1abefed77f..0000000000
--- a/Updated_Cms/app/Models/ItemDefinition.php
+++ /dev/null
@@ -1,20 +0,0 @@
-hasMany(UserItem::class, 'item_id');
- }
-}
diff --git a/Updated_Cms/app/Models/Miscellaneous/CameraWeb.php b/Updated_Cms/app/Models/Miscellaneous/CameraWeb.php
deleted file mode 100644
index 8545804f39..0000000000
--- a/Updated_Cms/app/Models/Miscellaneous/CameraWeb.php
+++ /dev/null
@@ -1,70 +0,0 @@
-where('timestamp', '>=', \Illuminate\Support\Facades\Date::today()->timestamp);
- }
-
- if ($period == 'last_week') {
- $query->whereBetween('timestamp', [now()->subWeek()->timestamp, now()->timestamp]);
- }
-
- if ($period == 'last_month') {
- $query->whereBetween('timestamp', [now()->subMonth()->timestamp, now()->timestamp]);
- }
- }
-
- public function user(): BelongsTo
- {
- return $this->belongsTo(User::class);
- }
-
- public function room(): BelongsTo
- {
- return $this->belongsTo(Room::class);
- }
-
- public function likes(): HasMany
- {
- return $this->hasMany(CameraLike::class);
- }
-
- public function views(): HasMany
- {
- return $this->hasMany(CameraView::class);
- }
-
- protected function formattedDate(): Attribute
- {
- return new Attribute(
- get: fn () => \Illuminate\Support\Facades\Date::parse($this->timestamp)->format('Y-m-d H:i'),
- );
- }
- protected function casts(): array
- {
- return [
- 'timestamp' => 'datetime',
- ];
- }
-}
diff --git a/Updated_Cms/app/Models/Miscellaneous/WebsiteBetaCode.php b/Updated_Cms/app/Models/Miscellaneous/WebsiteBetaCode.php
deleted file mode 100644
index b4a90126a8..0000000000
--- a/Updated_Cms/app/Models/Miscellaneous/WebsiteBetaCode.php
+++ /dev/null
@@ -1,17 +0,0 @@
-belongsTo(User::class);
- }
-}
diff --git a/Updated_Cms/app/Models/Miscellaneous/WebsiteInstallation.php b/Updated_Cms/app/Models/Miscellaneous/WebsiteInstallation.php
deleted file mode 100644
index eb15de5d94..0000000000
--- a/Updated_Cms/app/Models/Miscellaneous/WebsiteInstallation.php
+++ /dev/null
@@ -1,12 +0,0 @@
-belongsTo(User::class);
- }
-}
diff --git a/Updated_Cms/app/Models/Miscellaneous/WebsitePermission.php b/Updated_Cms/app/Models/Miscellaneous/WebsitePermission.php
deleted file mode 100644
index a69a6dc00e..0000000000
--- a/Updated_Cms/app/Models/Miscellaneous/WebsitePermission.php
+++ /dev/null
@@ -1,10 +0,0 @@
-belongsTo(User::class, 'email', 'mail');
- }
- protected function casts(): array
- {
- return [
- 'created_at' => 'date',
- ];
- }
-}
diff --git a/Updated_Cms/app/Models/Room.php b/Updated_Cms/app/Models/Room.php
deleted file mode 100644
index 4442538d23..0000000000
--- a/Updated_Cms/app/Models/Room.php
+++ /dev/null
@@ -1,57 +0,0 @@
-belongsTo(User::class, 'owner_id');
- }
-
- public function items(): HasMany
- {
- return $this->hasMany(UserItem::class);
- }
-
- public function replicateForUser(User $user): self
- {
- $replicatedRoom = $this->replicate();
-
- $replicatedRoom->owner_id = $user->id;
- $replicatedRoom->owner_name = $user->username;
- $replicatedRoom->score = 0;
- $replicatedRoom->guild_id = 0;
- $replicatedRoom->is_public = '0';
- $replicatedRoom->is_staff_picked = '0';
-
- $replicatedRoom->save();
-
- $items = [];
-
- foreach ($this->items as $item) {
- $replicatedItem = $item->replicate();
-
- $replicatedItem->user_id = $user->id;
- $replicatedItem->room_id = $replicatedRoom->id;
-
- $items[] = $replicatedItem;
- }
-
- $replicatedRoom->items()->saveMany($items);
-
- return $replicatedRoom;
- }
-}
diff --git a/Updated_Cms/app/Models/Session.php b/Updated_Cms/app/Models/Session.php
deleted file mode 100644
index 0cf61d206c..0000000000
--- a/Updated_Cms/app/Models/Session.php
+++ /dev/null
@@ -1,12 +0,0 @@
-belongsTo(User::class);
- }
-}
diff --git a/Updated_Cms/app/Models/Shop/WebsiteShopArticle.php b/Updated_Cms/app/Models/Shop/WebsiteShopArticle.php
deleted file mode 100644
index fe22e6f949..0000000000
--- a/Updated_Cms/app/Models/Shop/WebsiteShopArticle.php
+++ /dev/null
@@ -1,46 +0,0 @@
-furniture) {
- return collect();
- }
-
- $furniture = json_decode($this->furniture, true);
- $furnitureIds = array_column($furniture, 'item_id');
-
- return ItemBase::whereIn('id', $furnitureIds)->get();
- }
-
- public function rank(): HasOne
- {
- return $this->hasOne(Permission::class, 'id', 'give_rank');
- }
-
- public function features(): HasMany
- {
- return $this->HasMany(WebsiteShopArticleFeature::class, 'article_id', 'id');
- }
-
- public function price(): float|int
- {
- if ($this->costs < 100) {
- return 1;
- }
-
- return $this->costs / 100;
- }
-}
diff --git a/Updated_Cms/app/Models/Shop/WebsiteShopArticleFeature.php b/Updated_Cms/app/Models/Shop/WebsiteShopArticleFeature.php
deleted file mode 100644
index 9551d3adce..0000000000
--- a/Updated_Cms/app/Models/Shop/WebsiteShopArticleFeature.php
+++ /dev/null
@@ -1,16 +0,0 @@
-belongsTo(WebsiteShopArticle::class, 'article_id', 'id');
- }
-}
diff --git a/Updated_Cms/app/Models/Shop/WebsiteShopCategory.php b/Updated_Cms/app/Models/Shop/WebsiteShopCategory.php
deleted file mode 100644
index cb5af56dd2..0000000000
--- a/Updated_Cms/app/Models/Shop/WebsiteShopCategory.php
+++ /dev/null
@@ -1,16 +0,0 @@
-hasMany(WebsiteShopArticle::class);
- }
-}
diff --git a/Updated_Cms/app/Models/Shop/WebsiteShopVoucher.php b/Updated_Cms/app/Models/Shop/WebsiteShopVoucher.php
deleted file mode 100644
index b4cac193cf..0000000000
--- a/Updated_Cms/app/Models/Shop/WebsiteShopVoucher.php
+++ /dev/null
@@ -1,17 +0,0 @@
- 'datetime',
- ];
- }
-}
diff --git a/Updated_Cms/app/Models/Shop/WebsiteUsedShopVoucher.php b/Updated_Cms/app/Models/Shop/WebsiteUsedShopVoucher.php
deleted file mode 100644
index 83e6ec010b..0000000000
--- a/Updated_Cms/app/Models/Shop/WebsiteUsedShopVoucher.php
+++ /dev/null
@@ -1,16 +0,0 @@
-hasMany(WebsiteUsedShopVoucher::class, 'voucher_id');
- }
-}
diff --git a/Updated_Cms/app/Models/User.php b/Updated_Cms/app/Models/User.php
deleted file mode 100644
index 7fdfaa28eb..0000000000
--- a/Updated_Cms/app/Models/User.php
+++ /dev/null
@@ -1,300 +0,0 @@
- 'datetime',
- 'password' => 'hashed',
- 'hidden_staff' => 'boolean',
- 'online' => 'boolean',
- ];
- }
-
- public function currencies(): HasMany
- {
- return $this->hasMany(UserCurrency::class, 'user_id');
- }
-
- public function sessions()
- {
- return $this->hasMany(Session::class);
- }
-
- public function currency(string $currency)
- {
- if (! $this->relationLoaded('currencies')) {
- $this->load('currencies');
- }
-
- $type = match ($currency) {
- 'duckets' => 0,
- 'diamonds' => 5,
- 'points' => 101,
- };
-
- return $this->currencies->where('type', $type)->first()->amount ?? 0;
- }
-
- public function permission(): HasOne
- {
- return $this->hasOne(Permission::class, 'id', 'rank');
- }
-
- public function articles(): HasMany
- {
- return $this->hasMany(WebsiteArticle::class);
- }
-
- public function referrals(): HasOne
- {
- return $this->hasOne(UserReferral::class);
- }
-
- public function userReferrals(): HasMany
- {
- return $this->hasMany(Referral::class);
- }
-
- public function claimedReferralLog(): HasMany
- {
- return $this->hasMany(ClaimedReferralLog::class);
- }
-
- public function badges(): HasMany
- {
- return $this->hasMany(UserBadge::class);
- }
-
- public function rooms(): HasMany
- {
- return $this->hasMany(Room::class, 'owner_id');
- }
-
- public function friends(): HasMany
- {
- return $this->hasMany(MessengerFriendship::class, 'user_one_id');
- }
-
- public function referralsNeeded()
- {
- $referrals = 0;
-
- if (! is_null($this->referrals)) {
- $referrals = $this->referrals->referrals_total;
- }
-
- return setting('referrals_needed') - $referrals;
- }
-
- public function ban(): HasOne
- {
- return $this->hasOne(Ban::class, 'user_id')->where('ban_expire', '>', time())->whereIn('type', ['account', 'super']);
- }
-
- public function settings(): HasOne
- {
- return $this->hasOne(UserSetting::class);
- }
-
- public function ssoTicket(): string
- {
- $sso = sprintf('%s-%s', Str::replace(' ', '', setting('hotel_name')), Str::uuid());
-
- if (User::where('auth_ticket', $sso)->exists()) {
- return $this->ssoTicket();
- }
-
- $this->update([
- 'auth_ticket' => $sso,
- ]);
-
- return $sso;
- }
-
- public function betaCode(): HasOne
- {
- return $this->hasOne(WebsiteBetaCode::class);
- }
-
- public function team(): BelongsTo
- {
- return $this->belongsTo(WebsiteTeam::class, 'team_id');
- }
-
- public function applications(): HasMany
- {
- return $this->hasMany(WebsiteStaffApplications::class, 'user_id');
- }
-
- public function hcSubscription(): HasOne
- {
- return $this->hasOne(UserSubscription::class);
- }
-
- public function articleComments(): HasMany
- {
- return $this->hasMany(WebsiteArticleComment::class);
- }
-
- public function transactions(): HasMany
- {
- return $this->hasMany(WebsitePaypalTransaction::class);
- }
-
- public function usedShopVouchers(): HasMany
- {
- return $this->hasMany(WebsiteUsedShopVoucher::class);
- }
-
- public function items(): HasMany
- {
- return $this->hasMany(Item::class, 'user_id');
- }
-
- public function tickets(): HasMany
- {
- return $this->hasMany(WebsiteHelpCenterTicket::class);
- }
-
- public function photos(): HasMany
- {
- return $this->hasMany(CameraWeb::class);
- }
-
- public function profileGuestbook(): HasMany
- {
- return $this->hasMany(WebsiteUserGuestbook::class, 'profile_id');
- }
-
- public function guestbook(): HasMany
- {
- return $this->hasMany(WebsiteUserGuestbook::class, 'user_id');
- }
-
- public function chatLogs()
- {
- return $this->hasMany(ChatlogRoom::class, 'user_from_id');
- }
-
- public function chatLogsPrivate()
- {
- return $this->hasMany(ChatlogPrivate::class, 'user_from_id');
- }
-
- public function getOnlineFriends(int $total = 10)
- {
- return $this->friends()
- ->select(['user_two_id', 'users.id', 'users.username', 'users.look', 'users.motto', 'users.last_online'])
- ->join('users', 'users.id', '=', 'user_two_id')
- ->where('users.online', '1')
- ->inRandomOrder()
- ->limit($total)
- ->get();
- }
-
- public function confirmTwoFactorAuthentication($code)
- {
- $codeIsValid = app(TwoFactorAuthenticationProvider::class)
- ->verify(decrypt($this->two_factor_secret), $code);
-
- if (! $codeIsValid) {
- return false;
- }
-
- $this->update([
- 'two_factor_confirmed' => true,
- ]);
-
- return true;
- }
-
- public function hasAppliedForPosition(int $rankId)
- {
- return $this->applications()->where('rank_id', '=', $rankId)->exists();
- }
-
- public function changePassword(string $newPassword)
- {
- $this->password = Hash::make($newPassword);
- $this->save();
- }
-
- public function getFilamentName(): string
- {
- return $this->username ?? 'Guest';
- }
-
- public function canAccessPanel(Panel $panel): bool
- {
- return hasHousekeepingPermission('can_access_housekeeping');
- }
-
- public function getActivitylogOptions(): LogOptions
- {
- return LogOptions::defaults()
- ->logOnly(['id', 'username', 'motto', 'rank', 'credits'])
- ->logOnlyDirty()
- ->dontSubmitEmptyLogs();
- }
-
- #[\Override]
- public function save(array $options = [])
- {
- if (! $this->isDirty()) {
- return false;
- }
-
- return parent::save($options);
- }
-}
diff --git a/Updated_Cms/app/Models/User/Ban.php b/Updated_Cms/app/Models/User/Ban.php
deleted file mode 100644
index e1e26b0e7d..0000000000
--- a/Updated_Cms/app/Models/User/Ban.php
+++ /dev/null
@@ -1,34 +0,0 @@
-belongsTo(User::class);
- }
-
- public function staff(): BelongsTo
- {
- return $this->belongsTo(User::class, 'user_staff_id');
- }
-
- public function getActivitylogOptions(): LogOptions
- {
- return LogOptions::defaults()
- ->logOnly(['user_id', 'ip', 'ban_expire', 'ban_reason', 'type']);
- }
-}
diff --git a/Updated_Cms/app/Models/User/ClaimedReferralLog.php b/Updated_Cms/app/Models/User/ClaimedReferralLog.php
deleted file mode 100644
index c565341cb2..0000000000
--- a/Updated_Cms/app/Models/User/ClaimedReferralLog.php
+++ /dev/null
@@ -1,17 +0,0 @@
-belongsTo(User::class);
- }
-}
diff --git a/Updated_Cms/app/Models/User/Referral.php b/Updated_Cms/app/Models/User/Referral.php
deleted file mode 100644
index 95c778df0a..0000000000
--- a/Updated_Cms/app/Models/User/Referral.php
+++ /dev/null
@@ -1,10 +0,0 @@
-belongsTo(User::class);
- }
-}
diff --git a/Updated_Cms/app/Models/User/WebsiteUserGuestbook.php b/Updated_Cms/app/Models/User/WebsiteUserGuestbook.php
deleted file mode 100644
index 5528e42f8a..0000000000
--- a/Updated_Cms/app/Models/User/WebsiteUserGuestbook.php
+++ /dev/null
@@ -1,22 +0,0 @@
-belongsTo(User::class, 'profile_id');
- }
-
- public function user(): BelongsTo
- {
- return $this->belongsTo(User::class, 'user_id');
- }
-}
diff --git a/Updated_Cms/app/Models/WebsiteAd.php b/Updated_Cms/app/Models/WebsiteAd.php
deleted file mode 100644
index 9d7c49f724..0000000000
--- a/Updated_Cms/app/Models/WebsiteAd.php
+++ /dev/null
@@ -1,67 +0,0 @@
- $settingsService->getOrDefault('ads_picture_path'));
- if (! str_starts_with((string) $adsPicturePath, 'http')) {
- $adsPicturePath = rtrim((string) config('app.url'), '/') . '/' . ltrim((string) $adsPicturePath, '/');
- }
- return rtrim((string) $adsPicturePath, '/') . '/' . $this->image;
- });
- }
-
- #[\Override]
- protected static function booted()
- {
- static::deleting(function ($websiteAd): void {
- try {
- $websiteAd->configureAdsDisk();
-
- logger()->info('Attempting to delete image file:', ['file' => $websiteAd->image]);
-
- if ($websiteAd->image && Storage::disk('ads')->exists($websiteAd->image)) {
- Storage::disk('ads')->delete($websiteAd->image);
- logger()->info('Image file deleted:', ['file' => $websiteAd->image]);
- } else {
- logger()->warning('Image file not found:', ['file' => $websiteAd->image]);
- }
- } catch (Exception $e) {
- logger()->error('Failed to delete image file:', [
- 'file' => $websiteAd->image,
- 'error' => $e->getMessage(),
- ]);
- }
- });
- }
-
- protected function configureAdsDisk(): void
- {
- $settingsService = app(SettingsService::class);
-
- $adsPath = Cache::remember('ads_path_filesystem', 3600, fn () => $settingsService->getOrDefault('ads_path_filesystem'));
-
- config(['filesystems.disks.ads' => [
- 'driver' => 'local',
- 'root' => $adsPath,
- ]]);
- }
-}
diff --git a/Updated_Cms/app/Models/WebsiteBadge.php b/Updated_Cms/app/Models/WebsiteBadge.php
deleted file mode 100644
index ac6e646a6b..0000000000
--- a/Updated_Cms/app/Models/WebsiteBadge.php
+++ /dev/null
@@ -1,17 +0,0 @@
-belongsTo(User::class, 'user_id');
- }
-}
diff --git a/Updated_Cms/app/Models/WebsiteHousekeepingPermission.php b/Updated_Cms/app/Models/WebsiteHousekeepingPermission.php
deleted file mode 100644
index ea9ee08105..0000000000
--- a/Updated_Cms/app/Models/WebsiteHousekeepingPermission.php
+++ /dev/null
@@ -1,10 +0,0 @@
-logAll();
- }
-}
diff --git a/Updated_Cms/app/Observers/UserObserver.php b/Updated_Cms/app/Observers/UserObserver.php
deleted file mode 100644
index b1d7de948f..0000000000
--- a/Updated_Cms/app/Observers/UserObserver.php
+++ /dev/null
@@ -1,27 +0,0 @@
-settings()->create([
- 'last_hc_payday' => $isHcEnabled ? now()->addYears(10)->unix() : 0,
- ]);
-
- if ($isHcEnabled) {
- $user->hcSubscription()->insert([
- 'user_id' => $user->id,
- 'subscription_type' => 'HABBO_CLUB',
- 'timestamp_start' => now()->unix(),
- 'timestamp_expire' => now()->addYears(10)->unix(),
- ]);
- }
- }
-}
diff --git a/Updated_Cms/app/Observers/WebsiteDrawBadgeObserver.php b/Updated_Cms/app/Observers/WebsiteDrawBadgeObserver.php
deleted file mode 100644
index 17671a303c..0000000000
--- a/Updated_Cms/app/Observers/WebsiteDrawBadgeObserver.php
+++ /dev/null
@@ -1,69 +0,0 @@
-wasChanged() || ! $websiteDrawBadge->badge_path) {
- return;
- }
-
- $badgeCode = pathinfo($websiteDrawBadge->badge_path, PATHINFO_FILENAME);
-
- if (! $websiteDrawBadge->published) {
- DB::table('users_badges')
- ->where('user_id', $websiteDrawBadge->user_id)
- ->where('badge_code', $badgeCode)
- ->delete();
-
- // Remove from JSON
- $this->updateExternalTexts(false, $badgeCode);
-
- return;
- }
-
- $exists = DB::table('users_badges')
- ->where('user_id', $websiteDrawBadge->user_id)
- ->where('badge_code', $badgeCode)
- ->exists();
-
- if (! $exists) {
- DB::table('users_badges')->insert([
- 'user_id' => $websiteDrawBadge->user_id,
- 'slot_id' => 0,
- 'badge_code' => $badgeCode,
- ]);
- }
-
- // Add to JSON
- $this->updateExternalTexts(true, $badgeCode, $websiteDrawBadge->badge_name, $websiteDrawBadge->badge_desc);
- }
-
- protected function updateExternalTexts(bool $add, string $badgeCode, ?string $name = null, ?string $desc = null): void
- {
- $filePath = DB::table('website_settings')->where('key', 'nitro_external_texts_file')->value('value');
-
- if (! $filePath || ! file_exists($filePath) || ! is_writable($filePath)) {
- return;
- }
-
- $json = json_decode(file_get_contents($filePath), true);
-
- if ($add) {
- $json = array_merge($json, [
- "badge_name_{$badgeCode}" => $name,
- "badge_desc_{$badgeCode}" => $desc,
- ]);
- } else {
- unset($json["badge_name_{$badgeCode}"]);
- unset($json["badge_desc_{$badgeCode}"]);
- }
-
- file_put_contents($filePath, json_encode($json, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
- }
-}
diff --git a/Updated_Cms/app/Policies/AchievementPolicy.php b/Updated_Cms/app/Policies/AchievementPolicy.php
deleted file mode 100644
index 1d5fa946e7..0000000000
--- a/Updated_Cms/app/Policies/AchievementPolicy.php
+++ /dev/null
@@ -1,30 +0,0 @@
-app->bind(
- Vite::class,
- ViteService::class,
- );
-
- $this->app->singleton(
- SettingsService::class,
- fn () => new SettingsService,
- );
-
- $this->app->singleton(
- PermissionsService::class,
- fn () => new PermissionsService,
- );
-
- $this->app->singleton(
- RconService::class,
- fn () => new RconService,
- );
- }
-
- /**
- * Bootstrap any application services.
- */
- public function boot(): void
- {
- if (config('habbo.site.force_https')) {
- URL::forceScheme('https');
- }
-
- Table::configureUsing(function (Table $table): void {
- $table->paginated([10, 25, 50]);
- });
-
- $settingsService = app(SettingsService::class);
- $badgePath = $settingsService->getOrDefault('badge_path_filesystem', '/var/www/gamedata/c_images/album1584');
- Config::set('filesystems.disks.badges.root', $badgePath);
-
- $adsPath = $settingsService->getOrDefault('ads_path_filesystem', '/var/www/gamedata/custom');
- Config::set('filesystems.disks.ads.root', $adsPath);
-
- WebsiteDrawBadge::observe(WebsiteDrawBadgeObserver::class);
- }
-}
diff --git a/Updated_Cms/app/Providers/AuthServiceProvider.php b/Updated_Cms/app/Providers/AuthServiceProvider.php
deleted file mode 100644
index 9a46369f64..0000000000
--- a/Updated_Cms/app/Providers/AuthServiceProvider.php
+++ /dev/null
@@ -1,29 +0,0 @@
-
- */
- protected $policies = [
- // 'App\Models\Model' => 'App\Policies\ModelPolicy',
- Activity::class => ActivityPolicy::class,
- ];
-
- /**
- * Register any authentication / authorization services.
- */
- public function boot(): void
- {
- //
- }
-}
diff --git a/Updated_Cms/app/Providers/BroadcastServiceProvider.php b/Updated_Cms/app/Providers/BroadcastServiceProvider.php
deleted file mode 100644
index 2be04f5d9d..0000000000
--- a/Updated_Cms/app/Providers/BroadcastServiceProvider.php
+++ /dev/null
@@ -1,19 +0,0 @@
->
- */
- protected $listen = [
- Registered::class => [
- SendEmailVerificationNotification::class,
- ],
- ];
-
- protected $observers = [
- User::class => [UserObserver::class],
- ];
-
- /**
- * Register any events for your application.
- */
- #[\Override]
- public function boot(): void {}
-
- /**
- * Determine if events and listeners should be automatically discovered.
- */
- #[\Override]
- public function shouldDiscoverEvents(): bool
- {
- return false;
- }
-}
diff --git a/Updated_Cms/app/Providers/Filament/AdminFilamentPanelProvider.php b/Updated_Cms/app/Providers/Filament/AdminFilamentPanelProvider.php
deleted file mode 100644
index 3773447779..0000000000
--- a/Updated_Cms/app/Providers/Filament/AdminFilamentPanelProvider.php
+++ /dev/null
@@ -1,60 +0,0 @@
-default()
- ->id('housekeeping')
- ->path('housekeeping')
- ->login()
- ->colors([
- 'primary' => Color::Amber,
- ])
- ->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources')
- ->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages')
- ->pages([
- Dashboard::class,
- ])
- ->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\\Filament\\Widgets')
- ->widgets([
- AccountWidget::class,
- FilamentInfoWidget::class,
- ])
- ->middleware([
- EncryptCookies::class,
- AddQueuedCookiesToResponse::class,
- StartSession::class,
- AuthenticateSession::class,
- ShareErrorsFromSession::class,
- VerifyCsrfToken::class,
- SubstituteBindings::class,
- DisableBladeIconComponents::class,
- DispatchServingFilamentEvent::class,
- ])
- ->authMiddleware([
- Authenticate::class,
- ])
- ->plugins([]);
- }
-}
diff --git a/Updated_Cms/app/Providers/FortifyServiceProvider.php b/Updated_Cms/app/Providers/FortifyServiceProvider.php
deleted file mode 100644
index 321363a143..0000000000
--- a/Updated_Cms/app/Providers/FortifyServiceProvider.php
+++ /dev/null
@@ -1,95 +0,0 @@
-app->singleton(
- \Laravel\Fortify\Actions\DisableTwoFactorAuthentication::class,
- DisableTwoFactorAuthentication::class,
- );
- }
-
- /**
- * Bootstrap any application services.
- */
- public function boot(): void
- {
- Fortify::createUsersUsing(CreateNewUser::class);
-
- RateLimiter::for('login', fn (Request $request) => Limit::perMinute(5)->by($request->input('username') . $request->ip()));
-
- RateLimiter::for('two-factor', fn (Request $request) => Limit::perMinute(5)->by($request->session()->get('login.id')));
-
- Fortify::loginView(fn () => view(\Illuminate\Auth\Events\Login::class, [
- 'articles' => WebsiteArticle::latest('id')
- ->take(4)
- ->has('user')
- ->with('user:id,username,look')
- ->get(),
- 'photos' => CameraWeb::latest('id')
- ->take(4)
- ->with('user:id,username,look')
- ->get(),
- ]));
-
- Fortify::registerView(function (Request $request) {
- if (setting('disable_registration') === '1') {
- return to_route('welcome')->withErrors([
- 'register' => __('Registration is currently disabled.'),
- ]);
- }
-
- return view('auth.register', [
- 'referral_code' => $request->route('referral_code'),
- 'articles' => WebsiteArticle::latest('id')
- ->take(4)
- ->has('user')
- ->with('user:id,username,look')
- ->get(),
- 'photos' => CameraWeb::latest('id')
- ->take(2)
- ->with('user:id,username,look')
- ->get(),
- ]);
- });
-
- Fortify::confirmPasswordView(fn () => view('auth.passwords.confirm'));
-
- Fortify::twoFactorChallengeView(fn () => view('auth.two-factor-challenge'));
-
- $this->authenticate();
- }
-
- private function authenticate()
- {
- Fortify::authenticateThrough(fn () => array_filter([
- config('fortify.limiters.login') ? null : EnsureLoginIsNotThrottled::class,
-
- Features::enabled(Features::twoFactorAuthentication()) ? RedirectIfTwoFactorConfirmed::class : null,
- AttemptToAuthenticate::class,
- PrepareAuthenticatedSession::class,
- ]));
- }
-}
diff --git a/Updated_Cms/app/Providers/RouteServiceProvider.php b/Updated_Cms/app/Providers/RouteServiceProvider.php
deleted file mode 100644
index f71b6f6a6a..0000000000
--- a/Updated_Cms/app/Providers/RouteServiceProvider.php
+++ /dev/null
@@ -1,47 +0,0 @@
-configureRateLimiting();
-
- $this->routes(function (): void {
- Route::middleware('api')
- ->prefix('api')
- ->group(base_path('routes/api.php'));
-
- Route::middleware('web')
- ->group(base_path('routes/web.php'));
- });
- }
-
- /**
- * Configure the rate limiters for the application.
- */
- protected function configureRateLimiting(): void
- {
- RateLimiter::for('api', fn (Request $request) => Limit::perMinute(60)->by($request->user()?->id ?: $request->ip()));
- }
-}
diff --git a/Updated_Cms/app/Rules/BetaCodeRule.php b/Updated_Cms/app/Rules/BetaCodeRule.php
deleted file mode 100644
index c2f02aba61..0000000000
--- a/Updated_Cms/app/Rules/BetaCodeRule.php
+++ /dev/null
@@ -1,17 +0,0 @@
-whereNull('user_id')->doesntExist()) {
- $fail(__('The beta code is invalid.'));
- }
- }
-}
diff --git a/Updated_Cms/app/Rules/CurrentPasswordRule.php b/Updated_Cms/app/Rules/CurrentPasswordRule.php
deleted file mode 100644
index b1e7e4b519..0000000000
--- a/Updated_Cms/app/Rules/CurrentPasswordRule.php
+++ /dev/null
@@ -1,21 +0,0 @@
-password)) {
- $fail('It seems like your current password is wrong.');
- }
- }
-}
diff --git a/Updated_Cms/app/Rules/GoogleRecaptchaRule.php b/Updated_Cms/app/Rules/GoogleRecaptchaRule.php
deleted file mode 100644
index 38a8f8a63b..0000000000
--- a/Updated_Cms/app/Rules/GoogleRecaptchaRule.php
+++ /dev/null
@@ -1,38 +0,0 @@
-request(
- 'POST', 'https://www.google.com/recaptcha/api/siteverify', [
- 'form_params' => [
- 'secret' => config('habbo.site.recaptcha_secret_key'),
- 'response' => $value,
- 'remoteip' => request()->ip(),
- ],
- ],
- );
-
- if ($response->getStatusCode() !== 200) {
- $fail(__('The Google recaptcha was not successful.'));
- }
-
- $body = json_decode((string) $response->getBody());
-
- return $body->success;
- }
-}
diff --git a/Updated_Cms/app/Rules/Password.php b/Updated_Cms/app/Rules/Password.php
deleted file mode 100644
index 4bc10cdc31..0000000000
--- a/Updated_Cms/app/Rules/Password.php
+++ /dev/null
@@ -1,180 +0,0 @@
-requireUppercase && Str::lower($value) === $value) {
- return false;
- }
-
- if ($this->requireNumeric && ! preg_match('/\d/', $value)) {
- return false;
- }
-
- if ($this->requireSpecialCharacter && ! preg_match('/[\W_]/', $value)) {
- return false;
- }
-
- return Str::length($value) >= $this->length;
- }
-
- /**
- * Get the validation error message.
- */
- public function message(): string
- {
- if ($this->message) {
- return $this->message;
- }
-
- return match (true) {
- $this->requireUppercase
- && ! $this->requireNumeric
- && ! $this->requireSpecialCharacter => __(
- 'The :attribute must be at least :length characters and contain at least one uppercase character.',
- [
- 'length' => $this->length,
- ],
- ),
- $this->requireNumeric
- && ! $this->requireUppercase
- && ! $this->requireSpecialCharacter => __(
- 'The :attribute must be at least :length characters and contain at least one number.',
- [
- 'length' => $this->length,
- ],
- ),
- $this->requireSpecialCharacter
- && ! $this->requireUppercase
- && ! $this->requireNumeric => __(
- 'The :attribute must be at least :length characters and contain at least one special character.',
- [
- 'length' => $this->length,
- ],
- ),
- $this->requireUppercase
- && $this->requireNumeric
- && ! $this->requireSpecialCharacter => __(
- 'The :attribute must be at least :length characters and contain at least one uppercase character and one number.',
- [
- 'length' => $this->length,
- ],
- ),
- $this->requireUppercase
- && $this->requireSpecialCharacter
- && ! $this->requireNumeric => __(
- 'The :attribute must be at least :length characters and contain at least one uppercase character and one special character.',
- [
- 'length' => $this->length,
- ],
- ),
- $this->requireUppercase
- && $this->requireNumeric
- && $this->requireSpecialCharacter => __(
- 'The :attribute must be at least :length characters and contain at least one uppercase character, one number, and one special character.',
- [
- 'length' => $this->length,
- ],
- ),
- $this->requireNumeric
- && $this->requireSpecialCharacter
- && ! $this->requireUppercase => __(
- 'The :attribute must be at least :length characters and contain at least one special character and one number.',
- [
- 'length' => $this->length,
- ],
- ),
- default => __('The :attribute must be at least :length characters.', [
- 'length' => $this->length,
- ]),
- };
- }
-
- /**
- * Set the minimum length of the password.
- */
- public function length(int $length)
- {
- $this->length = $length;
-
- return $this;
- }
-
- /**
- * Indicate that at least one uppercase character is required.
- */
- public function requireUppercase(): static
- {
- $this->requireUppercase = true;
-
- return $this;
- }
-
- /**
- * Indicate that at least one numeric digit is required.
- */
- public function requireNumeric(): static
- {
- $this->requireNumeric = true;
-
- return $this;
- }
-
- /**
- * Indicate that at least one special character is required.
- */
- public function requireSpecialCharacter(): static
- {
- $this->requireSpecialCharacter = true;
-
- return $this;
- }
-
- /**
- * Set the message that should be used when the rule fails.
- */
- public function withMessage(string $message): static
- {
- $this->message = $message;
-
- return $this;
- }
-}
diff --git a/Updated_Cms/app/Rules/TurnstileCheck.php b/Updated_Cms/app/Rules/TurnstileCheck.php
deleted file mode 100644
index c546420bec..0000000000
--- a/Updated_Cms/app/Rules/TurnstileCheck.php
+++ /dev/null
@@ -1,19 +0,0 @@
-installation_key) {
- $fail('The :attribute does not match');
- }
- }
-}
diff --git a/Updated_Cms/app/Rules/WebsiteWordfilterRule.php b/Updated_Cms/app/Rules/WebsiteWordfilterRule.php
deleted file mode 100644
index 1970129f8f..0000000000
--- a/Updated_Cms/app/Rules/WebsiteWordfilterRule.php
+++ /dev/null
@@ -1,22 +0,0 @@
-pluck('word')
- ->toArray();
-
- if (setting('website_wordfilter_enabled') === '1' && in_array(strtolower((string) $value), $words) || Str::contains(strtolower((string) $value), $words)) {
- $fail(__('You entered something that is not allowed on :hotel', ['hotel' => setting('hotel_name')]));
- }
- }
-}
diff --git a/Updated_Cms/app/Services/Articles/ArticleService.php b/Updated_Cms/app/Services/Articles/ArticleService.php
deleted file mode 100644
index 06f9d2a176..0000000000
--- a/Updated_Cms/app/Services/Articles/ArticleService.php
+++ /dev/null
@@ -1,24 +0,0 @@
- function ($query): void {
- $query->select('id', 'username', 'look');
- }])->orderByDesc('id');
-
- return $paginate ? $query->paginate($perPage) : $query->get();
- }
-
- public function fetchArticle(string $slug): WebsiteArticle
- {
- return WebsiteArticle::where('slug', '=', $slug)->firstOrFail();
- }
-}
diff --git a/Updated_Cms/app/Services/Articles/CommentService.php b/Updated_Cms/app/Services/Articles/CommentService.php
deleted file mode 100644
index a6e618784f..0000000000
--- a/Updated_Cms/app/Services/Articles/CommentService.php
+++ /dev/null
@@ -1,48 +0,0 @@
-userHasReachedArticleCommentLimit()) {
- return back()->withErrors([
- 'message' => __('You can only comment :amount times per article', ['amount' => setting('max_comment_per_article')]),
- ]);
- }
-
- if (! $article->can_comment) {
- return back()->withErrors([
- 'message' => __('This article has been locked from receiving comments'),
- ]);
- }
-
- return $article->comments()->create([
- 'user_id' => Auth::id(),
- 'comment' => $comment,
- ]);
- }
-
- public function destroy(WebsiteArticleComment $comment): bool|RedirectResponse|null
- {
- if (! $comment->canBeDeleted()) {
- return back()->withErrors([
- 'message' => __('You can only delete your own comments'),
- ]);
- }
-
- if (! $comment->delete()) {
- return back()->withErrors([
- 'message' => __('An error occurred while deleting the comment'),
- ]);
- }
-
- return $comment->delete();
- }
-}
diff --git a/Updated_Cms/app/Services/Articles/ReactionService.php b/Updated_Cms/app/Services/Articles/ReactionService.php
deleted file mode 100644
index 1f61410245..0000000000
--- a/Updated_Cms/app/Services/Articles/ReactionService.php
+++ /dev/null
@@ -1,36 +0,0 @@
-get('reaction');
-
- if (! is_string($reaction) || ! in_array($reaction, config('habbo.reactions'))) {
- return ['success' => false];
- }
-
- $existingReaction = WebsiteArticleReaction::getReaction($article->id, $user->id, $reaction);
-
- if ($existingReaction instanceof \App\Models\Articles\WebsiteArticleReaction) {
- $existingReaction->update(['active' => ! $existingReaction->active]);
- } else {
- $article->reactions()->create([
- 'reaction' => $reaction,
- ]);
- }
-
- return [
- 'success' => true,
- 'added' => $existingReaction?->active ?? true,
- 'username' => $user->username,
- ];
- }
-}
diff --git a/Updated_Cms/app/Services/Community/CameraService.php b/Updated_Cms/app/Services/Community/CameraService.php
deleted file mode 100644
index 7ed67b9937..0000000000
--- a/Updated_Cms/app/Services/Community/CameraService.php
+++ /dev/null
@@ -1,17 +0,0 @@
-latest('id')
- ->with('user:id,username,look');
-
- return $paginate ? $photos->paginate($perPage) : $photos->get();
- }
-}
diff --git a/Updated_Cms/app/Services/Community/RareValues/RareValueCategoriesService.php b/Updated_Cms/app/Services/Community/RareValues/RareValueCategoriesService.php
deleted file mode 100644
index ba57696532..0000000000
--- a/Updated_Cms/app/Services/Community/RareValues/RareValueCategoriesService.php
+++ /dev/null
@@ -1,36 +0,0 @@
-with('furniture')->get();
- }
-
- public function fetchCategoryById(int $id): ?WebsiteRareValueCategory
- {
- return WebsiteRareValueCategory::orderBy('priority')->whereId($id)->with('furniture')->first();
- }
-
- public function searchCategories(string $searchTerm): Collection
- {
- return WebsiteRareValueCategory::orderBy('priority')->whereHas('furniture', function ($query) use ($searchTerm): void {
- $query->where('name', 'like', '%' . $searchTerm . '%');
- })
- ->with(['furniture' => function ($query) use ($searchTerm): void {
- $query->where('name', 'like', '%' . $searchTerm . '%');
- }])
- ->get();
- }
-}
diff --git a/Updated_Cms/app/Services/Community/RareValues/RareValuesService.php b/Updated_Cms/app/Services/Community/RareValues/RareValuesService.php
deleted file mode 100644
index 2af5d3296c..0000000000
--- a/Updated_Cms/app/Services/Community/RareValues/RareValuesService.php
+++ /dev/null
@@ -1,5 +0,0 @@
-applications()->create([
- 'rank_id' => $positionId,
- 'content' => $content,
- ]);
- }
-
- public function fetchOpenPositions(): Collection
- {
- return WebsiteOpenPosition::canApply()->with('permission')->get();
- }
-
- public function hasUserAppliedForPosition($user, $positionId): bool
- {
- return $user->applications()->where('rank_id', $positionId)->exists();
- }
-
- public function isPositionOpenForApplication($position): bool
- {
- $currentTime = now();
-
- return $position->apply_from <= $currentTime && $position->apply_to >= $currentTime;
- }
-}
diff --git a/Updated_Cms/app/Services/Community/StaffService.php b/Updated_Cms/app/Services/Community/StaffService.php
deleted file mode 100644
index 73cdc31c64..0000000000
--- a/Updated_Cms/app/Services/Community/StaffService.php
+++ /dev/null
@@ -1,60 +0,0 @@
-select('id', 'rank_name', 'badge', 'staff_color', 'job_description')
- ->when(Auth::user()->rank < (int) setting('min_rank_to_see_hidden_staff'), fn ($query) => $query->where('hidden_rank', false))
- ->where('id', '>=', setting('min_staff_rank'))
- ->orderByDesc('id')
- ->with(['users' => function ($query): void {
- $query->select('id', 'username', 'rank', 'motto', 'look', 'hidden_staff', 'online')
- ->when(Auth::user()->rank < (int) setting('min_rank_to_see_hidden_staff'), fn ($query) => $query->where('hidden_staff', false));
- }])
- ->get();
-
- if ($cacheEnabled) {
- $cacheTimer = (int) setting('cache_timer');
- Cache::put('staff_positions', $employees, now()->addMinutes($cacheTimer));
- }
-
- return $employees;
- }
-
- public function fetchEmployeeIds(): array
- {
- $cacheEnabled = setting('enable_caching') === '1';
-
- if ($cacheEnabled && Cache::has('staff_ids')) {
- return Cache::get('staff_ids');
- }
-
- $staffIds = User::select('id')
- ->where('rank', '>=', setting('min_staff_rank'))
- ->get()
- ->pluck('id')->toArray();
-
- if ($cacheEnabled) {
- $cacheTimer = (int) setting('cache_timer');
- Cache::put('staff_ids', $staffIds, now()->addMinutes($cacheTimer));
- }
-
- return $staffIds;
- }
-}
diff --git a/Updated_Cms/app/Services/Community/TeamService.php b/Updated_Cms/app/Services/Community/TeamService.php
deleted file mode 100644
index 862a7a7aa9..0000000000
--- a/Updated_Cms/app/Services/Community/TeamService.php
+++ /dev/null
@@ -1,34 +0,0 @@
-where('hidden_rank', false)
- ->orderByDesc('id')
- ->with(['users' => function ($query): void {
- $query->select('id', 'username', 'look', 'motto', 'rank', 'team_id', 'online');
- }])
- ->get();
-
- if ($cacheEnabled) {
- $cacheTimer = (int) setting('cache_timer');
- Cache::put('hotel_teams', $employees, now()->addMinutes($cacheTimer));
- }
-
- return $employees;
- }
-}
diff --git a/Updated_Cms/app/Services/FindRetrosService.php b/Updated_Cms/app/Services/FindRetrosService.php
deleted file mode 100644
index fc3f688eb4..0000000000
--- a/Updated_Cms/app/Services/FindRetrosService.php
+++ /dev/null
@@ -1,79 +0,0 @@
-client = new Client(['verify' => false]);
- }
-
- /**
- * Check the user has voted.
- */
- public function checkHasVoted(): bool
- {
- if (! config('habbo.findretros.enabled')) {
- return true;
- }
-
- $cacheKey = sprintf(self::FIND_RETROS_CACHE_KEY, request()->ip());
- if (request()->ip() === '127.0.0.1') {
- return true;
- }
-
- if (request()->has('novote')) {
- return true;
- }
-
- if (Cache::has($cacheKey)) {
- return true;
- }
-
- $uri = sprintf(self::FIND_RETROS_VERIFY_URI, config('habbo.findretros.api'), config('habbo.findretros.name'), request()->ip());
- $request = $this->client->get($uri);
- $response = $request->getBody()->getContents();
-
- if (in_array($response, ['1', '2'])) {
- Cache::put($cacheKey, true, now()->addMinutes(30));
-
- return true;
- }
-
- return false;
- }
-
- /**
- * Retrieve the find retros redirect url.
- */
- public function getRedirectUri(): string
- {
- return sprintf(self::FIND_RETROS_REDIRECT_URI, config('habbo.findretros.api'), config('habbo.findretros.name'));
- }
-}
diff --git a/Updated_Cms/app/Services/HousekeepingPermissionsService.php b/Updated_Cms/app/Services/HousekeepingPermissionsService.php
deleted file mode 100644
index a8e8948786..0000000000
--- a/Updated_Cms/app/Services/HousekeepingPermissionsService.php
+++ /dev/null
@@ -1,25 +0,0 @@
-permissions = WebsiteHousekeepingPermission::all()->pluck('min_rank', 'permission');
- }
-
- public function getOrDefault(string $permissionName, bool $default = false): bool
- {
- if (! array_key_exists($permissionName, $this->permissions->toArray())) {
- return $default;
- }
-
- return auth()->check() && auth()->user()->rank >= (int) $this->permissions->get($permissionName);
- }
-}
diff --git a/Updated_Cms/app/Services/IpLookupService.php b/Updated_Cms/app/Services/IpLookupService.php
deleted file mode 100644
index 7209769a72..0000000000
--- a/Updated_Cms/app/Services/IpLookupService.php
+++ /dev/null
@@ -1,28 +0,0 @@
-get(sprintf('%s/%s?api-key=%s', $this->baseUrl, $ip, $this->apiKey));
-
- if (! $response->ok()) {
- $message = array_key_exists('message', $response->json()) ? $response->json()['message'] : 'Unknown error';
-
- return [
- 'message' => $message,
- 'status' => $response->status(),
- ];
- }
-
- return $response->json();
- }
-}
diff --git a/Updated_Cms/app/Services/PermissionsService.php b/Updated_Cms/app/Services/PermissionsService.php
deleted file mode 100644
index fb0c350ece..0000000000
--- a/Updated_Cms/app/Services/PermissionsService.php
+++ /dev/null
@@ -1,28 +0,0 @@
-addMinutes(30), fn () => WebsitePermission::all()->pluck('min_rank', 'permission'));
-
- $this->permissions = Cache::get('website_permissions');
- }
-
- public function getOrDefault(string $permissionName, bool $default = false): bool
- {
- if (! array_key_exists($permissionName, $this->permissions->toArray())) {
- return $default;
- }
-
- return auth()->check() && auth()->user()->rank >= (int) $this->permissions->get($permissionName);
- }
-}
diff --git a/Updated_Cms/app/Services/RconService.php b/Updated_Cms/app/Services/RconService.php
deleted file mode 100644
index b31e95f168..0000000000
--- a/Updated_Cms/app/Services/RconService.php
+++ /dev/null
@@ -1,257 +0,0 @@
-config = [
- 'ip' => setting('rcon_ip'),
- 'port' => (int) setting('rcon_port'),
- ];
-
- $this->initialize();
- }
-
- private function initialize(): void
- {
- $this->socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
-
- if (! $this->socket) {
- $error = socket_strerror(socket_last_error());
- Log::error("RCON initialization failed: $error");
-
- $this->closeConnection();
-
- return;
- }
-
- if (! @socket_connect($this->socket, $this->config['ip'], $this->config['port'])) {
- $error = socket_strerror(socket_last_error());
- Log::error("RCON connection failed: $error");
-
- $this->closeConnection();
-
- return;
- }
-
- $this->isConnected = true;
- }
-
- private function closeConnection(): void
- {
- if ($this->socket instanceof \Socket) {
- socket_close($this->socket);
- }
-
- $this->socket = null;
- $this->isConnected = false;
- }
-
- public function isConnected(): bool
- {
- return $this->isConnected;
- }
-
- /**
- * @throws RconConnectionException
- * @throws JsonException
- */
- public function sendCommand(string $command, ?array $data = null)
- {
- if (! $this->isConnected) {
- $error = 'RCON command failed: Not connected';
- Log::error($error);
-
- $this->closeConnection();
-
- return $this->isConnected;
- }
-
- $payload = json_encode(['key' => $command, 'data' => $data], JSON_THROW_ON_ERROR);
-
- if (! @socket_write($this->socket, $payload, strlen($payload))) {
- $error = socket_strerror(socket_last_error($this->socket));
- Log::error("RCON command ($command) failed: $error");
-
- $this->closeConnection();
-
- return $this->isConnected;
- }
-
- return $this->isConnected;
- }
-
- /**
- * @throws RconConnectionException|JsonException
- */
- public function sendGift($user, int $item_id, string $message = 'Here is a gift.'): void
- {
- $this->sendCommand('sendgift', [
- 'user_id' => $user->id,
- 'itemid' => $item_id,
- 'message' => $message,
- ]);
- }
-
- /**
- * @throws RconConnectionException|JsonException
- */
- public function giveCredits($user, int $credits): void
- {
- $this->sendCommand('givecredits', [
- 'user_id' => $user->id,
- 'credits' => $credits,
- ]);
- }
-
- /**
- * @throws RconConnectionException|JsonException
- */
- public function giveBadge($user, string $badge): void
- {
- $this->sendCommand('givebadge', [
- 'user_id' => $user->id,
- 'badge' => $badge,
- ]);
- }
-
- /**
- * @throws RconConnectionException|JsonException
- */
- public function setMotto($user, string $motto): void
- {
- $this->sendCommand('setmotto', [
- 'user_id' => $user->id,
- 'motto' => $motto,
- ]);
- }
-
- /**
- * @throws RconConnectionException|JsonException
- */
- public function updateWordFilter(): void
- {
- $this->sendCommand('updatewordfilter');
- }
-
- /**
- * @throws RconConnectionException|JsonException
- */
- public function disconnectUser($user): void
- {
- $this->sendCommand('disconnect', [
- 'user_id' => $user->id,
- 'username' => $user->username,
- ]);
- }
-
- /**
- * @throws RconConnectionException|JsonException
- */
- public function givePoints($user, CurrencyTypes $type, int $amount): void
- {
- $this->sendCommand('givepoints', [
- 'user_id' => $user->id,
- 'points' => $amount,
- 'type' => $type,
- ]);
- }
-
- /**
- * @throws RconConnectionException
- * @throws JsonException
- */
- public function giveGotw($user, int $amount): void
- {
- $this->givePoints($user, CurrencyTypes::Points, $amount);
- }
-
- /**
- * @throws RconConnectionException
- * @throws JsonException
- */
- public function giveDiamonds($user, int $amount): void
- {
- $this->givePoints($user, CurrencyTypes::Diamonds, $amount);
- }
-
- /**
- * @throws RconConnectionException
- * @throws JsonException
- */
- public function giveDuckets($user, int $amount): void
- {
- $this->givePoints($user, CurrencyTypes::DUCKETS, $amount);
- }
-
- /**
- * @throws RconConnectionException
- * @throws JsonException
- */
- public function setRank($user, int $rank): void
- {
- $this->sendCommand('setrank', [
- 'user_id' => $user->id,
- 'rank' => $rank,
- ]);
- }
-
- /**
- * @throws RconConnectionException
- * @throws JsonException
- */
- public function updateCatalog(): void
- {
- $this->sendCommand('updatecatalog');
- }
-
- /**
- * @throws RconConnectionException
- * @throws JsonException
- */
- public function alertUser($user, string $message): void
- {
- $this->sendCommand('alertuser', [
- 'user_id' => $user->id,
- 'message' => $message,
- ]);
- }
-
- /**
- * @throws RconConnectionException
- * @throws JsonException
- */
- public function forwardUser($user, int $roomId): void
- {
- $this->sendCommand('forwarduser', [
- 'user_id' => $user->id,
- 'room_id' => $roomId,
- ]);
- }
-
- /**
- * @throws RconConnectionException
- * @throws JsonException
- */
- public function updateConfig($user, string $command): void
- {
- $this->sendCommand('executecommand', [
- 'user_id' => $user->id,
- 'command' => $command,
- ]);
- }
-}
diff --git a/Updated_Cms/app/Services/SettingsService.php b/Updated_Cms/app/Services/SettingsService.php
deleted file mode 100644
index 772b9c65d7..0000000000
--- a/Updated_Cms/app/Services/SettingsService.php
+++ /dev/null
@@ -1,34 +0,0 @@
-addMinutes(5), fn () => Schema::hasTable('website_settings') ? WebsiteSetting::all()->pluck('value', 'key') : collect());
-
- $this->settings = Cache::get('website_settings');
- } catch (Throwable) {
- $this->settings = collect();
- }
- }
-
- public function getOrDefault(string $settingName, ?string $default = null): string
- {
- if (! $this->settings instanceof \Illuminate\Support\Collection) {
- return (string) $default;
- }
-
- return (string) $this->settings->get($settingName, $default);
- }
-}
diff --git a/Updated_Cms/app/Services/User/SessionService.php b/Updated_Cms/app/Services/User/SessionService.php
deleted file mode 100644
index 9058fc56ee..0000000000
--- a/Updated_Cms/app/Services/User/SessionService.php
+++ /dev/null
@@ -1,39 +0,0 @@
-sessions,
- )->map(function ($session) use ($request) {
- $agent = $this->createAgent($session);
-
- return (object) [
- 'agent' => [
- 'is_desktop' => $agent->isDesktop(),
- 'platform' => $agent->platform(),
- 'browser' => $agent->browser(),
- ],
- 'ip_address' => $session->ip_address,
- 'is_current_device' => $session->id === $request->session()->getId(),
- 'last_active' => \Illuminate\Support\Facades\Date::createFromTimestamp($session->last_activity)->diffForHumans(),
- ];
- });
- }
-
- protected function createAgent($session): Agent
- {
- return tap(new Agent, function ($agent) use ($session): void {
- $agent->setUserAgent($session->user_agent);
- });
- }
-}
diff --git a/Updated_Cms/app/Services/User/UserApiService.php b/Updated_Cms/app/Services/User/UserApiService.php
deleted file mode 100644
index 2365ef7b20..0000000000
--- a/Updated_Cms/app/Services/User/UserApiService.php
+++ /dev/null
@@ -1,30 +0,0 @@
-where('username', '=', $username)->first();
- }
-
- public function onlineUsers($columns = ['username', 'motto', 'look'], bool $randomOrder = true): Builder
- {
- $query = User::select($columns)->where('online', '=', '1');
-
- if ($randomOrder) {
- $query = $query->inRandomOrder();
- }
-
- return $query;
- }
-
- public function onlineUserCount(): int
- {
- return User::where('online', '=', '1')->count();
- }
-}
diff --git a/Updated_Cms/app/Services/User/UserService.php b/Updated_Cms/app/Services/User/UserService.php
deleted file mode 100644
index e0510d7930..0000000000
--- a/Updated_Cms/app/Services/User/UserService.php
+++ /dev/null
@@ -1,14 +0,0 @@
-first();
- }
-}
diff --git a/Updated_Cms/app/Services/ViteService.php b/Updated_Cms/app/Services/ViteService.php
deleted file mode 100644
index 659d249a1c..0000000000
--- a/Updated_Cms/app/Services/ViteService.php
+++ /dev/null
@@ -1,17 +0,0 @@
-', $url);
- }
-}
diff --git a/Updated_Cms/app/View/Components/AppLayout.php b/Updated_Cms/app/View/Components/AppLayout.php
deleted file mode 100644
index de0d46f58d..0000000000
--- a/Updated_Cms/app/View/Components/AppLayout.php
+++ /dev/null
@@ -1,17 +0,0 @@
-make(Illuminate\Contracts\Console\Kernel::class);
-
-$status = $kernel->handle(
- $input = new Symfony\Component\Console\Input\ArgvInput,
- new Symfony\Component\Console\Output\ConsoleOutput
-);
-
-/*
-|--------------------------------------------------------------------------
-| Shutdown The Application
-|--------------------------------------------------------------------------
-|
-| Once Artisan has finished running, we will fire off the shutdown events
-| so that any final work may be done by the application before we shut
-| down the process. This is the last thing to happen to the request.
-|
-*/
-
-$kernel->terminate($input, $status);
-
-exit($status);
diff --git a/Updated_Cms/bootstrap/app.php b/Updated_Cms/bootstrap/app.php
deleted file mode 100644
index 3d20e6e091..0000000000
--- a/Updated_Cms/bootstrap/app.php
+++ /dev/null
@@ -1,55 +0,0 @@
-singleton(
- Illuminate\Contracts\Http\Kernel::class,
- App\Http\Kernel::class,
-);
-
-$app->singleton(
- Illuminate\Contracts\Console\Kernel::class,
- App\Console\Kernel::class,
-);
-
-$app->singleton(
- Illuminate\Contracts\Debug\ExceptionHandler::class,
- App\Exceptions\Handler::class,
-);
-
-/*
-|--------------------------------------------------------------------------
-| Return The Application
-|--------------------------------------------------------------------------
-|
-| This script returns the application instance. The instance is given to
-| the calling script so we can separate the building of the instances
-| from the actual running of the application and sending responses.
-|
-*/
-
-return $app;
diff --git a/Updated_Cms/bootstrap/cache/.gitignore b/Updated_Cms/bootstrap/cache/.gitignore
deleted file mode 100644
index d6b7ef32c8..0000000000
--- a/Updated_Cms/bootstrap/cache/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/Updated_Cms/compose.yaml b/Updated_Cms/compose.yaml
deleted file mode 100644
index eb31de6b09..0000000000
--- a/Updated_Cms/compose.yaml
+++ /dev/null
@@ -1,82 +0,0 @@
-services:
- laravel.test:
- build:
- context: './vendor/laravel/sail/runtimes/8.4'
- dockerfile: Dockerfile
- args:
- WWWGROUP: '${WWWGROUP}'
- MYSQL_CLIENT: mariadb-client
- image: 'sail-8.4/app'
- extra_hosts:
- - 'host.docker.internal:host-gateway'
- ports:
- - '${APP_PORT:-80}:80'
- - '${VITE_PORT:-5173}:${VITE_PORT:-5173}'
- environment:
- WWWUSER: '${WWWUSER}'
- LARAVEL_SAIL: 1
- XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'
- XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'
- IGNITION_LOCAL_SITES_PATH: '${PWD}'
- volumes:
- - '.:/var/www/html'
- networks:
- - sail
- depends_on:
- - mariadb
- - redis
- - mailpit
- mariadb:
- image: 'mariadb:11'
- ports:
- - '${FORWARD_DB_PORT:-3306}:3306'
- environment:
- MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
- MYSQL_ROOT_HOST: '%'
- MYSQL_DATABASE: '${DB_DATABASE}'
- MYSQL_USER: '${DB_USERNAME}'
- MYSQL_PASSWORD: '${DB_PASSWORD}'
- MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
- volumes:
- - 'sail-mariadb:/var/lib/mysql'
- - './vendor/laravel/sail/database/mariadb/create-testing-database.sh:/docker-entrypoint-initdb.d/10-create-testing-database.sh'
- networks:
- - sail
- healthcheck:
- test:
- - CMD
- - healthcheck.sh
- - '--connect'
- - '--innodb_initialized'
- retries: 3
- timeout: 5s
- redis:
- image: 'redis:alpine'
- ports:
- - '${FORWARD_REDIS_PORT:-6379}:6379'
- volumes:
- - 'sail-redis:/data'
- networks:
- - sail
- healthcheck:
- test:
- - CMD
- - redis-cli
- - ping
- retries: 3
- timeout: 5s
- mailpit:
- image: 'axllent/mailpit:latest'
- ports:
- - '${FORWARD_MAILPIT_PORT:-1025}:1025'
- - '${FORWARD_MAILPIT_DASHBOARD_PORT:-8025}:8025'
- networks:
- - sail
-networks:
- sail:
- driver: bridge
-volumes:
- sail-mariadb:
- driver: local
- sail-redis:
- driver: local
diff --git a/Updated_Cms/composer.json b/Updated_Cms/composer.json
deleted file mode 100644
index e74a2f39ba..0000000000
--- a/Updated_Cms/composer.json
+++ /dev/null
@@ -1,89 +0,0 @@
-{
- "name": "laravel/laravel",
- "type": "project",
- "description": "The Laravel Framework.",
- "keywords": ["framework", "laravel"],
- "license": "MIT",
- "require": {
- "php": "^8.5",
- "ext-sockets": "*",
- "doctrine/dbal": "^4.0",
- "filament/filament": "^4.0",
- "flowframe/laravel-trend": "^0.4.0",
- "guzzlehttp/guzzle": "^7.9",
- "itsgoingd/clockwork": "^5.2",
- "jenssegers/agent": "^2.6",
- "laravel/fortify": "^1.20",
- "laravel/framework": "^12.0",
- "laravel/sanctum": "^4.0",
- "laravel/tinker": "^2.10",
- "opcodesio/log-viewer": "^3.1",
- "qirolab/laravel-themer": "^2.0",
- "ryangjchandler/laravel-cloudflare-turnstile": "*",
- "spatie/laravel-activitylog": "^4.9",
- "spatie/laravel-sluggable": "^3.7",
- "srmklive/paypal": "~3.0",
- "stevebauman/purify": "^6.1"
- },
- "require-dev": {
- "driftingly/rector-laravel": "^2.1",
- "fakerphp/faker": "^1.24",
- "filament/upgrade": "^4.0",
- "laravel/pint": "^1.18",
- "laravel/sail": "^1.30",
- "mockery/mockery": "^1.6.12",
- "nunomaduro/collision": "^8.5",
- "pestphp/pest": "^4.0",
- "phpunit/phpunit": "^12.0",
- "rector/rector": "^2.2",
- "spatie/laravel-ignition": "^2.5",
- "spatie/laravel-ray": "^1.37"
- },
- "autoload": {
- "psr-4": {
- "App\\": "app/",
- "Database\\Factories\\": "database/factories/",
- "Database\\Seeders\\": "database/seeders/"
- },
- "files": [
- "app/Helpers/helper.php"
- ]
- },
- "autoload-dev": {
- "psr-4": {
- "Tests\\": "tests/"
- }
- },
- "scripts": {
- "post-autoload-dump": [
- "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
- "@php artisan package:discover --ansi",
- "@php artisan filament:upgrade"
- ],
- "post-update-cmd": [
- "@php artisan vendor:publish --tag=laravel-assets --ansi --force"
- ],
- "post-root-package-install": [
- "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
- ],
- "post-create-project-cmd": [
- "@php artisan key:generate --ansi"
- ]
- },
- "extra": {
- "laravel": {
- "dont-discover": []
- }
- },
- "config": {
- "optimize-autoloader": true,
- "preferred-install": "dist",
- "sort-packages": true,
- "allow-plugins": {
- "pestphp/pest-plugin": true,
- "php-http/discovery": true
- }
- },
- "minimum-stability": "dev",
- "prefer-stable": true
-}
diff --git a/Updated_Cms/composer.lock b/Updated_Cms/composer.lock
deleted file mode 100644
index cd88e69cc6..0000000000
--- a/Updated_Cms/composer.lock
+++ /dev/null
@@ -1,14077 +0,0 @@
-{
- "_readme": [
- "This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
- "This file is @generated automatically"
- ],
- "content-hash": "0e756216f3e8b8de38da5692488cd7ca",
- "packages": [
- {
- "name": "anourvalar/eloquent-serialize",
- "version": "1.3.5",
- "source": {
- "type": "git",
- "url": "https://github.com/AnourValar/eloquent-serialize.git",
- "reference": "1a7dead8d532657e5358f8f27c0349373517681e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/AnourValar/eloquent-serialize/zipball/1a7dead8d532657e5358f8f27c0349373517681e",
- "reference": "1a7dead8d532657e5358f8f27c0349373517681e",
- "shasum": ""
- },
- "require": {
- "laravel/framework": "^8.0|^9.0|^10.0|^11.0|^12.0",
- "php": "^7.4|^8.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^3.26",
- "laravel/legacy-factories": "^1.1",
- "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0",
- "phpstan/phpstan": "^2.0",
- "phpunit/phpunit": "^9.5|^10.5|^11.0",
- "psalm/plugin-laravel": "^2.8|^3.0",
- "squizlabs/php_codesniffer": "^3.7"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "aliases": {
- "EloquentSerialize": "AnourValar\\EloquentSerialize\\Facades\\EloquentSerializeFacade"
- }
- }
- },
- "autoload": {
- "psr-4": {
- "AnourValar\\EloquentSerialize\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Laravel Query Builder (Eloquent) serialization",
- "homepage": "https://github.com/AnourValar/eloquent-serialize",
- "keywords": [
- "anourvalar",
- "builder",
- "copy",
- "eloquent",
- "job",
- "laravel",
- "query",
- "querybuilder",
- "queue",
- "serializable",
- "serialization",
- "serialize"
- ],
- "support": {
- "issues": "https://github.com/AnourValar/eloquent-serialize/issues",
- "source": "https://github.com/AnourValar/eloquent-serialize/tree/1.3.5"
- },
- "time": "2025-12-04T13:38:21+00:00"
- },
- {
- "name": "bacon/bacon-qr-code",
- "version": "v3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/Bacon/BaconQrCode.git",
- "reference": "36a1cb2b81493fa5b82e50bf8068bf84d1542563"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/36a1cb2b81493fa5b82e50bf8068bf84d1542563",
- "reference": "36a1cb2b81493fa5b82e50bf8068bf84d1542563",
- "shasum": ""
- },
- "require": {
- "dasprid/enum": "^1.0.3",
- "ext-iconv": "*",
- "php": "^8.1"
- },
- "require-dev": {
- "phly/keep-a-changelog": "^2.12",
- "phpunit/phpunit": "^10.5.11 || ^11.0.4",
- "spatie/phpunit-snapshot-assertions": "^5.1.5",
- "spatie/pixelmatch-php": "^1.2.0",
- "squizlabs/php_codesniffer": "^3.9"
- },
- "suggest": {
- "ext-imagick": "to generate QR code images"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "BaconQrCode\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "authors": [
- {
- "name": "Ben Scholzen 'DASPRiD'",
- "email": "mail@dasprids.de",
- "homepage": "https://dasprids.de/",
- "role": "Developer"
- }
- ],
- "description": "BaconQrCode is a QR code generator for PHP.",
- "homepage": "https://github.com/Bacon/BaconQrCode",
- "support": {
- "issues": "https://github.com/Bacon/BaconQrCode/issues",
- "source": "https://github.com/Bacon/BaconQrCode/tree/v3.0.3"
- },
- "time": "2025-11-19T17:15:36+00:00"
- },
- {
- "name": "blade-ui-kit/blade-heroicons",
- "version": "2.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/driesvints/blade-heroicons.git",
- "reference": "4553b2a1f6c76f0ac7f3bc0de4c0cfa06a097d19"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/driesvints/blade-heroicons/zipball/4553b2a1f6c76f0ac7f3bc0de4c0cfa06a097d19",
- "reference": "4553b2a1f6c76f0ac7f3bc0de4c0cfa06a097d19",
- "shasum": ""
- },
- "require": {
- "blade-ui-kit/blade-icons": "^1.6",
- "illuminate/support": "^9.0|^10.0|^11.0|^12.0",
- "php": "^8.0"
- },
- "require-dev": {
- "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0",
- "phpunit/phpunit": "^9.0|^10.5|^11.0"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "BladeUI\\Heroicons\\BladeHeroiconsServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "BladeUI\\Heroicons\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Dries Vints",
- "homepage": "https://driesvints.com"
- }
- ],
- "description": "A package to easily make use of Heroicons in your Laravel Blade views.",
- "homepage": "https://github.com/blade-ui-kit/blade-heroicons",
- "keywords": [
- "Heroicons",
- "blade",
- "laravel"
- ],
- "support": {
- "issues": "https://github.com/driesvints/blade-heroicons/issues",
- "source": "https://github.com/driesvints/blade-heroicons/tree/2.6.0"
- },
- "funding": [
- {
- "url": "https://github.com/sponsors/driesvints",
- "type": "github"
- },
- {
- "url": "https://www.paypal.com/paypalme/driesvints",
- "type": "paypal"
- }
- ],
- "time": "2025-02-13T20:53:33+00:00"
- },
- {
- "name": "blade-ui-kit/blade-icons",
- "version": "1.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/driesvints/blade-icons.git",
- "reference": "7b743f27476acb2ed04cb518213d78abe096e814"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/driesvints/blade-icons/zipball/7b743f27476acb2ed04cb518213d78abe096e814",
- "reference": "7b743f27476acb2ed04cb518213d78abe096e814",
- "shasum": ""
- },
- "require": {
- "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0|^12.0",
- "illuminate/filesystem": "^8.0|^9.0|^10.0|^11.0|^12.0",
- "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0",
- "illuminate/view": "^8.0|^9.0|^10.0|^11.0|^12.0",
- "php": "^7.4|^8.0",
- "symfony/console": "^5.3|^6.0|^7.0",
- "symfony/finder": "^5.3|^6.0|^7.0"
- },
- "require-dev": {
- "mockery/mockery": "^1.5.1",
- "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0",
- "phpunit/phpunit": "^9.0|^10.5|^11.0"
- },
- "bin": [
- "bin/blade-icons-generate"
- ],
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "BladeUI\\Icons\\BladeIconsServiceProvider"
- ]
- }
- },
- "autoload": {
- "files": [
- "src/helpers.php"
- ],
- "psr-4": {
- "BladeUI\\Icons\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Dries Vints",
- "homepage": "https://driesvints.com"
- }
- ],
- "description": "A package to easily make use of icons in your Laravel Blade views.",
- "homepage": "https://github.com/blade-ui-kit/blade-icons",
- "keywords": [
- "blade",
- "icons",
- "laravel",
- "svg"
- ],
- "support": {
- "issues": "https://github.com/blade-ui-kit/blade-icons/issues",
- "source": "https://github.com/blade-ui-kit/blade-icons"
- },
- "funding": [
- {
- "url": "https://github.com/sponsors/driesvints",
- "type": "github"
- },
- {
- "url": "https://www.paypal.com/paypalme/driesvints",
- "type": "paypal"
- }
- ],
- "time": "2025-02-13T20:35:06+00:00"
- },
- {
- "name": "brick/math",
- "version": "0.14.1",
- "source": {
- "type": "git",
- "url": "https://github.com/brick/math.git",
- "reference": "f05858549e5f9d7bb45875a75583240a38a281d0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/brick/math/zipball/f05858549e5f9d7bb45875a75583240a38a281d0",
- "reference": "f05858549e5f9d7bb45875a75583240a38a281d0",
- "shasum": ""
- },
- "require": {
- "php": "^8.2"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.2",
- "phpstan/phpstan": "2.1.22",
- "phpunit/phpunit": "^11.5"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Brick\\Math\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Arbitrary-precision arithmetic library",
- "keywords": [
- "Arbitrary-precision",
- "BigInteger",
- "BigRational",
- "arithmetic",
- "bigdecimal",
- "bignum",
- "bignumber",
- "brick",
- "decimal",
- "integer",
- "math",
- "mathematics",
- "rational"
- ],
- "support": {
- "issues": "https://github.com/brick/math/issues",
- "source": "https://github.com/brick/math/tree/0.14.1"
- },
- "funding": [
- {
- "url": "https://github.com/BenMorel",
- "type": "github"
- }
- ],
- "time": "2025-11-24T14:40:29+00:00"
- },
- {
- "name": "carbonphp/carbon-doctrine-types",
- "version": "3.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git",
- "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
- "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
- "shasum": ""
- },
- "require": {
- "php": "^8.1"
- },
- "conflict": {
- "doctrine/dbal": "<4.0.0 || >=5.0.0"
- },
- "require-dev": {
- "doctrine/dbal": "^4.0.0",
- "nesbot/carbon": "^2.71.0 || ^3.0.0",
- "phpunit/phpunit": "^10.3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Carbon\\Doctrine\\": "src/Carbon/Doctrine/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "KyleKatarn",
- "email": "kylekatarnls@gmail.com"
- }
- ],
- "description": "Types to use Carbon in Doctrine",
- "keywords": [
- "carbon",
- "date",
- "datetime",
- "doctrine",
- "time"
- ],
- "support": {
- "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues",
- "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0"
- },
- "funding": [
- {
- "url": "https://github.com/kylekatarnls",
- "type": "github"
- },
- {
- "url": "https://opencollective.com/Carbon",
- "type": "open_collective"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon",
- "type": "tidelift"
- }
- ],
- "time": "2024-02-09T16:56:22+00:00"
- },
- {
- "name": "chillerlan/php-qrcode",
- "version": "5.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/chillerlan/php-qrcode.git",
- "reference": "7b66282572fc14075c0507d74d9837dab25b38d6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/chillerlan/php-qrcode/zipball/7b66282572fc14075c0507d74d9837dab25b38d6",
- "reference": "7b66282572fc14075c0507d74d9837dab25b38d6",
- "shasum": ""
- },
- "require": {
- "chillerlan/php-settings-container": "^2.1.6 || ^3.2.1",
- "ext-mbstring": "*",
- "php": "^7.4 || ^8.0"
- },
- "require-dev": {
- "chillerlan/php-authenticator": "^4.3.1 || ^5.2.1",
- "ext-fileinfo": "*",
- "phan/phan": "^5.5.2",
- "phpcompatibility/php-compatibility": "10.x-dev",
- "phpmd/phpmd": "^2.15",
- "phpunit/phpunit": "^9.6",
- "setasign/fpdf": "^1.8.2",
- "slevomat/coding-standard": "^8.23.0",
- "squizlabs/php_codesniffer": "^4.0.0"
- },
- "suggest": {
- "chillerlan/php-authenticator": "Yet another Google authenticator! Also creates URIs for mobile apps.",
- "setasign/fpdf": "Required to use the QR FPDF output.",
- "simple-icons/simple-icons": "SVG icons that you can use to embed as logos in the QR Code"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "chillerlan\\QRCode\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT",
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Kazuhiko Arase",
- "homepage": "https://github.com/kazuhikoarase/qrcode-generator"
- },
- {
- "name": "ZXing Authors",
- "homepage": "https://github.com/zxing/zxing"
- },
- {
- "name": "Ashot Khanamiryan",
- "homepage": "https://github.com/khanamiryan/php-qrcode-detector-decoder"
- },
- {
- "name": "Smiley",
- "email": "smiley@chillerlan.net",
- "homepage": "https://github.com/codemasher"
- },
- {
- "name": "Contributors",
- "homepage": "https://github.com/chillerlan/php-qrcode/graphs/contributors"
- }
- ],
- "description": "A QR Code generator and reader with a user-friendly API. PHP 7.4+",
- "homepage": "https://github.com/chillerlan/php-qrcode",
- "keywords": [
- "phpqrcode",
- "qr",
- "qr code",
- "qr-reader",
- "qrcode",
- "qrcode-generator",
- "qrcode-reader"
- ],
- "support": {
- "docs": "https://php-qrcode.readthedocs.io",
- "issues": "https://github.com/chillerlan/php-qrcode/issues",
- "source": "https://github.com/chillerlan/php-qrcode"
- },
- "funding": [
- {
- "url": "https://ko-fi.com/codemasher",
- "type": "Ko-Fi"
- }
- ],
- "time": "2025-11-23T23:51:44+00:00"
- },
- {
- "name": "chillerlan/php-settings-container",
- "version": "3.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/chillerlan/php-settings-container.git",
- "reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/chillerlan/php-settings-container/zipball/95ed3e9676a1d47cab2e3174d19b43f5dbf52681",
- "reference": "95ed3e9676a1d47cab2e3174d19b43f5dbf52681",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "php": "^8.1"
- },
- "require-dev": {
- "phpmd/phpmd": "^2.15",
- "phpstan/phpstan": "^1.11",
- "phpstan/phpstan-deprecation-rules": "^1.2",
- "phpunit/phpunit": "^10.5",
- "squizlabs/php_codesniffer": "^3.10"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "chillerlan\\Settings\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Smiley",
- "email": "smiley@chillerlan.net",
- "homepage": "https://github.com/codemasher"
- }
- ],
- "description": "A container class for immutable settings objects. Not a DI container.",
- "homepage": "https://github.com/chillerlan/php-settings-container",
- "keywords": [
- "Settings",
- "configuration",
- "container",
- "helper"
- ],
- "support": {
- "issues": "https://github.com/chillerlan/php-settings-container/issues",
- "source": "https://github.com/chillerlan/php-settings-container"
- },
- "funding": [
- {
- "url": "https://www.paypal.com/donate?hosted_button_id=WLYUNAT9ZTJZ4",
- "type": "custom"
- },
- {
- "url": "https://ko-fi.com/codemasher",
- "type": "ko_fi"
- }
- ],
- "time": "2024-07-16T11:13:48+00:00"
- },
- {
- "name": "danharrin/date-format-converter",
- "version": "v0.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/danharrin/date-format-converter.git",
- "reference": "7c31171bc981e48726729a5f3a05a2d2b63f0b1e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/danharrin/date-format-converter/zipball/7c31171bc981e48726729a5f3a05a2d2b63f0b1e",
- "reference": "7c31171bc981e48726729a5f3a05a2d2b63f0b1e",
- "shasum": ""
- },
- "require": {
- "php": "^7.2|^8.0"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/helpers.php",
- "src/standards.php"
- ],
- "psr-4": {
- "DanHarrin\\DateFormatConverter\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Dan Harrin",
- "email": "dan@danharrin.com"
- }
- ],
- "description": "Convert token-based date formats between standards.",
- "homepage": "https://github.com/danharrin/date-format-converter",
- "support": {
- "issues": "https://github.com/danharrin/date-format-converter/issues",
- "source": "https://github.com/danharrin/date-format-converter"
- },
- "funding": [
- {
- "url": "https://github.com/danharrin",
- "type": "github"
- }
- ],
- "time": "2024-06-13T09:38:44+00:00"
- },
- {
- "name": "danharrin/livewire-rate-limiting",
- "version": "v2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/danharrin/livewire-rate-limiting.git",
- "reference": "14dde653a9ae8f38af07a0ba4921dc046235e1a0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/14dde653a9ae8f38af07a0ba4921dc046235e1a0",
- "reference": "14dde653a9ae8f38af07a0ba4921dc046235e1a0",
- "shasum": ""
- },
- "require": {
- "illuminate/support": "^9.0|^10.0|^11.0|^12.0",
- "php": "^8.0"
- },
- "require-dev": {
- "livewire/livewire": "^3.0",
- "livewire/volt": "^1.3",
- "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0",
- "phpunit/phpunit": "^9.0|^10.0|^11.5.3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "DanHarrin\\LivewireRateLimiting\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Dan Harrin",
- "email": "dan@danharrin.com"
- }
- ],
- "description": "Apply rate limiters to Laravel Livewire actions.",
- "homepage": "https://github.com/danharrin/livewire-rate-limiting",
- "support": {
- "issues": "https://github.com/danharrin/livewire-rate-limiting/issues",
- "source": "https://github.com/danharrin/livewire-rate-limiting"
- },
- "funding": [
- {
- "url": "https://github.com/danharrin",
- "type": "github"
- }
- ],
- "time": "2025-02-21T08:52:11+00:00"
- },
- {
- "name": "dasprid/enum",
- "version": "1.0.7",
- "source": {
- "type": "git",
- "url": "https://github.com/DASPRiD/Enum.git",
- "reference": "b5874fa9ed0043116c72162ec7f4fb50e02e7cce"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/b5874fa9ed0043116c72162ec7f4fb50e02e7cce",
- "reference": "b5874fa9ed0043116c72162ec7f4fb50e02e7cce",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1 <9.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11",
- "squizlabs/php_codesniffer": "*"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "DASPRiD\\Enum\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "authors": [
- {
- "name": "Ben Scholzen 'DASPRiD'",
- "email": "mail@dasprids.de",
- "homepage": "https://dasprids.de/",
- "role": "Developer"
- }
- ],
- "description": "PHP 7.1 enum implementation",
- "keywords": [
- "enum",
- "map"
- ],
- "support": {
- "issues": "https://github.com/DASPRiD/Enum/issues",
- "source": "https://github.com/DASPRiD/Enum/tree/1.0.7"
- },
- "time": "2025-09-16T12:23:56+00:00"
- },
- {
- "name": "dflydev/dot-access-data",
- "version": "v3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/dflydev/dflydev-dot-access-data.git",
- "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/a23a2bf4f31d3518f3ecb38660c95715dfead60f",
- "reference": "a23a2bf4f31d3518f3ecb38660c95715dfead60f",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "require-dev": {
- "phpstan/phpstan": "^0.12.42",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3",
- "scrutinizer/ocular": "1.6.0",
- "squizlabs/php_codesniffer": "^3.5",
- "vimeo/psalm": "^4.0.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Dflydev\\DotAccessData\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Dragonfly Development Inc.",
- "email": "info@dflydev.com",
- "homepage": "http://dflydev.com"
- },
- {
- "name": "Beau Simensen",
- "email": "beau@dflydev.com",
- "homepage": "http://beausimensen.com"
- },
- {
- "name": "Carlos Frutos",
- "email": "carlos@kiwing.it",
- "homepage": "https://github.com/cfrutos"
- },
- {
- "name": "Colin O'Dell",
- "email": "colinodell@gmail.com",
- "homepage": "https://www.colinodell.com"
- }
- ],
- "description": "Given a deep data structure, access data by dot notation.",
- "homepage": "https://github.com/dflydev/dflydev-dot-access-data",
- "keywords": [
- "access",
- "data",
- "dot",
- "notation"
- ],
- "support": {
- "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues",
- "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.3"
- },
- "time": "2024-07-08T12:26:09+00:00"
- },
- {
- "name": "doctrine/dbal",
- "version": "4.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/dbal.git",
- "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c",
- "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c",
- "shasum": ""
- },
- "require": {
- "doctrine/deprecations": "^1.1.5",
- "php": "^8.2",
- "psr/cache": "^1|^2|^3",
- "psr/log": "^1|^2|^3"
- },
- "require-dev": {
- "doctrine/coding-standard": "14.0.0",
- "fig/log-test": "^1",
- "jetbrains/phpstorm-stubs": "2023.2",
- "phpstan/phpstan": "2.1.30",
- "phpstan/phpstan-phpunit": "2.0.7",
- "phpstan/phpstan-strict-rules": "^2",
- "phpunit/phpunit": "11.5.23",
- "slevomat/coding-standard": "8.24.0",
- "squizlabs/php_codesniffer": "4.0.0",
- "symfony/cache": "^6.3.8|^7.0|^8.0",
- "symfony/console": "^5.4|^6.3|^7.0|^8.0"
- },
- "suggest": {
- "symfony/console": "For helpful console commands such as SQL execution and import of files."
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\DBAL\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- }
- ],
- "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
- "homepage": "https://www.doctrine-project.org/projects/dbal.html",
- "keywords": [
- "abstraction",
- "database",
- "db2",
- "dbal",
- "mariadb",
- "mssql",
- "mysql",
- "oci8",
- "oracle",
- "pdo",
- "pgsql",
- "postgresql",
- "queryobject",
- "sasql",
- "sql",
- "sqlite",
- "sqlserver",
- "sqlsrv"
- ],
- "support": {
- "issues": "https://github.com/doctrine/dbal/issues",
- "source": "https://github.com/doctrine/dbal/tree/4.4.1"
- },
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
- "type": "tidelift"
- }
- ],
- "time": "2025-12-04T10:11:03+00:00"
- },
- {
- "name": "doctrine/deprecations",
- "version": "1.1.5",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/deprecations.git",
- "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
- "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "conflict": {
- "phpunit/phpunit": "<=7.5 || >=13"
- },
- "require-dev": {
- "doctrine/coding-standard": "^9 || ^12 || ^13",
- "phpstan/phpstan": "1.4.10 || 2.1.11",
- "phpstan/phpstan-phpunit": "^1.0 || ^2",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12",
- "psr/log": "^1 || ^2 || ^3"
- },
- "suggest": {
- "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\Deprecations\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
- "homepage": "https://www.doctrine-project.org/",
- "support": {
- "issues": "https://github.com/doctrine/deprecations/issues",
- "source": "https://github.com/doctrine/deprecations/tree/1.1.5"
- },
- "time": "2025-04-07T20:06:18+00:00"
- },
- {
- "name": "doctrine/inflector",
- "version": "2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/inflector.git",
- "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b",
- "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "require-dev": {
- "doctrine/coding-standard": "^12.0 || ^13.0",
- "phpstan/phpstan": "^1.12 || ^2.0",
- "phpstan/phpstan-phpunit": "^1.4 || ^2.0",
- "phpstan/phpstan-strict-rules": "^1.6 || ^2.0",
- "phpunit/phpunit": "^8.5 || ^12.2"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\Inflector\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Benjamin Eberlei",
- "email": "kontakt@beberlei.de"
- },
- {
- "name": "Jonathan Wage",
- "email": "jonwage@gmail.com"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
- "homepage": "https://www.doctrine-project.org/projects/inflector.html",
- "keywords": [
- "inflection",
- "inflector",
- "lowercase",
- "manipulation",
- "php",
- "plural",
- "singular",
- "strings",
- "uppercase",
- "words"
- ],
- "support": {
- "issues": "https://github.com/doctrine/inflector/issues",
- "source": "https://github.com/doctrine/inflector/tree/2.1.0"
- },
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-10T19:31:58+00:00"
- },
- {
- "name": "doctrine/lexer",
- "version": "3.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/lexer.git",
- "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
- "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
- "shasum": ""
- },
- "require": {
- "php": "^8.1"
- },
- "require-dev": {
- "doctrine/coding-standard": "^12",
- "phpstan/phpstan": "^1.10",
- "phpunit/phpunit": "^10.5",
- "psalm/plugin-phpunit": "^0.18.3",
- "vimeo/psalm": "^5.21"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Doctrine\\Common\\Lexer\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Guilherme Blanco",
- "email": "guilhermeblanco@gmail.com"
- },
- {
- "name": "Roman Borschel",
- "email": "roman@code-factory.org"
- },
- {
- "name": "Johannes Schmitt",
- "email": "schmittjoh@gmail.com"
- }
- ],
- "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
- "homepage": "https://www.doctrine-project.org/projects/lexer.html",
- "keywords": [
- "annotations",
- "docblock",
- "lexer",
- "parser",
- "php"
- ],
- "support": {
- "issues": "https://github.com/doctrine/lexer/issues",
- "source": "https://github.com/doctrine/lexer/tree/3.0.1"
- },
- "funding": [
- {
- "url": "https://www.doctrine-project.org/sponsorship.html",
- "type": "custom"
- },
- {
- "url": "https://www.patreon.com/phpdoctrine",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
- "type": "tidelift"
- }
- ],
- "time": "2024-02-05T11:56:58+00:00"
- },
- {
- "name": "dragonmantank/cron-expression",
- "version": "v3.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/dragonmantank/cron-expression.git",
- "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/d61a8a9604ec1f8c3d150d09db6ce98b32675013",
- "reference": "d61a8a9604ec1f8c3d150d09db6ce98b32675013",
- "shasum": ""
- },
- "require": {
- "php": "^8.2|^8.3|^8.4|^8.5"
- },
- "replace": {
- "mtdowling/cron-expression": "^1.0"
- },
- "require-dev": {
- "phpstan/extension-installer": "^1.4.3",
- "phpstan/phpstan": "^1.12.32|^2.1.31",
- "phpunit/phpunit": "^8.5.48|^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Cron\\": "src/Cron/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Chris Tankersley",
- "email": "chris@ctankersley.com",
- "homepage": "https://github.com/dragonmantank"
- }
- ],
- "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due",
- "keywords": [
- "cron",
- "schedule"
- ],
- "support": {
- "issues": "https://github.com/dragonmantank/cron-expression/issues",
- "source": "https://github.com/dragonmantank/cron-expression/tree/v3.6.0"
- },
- "funding": [
- {
- "url": "https://github.com/dragonmantank",
- "type": "github"
- }
- ],
- "time": "2025-10-31T18:51:33+00:00"
- },
- {
- "name": "egulias/email-validator",
- "version": "4.0.4",
- "source": {
- "type": "git",
- "url": "https://github.com/egulias/EmailValidator.git",
- "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa",
- "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa",
- "shasum": ""
- },
- "require": {
- "doctrine/lexer": "^2.0 || ^3.0",
- "php": ">=8.1",
- "symfony/polyfill-intl-idn": "^1.26"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.2",
- "vimeo/psalm": "^5.12"
- },
- "suggest": {
- "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Egulias\\EmailValidator\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Eduardo Gulias Davis"
- }
- ],
- "description": "A library for validating emails against several RFCs",
- "homepage": "https://github.com/egulias/EmailValidator",
- "keywords": [
- "email",
- "emailvalidation",
- "emailvalidator",
- "validation",
- "validator"
- ],
- "support": {
- "issues": "https://github.com/egulias/EmailValidator/issues",
- "source": "https://github.com/egulias/EmailValidator/tree/4.0.4"
- },
- "funding": [
- {
- "url": "https://github.com/egulias",
- "type": "github"
- }
- ],
- "time": "2025-03-06T22:45:56+00:00"
- },
- {
- "name": "ezyang/htmlpurifier",
- "version": "v4.19.0",
- "source": {
- "type": "git",
- "url": "https://github.com/ezyang/htmlpurifier.git",
- "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/b287d2a16aceffbf6e0295559b39662612b77fcf",
- "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf",
- "shasum": ""
- },
- "require": {
- "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0"
- },
- "require-dev": {
- "cerdic/css-tidy": "^1.7 || ^2.0",
- "simpletest/simpletest": "dev-master"
- },
- "suggest": {
- "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.",
- "ext-bcmath": "Used for unit conversion and imagecrash protection",
- "ext-iconv": "Converts text to and from non-UTF-8 encodings",
- "ext-tidy": "Used for pretty-printing HTML"
- },
- "type": "library",
- "autoload": {
- "files": [
- "library/HTMLPurifier.composer.php"
- ],
- "psr-0": {
- "HTMLPurifier": "library/"
- },
- "exclude-from-classmap": [
- "/library/HTMLPurifier/Language/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "LGPL-2.1-or-later"
- ],
- "authors": [
- {
- "name": "Edward Z. Yang",
- "email": "admin@htmlpurifier.org",
- "homepage": "http://ezyang.com"
- }
- ],
- "description": "Standards compliant HTML filter written in PHP",
- "homepage": "http://htmlpurifier.org/",
- "keywords": [
- "html"
- ],
- "support": {
- "issues": "https://github.com/ezyang/htmlpurifier/issues",
- "source": "https://github.com/ezyang/htmlpurifier/tree/v4.19.0"
- },
- "time": "2025-10-17T16:34:55+00:00"
- },
- {
- "name": "facade/ignition-contracts",
- "version": "1.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/facade/ignition-contracts.git",
- "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267",
- "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267",
- "shasum": ""
- },
- "require": {
- "php": "^7.3|^8.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^v2.15.8",
- "phpunit/phpunit": "^9.3.11",
- "vimeo/psalm": "^3.17.1"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Facade\\IgnitionContracts\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
- "homepage": "https://flareapp.io",
- "role": "Developer"
- }
- ],
- "description": "Solution contracts for Ignition",
- "homepage": "https://github.com/facade/ignition-contracts",
- "keywords": [
- "contracts",
- "flare",
- "ignition"
- ],
- "support": {
- "issues": "https://github.com/facade/ignition-contracts/issues",
- "source": "https://github.com/facade/ignition-contracts/tree/1.0.2"
- },
- "time": "2020-10-16T08:27:54+00:00"
- },
- {
- "name": "filament/actions",
- "version": "v4.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/filamentphp/actions.git",
- "reference": "9498be6d520979e8613b576a96c430aa1e8725db"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/filamentphp/actions/zipball/9498be6d520979e8613b576a96c430aa1e8725db",
- "reference": "9498be6d520979e8613b576a96c430aa1e8725db",
- "shasum": ""
- },
- "require": {
- "anourvalar/eloquent-serialize": "^1.2",
- "filament/forms": "self.version",
- "filament/infolists": "self.version",
- "filament/notifications": "self.version",
- "filament/support": "self.version",
- "league/csv": "^9.27",
- "openspout/openspout": "^4.23",
- "php": "^8.2"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Filament\\Actions\\ActionsServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Filament\\Actions\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Easily add beautiful action modals to any Livewire component.",
- "homepage": "https://github.com/filamentphp/filament",
- "support": {
- "issues": "https://github.com/filamentphp/filament/issues",
- "source": "https://github.com/filamentphp/filament"
- },
- "time": "2026-01-07T12:49:20+00:00"
- },
- {
- "name": "filament/filament",
- "version": "v4.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/filamentphp/panels.git",
- "reference": "0b7eb4fdf32c41b6789bfdf60c9ba3056c99de1c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/filamentphp/panels/zipball/0b7eb4fdf32c41b6789bfdf60c9ba3056c99de1c",
- "reference": "0b7eb4fdf32c41b6789bfdf60c9ba3056c99de1c",
- "shasum": ""
- },
- "require": {
- "chillerlan/php-qrcode": "^5.0",
- "filament/actions": "self.version",
- "filament/forms": "self.version",
- "filament/infolists": "self.version",
- "filament/notifications": "self.version",
- "filament/schemas": "self.version",
- "filament/support": "self.version",
- "filament/tables": "self.version",
- "filament/widgets": "self.version",
- "php": "^8.2",
- "pragmarx/google2fa": "^8.0|^9.0",
- "pragmarx/google2fa-qrcode": "^3.0"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Filament\\FilamentServiceProvider"
- ]
- }
- },
- "autoload": {
- "files": [
- "src/global_helpers.php",
- "src/helpers.php"
- ],
- "psr-4": {
- "Filament\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "A collection of full-stack components for accelerated Laravel app development.",
- "homepage": "https://github.com/filamentphp/filament",
- "support": {
- "issues": "https://github.com/filamentphp/filament/issues",
- "source": "https://github.com/filamentphp/filament"
- },
- "time": "2026-01-07T12:49:48+00:00"
- },
- {
- "name": "filament/forms",
- "version": "v4.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/filamentphp/forms.git",
- "reference": "6865ac8caa164ea5e274167297bc3bd5335cd5f4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/filamentphp/forms/zipball/6865ac8caa164ea5e274167297bc3bd5335cd5f4",
- "reference": "6865ac8caa164ea5e274167297bc3bd5335cd5f4",
- "shasum": ""
- },
- "require": {
- "danharrin/date-format-converter": "^0.3",
- "filament/actions": "self.version",
- "filament/schemas": "self.version",
- "filament/support": "self.version",
- "php": "^8.2",
- "ueberdosis/tiptap-php": "^2.0"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Filament\\Forms\\FormsServiceProvider"
- ]
- }
- },
- "autoload": {
- "files": [
- "src/helpers.php"
- ],
- "psr-4": {
- "Filament\\Forms\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Easily add beautiful forms to any Livewire component.",
- "homepage": "https://github.com/filamentphp/filament",
- "support": {
- "issues": "https://github.com/filamentphp/filament/issues",
- "source": "https://github.com/filamentphp/filament"
- },
- "time": "2026-01-07T15:33:24+00:00"
- },
- {
- "name": "filament/infolists",
- "version": "v4.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/filamentphp/infolists.git",
- "reference": "beaa1bc7ec115369b5add11fc6e05fe234259d67"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/filamentphp/infolists/zipball/beaa1bc7ec115369b5add11fc6e05fe234259d67",
- "reference": "beaa1bc7ec115369b5add11fc6e05fe234259d67",
- "shasum": ""
- },
- "require": {
- "filament/actions": "self.version",
- "filament/schemas": "self.version",
- "filament/support": "self.version",
- "php": "^8.2"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Filament\\Infolists\\InfolistsServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Filament\\Infolists\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Easily add beautiful read-only infolists to any Livewire component.",
- "homepage": "https://github.com/filamentphp/filament",
- "support": {
- "issues": "https://github.com/filamentphp/filament/issues",
- "source": "https://github.com/filamentphp/filament"
- },
- "time": "2026-01-07T12:49:18+00:00"
- },
- {
- "name": "filament/notifications",
- "version": "v4.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/filamentphp/notifications.git",
- "reference": "f8657e9b98f549f316daf74cf24a659b85a10e12"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/filamentphp/notifications/zipball/f8657e9b98f549f316daf74cf24a659b85a10e12",
- "reference": "f8657e9b98f549f316daf74cf24a659b85a10e12",
- "shasum": ""
- },
- "require": {
- "filament/actions": "self.version",
- "filament/support": "self.version",
- "php": "^8.2"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Filament\\Notifications\\NotificationsServiceProvider"
- ]
- }
- },
- "autoload": {
- "files": [
- "src/Testing/helpers.php"
- ],
- "psr-4": {
- "Filament\\Notifications\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Easily add beautiful notifications to any Livewire app.",
- "homepage": "https://github.com/filamentphp/filament",
- "support": {
- "issues": "https://github.com/filamentphp/filament/issues",
- "source": "https://github.com/filamentphp/filament"
- },
- "time": "2025-11-28T11:21:34+00:00"
- },
- {
- "name": "filament/query-builder",
- "version": "v4.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/filamentphp/query-builder.git",
- "reference": "d9d3ecf78a87c4fad9dad7959d7280bc73f780ed"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/filamentphp/query-builder/zipball/d9d3ecf78a87c4fad9dad7959d7280bc73f780ed",
- "reference": "d9d3ecf78a87c4fad9dad7959d7280bc73f780ed",
- "shasum": ""
- },
- "require": {
- "filament/actions": "self.version",
- "filament/forms": "self.version",
- "filament/schemas": "self.version",
- "filament/support": "self.version",
- "php": "^8.2"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Filament\\QueryBuilder\\QueryBuilderServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Filament\\QueryBuilder\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "A powerful query builder component for Filament.",
- "homepage": "https://github.com/filamentphp/filament",
- "support": {
- "issues": "https://github.com/filamentphp/filament/issues",
- "source": "https://github.com/filamentphp/filament"
- },
- "time": "2025-12-30T13:02:08+00:00"
- },
- {
- "name": "filament/schemas",
- "version": "v4.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/filamentphp/schemas.git",
- "reference": "ca4af5fe00d460dce3c1547c4021c913d69134e1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/filamentphp/schemas/zipball/ca4af5fe00d460dce3c1547c4021c913d69134e1",
- "reference": "ca4af5fe00d460dce3c1547c4021c913d69134e1",
- "shasum": ""
- },
- "require": {
- "danharrin/date-format-converter": "^0.3",
- "filament/actions": "self.version",
- "filament/support": "self.version",
- "php": "^8.2"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Filament\\Schemas\\SchemasServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Filament\\Schemas\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Easily add beautiful UI to any Livewire component.",
- "homepage": "https://github.com/filamentphp/filament",
- "support": {
- "issues": "https://github.com/filamentphp/filament/issues",
- "source": "https://github.com/filamentphp/filament"
- },
- "time": "2026-01-07T12:50:00+00:00"
- },
- {
- "name": "filament/support",
- "version": "v4.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/filamentphp/support.git",
- "reference": "da8504394555982af3d6d948f7665af6b43b4ff0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/filamentphp/support/zipball/da8504394555982af3d6d948f7665af6b43b4ff0",
- "reference": "da8504394555982af3d6d948f7665af6b43b4ff0",
- "shasum": ""
- },
- "require": {
- "blade-ui-kit/blade-heroicons": "^2.5",
- "danharrin/livewire-rate-limiting": "^2.0",
- "ext-intl": "*",
- "illuminate/contracts": "^11.28|^12.0",
- "kirschbaum-development/eloquent-power-joins": "^4.0",
- "league/uri-components": "^7.0",
- "livewire/livewire": "^3.5",
- "nette/php-generator": "^4.0",
- "php": "^8.2",
- "ryangjchandler/blade-capture-directive": "^1.0",
- "spatie/invade": "^2.0",
- "spatie/laravel-package-tools": "^1.9",
- "symfony/console": "^7.0",
- "symfony/html-sanitizer": "^7.0"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Filament\\Support\\SupportServiceProvider"
- ]
- }
- },
- "autoload": {
- "files": [
- "src/helpers.php"
- ],
- "psr-4": {
- "Filament\\Support\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Core helper methods and foundation code for all Filament packages.",
- "homepage": "https://github.com/filamentphp/filament",
- "support": {
- "issues": "https://github.com/filamentphp/filament/issues",
- "source": "https://github.com/filamentphp/filament"
- },
- "time": "2026-01-07T15:35:02+00:00"
- },
- {
- "name": "filament/tables",
- "version": "v4.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/filamentphp/tables.git",
- "reference": "9b6de34dc711b7e16400913463afdf3f43e7e861"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/filamentphp/tables/zipball/9b6de34dc711b7e16400913463afdf3f43e7e861",
- "reference": "9b6de34dc711b7e16400913463afdf3f43e7e861",
- "shasum": ""
- },
- "require": {
- "filament/actions": "self.version",
- "filament/forms": "self.version",
- "filament/query-builder": "self.version",
- "filament/support": "self.version",
- "php": "^8.2"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Filament\\Tables\\TablesServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Filament\\Tables\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Easily add beautiful tables to any Livewire component.",
- "homepage": "https://github.com/filamentphp/filament",
- "support": {
- "issues": "https://github.com/filamentphp/filament/issues",
- "source": "https://github.com/filamentphp/filament"
- },
- "time": "2026-01-07T15:33:29+00:00"
- },
- {
- "name": "filament/widgets",
- "version": "v4.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/filamentphp/widgets.git",
- "reference": "a3c154738fe5224ccdd144ddf06068f069bc0917"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/filamentphp/widgets/zipball/a3c154738fe5224ccdd144ddf06068f069bc0917",
- "reference": "a3c154738fe5224ccdd144ddf06068f069bc0917",
- "shasum": ""
- },
- "require": {
- "filament/schemas": "self.version",
- "filament/support": "self.version",
- "php": "^8.2"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Filament\\Widgets\\WidgetsServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Filament\\Widgets\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Easily add beautiful dashboard widgets to any Livewire component.",
- "homepage": "https://github.com/filamentphp/filament",
- "support": {
- "issues": "https://github.com/filamentphp/filament/issues",
- "source": "https://github.com/filamentphp/filament"
- },
- "time": "2026-01-07T12:49:18+00:00"
- },
- {
- "name": "flowframe/laravel-trend",
- "version": "v0.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Flowframe/laravel-trend.git",
- "reference": "5ace11d3075932652dc48963faa732c043aeb14d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Flowframe/laravel-trend/zipball/5ace11d3075932652dc48963faa732c043aeb14d",
- "reference": "5ace11d3075932652dc48963faa732c043aeb14d",
- "shasum": ""
- },
- "require": {
- "illuminate/contracts": "^8.37|^9|^10.0|^11.0|^12.0",
- "php": "^8.2",
- "spatie/laravel-package-tools": "^1.4.3"
- },
- "require-dev": {
- "nunomaduro/collision": "^5.3|^6.1|^8.0",
- "orchestra/testbench": "^6.15|^7.0|^8.0|^9.0|^10.0",
- "pestphp/pest": "^1.18|^2.34|^3.7",
- "pestphp/pest-plugin-laravel": "^1.1|^2.3|^3.1",
- "spatie/laravel-ray": "^1.23",
- "vimeo/psalm": "^4.8|^5.6|^6.5"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "aliases": {
- "Trend": "Flowframe\\Trend\\TrendFacade"
- },
- "providers": [
- "Flowframe\\Trend\\TrendServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Flowframe\\Trend\\": "src",
- "Flowframe\\Trend\\Database\\Factories\\": "database/factories"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Lars Klopstra",
- "email": "lars@flowframe.nl",
- "role": "Developer"
- }
- ],
- "description": "Easily generate model trends",
- "homepage": "https://github.com/flowframe/laravel-trend",
- "keywords": [
- "Flowframe",
- "laravel",
- "laravel-trend"
- ],
- "support": {
- "issues": "https://github.com/Flowframe/laravel-trend/issues",
- "source": "https://github.com/Flowframe/laravel-trend/tree/v0.4.0"
- },
- "funding": [
- {
- "url": "https://github.com/larsklopstra",
- "type": "github"
- }
- ],
- "time": "2025-02-25T11:13:23+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": "^4"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Fruitcake\\Cors\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fruitcake",
- "homepage": "https://fruitcake.nl"
- },
- {
- "name": "Barryvdh",
- "email": "barryvdh@gmail.com"
- }
- ],
- "description": "Cross-origin resource sharing library for the Symfony HttpFoundation",
- "homepage": "https://github.com/fruitcake/php-cors",
- "keywords": [
- "cors",
- "laravel",
- "symfony"
- ],
- "support": {
- "issues": "https://github.com/fruitcake/php-cors/issues",
- "source": "https://github.com/fruitcake/php-cors/tree/v1.4.0"
- },
- "funding": [
- {
- "url": "https://fruitcake.nl",
- "type": "custom"
- },
- {
- "url": "https://github.com/barryvdh",
- "type": "github"
- }
- ],
- "time": "2025-12-03T09:33:47+00:00"
- },
- {
- "name": "graham-campbell/result-type",
- "version": "v1.1.4",
- "source": {
- "type": "git",
- "url": "https://github.com/GrahamCampbell/Result-Type.git",
- "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b"
- },
- "dist": {
- "type": "zip",
- "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.5"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "GrahamCampbell\\ResultType\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- }
- ],
- "description": "An Implementation Of The Result Type",
- "keywords": [
- "Graham Campbell",
- "GrahamCampbell",
- "Result Type",
- "Result-Type",
- "result"
- ],
- "support": {
- "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
- "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
- "type": "tidelift"
- }
- ],
- "time": "2025-12-27T19:43:20+00:00"
- },
- {
- "name": "guzzlehttp/guzzle",
- "version": "7.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
- "reference": "b51ac707cfa420b7bfd4e4d5e510ba8008e822b4",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "guzzlehttp/promises": "^2.3",
- "guzzlehttp/psr7": "^2.8",
- "php": "^7.2.5 || ^8.0",
- "psr/http-client": "^1.0",
- "symfony/deprecation-contracts": "^2.2 || ^3.0"
- },
- "provide": {
- "psr/http-client-implementation": "1.0"
- },
- "require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.2",
- "ext-curl": "*",
- "guzzle/client-integration-tests": "3.0.2",
- "php-http/message-factory": "^1.1",
- "phpunit/phpunit": "^8.5.39 || ^9.6.20",
- "psr/log": "^1.1 || ^2.0 || ^3.0"
- },
- "suggest": {
- "ext-curl": "Required for CURL handler support",
- "ext-intl": "Required for Internationalized Domain Name (IDN) support",
- "psr/log": "Required for using the Log middleware"
- },
- "type": "library",
- "extra": {
- "bamarni-bin": {
- "bin-links": true,
- "forward-command": false
- }
- },
- "autoload": {
- "files": [
- "src/functions_include.php"
- ],
- "psr-4": {
- "GuzzleHttp\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Jeremy Lindblom",
- "email": "jeremeamia@gmail.com",
- "homepage": "https://github.com/jeremeamia"
- },
- {
- "name": "George Mponos",
- "email": "gmponos@gmail.com",
- "homepage": "https://github.com/gmponos"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com",
- "homepage": "https://github.com/sagikazarmark"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "Guzzle is a PHP HTTP client library",
- "keywords": [
- "client",
- "curl",
- "framework",
- "http",
- "http client",
- "psr-18",
- "psr-7",
- "rest",
- "web service"
- ],
- "support": {
- "issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/7.10.0"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-23T22:36:01+00:00"
- },
- {
- "name": "guzzlehttp/promises",
- "version": "2.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/promises.git",
- "reference": "481557b130ef3790cf82b713667b43030dc9c957"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957",
- "reference": "481557b130ef3790cf82b713667b43030dc9c957",
- "shasum": ""
- },
- "require": {
- "php": "^7.2.5 || ^8.0"
- },
- "require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.2",
- "phpunit/phpunit": "^8.5.44 || ^9.6.25"
- },
- "type": "library",
- "extra": {
- "bamarni-bin": {
- "bin-links": true,
- "forward-command": false
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "Guzzle promises library",
- "keywords": [
- "promise"
- ],
- "support": {
- "issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/2.3.0"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-22T14:34:08+00:00"
- },
- {
- "name": "guzzlehttp/psr7",
- "version": "2.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/psr7.git",
- "reference": "21dc724a0583619cd1652f673303492272778051"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051",
- "reference": "21dc724a0583619cd1652f673303492272778051",
- "shasum": ""
- },
- "require": {
- "php": "^7.2.5 || ^8.0",
- "psr/http-factory": "^1.0",
- "psr/http-message": "^1.1 || ^2.0",
- "ralouphie/getallheaders": "^3.0"
- },
- "provide": {
- "psr/http-factory-implementation": "1.0",
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.2",
- "http-interop/http-factory-tests": "0.9.0",
- "phpunit/phpunit": "^8.5.44 || ^9.6.25"
- },
- "suggest": {
- "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
- },
- "type": "library",
- "extra": {
- "bamarni-bin": {
- "bin-links": true,
- "forward-command": false
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "George Mponos",
- "email": "gmponos@gmail.com",
- "homepage": "https://github.com/gmponos"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com",
- "homepage": "https://github.com/sagikazarmark"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- },
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com",
- "homepage": "https://sagikazarmark.hu"
- }
- ],
- "description": "PSR-7 message implementation that also provides common utility methods",
- "keywords": [
- "http",
- "message",
- "psr-7",
- "request",
- "response",
- "stream",
- "uri",
- "url"
- ],
- "support": {
- "issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/2.8.0"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-23T21:21:41+00:00"
- },
- {
- "name": "guzzlehttp/uri-template",
- "version": "v1.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/uri-template.git",
- "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/uri-template/zipball/4f4bbd4e7172148801e76e3decc1e559bdee34e1",
- "reference": "4f4bbd4e7172148801e76e3decc1e559bdee34e1",
- "shasum": ""
- },
- "require": {
- "php": "^7.2.5 || ^8.0",
- "symfony/polyfill-php80": "^1.24"
- },
- "require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.2",
- "phpunit/phpunit": "^8.5.44 || ^9.6.25",
- "uri-template/tests": "1.0.0"
- },
- "type": "library",
- "extra": {
- "bamarni-bin": {
- "bin-links": true,
- "forward-command": false
- }
- },
- "autoload": {
- "psr-4": {
- "GuzzleHttp\\UriTemplate\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "George Mponos",
- "email": "gmponos@gmail.com",
- "homepage": "https://github.com/gmponos"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- }
- ],
- "description": "A polyfill class for uri_template of PHP",
- "keywords": [
- "guzzlehttp",
- "uri-template"
- ],
- "support": {
- "issues": "https://github.com/guzzle/uri-template/issues",
- "source": "https://github.com/guzzle/uri-template/tree/v1.0.5"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-22T14:27:06+00:00"
- },
- {
- "name": "itsgoingd/clockwork",
- "version": "v5.3.5",
- "source": {
- "type": "git",
- "url": "https://github.com/itsgoingd/clockwork.git",
- "reference": "d928483e231f042dbff9258795cb17aadaebc7d0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/itsgoingd/clockwork/zipball/d928483e231f042dbff9258795cb17aadaebc7d0",
- "reference": "d928483e231f042dbff9258795cb17aadaebc7d0",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "php": ">=7.1"
- },
- "suggest": {
- "ext-pdo": "Needed in order to use a SQL database for metadata storage",
- "ext-pdo_mysql": "Needed in order to use MySQL for metadata storage",
- "ext-pdo_postgres": "Needed in order to use Postgres for metadata storage",
- "ext-pdo_sqlite": "Needed in order to use a SQLite for metadata storage",
- "ext-redis": "Needed in order to use Redis for metadata storage",
- "php-http/discovery": "Vanilla integration - required for the middleware zero-configuration setup"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "aliases": {
- "Clockwork": "Clockwork\\Support\\Laravel\\Facade"
- },
- "providers": [
- "Clockwork\\Support\\Laravel\\ClockworkServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Clockwork\\": "Clockwork/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "itsgoingd",
- "email": "itsgoingd@luzer.sk",
- "homepage": "https://twitter.com/itsgoingd"
- }
- ],
- "description": "php dev tools in your browser",
- "homepage": "https://underground.works/clockwork",
- "keywords": [
- "Devtools",
- "debugging",
- "laravel",
- "logging",
- "lumen",
- "profiling",
- "slim"
- ],
- "support": {
- "issues": "https://github.com/itsgoingd/clockwork/issues",
- "source": "https://github.com/itsgoingd/clockwork/tree/v5.3.5"
- },
- "funding": [
- {
- "url": "https://github.com/itsgoingd",
- "type": "github"
- }
- ],
- "time": "2025-09-14T15:34:49+00:00"
- },
- {
- "name": "jaybizzle/crawler-detect",
- "version": "v1.3.6",
- "source": {
- "type": "git",
- "url": "https://github.com/JayBizzle/Crawler-Detect.git",
- "reference": "61f2ef1ad2d0ae922c265931cb0a8032a1ed2813"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/JayBizzle/Crawler-Detect/zipball/61f2ef1ad2d0ae922c265931cb0a8032a1ed2813",
- "reference": "61f2ef1ad2d0ae922c265931cb0a8032a1ed2813",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8|^5.5|^6.5|^9.4"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Jaybizzle\\CrawlerDetect\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mark Beech",
- "email": "m@rkbee.ch",
- "role": "Developer"
- }
- ],
- "description": "CrawlerDetect is a PHP class for detecting bots/crawlers/spiders via the user agent",
- "homepage": "https://github.com/JayBizzle/Crawler-Detect/",
- "keywords": [
- "crawler",
- "crawler detect",
- "crawler detector",
- "crawlerdetect",
- "php crawler detect"
- ],
- "support": {
- "issues": "https://github.com/JayBizzle/Crawler-Detect/issues",
- "source": "https://github.com/JayBizzle/Crawler-Detect/tree/v1.3.6"
- },
- "time": "2025-09-30T16:22:43+00:00"
- },
- {
- "name": "jenssegers/agent",
- "version": "v2.6.4",
- "source": {
- "type": "git",
- "url": "https://github.com/jenssegers/agent.git",
- "reference": "daa11c43729510b3700bc34d414664966b03bffe"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/jenssegers/agent/zipball/daa11c43729510b3700bc34d414664966b03bffe",
- "reference": "daa11c43729510b3700bc34d414664966b03bffe",
- "shasum": ""
- },
- "require": {
- "jaybizzle/crawler-detect": "^1.2",
- "mobiledetect/mobiledetectlib": "^2.7.6",
- "php": ">=5.6"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5.0|^6.0|^7.0"
- },
- "suggest": {
- "illuminate/support": "Required for laravel service providers"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "aliases": {
- "Agent": "Jenssegers\\Agent\\Facades\\Agent"
- },
- "providers": [
- "Jenssegers\\Agent\\AgentServiceProvider"
- ]
- },
- "branch-alias": {
- "dev-master": "3.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Jenssegers\\Agent\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jens Segers",
- "homepage": "https://jenssegers.com"
- }
- ],
- "description": "Desktop/mobile user agent parser with support for Laravel, based on Mobiledetect",
- "homepage": "https://github.com/jenssegers/agent",
- "keywords": [
- "Agent",
- "browser",
- "desktop",
- "laravel",
- "mobile",
- "platform",
- "user agent",
- "useragent"
- ],
- "support": {
- "issues": "https://github.com/jenssegers/agent/issues",
- "source": "https://github.com/jenssegers/agent/tree/v2.6.4"
- },
- "funding": [
- {
- "url": "https://github.com/jenssegers",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/jenssegers/agent",
- "type": "tidelift"
- }
- ],
- "time": "2020-06-13T08:05:20+00:00"
- },
- {
- "name": "kirschbaum-development/eloquent-power-joins",
- "version": "4.2.11",
- "source": {
- "type": "git",
- "url": "https://github.com/kirschbaum-development/eloquent-power-joins.git",
- "reference": "0e3e3372992e4bf82391b3c7b84b435c3db73588"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/kirschbaum-development/eloquent-power-joins/zipball/0e3e3372992e4bf82391b3c7b84b435c3db73588",
- "reference": "0e3e3372992e4bf82391b3c7b84b435c3db73588",
- "shasum": ""
- },
- "require": {
- "illuminate/database": "^11.42|^12.0",
- "illuminate/support": "^11.42|^12.0",
- "php": "^8.2"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "dev-master",
- "laravel/legacy-factories": "^1.0@dev",
- "orchestra/testbench": "^9.0|^10.0",
- "phpunit/phpunit": "^10.0|^11.0"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Kirschbaum\\PowerJoins\\PowerJoinsServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Kirschbaum\\PowerJoins\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Luis Dalmolin",
- "email": "luis.nh@gmail.com",
- "role": "Developer"
- }
- ],
- "description": "The Laravel magic applied to joins.",
- "homepage": "https://github.com/kirschbaum-development/eloquent-power-joins",
- "keywords": [
- "eloquent",
- "join",
- "laravel",
- "mysql"
- ],
- "support": {
- "issues": "https://github.com/kirschbaum-development/eloquent-power-joins/issues",
- "source": "https://github.com/kirschbaum-development/eloquent-power-joins/tree/4.2.11"
- },
- "time": "2025-12-17T00:37:48+00:00"
- },
- {
- "name": "laravel/fortify",
- "version": "v1.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/laravel/fortify.git",
- "reference": "e0666dabeec0b6428678af1d51f436dcfb24e3a9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laravel/fortify/zipball/e0666dabeec0b6428678af1d51f436dcfb24e3a9",
- "reference": "e0666dabeec0b6428678af1d51f436dcfb24e3a9",
- "shasum": ""
- },
- "require": {
- "bacon/bacon-qr-code": "^3.0",
- "ext-json": "*",
- "illuminate/support": "^10.0|^11.0|^12.0",
- "php": "^8.1",
- "pragmarx/google2fa": "^9.0",
- "symfony/console": "^6.0|^7.0"
- },
- "require-dev": {
- "orchestra/testbench": "^8.36|^9.15|^10.8",
- "phpstan/phpstan": "^1.10"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Laravel\\Fortify\\FortifyServiceProvider"
- ]
- },
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Laravel\\Fortify\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "Backend controllers and scaffolding for Laravel authentication.",
- "keywords": [
- "auth",
- "laravel"
- ],
- "support": {
- "issues": "https://github.com/laravel/fortify/issues",
- "source": "https://github.com/laravel/fortify"
- },
- "time": "2025-12-15T14:48:33+00:00"
- },
- {
- "name": "laravel/framework",
- "version": "v12.45.2",
- "source": {
- "type": "git",
- "url": "https://github.com/laravel/framework.git",
- "reference": "d644693433290996bf764397b086228ce81781e6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/d644693433290996bf764397b086228ce81781e6",
- "reference": "d644693433290996bf764397b086228ce81781e6",
- "shasum": ""
- },
- "require": {
- "brick/math": "^0.11|^0.12|^0.13|^0.14",
- "composer-runtime-api": "^2.2",
- "doctrine/inflector": "^2.0.5",
- "dragonmantank/cron-expression": "^3.4",
- "egulias/email-validator": "^3.2.1|^4.0",
- "ext-ctype": "*",
- "ext-filter": "*",
- "ext-hash": "*",
- "ext-mbstring": "*",
- "ext-openssl": "*",
- "ext-session": "*",
- "ext-tokenizer": "*",
- "fruitcake/php-cors": "^1.3",
- "guzzlehttp/guzzle": "^7.8.2",
- "guzzlehttp/uri-template": "^1.0",
- "laravel/prompts": "^0.3.0",
- "laravel/serializable-closure": "^1.3|^2.0",
- "league/commonmark": "^2.7",
- "league/flysystem": "^3.25.1",
- "league/flysystem-local": "^3.25.1",
- "league/uri": "^7.5.1",
- "monolog/monolog": "^3.0",
- "nesbot/carbon": "^3.8.4",
- "nunomaduro/termwind": "^2.0",
- "php": "^8.2",
- "psr/container": "^1.1.1|^2.0.1",
- "psr/log": "^1.0|^2.0|^3.0",
- "psr/simple-cache": "^1.0|^2.0|^3.0",
- "ramsey/uuid": "^4.7",
- "symfony/console": "^7.2.0",
- "symfony/error-handler": "^7.2.0",
- "symfony/finder": "^7.2.0",
- "symfony/http-foundation": "^7.2.0",
- "symfony/http-kernel": "^7.2.0",
- "symfony/mailer": "^7.2.0",
- "symfony/mime": "^7.2.0",
- "symfony/polyfill-php83": "^1.33",
- "symfony/polyfill-php84": "^1.33",
- "symfony/polyfill-php85": "^1.33",
- "symfony/process": "^7.2.0",
- "symfony/routing": "^7.2.0",
- "symfony/uid": "^7.2.0",
- "symfony/var-dumper": "^7.2.0",
- "tijsverkoyen/css-to-inline-styles": "^2.2.5",
- "vlucas/phpdotenv": "^5.6.1",
- "voku/portable-ascii": "^2.0.2"
- },
- "conflict": {
- "tightenco/collect": "<5.5.33"
- },
- "provide": {
- "psr/container-implementation": "1.1|2.0",
- "psr/log-implementation": "1.0|2.0|3.0",
- "psr/simple-cache-implementation": "1.0|2.0|3.0"
- },
- "replace": {
- "illuminate/auth": "self.version",
- "illuminate/broadcasting": "self.version",
- "illuminate/bus": "self.version",
- "illuminate/cache": "self.version",
- "illuminate/collections": "self.version",
- "illuminate/concurrency": "self.version",
- "illuminate/conditionable": "self.version",
- "illuminate/config": "self.version",
- "illuminate/console": "self.version",
- "illuminate/container": "self.version",
- "illuminate/contracts": "self.version",
- "illuminate/cookie": "self.version",
- "illuminate/database": "self.version",
- "illuminate/encryption": "self.version",
- "illuminate/events": "self.version",
- "illuminate/filesystem": "self.version",
- "illuminate/hashing": "self.version",
- "illuminate/http": "self.version",
- "illuminate/json-schema": "self.version",
- "illuminate/log": "self.version",
- "illuminate/macroable": "self.version",
- "illuminate/mail": "self.version",
- "illuminate/notifications": "self.version",
- "illuminate/pagination": "self.version",
- "illuminate/pipeline": "self.version",
- "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",
- "illuminate/testing": "self.version",
- "illuminate/translation": "self.version",
- "illuminate/validation": "self.version",
- "illuminate/view": "self.version",
- "spatie/once": "*"
- },
- "require-dev": {
- "ably/ably-php": "^1.0",
- "aws/aws-sdk-php": "^3.322.9",
- "ext-gmp": "*",
- "fakerphp/faker": "^1.24",
- "guzzlehttp/promises": "^2.0.3",
- "guzzlehttp/psr7": "^2.4",
- "laravel/pint": "^1.18",
- "league/flysystem-aws-s3-v3": "^3.25.1",
- "league/flysystem-ftp": "^3.25.1",
- "league/flysystem-path-prefixing": "^3.25.1",
- "league/flysystem-read-only": "^3.25.1",
- "league/flysystem-sftp-v3": "^3.25.1",
- "mockery/mockery": "^1.6.10",
- "opis/json-schema": "^2.4.1",
- "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|^1.0",
- "symfony/cache": "^7.2.0",
- "symfony/http-client": "^7.2.0",
- "symfony/psr-http-message-bridge": "^7.2.0",
- "symfony/translation": "^7.2.0"
- },
- "suggest": {
- "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).",
- "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.322.9).",
- "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).",
- "ext-apcu": "Required to use the APC cache driver.",
- "ext-fileinfo": "Required to use the Filesystem class.",
- "ext-ftp": "Required to use the Flysystem FTP driver.",
- "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().",
- "ext-memcached": "Required to use the memcache cache driver.",
- "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.",
- "ext-pdo": "Required to use all database features.",
- "ext-posix": "Required to use all features of the queue worker.",
- "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0|^6.0).",
- "fakerphp/faker": "Required to generate fake data using the fake() helper (^1.23).",
- "filp/whoops": "Required for friendly error pages in development (^2.14.3).",
- "laravel/tinker": "Required to use the tinker console command (^2.0).",
- "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.25.1).",
- "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.25.1).",
- "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.25.1).",
- "league/flysystem-read-only": "Required to use read-only disks (^3.25.1)",
- "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.25.1).",
- "mockery/mockery": "Required to use mocking (^1.6).",
- "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).",
- "php-http/discovery": "Required to use PSR-7 bridging features (^1.15).",
- "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.5.3|^12.0.1).",
- "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|^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).",
- "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.2).",
- "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.2).",
- "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.2)."
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "12.x-dev"
- }
- },
- "autoload": {
- "files": [
- "src/Illuminate/Collections/functions.php",
- "src/Illuminate/Collections/helpers.php",
- "src/Illuminate/Events/functions.php",
- "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"
- ],
- "psr-4": {
- "Illuminate\\": "src/Illuminate/",
- "Illuminate\\Support\\": [
- "src/Illuminate/Macroable/",
- "src/Illuminate/Collections/",
- "src/Illuminate/Conditionable/",
- "src/Illuminate/Reflection/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "The Laravel Framework.",
- "homepage": "https://laravel.com",
- "keywords": [
- "framework",
- "laravel"
- ],
- "support": {
- "issues": "https://github.com/laravel/framework/issues",
- "source": "https://github.com/laravel/framework"
- },
- "time": "2026-01-07T15:03:01+00:00"
- },
- {
- "name": "laravel/prompts",
- "version": "v0.3.8",
- "source": {
- "type": "git",
- "url": "https://github.com/laravel/prompts.git",
- "reference": "096748cdfb81988f60090bbb839ce3205ace0d35"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laravel/prompts/zipball/096748cdfb81988f60090bbb839ce3205ace0d35",
- "reference": "096748cdfb81988f60090bbb839ce3205ace0d35",
- "shasum": ""
- },
- "require": {
- "composer-runtime-api": "^2.2",
- "ext-mbstring": "*",
- "php": "^8.1",
- "symfony/console": "^6.2|^7.0"
- },
- "conflict": {
- "illuminate/console": ">=10.17.0 <10.25.0",
- "laravel/framework": ">=10.17.0 <10.25.0"
- },
- "require-dev": {
- "illuminate/collections": "^10.0|^11.0|^12.0",
- "mockery/mockery": "^1.5",
- "pestphp/pest": "^2.3|^3.4|^4.0",
- "phpstan/phpstan": "^1.12.28",
- "phpstan/phpstan-mockery": "^1.1.3"
- },
- "suggest": {
- "ext-pcntl": "Required for the spinner to be animated."
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "0.3.x-dev"
- }
- },
- "autoload": {
- "files": [
- "src/helpers.php"
- ],
- "psr-4": {
- "Laravel\\Prompts\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "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.8"
- },
- "time": "2025-11-21T20:52:52+00:00"
- },
- {
- "name": "laravel/sanctum",
- "version": "v4.2.2",
- "source": {
- "type": "git",
- "url": "https://github.com/laravel/sanctum.git",
- "reference": "fd447754d2d3f56950d53b930128af2e3b617de9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laravel/sanctum/zipball/fd447754d2d3f56950d53b930128af2e3b617de9",
- "reference": "fd447754d2d3f56950d53b930128af2e3b617de9",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "illuminate/console": "^11.0|^12.0",
- "illuminate/contracts": "^11.0|^12.0",
- "illuminate/database": "^11.0|^12.0",
- "illuminate/support": "^11.0|^12.0",
- "php": "^8.2",
- "symfony/console": "^7.0"
- },
- "require-dev": {
- "mockery/mockery": "^1.6",
- "orchestra/testbench": "^9.15|^10.8",
- "phpstan/phpstan": "^1.10"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Laravel\\Sanctum\\SanctumServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Laravel\\Sanctum\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.",
- "keywords": [
- "auth",
- "laravel",
- "sanctum"
- ],
- "support": {
- "issues": "https://github.com/laravel/sanctum/issues",
- "source": "https://github.com/laravel/sanctum"
- },
- "time": "2026-01-06T23:11:51+00:00"
- },
- {
- "name": "laravel/serializable-closure",
- "version": "v2.0.7",
- "source": {
- "type": "git",
- "url": "https://github.com/laravel/serializable-closure.git",
- "reference": "cb291e4c998ac50637c7eeb58189c14f5de5b9dd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/cb291e4c998ac50637c7eeb58189c14f5de5b9dd",
- "reference": "cb291e4c998ac50637c7eeb58189c14f5de5b9dd",
- "shasum": ""
- },
- "require": {
- "php": "^8.1"
- },
- "require-dev": {
- "illuminate/support": "^10.0|^11.0|^12.0",
- "nesbot/carbon": "^2.67|^3.0",
- "pestphp/pest": "^2.36|^3.0|^4.0",
- "phpstan/phpstan": "^2.0",
- "symfony/var-dumper": "^6.2.0|^7.0.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Laravel\\SerializableClosure\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- },
- {
- "name": "Nuno Maduro",
- "email": "nuno@laravel.com"
- }
- ],
- "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.",
- "keywords": [
- "closure",
- "laravel",
- "serializable"
- ],
- "support": {
- "issues": "https://github.com/laravel/serializable-closure/issues",
- "source": "https://github.com/laravel/serializable-closure"
- },
- "time": "2025-11-21T20:52:36+00:00"
- },
- {
- "name": "laravel/tinker",
- "version": "v2.11.0",
- "source": {
- "type": "git",
- "url": "https://github.com/laravel/tinker.git",
- "reference": "3d34b97c9a1747a81a3fde90482c092bd8b66468"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laravel/tinker/zipball/3d34b97c9a1747a81a3fde90482c092bd8b66468",
- "reference": "3d34b97c9a1747a81a3fde90482c092bd8b66468",
- "shasum": ""
- },
- "require": {
- "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
- "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
- "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|^8.0"
- },
- "require-dev": {
- "mockery/mockery": "~1.3.3|^1.4.2",
- "phpstan/phpstan": "^1.10",
- "phpunit/phpunit": "^8.5.8|^9.3.3|^10.0"
- },
- "suggest": {
- "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0)."
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Laravel\\Tinker\\TinkerServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Laravel\\Tinker\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "Powerful REPL for the Laravel framework.",
- "keywords": [
- "REPL",
- "Tinker",
- "laravel",
- "psysh"
- ],
- "support": {
- "issues": "https://github.com/laravel/tinker/issues",
- "source": "https://github.com/laravel/tinker/tree/v2.11.0"
- },
- "time": "2025-12-19T19:16:45+00:00"
- },
- {
- "name": "league/commonmark",
- "version": "2.8.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/commonmark.git",
- "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb",
- "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb",
- "shasum": ""
- },
- "require": {
- "ext-mbstring": "*",
- "league/config": "^1.1.1",
- "php": "^7.4 || ^8.0",
- "psr/event-dispatcher": "^1.0",
- "symfony/deprecation-contracts": "^2.1 || ^3.0",
- "symfony/polyfill-php80": "^1.16"
- },
- "require-dev": {
- "cebe/markdown": "^1.0",
- "commonmark/cmark": "0.31.1",
- "commonmark/commonmark.js": "0.31.1",
- "composer/package-versions-deprecated": "^1.8",
- "embed/embed": "^4.4",
- "erusev/parsedown": "^1.0",
- "ext-json": "*",
- "github/gfm": "0.29.0",
- "michelf/php-markdown": "^1.4 || ^2.0",
- "nyholm/psr7": "^1.5",
- "phpstan/phpstan": "^1.8.2",
- "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0",
- "scrutinizer/ocular": "^1.8.1",
- "symfony/finder": "^5.3 | ^6.0 | ^7.0",
- "symfony/process": "^5.4 | ^6.0 | ^7.0",
- "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0",
- "unleashedtech/php-coding-standard": "^3.1.1",
- "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0"
- },
- "suggest": {
- "symfony/yaml": "v2.3+ required if using the Front Matter extension"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "2.9-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "League\\CommonMark\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Colin O'Dell",
- "email": "colinodell@gmail.com",
- "homepage": "https://www.colinodell.com",
- "role": "Lead Developer"
- }
- ],
- "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)",
- "homepage": "https://commonmark.thephpleague.com",
- "keywords": [
- "commonmark",
- "flavored",
- "gfm",
- "github",
- "github-flavored",
- "markdown",
- "md",
- "parser"
- ],
- "support": {
- "docs": "https://commonmark.thephpleague.com/",
- "forum": "https://github.com/thephpleague/commonmark/discussions",
- "issues": "https://github.com/thephpleague/commonmark/issues",
- "rss": "https://github.com/thephpleague/commonmark/releases.atom",
- "source": "https://github.com/thephpleague/commonmark"
- },
- "funding": [
- {
- "url": "https://www.colinodell.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://www.paypal.me/colinpodell/10.00",
- "type": "custom"
- },
- {
- "url": "https://github.com/colinodell",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/league/commonmark",
- "type": "tidelift"
- }
- ],
- "time": "2025-11-26T21:48:24+00:00"
- },
- {
- "name": "league/config",
- "version": "v1.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/config.git",
- "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
- "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3",
- "shasum": ""
- },
- "require": {
- "dflydev/dot-access-data": "^3.0.1",
- "nette/schema": "^1.2",
- "php": "^7.4 || ^8.0"
- },
- "require-dev": {
- "phpstan/phpstan": "^1.8.2",
- "phpunit/phpunit": "^9.5.5",
- "scrutinizer/ocular": "^1.8.1",
- "unleashedtech/php-coding-standard": "^3.1",
- "vimeo/psalm": "^4.7.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.2-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "League\\Config\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Colin O'Dell",
- "email": "colinodell@gmail.com",
- "homepage": "https://www.colinodell.com",
- "role": "Lead Developer"
- }
- ],
- "description": "Define configuration arrays with strict schemas and access values with dot notation",
- "homepage": "https://config.thephpleague.com",
- "keywords": [
- "array",
- "config",
- "configuration",
- "dot",
- "dot-access",
- "nested",
- "schema"
- ],
- "support": {
- "docs": "https://config.thephpleague.com/",
- "issues": "https://github.com/thephpleague/config/issues",
- "rss": "https://github.com/thephpleague/config/releases.atom",
- "source": "https://github.com/thephpleague/config"
- },
- "funding": [
- {
- "url": "https://www.colinodell.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://www.paypal.me/colinpodell/10.00",
- "type": "custom"
- },
- {
- "url": "https://github.com/colinodell",
- "type": "github"
- }
- ],
- "time": "2022-12-11T20:36:23+00:00"
- },
- {
- "name": "league/csv",
- "version": "9.28.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/csv.git",
- "reference": "6582ace29ae09ba5b07049d40ea13eb19c8b5073"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/csv/zipball/6582ace29ae09ba5b07049d40ea13eb19c8b5073",
- "reference": "6582ace29ae09ba5b07049d40ea13eb19c8b5073",
- "shasum": ""
- },
- "require": {
- "ext-filter": "*",
- "php": "^8.1.2"
- },
- "require-dev": {
- "ext-dom": "*",
- "ext-xdebug": "*",
- "friendsofphp/php-cs-fixer": "^3.92.3",
- "phpbench/phpbench": "^1.4.3",
- "phpstan/phpstan": "^1.12.32",
- "phpstan/phpstan-deprecation-rules": "^1.2.1",
- "phpstan/phpstan-phpunit": "^1.4.2",
- "phpstan/phpstan-strict-rules": "^1.6.2",
- "phpunit/phpunit": "^10.5.16 || ^11.5.22 || ^12.5.4",
- "symfony/var-dumper": "^6.4.8 || ^7.4.0 || ^8.0"
- },
- "suggest": {
- "ext-dom": "Required to use the XMLConverter and the HTMLConverter classes",
- "ext-iconv": "Needed to ease transcoding CSV using iconv stream filters",
- "ext-mbstring": "Needed to ease transcoding CSV using mb stream filters",
- "ext-mysqli": "Requiered to use the package with the MySQLi extension",
- "ext-pdo": "Required to use the package with the PDO extension",
- "ext-pgsql": "Requiered to use the package with the PgSQL extension",
- "ext-sqlite3": "Required to use the package with the SQLite3 extension"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "9.x-dev"
- }
- },
- "autoload": {
- "files": [
- "src/functions_include.php"
- ],
- "psr-4": {
- "League\\Csv\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ignace Nyamagana Butera",
- "email": "nyamsprod@gmail.com",
- "homepage": "https://github.com/nyamsprod/",
- "role": "Developer"
- }
- ],
- "description": "CSV data manipulation made easy in PHP",
- "homepage": "https://csv.thephpleague.com",
- "keywords": [
- "convert",
- "csv",
- "export",
- "filter",
- "import",
- "read",
- "transform",
- "write"
- ],
- "support": {
- "docs": "https://csv.thephpleague.com",
- "issues": "https://github.com/thephpleague/csv/issues",
- "rss": "https://github.com/thephpleague/csv/releases.atom",
- "source": "https://github.com/thephpleague/csv"
- },
- "funding": [
- {
- "url": "https://github.com/sponsors/nyamsprod",
- "type": "github"
- }
- ],
- "time": "2025-12-27T15:18:42+00:00"
- },
- {
- "name": "league/flysystem",
- "version": "3.30.2",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/flysystem.git",
- "reference": "5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277",
- "reference": "5966a8ba23e62bdb518dd9e0e665c2dbd4b5b277",
- "shasum": ""
- },
- "require": {
- "league/flysystem-local": "^3.0.0",
- "league/mime-type-detection": "^1.0.0",
- "php": "^8.0.2"
- },
- "conflict": {
- "async-aws/core": "<1.19.0",
- "async-aws/s3": "<1.14.0",
- "aws/aws-sdk-php": "3.209.31 || 3.210.0",
- "guzzlehttp/guzzle": "<7.0",
- "guzzlehttp/ringphp": "<1.1.1",
- "phpseclib/phpseclib": "3.0.15",
- "symfony/http-client": "<5.2"
- },
- "require-dev": {
- "async-aws/s3": "^1.5 || ^2.0",
- "async-aws/simple-s3": "^1.1 || ^2.0",
- "aws/aws-sdk-php": "^3.295.10",
- "composer/semver": "^3.0",
- "ext-fileinfo": "*",
- "ext-ftp": "*",
- "ext-mongodb": "^1.3|^2",
- "ext-zip": "*",
- "friendsofphp/php-cs-fixer": "^3.5",
- "google/cloud-storage": "^1.23",
- "guzzlehttp/psr7": "^2.6",
- "microsoft/azure-storage-blob": "^1.1",
- "mongodb/mongodb": "^1.2|^2",
- "phpseclib/phpseclib": "^3.0.36",
- "phpstan/phpstan": "^1.10",
- "phpunit/phpunit": "^9.5.11|^10.0",
- "sabre/dav": "^4.6.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "League\\Flysystem\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frankdejonge.nl"
- }
- ],
- "description": "File storage abstraction for PHP",
- "keywords": [
- "WebDAV",
- "aws",
- "cloud",
- "file",
- "files",
- "filesystem",
- "filesystems",
- "ftp",
- "s3",
- "sftp",
- "storage"
- ],
- "support": {
- "issues": "https://github.com/thephpleague/flysystem/issues",
- "source": "https://github.com/thephpleague/flysystem/tree/3.30.2"
- },
- "time": "2025-11-10T17:13:11+00:00"
- },
- {
- "name": "league/flysystem-local",
- "version": "3.30.2",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/flysystem-local.git",
- "reference": "ab4f9d0d672f601b102936aa728801dd1a11968d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/ab4f9d0d672f601b102936aa728801dd1a11968d",
- "reference": "ab4f9d0d672f601b102936aa728801dd1a11968d",
- "shasum": ""
- },
- "require": {
- "ext-fileinfo": "*",
- "league/flysystem": "^3.0.0",
- "league/mime-type-detection": "^1.0.0",
- "php": "^8.0.2"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "League\\Flysystem\\Local\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frankdejonge.nl"
- }
- ],
- "description": "Local filesystem adapter for Flysystem.",
- "keywords": [
- "Flysystem",
- "file",
- "files",
- "filesystem",
- "local"
- ],
- "support": {
- "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.2"
- },
- "time": "2025-11-10T11:23:37+00:00"
- },
- {
- "name": "league/mime-type-detection",
- "version": "1.16.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/mime-type-detection.git",
- "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/2d6702ff215bf922936ccc1ad31007edc76451b9",
- "reference": "2d6702ff215bf922936ccc1ad31007edc76451b9",
- "shasum": ""
- },
- "require": {
- "ext-fileinfo": "*",
- "php": "^7.4 || ^8.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^3.2",
- "phpstan/phpstan": "^0.12.68",
- "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "League\\MimeTypeDetection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Frank de Jonge",
- "email": "info@frankdejonge.nl"
- }
- ],
- "description": "Mime-type detection for Flysystem",
- "support": {
- "issues": "https://github.com/thephpleague/mime-type-detection/issues",
- "source": "https://github.com/thephpleague/mime-type-detection/tree/1.16.0"
- },
- "funding": [
- {
- "url": "https://github.com/frankdejonge",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
- "type": "tidelift"
- }
- ],
- "time": "2024-09-21T08:32:55+00:00"
- },
- {
- "name": "league/uri",
- "version": "7.7.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/uri.git",
- "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/uri/zipball/8d587cddee53490f9b82bf203d3a9aa7ea4f9807",
- "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807",
- "shasum": ""
- },
- "require": {
- "league/uri-interfaces": "^7.7",
- "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",
- "ext-uri": "to use the PHP native URI class",
- "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain",
- "league/uri-components": "Needed to easily manipulate URI objects components",
- "league/uri-polyfill": "Needed to backport the PHP URI extension for older versions of PHP",
- "php-64bit": "to improve IPV4 host parsing",
- "rowbot/url": "to handle WHATWG URL",
- "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "7.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "League\\Uri\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ignace Nyamagana Butera",
- "email": "nyamsprod@gmail.com",
- "homepage": "https://nyamsprod.com"
- }
- ],
- "description": "URI manipulation library",
- "homepage": "https://uri.thephpleague.com",
- "keywords": [
- "URN",
- "data-uri",
- "file-uri",
- "ftp",
- "hostname",
- "http",
- "https",
- "middleware",
- "parse_str",
- "parse_url",
- "psr-7",
- "query-string",
- "querystring",
- "rfc2141",
- "rfc3986",
- "rfc3987",
- "rfc6570",
- "rfc8141",
- "uri",
- "uri-template",
- "url",
- "ws"
- ],
- "support": {
- "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.7.0"
- },
- "funding": [
- {
- "url": "https://github.com/sponsors/nyamsprod",
- "type": "github"
- }
- ],
- "time": "2025-12-07T16:02:06+00:00"
- },
- {
- "name": "league/uri-components",
- "version": "7.7.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/uri-components.git",
- "reference": "005f8693ce8c1f16f80e88a05cbf08da04c1c374"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/uri-components/zipball/005f8693ce8c1f16f80e88a05cbf08da04c1c374",
- "reference": "005f8693ce8c1f16f80e88a05cbf08da04c1c374",
- "shasum": ""
- },
- "require": {
- "league/uri": "^7.7",
- "php": "^8.1"
- },
- "suggest": {
- "bakame/aide-uri": "A polyfill for PHP8.1 until PHP8.4 to add support to PHP Native URI parser",
- "ext-bcmath": "to improve IPV4 host parsing",
- "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",
- "ext-mbstring": "to use the sorting algorithm of URLSearchParams",
- "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain",
- "league/uri-polyfill": "Needed to backport the PHP URI extension for older versions of PHP",
- "php-64bit": "to improve IPV4 host parsing",
- "rowbot/url": "to handle WHATWG URL",
- "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "7.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "League\\Uri\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ignace Nyamagana Butera",
- "email": "nyamsprod@gmail.com",
- "homepage": "https://nyamsprod.com"
- }
- ],
- "description": "URI components manipulation library",
- "homepage": "http://uri.thephpleague.com",
- "keywords": [
- "authority",
- "components",
- "fragment",
- "host",
- "middleware",
- "modifier",
- "path",
- "port",
- "query",
- "rfc3986",
- "scheme",
- "uri",
- "url",
- "userinfo"
- ],
- "support": {
- "docs": "https://uri.thephpleague.com",
- "forum": "https://thephpleague.slack.com",
- "issues": "https://github.com/thephpleague/uri-src/issues",
- "source": "https://github.com/thephpleague/uri-components/tree/7.7.0"
- },
- "funding": [
- {
- "url": "https://github.com/nyamsprod",
- "type": "github"
- }
- ],
- "time": "2025-12-07T16:02:56+00:00"
- },
- {
- "name": "league/uri-interfaces",
- "version": "7.7.0",
- "source": {
- "type": "git",
- "url": "https://github.com/thephpleague/uri-interfaces.git",
- "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/62ccc1a0435e1c54e10ee6022df28d6c04c2946c",
- "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c",
- "shasum": ""
- },
- "require": {
- "ext-filter": "*",
- "php": "^8.1",
- "psr/http-message": "^1.1 || ^2.0"
- },
- "suggest": {
- "ext-bcmath": "to improve IPV4 host parsing",
- "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 WHATWG URL",
- "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "7.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "League\\Uri\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ignace Nyamagana Butera",
- "email": "nyamsprod@gmail.com",
- "homepage": "https://nyamsprod.com"
- }
- ],
- "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI",
- "homepage": "https://uri.thephpleague.com",
- "keywords": [
- "data-uri",
- "file-uri",
- "ftp",
- "hostname",
- "http",
- "https",
- "parse_str",
- "parse_url",
- "psr-7",
- "query-string",
- "querystring",
- "rfc3986",
- "rfc3987",
- "rfc6570",
- "uri",
- "url",
- "ws"
- ],
- "support": {
- "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.7.0"
- },
- "funding": [
- {
- "url": "https://github.com/sponsors/nyamsprod",
- "type": "github"
- }
- ],
- "time": "2025-12-07T16:03:21+00:00"
- },
- {
- "name": "livewire/livewire",
- "version": "v3.7.3",
- "source": {
- "type": "git",
- "url": "https://github.com/livewire/livewire.git",
- "reference": "a5384df9fbd3eaf02e053bc49aabc8ace293fc1c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/livewire/livewire/zipball/a5384df9fbd3eaf02e053bc49aabc8ace293fc1c",
- "reference": "a5384df9fbd3eaf02e053bc49aabc8ace293fc1c",
- "shasum": ""
- },
- "require": {
- "illuminate/database": "^10.0|^11.0|^12.0",
- "illuminate/routing": "^10.0|^11.0|^12.0",
- "illuminate/support": "^10.0|^11.0|^12.0",
- "illuminate/validation": "^10.0|^11.0|^12.0",
- "laravel/prompts": "^0.1.24|^0.2|^0.3",
- "league/mime-type-detection": "^1.9",
- "php": "^8.1",
- "symfony/console": "^6.0|^7.0",
- "symfony/http-kernel": "^6.2|^7.0"
- },
- "require-dev": {
- "calebporzio/sushi": "^2.1",
- "laravel/framework": "^10.15.0|^11.0|^12.0",
- "mockery/mockery": "^1.3.1",
- "orchestra/testbench": "^8.21.0|^9.0|^10.0",
- "orchestra/testbench-dusk": "^8.24|^9.1|^10.0",
- "phpunit/phpunit": "^10.4|^11.5",
- "psy/psysh": "^0.11.22|^0.12"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "aliases": {
- "Livewire": "Livewire\\Livewire"
- },
- "providers": [
- "Livewire\\LivewireServiceProvider"
- ]
- }
- },
- "autoload": {
- "files": [
- "src/helpers.php"
- ],
- "psr-4": {
- "Livewire\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Caleb Porzio",
- "email": "calebporzio@gmail.com"
- }
- ],
- "description": "A front-end framework for Laravel.",
- "support": {
- "issues": "https://github.com/livewire/livewire/issues",
- "source": "https://github.com/livewire/livewire/tree/v3.7.3"
- },
- "funding": [
- {
- "url": "https://github.com/livewire",
- "type": "github"
- }
- ],
- "time": "2025-12-19T02:00:29+00:00"
- },
- {
- "name": "masterminds/html5",
- "version": "2.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Masterminds/html5-php.git",
- "reference": "fcf91eb64359852f00d921887b219479b4f21251"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fcf91eb64359852f00d921887b219479b4f21251",
- "reference": "fcf91eb64359852f00d921887b219479b4f21251",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Masterminds\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Matt Butcher",
- "email": "technosophos@gmail.com"
- },
- {
- "name": "Matt Farina",
- "email": "matt@mattfarina.com"
- },
- {
- "name": "Asmir Mustafic",
- "email": "goetas@gmail.com"
- }
- ],
- "description": "An HTML5 parser and serializer.",
- "homepage": "http://masterminds.github.io/html5-php",
- "keywords": [
- "HTML5",
- "dom",
- "html",
- "parser",
- "querypath",
- "serializer",
- "xml"
- ],
- "support": {
- "issues": "https://github.com/Masterminds/html5-php/issues",
- "source": "https://github.com/Masterminds/html5-php/tree/2.10.0"
- },
- "time": "2025-07-25T09:04:22+00:00"
- },
- {
- "name": "mobiledetect/mobiledetectlib",
- "version": "2.8.45",
- "source": {
- "type": "git",
- "url": "https://github.com/serbanghita/Mobile-Detect.git",
- "reference": "96aaebcf4f50d3d2692ab81d2c5132e425bca266"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/serbanghita/Mobile-Detect/zipball/96aaebcf4f50d3d2692ab81d2c5132e425bca266",
- "reference": "96aaebcf4f50d3d2692ab81d2c5132e425bca266",
- "shasum": ""
- },
- "require": {
- "php": ">=5.0.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.8.36"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "Detection": "namespaced/"
- },
- "classmap": [
- "Mobile_Detect.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Serban Ghita",
- "email": "serbanghita@gmail.com",
- "homepage": "http://mobiledetect.net",
- "role": "Developer"
- }
- ],
- "description": "Mobile_Detect is a lightweight PHP class for detecting mobile devices. It uses the User-Agent string combined with specific HTTP headers to detect the mobile environment.",
- "homepage": "https://github.com/serbanghita/Mobile-Detect",
- "keywords": [
- "detect mobile devices",
- "mobile",
- "mobile detect",
- "mobile detector",
- "php mobile detect"
- ],
- "support": {
- "issues": "https://github.com/serbanghita/Mobile-Detect/issues",
- "source": "https://github.com/serbanghita/Mobile-Detect/tree/2.8.45"
- },
- "funding": [
- {
- "url": "https://github.com/serbanghita",
- "type": "github"
- }
- ],
- "time": "2023-11-07T21:57:25+00:00"
- },
- {
- "name": "monolog/monolog",
- "version": "3.10.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Seldaek/monolog.git",
- "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0",
- "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1",
- "psr/log": "^2.0 || ^3.0"
- },
- "provide": {
- "psr/log-implementation": "3.0.0"
- },
- "require-dev": {
- "aws/aws-sdk-php": "^3.0",
- "doctrine/couchdb": "~1.0@dev",
- "elasticsearch/elasticsearch": "^7 || ^8",
- "ext-json": "*",
- "graylog2/gelf-php": "^1.4.2 || ^2.0",
- "guzzlehttp/guzzle": "^7.4.5",
- "guzzlehttp/psr7": "^2.2",
- "mongodb/mongodb": "^1.8 || ^2.0",
- "php-amqplib/php-amqplib": "~2.4 || ^3",
- "php-console/php-console": "^3.1.8",
- "phpstan/phpstan": "^2",
- "phpstan/phpstan-deprecation-rules": "^2",
- "phpstan/phpstan-strict-rules": "^2",
- "phpunit/phpunit": "^10.5.17 || ^11.0.7",
- "predis/predis": "^1.1 || ^2",
- "rollbar/rollbar": "^4.0",
- "ruflin/elastica": "^7 || ^8",
- "symfony/mailer": "^5.4 || ^6",
- "symfony/mime": "^5.4 || ^6"
- },
- "suggest": {
- "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
- "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
- "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
- "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
- "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
- "ext-mbstring": "Allow to work properly with unicode symbols",
- "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
- "ext-openssl": "Required to send log messages using SSL",
- "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
- "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
- "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
- "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
- "rollbar/rollbar": "Allow sending log messages to Rollbar",
- "ruflin/elastica": "Allow sending log messages to an Elastic Search server"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Monolog\\": "src/Monolog"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "https://seld.be"
- }
- ],
- "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
- "homepage": "https://github.com/Seldaek/monolog",
- "keywords": [
- "log",
- "logging",
- "psr-3"
- ],
- "support": {
- "issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/3.10.0"
- },
- "funding": [
- {
- "url": "https://github.com/Seldaek",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/monolog/monolog",
- "type": "tidelift"
- }
- ],
- "time": "2026-01-02T08:56:05+00:00"
- },
- {
- "name": "nesbot/carbon",
- "version": "3.11.0",
- "source": {
- "type": "git",
- "url": "https://github.com/CarbonPHP/carbon.git",
- "reference": "bdb375400dcd162624531666db4799b36b64e4a1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/bdb375400dcd162624531666db4799b36b64e4a1",
- "reference": "bdb375400dcd162624531666db4799b36b64e4a1",
- "shasum": ""
- },
- "require": {
- "carbonphp/carbon-doctrine-types": "<100.0",
- "ext-json": "*",
- "php": "^8.1",
- "psr/clock": "^1.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 || ^8.0"
- },
- "provide": {
- "psr/clock-implementation": "1.0"
- },
- "require-dev": {
- "doctrine/dbal": "^3.6.3 || ^4.0",
- "doctrine/orm": "^2.15.2 || ^3.0",
- "friendsofphp/php-cs-fixer": "^v3.87.1",
- "kylekatarnls/multi-tester": "^2.5.3",
- "phpmd/phpmd": "^2.15.0",
- "phpstan/extension-installer": "^1.4.3",
- "phpstan/phpstan": "^2.1.22",
- "phpunit/phpunit": "^10.5.53",
- "squizlabs/php_codesniffer": "^3.13.4"
- },
- "bin": [
- "bin/carbon"
- ],
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Carbon\\Laravel\\ServiceProvider"
- ]
- },
- "phpstan": {
- "includes": [
- "extension.neon"
- ]
- },
- "branch-alias": {
- "dev-2.x": "2.x-dev",
- "dev-master": "3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Carbon\\": "src/Carbon/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Brian Nesbitt",
- "email": "brian@nesbot.com",
- "homepage": "https://markido.com"
- },
- {
- "name": "kylekatarnls",
- "homepage": "https://github.com/kylekatarnls"
- }
- ],
- "description": "An API extension for DateTime that supports 281 different languages.",
- "homepage": "https://carbon.nesbot.com",
- "keywords": [
- "date",
- "datetime",
- "time"
- ],
- "support": {
- "docs": "https://carbon.nesbot.com/docs",
- "issues": "https://github.com/CarbonPHP/carbon/issues",
- "source": "https://github.com/CarbonPHP/carbon"
- },
- "funding": [
- {
- "url": "https://github.com/sponsors/kylekatarnls",
- "type": "github"
- },
- {
- "url": "https://opencollective.com/Carbon#sponsor",
- "type": "opencollective"
- },
- {
- "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme",
- "type": "tidelift"
- }
- ],
- "time": "2025-12-02T21:04:28+00:00"
- },
- {
- "name": "nette/php-generator",
- "version": "v4.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/php-generator.git",
- "reference": "4707546a1f11badd72f5d82af4f8a6bc64bd56ac"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/php-generator/zipball/4707546a1f11badd72f5d82af4f8a6bc64bd56ac",
- "reference": "4707546a1f11badd72f5d82af4f8a6bc64bd56ac",
- "shasum": ""
- },
- "require": {
- "nette/utils": "^4.0.6",
- "php": "8.1 - 8.5"
- },
- "require-dev": {
- "jetbrains/phpstorm-attributes": "^1.2",
- "nette/tester": "^2.4",
- "nikic/php-parser": "^5.0",
- "phpstan/phpstan-nette": "^2.0@stable",
- "tracy/tracy": "^2.8"
- },
- "suggest": {
- "nikic/php-parser": "to use ClassType::from(withBodies: true) & ClassType::fromCode()"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.2-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Nette\\": "src"
- },
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0-only",
- "GPL-3.0-only"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 8.5 features.",
- "homepage": "https://nette.org",
- "keywords": [
- "code",
- "nette",
- "php",
- "scaffolding"
- ],
- "support": {
- "issues": "https://github.com/nette/php-generator/issues",
- "source": "https://github.com/nette/php-generator/tree/v4.2.0"
- },
- "time": "2025-08-06T18:24:31+00:00"
- },
- {
- "name": "nette/schema",
- "version": "v1.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/schema.git",
- "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/schema/zipball/2befc2f42d7c715fd9d95efc31b1081e5d765004",
- "reference": "2befc2f42d7c715fd9d95efc31b1081e5d765004",
- "shasum": ""
- },
- "require": {
- "nette/utils": "^4.0",
- "php": "8.1 - 8.5"
- },
- "require-dev": {
- "nette/tester": "^2.5.2",
- "phpstan/phpstan-nette": "^2.0@stable",
- "tracy/tracy": "^2.8"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.3-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Nette\\": "src"
- },
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0-only",
- "GPL-3.0-only"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "📐 Nette Schema: validating data structures against a given Schema.",
- "homepage": "https://nette.org",
- "keywords": [
- "config",
- "nette"
- ],
- "support": {
- "issues": "https://github.com/nette/schema/issues",
- "source": "https://github.com/nette/schema/tree/v1.3.3"
- },
- "time": "2025-10-30T22:57:59+00:00"
- },
- {
- "name": "nette/utils",
- "version": "v4.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/nette/utils.git",
- "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72",
- "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72",
- "shasum": ""
- },
- "require": {
- "php": "8.2 - 8.5"
- },
- "conflict": {
- "nette/finder": "<3",
- "nette/schema": "<1.2.2"
- },
- "require-dev": {
- "jetbrains/phpstorm-attributes": "^1.2",
- "nette/tester": "^2.5",
- "phpstan/phpstan-nette": "^2.0@stable",
- "tracy/tracy": "^2.9"
- },
- "suggest": {
- "ext-gd": "to use Image",
- "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()",
- "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()",
- "ext-json": "to use Nette\\Utils\\Json",
- "ext-mbstring": "to use Strings::lower() etc...",
- "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "4.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Nette\\": "src"
- },
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause",
- "GPL-2.0-only",
- "GPL-3.0-only"
- ],
- "authors": [
- {
- "name": "David Grudl",
- "homepage": "https://davidgrudl.com"
- },
- {
- "name": "Nette Community",
- "homepage": "https://nette.org/contributors"
- }
- ],
- "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.",
- "homepage": "https://nette.org",
- "keywords": [
- "array",
- "core",
- "datetime",
- "images",
- "json",
- "nette",
- "paginator",
- "password",
- "slugify",
- "string",
- "unicode",
- "utf-8",
- "utility",
- "validation"
- ],
- "support": {
- "issues": "https://github.com/nette/utils/issues",
- "source": "https://github.com/nette/utils/tree/v4.1.1"
- },
- "time": "2025-12-22T12:14:32+00:00"
- },
- {
- "name": "nikic/php-parser",
- "version": "v5.7.0",
- "source": {
- "type": "git",
- "url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82",
- "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82",
- "shasum": ""
- },
- "require": {
- "ext-ctype": "*",
- "ext-json": "*",
- "ext-tokenizer": "*",
- "php": ">=7.4"
- },
- "require-dev": {
- "ircmaxell/php-yacc": "^0.0.7",
- "phpunit/phpunit": "^9.0"
- },
- "bin": [
- "bin/php-parse"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PhpParser\\": "lib/PhpParser"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Nikita Popov"
- }
- ],
- "description": "A PHP parser written in PHP",
- "keywords": [
- "parser",
- "php"
- ],
- "support": {
- "issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0"
- },
- "time": "2025-12-06T11:56:16+00:00"
- },
- {
- "name": "nunomaduro/termwind",
- "version": "v2.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/nunomaduro/termwind.git",
- "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/6fb2a640ff502caace8e05fd7be3b503a7e1c017",
- "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017",
- "shasum": ""
- },
- "require": {
- "ext-mbstring": "*",
- "php": "^8.2",
- "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 || ^4.1.3",
- "phpstan/phpstan": "^1.12.32",
- "phpstan/phpstan-strict-rules": "^1.6.2",
- "symfony/var-dumper": "^7.3.5",
- "thecodingmachine/phpstan-strict-rules": "^1.0.0"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Termwind\\Laravel\\TermwindServiceProvider"
- ]
- },
- "branch-alias": {
- "dev-2.x": "2.x-dev"
- }
- },
- "autoload": {
- "files": [
- "src/Functions.php"
- ],
- "psr-4": {
- "Termwind\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nuno Maduro",
- "email": "enunomaduro@gmail.com"
- }
- ],
- "description": "Its like Tailwind CSS, but for the console.",
- "keywords": [
- "cli",
- "console",
- "css",
- "package",
- "php",
- "style"
- ],
- "support": {
- "issues": "https://github.com/nunomaduro/termwind/issues",
- "source": "https://github.com/nunomaduro/termwind/tree/v2.3.3"
- },
- "funding": [
- {
- "url": "https://www.paypal.com/paypalme/enunomaduro",
- "type": "custom"
- },
- {
- "url": "https://github.com/nunomaduro",
- "type": "github"
- },
- {
- "url": "https://github.com/xiCO2k",
- "type": "github"
- }
- ],
- "time": "2025-11-20T02:34:59+00:00"
- },
- {
- "name": "opcodesio/log-viewer",
- "version": "v3.21.1",
- "source": {
- "type": "git",
- "url": "https://github.com/opcodesio/log-viewer.git",
- "reference": "6dfa99c3a8c5ae128c6b7f2f0a4f026af7ca055c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/opcodesio/log-viewer/zipball/6dfa99c3a8c5ae128c6b7f2f0a4f026af7ca055c",
- "reference": "6dfa99c3a8c5ae128c6b7f2f0a4f026af7ca055c",
- "shasum": ""
- },
- "require": {
- "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0|^12.0",
- "opcodesio/mail-parser": "^0.1.6",
- "php": "^8.0"
- },
- "conflict": {
- "arcanedev/log-viewer": "^8.0"
- },
- "require-dev": {
- "guzzlehttp/guzzle": "^7.2",
- "itsgoingd/clockwork": "^5.1",
- "laravel/pint": "^1.0",
- "nunomaduro/collision": "^7.0|^8.0",
- "orchestra/testbench": "^7.6|^8.0|^9.0|^10.0",
- "pestphp/pest": "^2.0|^3.7",
- "pestphp/pest-plugin-laravel": "^2.0|^3.1",
- "spatie/test-time": "^1.3"
- },
- "suggest": {
- "guzzlehttp/guzzle": "Required for multi-host support. ^7.2"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "aliases": {
- "LogViewer": "Opcodes\\LogViewer\\Facades\\LogViewer"
- },
- "providers": [
- "Opcodes\\LogViewer\\LogViewerServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Opcodes\\LogViewer\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Arunas Skirius",
- "email": "arukomp@gmail.com",
- "role": "Developer"
- }
- ],
- "description": "Fast and easy-to-use log viewer for your Laravel application",
- "homepage": "https://github.com/opcodesio/log-viewer",
- "keywords": [
- "arukompas",
- "better-log-viewer",
- "laravel",
- "log viewer",
- "logs",
- "opcodesio"
- ],
- "support": {
- "issues": "https://github.com/opcodesio/log-viewer/issues",
- "source": "https://github.com/opcodesio/log-viewer/tree/v3.21.1"
- },
- "funding": [
- {
- "url": "https://www.buymeacoffee.com/arunas",
- "type": "custom"
- },
- {
- "url": "https://github.com/arukompas",
- "type": "github"
- }
- ],
- "time": "2025-10-23T05:12:09+00:00"
- },
- {
- "name": "opcodesio/mail-parser",
- "version": "v0.1.6",
- "source": {
- "type": "git",
- "url": "https://github.com/opcodesio/mail-parser.git",
- "reference": "639ef31cbd146a63416283e75afce152e13233ea"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/opcodesio/mail-parser/zipball/639ef31cbd146a63416283e75afce152e13233ea",
- "reference": "639ef31cbd146a63416283e75afce152e13233ea",
- "shasum": ""
- },
- "require": {
- "php": "^8.0"
- },
- "require-dev": {
- "pestphp/pest": "^2.16",
- "symfony/var-dumper": "^6.3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Opcodes\\MailParser\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Arunas Skirius",
- "email": "arukomp@gmail.com",
- "role": "Developer"
- }
- ],
- "description": "Parse emails without the mailparse extension",
- "keywords": [
- "arukompas",
- "email",
- "email parser",
- "mail",
- "opcodesio",
- "php"
- ],
- "support": {
- "issues": "https://github.com/opcodesio/mail-parser/issues",
- "source": "https://github.com/opcodesio/mail-parser/tree/v0.1.6"
- },
- "time": "2023-11-19T08:47:43+00:00"
- },
- {
- "name": "openspout/openspout",
- "version": "v4.32.0",
- "source": {
- "type": "git",
- "url": "https://github.com/openspout/openspout.git",
- "reference": "41f045c1f632e1474e15d4c7bc3abcb4a153563d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/openspout/openspout/zipball/41f045c1f632e1474e15d4c7bc3abcb4a153563d",
- "reference": "41f045c1f632e1474e15d4c7bc3abcb4a153563d",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-fileinfo": "*",
- "ext-filter": "*",
- "ext-libxml": "*",
- "ext-xmlreader": "*",
- "ext-zip": "*",
- "php": "~8.3.0 || ~8.4.0 || ~8.5.0"
- },
- "require-dev": {
- "ext-zlib": "*",
- "friendsofphp/php-cs-fixer": "^3.86.0",
- "infection/infection": "^0.31.2",
- "phpbench/phpbench": "^1.4.1",
- "phpstan/phpstan": "^2.1.22",
- "phpstan/phpstan-phpunit": "^2.0.7",
- "phpstan/phpstan-strict-rules": "^2.0.6",
- "phpunit/phpunit": "^12.3.7"
- },
- "suggest": {
- "ext-iconv": "To handle non UTF-8 CSV files (if \"php-mbstring\" is not already installed or is too limited)",
- "ext-mbstring": "To handle non UTF-8 CSV files (if \"iconv\" is not already installed)"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "OpenSpout\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Adrien Loison",
- "email": "adrien@box.com"
- }
- ],
- "description": "PHP Library to read and write spreadsheet files (CSV, XLSX and ODS), in a fast and scalable way",
- "homepage": "https://github.com/openspout/openspout",
- "keywords": [
- "OOXML",
- "csv",
- "excel",
- "memory",
- "odf",
- "ods",
- "office",
- "open",
- "php",
- "read",
- "scale",
- "spreadsheet",
- "stream",
- "write",
- "xlsx"
- ],
- "support": {
- "issues": "https://github.com/openspout/openspout/issues",
- "source": "https://github.com/openspout/openspout/tree/v4.32.0"
- },
- "funding": [
- {
- "url": "https://paypal.me/filippotessarotto",
- "type": "custom"
- },
- {
- "url": "https://github.com/Slamdunk",
- "type": "github"
- }
- ],
- "time": "2025-09-03T16:03:54+00:00"
- },
- {
- "name": "paragonie/constant_time_encoding",
- "version": "v3.1.3",
- "source": {
- "type": "git",
- "url": "https://github.com/paragonie/constant_time_encoding.git",
- "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77",
- "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77",
- "shasum": ""
- },
- "require": {
- "php": "^8"
- },
- "require-dev": {
- "infection/infection": "^0",
- "nikic/php-fuzzer": "^0",
- "phpunit/phpunit": "^9|^10|^11",
- "vimeo/psalm": "^4|^5|^6"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "ParagonIE\\ConstantTime\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "security@paragonie.com",
- "homepage": "https://paragonie.com",
- "role": "Maintainer"
- },
- {
- "name": "Steve 'Sc00bz' Thomas",
- "email": "steve@tobtu.com",
- "homepage": "https://www.tobtu.com",
- "role": "Original Developer"
- }
- ],
- "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)",
- "keywords": [
- "base16",
- "base32",
- "base32_decode",
- "base32_encode",
- "base64",
- "base64_decode",
- "base64_encode",
- "bin2hex",
- "encoding",
- "hex",
- "hex2bin",
- "rfc4648"
- ],
- "support": {
- "email": "info@paragonie.com",
- "issues": "https://github.com/paragonie/constant_time_encoding/issues",
- "source": "https://github.com/paragonie/constant_time_encoding"
- },
- "time": "2025-09-24T15:06:41+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": {
- "php": "^7.2.5 || ^8.0"
- },
- "require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.2",
- "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34"
- },
- "type": "library",
- "extra": {
- "bamarni-bin": {
- "bin-links": true,
- "forward-command": false
- },
- "branch-alias": {
- "dev-master": "1.9-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PhpOption\\": "src/PhpOption/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Johannes M. Schmitt",
- "email": "schmittjoh@gmail.com",
- "homepage": "https://github.com/schmittjoh"
- },
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- }
- ],
- "description": "Option Type for PHP",
- "keywords": [
- "language",
- "option",
- "php",
- "type"
- ],
- "support": {
- "issues": "https://github.com/schmittjoh/php-option/issues",
- "source": "https://github.com/schmittjoh/php-option/tree/1.9.5"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
- "type": "tidelift"
- }
- ],
- "time": "2025-12-27T19:41:33+00:00"
- },
- {
- "name": "pragmarx/google2fa",
- "version": "v9.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/antonioribeiro/google2fa.git",
- "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/e6bc62dd6ae83acc475f57912e27466019a1f2cf",
- "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf",
- "shasum": ""
- },
- "require": {
- "paragonie/constant_time_encoding": "^1.0|^2.0|^3.0",
- "php": "^7.1|^8.0"
- },
- "require-dev": {
- "phpstan/phpstan": "^1.9",
- "phpunit/phpunit": "^7.5.15|^8.5|^9.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "PragmaRX\\Google2FA\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Antonio Carlos Ribeiro",
- "email": "acr@antoniocarlosribeiro.com",
- "role": "Creator & Designer"
- }
- ],
- "description": "A One Time Password Authentication package, compatible with Google Authenticator.",
- "keywords": [
- "2fa",
- "Authentication",
- "Two Factor Authentication",
- "google2fa"
- ],
- "support": {
- "issues": "https://github.com/antonioribeiro/google2fa/issues",
- "source": "https://github.com/antonioribeiro/google2fa/tree/v9.0.0"
- },
- "time": "2025-09-19T22:51:08+00:00"
- },
- {
- "name": "pragmarx/google2fa-qrcode",
- "version": "v3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/antonioribeiro/google2fa-qrcode.git",
- "reference": "ce4d8a729b6c93741c607cfb2217acfffb5bf76b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/google2fa-qrcode/zipball/ce4d8a729b6c93741c607cfb2217acfffb5bf76b",
- "reference": "ce4d8a729b6c93741c607cfb2217acfffb5bf76b",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1",
- "pragmarx/google2fa": ">=4.0"
- },
- "require-dev": {
- "bacon/bacon-qr-code": "^2.0",
- "chillerlan/php-qrcode": "^1.0|^2.0|^3.0|^4.0",
- "khanamiryan/qrcode-detector-decoder": "^1.0",
- "phpunit/phpunit": "~4|~5|~6|~7|~8|~9"
- },
- "suggest": {
- "bacon/bacon-qr-code": "For QR Code generation, requires imagick",
- "chillerlan/php-qrcode": "For QR Code generation"
- },
- "type": "library",
- "extra": {
- "component": "package",
- "branch-alias": {
- "dev-master": "1.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PragmaRX\\Google2FAQRCode\\": "src/",
- "PragmaRX\\Google2FAQRCode\\Tests\\": "tests/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Antonio Carlos Ribeiro",
- "email": "acr@antoniocarlosribeiro.com",
- "role": "Creator & Designer"
- }
- ],
- "description": "QR Code package for Google2FA",
- "keywords": [
- "2fa",
- "Authentication",
- "Two Factor Authentication",
- "google2fa",
- "qr code",
- "qrcode"
- ],
- "support": {
- "issues": "https://github.com/antonioribeiro/google2fa-qrcode/issues",
- "source": "https://github.com/antonioribeiro/google2fa-qrcode/tree/v3.0.0"
- },
- "time": "2021-08-15T12:53:48+00:00"
- },
- {
- "name": "psr/cache",
- "version": "3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/cache.git",
- "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
- "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
- "shasum": ""
- },
- "require": {
- "php": ">=8.0.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Cache\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common interface for caching libraries",
- "keywords": [
- "cache",
- "psr",
- "psr-6"
- ],
- "support": {
- "source": "https://github.com/php-fig/cache/tree/3.0.0"
- },
- "time": "2021-02-03T23:26:27+00:00"
- },
- {
- "name": "psr/clock",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/clock.git",
- "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d",
- "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d",
- "shasum": ""
- },
- "require": {
- "php": "^7.0 || ^8.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Psr\\Clock\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common interface for reading the clock.",
- "homepage": "https://github.com/php-fig/clock",
- "keywords": [
- "clock",
- "now",
- "psr",
- "psr-20",
- "time"
- ],
- "support": {
- "issues": "https://github.com/php-fig/clock/issues",
- "source": "https://github.com/php-fig/clock/tree/1.0.0"
- },
- "time": "2022-11-25T14:36:26+00:00"
- },
- {
- "name": "psr/container",
- "version": "2.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
- "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
- "shasum": ""
- },
- "require": {
- "php": ">=7.4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Container\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
- "keywords": [
- "PSR-11",
- "container",
- "container-interface",
- "container-interop",
- "psr"
- ],
- "support": {
- "issues": "https://github.com/php-fig/container/issues",
- "source": "https://github.com/php-fig/container/tree/2.0.2"
- },
- "time": "2021-11-05T16:47:00+00:00"
- },
- {
- "name": "psr/event-dispatcher",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/event-dispatcher.git",
- "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
- "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\EventDispatcher\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Standard interfaces for event handling.",
- "keywords": [
- "events",
- "psr",
- "psr-14"
- ],
- "support": {
- "issues": "https://github.com/php-fig/event-dispatcher/issues",
- "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
- },
- "time": "2019-01-08T18:20:26+00:00"
- },
- {
- "name": "psr/http-client",
- "version": "1.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-client.git",
- "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
- "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
- "shasum": ""
- },
- "require": {
- "php": "^7.0 || ^8.0",
- "psr/http-message": "^1.0 || ^2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Client\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP clients",
- "homepage": "https://github.com/php-fig/http-client",
- "keywords": [
- "http",
- "http-client",
- "psr",
- "psr-18"
- ],
- "support": {
- "source": "https://github.com/php-fig/http-client"
- },
- "time": "2023-09-23T14:17:50+00:00"
- },
- {
- "name": "psr/http-factory",
- "version": "1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-factory.git",
- "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
- "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1",
- "psr/http-message": "^1.0 || ^2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
- "keywords": [
- "factory",
- "http",
- "message",
- "psr",
- "psr-17",
- "psr-7",
- "request",
- "response"
- ],
- "support": {
- "source": "https://github.com/php-fig/http-factory"
- },
- "time": "2024-04-15T12:06:14+00:00"
- },
- {
- "name": "psr/http-message",
- "version": "2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
- "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP messages",
- "homepage": "https://github.com/php-fig/http-message",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "support": {
- "source": "https://github.com/php-fig/http-message/tree/2.0"
- },
- "time": "2023-04-04T09:54:51+00:00"
- },
- {
- "name": "psr/log",
- "version": "3.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/log.git",
- "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
- "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
- "shasum": ""
- },
- "require": {
- "php": ">=8.0.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Log\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common interface for logging libraries",
- "homepage": "https://github.com/php-fig/log",
- "keywords": [
- "log",
- "psr",
- "psr-3"
- ],
- "support": {
- "source": "https://github.com/php-fig/log/tree/3.0.2"
- },
- "time": "2024-09-11T13:17:53+00:00"
- },
- {
- "name": "psr/simple-cache",
- "version": "3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/simple-cache.git",
- "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
- "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
- "shasum": ""
- },
- "require": {
- "php": ">=8.0.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\SimpleCache\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common interfaces for simple caching",
- "keywords": [
- "cache",
- "caching",
- "psr",
- "psr-16",
- "simple-cache"
- ],
- "support": {
- "source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
- },
- "time": "2021-10-29T13:26:27+00:00"
- },
- {
- "name": "psy/psysh",
- "version": "v0.12.18",
- "source": {
- "type": "git",
- "url": "https://github.com/bobthecow/psysh.git",
- "reference": "ddff0ac01beddc251786fe70367cd8bbdb258196"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/ddff0ac01beddc251786fe70367cd8bbdb258196",
- "reference": "ddff0ac01beddc251786fe70367cd8bbdb258196",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "ext-tokenizer": "*",
- "nikic/php-parser": "^5.0 || ^4.0",
- "php": "^8.0 || ^7.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",
- "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-posix": "If you have PCNTL, you'll want the POSIX extension as well."
- },
- "bin": [
- "bin/psysh"
- ],
- "type": "library",
- "extra": {
- "bamarni-bin": {
- "bin-links": false,
- "forward-command": false
- },
- "branch-alias": {
- "dev-main": "0.12.x-dev"
- }
- },
- "autoload": {
- "files": [
- "src/functions.php"
- ],
- "psr-4": {
- "Psy\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Justin Hileman",
- "email": "justin@justinhileman.info"
- }
- ],
- "description": "An interactive shell for modern PHP.",
- "homepage": "https://psysh.org",
- "keywords": [
- "REPL",
- "console",
- "interactive",
- "shell"
- ],
- "support": {
- "issues": "https://github.com/bobthecow/psysh/issues",
- "source": "https://github.com/bobthecow/psysh/tree/v0.12.18"
- },
- "time": "2025-12-17T14:35:46+00:00"
- },
- {
- "name": "qirolab/laravel-themer",
- "version": "2.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/qirolab/laravel-themer.git",
- "reference": "7a4345c2508a616ad309812840758f3fc01ababd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/qirolab/laravel-themer/zipball/7a4345c2508a616ad309812840758f3fc01ababd",
- "reference": "7a4345c2508a616ad309812840758f3fc01ababd",
- "shasum": ""
- },
- "require": {
- "facade/ignition-contracts": "^1.0",
- "illuminate/support": "^9.19|^10.0|^11.0|^12.0",
- "php": ">=7.1.0"
- },
- "require-dev": {
- "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0",
- "phpunit/phpunit": "^8.3|^9.0|^10.5|^11.5.3",
- "vimeo/psalm": "^4.0|^5.22|^6.7"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Qirolab\\Theme\\ThemeServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Qirolab\\Theme\\": "src",
- "Qirolab\\Theme\\Database\\Factories\\": "database/factories"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Harish Kumar",
- "email": "harish@qirolab.com",
- "homepage": "https://qirolab.com",
- "role": "Developer"
- }
- ],
- "description": "A Laravel theme manager, that will help you organize and maintain your themes inside Laravel projects.",
- "homepage": "https://qirolab.com",
- "keywords": [
- "laravel",
- "laravel-theme",
- "qirolab",
- "theme"
- ],
- "support": {
- "issues": "https://github.com/qirolab/laravel-themer/issues",
- "source": "https://github.com/qirolab/laravel-themer/tree/2.4.0"
- },
- "funding": [
- {
- "url": "https://www.buymeacoffee.com/qirolab",
- "type": "other"
- }
- ],
- "time": "2025-02-26T08:51:08+00:00"
- },
- {
- "name": "ralouphie/getallheaders",
- "version": "3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/ralouphie/getallheaders.git",
- "reference": "120b605dfeb996808c31b6477290a714d356e822"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
- "reference": "120b605dfeb996808c31b6477290a714d356e822",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5 || ^6.5"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/getallheaders.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ralph Khattar",
- "email": "ralph.khattar@gmail.com"
- }
- ],
- "description": "A polyfill for getallheaders.",
- "support": {
- "issues": "https://github.com/ralouphie/getallheaders/issues",
- "source": "https://github.com/ralouphie/getallheaders/tree/develop"
- },
- "time": "2019-03-08T08:55:37+00:00"
- },
- {
- "name": "ramsey/collection",
- "version": "2.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/ramsey/collection.git",
- "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2",
- "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2",
- "shasum": ""
- },
- "require": {
- "php": "^8.1"
- },
- "require-dev": {
- "captainhook/plugin-composer": "^5.3",
- "ergebnis/composer-normalize": "^2.45",
- "fakerphp/faker": "^1.24",
- "hamcrest/hamcrest-php": "^2.0",
- "jangregor/phpstan-prophecy": "^2.1",
- "mockery/mockery": "^1.6",
- "php-parallel-lint/php-console-highlighter": "^1.0",
- "php-parallel-lint/php-parallel-lint": "^1.4",
- "phpspec/prophecy-phpunit": "^2.3",
- "phpstan/extension-installer": "^1.4",
- "phpstan/phpstan": "^2.1",
- "phpstan/phpstan-mockery": "^2.0",
- "phpstan/phpstan-phpunit": "^2.0",
- "phpunit/phpunit": "^10.5",
- "ramsey/coding-standard": "^2.3",
- "ramsey/conventional-commits": "^1.6",
- "roave/security-advisories": "dev-latest"
- },
- "type": "library",
- "extra": {
- "captainhook": {
- "force-install": true
- },
- "ramsey/conventional-commits": {
- "configFile": "conventional-commits.json"
- }
- },
- "autoload": {
- "psr-4": {
- "Ramsey\\Collection\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ben Ramsey",
- "email": "ben@benramsey.com",
- "homepage": "https://benramsey.com"
- }
- ],
- "description": "A PHP library for representing and manipulating collections.",
- "keywords": [
- "array",
- "collection",
- "hash",
- "map",
- "queue",
- "set"
- ],
- "support": {
- "issues": "https://github.com/ramsey/collection/issues",
- "source": "https://github.com/ramsey/collection/tree/2.1.1"
- },
- "time": "2025-03-22T05:38:12+00:00"
- },
- {
- "name": "ramsey/uuid",
- "version": "4.9.2",
- "source": {
- "type": "git",
- "url": "https://github.com/ramsey/uuid.git",
- "reference": "8429c78ca35a09f27565311b98101e2826affde0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0",
- "reference": "8429c78ca35a09f27565311b98101e2826affde0",
- "shasum": ""
- },
- "require": {
- "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"
- },
- "replace": {
- "rhumsaa/uuid": "self.version"
- },
- "require-dev": {
- "captainhook/captainhook": "^5.25",
- "captainhook/plugin-composer": "^5.3",
- "dealerdirect/phpcodesniffer-composer-installer": "^1.0",
- "ergebnis/composer-normalize": "^2.47",
- "mockery/mockery": "^1.6",
- "paragonie/random-lib": "^2",
- "php-mock/php-mock": "^2.6",
- "php-mock/php-mock-mockery": "^1.5",
- "php-parallel-lint/php-parallel-lint": "^1.4.0",
- "phpbench/phpbench": "^1.2.14",
- "phpstan/extension-installer": "^1.4",
- "phpstan/phpstan": "^2.1",
- "phpstan/phpstan-mockery": "^2.0",
- "phpstan/phpstan-phpunit": "^2.0",
- "phpunit/phpunit": "^9.6",
- "slevomat/coding-standard": "^8.18",
- "squizlabs/php_codesniffer": "^3.13"
- },
- "suggest": {
- "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
- "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.",
- "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.",
- "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
- "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
- },
- "type": "library",
- "extra": {
- "captainhook": {
- "force-install": true
- }
- },
- "autoload": {
- "files": [
- "src/functions.php"
- ],
- "psr-4": {
- "Ramsey\\Uuid\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).",
- "keywords": [
- "guid",
- "identifier",
- "uuid"
- ],
- "support": {
- "issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.9.2"
- },
- "time": "2025-12-14T04:43:48+00:00"
- },
- {
- "name": "ryangjchandler/blade-capture-directive",
- "version": "v1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/ryangjchandler/blade-capture-directive.git",
- "reference": "bbb1513dfd89eaec87a47fe0c449a7e3d4a1976d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ryangjchandler/blade-capture-directive/zipball/bbb1513dfd89eaec87a47fe0c449a7e3d4a1976d",
- "reference": "bbb1513dfd89eaec87a47fe0c449a7e3d4a1976d",
- "shasum": ""
- },
- "require": {
- "illuminate/contracts": "^10.0|^11.0|^12.0",
- "php": "^8.1",
- "spatie/laravel-package-tools": "^1.9.2"
- },
- "require-dev": {
- "nunomaduro/collision": "^7.0|^8.0",
- "nunomaduro/larastan": "^2.0|^3.0",
- "orchestra/testbench": "^8.0|^9.0|^10.0",
- "pestphp/pest": "^2.0|^3.7",
- "pestphp/pest-plugin-laravel": "^2.0|^3.1",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan-deprecation-rules": "^1.0|^2.0",
- "phpstan/phpstan-phpunit": "^1.0|^2.0",
- "phpunit/phpunit": "^10.0|^11.5.3",
- "spatie/laravel-ray": "^1.26"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "aliases": {
- "BladeCaptureDirective": "RyanChandler\\BladeCaptureDirective\\Facades\\BladeCaptureDirective"
- },
- "providers": [
- "RyanChandler\\BladeCaptureDirective\\BladeCaptureDirectiveServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "RyanChandler\\BladeCaptureDirective\\": "src",
- "RyanChandler\\BladeCaptureDirective\\Database\\Factories\\": "database/factories"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ryan Chandler",
- "email": "support@ryangjchandler.co.uk",
- "role": "Developer"
- }
- ],
- "description": "Create inline partials in your Blade templates with ease.",
- "homepage": "https://github.com/ryangjchandler/blade-capture-directive",
- "keywords": [
- "blade-capture-directive",
- "laravel",
- "ryangjchandler"
- ],
- "support": {
- "issues": "https://github.com/ryangjchandler/blade-capture-directive/issues",
- "source": "https://github.com/ryangjchandler/blade-capture-directive/tree/v1.1.0"
- },
- "funding": [
- {
- "url": "https://github.com/ryangjchandler",
- "type": "github"
- }
- ],
- "time": "2025-02-25T09:09:36+00:00"
- },
- {
- "name": "ryangjchandler/laravel-cloudflare-turnstile",
- "version": "v3.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/ryangjchandler/laravel-cloudflare-turnstile.git",
- "reference": "c5712e515aa355397159e0b59fe331469bee5a87"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ryangjchandler/laravel-cloudflare-turnstile/zipball/c5712e515aa355397159e0b59fe331469bee5a87",
- "reference": "c5712e515aa355397159e0b59fe331469bee5a87",
- "shasum": ""
- },
- "require": {
- "illuminate/contracts": "^11.0|^12.0",
- "php": "^8.2",
- "spatie/laravel-package-tools": "^1.13.0"
- },
- "require-dev": {
- "larastan/larastan": "^3.1",
- "laravel/pint": "^1.0",
- "nunomaduro/collision": "^8.0",
- "orchestra/testbench": "^9.0|^10.0",
- "pestphp/pest": "^3.7",
- "pestphp/pest-plugin-laravel": "^3.1",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan-deprecation-rules": "^1.0|^2.0",
- "phpstan/phpstan-phpunit": "^1.0|^2.0",
- "phpunit/phpunit": "^10.0|^11.5.3",
- "spatie/laravel-ray": "^1.26",
- "spatie/pest-plugin-snapshots": "^2.0"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "aliases": {
- "LaravelCloudflareTurnstile": "RyanChandler\\LaravelCloudflareTurnstile\\Facades\\LaravelCloudflareTurnstile"
- },
- "providers": [
- "RyanChandler\\LaravelCloudflareTurnstile\\LaravelCloudflareTurnstileServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "RyanChandler\\LaravelCloudflareTurnstile\\": "src",
- "RyanChandler\\LaravelCloudflareTurnstile\\Database\\Factories\\": "database/factories"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ryan Chandler",
- "email": "support@ryangjchandler.co.uk",
- "role": "Developer"
- }
- ],
- "description": "A simple package to help integrate Cloudflare Turnstile.",
- "homepage": "https://github.com/ryangjchandler/laravel-cloudflare-turnstile",
- "keywords": [
- "laravel",
- "laravel-cloudflare-turnstile",
- "ryangjchandler"
- ],
- "support": {
- "issues": "https://github.com/ryangjchandler/laravel-cloudflare-turnstile/issues",
- "source": "https://github.com/ryangjchandler/laravel-cloudflare-turnstile/tree/v3.0.1"
- },
- "time": "2025-12-16T15:56:01+00:00"
- },
- {
- "name": "scrivo/highlight.php",
- "version": "v9.18.1.10",
- "source": {
- "type": "git",
- "url": "https://github.com/scrivo/highlight.php.git",
- "reference": "850f4b44697a2552e892ffe71490ba2733c2fc6e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/850f4b44697a2552e892ffe71490ba2733c2fc6e",
- "reference": "850f4b44697a2552e892ffe71490ba2733c2fc6e",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "php": ">=5.4"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.8|^5.7",
- "sabberworm/php-css-parser": "^8.3",
- "symfony/finder": "^2.8|^3.4|^5.4",
- "symfony/var-dumper": "^2.8|^3.4|^5.4"
- },
- "suggest": {
- "ext-mbstring": "Allows highlighting code with unicode characters and supports language with unicode keywords"
- },
- "type": "library",
- "autoload": {
- "files": [
- "HighlightUtilities/functions.php"
- ],
- "psr-0": {
- "Highlight\\": "",
- "HighlightUtilities\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Geert Bergman",
- "homepage": "http://www.scrivo.org/",
- "role": "Project Author"
- },
- {
- "name": "Vladimir Jimenez",
- "homepage": "https://allejo.io",
- "role": "Maintainer"
- },
- {
- "name": "Martin Folkers",
- "homepage": "https://twobrain.io",
- "role": "Contributor"
- }
- ],
- "description": "Server side syntax highlighter that supports 185 languages. It's a PHP port of highlight.js",
- "keywords": [
- "code",
- "highlight",
- "highlight.js",
- "highlight.php",
- "syntax"
- ],
- "support": {
- "issues": "https://github.com/scrivo/highlight.php/issues",
- "source": "https://github.com/scrivo/highlight.php"
- },
- "funding": [
- {
- "url": "https://github.com/allejo",
- "type": "github"
- }
- ],
- "time": "2022-12-17T21:53:22+00:00"
- },
- {
- "name": "spatie/invade",
- "version": "2.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/invade.git",
- "reference": "b920f6411d21df4e8610a138e2e87ae4957d7f63"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/invade/zipball/b920f6411d21df4e8610a138e2e87ae4957d7f63",
- "reference": "b920f6411d21df4e8610a138e2e87ae4957d7f63",
- "shasum": ""
- },
- "require": {
- "php": "^8.0"
- },
- "require-dev": {
- "pestphp/pest": "^1.20",
- "phpstan/phpstan": "^1.4",
- "spatie/ray": "^1.28"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/functions.php"
- ],
- "psr-4": {
- "Spatie\\Invade\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
- "role": "Developer"
- }
- ],
- "description": "A PHP function to work with private properties and methods",
- "homepage": "https://github.com/spatie/invade",
- "keywords": [
- "invade",
- "spatie"
- ],
- "support": {
- "source": "https://github.com/spatie/invade/tree/2.1.0"
- },
- "funding": [
- {
- "url": "https://github.com/spatie",
- "type": "github"
- }
- ],
- "time": "2024-05-17T09:06:10+00:00"
- },
- {
- "name": "spatie/laravel-activitylog",
- "version": "4.10.2",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/laravel-activitylog.git",
- "reference": "bb879775d487438ed9a99e64f09086b608990c10"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-activitylog/zipball/bb879775d487438ed9a99e64f09086b608990c10",
- "reference": "bb879775d487438ed9a99e64f09086b608990c10",
- "shasum": ""
- },
- "require": {
- "illuminate/config": "^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0",
- "illuminate/database": "^8.69 || ^9.27 || ^10.0 || ^11.0 || ^12.0",
- "illuminate/support": "^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0",
- "php": "^8.1",
- "spatie/laravel-package-tools": "^1.6.3"
- },
- "require-dev": {
- "ext-json": "*",
- "orchestra/testbench": "^6.23 || ^7.0 || ^8.0 || ^9.0 || ^10.0",
- "pestphp/pest": "^1.20 || ^2.0 || ^3.0"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Spatie\\Activitylog\\ActivitylogServiceProvider"
- ]
- }
- },
- "autoload": {
- "files": [
- "src/helpers.php"
- ],
- "psr-4": {
- "Spatie\\Activitylog\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
- "homepage": "https://spatie.be",
- "role": "Developer"
- },
- {
- "name": "Sebastian De Deyne",
- "email": "sebastian@spatie.be",
- "homepage": "https://spatie.be",
- "role": "Developer"
- },
- {
- "name": "Tom Witkowski",
- "email": "dev.gummibeer@gmail.com",
- "homepage": "https://gummibeer.de",
- "role": "Developer"
- }
- ],
- "description": "A very simple activity logger to monitor the users of your website or application",
- "homepage": "https://github.com/spatie/activitylog",
- "keywords": [
- "activity",
- "laravel",
- "log",
- "spatie",
- "user"
- ],
- "support": {
- "issues": "https://github.com/spatie/laravel-activitylog/issues",
- "source": "https://github.com/spatie/laravel-activitylog/tree/4.10.2"
- },
- "funding": [
- {
- "url": "https://spatie.be/open-source/support-us",
- "type": "custom"
- },
- {
- "url": "https://github.com/spatie",
- "type": "github"
- }
- ],
- "time": "2025-06-15T06:59:49+00:00"
- },
- {
- "name": "spatie/laravel-package-tools",
- "version": "1.92.7",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/laravel-package-tools.git",
- "reference": "f09a799850b1ed765103a4f0b4355006360c49a5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/f09a799850b1ed765103a4f0b4355006360c49a5",
- "reference": "f09a799850b1ed765103a4f0b4355006360c49a5",
- "shasum": ""
- },
- "require": {
- "illuminate/contracts": "^9.28|^10.0|^11.0|^12.0",
- "php": "^8.0"
- },
- "require-dev": {
- "mockery/mockery": "^1.5",
- "orchestra/testbench": "^7.7|^8.0|^9.0|^10.0",
- "pestphp/pest": "^1.23|^2.1|^3.1",
- "phpunit/php-code-coverage": "^9.0|^10.0|^11.0",
- "phpunit/phpunit": "^9.5.24|^10.5|^11.5",
- "spatie/pest-plugin-test-time": "^1.1|^2.2"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Spatie\\LaravelPackageTools\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
- "role": "Developer"
- }
- ],
- "description": "Tools for creating Laravel packages",
- "homepage": "https://github.com/spatie/laravel-package-tools",
- "keywords": [
- "laravel-package-tools",
- "spatie"
- ],
- "support": {
- "issues": "https://github.com/spatie/laravel-package-tools/issues",
- "source": "https://github.com/spatie/laravel-package-tools/tree/1.92.7"
- },
- "funding": [
- {
- "url": "https://github.com/spatie",
- "type": "github"
- }
- ],
- "time": "2025-07-17T15:46:43+00:00"
- },
- {
- "name": "spatie/laravel-sluggable",
- "version": "3.7.5",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/laravel-sluggable.git",
- "reference": "e4fdd519e043a2af02b52eec2c3be2dd2e262e27"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-sluggable/zipball/e4fdd519e043a2af02b52eec2c3be2dd2e262e27",
- "reference": "e4fdd519e043a2af02b52eec2c3be2dd2e262e27",
- "shasum": ""
- },
- "require": {
- "illuminate/database": "^8.0|^9.0|^10.0|^11.0|^12.0",
- "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0",
- "php": "^8.0"
- },
- "require-dev": {
- "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0|^10.0",
- "pestphp/pest": "^1.20|^2.0|^3.7",
- "spatie/laravel-translatable": "^5.0|^6.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Spatie\\Sluggable\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
- "homepage": "https://spatie.be",
- "role": "Developer"
- }
- ],
- "description": "Generate slugs when saving Eloquent models",
- "homepage": "https://github.com/spatie/laravel-sluggable",
- "keywords": [
- "laravel-sluggable",
- "spatie"
- ],
- "support": {
- "source": "https://github.com/spatie/laravel-sluggable/tree/3.7.5"
- },
- "funding": [
- {
- "url": "https://github.com/spatie",
- "type": "github"
- }
- ],
- "time": "2025-04-24T09:21:00+00:00"
- },
- {
- "name": "spatie/shiki-php",
- "version": "2.3.2",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/shiki-php.git",
- "reference": "a2e78a9ff8a1290b25d550be8fbf8285c13175c5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/shiki-php/zipball/a2e78a9ff8a1290b25d550be8fbf8285c13175c5",
- "reference": "a2e78a9ff8a1290b25d550be8fbf8285c13175c5",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "php": "^8.0",
- "symfony/process": "^5.4|^6.4|^7.1"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^v3.0",
- "pestphp/pest": "^1.8",
- "phpunit/phpunit": "^9.5",
- "spatie/pest-plugin-snapshots": "^1.1",
- "spatie/ray": "^1.10"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Spatie\\ShikiPhp\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Rias Van der Veken",
- "email": "rias@spatie.be",
- "role": "Developer"
- },
- {
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
- "role": "Developer"
- }
- ],
- "description": "Highlight code using Shiki in PHP",
- "homepage": "https://github.com/spatie/shiki-php",
- "keywords": [
- "shiki",
- "spatie"
- ],
- "support": {
- "source": "https://github.com/spatie/shiki-php/tree/2.3.2"
- },
- "funding": [
- {
- "url": "https://github.com/spatie",
- "type": "github"
- }
- ],
- "time": "2025-02-21T14:16:57+00:00"
- },
- {
- "name": "srmklive/paypal",
- "version": "3.0.40",
- "source": {
- "type": "git",
- "url": "https://github.com/srmklive/laravel-paypal.git",
- "reference": "1ddc49fd836a4785933ab953452152f3fedbac63"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/srmklive/laravel-paypal/zipball/1ddc49fd836a4785933ab953452152f3fedbac63",
- "reference": "1ddc49fd836a4785933ab953452152f3fedbac63",
- "shasum": ""
- },
- "require": {
- "ext-curl": "*",
- "guzzlehttp/guzzle": "~7.0",
- "illuminate/support": "~6.0|~7.0|~8.0|~9.0|^10.0|^11.0|^12.0",
- "nesbot/carbon": "~2.0|^3.0",
- "php": ">=7.2|^8.0"
- },
- "require-dev": {
- "phpstan/phpstan": "^1.10",
- "phpunit/phpunit": "^8.0|^9.0|^10.0|^11.0",
- "symfony/var-dumper": "~5.0|^6.0|^7.0"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "aliases": {
- "PayPal": "Srmklive\\PayPal\\Facades\\PayPal"
- },
- "providers": [
- "Srmklive\\PayPal\\Providers\\PayPalServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Srmklive\\PayPal\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Raza Mehdi",
- "email": "srmk@outlook.com"
- }
- ],
- "description": "Laravel plugin For Processing Payments Through Paypal Express Checkout. Can Be Used Independently With Other Applications.",
- "keywords": [
- "http",
- "laravel paypal",
- "paypal",
- "rest",
- "web service"
- ],
- "support": {
- "issues": "https://github.com/srmklive/laravel-paypal/issues",
- "source": "https://github.com/srmklive/laravel-paypal/tree/3.0.40"
- },
- "time": "2025-02-25T21:38:18+00:00"
- },
- {
- "name": "stevebauman/purify",
- "version": "v6.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/stevebauman/purify.git",
- "reference": "3acb5e77904f420ce8aad8fa1c7f394e82daa500"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/stevebauman/purify/zipball/3acb5e77904f420ce8aad8fa1c7f394e82daa500",
- "reference": "3acb5e77904f420ce8aad8fa1c7f394e82daa500",
- "shasum": ""
- },
- "require": {
- "ezyang/htmlpurifier": "^4.17",
- "illuminate/contracts": "^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
- "illuminate/support": "^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
- "php": ">=7.4"
- },
- "require-dev": {
- "orchestra/testbench": "^5.0|^6.0|^7.0|^8.0|^9.0|^10.0",
- "phpunit/phpunit": "^8.0|^9.0|^10.0|^11.5.3"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "aliases": {
- "Purify": "Stevebauman\\Purify\\Facades\\Purify"
- },
- "providers": [
- "Stevebauman\\Purify\\PurifyServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Stevebauman\\Purify\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Steve Bauman",
- "email": "steven_bauman@outlook.com"
- }
- ],
- "description": "An HTML Purifier / Sanitizer for Laravel",
- "keywords": [
- "Purifier",
- "clean",
- "cleaner",
- "html",
- "laravel",
- "purification",
- "purify"
- ],
- "support": {
- "issues": "https://github.com/stevebauman/purify/issues",
- "source": "https://github.com/stevebauman/purify/tree/v6.3.1"
- },
- "time": "2025-05-21T16:53:09+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"
- },
- "type": "library",
- "autoload": {
- "files": [
- "Resources/now.php"
- ],
- "psr-4": {
- "Symfony\\Component\\Clock\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Decouples applications from the system clock",
- "homepage": "https://symfony.com",
- "keywords": [
- "clock",
- "psr20",
- "time"
- ],
- "support": {
- "source": "https://github.com/symfony/clock/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:46:48+00:00"
- },
- {
- "name": "symfony/console",
- "version": "v7.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/732a9ca6cd9dfd940c639062d5edbde2f6727fb6",
- "reference": "732a9ca6cd9dfd940c639062d5edbde2f6727fb6",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/service-contracts": "^2.5|^3",
- "symfony/string": "^7.2|^8.0"
- },
- "conflict": {
- "symfony/dependency-injection": "<6.4",
- "symfony/dotenv": "<6.4",
- "symfony/event-dispatcher": "<6.4",
- "symfony/lock": "<6.4",
- "symfony/process": "<6.4"
- },
- "provide": {
- "psr/log-implementation": "1.0|2.0|3.0"
- },
- "require-dev": {
- "psr/log": "^1|^2|^3",
- "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": {
- "psr-4": {
- "Symfony\\Component\\Console\\": ""
- },
- "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": "Eases the creation of beautiful and testable command line interfaces",
- "homepage": "https://symfony.com",
- "keywords": [
- "cli",
- "command-line",
- "console",
- "terminal"
- ],
- "support": {
- "source": "https://github.com/symfony/console/tree/v7.4.3"
- },
- "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-12-23T14:50:43+00:00"
- },
- {
- "name": "symfony/css-selector",
- "version": "v8.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/css-selector.git",
- "reference": "6225bd458c53ecdee056214cb4a2ffaf58bd592b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/6225bd458c53ecdee056214cb4a2ffaf58bd592b",
- "reference": "6225bd458c53ecdee056214cb4a2ffaf58bd592b",
- "shasum": ""
- },
- "require": {
- "php": ">=8.4"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\CssSelector\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Jean-François Simon",
- "email": "jeanfrancois.simon@sensiolabs.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Converts CSS selectors to XPath expressions",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/css-selector/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-10-30T14:17:19+00:00"
- },
- {
- "name": "symfony/deprecation-contracts",
- "version": "v3.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62",
- "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/contracts",
- "name": "symfony/contracts"
- },
- "branch-alias": {
- "dev-main": "3.6-dev"
- }
- },
- "autoload": {
- "files": [
- "function.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "A generic function and convention to trigger deprecation notices",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2024-09-25T14:21:43+00:00"
- },
- {
- "name": "symfony/error-handler",
- "version": "v7.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/error-handler.git",
- "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/48be2b0653594eea32dcef130cca1c811dcf25c2",
- "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "psr/log": "^1|^2|^3",
- "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|^8.0",
- "symfony/deprecation-contracts": "^2.5|^3",
- "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": [
- "Resources/bin/patch-type-declarations"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\ErrorHandler\\": ""
- },
- "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 tools to manage errors and ease debugging PHP code",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/error-handler/tree/v7.4.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-05T14:29:59+00:00"
- },
- {
- "name": "symfony/event-dispatcher",
- "version": "v8.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "573f95783a2ec6e38752979db139f09fec033f03"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/573f95783a2ec6e38752979db139f09fec033f03",
- "reference": "573f95783a2ec6e38752979db139f09fec033f03",
- "shasum": ""
- },
- "require": {
- "php": ">=8.4",
- "symfony/event-dispatcher-contracts": "^2.5|^3"
- },
- "conflict": {
- "symfony/security-http": "<7.4",
- "symfony/service-contracts": "<2.5"
- },
- "provide": {
- "psr/event-dispatcher-implementation": "1.0",
- "symfony/event-dispatcher-implementation": "2.0|3.0"
- },
- "require-dev": {
- "psr/log": "^1|^2|^3",
- "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": "^7.4|^8.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\EventDispatcher\\": ""
- },
- "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 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/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-10-30T14:17:19+00:00"
- },
- {
- "name": "symfony/event-dispatcher-contracts",
- "version": "v3.6.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "59eb412e93815df44f05f342958efa9f46b1e586"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586",
- "reference": "59eb412e93815df44f05f342958efa9f46b1e586",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1",
- "psr/event-dispatcher": "^1"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/contracts",
- "name": "symfony/contracts"
- },
- "branch-alias": {
- "dev-main": "3.6-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\EventDispatcher\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to dispatching event",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2024-09-25T14:21:43+00:00"
- },
- {
- "name": "symfony/finder",
- "version": "v7.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "fffe05569336549b20a1be64250b40516d6e8d06"
- },
- "dist": {
- "type": "zip",
- "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|^8.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Finder\\": ""
- },
- "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": "Finds files and directories via an intuitive fluent interface",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/finder/tree/v7.4.3"
- },
- "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-12-23T14:50:43+00:00"
- },
- {
- "name": "symfony/html-sanitizer",
- "version": "v7.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/html-sanitizer.git",
- "reference": "5b0bbcc3600030b535dd0b17a0e8c56243f96d7f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/5b0bbcc3600030b535dd0b17a0e8c56243f96d7f",
- "reference": "5b0bbcc3600030b535dd0b17a0e8c56243f96d7f",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "league/uri": "^6.5|^7.0",
- "masterminds/html5": "^2.7.2",
- "php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HtmlSanitizer\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Titouan Galopin",
- "email": "galopintitouan@gmail.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides an object-oriented API to sanitize untrusted HTML input for safe insertion into a document's DOM.",
- "homepage": "https://symfony.com",
- "keywords": [
- "Purifier",
- "html",
- "sanitizer"
- ],
- "support": {
- "source": "https://github.com/symfony/html-sanitizer/tree/v7.4.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-10-30T13:39:42+00:00"
- },
- {
- "name": "symfony/http-foundation",
- "version": "v7.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-foundation.git",
- "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a70c745d4cea48dbd609f4075e5f5cbce453bd52",
- "reference": "a70c745d4cea48dbd609f4075e5f5cbce453bd52",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3",
- "symfony/polyfill-mbstring": "^1.1"
- },
- "conflict": {
- "doctrine/dbal": "<3.6",
- "symfony/cache": "<6.4.12|>=7.0,<7.1.5"
- },
- "require-dev": {
- "doctrine/dbal": "^3.6|^4",
- "predis/predis": "^1.1|^2.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": {
- "psr-4": {
- "Symfony\\Component\\HttpFoundation\\": ""
- },
- "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": "Defines an object-oriented layer for the HTTP specification",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/http-foundation/tree/v7.4.3"
- },
- "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-12-23T14:23:49+00:00"
- },
- {
- "name": "symfony/http-kernel",
- "version": "v7.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-kernel.git",
- "reference": "885211d4bed3f857b8c964011923528a55702aa5"
- },
- "dist": {
- "type": "zip",
- "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|^8.0",
- "symfony/event-dispatcher": "^7.3|^8.0",
- "symfony/http-foundation": "^7.4|^8.0",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "symfony/browser-kit": "<6.4",
- "symfony/cache": "<6.4",
- "symfony/config": "<6.4",
- "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",
- "symfony/mailer": "<6.4",
- "symfony/messenger": "<6.4",
- "symfony/translation": "<6.4",
- "symfony/translation-contracts": "<2.5",
- "symfony/twig-bridge": "<6.4",
- "symfony/validator": "<6.4",
- "symfony/var-dumper": "<6.4",
- "twig/twig": "<3.12"
- },
- "provide": {
- "psr/log-implementation": "1.0|2.0|3.0"
- },
- "require-dev": {
- "psr/cache": "^1.0|^2.0|^3.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|^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|^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",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpKernel\\": ""
- },
- "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 a structured process for converting a Request into a Response",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/http-kernel/tree/v7.4.3"
- },
- "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-12-31T08:43:57+00:00"
- },
- {
- "name": "symfony/mailer",
- "version": "v7.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/mailer.git",
- "reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/mailer/zipball/e472d35e230108231ccb7f51eb6b2100cac02ee4",
- "reference": "e472d35e230108231ccb7f51eb6b2100cac02ee4",
- "shasum": ""
- },
- "require": {
- "egulias/email-validator": "^2.1.10|^3|^4",
- "php": ">=8.2",
- "psr/event-dispatcher": "^1",
- "psr/log": "^1|^2|^3",
- "symfony/event-dispatcher": "^6.4|^7.0|^8.0",
- "symfony/mime": "^7.2|^8.0",
- "symfony/service-contracts": "^2.5|^3"
- },
- "conflict": {
- "symfony/http-client-contracts": "<2.5",
- "symfony/http-kernel": "<6.4",
- "symfony/messenger": "<6.4",
- "symfony/mime": "<6.4",
- "symfony/twig-bridge": "<6.4"
- },
- "require-dev": {
- "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": {
- "psr-4": {
- "Symfony\\Component\\Mailer\\": ""
- },
- "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": "Helps sending emails",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/mailer/tree/v7.4.3"
- },
- "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-12-16T08:02:06+00:00"
- },
- {
- "name": "symfony/mime",
- "version": "v7.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/mime.git",
- "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a"
- },
- "dist": {
- "type": "zip",
- "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"
- },
- "conflict": {
- "egulias/email-validator": "~3.0.0",
- "phpdocumentor/reflection-docblock": "<3.2.2",
- "phpdocumentor/type-resolver": "<1.4.0",
- "symfony/mailer": "<6.4",
- "symfony/serializer": "<6.4.3|>7.0,<7.0.3"
- },
- "require-dev": {
- "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|^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": {
- "psr-4": {
- "Symfony\\Component\\Mime\\": ""
- },
- "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": "Allows manipulating MIME messages",
- "homepage": "https://symfony.com",
- "keywords": [
- "mime",
- "mime-type"
- ],
- "support": {
- "source": "https://github.com/symfony/mime/tree/v7.4.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-16T10:14:42+00:00"
- },
- {
- "name": "symfony/polyfill-ctype",
- "version": "v1.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
- "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "provide": {
- "ext-ctype": "*"
- },
- "suggest": {
- "ext-ctype": "For best performance"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Gert de Pagter",
- "email": "BackEndTea@gmail.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for ctype functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "ctype",
- "polyfill",
- "portable"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.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": "2024-09-09T11:45:10+00:00"
- },
- {
- "name": "symfony/polyfill-intl-grapheme",
- "version": "v1.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70",
- "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's grapheme_* functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "grapheme",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.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-06-27T09:58:17+00:00"
- },
- {
- "name": "symfony/polyfill-intl-idn",
- "version": "v1.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3",
- "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2",
- "symfony/polyfill-intl-normalizer": "^1.10"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Laurent Bassin",
- "email": "laurent@bassin.info"
- },
- {
- "name": "Trevor Rowbotham",
- "email": "trevor.rowbotham@pm.me"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "idn",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.33.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": "2024-09-10T14:38:51+00:00"
- },
- {
- "name": "symfony/polyfill-intl-normalizer",
- "version": "v1.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "3833d7255cc303546435cb650316bff708a1c75c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
- "reference": "3833d7255cc303546435cb650316bff708a1c75c",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's Normalizer class and related functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "intl",
- "normalizer",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.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": "2024-09-09T11:45:10+00:00"
- },
- {
- "name": "symfony/polyfill-mbstring",
- "version": "v1.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
- "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
- "shasum": ""
- },
- "require": {
- "ext-iconv": "*",
- "php": ">=7.2"
- },
- "provide": {
- "ext-mbstring": "*"
- },
- "suggest": {
- "ext-mbstring": "For best performance"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for the Mbstring extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "mbstring",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.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": "2024-12-23T08:48:59+00:00"
- },
- {
- "name": "symfony/polyfill-php80",
- "version": "v1.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
- "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.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-01-02T08:10:11+00:00"
- },
- {
- "name": "symfony/polyfill-php83",
- "version": "v1.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php83.git",
- "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5",
- "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php83\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.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-07-08T02:45:35+00:00"
- },
- {
- "name": "symfony/polyfill-php84",
- "version": "v1.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php84.git",
- "reference": "d8ced4d875142b6a7426000426b8abc631d6b191"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191",
- "reference": "d8ced4d875142b6a7426000426b8abc631d6b191",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php84\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.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-06-24T13:30:11+00:00"
- },
- {
- "name": "symfony/polyfill-php85",
- "version": "v1.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php85.git",
- "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91",
- "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php85\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php85/tree/v1.33.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-06-23T16:12:55+00:00"
- },
- {
- "name": "symfony/polyfill-uuid",
- "version": "v1.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-uuid.git",
- "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2",
- "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "provide": {
- "ext-uuid": "*"
- },
- "suggest": {
- "ext-uuid": "For best performance"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Uuid\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Grégoire Pineau",
- "email": "lyrixx@lyrixx.info"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for uuid functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "uuid"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-uuid/tree/v1.33.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": "2024-09-09T11:45:10+00:00"
- },
- {
- "name": "symfony/process",
- "version": "v7.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/2f8e1a6cdf590ca63715da4d3a7a3327404a523f",
- "reference": "2f8e1a6cdf590ca63715da4d3a7a3327404a523f",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Process\\": ""
- },
- "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": "Executes commands in sub-processes",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/process/tree/v7.4.3"
- },
- "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-12-19T10:00:43+00:00"
- },
- {
- "name": "symfony/routing",
- "version": "v7.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/routing.git",
- "reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090",
- "reference": "5d3fd7adf8896c2fdb54e2f0f35b1bcbd9e45090",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3"
- },
- "conflict": {
- "symfony/config": "<6.4",
- "symfony/dependency-injection": "<6.4",
- "symfony/yaml": "<6.4"
- },
- "require-dev": {
- "psr/log": "^1|^2|^3",
- "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": {
- "psr-4": {
- "Symfony\\Component\\Routing\\": ""
- },
- "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": "Maps an HTTP request to a set of configuration variables",
- "homepage": "https://symfony.com",
- "keywords": [
- "router",
- "routing",
- "uri",
- "url"
- ],
- "support": {
- "source": "https://github.com/symfony/routing/tree/v7.4.3"
- },
- "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-12-19T10:00:43+00:00"
- },
- {
- "name": "symfony/service-contracts",
- "version": "v3.6.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/service-contracts.git",
- "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43",
- "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1",
- "psr/container": "^1.1|^2.0",
- "symfony/deprecation-contracts": "^2.5|^3"
- },
- "conflict": {
- "ext-psr": "<1.1|>=2"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/contracts",
- "name": "symfony/contracts"
- },
- "branch-alias": {
- "dev-main": "3.6-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\Service\\": ""
- },
- "exclude-from-classmap": [
- "/Test/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to writing services",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.6.1"
- },
- "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-07-15T11:30:57+00:00"
- },
- {
- "name": "symfony/string",
- "version": "v8.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/string.git",
- "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/ba65a969ac918ce0cc3edfac6cdde847eba231dc",
- "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc",
- "shasum": ""
- },
- "require": {
- "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.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": "^7.4|^8.0"
- },
- "type": "library",
- "autoload": {
- "files": [
- "Resources/functions.php"
- ],
- "psr-4": {
- "Symfony\\Component\\String\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
- "homepage": "https://symfony.com",
- "keywords": [
- "grapheme",
- "i18n",
- "string",
- "unicode",
- "utf-8",
- "utf8"
- ],
- "support": {
- "source": "https://github.com/symfony/string/tree/v8.0.1"
- },
- "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-12-01T09:13:36+00:00"
- },
- {
- "name": "symfony/translation",
- "version": "v8.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/translation.git",
- "reference": "60a8f11f0e15c48f2cc47c4da53873bb5b62135d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/60a8f11f0e15c48f2cc47c4da53873bb5b62135d",
- "reference": "60a8f11f0e15c48f2cc47c4da53873bb5b62135d",
- "shasum": ""
- },
- "require": {
- "php": ">=8.4",
- "symfony/polyfill-mbstring": "^1.0",
- "symfony/translation-contracts": "^3.6.1"
- },
- "conflict": {
- "nikic/php-parser": "<5.0",
- "symfony/http-client-contracts": "<2.5",
- "symfony/service-contracts": "<2.5"
- },
- "provide": {
- "symfony/translation-implementation": "2.3|3.0"
- },
- "require-dev": {
- "nikic/php-parser": "^5.0",
- "psr/log": "^1|^2|^3",
- "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": "^7.4|^8.0",
- "symfony/intl": "^7.4|^8.0",
- "symfony/polyfill-intl-icu": "^1.21",
- "symfony/routing": "^7.4|^8.0",
- "symfony/service-contracts": "^2.5|^3",
- "symfony/yaml": "^7.4|^8.0"
- },
- "type": "library",
- "autoload": {
- "files": [
- "Resources/functions.php"
- ],
- "psr-4": {
- "Symfony\\Component\\Translation\\": ""
- },
- "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 tools to internationalize your application",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/translation/tree/v8.0.3"
- },
- "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-12-21T10:59:45+00:00"
- },
- {
- "name": "symfony/translation-contracts",
- "version": "v3.6.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/translation-contracts.git",
- "reference": "65a8bc82080447fae78373aa10f8d13b38338977"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977",
- "reference": "65a8bc82080447fae78373aa10f8d13b38338977",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/contracts",
- "name": "symfony/contracts"
- },
- "branch-alias": {
- "dev-main": "3.6-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\Translation\\": ""
- },
- "exclude-from-classmap": [
- "/Test/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Generic abstractions related to translation",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1"
- },
- "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-07-15T13:41:35+00:00"
- },
- {
- "name": "symfony/uid",
- "version": "v7.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/uid.git",
- "reference": "2498e9f81b7baa206f44de583f2f48350b90142c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/uid/zipball/2498e9f81b7baa206f44de583f2f48350b90142c",
- "reference": "2498e9f81b7baa206f44de583f2f48350b90142c",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "symfony/polyfill-uuid": "^1.15"
- },
- "require-dev": {
- "symfony/console": "^6.4|^7.0|^8.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Uid\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Grégoire Pineau",
- "email": "lyrixx@lyrixx.info"
- },
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides an object-oriented API to generate and represent UIDs",
- "homepage": "https://symfony.com",
- "keywords": [
- "UID",
- "ulid",
- "uuid"
- ],
- "support": {
- "source": "https://github.com/symfony/uid/tree/v7.4.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-09-25T11:02:55+00:00"
- },
- {
- "name": "symfony/var-dumper",
- "version": "v7.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/var-dumper.git",
- "reference": "7e99bebcb3f90d8721890f2963463280848cba92"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7e99bebcb3f90d8721890f2963463280848cba92",
- "reference": "7e99bebcb3f90d8721890f2963463280848cba92",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3",
- "symfony/polyfill-mbstring": "~1.0"
- },
- "conflict": {
- "symfony/console": "<6.4"
- },
- "require-dev": {
- "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": [
- "Resources/bin/var-dump-server"
- ],
- "type": "library",
- "autoload": {
- "files": [
- "Resources/functions/dump.php"
- ],
- "psr-4": {
- "Symfony\\Component\\VarDumper\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides mechanisms for walking through any arbitrary PHP variable",
- "homepage": "https://symfony.com",
- "keywords": [
- "debug",
- "dump"
- ],
- "support": {
- "source": "https://github.com/symfony/var-dumper/tree/v7.4.3"
- },
- "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-12-18T07:04:31+00:00"
- },
- {
- "name": "tijsverkoyen/css-to-inline-styles",
- "version": "v2.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git",
- "reference": "f0292ccf0ec75843d65027214426b6b163b48b41"
- },
- "dist": {
- "type": "zip",
- "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 || ^8.0"
- },
- "require-dev": {
- "phpstan/phpstan": "^2.0",
- "phpstan/phpstan-phpunit": "^2.0",
- "phpunit/phpunit": "^8.5.21 || ^9.5.10"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "TijsVerkoyen\\CssToInlineStyles\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Tijs Verkoyen",
- "email": "css_to_inline_styles@verkoyen.eu",
- "role": "Developer"
- }
- ],
- "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.",
- "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles",
- "support": {
- "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues",
- "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.4.0"
- },
- "time": "2025-12-02T11:56:42+00:00"
- },
- {
- "name": "ueberdosis/tiptap-php",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/ueberdosis/tiptap-php.git",
- "reference": "458194ad0f8b0cf616fecdf451a84f9a6c1f3056"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ueberdosis/tiptap-php/zipball/458194ad0f8b0cf616fecdf451a84f9a6c1f3056",
- "reference": "458194ad0f8b0cf616fecdf451a84f9a6c1f3056",
- "shasum": ""
- },
- "require": {
- "php": "^8.0",
- "scrivo/highlight.php": "^9.18",
- "spatie/shiki-php": "^2.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^3.5",
- "pestphp/pest": "^1.21",
- "phpunit/phpunit": "^9.5",
- "vimeo/psalm": "^4.3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Tiptap\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Hans Pagel",
- "email": "humans@tiptap.dev",
- "role": "Developer"
- }
- ],
- "description": "A PHP package to work with Tiptap output",
- "homepage": "https://github.com/ueberdosis/tiptap-php",
- "keywords": [
- "prosemirror",
- "tiptap",
- "ueberdosis"
- ],
- "support": {
- "issues": "https://github.com/ueberdosis/tiptap-php/issues",
- "source": "https://github.com/ueberdosis/tiptap-php/tree/2.0.0"
- },
- "funding": [
- {
- "url": "https://tiptap.dev/pricing",
- "type": "custom"
- },
- {
- "url": "https://github.com/ueberdosis",
- "type": "github"
- },
- {
- "url": "https://opencollective.com/tiptap",
- "type": "open_collective"
- }
- ],
- "time": "2025-06-26T14:11:46+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.4",
- "php": "^7.2.5 || ^8.0",
- "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",
- "ext-filter": "*",
- "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
- },
- "suggest": {
- "ext-filter": "Required to use the boolean validator."
- },
- "type": "library",
- "extra": {
- "bamarni-bin": {
- "bin-links": true,
- "forward-command": false
- },
- "branch-alias": {
- "dev-master": "5.6-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Dotenv\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Vance Lucas",
- "email": "vance@vancelucas.com",
- "homepage": "https://github.com/vlucas"
- }
- ],
- "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
- "keywords": [
- "dotenv",
- "env",
- "environment"
- ],
- "support": {
- "issues": "https://github.com/vlucas/phpdotenv/issues",
- "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv",
- "type": "tidelift"
- }
- ],
- "time": "2025-12-27T19:49:13+00:00"
- },
- {
- "name": "voku/portable-ascii",
- "version": "2.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/voku/portable-ascii.git",
- "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d",
- "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d",
- "shasum": ""
- },
- "require": {
- "php": ">=7.0.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0"
- },
- "suggest": {
- "ext-intl": "Use Intl for transliterator_transliterate() support"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "voku\\": "src/voku/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Lars Moelleken",
- "homepage": "https://www.moelleken.org/"
- }
- ],
- "description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
- "homepage": "https://github.com/voku/portable-ascii",
- "keywords": [
- "ascii",
- "clean",
- "php"
- ],
- "support": {
- "issues": "https://github.com/voku/portable-ascii/issues",
- "source": "https://github.com/voku/portable-ascii/tree/2.0.3"
- },
- "funding": [
- {
- "url": "https://www.paypal.me/moelleken",
- "type": "custom"
- },
- {
- "url": "https://github.com/voku",
- "type": "github"
- },
- {
- "url": "https://opencollective.com/portable-ascii",
- "type": "open_collective"
- },
- {
- "url": "https://www.patreon.com/voku",
- "type": "patreon"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii",
- "type": "tidelift"
- }
- ],
- "time": "2024-11-21T01:49:47+00:00"
- }
- ],
- "packages-dev": [
- {
- "name": "brianium/paratest",
- "version": "v7.16.0",
- "source": {
- "type": "git",
- "url": "https://github.com/paratestphp/paratest.git",
- "reference": "a10878ed0fe0bbc2f57c980f7a08065338b970b6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paratestphp/paratest/zipball/a10878ed0fe0bbc2f57c980f7a08065338b970b6",
- "reference": "a10878ed0fe0bbc2f57c980f7a08065338b970b6",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-pcre": "*",
- "ext-reflection": "*",
- "ext-simplexml": "*",
- "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.5.1",
- "phpunit/php-file-iterator": "^6",
- "phpunit/php-timer": "^8",
- "phpunit/phpunit": "^12.5.2",
- "sebastian/environment": "^8.0.3",
- "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.33",
- "phpstan/phpstan-deprecation-rules": "^2.0.3",
- "phpstan/phpstan-phpunit": "^2.0.10",
- "phpstan/phpstan-strict-rules": "^2.0.7",
- "symfony/filesystem": "^7.3.2 || ^8.0.0"
- },
- "bin": [
- "bin/paratest",
- "bin/paratest_for_phpstorm"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "ParaTest\\": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Brian Scaturro",
- "email": "scaturrob@gmail.com",
- "role": "Developer"
- },
- {
- "name": "Filippo Tessarotto",
- "email": "zoeslam@gmail.com",
- "role": "Developer"
- }
- ],
- "description": "Parallel testing for PHP",
- "homepage": "https://github.com/paratestphp/paratest",
- "keywords": [
- "concurrent",
- "parallel",
- "phpunit",
- "testing"
- ],
- "support": {
- "issues": "https://github.com/paratestphp/paratest/issues",
- "source": "https://github.com/paratestphp/paratest/tree/v7.16.0"
- },
- "funding": [
- {
- "url": "https://github.com/sponsors/Slamdunk",
- "type": "github"
- },
- {
- "url": "https://paypal.me/filippotessarotto",
- "type": "paypal"
- }
- ],
- "time": "2025-12-09T20:03:26+00:00"
- },
- {
- "name": "driftingly/rector-laravel",
- "version": "2.1.9",
- "source": {
- "type": "git",
- "url": "https://github.com/driftingly/rector-laravel.git",
- "reference": "aee9d4a1d489e7ec484fc79f33137f8ee051b3f7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/driftingly/rector-laravel/zipball/aee9d4a1d489e7ec484fc79f33137f8ee051b3f7",
- "reference": "aee9d4a1d489e7ec484fc79f33137f8ee051b3f7",
- "shasum": ""
- },
- "require": {
- "php": "^7.4 || ^8.0",
- "rector/rector": "^2.2.7",
- "webmozart/assert": "^1.11"
- },
- "type": "rector-extension",
- "autoload": {
- "psr-4": {
- "RectorLaravel\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Rector upgrades rules for Laravel Framework",
- "support": {
- "issues": "https://github.com/driftingly/rector-laravel/issues",
- "source": "https://github.com/driftingly/rector-laravel/tree/2.1.9"
- },
- "time": "2025-12-25T23:31:36+00:00"
- },
- {
- "name": "fakerphp/faker",
- "version": "v1.24.1",
- "source": {
- "type": "git",
- "url": "https://github.com/FakerPHP/Faker.git",
- "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5",
- "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5",
- "shasum": ""
- },
- "require": {
- "php": "^7.4 || ^8.0",
- "psr/container": "^1.0 || ^2.0",
- "symfony/deprecation-contracts": "^2.2 || ^3.0"
- },
- "conflict": {
- "fzaninotto/faker": "*"
- },
- "require-dev": {
- "bamarni/composer-bin-plugin": "^1.4.1",
- "doctrine/persistence": "^1.3 || ^2.0",
- "ext-intl": "*",
- "phpunit/phpunit": "^9.5.26",
- "symfony/phpunit-bridge": "^5.4.16"
- },
- "suggest": {
- "doctrine/orm": "Required to use Faker\\ORM\\Doctrine",
- "ext-curl": "Required by Faker\\Provider\\Image to download images.",
- "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.",
- "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.",
- "ext-mbstring": "Required for multibyte Unicode string functionality."
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Faker\\": "src/Faker/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "François Zaninotto"
- }
- ],
- "description": "Faker is a PHP library that generates fake data for you.",
- "keywords": [
- "data",
- "faker",
- "fixtures"
- ],
- "support": {
- "issues": "https://github.com/FakerPHP/Faker/issues",
- "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1"
- },
- "time": "2024-11-21T13:46:39+00:00"
- },
- {
- "name": "fidry/cpu-core-counter",
- "version": "1.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/theofidry/cpu-core-counter.git",
- "reference": "db9508f7b1474469d9d3c53b86f817e344732678"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678",
- "reference": "db9508f7b1474469d9d3c53b86f817e344732678",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "require-dev": {
- "fidry/makefile": "^0.2.0",
- "fidry/php-cs-fixer-config": "^1.1.2",
- "phpstan/extension-installer": "^1.2.0",
- "phpstan/phpstan": "^2.0",
- "phpstan/phpstan-deprecation-rules": "^2.0.0",
- "phpstan/phpstan-phpunit": "^2.0",
- "phpstan/phpstan-strict-rules": "^2.0",
- "phpunit/phpunit": "^8.5.31 || ^9.5.26",
- "webmozarts/strict-phpunit": "^7.5"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Fidry\\CpuCoreCounter\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Théo FIDRY",
- "email": "theo.fidry@gmail.com"
- }
- ],
- "description": "Tiny utility to get the number of CPU cores.",
- "keywords": [
- "CPU",
- "core"
- ],
- "support": {
- "issues": "https://github.com/theofidry/cpu-core-counter/issues",
- "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0"
- },
- "funding": [
- {
- "url": "https://github.com/theofidry",
- "type": "github"
- }
- ],
- "time": "2025-08-14T07:29:31+00:00"
- },
- {
- "name": "filament/upgrade",
- "version": "v4.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/filamentphp/upgrade.git",
- "reference": "31b03a80a99e203ba0b7bfbfb9566974e0346be7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/filamentphp/upgrade/zipball/31b03a80a99e203ba0b7bfbfb9566974e0346be7",
- "reference": "31b03a80a99e203ba0b7bfbfb9566974e0346be7",
- "shasum": ""
- },
- "require": {
- "nunomaduro/termwind": "^2.0",
- "php": "^8.2",
- "rector/rector": "^2.0"
- },
- "bin": [
- "bin/filament-v4"
- ],
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Filament\\Upgrade\\UpgradeServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Filament\\Upgrade\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Upgrade Filament v3 code to Filament v4.",
- "homepage": "https://github.com/filamentphp/filament",
- "support": {
- "issues": "https://github.com/filamentphp/filament/issues",
- "source": "https://github.com/filamentphp/filament"
- },
- "time": "2025-11-28T11:21:29+00:00"
- },
- {
- "name": "filp/whoops",
- "version": "2.18.4",
- "source": {
- "type": "git",
- "url": "https://github.com/filp/whoops.git",
- "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d",
- "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0",
- "psr/log": "^1.0.1 || ^2.0 || ^3.0"
- },
- "require-dev": {
- "mockery/mockery": "^1.0",
- "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3",
- "symfony/var-dumper": "^4.0 || ^5.0"
- },
- "suggest": {
- "symfony/var-dumper": "Pretty print complex values better with var-dumper available",
- "whoops/soap": "Formats errors as SOAP responses"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Whoops\\": "src/Whoops/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Filipe Dobreira",
- "homepage": "https://github.com/filp",
- "role": "Developer"
- }
- ],
- "description": "php error handling for cool kids",
- "homepage": "https://filp.github.io/whoops/",
- "keywords": [
- "error",
- "exception",
- "handling",
- "library",
- "throwable",
- "whoops"
- ],
- "support": {
- "issues": "https://github.com/filp/whoops/issues",
- "source": "https://github.com/filp/whoops/tree/2.18.4"
- },
- "funding": [
- {
- "url": "https://github.com/denis-sokolov",
- "type": "github"
- }
- ],
- "time": "2025-08-08T12:00:00+00:00"
- },
- {
- "name": "hamcrest/hamcrest-php",
- "version": "v2.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/hamcrest/hamcrest-php.git",
- "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487",
- "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487",
- "shasum": ""
- },
- "require": {
- "php": "^7.4|^8.0"
- },
- "replace": {
- "cordoval/hamcrest-php": "*",
- "davedevelopment/hamcrest-php": "*",
- "kodova/hamcrest-php": "*"
- },
- "require-dev": {
- "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0",
- "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "hamcrest"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "description": "This is the PHP port of Hamcrest Matchers",
- "keywords": [
- "test"
- ],
- "support": {
- "issues": "https://github.com/hamcrest/hamcrest-php/issues",
- "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1"
- },
- "time": "2025-04-30T06:54:44+00:00"
- },
- {
- "name": "jean85/pretty-package-versions",
- "version": "2.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/Jean85/pretty-package-versions.git",
- "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a",
- "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a",
- "shasum": ""
- },
- "require": {
- "composer-runtime-api": "^2.1.0",
- "php": "^7.4|^8.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^3.2",
- "jean85/composer-provided-replaced-stub-package": "^1.0",
- "phpstan/phpstan": "^2.0",
- "phpunit/phpunit": "^7.5|^8.5|^9.6",
- "rector/rector": "^2.0",
- "vimeo/psalm": "^4.3 || ^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Jean85\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Alessandro Lai",
- "email": "alessandro.lai85@gmail.com"
- }
- ],
- "description": "A library to get pretty versions strings of installed dependencies",
- "keywords": [
- "composer",
- "package",
- "release",
- "versions"
- ],
- "support": {
- "issues": "https://github.com/Jean85/pretty-package-versions/issues",
- "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.1"
- },
- "time": "2025-03-19T14:43:43+00:00"
- },
- {
- "name": "laravel/pint",
- "version": "v1.27.0",
- "source": {
- "type": "git",
- "url": "https://github.com/laravel/pint.git",
- "reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laravel/pint/zipball/c67b4195b75491e4dfc6b00b1c78b68d86f54c90",
- "reference": "c67b4195b75491e4dfc6b00b1c78b68d86f54c90",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "ext-mbstring": "*",
- "ext-tokenizer": "*",
- "ext-xml": "*",
- "php": "^8.2.0"
- },
- "require-dev": {
- "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.3",
- "pestphp/pest": "^3.8.4"
- },
- "bin": [
- "builds/pint"
- ],
- "type": "project",
- "autoload": {
- "psr-4": {
- "App\\": "app/",
- "Database\\Seeders\\": "database/seeders/",
- "Database\\Factories\\": "database/factories/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nuno Maduro",
- "email": "enunomaduro@gmail.com"
- }
- ],
- "description": "An opinionated code formatter for PHP.",
- "homepage": "https://laravel.com",
- "keywords": [
- "dev",
- "format",
- "formatter",
- "lint",
- "linter",
- "php"
- ],
- "support": {
- "issues": "https://github.com/laravel/pint/issues",
- "source": "https://github.com/laravel/pint"
- },
- "time": "2026-01-05T16:49:17+00:00"
- },
- {
- "name": "laravel/sail",
- "version": "v1.52.0",
- "source": {
- "type": "git",
- "url": "https://github.com/laravel/sail.git",
- "reference": "64ac7d8abb2dbcf2b76e61289451bae79066b0b3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laravel/sail/zipball/64ac7d8abb2dbcf2b76e61289451bae79066b0b3",
- "reference": "64ac7d8abb2dbcf2b76e61289451bae79066b0b3",
- "shasum": ""
- },
- "require": {
- "illuminate/console": "^9.52.16|^10.0|^11.0|^12.0",
- "illuminate/contracts": "^9.52.16|^10.0|^11.0|^12.0",
- "illuminate/support": "^9.52.16|^10.0|^11.0|^12.0",
- "php": "^8.0",
- "symfony/console": "^6.0|^7.0",
- "symfony/yaml": "^6.0|^7.0"
- },
- "require-dev": {
- "orchestra/testbench": "^7.0|^8.0|^9.0|^10.0",
- "phpstan/phpstan": "^2.0"
- },
- "bin": [
- "bin/sail"
- ],
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Laravel\\Sail\\SailServiceProvider"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Laravel\\Sail\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Taylor Otwell",
- "email": "taylor@laravel.com"
- }
- ],
- "description": "Docker files for running a basic Laravel application.",
- "keywords": [
- "docker",
- "laravel"
- ],
- "support": {
- "issues": "https://github.com/laravel/sail/issues",
- "source": "https://github.com/laravel/sail"
- },
- "time": "2026-01-01T02:46:03+00:00"
- },
- {
- "name": "mockery/mockery",
- "version": "1.6.12",
- "source": {
- "type": "git",
- "url": "https://github.com/mockery/mockery.git",
- "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699",
- "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699",
- "shasum": ""
- },
- "require": {
- "hamcrest/hamcrest-php": "^2.0.1",
- "lib-pcre": ">=7.0",
- "php": ">=7.3"
- },
- "conflict": {
- "phpunit/phpunit": "<8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.5 || ^9.6.17",
- "symplify/easy-coding-standard": "^12.1.14"
- },
- "type": "library",
- "autoload": {
- "files": [
- "library/helpers.php",
- "library/Mockery.php"
- ],
- "psr-4": {
- "Mockery\\": "library/Mockery"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Pádraic Brady",
- "email": "padraic.brady@gmail.com",
- "homepage": "https://github.com/padraic",
- "role": "Author"
- },
- {
- "name": "Dave Marshall",
- "email": "dave.marshall@atstsolutions.co.uk",
- "homepage": "https://davedevelopment.co.uk",
- "role": "Developer"
- },
- {
- "name": "Nathanael Esayeas",
- "email": "nathanael.esayeas@protonmail.com",
- "homepage": "https://github.com/ghostwriter",
- "role": "Lead Developer"
- }
- ],
- "description": "Mockery is a simple yet flexible PHP mock object framework",
- "homepage": "https://github.com/mockery/mockery",
- "keywords": [
- "BDD",
- "TDD",
- "library",
- "mock",
- "mock objects",
- "mockery",
- "stub",
- "test",
- "test double",
- "testing"
- ],
- "support": {
- "docs": "https://docs.mockery.io/",
- "issues": "https://github.com/mockery/mockery/issues",
- "rss": "https://github.com/mockery/mockery/releases.atom",
- "security": "https://github.com/mockery/mockery/security/advisories",
- "source": "https://github.com/mockery/mockery"
- },
- "time": "2024-05-16T03:13:13+00:00"
- },
- {
- "name": "myclabs/deep-copy",
- "version": "1.13.4",
- "source": {
- "type": "git",
- "url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a",
- "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "conflict": {
- "doctrine/collections": "<1.6.8",
- "doctrine/common": "<2.13.3 || >=3 <3.2.2"
- },
- "require-dev": {
- "doctrine/collections": "^1.6.8",
- "doctrine/common": "^2.13.3 || ^3.2.2",
- "phpspec/prophecy": "^1.10",
- "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/DeepCopy/deep_copy.php"
- ],
- "psr-4": {
- "DeepCopy\\": "src/DeepCopy/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Create deep copies (clones) of your objects",
- "keywords": [
- "clone",
- "copy",
- "duplicate",
- "object",
- "object graph"
- ],
- "support": {
- "issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4"
- },
- "funding": [
- {
- "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-01T08:46:24+00:00"
- },
- {
- "name": "nunomaduro/collision",
- "version": "v8.8.3",
- "source": {
- "type": "git",
- "url": "https://github.com/nunomaduro/collision.git",
- "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nunomaduro/collision/zipball/1dc9e88d105699d0fee8bb18890f41b274f6b4c4",
- "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4",
- "shasum": ""
- },
- "require": {
- "filp/whoops": "^2.18.1",
- "nunomaduro/termwind": "^2.3.1",
- "php": "^8.2.0",
- "symfony/console": "^7.3.0"
- },
- "conflict": {
- "laravel/framework": "<11.44.2 || >=13.0.0",
- "phpunit/phpunit": "<11.5.15 || >=13.0.0"
- },
- "require-dev": {
- "brianium/paratest": "^7.8.3",
- "larastan/larastan": "^3.4.2",
- "laravel/framework": "^11.44.2 || ^12.18",
- "laravel/pint": "^1.22.1",
- "laravel/sail": "^1.43.1",
- "laravel/sanctum": "^4.1.1",
- "laravel/tinker": "^2.10.1",
- "orchestra/testbench-core": "^9.12.0 || ^10.4",
- "pestphp/pest": "^3.8.2 || ^4.0.0",
- "sebastian/environment": "^7.2.1 || ^8.0"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider"
- ]
- },
- "branch-alias": {
- "dev-8.x": "8.x-dev"
- }
- },
- "autoload": {
- "files": [
- "./src/Adapters/Phpunit/Autoload.php"
- ],
- "psr-4": {
- "NunoMaduro\\Collision\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nuno Maduro",
- "email": "enunomaduro@gmail.com"
- }
- ],
- "description": "Cli error handling for console/command-line PHP applications.",
- "keywords": [
- "artisan",
- "cli",
- "command-line",
- "console",
- "dev",
- "error",
- "handling",
- "laravel",
- "laravel-zero",
- "php",
- "symfony"
- ],
- "support": {
- "issues": "https://github.com/nunomaduro/collision/issues",
- "source": "https://github.com/nunomaduro/collision"
- },
- "funding": [
- {
- "url": "https://www.paypal.com/paypalme/enunomaduro",
- "type": "custom"
- },
- {
- "url": "https://github.com/nunomaduro",
- "type": "github"
- },
- {
- "url": "https://www.patreon.com/nunomaduro",
- "type": "patreon"
- }
- ],
- "time": "2025-11-20T02:55:25+00:00"
- },
- {
- "name": "pestphp/pest",
- "version": "v4.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/pestphp/pest.git",
- "reference": "bc57a84e77afd4544ff9643a6858f68d05aeab96"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/pestphp/pest/zipball/bc57a84e77afd4544ff9643a6858f68d05aeab96",
- "reference": "bc57a84e77afd4544ff9643a6858f68d05aeab96",
- "shasum": ""
- },
- "require": {
- "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.2.1",
- "php": "^8.3.0",
- "phpunit/phpunit": "^12.5.4",
- "symfony/process": "^7.4.3|^8.0.0"
- },
- "conflict": {
- "filp/whoops": "<2.18.3",
- "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.3",
- "psy/psysh": "^0.12.18"
- },
- "bin": [
- "bin/pest"
- ],
- "type": "library",
- "extra": {
- "pest": {
- "plugins": [
- "Pest\\Mutate\\Plugins\\Mutate",
- "Pest\\Plugins\\Configuration",
- "Pest\\Plugins\\Bail",
- "Pest\\Plugins\\Cache",
- "Pest\\Plugins\\Coverage",
- "Pest\\Plugins\\Init",
- "Pest\\Plugins\\Environment",
- "Pest\\Plugins\\Help",
- "Pest\\Plugins\\Memory",
- "Pest\\Plugins\\Only",
- "Pest\\Plugins\\Printer",
- "Pest\\Plugins\\ProcessIsolation",
- "Pest\\Plugins\\Profile",
- "Pest\\Plugins\\Retry",
- "Pest\\Plugins\\Snapshot",
- "Pest\\Plugins\\Verbose",
- "Pest\\Plugins\\Version",
- "Pest\\Plugins\\Shard",
- "Pest\\Plugins\\Parallel"
- ]
- },
- "phpstan": {
- "includes": [
- "extension.neon"
- ]
- }
- },
- "autoload": {
- "files": [
- "src/Functions.php",
- "src/Pest.php"
- ],
- "psr-4": {
- "Pest\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nuno Maduro",
- "email": "enunomaduro@gmail.com"
- }
- ],
- "description": "The elegant PHP Testing Framework.",
- "keywords": [
- "framework",
- "pest",
- "php",
- "test",
- "testing",
- "unit"
- ],
- "support": {
- "issues": "https://github.com/pestphp/pest/issues",
- "source": "https://github.com/pestphp/pest/tree/v4.3.1"
- },
- "funding": [
- {
- "url": "https://www.paypal.com/paypalme/enunomaduro",
- "type": "custom"
- },
- {
- "url": "https://github.com/nunomaduro",
- "type": "github"
- }
- ],
- "time": "2026-01-04T16:29:59+00:00"
- },
- {
- "name": "pestphp/pest-plugin",
- "version": "v4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/pestphp/pest-plugin.git",
- "reference": "9d4b93d7f73d3f9c3189bb22c220fef271cdf568"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/9d4b93d7f73d3f9c3189bb22c220fef271cdf568",
- "reference": "9d4b93d7f73d3f9c3189bb22c220fef271cdf568",
- "shasum": ""
- },
- "require": {
- "composer-plugin-api": "^2.0.0",
- "composer-runtime-api": "^2.2.2",
- "php": "^8.3"
- },
- "conflict": {
- "pestphp/pest": "<4.0.0"
- },
- "require-dev": {
- "composer/composer": "^2.8.10",
- "pestphp/pest": "^4.0.0",
- "pestphp/pest-dev-tools": "^4.0.0"
- },
- "type": "composer-plugin",
- "extra": {
- "class": "Pest\\Plugin\\Manager"
- },
- "autoload": {
- "psr-4": {
- "Pest\\Plugin\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "The Pest plugin manager",
- "keywords": [
- "framework",
- "manager",
- "pest",
- "php",
- "plugin",
- "test",
- "testing",
- "unit"
- ],
- "support": {
- "source": "https://github.com/pestphp/pest-plugin/tree/v4.0.0"
- },
- "funding": [
- {
- "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L",
- "type": "custom"
- },
- {
- "url": "https://github.com/nunomaduro",
- "type": "github"
- },
- {
- "url": "https://www.patreon.com/nunomaduro",
- "type": "patreon"
- }
- ],
- "time": "2025-08-20T12:35:58+00:00"
- },
- {
- "name": "pestphp/pest-plugin-arch",
- "version": "v4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/pestphp/pest-plugin-arch.git",
- "reference": "25bb17e37920ccc35cbbcda3b00d596aadf3e58d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/25bb17e37920ccc35cbbcda3b00d596aadf3e58d",
- "reference": "25bb17e37920ccc35cbbcda3b00d596aadf3e58d",
- "shasum": ""
- },
- "require": {
- "pestphp/pest-plugin": "^4.0.0",
- "php": "^8.3",
- "ta-tikoma/phpunit-architecture-test": "^0.8.5"
- },
- "require-dev": {
- "pestphp/pest": "^4.0.0",
- "pestphp/pest-dev-tools": "^4.0.0"
- },
- "type": "library",
- "extra": {
- "pest": {
- "plugins": [
- "Pest\\Arch\\Plugin"
- ]
- }
- },
- "autoload": {
- "files": [
- "src/Autoload.php"
- ],
- "psr-4": {
- "Pest\\Arch\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "The Arch plugin for Pest PHP.",
- "keywords": [
- "arch",
- "architecture",
- "framework",
- "pest",
- "php",
- "plugin",
- "test",
- "testing",
- "unit"
- ],
- "support": {
- "source": "https://github.com/pestphp/pest-plugin-arch/tree/v4.0.0"
- },
- "funding": [
- {
- "url": "https://www.paypal.com/paypalme/enunomaduro",
- "type": "custom"
- },
- {
- "url": "https://github.com/nunomaduro",
- "type": "github"
- }
- ],
- "time": "2025-08-20T13:10:51+00:00"
- },
- {
- "name": "pestphp/pest-plugin-mutate",
- "version": "v4.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/pestphp/pest-plugin-mutate.git",
- "reference": "d9b32b60b2385e1688a68cc227594738ec26d96c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/pestphp/pest-plugin-mutate/zipball/d9b32b60b2385e1688a68cc227594738ec26d96c",
- "reference": "d9b32b60b2385e1688a68cc227594738ec26d96c",
- "shasum": ""
- },
- "require": {
- "nikic/php-parser": "^5.6.1",
- "pestphp/pest-plugin": "^4.0.0",
- "php": "^8.3",
- "psr/simple-cache": "^3.0.0"
- },
- "require-dev": {
- "pestphp/pest": "^4.0.0",
- "pestphp/pest-dev-tools": "^4.0.0",
- "pestphp/pest-plugin-type-coverage": "^4.0.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Pest\\Mutate\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nuno Maduro",
- "email": "enunomaduro@gmail.com"
- },
- {
- "name": "Sandro Gehri",
- "email": "sandrogehri@gmail.com"
- }
- ],
- "description": "Mutates your code to find untested cases",
- "keywords": [
- "framework",
- "mutate",
- "mutation",
- "pest",
- "php",
- "plugin",
- "test",
- "testing",
- "unit"
- ],
- "support": {
- "source": "https://github.com/pestphp/pest-plugin-mutate/tree/v4.0.1"
- },
- "funding": [
- {
- "url": "https://www.paypal.com/paypalme/enunomaduro",
- "type": "custom"
- },
- {
- "url": "https://github.com/gehrisandro",
- "type": "github"
- },
- {
- "url": "https://github.com/nunomaduro",
- "type": "github"
- }
- ],
- "time": "2025-08-21T20:19:25+00:00"
- },
- {
- "name": "pestphp/pest-plugin-profanity",
- "version": "v4.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/pestphp/pest-plugin-profanity.git",
- "reference": "343cfa6f3564b7e35df0ebb77b7fa97039f72b27"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/pestphp/pest-plugin-profanity/zipball/343cfa6f3564b7e35df0ebb77b7fa97039f72b27",
- "reference": "343cfa6f3564b7e35df0ebb77b7fa97039f72b27",
- "shasum": ""
- },
- "require": {
- "pestphp/pest-plugin": "^4.0.0",
- "php": "^8.3"
- },
- "require-dev": {
- "faissaloux/pest-plugin-inside": "^1.9",
- "pestphp/pest": "^4.0.0",
- "pestphp/pest-dev-tools": "^4.0.0"
- },
- "type": "library",
- "extra": {
- "pest": {
- "plugins": [
- "Pest\\Profanity\\Plugin"
- ]
- }
- },
- "autoload": {
- "psr-4": {
- "Pest\\Profanity\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "The Pest Profanity Plugin",
- "keywords": [
- "framework",
- "pest",
- "php",
- "plugin",
- "profanity",
- "test",
- "testing",
- "unit"
- ],
- "support": {
- "source": "https://github.com/pestphp/pest-plugin-profanity/tree/v4.2.1"
- },
- "time": "2025-12-08T00:13:17+00:00"
- },
- {
- "name": "phar-io/manifest",
- "version": "2.0.4",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/manifest.git",
- "reference": "54750ef60c58e43759730615a392c31c80e23176"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176",
- "reference": "54750ef60c58e43759730615a392c31c80e23176",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-libxml": "*",
- "ext-phar": "*",
- "ext-xmlwriter": "*",
- "phar-io/version": "^3.0.1",
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
- }
- ],
- "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
- "support": {
- "issues": "https://github.com/phar-io/manifest/issues",
- "source": "https://github.com/phar-io/manifest/tree/2.0.4"
- },
- "funding": [
- {
- "url": "https://github.com/theseer",
- "type": "github"
- }
- ],
- "time": "2024-03-03T12:33:53+00:00"
- },
- {
- "name": "phar-io/version",
- "version": "3.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/version.git",
- "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
- "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
- }
- ],
- "description": "Library for handling version information and constraints",
- "support": {
- "issues": "https://github.com/phar-io/version/issues",
- "source": "https://github.com/phar-io/version/tree/3.2.1"
- },
- "time": "2022-02-21T01:04:05+00:00"
- },
- {
- "name": "php-di/invoker",
- "version": "2.3.7",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-DI/Invoker.git",
- "reference": "3c1ddfdef181431fbc4be83378f6d036d59e81e1"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/3c1ddfdef181431fbc4be83378f6d036d59e81e1",
- "reference": "3c1ddfdef181431fbc4be83378f6d036d59e81e1",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3",
- "psr/container": "^1.0|^2.0"
- },
- "require-dev": {
- "athletic/athletic": "~0.1.8",
- "mnapoli/hard-mode": "~0.3.0",
- "phpunit/phpunit": "^9.0 || ^10 || ^11 || ^12"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Invoker\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Generic and extensible callable invoker",
- "homepage": "https://github.com/PHP-DI/Invoker",
- "keywords": [
- "callable",
- "dependency",
- "dependency-injection",
- "injection",
- "invoke",
- "invoker"
- ],
- "support": {
- "issues": "https://github.com/PHP-DI/Invoker/issues",
- "source": "https://github.com/PHP-DI/Invoker/tree/2.3.7"
- },
- "funding": [
- {
- "url": "https://github.com/mnapoli",
- "type": "github"
- }
- ],
- "time": "2025-08-30T10:22:22+00:00"
- },
- {
- "name": "php-di/php-di",
- "version": "7.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-DI/PHP-DI.git",
- "reference": "f88054cc052e40dbe7b383c8817c19442d480352"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/f88054cc052e40dbe7b383c8817c19442d480352",
- "reference": "f88054cc052e40dbe7b383c8817c19442d480352",
- "shasum": ""
- },
- "require": {
- "laravel/serializable-closure": "^1.0 || ^2.0",
- "php": ">=8.0",
- "php-di/invoker": "^2.0",
- "psr/container": "^1.1 || ^2.0"
- },
- "provide": {
- "psr/container-implementation": "^1.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "^3",
- "friendsofphp/proxy-manager-lts": "^1",
- "mnapoli/phpunit-easymock": "^1.3",
- "phpunit/phpunit": "^9.6 || ^10 || ^11",
- "vimeo/psalm": "^5|^6"
- },
- "suggest": {
- "friendsofphp/proxy-manager-lts": "Install it if you want to use lazy injection (version ^1)"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/functions.php"
- ],
- "psr-4": {
- "DI\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "The dependency injection container for humans",
- "homepage": "https://php-di.org/",
- "keywords": [
- "PSR-11",
- "container",
- "container-interop",
- "dependency injection",
- "di",
- "ioc",
- "psr11"
- ],
- "support": {
- "issues": "https://github.com/PHP-DI/PHP-DI/issues",
- "source": "https://github.com/PHP-DI/PHP-DI/tree/7.1.1"
- },
- "funding": [
- {
- "url": "https://github.com/mnapoli",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/php-di/php-di",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-16T11:10:48+00:00"
- },
- {
- "name": "phpdocumentor/reflection-common",
- "version": "2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-2.x": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
- }
- ],
- "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
- "homepage": "http://www.phpdoc.org",
- "keywords": [
- "FQSEN",
- "phpDocumentor",
- "phpdoc",
- "reflection",
- "static analysis"
- ],
- "support": {
- "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
- "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
- },
- "time": "2020-06-27T09:03:43+00:00"
- },
- {
- "name": "phpdocumentor/reflection-docblock",
- "version": "5.6.6",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/5cee1d3dfc2d2aa6599834520911d246f656bcb8",
- "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8",
- "shasum": ""
- },
- "require": {
- "doctrine/deprecations": "^1.1",
- "ext-filter": "*",
- "php": "^7.4 || ^8.0",
- "phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.7",
- "phpstan/phpdoc-parser": "^1.7|^2.0",
- "webmozart/assert": "^1.9.1 || ^2"
- },
- "require-dev": {
- "mockery/mockery": "~1.3.5 || ~1.6.0",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "^1.8",
- "phpstan/phpstan-mockery": "^1.1",
- "phpstan/phpstan-webmozart-assert": "^1.2",
- "phpunit/phpunit": "^9.5",
- "psalm/phar": "^5.26"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- },
- {
- "name": "Jaap van Otterdijk",
- "email": "opensource@ijaap.nl"
- }
- ],
- "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.6"
- },
- "time": "2025-12-22T21:13:58+00:00"
- },
- {
- "name": "phpdocumentor/type-resolver",
- "version": "1.12.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/92a98ada2b93d9b201a613cb5a33584dde25f195",
- "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195",
- "shasum": ""
- },
- "require": {
- "doctrine/deprecations": "^1.0",
- "php": "^7.3 || ^8.0",
- "phpdocumentor/reflection-common": "^2.0",
- "phpstan/phpdoc-parser": "^1.18|^2.0"
- },
- "require-dev": {
- "ext-tokenizer": "*",
- "phpbench/phpbench": "^1.2",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "^1.8",
- "phpstan/phpstan-phpunit": "^1.1",
- "phpunit/phpunit": "^9.5",
- "rector/rector": "^0.13.9",
- "vimeo/psalm": "^4.25"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-1.x": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "phpDocumentor\\Reflection\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mike van Riel",
- "email": "me@mikevanriel.com"
- }
- ],
- "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.12.0"
- },
- "time": "2025-11-21T15:09:14+00:00"
- },
- {
- "name": "phpstan/phpdoc-parser",
- "version": "2.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495",
- "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495",
- "shasum": ""
- },
- "require": {
- "php": "^7.4 || ^8.0"
- },
- "require-dev": {
- "doctrine/annotations": "^2.0",
- "nikic/php-parser": "^5.3.0",
- "php-parallel-lint/php-parallel-lint": "^1.2",
- "phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^2.0",
- "phpstan/phpstan-phpunit": "^2.0",
- "phpstan/phpstan-strict-rules": "^2.0",
- "phpunit/phpunit": "^9.6",
- "symfony/process": "^5.2"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "PHPStan\\PhpDocParser\\": [
- "src/"
- ]
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "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"
- },
- "time": "2025-08-30T15:50:23+00:00"
- },
- {
- "name": "phpstan/phpstan",
- "version": "2.1.33",
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f",
- "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f",
- "shasum": ""
- },
- "require": {
- "php": "^7.4|^8.0"
- },
- "conflict": {
- "phpstan/phpstan-shim": "*"
- },
- "bin": [
- "phpstan",
- "phpstan.phar"
- ],
- "type": "library",
- "autoload": {
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "PHPStan - PHP Static Analysis Tool",
- "keywords": [
- "dev",
- "static analysis"
- ],
- "support": {
- "docs": "https://phpstan.org/user-guide/getting-started",
- "forum": "https://github.com/phpstan/phpstan/discussions",
- "issues": "https://github.com/phpstan/phpstan/issues",
- "security": "https://github.com/phpstan/phpstan/security/policy",
- "source": "https://github.com/phpstan/phpstan-src"
- },
- "funding": [
- {
- "url": "https://github.com/ondrejmirtes",
- "type": "github"
- },
- {
- "url": "https://github.com/phpstan",
- "type": "github"
- }
- ],
- "time": "2025-12-05T10:24:31+00:00"
- },
- {
- "name": "phpunit/php-code-coverage",
- "version": "12.5.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "4a9739b51cbcb355f6e95659612f92e282a7077b"
- },
- "dist": {
- "type": "zip",
- "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.7.0",
- "php": ">=8.3",
- "phpunit/php-file-iterator": "^6.0",
- "phpunit/php-text-template": "^5.0",
- "sebastian/complexity": "^5.0",
- "sebastian/environment": "^8.0.3",
- "sebastian/lines-of-code": "^4.0",
- "sebastian/version": "^6.0",
- "theseer/tokenizer": "^2.0.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.5.1"
- },
- "suggest": {
- "ext-pcov": "PHP extension that provides line coverage",
- "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "12.5.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
- "keywords": [
- "coverage",
- "testing",
- "xunit"
- ],
- "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.5.2"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- },
- {
- "url": "https://liberapay.com/sebastianbergmann",
- "type": "liberapay"
- },
- {
- "url": "https://thanks.dev/u/gh/sebastianbergmann",
- "type": "thanks_dev"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage",
- "type": "tidelift"
- }
- ],
- "time": "2025-12-24T07:03:04+00:00"
- },
- {
- "name": "phpunit/php-file-iterator",
- "version": "6.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "961bc913d42fe24a257bfff826a5068079ac7782"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/961bc913d42fe24a257bfff826a5068079ac7782",
- "reference": "961bc913d42fe24a257bfff826a5068079ac7782",
- "shasum": ""
- },
- "require": {
- "php": ">=8.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "6.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
- "keywords": [
- "filesystem",
- "iterator"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
- "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
- "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2025-02-07T04:58:37+00:00"
- },
- {
- "name": "phpunit/php-invoker",
- "version": "6.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-invoker.git",
- "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406",
- "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406",
- "shasum": ""
- },
- "require": {
- "php": ">=8.3"
- },
- "require-dev": {
- "ext-pcntl": "*",
- "phpunit/phpunit": "^12.0"
- },
- "suggest": {
- "ext-pcntl": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "6.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Invoke callables with a timeout",
- "homepage": "https://github.com/sebastianbergmann/php-invoker/",
- "keywords": [
- "process"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
- "security": "https://github.com/sebastianbergmann/php-invoker/security/policy",
- "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2025-02-07T04:58:58+00:00"
- },
- {
- "name": "phpunit/php-text-template",
- "version": "5.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/e1367a453f0eda562eedb4f659e13aa900d66c53",
- "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53",
- "shasum": ""
- },
- "require": {
- "php": ">=8.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "5.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
- "keywords": [
- "template"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
- "security": "https://github.com/sebastianbergmann/php-text-template/security/policy",
- "source": "https://github.com/sebastianbergmann/php-text-template/tree/5.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2025-02-07T04:59:16+00:00"
- },
- {
- "name": "phpunit/php-timer",
- "version": "8.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc",
- "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc",
- "shasum": ""
- },
- "require": {
- "php": ">=8.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "8.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
- "keywords": [
- "timer"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-timer/issues",
- "security": "https://github.com/sebastianbergmann/php-timer/security/policy",
- "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2025-02-07T04:59:38+00:00"
- },
- {
- "name": "phpunit/phpunit",
- "version": "12.5.4",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4ba0e923f9d3fc655de22f9547c01d15a41fc93a",
- "reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-libxml": "*",
- "ext-mbstring": "*",
- "ext-xml": "*",
- "ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.13.4",
- "phar-io/manifest": "^2.0.4",
- "phar-io/version": "^3.2.1",
- "php": ">=8.3",
- "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",
- "phpunit/php-timer": "^8.0.0",
- "sebastian/cli-parser": "^4.2.0",
- "sebastian/comparator": "^7.1.3",
- "sebastian/diff": "^7.0.0",
- "sebastian/environment": "^8.0.3",
- "sebastian/exporter": "^7.0.2",
- "sebastian/global-state": "^8.0.2",
- "sebastian/object-enumerator": "^7.0.0",
- "sebastian/type": "^6.0.3",
- "sebastian/version": "^6.0.0",
- "staabm/side-effects-detector": "^1.0.5"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "12.5-dev"
- }
- },
- "autoload": {
- "files": [
- "src/Framework/Assert/Functions.php"
- ],
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.4"
- },
- "funding": [
- {
- "url": "https://phpunit.de/sponsors.html",
- "type": "custom"
- },
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- },
- {
- "url": "https://liberapay.com/sebastianbergmann",
- "type": "liberapay"
- },
- {
- "url": "https://thanks.dev/u/gh/sebastianbergmann",
- "type": "thanks_dev"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
- "type": "tidelift"
- }
- ],
- "time": "2025-12-15T06:05:34+00:00"
- },
- {
- "name": "rector/rector",
- "version": "2.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/rectorphp/rector.git",
- "reference": "f7166355dcf47482f27be59169b0825995f51c7d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/f7166355dcf47482f27be59169b0825995f51c7d",
- "reference": "f7166355dcf47482f27be59169b0825995f51c7d",
- "shasum": ""
- },
- "require": {
- "php": "^7.4|^8.0",
- "phpstan/phpstan": "^2.1.33"
- },
- "conflict": {
- "rector/rector-doctrine": "*",
- "rector/rector-downgrade-php": "*",
- "rector/rector-phpunit": "*",
- "rector/rector-symfony": "*"
- },
- "suggest": {
- "ext-dom": "To manipulate phpunit.xml via the custom-rule command"
- },
- "bin": [
- "bin/rector"
- ],
- "type": "library",
- "autoload": {
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Instant Upgrade and Automated Refactoring of any PHP code",
- "homepage": "https://getrector.com/",
- "keywords": [
- "automation",
- "dev",
- "migration",
- "refactoring"
- ],
- "support": {
- "issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/2.3.0"
- },
- "funding": [
- {
- "url": "https://github.com/tomasvotruba",
- "type": "github"
- }
- ],
- "time": "2025-12-25T22:00:18+00:00"
- },
- {
- "name": "sebastian/cli-parser",
- "version": "4.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/cli-parser.git",
- "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/90f41072d220e5c40df6e8635f5dafba2d9d4d04",
- "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04",
- "shasum": ""
- },
- "require": {
- "php": ">=8.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "4.2-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library for parsing CLI options",
- "homepage": "https://github.com/sebastianbergmann/cli-parser",
- "support": {
- "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
- "security": "https://github.com/sebastianbergmann/cli-parser/security/policy",
- "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.2.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- },
- {
- "url": "https://liberapay.com/sebastianbergmann",
- "type": "liberapay"
- },
- {
- "url": "https://thanks.dev/u/gh/sebastianbergmann",
- "type": "thanks_dev"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/sebastian/cli-parser",
- "type": "tidelift"
- }
- ],
- "time": "2025-09-14T09:36:45+00:00"
- },
- {
- "name": "sebastian/comparator",
- "version": "7.1.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dc904b4bb3ab070865fa4068cd84f3da8b945148",
- "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-mbstring": "*",
- "php": ">=8.3",
- "sebastian/diff": "^7.0",
- "sebastian/exporter": "^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.2"
- },
- "suggest": {
- "ext-bcmath": "For comparing BcMath\\Number objects"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "7.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- }
- ],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "https://github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/comparator/issues",
- "security": "https://github.com/sebastianbergmann/comparator/security/policy",
- "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.3"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- },
- {
- "url": "https://liberapay.com/sebastianbergmann",
- "type": "liberapay"
- },
- {
- "url": "https://thanks.dev/u/gh/sebastianbergmann",
- "type": "thanks_dev"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-20T11:27:00+00:00"
- },
- {
- "name": "sebastian/complexity",
- "version": "5.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/complexity.git",
- "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb",
- "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb",
- "shasum": ""
- },
- "require": {
- "nikic/php-parser": "^5.0",
- "php": ">=8.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "5.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library for calculating the complexity of PHP code units",
- "homepage": "https://github.com/sebastianbergmann/complexity",
- "support": {
- "issues": "https://github.com/sebastianbergmann/complexity/issues",
- "security": "https://github.com/sebastianbergmann/complexity/security/policy",
- "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2025-02-07T04:55:25+00:00"
- },
- {
- "name": "sebastian/diff",
- "version": "7.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "7ab1ea946c012266ca32390913653d844ecd085f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f",
- "reference": "7ab1ea946c012266ca32390913653d844ecd085f",
- "shasum": ""
- },
- "require": {
- "php": ">=8.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.0",
- "symfony/process": "^7.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "7.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Kore Nordmann",
- "email": "mail@kore-nordmann.de"
- }
- ],
- "description": "Diff implementation",
- "homepage": "https://github.com/sebastianbergmann/diff",
- "keywords": [
- "diff",
- "udiff",
- "unidiff",
- "unified diff"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/diff/issues",
- "security": "https://github.com/sebastianbergmann/diff/security/policy",
- "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2025-02-07T04:55:46+00:00"
- },
- {
- "name": "sebastian/environment",
- "version": "8.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/24a711b5c916efc6d6e62aa65aa2ec98fef77f68",
- "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68",
- "shasum": ""
- },
- "require": {
- "php": ">=8.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.0"
- },
- "suggest": {
- "ext-posix": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "8.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "https://github.com/sebastianbergmann/environment",
- "keywords": [
- "Xdebug",
- "environment",
- "hhvm"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/environment/issues",
- "security": "https://github.com/sebastianbergmann/environment/security/policy",
- "source": "https://github.com/sebastianbergmann/environment/tree/8.0.3"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- },
- {
- "url": "https://liberapay.com/sebastianbergmann",
- "type": "liberapay"
- },
- {
- "url": "https://thanks.dev/u/gh/sebastianbergmann",
- "type": "thanks_dev"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/sebastian/environment",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-12T14:11:56+00:00"
- },
- {
- "name": "sebastian/exporter",
- "version": "7.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "016951ae10980765e4e7aee491eb288c64e505b7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/016951ae10980765e4e7aee491eb288c64e505b7",
- "reference": "016951ae10980765e4e7aee491eb288c64e505b7",
- "shasum": ""
- },
- "require": {
- "ext-mbstring": "*",
- "php": ">=8.3",
- "sebastian/recursion-context": "^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "7.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- }
- ],
- "description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "https://www.github.com/sebastianbergmann/exporter",
- "keywords": [
- "export",
- "exporter"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/exporter/issues",
- "security": "https://github.com/sebastianbergmann/exporter/security/policy",
- "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.2"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- },
- {
- "url": "https://liberapay.com/sebastianbergmann",
- "type": "liberapay"
- },
- {
- "url": "https://thanks.dev/u/gh/sebastianbergmann",
- "type": "thanks_dev"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter",
- "type": "tidelift"
- }
- ],
- "time": "2025-09-24T06:16:11+00:00"
- },
- {
- "name": "sebastian/global-state",
- "version": "8.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "ef1377171613d09edd25b7816f05be8313f9115d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ef1377171613d09edd25b7816f05be8313f9115d",
- "reference": "ef1377171613d09edd25b7816f05be8313f9115d",
- "shasum": ""
- },
- "require": {
- "php": ">=8.3",
- "sebastian/object-reflector": "^5.0",
- "sebastian/recursion-context": "^7.0"
- },
- "require-dev": {
- "ext-dom": "*",
- "phpunit/phpunit": "^12.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "8.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Snapshotting of global state",
- "homepage": "https://www.github.com/sebastianbergmann/global-state",
- "keywords": [
- "global state"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/global-state/issues",
- "security": "https://github.com/sebastianbergmann/global-state/security/policy",
- "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.2"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- },
- {
- "url": "https://liberapay.com/sebastianbergmann",
- "type": "liberapay"
- },
- {
- "url": "https://thanks.dev/u/gh/sebastianbergmann",
- "type": "thanks_dev"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-29T11:29:25+00:00"
- },
- {
- "name": "sebastian/lines-of-code",
- "version": "4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/lines-of-code.git",
- "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/97ffee3bcfb5805568d6af7f0f893678fc076d2f",
- "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f",
- "shasum": ""
- },
- "require": {
- "nikic/php-parser": "^5.0",
- "php": ">=8.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "4.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library for counting the lines of code in PHP source code",
- "homepage": "https://github.com/sebastianbergmann/lines-of-code",
- "support": {
- "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
- "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
- "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2025-02-07T04:57:28+00:00"
- },
- {
- "name": "sebastian/object-enumerator",
- "version": "7.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894",
- "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894",
- "shasum": ""
- },
- "require": {
- "php": ">=8.3",
- "sebastian/object-reflector": "^5.0",
- "sebastian/recursion-context": "^7.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "7.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Traverses array structures and object graphs to enumerate all referenced objects",
- "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
- "support": {
- "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
- "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy",
- "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2025-02-07T04:57:48+00:00"
- },
- {
- "name": "sebastian/object-reflector",
- "version": "5.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "4bfa827c969c98be1e527abd576533293c634f6a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a",
- "reference": "4bfa827c969c98be1e527abd576533293c634f6a",
- "shasum": ""
- },
- "require": {
- "php": ">=8.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "5.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Allows reflection of object attributes, including inherited and non-public ones",
- "homepage": "https://github.com/sebastianbergmann/object-reflector/",
- "support": {
- "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
- "security": "https://github.com/sebastianbergmann/object-reflector/security/policy",
- "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2025-02-07T04:58:17+00:00"
- },
- {
- "name": "sebastian/recursion-context",
- "version": "7.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c",
- "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c",
- "shasum": ""
- },
- "require": {
- "php": ">=8.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "7.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "https://github.com/sebastianbergmann/recursion-context",
- "support": {
- "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
- "security": "https://github.com/sebastianbergmann/recursion-context/security/policy",
- "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.1"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- },
- {
- "url": "https://liberapay.com/sebastianbergmann",
- "type": "liberapay"
- },
- {
- "url": "https://thanks.dev/u/gh/sebastianbergmann",
- "type": "thanks_dev"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-13T04:44:59+00:00"
- },
- {
- "name": "sebastian/type",
- "version": "6.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/type.git",
- "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/e549163b9760b8f71f191651d22acf32d56d6d4d",
- "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d",
- "shasum": ""
- },
- "require": {
- "php": ">=8.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^12.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "6.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Collection of value objects that represent the types of the PHP type system",
- "homepage": "https://github.com/sebastianbergmann/type",
- "support": {
- "issues": "https://github.com/sebastianbergmann/type/issues",
- "security": "https://github.com/sebastianbergmann/type/security/policy",
- "source": "https://github.com/sebastianbergmann/type/tree/6.0.3"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- },
- {
- "url": "https://liberapay.com/sebastianbergmann",
- "type": "liberapay"
- },
- {
- "url": "https://thanks.dev/u/gh/sebastianbergmann",
- "type": "thanks_dev"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/sebastian/type",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-09T06:57:12+00:00"
- },
- {
- "name": "sebastian/version",
- "version": "6.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c",
- "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c",
- "shasum": ""
- },
- "require": {
- "php": ">=8.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "6.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "support": {
- "issues": "https://github.com/sebastianbergmann/version/issues",
- "security": "https://github.com/sebastianbergmann/version/security/policy",
- "source": "https://github.com/sebastianbergmann/version/tree/6.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2025-02-07T05:00:38+00:00"
- },
- {
- "name": "spatie/backtrace",
- "version": "1.8.1",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/backtrace.git",
- "reference": "8c0f16a59ae35ec8c62d85c3c17585158f430110"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/backtrace/zipball/8c0f16a59ae35ec8c62d85c3c17585158f430110",
- "reference": "8c0f16a59ae35ec8c62d85c3c17585158f430110",
- "shasum": ""
- },
- "require": {
- "php": "^7.3 || ^8.0"
- },
- "require-dev": {
- "ext-json": "*",
- "laravel/serializable-closure": "^1.3 || ^2.0",
- "phpunit/phpunit": "^9.3 || ^11.4.3",
- "spatie/phpunit-snapshot-assertions": "^4.2 || ^5.1.6",
- "symfony/var-dumper": "^5.1 || ^6.0 || ^7.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Spatie\\Backtrace\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Freek Van de Herten",
- "email": "freek@spatie.be",
- "homepage": "https://spatie.be",
- "role": "Developer"
- }
- ],
- "description": "A better backtrace",
- "homepage": "https://github.com/spatie/backtrace",
- "keywords": [
- "Backtrace",
- "spatie"
- ],
- "support": {
- "issues": "https://github.com/spatie/backtrace/issues",
- "source": "https://github.com/spatie/backtrace/tree/1.8.1"
- },
- "funding": [
- {
- "url": "https://github.com/sponsors/spatie",
- "type": "github"
- },
- {
- "url": "https://spatie.be/open-source/support-us",
- "type": "other"
- }
- ],
- "time": "2025-08-26T08:22:30+00:00"
- },
- {
- "name": "spatie/error-solutions",
- "version": "1.1.3",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/error-solutions.git",
- "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/error-solutions/zipball/e495d7178ca524f2dd0fe6a1d99a1e608e1c9936",
- "reference": "e495d7178ca524f2dd0fe6a1d99a1e608e1c9936",
- "shasum": ""
- },
- "require": {
- "php": "^8.0"
- },
- "require-dev": {
- "illuminate/broadcasting": "^10.0|^11.0|^12.0",
- "illuminate/cache": "^10.0|^11.0|^12.0",
- "illuminate/support": "^10.0|^11.0|^12.0",
- "livewire/livewire": "^2.11|^3.5.20",
- "openai-php/client": "^0.10.1",
- "orchestra/testbench": "8.22.3|^9.0|^10.0",
- "pestphp/pest": "^2.20|^3.0",
- "phpstan/phpstan": "^2.1",
- "psr/simple-cache": "^3.0",
- "psr/simple-cache-implementation": "^3.0",
- "spatie/ray": "^1.28",
- "symfony/cache": "^5.4|^6.0|^7.0",
- "symfony/process": "^5.4|^6.0|^7.0",
- "vlucas/phpdotenv": "^5.5"
- },
- "suggest": {
- "openai-php/client": "Require get solutions from OpenAI",
- "simple-cache-implementation": "To cache solutions from OpenAI"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Spatie\\Ignition\\": "legacy/ignition",
- "Spatie\\ErrorSolutions\\": "src",
- "Spatie\\LaravelIgnition\\": "legacy/laravel-ignition"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ruben Van Assche",
- "email": "ruben@spatie.be",
- "role": "Developer"
- }
- ],
- "description": "This is my package error-solutions",
- "homepage": "https://github.com/spatie/error-solutions",
- "keywords": [
- "error-solutions",
- "spatie"
- ],
- "support": {
- "issues": "https://github.com/spatie/error-solutions/issues",
- "source": "https://github.com/spatie/error-solutions/tree/1.1.3"
- },
- "funding": [
- {
- "url": "https://github.com/Spatie",
- "type": "github"
- }
- ],
- "time": "2025-02-14T12:29:50+00:00"
- },
- {
- "name": "spatie/flare-client-php",
- "version": "1.10.1",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/flare-client-php.git",
- "reference": "bf1716eb98bd689451b071548ae9e70738dce62f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/bf1716eb98bd689451b071548ae9e70738dce62f",
- "reference": "bf1716eb98bd689451b071548ae9e70738dce62f",
- "shasum": ""
- },
- "require": {
- "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0|^12.0",
- "php": "^8.0",
- "spatie/backtrace": "^1.6.1",
- "symfony/http-foundation": "^5.2|^6.0|^7.0",
- "symfony/mime": "^5.2|^6.0|^7.0",
- "symfony/process": "^5.2|^6.0|^7.0",
- "symfony/var-dumper": "^5.2|^6.0|^7.0"
- },
- "require-dev": {
- "dms/phpunit-arraysubset-asserts": "^0.5.0",
- "pestphp/pest": "^1.20|^2.0",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan-deprecation-rules": "^1.0",
- "phpstan/phpstan-phpunit": "^1.0",
- "spatie/pest-plugin-snapshots": "^1.0|^2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.3.x-dev"
- }
- },
- "autoload": {
- "files": [
- "src/helpers.php"
- ],
- "psr-4": {
- "Spatie\\FlareClient\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Send PHP errors to Flare",
- "homepage": "https://github.com/spatie/flare-client-php",
- "keywords": [
- "exception",
- "flare",
- "reporting",
- "spatie"
- ],
- "support": {
- "issues": "https://github.com/spatie/flare-client-php/issues",
- "source": "https://github.com/spatie/flare-client-php/tree/1.10.1"
- },
- "funding": [
- {
- "url": "https://github.com/spatie",
- "type": "github"
- }
- ],
- "time": "2025-02-14T13:42:06+00:00"
- },
- {
- "name": "spatie/ignition",
- "version": "1.15.1",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/ignition.git",
- "reference": "31f314153020aee5af3537e507fef892ffbf8c85"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/ignition/zipball/31f314153020aee5af3537e507fef892ffbf8c85",
- "reference": "31f314153020aee5af3537e507fef892ffbf8c85",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "ext-mbstring": "*",
- "php": "^8.0",
- "spatie/error-solutions": "^1.0",
- "spatie/flare-client-php": "^1.7",
- "symfony/console": "^5.4|^6.0|^7.0",
- "symfony/var-dumper": "^5.4|^6.0|^7.0"
- },
- "require-dev": {
- "illuminate/cache": "^9.52|^10.0|^11.0|^12.0",
- "mockery/mockery": "^1.4",
- "pestphp/pest": "^1.20|^2.0",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan-deprecation-rules": "^1.0",
- "phpstan/phpstan-phpunit": "^1.0",
- "psr/simple-cache-implementation": "*",
- "symfony/cache": "^5.4|^6.0|^7.0",
- "symfony/process": "^5.4|^6.0|^7.0",
- "vlucas/phpdotenv": "^5.5"
- },
- "suggest": {
- "openai-php/client": "Require get solutions from OpenAI",
- "simple-cache-implementation": "To cache solutions from OpenAI"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.5.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Spatie\\Ignition\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Spatie",
- "email": "info@spatie.be",
- "role": "Developer"
- }
- ],
- "description": "A beautiful error page for PHP applications.",
- "homepage": "https://flareapp.io/ignition",
- "keywords": [
- "error",
- "flare",
- "laravel",
- "page"
- ],
- "support": {
- "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction",
- "forum": "https://twitter.com/flareappio",
- "issues": "https://github.com/spatie/ignition/issues",
- "source": "https://github.com/spatie/ignition"
- },
- "funding": [
- {
- "url": "https://github.com/spatie",
- "type": "github"
- }
- ],
- "time": "2025-02-21T14:31:39+00:00"
- },
- {
- "name": "spatie/laravel-ignition",
- "version": "2.9.1",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/laravel-ignition.git",
- "reference": "1baee07216d6748ebd3a65ba97381b051838707a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/1baee07216d6748ebd3a65ba97381b051838707a",
- "reference": "1baee07216d6748ebd3a65ba97381b051838707a",
- "shasum": ""
- },
- "require": {
- "ext-curl": "*",
- "ext-json": "*",
- "ext-mbstring": "*",
- "illuminate/support": "^10.0|^11.0|^12.0",
- "php": "^8.1",
- "spatie/ignition": "^1.15",
- "symfony/console": "^6.2.3|^7.0",
- "symfony/var-dumper": "^6.2.3|^7.0"
- },
- "require-dev": {
- "livewire/livewire": "^2.11|^3.3.5",
- "mockery/mockery": "^1.5.1",
- "openai-php/client": "^0.8.1|^0.10",
- "orchestra/testbench": "8.22.3|^9.0|^10.0",
- "pestphp/pest": "^2.34|^3.7",
- "phpstan/extension-installer": "^1.3.1",
- "phpstan/phpstan-deprecation-rules": "^1.1.1|^2.0",
- "phpstan/phpstan-phpunit": "^1.3.16|^2.0",
- "vlucas/phpdotenv": "^5.5"
- },
- "suggest": {
- "openai-php/client": "Require get solutions from OpenAI",
- "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "aliases": {
- "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare"
- },
- "providers": [
- "Spatie\\LaravelIgnition\\IgnitionServiceProvider"
- ]
- }
- },
- "autoload": {
- "files": [
- "src/helpers.php"
- ],
- "psr-4": {
- "Spatie\\LaravelIgnition\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Spatie",
- "email": "info@spatie.be",
- "role": "Developer"
- }
- ],
- "description": "A beautiful error page for Laravel applications.",
- "homepage": "https://flareapp.io/ignition",
- "keywords": [
- "error",
- "flare",
- "laravel",
- "page"
- ],
- "support": {
- "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction",
- "forum": "https://twitter.com/flareappio",
- "issues": "https://github.com/spatie/laravel-ignition/issues",
- "source": "https://github.com/spatie/laravel-ignition"
- },
- "funding": [
- {
- "url": "https://github.com/spatie",
- "type": "github"
- }
- ],
- "time": "2025-02-20T13:13:55+00:00"
- },
- {
- "name": "spatie/laravel-ray",
- "version": "1.43.2",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/laravel-ray.git",
- "reference": "6039c5e62118d7b8febc31546d14a5cf9bb63876"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/6039c5e62118d7b8febc31546d14a5cf9bb63876",
- "reference": "6039c5e62118d7b8febc31546d14a5cf9bb63876",
- "shasum": ""
- },
- "require": {
- "composer-runtime-api": "^2.2",
- "ext-json": "*",
- "illuminate/contracts": "^7.20|^8.19|^9.0|^10.0|^11.0|^12.0",
- "illuminate/database": "^7.20|^8.19|^9.0|^10.0|^11.0|^12.0",
- "illuminate/queue": "^7.20|^8.19|^9.0|^10.0|^11.0|^12.0",
- "illuminate/support": "^7.20|^8.19|^9.0|^10.0|^11.0|^12.0",
- "php": "^7.4|^8.0",
- "spatie/backtrace": "^1.7.1",
- "spatie/ray": "^1.44.0",
- "symfony/stopwatch": "4.2|^5.1|^6.0|^7.0|^8.0",
- "zbateson/mail-mime-parser": "^1.3.1|^2.0|^3.0"
- },
- "require-dev": {
- "guzzlehttp/guzzle": "^7.3",
- "laravel/framework": "^7.20|^8.19|^9.0|^10.0|^11.0|^12.0",
- "laravel/pint": "^1.26",
- "orchestra/testbench-core": "^5.0|^6.0|^7.0|^8.0|^9.0|^10.0",
- "pestphp/pest": "^1.22|^2.0|^3.0|^4.0",
- "phpstan/phpstan": "^1.10.57|^2.0.2",
- "phpunit/phpunit": "^9.3|^10.1|^11.0.10|^12.4",
- "rector/rector": "^0.19.2|^1.0.1|^2.0.0",
- "spatie/pest-plugin-snapshots": "^1.1|^2.0",
- "symfony/var-dumper": "^4.2|^5.1|^6.0|^7.0.3|^8.0"
- },
- "type": "library",
- "extra": {
- "laravel": {
- "providers": [
- "Spatie\\LaravelRay\\RayServiceProvider"
- ]
- },
- "branch-alias": {
- "dev-main": "1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Spatie\\LaravelRay\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
- "homepage": "https://spatie.be",
- "role": "Developer"
- }
- ],
- "description": "Easily debug Laravel apps",
- "homepage": "https://github.com/spatie/laravel-ray",
- "keywords": [
- "laravel-ray",
- "spatie"
- ],
- "support": {
- "issues": "https://github.com/spatie/laravel-ray/issues",
- "source": "https://github.com/spatie/laravel-ray/tree/1.43.2"
- },
- "funding": [
- {
- "url": "https://github.com/sponsors/spatie",
- "type": "github"
- },
- {
- "url": "https://spatie.be/open-source/support-us",
- "type": "other"
- }
- ],
- "time": "2025-12-15T09:06:48+00:00"
- },
- {
- "name": "spatie/macroable",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/macroable.git",
- "reference": "ec2c320f932e730607aff8052c44183cf3ecb072"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/macroable/zipball/ec2c320f932e730607aff8052c44183cf3ecb072",
- "reference": "ec2c320f932e730607aff8052c44183cf3ecb072",
- "shasum": ""
- },
- "require": {
- "php": "^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.0|^9.3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Spatie\\Macroable\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
- "homepage": "https://spatie.be",
- "role": "Developer"
- }
- ],
- "description": "A trait to dynamically add methods to a class",
- "homepage": "https://github.com/spatie/macroable",
- "keywords": [
- "macroable",
- "spatie"
- ],
- "support": {
- "issues": "https://github.com/spatie/macroable/issues",
- "source": "https://github.com/spatie/macroable/tree/2.0.0"
- },
- "time": "2021-03-26T22:39:02+00:00"
- },
- {
- "name": "spatie/ray",
- "version": "1.44.1",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/ray.git",
- "reference": "588e201dda9bd94ce27af365f5a734b1de706a81"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/ray/zipball/588e201dda9bd94ce27af365f5a734b1de706a81",
- "reference": "588e201dda9bd94ce27af365f5a734b1de706a81",
- "shasum": ""
- },
- "require": {
- "ext-curl": "*",
- "ext-json": "*",
- "php": "^7.4|^8.0",
- "ramsey/uuid": "^3.0|^4.1",
- "spatie/backtrace": "^1.7.1",
- "spatie/macroable": "^1.0|^2.0",
- "symfony/stopwatch": "^4.2|^5.1|^6.0|^7.0|^8.0",
- "symfony/var-dumper": "^4.2|^5.1|^6.0|^7.0.3|^8.0"
- },
- "require-dev": {
- "illuminate/support": "^7.20|^8.18|^9.0|^10.0|^11.0|^12.0",
- "nesbot/carbon": "^2.63|^3.8.4",
- "pestphp/pest": "^1.22",
- "phpstan/phpstan": "^1.10.57|^2.0.3",
- "phpunit/phpunit": "^9.5",
- "rector/rector": "^0.19.2|^1.0.1|^2.0.0",
- "spatie/phpunit-snapshot-assertions": "^4.2",
- "spatie/test-time": "^1.2"
- },
- "bin": [
- "bin/remove-ray.sh"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.x-dev"
- }
- },
- "autoload": {
- "files": [
- "src/helpers.php"
- ],
- "psr-4": {
- "Spatie\\Ray\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Freek Van der Herten",
- "email": "freek@spatie.be",
- "homepage": "https://spatie.be",
- "role": "Developer"
- }
- ],
- "description": "Debug with Ray to fix problems faster",
- "homepage": "https://github.com/spatie/ray",
- "keywords": [
- "ray",
- "spatie"
- ],
- "support": {
- "issues": "https://github.com/spatie/ray/issues",
- "source": "https://github.com/spatie/ray/tree/1.44.1"
- },
- "funding": [
- {
- "url": "https://github.com/sponsors/spatie",
- "type": "github"
- },
- {
- "url": "https://spatie.be/open-source/support-us",
- "type": "other"
- }
- ],
- "time": "2025-11-21T10:44:03+00:00"
- },
- {
- "name": "staabm/side-effects-detector",
- "version": "1.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/staabm/side-effects-detector.git",
- "reference": "d8334211a140ce329c13726d4a715adbddd0a163"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163",
- "reference": "d8334211a140ce329c13726d4a715adbddd0a163",
- "shasum": ""
- },
- "require": {
- "ext-tokenizer": "*",
- "php": "^7.4 || ^8.0"
- },
- "require-dev": {
- "phpstan/extension-installer": "^1.4.3",
- "phpstan/phpstan": "^1.12.6",
- "phpunit/phpunit": "^9.6.21",
- "symfony/var-dumper": "^5.4.43",
- "tomasvotruba/type-coverage": "1.0.0",
- "tomasvotruba/unused-public": "1.0.0"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "lib/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "A static analysis tool to detect side effects in PHP code",
- "keywords": [
- "static analysis"
- ],
- "support": {
- "issues": "https://github.com/staabm/side-effects-detector/issues",
- "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5"
- },
- "funding": [
- {
- "url": "https://github.com/staabm",
- "type": "github"
- }
- ],
- "time": "2024-10-20T05:08:20+00:00"
- },
- {
- "name": "symfony/polyfill-iconv",
- "version": "v1.33.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-iconv.git",
- "reference": "5f3b930437ae03ae5dff61269024d8ea1b3774aa"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/5f3b930437ae03ae5dff61269024d8ea1b3774aa",
- "reference": "5f3b930437ae03ae5dff61269024d8ea1b3774aa",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2"
- },
- "provide": {
- "ext-iconv": "*"
- },
- "suggest": {
- "ext-iconv": "For best performance"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "url": "https://github.com/symfony/polyfill",
- "name": "symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Iconv\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for the Iconv extension",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "iconv",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-iconv/tree/v1.33.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": "2024-09-17T14:58:18+00:00"
- },
- {
- "name": "symfony/stopwatch",
- "version": "v8.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/stopwatch.git",
- "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/67df1914c6ccd2d7b52f70d40cf2aea02159d942",
- "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942",
- "shasum": ""
- },
- "require": {
- "php": ">=8.4",
- "symfony/service-contracts": "^2.5|^3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Stopwatch\\": ""
- },
- "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 a way to profile code",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/stopwatch/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-08-04T07:36:47+00:00"
- },
- {
- "name": "symfony/yaml",
- "version": "v7.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "24dd4de28d2e3988b311751ac49e684d783e2345"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/24dd4de28d2e3988b311751ac49e684d783e2345",
- "reference": "24dd4de28d2e3988b311751ac49e684d783e2345",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "symfony/console": "<6.4"
- },
- "require-dev": {
- "symfony/console": "^6.4|^7.0|^8.0"
- },
- "bin": [
- "Resources/bin/yaml-lint"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "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": "Loads and dumps YAML files",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/yaml/tree/v7.4.1"
- },
- "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-12-04T18:11:45+00:00"
- },
- {
- "name": "ta-tikoma/phpunit-architecture-test",
- "version": "0.8.5",
- "source": {
- "type": "git",
- "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git",
- "reference": "cf6fb197b676ba716837c886baca842e4db29005"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/cf6fb197b676ba716837c886baca842e4db29005",
- "reference": "cf6fb197b676ba716837c886baca842e4db29005",
- "shasum": ""
- },
- "require": {
- "nikic/php-parser": "^4.18.0 || ^5.0.0",
- "php": "^8.1.0",
- "phpdocumentor/reflection-docblock": "^5.3.0",
- "phpunit/phpunit": "^10.5.5 || ^11.0.0 || ^12.0.0",
- "symfony/finder": "^6.4.0 || ^7.0.0"
- },
- "require-dev": {
- "laravel/pint": "^1.13.7",
- "phpstan/phpstan": "^1.10.52"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "PHPUnit\\Architecture\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ni Shi",
- "email": "futik0ma011@gmail.com"
- },
- {
- "name": "Nuno Maduro",
- "email": "enunomaduro@gmail.com"
- }
- ],
- "description": "Methods for testing application architecture",
- "keywords": [
- "architecture",
- "phpunit",
- "stucture",
- "test",
- "testing"
- ],
- "support": {
- "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues",
- "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.5"
- },
- "time": "2025-04-20T20:23:40+00:00"
- },
- {
- "name": "theseer/tokenizer",
- "version": "2.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/theseer/tokenizer.git",
- "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/7989e43bf381af0eac72e4f0ca5bcbfa81658be4",
- "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-tokenizer": "*",
- "ext-xmlwriter": "*",
- "php": "^8.1"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- }
- ],
- "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/2.0.1"
- },
- "funding": [
- {
- "url": "https://github.com/theseer",
- "type": "github"
- }
- ],
- "time": "2025-12-08T11:19:18+00:00"
- },
- {
- "name": "webmozart/assert",
- "version": "1.12.1",
- "source": {
- "type": "git",
- "url": "https://github.com/webmozarts/assert.git",
- "reference": "9be6926d8b485f55b9229203f962b51ed377ba68"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68",
- "reference": "9be6926d8b485f55b9229203f962b51ed377ba68",
- "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.1"
- },
- "time": "2025-10-29T15:56:20+00:00"
- },
- {
- "name": "zbateson/mail-mime-parser",
- "version": "3.0.5",
- "source": {
- "type": "git",
- "url": "https://github.com/zbateson/mail-mime-parser.git",
- "reference": "ff054c8e05310c445c2028c6128a4319cc9f6aa8"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/ff054c8e05310c445c2028c6128a4319cc9f6aa8",
- "reference": "ff054c8e05310c445c2028c6128a4319cc9f6aa8",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/psr7": "^2.5",
- "php": ">=8.0",
- "php-di/php-di": "^6.0|^7.0",
- "psr/log": "^1|^2|^3",
- "zbateson/mb-wrapper": "^2.0",
- "zbateson/stream-decorators": "^2.1"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "*",
- "monolog/monolog": "^2|^3",
- "phpstan/phpstan": "*",
- "phpunit/phpunit": "^9.6"
- },
- "suggest": {
- "ext-iconv": "For best support/performance",
- "ext-mbstring": "For best support/performance"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "ZBateson\\MailMimeParser\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "authors": [
- {
- "name": "Zaahid Bateson"
- },
- {
- "name": "Contributors",
- "homepage": "https://github.com/zbateson/mail-mime-parser/graphs/contributors"
- }
- ],
- "description": "MIME email message parser",
- "homepage": "https://mail-mime-parser.org",
- "keywords": [
- "MimeMailParser",
- "email",
- "mail",
- "mailparse",
- "mime",
- "mimeparse",
- "parser",
- "php-imap"
- ],
- "support": {
- "docs": "https://mail-mime-parser.org/#usage-guide",
- "issues": "https://github.com/zbateson/mail-mime-parser/issues",
- "source": "https://github.com/zbateson/mail-mime-parser"
- },
- "funding": [
- {
- "url": "https://github.com/zbateson",
- "type": "github"
- }
- ],
- "time": "2025-12-02T00:29:16+00:00"
- },
- {
- "name": "zbateson/mb-wrapper",
- "version": "2.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/zbateson/mb-wrapper.git",
- "reference": "50a14c0c9537f978a61cde9fdc192a0267cc9cff"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/50a14c0c9537f978a61cde9fdc192a0267cc9cff",
- "reference": "50a14c0c9537f978a61cde9fdc192a0267cc9cff",
- "shasum": ""
- },
- "require": {
- "php": ">=8.0",
- "symfony/polyfill-iconv": "^1.9",
- "symfony/polyfill-mbstring": "^1.9"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "*",
- "phpstan/phpstan": "*",
- "phpunit/phpunit": "^9.6|^10.0"
- },
- "suggest": {
- "ext-iconv": "For best support/performance",
- "ext-mbstring": "For best support/performance"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "ZBateson\\MbWrapper\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "authors": [
- {
- "name": "Zaahid Bateson"
- }
- ],
- "description": "Wrapper for mbstring with fallback to iconv for encoding conversion and string manipulation",
- "keywords": [
- "charset",
- "encoding",
- "http",
- "iconv",
- "mail",
- "mb",
- "mb_convert_encoding",
- "mbstring",
- "mime",
- "multibyte",
- "string"
- ],
- "support": {
- "issues": "https://github.com/zbateson/mb-wrapper/issues",
- "source": "https://github.com/zbateson/mb-wrapper/tree/2.0.1"
- },
- "funding": [
- {
- "url": "https://github.com/zbateson",
- "type": "github"
- }
- ],
- "time": "2024-12-20T22:05:33+00:00"
- },
- {
- "name": "zbateson/stream-decorators",
- "version": "2.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/zbateson/stream-decorators.git",
- "reference": "32a2a62fb0f26313395c996ebd658d33c3f9c4e5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/32a2a62fb0f26313395c996ebd658d33c3f9c4e5",
- "reference": "32a2a62fb0f26313395c996ebd658d33c3f9c4e5",
- "shasum": ""
- },
- "require": {
- "guzzlehttp/psr7": "^2.5",
- "php": ">=8.0",
- "zbateson/mb-wrapper": "^2.0"
- },
- "require-dev": {
- "friendsofphp/php-cs-fixer": "*",
- "phpstan/phpstan": "*",
- "phpunit/phpunit": "^9.6|^10.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "ZBateson\\StreamDecorators\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "authors": [
- {
- "name": "Zaahid Bateson"
- }
- ],
- "description": "PHP psr7 stream decorators for mime message part streams",
- "keywords": [
- "base64",
- "charset",
- "decorators",
- "mail",
- "mime",
- "psr7",
- "quoted-printable",
- "stream",
- "uuencode"
- ],
- "support": {
- "issues": "https://github.com/zbateson/stream-decorators/issues",
- "source": "https://github.com/zbateson/stream-decorators/tree/2.1.1"
- },
- "funding": [
- {
- "url": "https://github.com/zbateson",
- "type": "github"
- }
- ],
- "time": "2024-04-29T21:42:39+00:00"
- }
- ],
- "aliases": [],
- "minimum-stability": "dev",
- "stability-flags": {},
- "prefer-stable": true,
- "prefer-lowest": false,
- "platform": {
- "php": "^8.5",
- "ext-sockets": "*"
- },
- "platform-dev": {},
- "plugin-api-version": "2.9.0"
-}
diff --git a/Updated_Cms/package.json b/Updated_Cms/package.json
deleted file mode 100644
index 76f7c9b628..0000000000
--- a/Updated_Cms/package.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
- "private": true,
- "type": "module",
- "scripts": {
- "dev:atom": "vite --config resources/themes/atom/vite.config.js",
- "build:atom": "vite build --config resources/themes/atom/vite.config.js",
- "dev:dusk": "vite --config resources/themes/dusk/vite.config.js",
- "build:dusk": "vite build --config resources/themes/dusk/vite.config.js",
- "format": "prettier \"resources/**/*.{js,ts,vue,blade}\" --write"
- },
- "devDependencies": {
- "@alpinejs/focus": "^3.15.3",
- "@prettier/plugin-php": "^0.24.0",
- "@shufo/prettier-plugin-blade": "^1.16.1",
- "@tailwindcss/forms": "^0.5.11",
- "@tailwindcss/typography": "^0.5.19",
- "alpinejs": "^3.15.3",
- "autoprefixer": "^10.4.23",
- "axios": "^1.13.2",
- "bootstrap": "^5.3.8",
- "jquery": "^3.7.1",
- "laravel-vite-plugin": "^2.0.1",
- "lodash": "^4.17.19",
- "popper.js": "^1.16",
- "postcss": "^8.4.14",
- "postcss-import": "^16.1.1",
- "prettier": "^3.0.0",
- "sass-loader": "^16.0.6",
- "tailwindcss": "^3.1.6",
- "turbolinks": "^5.2.0",
- "vite": "^7.3.1"
- },
- "dependencies": {
- "-": "^0.0.1",
- "@popperjs/core": "^2.11.8",
- "postcss-nesting": "^13.0.2",
- "sass": "^1.97.2",
- "swiper": "^12.0.3"
- }
-}
diff --git a/Updated_Cms/phpunit.xml b/Updated_Cms/phpunit.xml
deleted file mode 100644
index 7471f9c63f..0000000000
--- a/Updated_Cms/phpunit.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- ./tests/Unit
-
-
- ./tests/Feature
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ./app
-
-
-
diff --git a/Updated_Cms/pint.json b/Updated_Cms/pint.json
deleted file mode 100644
index 706cec34e2..0000000000
--- a/Updated_Cms/pint.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "preset": "laravel",
- "rules": {
- "simplified_null_return": true,
- "braces_position": {
- "control_structures_opening_brace": "same_line",
- "functions_opening_brace": "next_line_unless_newline_at_signature_end",
- "anonymous_functions_opening_brace": "same_line",
- "classes_opening_brace": "next_line_unless_newline_at_signature_end",
- "anonymous_classes_opening_brace": "next_line_unless_newline_at_signature_end",
- "allow_single_line_empty_anonymous_classes": false,
- "allow_single_line_anonymous_functions": false
- },
- "concat_space": {
- "spacing": "one"
- },
- "method_chaining_indentation": true,
- "multiline_whitespace_before_semicolons": {
- "strategy": "no_multi_line"
- },
- "single_line_after_imports": true,
- "no_unused_imports": true,
- "ordered_imports": {
- "sort_algorithm": "alpha",
- "imports_order": ["const", "class", "function"]
- },
- "no_superfluous_phpdoc_tags": {
- "allow_mixed": true,
- "allow_unused_params": false,
- "remove_inheritdoc": false
- },
- "phpdoc_order": true,
- "phpdoc_separation": true,
- "phpdoc_trim": true,
- "return_type_declaration": {
- "space_before": "none"
- },
- "trailing_comma_in_multiline": {
- "elements": ["arrays", "arguments", "parameters"]
- },
- "visibility_required": {
- "elements": ["property", "method", "const"]
- }
- },
- "exclude": [
- "bootstrap/cache",
- "storage",
- "vendor",
- "node_modules"
- ]
-}
\ No newline at end of file
diff --git a/Updated_Cms/postcss.config.cjs b/Updated_Cms/postcss.config.cjs
deleted file mode 100644
index e03dc2dfb4..0000000000
--- a/Updated_Cms/postcss.config.cjs
+++ /dev/null
@@ -1,8 +0,0 @@
-module.exports = {
- plugins: {
- 'postcss-import': {},
- 'tailwindcss/nesting': require('postcss-nesting'),
- tailwindcss: {},
- autoprefixer: {},
- },
-}
diff --git a/Updated_Cms/public/assets/images/generated-logos/Epicnabbo_1767812313913.png b/Updated_Cms/public/assets/images/generated-logos/Epicnabbo_1767812313913.png
new file mode 100644
index 0000000000..d7098e0cba
Binary files /dev/null and b/Updated_Cms/public/assets/images/generated-logos/Epicnabbo_1767812313913.png differ
diff --git a/Updated_Cms/public/assets/images/generated-logos/Futurehotel_1766517387515.png b/Updated_Cms/public/assets/images/generated-logos/Futurehotel_1766517387515.png
new file mode 100644
index 0000000000..1da0c6bd9f
Binary files /dev/null and b/Updated_Cms/public/assets/images/generated-logos/Futurehotel_1766517387515.png differ
diff --git a/Updated_Cms/public/build/assets/_commonjsHelpers-DwqltJqu.js b/Updated_Cms/public/build/assets/_commonjsHelpers-DwqltJqu.js
new file mode 100644
index 0000000000..52e714cd3f
--- /dev/null
+++ b/Updated_Cms/public/build/assets/_commonjsHelpers-DwqltJqu.js
@@ -0,0 +1,6 @@
+function ze(e,t){return function(){return e.apply(t,arguments)}}const{toString:ht}=Object.prototype,{getPrototypeOf:be}=Object,{iterator:re,toStringTag:Je}=Symbol,se=(e=>t=>{const n=ht.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),P=e=>(e=e.toLowerCase(),t=>se(t)===e),oe=e=>t=>typeof t===e,{isArray:M}=Array,I=oe("undefined");function V(e){return e!==null&&!I(e)&&e.constructor!==null&&!I(e.constructor)&&T(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const Ve=P("ArrayBuffer");function mt(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&Ve(e.buffer),t}const yt=oe("string"),T=oe("function"),We=oe("number"),W=e=>e!==null&&typeof e=="object",bt=e=>e===!0||e===!1,Y=e=>{if(se(e)!=="object")return!1;const t=be(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Je in e)&&!(re in e)},wt=e=>{if(!W(e)||V(e))return!1;try{return Object.keys(e).length===0&&Object.getPrototypeOf(e)===Object.prototype}catch{return!1}},Et=P("Date"),gt=P("File"),St=P("Blob"),Rt=P("FileList"),Ot=e=>W(e)&&T(e.pipe),Tt=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||T(e.append)&&((t=se(e))==="formdata"||t==="object"&&T(e.toString)&&e.toString()==="[object FormData]"))},At=P("URLSearchParams"),[Ct,xt,Nt,Pt]=["ReadableStream","Request","Response","Headers"].map(P),Ft=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function K(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,s;if(typeof e!="object"&&(e=[e]),M(e))for(r=0,s=e.length;r0;)if(s=n[r],t===s.toLowerCase())return s;return null}const k=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,ve=e=>!I(e)&&e!==k;function pe(){const{caseless:e,skipUndefined:t}=ve(this)&&this||{},n={},r=(s,i)=>{const o=e&&Ke(n,i)||i;Y(n[o])&&Y(s)?n[o]=pe(n[o],s):Y(s)?n[o]=pe({},s):M(s)?n[o]=s.slice():(!t||!I(s))&&(n[o]=s)};for(let s=0,i=arguments.length;s(K(t,(s,i)=>{n&&T(s)?e[i]=ze(s,n):e[i]=s},{allOwnKeys:r}),e),Ut=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Lt=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},Bt=(e,t,n,r)=>{let s,i,o;const c={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),i=s.length;i-- >0;)o=s[i],(!r||r(o,e,t))&&!c[o]&&(t[o]=e[o],c[o]=!0);e=n!==!1&&be(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Dt=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},kt=e=>{if(!e)return null;if(M(e))return e;let t=e.length;if(!We(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},jt=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&be(Uint8Array)),qt=(e,t)=>{const r=(e&&e[re]).call(e);let s;for(;(s=r.next())&&!s.done;){const i=s.value;t.call(e,i[0],i[1])}},Ht=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},It=P("HTMLFormElement"),Mt=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),xe=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),$t=P("RegExp"),Xe=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};K(n,(s,i)=>{let o;(o=t(s,i,e))!==!1&&(r[i]=o||s)}),Object.defineProperties(e,r)},zt=e=>{Xe(e,(t,n)=>{if(T(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(T(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Jt=(e,t)=>{const n={},r=s=>{s.forEach(i=>{n[i]=!0})};return M(e)?r(e):r(String(e).split(t)),n},Vt=()=>{},Wt=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t;function Kt(e){return!!(e&&T(e.append)&&e[Je]==="FormData"&&e[re])}const vt=e=>{const t=new Array(10),n=(r,s)=>{if(W(r)){if(t.indexOf(r)>=0)return;if(V(r))return r;if(!("toJSON"in r)){t[s]=r;const i=M(r)?[]:{};return K(r,(o,c)=>{const d=n(o,s+1);!I(d)&&(i[c]=d)}),t[s]=void 0,i}}return r};return n(e,0)},Xt=P("AsyncFunction"),Gt=e=>e&&(W(e)||T(e))&&T(e.then)&&T(e.catch),Ge=((e,t)=>e?setImmediate:t?((n,r)=>(k.addEventListener("message",({source:s,data:i})=>{s===k&&i===n&&r.length&&r.shift()()},!1),s=>{r.push(s),k.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",T(k.postMessage)),Qt=typeof queueMicrotask<"u"?queueMicrotask.bind(k):typeof process<"u"&&process.nextTick||Ge,Zt=e=>e!=null&&T(e[re]),a={isArray:M,isArrayBuffer:Ve,isBuffer:V,isFormData:Tt,isArrayBufferView:mt,isString:yt,isNumber:We,isBoolean:bt,isObject:W,isPlainObject:Y,isEmptyObject:wt,isReadableStream:Ct,isRequest:xt,isResponse:Nt,isHeaders:Pt,isUndefined:I,isDate:Et,isFile:gt,isBlob:St,isRegExp:$t,isFunction:T,isStream:Ot,isURLSearchParams:At,isTypedArray:jt,isFileList:Rt,forEach:K,merge:pe,extend:_t,trim:Ft,stripBOM:Ut,inherits:Lt,toFlatObject:Bt,kindOf:se,kindOfTest:P,endsWith:Dt,toArray:kt,forEachEntry:qt,matchAll:Ht,isHTMLForm:It,hasOwnProperty:xe,hasOwnProp:xe,reduceDescriptors:Xe,freezeMethods:zt,toObjectSet:Jt,toCamelCase:Mt,noop:Vt,toFiniteNumber:Wt,findKey:Ke,global:k,isContextDefined:ve,isSpecCompliantForm:Kt,toJSONObject:vt,isAsyncFn:Xt,isThenable:Gt,setImmediate:Ge,asap:Qt,isIterable:Zt};function y(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}a.inherits(y,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});const Qe=y.prototype,Ze={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Ze[e]={value:e}});Object.defineProperties(y,Ze);Object.defineProperty(Qe,"isAxiosError",{value:!0});y.from=(e,t,n,r,s,i)=>{const o=Object.create(Qe);a.toFlatObject(e,o,function(l){return l!==Error.prototype},f=>f!=="isAxiosError");const c=e&&e.message?e.message:"Error",d=t==null&&e?e.code:t;return y.call(o,c,d,n,r,s),e&&o.cause==null&&Object.defineProperty(o,"cause",{value:e,configurable:!0}),o.name=e&&e.name||"Error",i&&Object.assign(o,i),o};const Yt=null;function he(e){return a.isPlainObject(e)||a.isArray(e)}function Ye(e){return a.endsWith(e,"[]")?e.slice(0,-2):e}function Ne(e,t,n){return e?e.concat(t).map(function(s,i){return s=Ye(s),!n&&i?"["+s+"]":s}).join(n?".":""):t}function en(e){return a.isArray(e)&&!e.some(he)}const tn=a.toFlatObject(a,{},null,function(t){return/^is[A-Z]/.test(t)});function ie(e,t,n){if(!a.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=a.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(m,p){return!a.isUndefined(p[m])});const r=n.metaTokens,s=n.visitor||l,i=n.dots,o=n.indexes,d=(n.Blob||typeof Blob<"u"&&Blob)&&a.isSpecCompliantForm(t);if(!a.isFunction(s))throw new TypeError("visitor must be a function");function f(u){if(u===null)return"";if(a.isDate(u))return u.toISOString();if(a.isBoolean(u))return u.toString();if(!d&&a.isBlob(u))throw new y("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(u)||a.isTypedArray(u)?d&&typeof Blob=="function"?new Blob([u]):Buffer.from(u):u}function l(u,m,p){let E=u;if(u&&!p&&typeof u=="object"){if(a.endsWith(m,"{}"))m=r?m:m.slice(0,-2),u=JSON.stringify(u);else if(a.isArray(u)&&en(u)||(a.isFileList(u)||a.endsWith(m,"[]"))&&(E=a.toArray(u)))return m=Ye(m),E.forEach(function(g,O){!(a.isUndefined(g)||g===null)&&t.append(o===!0?Ne([m],O,i):o===null?m:m+"[]",f(g))}),!1}return he(u)?!0:(t.append(Ne(p,m,i),f(u)),!1)}const h=[],b=Object.assign(tn,{defaultVisitor:l,convertValue:f,isVisitable:he});function S(u,m){if(!a.isUndefined(u)){if(h.indexOf(u)!==-1)throw Error("Circular reference detected in "+m.join("."));h.push(u),a.forEach(u,function(E,C){(!(a.isUndefined(E)||E===null)&&s.call(t,E,a.isString(C)?C.trim():C,m,b))===!0&&S(E,m?m.concat(C):[C])}),h.pop()}}if(!a.isObject(e))throw new TypeError("data must be an object");return S(e),t}function Pe(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function we(e,t){this._pairs=[],e&&ie(e,this,t)}const et=we.prototype;et.append=function(t,n){this._pairs.push([t,n])};et.toString=function(t){const n=t?function(r){return t.call(this,r,Pe)}:Pe;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function nn(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function tt(e,t,n){if(!t)return e;const r=n&&n.encode||nn;a.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let i;if(s?i=s(t,n):i=a.isURLSearchParams(t)?t.toString():new we(t,n).toString(r),i){const o=e.indexOf("#");o!==-1&&(e=e.slice(0,o)),e+=(e.indexOf("?")===-1?"?":"&")+i}return e}class Fe{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){a.forEach(this.handlers,function(r){r!==null&&t(r)})}}const nt={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},rn=typeof URLSearchParams<"u"?URLSearchParams:we,sn=typeof FormData<"u"?FormData:null,on=typeof Blob<"u"?Blob:null,an={isBrowser:!0,classes:{URLSearchParams:rn,FormData:sn,Blob:on},protocols:["http","https","file","blob","url","data"]},Ee=typeof window<"u"&&typeof document<"u",me=typeof navigator=="object"&&navigator||void 0,cn=Ee&&(!me||["ReactNative","NativeScript","NS"].indexOf(me.product)<0),ln=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",un=Ee&&window.location.href||"http://localhost",fn=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Ee,hasStandardBrowserEnv:cn,hasStandardBrowserWebWorkerEnv:ln,navigator:me,origin:un},Symbol.toStringTag,{value:"Module"})),R={...fn,...an};function dn(e,t){return ie(e,new R.classes.URLSearchParams,{visitor:function(n,r,s,i){return R.isNode&&a.isBuffer(n)?(this.append(r,n.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...t})}function pn(e){return a.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function hn(e){const t={},n=Object.keys(e);let r;const s=n.length;let i;for(r=0;r=n.length;return o=!o&&a.isArray(s)?s.length:o,d?(a.hasOwnProp(s,o)?s[o]=[s[o],r]:s[o]=r,!c):((!s[o]||!a.isObject(s[o]))&&(s[o]=[]),t(n,r,s[o],i)&&a.isArray(s[o])&&(s[o]=hn(s[o])),!c)}if(a.isFormData(e)&&a.isFunction(e.entries)){const n={};return a.forEachEntry(e,(r,s)=>{t(pn(r),s,n,0)}),n}return null}function mn(e,t,n){if(a.isString(e))try{return(t||JSON.parse)(e),a.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const v={transitional:nt,adapter:["xhr","http","fetch"],transformRequest:[function(t,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,i=a.isObject(t);if(i&&a.isHTMLForm(t)&&(t=new FormData(t)),a.isFormData(t))return s?JSON.stringify(rt(t)):t;if(a.isArrayBuffer(t)||a.isBuffer(t)||a.isStream(t)||a.isFile(t)||a.isBlob(t)||a.isReadableStream(t))return t;if(a.isArrayBufferView(t))return t.buffer;if(a.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let c;if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return dn(t,this.formSerializer).toString();if((c=a.isFileList(t))||r.indexOf("multipart/form-data")>-1){const d=this.env&&this.env.FormData;return ie(c?{"files[]":t}:t,d&&new d,this.formSerializer)}}return i||s?(n.setContentType("application/json",!1),mn(t)):t}],transformResponse:[function(t){const n=this.transitional||v.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(a.isResponse(t)||a.isReadableStream(t))return t;if(t&&a.isString(t)&&(r&&!this.responseType||s)){const o=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t,this.parseReviver)}catch(c){if(o)throw c.name==="SyntaxError"?y.from(c,y.ERR_BAD_RESPONSE,this,null,this.response):c}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:R.classes.FormData,Blob:R.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],e=>{v.headers[e]={}});const yn=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),bn=e=>{const t={};let n,r,s;return e&&e.split(`
+`).forEach(function(o){s=o.indexOf(":"),n=o.substring(0,s).trim().toLowerCase(),r=o.substring(s+1).trim(),!(!n||t[n]&&yn[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},_e=Symbol("internals");function J(e){return e&&String(e).trim().toLowerCase()}function ee(e){return e===!1||e==null?e:a.isArray(e)?e.map(ee):String(e)}function wn(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const En=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function ue(e,t,n,r,s){if(a.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!a.isString(t)){if(a.isString(r))return t.indexOf(r)!==-1;if(a.isRegExp(r))return r.test(t)}}function gn(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function Sn(e,t){const n=a.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,i,o){return this[r].call(this,t,s,i,o)},configurable:!0})})}let A=class{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function i(c,d,f){const l=J(d);if(!l)throw new Error("header name must be a non-empty string");const h=a.findKey(s,l);(!h||s[h]===void 0||f===!0||f===void 0&&s[h]!==!1)&&(s[h||d]=ee(c))}const o=(c,d)=>a.forEach(c,(f,l)=>i(f,l,d));if(a.isPlainObject(t)||t instanceof this.constructor)o(t,n);else if(a.isString(t)&&(t=t.trim())&&!En(t))o(bn(t),n);else if(a.isObject(t)&&a.isIterable(t)){let c={},d,f;for(const l of t){if(!a.isArray(l))throw TypeError("Object iterator must return a key-value pair");c[f=l[0]]=(d=c[f])?a.isArray(d)?[...d,l[1]]:[d,l[1]]:l[1]}o(c,n)}else t!=null&&i(n,t,r);return this}get(t,n){if(t=J(t),t){const r=a.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return wn(s);if(a.isFunction(n))return n.call(this,s,r);if(a.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=J(t),t){const r=a.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||ue(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function i(o){if(o=J(o),o){const c=a.findKey(r,o);c&&(!n||ue(r,r[c],c,n))&&(delete r[c],s=!0)}}return a.isArray(t)?t.forEach(i):i(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const i=n[r];(!t||ue(this,this[i],i,t,!0))&&(delete this[i],s=!0)}return s}normalize(t){const n=this,r={};return a.forEach(this,(s,i)=>{const o=a.findKey(r,i);if(o){n[o]=ee(s),delete n[i];return}const c=t?gn(i):String(i).trim();c!==i&&delete n[i],n[c]=ee(s),r[c]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return a.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&a.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(`
+`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[_e]=this[_e]={accessors:{}}).accessors,s=this.prototype;function i(o){const c=J(o);r[c]||(Sn(s,o),r[c]=!0)}return a.isArray(t)?t.forEach(i):i(t),this}};A.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);a.reduceDescriptors(A.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});a.freezeMethods(A);function fe(e,t){const n=this||v,r=t||n,s=A.from(r.headers);let i=r.data;return a.forEach(e,function(c){i=c.call(n,i,s.normalize(),t?t.status:void 0)}),s.normalize(),i}function st(e){return!!(e&&e.__CANCEL__)}function $(e,t,n){y.call(this,e??"canceled",y.ERR_CANCELED,t,n),this.name="CanceledError"}a.inherits($,y,{__CANCEL__:!0});function ot(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new y("Request failed with status code "+n.status,[y.ERR_BAD_REQUEST,y.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function Rn(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function On(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,i=0,o;return t=t!==void 0?t:1e3,function(d){const f=Date.now(),l=r[i];o||(o=f),n[s]=d,r[s]=f;let h=i,b=0;for(;h!==s;)b+=n[h++],h=h%e;if(s=(s+1)%e,s===i&&(i=(i+1)%e),f-o{n=l,s=null,i&&(clearTimeout(i),i=null),e(...f)};return[(...f)=>{const l=Date.now(),h=l-n;h>=r?o(f,l):(s=f,i||(i=setTimeout(()=>{i=null,o(s)},r-h)))},()=>s&&o(s)]}const ne=(e,t,n=3)=>{let r=0;const s=On(50,250);return Tn(i=>{const o=i.loaded,c=i.lengthComputable?i.total:void 0,d=o-r,f=s(d),l=o<=c;r=o;const h={loaded:o,total:c,progress:c?o/c:void 0,bytes:d,rate:f||void 0,estimated:f&&c&&l?(c-o)/f:void 0,event:i,lengthComputable:c!=null,[t?"download":"upload"]:!0};e(h)},n)},Ue=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},Le=e=>(...t)=>a.asap(()=>e(...t)),An=R.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,R.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(R.origin),R.navigator&&/(msie|trident)/i.test(R.navigator.userAgent)):()=>!0,Cn=R.hasStandardBrowserEnv?{write(e,t,n,r,s,i,o){if(typeof document>"u")return;const c=[`${e}=${encodeURIComponent(t)}`];a.isNumber(n)&&c.push(`expires=${new Date(n).toUTCString()}`),a.isString(r)&&c.push(`path=${r}`),a.isString(s)&&c.push(`domain=${s}`),i===!0&&c.push("secure"),a.isString(o)&&c.push(`SameSite=${o}`),document.cookie=c.join("; ")},read(e){if(typeof document>"u")return null;const t=document.cookie.match(new RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):null},remove(e){this.write(e,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function xn(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function Nn(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function it(e,t,n){let r=!xn(t);return e&&(r||n==!1)?Nn(e,t):t}const Be=e=>e instanceof A?{...e}:e;function q(e,t){t=t||{};const n={};function r(f,l,h,b){return a.isPlainObject(f)&&a.isPlainObject(l)?a.merge.call({caseless:b},f,l):a.isPlainObject(l)?a.merge({},l):a.isArray(l)?l.slice():l}function s(f,l,h,b){if(a.isUndefined(l)){if(!a.isUndefined(f))return r(void 0,f,h,b)}else return r(f,l,h,b)}function i(f,l){if(!a.isUndefined(l))return r(void 0,l)}function o(f,l){if(a.isUndefined(l)){if(!a.isUndefined(f))return r(void 0,f)}else return r(void 0,l)}function c(f,l,h){if(h in t)return r(f,l);if(h in e)return r(void 0,f)}const d={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:c,headers:(f,l,h)=>s(Be(f),Be(l),h,!0)};return a.forEach(Object.keys({...e,...t}),function(l){const h=d[l]||s,b=h(e[l],t[l],l);a.isUndefined(b)&&h!==c||(n[l]=b)}),n}const at=e=>{const t=q({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:i,headers:o,auth:c}=t;if(t.headers=o=A.from(o),t.url=tt(it(t.baseURL,t.url,t.allowAbsoluteUrls),e.params,e.paramsSerializer),c&&o.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),a.isFormData(n)){if(R.hasStandardBrowserEnv||R.hasStandardBrowserWebWorkerEnv)o.setContentType(void 0);else if(a.isFunction(n.getHeaders)){const d=n.getHeaders(),f=["content-type","content-length"];Object.entries(d).forEach(([l,h])=>{f.includes(l.toLowerCase())&&o.set(l,h)})}}if(R.hasStandardBrowserEnv&&(r&&a.isFunction(r)&&(r=r(t)),r||r!==!1&&An(t.url))){const d=s&&i&&Cn.read(i);d&&o.set(s,d)}return t},Pn=typeof XMLHttpRequest<"u",Fn=Pn&&function(e){return new Promise(function(n,r){const s=at(e);let i=s.data;const o=A.from(s.headers).normalize();let{responseType:c,onUploadProgress:d,onDownloadProgress:f}=s,l,h,b,S,u;function m(){S&&S(),u&&u(),s.cancelToken&&s.cancelToken.unsubscribe(l),s.signal&&s.signal.removeEventListener("abort",l)}let p=new XMLHttpRequest;p.open(s.method.toUpperCase(),s.url,!0),p.timeout=s.timeout;function E(){if(!p)return;const g=A.from("getAllResponseHeaders"in p&&p.getAllResponseHeaders()),N={data:!c||c==="text"||c==="json"?p.responseText:p.response,status:p.status,statusText:p.statusText,headers:g,config:e,request:p};ot(function(x){n(x),m()},function(x){r(x),m()},N),p=null}"onloadend"in p?p.onloadend=E:p.onreadystatechange=function(){!p||p.readyState!==4||p.status===0&&!(p.responseURL&&p.responseURL.indexOf("file:")===0)||setTimeout(E)},p.onabort=function(){p&&(r(new y("Request aborted",y.ECONNABORTED,e,p)),p=null)},p.onerror=function(O){const N=O&&O.message?O.message:"Network Error",B=new y(N,y.ERR_NETWORK,e,p);B.event=O||null,r(B),p=null},p.ontimeout=function(){let O=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const N=s.transitional||nt;s.timeoutErrorMessage&&(O=s.timeoutErrorMessage),r(new y(O,N.clarifyTimeoutError?y.ETIMEDOUT:y.ECONNABORTED,e,p)),p=null},i===void 0&&o.setContentType(null),"setRequestHeader"in p&&a.forEach(o.toJSON(),function(O,N){p.setRequestHeader(N,O)}),a.isUndefined(s.withCredentials)||(p.withCredentials=!!s.withCredentials),c&&c!=="json"&&(p.responseType=s.responseType),f&&([b,u]=ne(f,!0),p.addEventListener("progress",b)),d&&p.upload&&([h,S]=ne(d),p.upload.addEventListener("progress",h),p.upload.addEventListener("loadend",S)),(s.cancelToken||s.signal)&&(l=g=>{p&&(r(!g||g.type?new $(null,e,p):g),p.abort(),p=null)},s.cancelToken&&s.cancelToken.subscribe(l),s.signal&&(s.signal.aborted?l():s.signal.addEventListener("abort",l)));const C=Rn(s.url);if(C&&R.protocols.indexOf(C)===-1){r(new y("Unsupported protocol "+C+":",y.ERR_BAD_REQUEST,e));return}p.send(i||null)})},_n=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const i=function(f){if(!s){s=!0,c();const l=f instanceof Error?f:this.reason;r.abort(l instanceof y?l:new $(l instanceof Error?l.message:l))}};let o=t&&setTimeout(()=>{o=null,i(new y(`timeout ${t} of ms exceeded`,y.ETIMEDOUT))},t);const c=()=>{e&&(o&&clearTimeout(o),o=null,e.forEach(f=>{f.unsubscribe?f.unsubscribe(i):f.removeEventListener("abort",i)}),e=null)};e.forEach(f=>f.addEventListener("abort",i));const{signal:d}=r;return d.unsubscribe=()=>a.asap(c),d}},Un=function*(e,t){let n=e.byteLength;if(n{const s=Ln(e,t);let i=0,o,c=d=>{o||(o=!0,r&&r(d))};return new ReadableStream({async pull(d){try{const{done:f,value:l}=await s.next();if(f){c(),d.close();return}let h=l.byteLength;if(n){let b=i+=h;n(b)}d.enqueue(new Uint8Array(l))}catch(f){throw c(f),f}},cancel(d){return c(d),s.return()}},{highWaterMark:2})},ke=64*1024,{isFunction:Z}=a,Dn=(({Request:e,Response:t})=>({Request:e,Response:t}))(a.global),{ReadableStream:je,TextEncoder:qe}=a.global,He=(e,...t)=>{try{return!!e(...t)}catch{return!1}},kn=e=>{e=a.merge.call({skipUndefined:!0},Dn,e);const{fetch:t,Request:n,Response:r}=e,s=t?Z(t):typeof fetch=="function",i=Z(n),o=Z(r);if(!s)return!1;const c=s&&Z(je),d=s&&(typeof qe=="function"?(u=>m=>u.encode(m))(new qe):async u=>new Uint8Array(await new n(u).arrayBuffer())),f=i&&c&&He(()=>{let u=!1;const m=new n(R.origin,{body:new je,method:"POST",get duplex(){return u=!0,"half"}}).headers.has("Content-Type");return u&&!m}),l=o&&c&&He(()=>a.isReadableStream(new r("").body)),h={stream:l&&(u=>u.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(u=>{!h[u]&&(h[u]=(m,p)=>{let E=m&&m[u];if(E)return E.call(m);throw new y(`Response type '${u}' is not supported`,y.ERR_NOT_SUPPORT,p)})});const b=async u=>{if(u==null)return 0;if(a.isBlob(u))return u.size;if(a.isSpecCompliantForm(u))return(await new n(R.origin,{method:"POST",body:u}).arrayBuffer()).byteLength;if(a.isArrayBufferView(u)||a.isArrayBuffer(u))return u.byteLength;if(a.isURLSearchParams(u)&&(u=u+""),a.isString(u))return(await d(u)).byteLength},S=async(u,m)=>{const p=a.toFiniteNumber(u.getContentLength());return p??b(m)};return async u=>{let{url:m,method:p,data:E,signal:C,cancelToken:g,timeout:O,onDownloadProgress:N,onUploadProgress:B,responseType:x,headers:ce,withCredentials:X="same-origin",fetchOptions:Se}=at(u),Re=t||fetch;x=x?(x+"").toLowerCase():"text";let G=_n([C,g&&g.toAbortSignal()],O),z=null;const D=G&&G.unsubscribe&&(()=>{G.unsubscribe()});let Oe;try{if(B&&f&&p!=="get"&&p!=="head"&&(Oe=await S(ce,E))!==0){let L=new n(m,{method:"POST",body:E,duplex:"half"}),H;if(a.isFormData(E)&&(H=L.headers.get("content-type"))&&ce.setContentType(H),L.body){const[le,Q]=Ue(Oe,ne(Le(B)));E=De(L.body,ke,le,Q)}}a.isString(X)||(X=X?"include":"omit");const F=i&&"credentials"in n.prototype,Te={...Se,signal:G,method:p.toUpperCase(),headers:ce.normalize().toJSON(),body:E,duplex:"half",credentials:F?X:void 0};z=i&&new n(m,Te);let U=await(i?Re(z,Se):Re(m,Te));const Ae=l&&(x==="stream"||x==="response");if(l&&(N||Ae&&D)){const L={};["status","statusText","headers"].forEach(Ce=>{L[Ce]=U[Ce]});const H=a.toFiniteNumber(U.headers.get("content-length")),[le,Q]=N&&Ue(H,ne(Le(N),!0))||[];U=new r(De(U.body,ke,le,()=>{Q&&Q(),D&&D()}),L)}x=x||"text";let pt=await h[a.findKey(h,x)||"text"](U,u);return!Ae&&D&&D(),await new Promise((L,H)=>{ot(L,H,{data:pt,headers:A.from(U.headers),status:U.status,statusText:U.statusText,config:u,request:z})})}catch(F){throw D&&D(),F&&F.name==="TypeError"&&/Load failed|fetch/i.test(F.message)?Object.assign(new y("Network Error",y.ERR_NETWORK,u,z),{cause:F.cause||F}):y.from(F,F&&F.code,u,z)}}},jn=new Map,ct=e=>{let t=e&&e.env||{};const{fetch:n,Request:r,Response:s}=t,i=[r,s,n];let o=i.length,c=o,d,f,l=jn;for(;c--;)d=i[c],f=l.get(d),f===void 0&&l.set(d,f=c?new Map:kn(t)),l=f;return f};ct();const ge={http:Yt,xhr:Fn,fetch:{get:ct}};a.forEach(ge,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const Ie=e=>`- ${e}`,qn=e=>a.isFunction(e)||e===null||e===!1;function Hn(e,t){e=a.isArray(e)?e:[e];const{length:n}=e;let r,s;const i={};for(let o=0;o`adapter ${d} `+(f===!1?"is not supported by the environment":"is not available in the build"));let c=n?o.length>1?`since :
+`+o.map(Ie).join(`
+`):" "+Ie(o[0]):"as no adapter specified";throw new y("There is no suitable adapter to dispatch the request "+c,"ERR_NOT_SUPPORT")}return s}const lt={getAdapter:Hn,adapters:ge};function de(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new $(null,e)}function Me(e){return de(e),e.headers=A.from(e.headers),e.data=fe.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),lt.getAdapter(e.adapter||v.adapter,e)(e).then(function(r){return de(e),r.data=fe.call(e,e.transformResponse,r),r.headers=A.from(r.headers),r},function(r){return st(r)||(de(e),r&&r.response&&(r.response.data=fe.call(e,e.transformResponse,r.response),r.response.headers=A.from(r.response.headers))),Promise.reject(r)})}const ut="1.13.2",ae={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{ae[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const $e={};ae.transitional=function(t,n,r){function s(i,o){return"[Axios v"+ut+"] Transitional option '"+i+"'"+o+(r?". "+r:"")}return(i,o,c)=>{if(t===!1)throw new y(s(o," has been removed"+(n?" in "+n:"")),y.ERR_DEPRECATED);return n&&!$e[o]&&($e[o]=!0,console.warn(s(o," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(i,o,c):!0}};ae.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function In(e,t,n){if(typeof e!="object")throw new y("options must be an object",y.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const i=r[s],o=t[i];if(o){const c=e[i],d=c===void 0||o(c,i,e);if(d!==!0)throw new y("option "+i+" must be "+d,y.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new y("Unknown option "+i,y.ERR_BAD_OPTION)}}const te={assertOptions:In,validators:ae},_=te.validators;let j=class{constructor(t){this.defaults=t||{},this.interceptors={request:new Fe,response:new Fe}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const i=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?i&&!String(r.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(r.stack+=`
+`+i):r.stack=i}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=q(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:i}=n;r!==void 0&&te.assertOptions(r,{silentJSONParsing:_.transitional(_.boolean),forcedJSONParsing:_.transitional(_.boolean),clarifyTimeoutError:_.transitional(_.boolean)},!1),s!=null&&(a.isFunction(s)?n.paramsSerializer={serialize:s}:te.assertOptions(s,{encode:_.function,serialize:_.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),te.assertOptions(n,{baseUrl:_.spelling("baseURL"),withXsrfToken:_.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let o=i&&a.merge(i.common,i[n.method]);i&&a.forEach(["delete","get","head","post","put","patch","common"],u=>{delete i[u]}),n.headers=A.concat(o,i);const c=[];let d=!0;this.interceptors.request.forEach(function(m){typeof m.runWhen=="function"&&m.runWhen(n)===!1||(d=d&&m.synchronous,c.unshift(m.fulfilled,m.rejected))});const f=[];this.interceptors.response.forEach(function(m){f.push(m.fulfilled,m.rejected)});let l,h=0,b;if(!d){const u=[Me.bind(this),void 0];for(u.unshift(...c),u.push(...f),b=u.length,l=Promise.resolve(n);h{if(!r._listeners)return;let i=r._listeners.length;for(;i-- >0;)r._listeners[i](s);r._listeners=null}),this.promise.then=s=>{let i;const o=new Promise(c=>{r.subscribe(c),i=c}).then(s);return o.cancel=function(){r.unsubscribe(i)},o},t(function(i,o,c){r.reason||(r.reason=new $(i,o,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new ft(function(s){t=s}),cancel:t}}};function $n(e){return function(n){return e.apply(null,n)}}function zn(e){return a.isObject(e)&&e.isAxiosError===!0}const ye={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(ye).forEach(([e,t])=>{ye[t]=e});function dt(e){const t=new j(e),n=ze(j.prototype.request,t);return a.extend(n,j.prototype,t,{allOwnKeys:!0}),a.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return dt(q(e,s))},n}const w=dt(v);w.Axios=j;w.CanceledError=$;w.CancelToken=Mn;w.isCancel=st;w.VERSION=ut;w.toFormData=ie;w.AxiosError=y;w.Cancel=w.CanceledError;w.all=function(t){return Promise.all(t)};w.spread=$n;w.isAxiosError=zn;w.mergeConfig=q;w.AxiosHeaders=A;w.formToJSON=e=>rt(a.isHTMLForm(e)?new FormData(e):e);w.getAdapter=lt.getAdapter;w.HttpStatusCode=ye;w.default=w;const{Axios:Wn,AxiosError:Kn,CanceledError:vn,isCancel:Xn,CancelToken:Gn,VERSION:Qn,all:Zn,Cancel:Yn,isAxiosError:er,spread:tr,toFormData:nr,AxiosHeaders:rr,HttpStatusCode:sr,formToJSON:or,getAdapter:ir,mergeConfig:ar}=w;var cr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function lr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}export{w as a,cr as c,lr as g};
diff --git a/Updated_Cms/public/build/assets/app-B3eH2vjf.css b/Updated_Cms/public/build/assets/app-B3eH2vjf.css
new file mode 100644
index 0000000000..3e5e4d1f65
--- /dev/null
+++ b/Updated_Cms/public/build/assets/app-B3eH2vjf.css
@@ -0,0 +1 @@
+@import"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap";*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Nunito,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}input:where([type=text]),input:where(:not([type])),input:where([type=email]),input:where([type=url]),input:where([type=password]),input:where([type=number]),input:where([type=date]),input:where([type=datetime-local]),input:where([type=month]),input:where([type=search]),input:where([type=tel]),input:where([type=time]),input:where([type=week]),select:where([multiple]),textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}input:where([type=text]):focus,input:where(:not([type])):focus,input:where([type=email]):focus,input:where([type=url]):focus,input:where([type=password]):focus,input:where([type=number]):focus,input:where([type=date]):focus,input:where([type=datetime-local]):focus,input:where([type=month]):focus,input:where([type=search]):focus,input:where([type=tel]):focus,input:where([type=time]):focus,input:where([type=week]):focus,select:where([multiple]):focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}select:where([multiple]),select:where([size]:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}input:where([type=checkbox]),input:where([type=radio]){-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}input:where([type=checkbox]){border-radius:0}input:where([type=radio]){border-radius:100%}input:where([type=checkbox]):focus,input:where([type=radio]):focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}input:where([type=checkbox]):checked,input:where([type=radio]):checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}input:where([type=checkbox]):checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media(forced-colors:active){input:where([type=checkbox]):checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}input:where([type=radio]):checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media(forced-colors:active){input:where([type=radio]):checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}input:where([type=checkbox]):checked:hover,input:where([type=checkbox]):checked:focus,input:where([type=radio]):checked:hover,input:where([type=radio]):checked:focus{border-color:transparent;background-color:currentColor}input:where([type=checkbox]):indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media(forced-colors:active){input:where([type=checkbox]):indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}input:where([type=checkbox]):indeterminate:hover,input:where([type=checkbox]):indeterminate:focus{border-color:transparent;background-color:currentColor}input:where([type=file]){background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}input:where([type=file]):focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: rgb(17 24 39 / 10%);--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%);--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose-xl{font-size:1.25rem;line-height:1.8}.prose-xl :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.2em;margin-bottom:1.2em}.prose-xl :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.2em;line-height:1.5;margin-top:1em;margin-bottom:1em}.prose-xl :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1.0666667em}.prose-xl :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:2.8em;margin-top:0;margin-bottom:.8571429em;line-height:1}.prose-xl :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.8em;margin-top:1.5555556em;margin-bottom:.8888889em;line-height:1.1111111}.prose-xl :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:1.5em;margin-top:1.6em;margin-bottom:.6666667em;line-height:1.3333333}.prose-xl :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.8em;margin-bottom:.6em;line-height:1.6}.prose-xl :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-xl :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-xl :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-xl :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-xl :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em;border-radius:.3125rem;padding-top:.25em;padding-inline-end:.4em;padding-bottom:.25em;padding-inline-start:.4em}.prose-xl :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-xl :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.8611111em}.prose-xl :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em}.prose-xl :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em;line-height:1.7777778;margin-top:2em;margin-bottom:2em;border-radius:.5rem;padding-top:1.1111111em;padding-inline-end:1.3333333em;padding-bottom:1.1111111em;padding-inline-start:1.3333333em}.prose-xl :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.2em;margin-bottom:1.2em;padding-inline-start:1.6em}.prose-xl :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.2em;margin-bottom:1.2em;padding-inline-start:1.6em}.prose-xl :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6em;margin-bottom:.6em}.prose-xl :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4em}.prose-xl :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.4em}.prose-xl :where(.prose-xl>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.8em;margin-bottom:.8em}.prose-xl :where(.prose-xl>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.2em}.prose-xl :where(.prose-xl>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.2em}.prose-xl :where(.prose-xl>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.2em}.prose-xl :where(.prose-xl>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.2em}.prose-xl :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.8em;margin-bottom:.8em}.prose-xl :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.2em;margin-bottom:1.2em}.prose-xl :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.2em}.prose-xl :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.6em;padding-inline-start:1.6em}.prose-xl :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2.8em;margin-bottom:2.8em}.prose-xl :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-xl :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-xl :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-xl :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-xl :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em;line-height:1.5555556}.prose-xl :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.6666667em;padding-bottom:.8888889em;padding-inline-start:.6666667em}.prose-xl :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-xl :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-xl :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.8888889em;padding-inline-end:.6666667em;padding-bottom:.8888889em;padding-inline-start:.6666667em}.prose-xl :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose-xl :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose-xl :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose-xl :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose-xl :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.9em;line-height:1.5555556;margin-top:1em}.prose-xl :where(.prose-xl>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose-xl :where(.prose-xl>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.nav-item{display:flex;height:auto;align-items:center;font-size:14px;font-weight:600;text-transform:uppercase;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}@media(min-width:768px){.nav-item{height:60px;border-bottom-width:4px;border-color:transparent}.nav-item:hover{--tw-border-opacity: 1;border-bottom-color:rgb(238 180 37 / var(--tw-border-opacity))}}.dropdown-item{display:block;padding:.5rem 1rem;font-weight:600;--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.dropdown-item:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.-bottom-10{bottom:-2.5rem}.-bottom-12{bottom:-3rem}.-bottom-2{bottom:-.5rem}.-bottom-3{bottom:-.75rem}.-left-1{left:-.25rem}.-left-4{left:-1rem}.-right-1{right:-.25rem}.-right-3{right:-.75rem}.-start-3{inset-inline-start:-.75rem}.-top-2{top:-.5rem}.-top-4{top:-1rem}.bottom-0{bottom:0}.bottom-1{bottom:.25rem}.bottom-2{bottom:.5rem}.bottom-3{bottom:.75rem}.bottom-\[60px\]{bottom:60px}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-2{left:.5rem}.left-3{left:.75rem}.left-4{left:1rem}.left-8{left:2rem}.right-0{right:0}.right-1{right:.25rem}.right-2{right:.5rem}.right-2\.5{right:.625rem}.right-4{right:1rem}.right-5{right:1.25rem}.right-6{right:1.5rem}.top-0{top:0}.top-1{top:.25rem}.top-2{top:.5rem}.top-3{top:.75rem}.top-4{top:1rem}.top-5{top:1.25rem}.top-6{top:1.5rem}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.z-\[5\]{z-index:5}.order-last{order:9999}.col-span-1{grid-column:span 1 / span 1}.col-span-12{grid-column:span 12 / span 12}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.col-span-6{grid-column:span 6 / span 6}.col-span-full{grid-column:1 / -1}.row-start-2{grid-row-start:2}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.\!mt-3{margin-top:.75rem!important}.\!mt-4{margin-top:1rem!important}.\!mt-6{margin-top:1.5rem!important}.-mb-8{margin-bottom:-2rem}.-ml-1{margin-left:-.25rem}.-ml-2{margin-left:-.5rem}.-ml-4{margin-left:-1rem}.-ml-px{margin-left:-1px}.-mt-4{margin-top:-1rem}.-mt-5{margin-top:-1.25rem}.-mt-6{margin-top:-1.5rem}.-mt-\[35px\]{margin-top:-35px}.-mt-\[55px\]{margin-top:-55px}.-mt-px{margin-top:-1px}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-12{margin-left:3rem}.ml-14{margin-left:3.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-7{margin-left:1.75rem}.ml-\[57px\]{margin-left:57px}.ml-\[60px\]{margin-left:60px}.ml-\[70px\]{margin-left:70px}.ml-\[90px\]{margin-left:90px}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-14{margin-right:3.5rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-8{margin-right:2rem}.ms-6{margin-inline-start:1.5rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-14{margin-top:3.5rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[10px\]{margin-top:10px}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.\!inline{display:inline!important}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.\!hidden{display:none!important}.hidden{display:none}.aspect-square{aspect-ratio:1 / 1}.\!h-12{height:3rem!important}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-20{height:5rem}.h-24{height:6rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-52{height:13rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[100px\]{height:100px}.h-\[110px\]{height:110px}.h-\[120px\]{height:120px}.h-\[129px\]{height:129px}.h-\[12px\]{height:12px}.h-\[140px\]{height:140px}.h-\[150px\]{height:150px}.h-\[18px\]{height:18px}.h-\[200px\]{height:200px}.h-\[210px\]{height:210px}.h-\[250px\]{height:250px}.h-\[25px\]{height:25px}.h-\[280px\]{height:280px}.h-\[35px\]{height:35px}.h-\[40px\]{height:40px}.h-\[45px\]{height:45px}.h-\[50px\]{height:50px}.h-\[60px\]{height:60px}.h-\[62px\]{height:62px}.h-\[65\%\]{height:65%}.h-\[70px\]{height:70px}.h-\[80px\]{height:80px}.h-\[90px\]{height:90px}.h-auto{height:auto}.h-full{height:100%}.h-max{height:-moz-max-content;height:max-content}.h-screen{height:100vh}.max-h-\[100px\]{max-height:100px}.max-h-\[15px\]{max-height:15px}.max-h-\[50px\]{max-height:50px}.max-h-\[55px\]{max-height:55px}.max-h-\[65px\]{max-height:65px}.min-h-\[100px\]{min-height:100px}.min-h-\[110px\]{min-height:110px}.min-h-\[15px\]{min-height:15px}.min-h-\[180px\]{min-height:180px}.min-h-\[250px\]{min-height:250px}.min-h-\[50px\]{min-height:50px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.\!w-full{width:100%!important}.w-1\/3{width:33.333333%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2\/3{width:66.666667%}.w-3{width:.75rem}.w-4{width:1rem}.w-40{width:10rem}.w-44{width:11rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[200px\]{width:200px}.w-\[25px\]{width:25px}.w-\[28px\]{width:28px}.w-\[50px\]{width:50px}.w-\[54px\]{width:54px}.w-\[64px\]{width:64px}.w-\[70px\]{width:70px}.w-\[80px\]{width:80px}.w-auto{width:auto}.w-full{width:100%}.min-w-\[110px\]{min-width:110px}.min-w-\[150px\]{min-width:150px}.min-w-\[15px\]{min-width:15px}.min-w-\[50px\]{min-width:50px}.min-w-\[64px\]{min-width:64px}.min-w-full{min-width:100%}.\!max-w-none{max-width:none!important}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-\[15px\]{max-width:15px}.max-w-\[380px\]{max-width:380px}.max-w-\[50px\]{max-width:50px}.max-w-\[55px\]{max-width:55px}.max-w-\[600px\]{max-width:600px}.max-w-\[640px\]{max-width:640px}.max-w-\[65px\]{max-width:65px}.max-w-none{max-width:none}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.-translate-x-1\/2{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-full{--tw-translate-y: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-full{--tw-translate-x: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-full{--tw-translate-y: 100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate: 45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-x-\[-1\]{--tw-scale-x: -1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform-none{transform:none}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-items-center{justify-items:center}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-14{gap:3.5rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-x-1{-moz-column-gap:.25rem;column-gap:.25rem}.gap-x-14{-moz-column-gap:3.5rem;column-gap:3.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-x-\[3px\]{-moz-column-gap:3px;column-gap:3px}.gap-x-\[5px\]{-moz-column-gap:5px;column-gap:5px}.gap-y-1{row-gap:.25rem}.gap-y-14{row-gap:3.5rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.gap-y-4{row-gap:1rem}.gap-y-6{row-gap:1.5rem}.gap-y-8{row-gap:2rem}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-14>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(3.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-\[13px\]>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(13px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(13px * var(--tw-space-y-reverse))}.divide-x>:not([hidden])~:not([hidden]){--tw-divide-x-reverse: 0;border-right-width:calc(1px * var(--tw-divide-x-reverse));border-left-width:calc(1px * calc(1 - var(--tw-divide-x-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-solid>:not([hidden])~:not([hidden]){border-style:solid}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity))}.divide-gray-700>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(55 65 81 / var(--tw-divide-opacity))}.self-start{align-self:flex-start}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[2px\]{border-width:2px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-r{border-right-width:1px}.border-s{border-inline-start-width:1px}.border-t{border-top-width:1px}.\!border-none{border-style:none!important}.border-none{border-style:none}.\!border-\[\#1891c4\]{--tw-border-opacity: 1 !important;border-color:rgb(24 145 196 / var(--tw-border-opacity))!important}.border-\[\#cf9d15\]{--tw-border-opacity: 1;border-color:rgb(207 157 21 / var(--tw-border-opacity))}.border-black{--tw-border-opacity: 1;border-color:rgb(0 0 0 / var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.border-blue-600{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity))}.border-indigo-400{--tw-border-opacity: 1;border-color:rgb(129 140 248 / var(--tw-border-opacity))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.border-red-600{--tw-border-opacity: 1;border-color:rgb(220 38 38 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity: 1;border-color:rgb(255 255 255 / var(--tw-border-opacity))}.border-yellow-300{--tw-border-opacity: 1;border-color:rgb(253 224 71 / var(--tw-border-opacity))}.border-yellow-400{--tw-border-opacity: 1;border-color:rgb(250 204 21 / var(--tw-border-opacity))}.\!bg-\[\#0b80b3\]{--tw-bg-opacity: 1 !important;background-color:rgb(11 128 179 / var(--tw-bg-opacity))!important}.bg-\[\#00800B\]{--tw-bg-opacity: 1;background-color:rgb(0 128 11 / var(--tw-bg-opacity))}.bg-\[\#111827\]{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-\[\#171a23\]{--tw-bg-opacity: 1;background-color:rgb(23 26 35 / var(--tw-bg-opacity))}.bg-\[\#21242e\]{--tw-bg-opacity: 1;background-color:rgb(33 36 46 / var(--tw-bg-opacity))}.bg-\[\#21242e\]\/90{background-color:#21242ee6}.bg-\[\#233143\]{--tw-bg-opacity: 1;background-color:rgb(35 49 67 / var(--tw-bg-opacity))}.bg-\[\#262a35\]{--tw-bg-opacity: 1;background-color:rgb(38 42 53 / var(--tw-bg-opacity))}.bg-\[\#2b303c\]{--tw-bg-opacity: 1;background-color:rgb(43 48 60 / var(--tw-bg-opacity))}.bg-\[\#303642\]{--tw-bg-opacity: 1;background-color:rgb(48 54 66 / var(--tw-bg-opacity))}.bg-\[\#444d5c\]{--tw-bg-opacity: 1;background-color:rgb(68 77 92 / var(--tw-bg-opacity))}.bg-\[\#82d6db\]{--tw-bg-opacity: 1;background-color:rgb(130 214 219 / var(--tw-bg-opacity))}.bg-\[\#ac93da\]{--tw-bg-opacity: 1;background-color:rgb(172 147 218 / var(--tw-bg-opacity))}.bg-\[\#e99bdc\]{--tw-bg-opacity: 1;background-color:rgb(233 155 220 / var(--tw-bg-opacity))}.bg-\[\#e9b124\]{--tw-bg-opacity: 1;background-color:rgb(233 177 36 / var(--tw-bg-opacity))}.bg-\[\#eeb425\]{--tw-bg-opacity: 1;background-color:rgb(238 180 37 / var(--tw-bg-opacity))}.bg-\[\#efefef\]{--tw-bg-opacity: 1;background-color:rgb(239 239 239 / var(--tw-bg-opacity))}.bg-\[\#f5f5f5\]{--tw-bg-opacity: 1;background-color:rgb(245 245 245 / var(--tw-bg-opacity))}.bg-\[\#f68b08\]{--tw-bg-opacity: 1;background-color:rgb(246 139 8 / var(--tw-bg-opacity))}.bg-\[\#f8ef2b\]{--tw-bg-opacity: 1;background-color:rgb(248 239 43 / var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-black\/60{background-color:#0009}.bg-black\/70{background-color:#000000b3}.bg-blue-200{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity: 1;background-color:rgb(209 213 219 / var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-gray-500\/10{background-color:#6b72801a}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.bg-gray-700\/40{background-color:#37415166}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.bg-gray-900\/50{background-color:#11182780}.bg-green-400{--tw-bg-opacity: 1;background-color:rgb(74 222 128 / var(--tw-bg-opacity))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity))}.bg-red-200{--tw-bg-opacity: 1;background-color:rgb(254 202 202 / var(--tw-bg-opacity))}.bg-red-400{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-white\/50{background-color:#ffffff80}.bg-yellow-400{--tw-bg-opacity: 1;background-color:rgb(250 204 21 / var(--tw-bg-opacity))}.bg-yellow-500{--tw-bg-opacity: 1;background-color:rgb(234 179 8 / var(--tw-bg-opacity))}.bg-opacity-50{--tw-bg-opacity: .5}.bg-opacity-70{--tw-bg-opacity: .7}.bg-opacity-80{--tw-bg-opacity: .8}.bg-opacity-90{--tw-bg-opacity: .9}.bg-opacity-\[95\%\]{--tw-bg-opacity: 95%}.\!bg-center{background-position:center!important}.bg-center{background-position:center}.\!bg-no-repeat{background-repeat:no-repeat!important}.bg-no-repeat{background-repeat:no-repeat}.object-cover{-o-object-fit:cover;object-fit:cover}.object-fill{-o-object-fit:fill;object-fit:fill}.object-center{-o-object-position:center;object-position:center}.object-left{-o-object-position:left;object-position:left}.\!p-0{padding:0!important}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[1px\]{padding-top:1px;padding-bottom:1px}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-2{padding-left:.5rem}.pl-24{padding-left:6rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-3{padding-right:.75rem}.pr-6{padding-right:1.5rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:Nunito,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.text-\[16px\]{font-size:16px}.text-\[26px\]{font-size:26px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.italic{font-style:italic}.leading-5{line-height:1.25rem}.leading-7{line-height:1.75rem}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.\!text-blue-100{--tw-text-opacity: 1 !important;color:rgb(219 234 254 / var(--tw-text-opacity))!important}.\!text-red-700{--tw-text-opacity: 1 !important;color:rgb(185 28 28 / var(--tw-text-opacity))!important}.\!text-yellow-100{--tw-text-opacity: 1 !important;color:rgb(254 249 195 / var(--tw-text-opacity))!important}.text-\[\#146867\]{--tw-text-opacity: 1;color:rgb(20 104 103 / var(--tw-text-opacity))}.text-\[\#812378\]{--tw-text-opacity: 1;color:rgb(129 35 120 / var(--tw-text-opacity))}.text-\[\#89cdf0\]{--tw-text-opacity: 1;color:rgb(137 205 240 / var(--tw-text-opacity))}.text-\[\#b16d18\]{--tw-text-opacity: 1;color:rgb(177 109 24 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-300{--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-cyan-300{--tw-text-opacity: 1;color:rgb(103 232 249 / var(--tw-text-opacity))}.text-gray-100{--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-green-100{--tw-text-opacity: 1;color:rgb(220 252 231 / var(--tw-text-opacity))}.text-green-400{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-slate-600{--tw-text-opacity: 1;color:rgb(71 85 105 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity))}.text-opacity-80{--tw-text-opacity: .8}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-inner{--tw-shadow: inset 0 2px 4px 0 rgb(0 0 0 / .05);--tw-shadow-colored: inset 0 2px 4px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-offset-\[3px\]{outline-offset:3px}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-4{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-emerald-700{--tw-ring-opacity: 1;--tw-ring-color: rgb(4 120 87 / var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity))}.ring-gray-950\/5{--tw-ring-color: rgb(3 7 18 / .05)}.ring-red-500{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity))}.ring-white{--tw-ring-opacity: 1;--tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow{--tw-drop-shadow: drop-shadow(0 1px 2px rgb(0 0 0 / .1)) drop-shadow(0 1px 1px rgb(0 0 0 / .06));filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!invert{--tw-invert: invert(100%) !important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.sepia{--tw-sepia: sepia(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}*{font-family:poppins,sans-serif}::-webkit-scrollbar-thumb{border-radius:100px;border:4px solid transparent;background-clip:content-box;background-color:#2c3039}::-webkit-scrollbar{width:16px}::-moz-placeholder{color:#626565;opacity:1}::placeholder{color:#626565;opacity:1}:-ms-input-placeholder{color:#626565}::-ms-input-placeholder{color:#626565}html{scroll-behavior:smooth}.drop-shadow{-webkit-filter:drop-shadow(2px 1px 0 #fff) drop-shadow(-2px 1px 0 #fff) drop-shadow(0 -2px 0 #fff)}.drop-shadow-thin{-webkit-filter:drop-shadow(1px 1px 0 #fff) drop-shadow(-1px 1px 0 #fff) drop-shadow(0 -1px 0 #fff)}.article-image{display:block;width:100%;height:100px;background-position:300px 220px!important;margin:0 0 20px;transition:.3s}.article-image-slide{background-position:350px 220px!important}.recent-articles{background-blend-mode:multiply}.camera-icon{background:#242c31 url(/build/assets/camera-fu-bmGhB.png) no-repeat center}.discord-icon{background:#25658d url(/build/assets/discord-rbcnEh-j.png) no-repeat center}html.dark .camera-icon{background:#25658d url(/build/assets/camera-fu-bmGhB.png) no-repeat center}.hotel-icon{background:#f68b08 url(/build/assets/feeds-BtHcJdHX.png) no-repeat center}.chat-icon{background:#375571 url(/build/assets/chat-r5H1PnTg.png) no-repeat center}.article-icon{background:#536e5e url(/build/assets/article-CYhGsSKA.gif) no-repeat center}.lighthouse-icon{background:#8554a6 url(/build/assets/lighthouse-BON6qnQ0.png) no-repeat center}.currency-icon{background:#e3ad06 url(/build/assets/currency-LKXzczCA.png) no-repeat center}.catalog-icon{background:#8d4ab782 url(/build/assets/catalog-D-956oDx.png) no-repeat center}.inventory-icon{background:#232121 url(/build/assets/inventory-BlHYLNGT.png) no-repeat center}.duo-chat-icon{background:#eec980 url(/build/assets/due-chat-CeO4yxLu.png) no-repeat center}.friends-icon{background:#b17f85 url(/build/assets/friends-BxpcKlvz.png) no-repeat center}.nav-credit-icon{background:#e9b124 url(/build/assets/credits-Dpg5Nmby.png) no-repeat center;outline:1px solid #b26d18}.nav-ducket-icon{background:#c44aac url(/build/assets/duckets-CaGJI1Oy.png) no-repeat center;outline:1px solid #812378}.nav-diamond-icon{background:#caf1f3 url(/build/assets/diamonds-BtfqKoQu.png) no-repeat center;outline:1px solid #6caff4}.me-backdrop{height:180px;background-blend-mode:multiply}.staff-bg{background-blend-mode:multiply}#disconnected{display:none}.profile-bg{background:#00000080 url(/build/assets/profile-bg-BWx4iuHa.png);background-blend-mode:multiply}.leaderboard-first{background:#f9d83e url(/build/assets/trophy-gold-bbKmpkii.png) no-repeat center;color:transparent}.leaderboard-second{background:#b8c4d4 url(/build/assets/trophy-silver-bGfHJkQ_.png) no-repeat center;color:transparent}.leaderboard-third{background:#f1851b url(/build/assets/trophy-bronze-CgV5j1MU.png) no-repeat center;color:transparent}.site-bg{background:url(/build/assets/background-light-CP7oKwVT.jpg) no-repeat fixed right bottom}.app.dark .site-bg{background:url(/build/assets/background-dark-BfkMu3-0.jpg) no-repeat fixed right bottom}.app.dark .swal2-popup{background:#111827;color:#fff}.turbolinks-progress-bar{height:5px;background-color:#e9b124;border-radius:5px}.navigation-icon{width:20px;height:25px;background-repeat:no-repeat;background-position:center}.navigation-icon.shop{background-image:url(/build/assets/shop-D3NfN6cF.png)}.navigation-icon.leaderboards{background-image:url(/build/assets/leaderboards-CGasq3cL.png)}.navigation-icon.rules{background-image:url(/build/assets/rules--xzBmecz.gif)}.navigation-icon.home{background-image:url(/build/assets/home-DIMFC97Y.png)}.navigation-icon.community{background-image:url(/build/assets/community-Do_t1zw9.png)}.swiper-slide{height:215px!important}.swiper-pagination-bullet-active,html.dark .swiper-pagination-bullet-active{background:#e9b124!important}html.dark .swiper-pagination-bullet:not(.swiper-pagination-bullet-active){background:#fff!important}.prose-xl p:is([style*="text-align: center;"]) img{display:block;margin-left:auto;margin-right:auto}.prose-xl p:is([style*="text-align: left;"]) img{margin-left:0;margin-right:auto}.prose-xl p:is([style*="text-align: right;"]) img{margin-left:auto;margin-right:0}.prose-xl p{font-size:16px}.atom-align-left{float:left;margin:0 10px 10px 0}.atom-align-right{float:right;margin:0 0 10px 10px}.atom-align-center{display:block;margin:0 auto;text-align:center}.atom-align-center>*{text-align:center}#article-content a{color:#53b2f8}.badge-drawer-button{background-image:linear-gradient(to bottom,#f2f2f3 51%,#d9d8d8 49%);box-shadow:inset 0 0 0 2px #d9d9d9;padding:10px}.badge-drawer-button:hover{background:linear-gradient(to bottom,#fff 50%,#ebebeb 50%);box-shadow:inset 0 0 0 2px #fff}.badge-drawer-button .toggled{background:#f2f2f3}html.dark .badge-drawer-button{background-image:linear-gradient(to bottom,#141414 51%,#101010 49%);box-shadow:inset 0 0 0 2px #242424;padding:10px}html.dark .badge-drawer-button:hover{background:linear-gradient(to bottom,#171717 50%,#111 50%);box-shadow:inset 0 0 0 2px #363636}html.dark .badge-drawer-button .toggled{background:#f2f2f3}.badge-drawer-palette{background-position:center;background-repeat:no-repeat;color:#000;height:40px;cursor:pointer;border-radius:.25rem;align-items:center;justify-content:center;gap:.5rem;display:flex;border-width:3px;border-color:#b6bec5;position:relative;overflow:hidden;max-width:38px;width:100%}.badge-drawer-palette:after{content:"";z-index:2;position:absolute;top:0;left:0;right:0;height:50%;background-color:#fff;opacity:.1}:is(.dark .dark\:prose-invert){--tw-prose-body: var(--tw-prose-invert-body);--tw-prose-headings: var(--tw-prose-invert-headings);--tw-prose-lead: var(--tw-prose-invert-lead);--tw-prose-links: var(--tw-prose-invert-links);--tw-prose-bold: var(--tw-prose-invert-bold);--tw-prose-counters: var(--tw-prose-invert-counters);--tw-prose-bullets: var(--tw-prose-invert-bullets);--tw-prose-hr: var(--tw-prose-invert-hr);--tw-prose-quotes: var(--tw-prose-invert-quotes);--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);--tw-prose-captions: var(--tw-prose-invert-captions);--tw-prose-kbd: var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows: var(--tw-prose-invert-kbd-shadows);--tw-prose-code: var(--tw-prose-invert-code);--tw-prose-pre-code: var(--tw-prose-invert-pre-code);--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);--tw-prose-th-borders: var(--tw-prose-invert-th-borders);--tw-prose-td-borders: var(--tw-prose-invert-td-borders)}.hover\:scale-105:hover{--tw-scale-x: 1.05;--tw-scale-y: 1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-\[101\%\]:hover{--tw-scale-x: 101%;--tw-scale-y: 101%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-\[102\%\]:hover{--tw-scale-x: 102%;--tw-scale-y: 102%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-\[103\%\]:hover{--tw-scale-x: 103%;--tw-scale-y: 103%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.hover\:\!bg-\[\#096891\]:hover{--tw-bg-opacity: 1 !important;background-color:rgb(9 104 145 / var(--tw-bg-opacity))!important}.hover\:bg-\[\#d49f1c\]:hover{--tw-bg-opacity: 1;background-color:rgb(212 159 28 / var(--tw-bg-opacity))}.hover\:bg-\[\#e3aa1e\]:hover{--tw-bg-opacity: 1;background-color:rgb(227 170 30 / var(--tw-bg-opacity))}.hover\:bg-\[\#eeb425\]:hover{--tw-bg-opacity: 1;background-color:rgb(238 180 37 / var(--tw-bg-opacity))}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity))}.hover\:bg-red-600:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.hover\:bg-opacity-100:hover{--tw-bg-opacity: 1}.hover\:text-\[\#ac93da\]:hover{--tw-text-opacity: 1;color:rgb(172 147 218 / var(--tw-text-opacity))}.hover\:text-\[\#eeb425\]:hover{--tw-text-opacity: 1;color:rgb(238 180 37 / var(--tw-text-opacity))}.hover\:text-black:hover{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.hover\:text-cyan-400:hover{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity))}.hover\:text-gray-200:hover{--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.hover\:text-gray-400:hover{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.focus\:border-\[\#eeb425\]:focus{--tw-border-opacity: 1;border-color:rgb(238 180 37 / var(--tw-border-opacity))}.focus\:border-blue-300:focus{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity))}.focus\:border-gray-300:focus{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.focus\:border-gray-900:focus{--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity))}.focus\:border-indigo-700:focus{--tw-border-opacity: 1;border-color:rgb(67 56 202 / var(--tw-border-opacity))}.focus\:text-gray-700:focus{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-0:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.active\:bg-gray-100:active{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.active\:bg-gray-900:active{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.active\:text-gray-500:active{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.active\:text-gray-700:active{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.active\:text-gray-800:active{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.disabled\:opacity-25:disabled{opacity:.25}.group:hover .group-hover\:text-\[\#e9b124\]{--tw-text-opacity: 1;color:rgb(233 177 36 / var(--tw-text-opacity))}:is([dir=rtl] .rtl\:flex-row-reverse){flex-direction:row-reverse}:is(.dark .dark\:divide-gray-700)>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(55 65 81 / var(--tw-divide-opacity))}:is(.dark .dark\:border-blue-500){--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}:is(.dark .dark\:border-gray-500){--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}:is(.dark .dark\:border-gray-600){--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}:is(.dark .dark\:border-gray-700){--tw-border-opacity: 1;border-color:rgb(55 65 81 / var(--tw-border-opacity))}:is(.dark .dark\:border-gray-800){--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}:is(.dark .dark\:border-gray-900){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity))}:is(.dark .dark\:border-transparent){border-color:transparent}:is(.dark .dark\:bg-gray-700){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-gray-800\/50){background-color:#1f293780}:is(.dark .dark\:bg-gray-900){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}:is(.dark .dark\:bg-white\/5){background-color:#ffffff0d}:is(.dark .dark\:bg-opacity-80){--tw-bg-opacity: .8}:is(.dark .dark\:text-blue-300){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity))}:is(.dark .dark\:text-blue-500){--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}:is(.dark .dark\:text-gray-100){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity))}:is(.dark .dark\:text-gray-200){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}:is(.dark .dark\:text-gray-300){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}:is(.dark .dark\:text-gray-400){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}:is(.dark .dark\:text-gray-500){--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}:is(.dark .dark\:text-gray-600){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}:is(.dark .dark\:text-white){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}:is(.dark .dark\:ring-gray-900){--tw-ring-opacity: 1;--tw-ring-color: rgb(17 24 39 / var(--tw-ring-opacity))}:is(.dark .dark\:ring-white\/10){--tw-ring-color: rgb(255 255 255 / .1)}:is(.dark .dark\:hover\:bg-gray-600:hover){--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-gray-700:hover){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-gray-800:hover){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-gray-900:hover){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}:is(.dark .dark\:hover\:text-blue-500:hover){--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-gray-200:hover){--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-gray-300:hover){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-white:hover){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}:is(.dark .dark\:focus\:border-blue-700:focus){--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity))}:is(.dark .dark\:focus\:border-blue-800:focus){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity))}:is(.dark .dark\:active\:bg-gray-700:active){--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}:is(.dark .dark\:active\:text-gray-300:active){--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}@media(min-width:640px){.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:-my-px{margin-top:-1px;margin-bottom:-1px}.sm\:ml-10{margin-left:2.5rem}.sm\:ml-6{margin-left:1.5rem}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:max-w-md{max-width:28rem}.sm\:flex-1{flex:1 1 0%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-2{gap:.5rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}}@media(min-width:768px){.md\:col-span-1{grid-column:span 1 / span 1}.md\:col-span-10{grid-column:span 10 / span 10}.md\:col-span-2{grid-column:span 2 / span 2}.md\:col-span-3{grid-column:span 3 / span 3}.md\:col-span-4{grid-column:span 4 / span 4}.md\:col-span-5{grid-column:span 5 / span 5}.md\:col-span-6{grid-column:span 6 / span 6}.md\:col-span-8{grid-column:span 8 / span 8}.md\:col-span-9{grid-column:span 9 / span 9}.md\:col-start-4{grid-column-start:4}.md\:row-auto{grid-row:auto}.md\:mx-auto{margin-left:auto;margin-right:auto}.md\:ml-8{margin-left:2rem}.md\:mt-0{margin-top:0}.md\:mt-6{margin-top:1.5rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-\[200px\]{height:200px}.md\:h-\[60px\]{height:60px}.md\:max-h-\[250px\]{max-height:250px}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:w-2\/3{width:66.666667%}.md\:w-\[200px\]{width:200px}.md\:w-\[600px\]{width:600px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:justify-center{justify-content:center}.md\:justify-between{justify-content:space-between}.md\:gap-2{gap:.5rem}.md\:gap-8{gap:2rem}.md\:gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.md\:gap-y-0{row-gap:0px}.md\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.md\:rounded-none{border-radius:0}.md\:rounded-l-lg{border-top-left-radius:.5rem;border-bottom-left-radius:.5rem}.md\:rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.md\:border-b-4{border-bottom-width:4px}.md\:border-transparent{border-color:transparent}.md\:border-b-\[\#eeb425\]{--tw-border-opacity: 1;border-bottom-color:rgb(238 180 37 / var(--tw-border-opacity))}.md\:p-6{padding:1.5rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:pr-6{padding-right:1.5rem}.md\:text-\[14px\]{font-size:14px}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:font-semibold{font-weight:600}.md\:hover\:border-b-\[\#eeb425\]:hover{--tw-border-opacity: 1;border-bottom-color:rgb(238 180 37 / var(--tw-border-opacity))}}@media(min-width:1024px){.lg\:visible{visibility:visible}.lg\:left-8{left:2rem}.lg\:order-1{order:1}.lg\:order-last{order:9999}.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-4{grid-column:span 4 / span 4}.lg\:col-span-9{grid-column:span 9 / span 9}.lg\:-ml-\[32px\]{margin-left:-32px}.lg\:ml-14{margin-left:3.5rem}.lg\:ml-2{margin-left:.5rem}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:inline-flex{display:inline-flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-1\/2{height:50%}.lg\:h-\[220px\]{height:220px}.lg\:w-1\/2{width:50%}.lg\:w-1\/3{width:33.333333%}.lg\:w-1\/4{width:25%}.lg\:w-2\/5{width:40%}.lg\:w-3\/5{width:60%}.lg\:w-64{width:16rem}.lg\:w-\[110\%\]{width:110%}.lg\:w-\[40\%\]{width:40%}.lg\:w-\[480px\]{width:480px}.lg\:w-\[96\%\]{width:96%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:flex-col{flex-direction:column}.lg\:justify-start{justify-content:flex-start}.lg\:gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-14{padding-left:3.5rem;padding-right:3.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:px-\[250px\]{padding-left:250px;padding-right:250px}.lg\:py-20{padding-top:5rem;padding-bottom:5rem}.lg\:py-4{padding-top:1rem;padding-bottom:1rem}.lg\:pl-64{padding-left:16rem}.lg\:text-2xl{font-size:1.5rem;line-height:2rem}.lg\:text-5xl{font-size:3rem;line-height:1}.lg\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media(min-width:1280px){.xl\:col-span-3{grid-column:span 3 / span 3}.xl\:w-1\/4{width:25%}.xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.xl\:px-0{padding-left:0;padding-right:0}.xl\:pl-3{padding-left:.75rem}.xl\:text-3xl{font-size:1.875rem;line-height:2.25rem}}
diff --git a/Updated_Cms/public/build/assets/app-DneMir1r.js b/Updated_Cms/public/build/assets/app-DneMir1r.js
new file mode 100644
index 0000000000..092870d988
--- /dev/null
+++ b/Updated_Cms/public/build/assets/app-DneMir1r.js
@@ -0,0 +1,34 @@
+import{g as bu,a as wu}from"./_commonjsHelpers-DwqltJqu.js";var mr={exports:{}},_u=mr.exports,Xi;function Eu(){return Xi||(Xi=1,(function(e){(function(){var t=this;(function(){(function(){this.Turbolinks={supported:(function(){return window.history.pushState!=null&&window.requestAnimationFrame!=null&&window.addEventListener!=null})(),visit:function(n,i){return r.controller.visit(n,i)},clearCache:function(){return r.controller.clearCache()},setProgressBarDelay:function(n){return r.controller.setProgressBarDelay(n)}}}).call(this)}).call(t);var r=t.Turbolinks;(function(){(function(){var n,i,s,o=[].slice;r.copyObject=function(d){var c,p,h;p={};for(c in d)h=d[c],p[c]=h;return p},r.closest=function(d,c){return n.call(d,c)},n=(function(){var d,c;return d=document.documentElement,(c=d.closest)!=null?c:function(p){var h;for(h=this;h;){if(h.nodeType===Node.ELEMENT_NODE&&i.call(h,p))return h;h=h.parentNode}}})(),r.defer=function(d){return setTimeout(d,1)},r.throttle=function(d){var c;return c=null,function(){var p;return p=1<=arguments.length?o.call(arguments,0):[],c??(c=requestAnimationFrame((function(h){return function(){return c=null,d.apply(h,p)}})(this)))}},r.dispatch=function(d,c){var p,h,m,v,g,_;return g=c??{},_=g.target,p=g.cancelable,h=g.data,m=document.createEvent("Events"),m.initEvent(d,!0,p===!0),m.data=h??{},m.cancelable&&!s&&(v=m.preventDefault,m.preventDefault=function(){return this.defaultPrevented||Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}}),v.call(this)}),(_??document).dispatchEvent(m),m},s=(function(){var d;return d=document.createEvent("Events"),d.initEvent("test",!0,!0),d.preventDefault(),d.defaultPrevented})(),r.match=function(d,c){return i.call(d,c)},i=(function(){var d,c,p,h;return d=document.documentElement,(c=(p=(h=d.matchesSelector)!=null?h:d.webkitMatchesSelector)!=null?p:d.msMatchesSelector)!=null?c:d.mozMatchesSelector})(),r.uuid=function(){var d,c,p;for(p="",d=c=1;36>=c;d=++c)p+=d===9||d===14||d===19||d===24?"-":d===15?"4":d===20?(Math.floor(4*Math.random())+8).toString(16):Math.floor(15*Math.random()).toString(16);return p}}).call(this),(function(){r.Location=(function(){function n(c){var p,h;c==null&&(c=""),h=document.createElement("a"),h.href=c.toString(),this.absoluteURL=h.href,p=h.hash.length,2>p?this.requestURL=this.absoluteURL:(this.requestURL=this.absoluteURL.slice(0,-p),this.anchor=h.hash.slice(1))}var i,s,o,d;return n.wrap=function(c){return c instanceof this?c:new this(c)},n.prototype.getOrigin=function(){return this.absoluteURL.split("/",3).join("/")},n.prototype.getPath=function(){var c,p;return(c=(p=this.requestURL.match(/\/\/[^\/]*(\/[^?;]*)/))!=null?p[1]:void 0)!=null?c:"/"},n.prototype.getPathComponents=function(){return this.getPath().split("/").slice(1)},n.prototype.getLastPathComponent=function(){return this.getPathComponents().slice(-1)[0]},n.prototype.getExtension=function(){var c,p;return(c=(p=this.getLastPathComponent().match(/\.[^.]*$/))!=null?p[0]:void 0)!=null?c:""},n.prototype.isHTML=function(){return this.getExtension().match(/^(?:|\.(?:htm|html|xhtml))$/)},n.prototype.isPrefixedBy=function(c){var p;return p=s(c),this.isEqualTo(c)||d(this.absoluteURL,p)},n.prototype.isEqualTo=function(c){return this.absoluteURL===c?.absoluteURL},n.prototype.toCacheKey=function(){return this.requestURL},n.prototype.toJSON=function(){return this.absoluteURL},n.prototype.toString=function(){return this.absoluteURL},n.prototype.valueOf=function(){return this.absoluteURL},s=function(c){return i(c.getOrigin()+c.getPath())},i=function(c){return o(c,"/")?c:c+"/"},d=function(c,p){return c.slice(0,p.length)===p},o=function(c,p){return c.slice(-p.length)===p},n})()}).call(this),(function(){var n=function(i,s){return function(){return i.apply(s,arguments)}};r.HttpRequest=(function(){function i(s,o,d){this.delegate=s,this.requestCanceled=n(this.requestCanceled,this),this.requestTimedOut=n(this.requestTimedOut,this),this.requestFailed=n(this.requestFailed,this),this.requestLoaded=n(this.requestLoaded,this),this.requestProgressed=n(this.requestProgressed,this),this.url=r.Location.wrap(o).requestURL,this.referrer=r.Location.wrap(d).absoluteURL,this.createXHR()}return i.NETWORK_FAILURE=0,i.TIMEOUT_FAILURE=-1,i.timeout=60,i.prototype.send=function(){var s;return this.xhr&&!this.sent?(this.notifyApplicationBeforeRequestStart(),this.setProgress(0),this.xhr.send(),this.sent=!0,typeof(s=this.delegate).requestStarted=="function"?s.requestStarted():void 0):void 0},i.prototype.cancel=function(){return this.xhr&&this.sent?this.xhr.abort():void 0},i.prototype.requestProgressed=function(s){return s.lengthComputable?this.setProgress(s.loaded/s.total):void 0},i.prototype.requestLoaded=function(){return this.endRequest((function(s){return function(){var o;return 200<=(o=s.xhr.status)&&300>o?s.delegate.requestCompletedWithResponse(s.xhr.responseText,s.xhr.getResponseHeader("Turbolinks-Location")):(s.failed=!0,s.delegate.requestFailedWithStatusCode(s.xhr.status,s.xhr.responseText))}})(this))},i.prototype.requestFailed=function(){return this.endRequest((function(s){return function(){return s.failed=!0,s.delegate.requestFailedWithStatusCode(s.constructor.NETWORK_FAILURE)}})(this))},i.prototype.requestTimedOut=function(){return this.endRequest((function(s){return function(){return s.failed=!0,s.delegate.requestFailedWithStatusCode(s.constructor.TIMEOUT_FAILURE)}})(this))},i.prototype.requestCanceled=function(){return this.endRequest()},i.prototype.notifyApplicationBeforeRequestStart=function(){return r.dispatch("turbolinks:request-start",{data:{url:this.url,xhr:this.xhr}})},i.prototype.notifyApplicationAfterRequestEnd=function(){return r.dispatch("turbolinks:request-end",{data:{url:this.url,xhr:this.xhr}})},i.prototype.createXHR=function(){return this.xhr=new XMLHttpRequest,this.xhr.open("GET",this.url,!0),this.xhr.timeout=1e3*this.constructor.timeout,this.xhr.setRequestHeader("Accept","text/html, application/xhtml+xml"),this.xhr.setRequestHeader("Turbolinks-Referrer",this.referrer),this.xhr.onprogress=this.requestProgressed,this.xhr.onload=this.requestLoaded,this.xhr.onerror=this.requestFailed,this.xhr.ontimeout=this.requestTimedOut,this.xhr.onabort=this.requestCanceled},i.prototype.endRequest=function(s){return this.xhr?(this.notifyApplicationAfterRequestEnd(),s?.call(this),this.destroy()):void 0},i.prototype.setProgress=function(s){var o;return this.progress=s,typeof(o=this.delegate).requestProgressed=="function"?o.requestProgressed(this.progress):void 0},i.prototype.destroy=function(){var s;return this.setProgress(1),typeof(s=this.delegate).requestFinished=="function"&&s.requestFinished(),this.delegate=null,this.xhr=null},i})()}).call(this),(function(){var n=function(i,s){return function(){return i.apply(s,arguments)}};r.ProgressBar=(function(){function i(){this.trickle=n(this.trickle,this),this.stylesheetElement=this.createStylesheetElement(),this.progressElement=this.createProgressElement()}var s;return s=300,i.defaultCSS=`.turbolinks-progress-bar {
+ position: fixed;
+ display: block;
+ top: 0;
+ left: 0;
+ height: 3px;
+ background: #0076ff;
+ z-index: 9999;
+ transition: width `+s+"ms ease-out, opacity "+s/2+"ms "+s/2+`ms ease-in;
+ transform: translate3d(0, 0, 0);
+}`,i.prototype.show=function(){return this.visible?void 0:(this.visible=!0,this.installStylesheetElement(),this.installProgressElement(),this.startTrickling())},i.prototype.hide=function(){return this.visible&&!this.hiding?(this.hiding=!0,this.fadeProgressElement((function(o){return function(){return o.uninstallProgressElement(),o.stopTrickling(),o.visible=!1,o.hiding=!1}})(this))):void 0},i.prototype.setValue=function(o){return this.value=o,this.refresh()},i.prototype.installStylesheetElement=function(){return document.head.insertBefore(this.stylesheetElement,document.head.firstChild)},i.prototype.installProgressElement=function(){return this.progressElement.style.width=0,this.progressElement.style.opacity=1,document.documentElement.insertBefore(this.progressElement,document.body),this.refresh()},i.prototype.fadeProgressElement=function(o){return this.progressElement.style.opacity=0,setTimeout(o,1.5*s)},i.prototype.uninstallProgressElement=function(){return this.progressElement.parentNode?document.documentElement.removeChild(this.progressElement):void 0},i.prototype.startTrickling=function(){return this.trickleInterval!=null?this.trickleInterval:this.trickleInterval=setInterval(this.trickle,s)},i.prototype.stopTrickling=function(){return clearInterval(this.trickleInterval),this.trickleInterval=null},i.prototype.trickle=function(){return this.setValue(this.value+Math.random()/100)},i.prototype.refresh=function(){return requestAnimationFrame((function(o){return function(){return o.progressElement.style.width=10+90*o.value+"%"}})(this))},i.prototype.createStylesheetElement=function(){var o;return o=document.createElement("style"),o.type="text/css",o.textContent=this.constructor.defaultCSS,o},i.prototype.createProgressElement=function(){var o;return o=document.createElement("div"),o.className="turbolinks-progress-bar",o},i})()}).call(this),(function(){var n=function(i,s){return function(){return i.apply(s,arguments)}};r.BrowserAdapter=(function(){function i(c){this.controller=c,this.showProgressBar=n(this.showProgressBar,this),this.progressBar=new r.ProgressBar}var s,o,d;return d=r.HttpRequest,s=d.NETWORK_FAILURE,o=d.TIMEOUT_FAILURE,i.prototype.visitProposedToLocationWithAction=function(c,p){return this.controller.startVisitToLocationWithAction(c,p)},i.prototype.visitStarted=function(c){return c.issueRequest(),c.changeHistory(),c.loadCachedSnapshot()},i.prototype.visitRequestStarted=function(c){return this.progressBar.setValue(0),c.hasCachedSnapshot()||c.action!=="restore"?this.showProgressBarAfterDelay():this.showProgressBar()},i.prototype.visitRequestProgressed=function(c){return this.progressBar.setValue(c.progress)},i.prototype.visitRequestCompleted=function(c){return c.loadResponse()},i.prototype.visitRequestFailedWithStatusCode=function(c,p){switch(p){case s:case o:return this.reload();default:return c.loadResponse()}},i.prototype.visitRequestFinished=function(c){return this.hideProgressBar()},i.prototype.visitCompleted=function(c){return c.followRedirect()},i.prototype.pageInvalidated=function(){return this.reload()},i.prototype.showProgressBarAfterDelay=function(){return this.progressBarTimeout=setTimeout(this.showProgressBar,this.controller.progressBarDelay)},i.prototype.showProgressBar=function(){return this.progressBar.show()},i.prototype.hideProgressBar=function(){return this.progressBar.hide(),clearTimeout(this.progressBarTimeout)},i.prototype.reload=function(){return window.location.reload()},i})()}).call(this),(function(){var n=function(i,s){return function(){return i.apply(s,arguments)}};r.History=(function(){function i(s){this.delegate=s,this.onPageLoad=n(this.onPageLoad,this),this.onPopState=n(this.onPopState,this)}return i.prototype.start=function(){return this.started?void 0:(addEventListener("popstate",this.onPopState,!1),addEventListener("load",this.onPageLoad,!1),this.started=!0)},i.prototype.stop=function(){return this.started?(removeEventListener("popstate",this.onPopState,!1),removeEventListener("load",this.onPageLoad,!1),this.started=!1):void 0},i.prototype.push=function(s,o){return s=r.Location.wrap(s),this.update("push",s,o)},i.prototype.replace=function(s,o){return s=r.Location.wrap(s),this.update("replace",s,o)},i.prototype.onPopState=function(s){var o,d,c,p;return this.shouldHandlePopState()&&(p=(d=s.state)!=null?d.turbolinks:void 0)?(o=r.Location.wrap(window.location),c=p.restorationIdentifier,this.delegate.historyPoppedToLocationWithRestorationIdentifier(o,c)):void 0},i.prototype.onPageLoad=function(s){return r.defer((function(o){return function(){return o.pageLoaded=!0}})(this))},i.prototype.shouldHandlePopState=function(){return this.pageIsLoaded()},i.prototype.pageIsLoaded=function(){return this.pageLoaded||document.readyState==="complete"},i.prototype.update=function(s,o,d){var c;return c={turbolinks:{restorationIdentifier:d}},history[s+"State"](c,null,o)},i})()}).call(this),(function(){r.HeadDetails=(function(){function n(p){var h,m,v,g,_,P;for(this.elements={},v=0,_=p.length;_>v;v++)P=p[v],P.nodeType===Node.ELEMENT_NODE&&(g=P.outerHTML,m=(h=this.elements)[g]!=null?h[g]:h[g]={type:c(P),tracked:d(P),elements:[]},m.elements.push(P))}var i,s,o,d,c;return n.fromHeadElement=function(p){var h;return new this((h=p?.childNodes)!=null?h:[])},n.prototype.hasElementWithKey=function(p){return p in this.elements},n.prototype.getTrackedElementSignature=function(){var p,h;return(function(){var m,v;m=this.elements,v=[];for(p in m)h=m[p].tracked,h&&v.push(p);return v}).call(this).join("")},n.prototype.getScriptElementsNotInDetails=function(p){return this.getElementsMatchingTypeNotInDetails("script",p)},n.prototype.getStylesheetElementsNotInDetails=function(p){return this.getElementsMatchingTypeNotInDetails("stylesheet",p)},n.prototype.getElementsMatchingTypeNotInDetails=function(p,h){var m,v,g,_,P,O;g=this.elements,P=[];for(v in g)_=g[v],O=_.type,m=_.elements,O!==p||h.hasElementWithKey(v)||P.push(m[0]);return P},n.prototype.getProvisionalElements=function(){var p,h,m,v,g,_,P;m=[],v=this.elements;for(h in v)g=v[h],P=g.type,_=g.tracked,p=g.elements,P!=null||_?p.length>1&&m.push.apply(m,p.slice(1)):m.push.apply(m,p);return m},n.prototype.getMetaValue=function(p){var h;return(h=this.findMetaElementByName(p))!=null?h.getAttribute("content"):void 0},n.prototype.findMetaElementByName=function(p){var h,m,v,g;h=void 0,g=this.elements;for(v in g)m=g[v].elements,i(m[0],p)&&(h=m[0]);return h},c=function(p){return s(p)?"script":o(p)?"stylesheet":void 0},d=function(p){return p.getAttribute("data-turbolinks-track")==="reload"},s=function(p){var h;return h=p.tagName.toLowerCase(),h==="script"},o=function(p){var h;return h=p.tagName.toLowerCase(),h==="style"||h==="link"&&p.getAttribute("rel")==="stylesheet"},i=function(p,h){var m;return m=p.tagName.toLowerCase(),m==="meta"&&p.getAttribute("name")===h},n})()}).call(this),(function(){r.Snapshot=(function(){function n(i,s){this.headDetails=i,this.bodyElement=s}return n.wrap=function(i){return i instanceof this?i:typeof i=="string"?this.fromHTMLString(i):this.fromHTMLElement(i)},n.fromHTMLString=function(i){var s;return s=document.createElement("html"),s.innerHTML=i,this.fromHTMLElement(s)},n.fromHTMLElement=function(i){var s,o,d,c;return d=i.querySelector("head"),s=(c=i.querySelector("body"))!=null?c:document.createElement("body"),o=r.HeadDetails.fromHeadElement(d),new this(o,s)},n.prototype.clone=function(){return new this.constructor(this.headDetails,this.bodyElement.cloneNode(!0))},n.prototype.getRootLocation=function(){var i,s;return s=(i=this.getSetting("root"))!=null?i:"/",new r.Location(s)},n.prototype.getCacheControlValue=function(){return this.getSetting("cache-control")},n.prototype.getElementForAnchor=function(i){try{return this.bodyElement.querySelector("[id='"+i+"'], a[name='"+i+"']")}catch{}},n.prototype.getPermanentElements=function(){return this.bodyElement.querySelectorAll("[id][data-turbolinks-permanent]")},n.prototype.getPermanentElementById=function(i){return this.bodyElement.querySelector("#"+i+"[data-turbolinks-permanent]")},n.prototype.getPermanentElementsPresentInSnapshot=function(i){var s,o,d,c,p;for(c=this.getPermanentElements(),p=[],o=0,d=c.length;d>o;o++)s=c[o],i.getPermanentElementById(s.id)&&p.push(s);return p},n.prototype.findFirstAutofocusableElement=function(){return this.bodyElement.querySelector("[autofocus]")},n.prototype.hasAnchor=function(i){return this.getElementForAnchor(i)!=null},n.prototype.isPreviewable=function(){return this.getCacheControlValue()!=="no-preview"},n.prototype.isCacheable=function(){return this.getCacheControlValue()!=="no-cache"},n.prototype.isVisitable=function(){return this.getSetting("visit-control")!=="reload"},n.prototype.getSetting=function(i){return this.headDetails.getMetaValue("turbolinks-"+i)},n})()}).call(this),(function(){var n=[].slice;r.Renderer=(function(){function i(){}var s;return i.render=function(){var o,d,c,p;return c=arguments[0],d=arguments[1],o=3<=arguments.length?n.call(arguments,2):[],p=(function(h,m,v){v.prototype=h.prototype;var g=new v,_=h.apply(g,m);return Object(_)===_?_:g})(this,o,function(){}),p.delegate=c,p.render(d),p},i.prototype.renderView=function(o){return this.delegate.viewWillRender(this.newBody),o(),this.delegate.viewRendered(this.newBody)},i.prototype.invalidateView=function(){return this.delegate.viewInvalidated()},i.prototype.createScriptElement=function(o){var d;return o.getAttribute("data-turbolinks-eval")==="false"?o:(d=document.createElement("script"),d.textContent=o.textContent,d.async=!1,s(d,o),d)},s=function(o,d){var c,p,h,m,v,g,_;for(m=d.attributes,g=[],c=0,p=m.length;p>c;c++)v=m[c],h=v.name,_=v.value,g.push(o.setAttribute(h,_));return g},i})()}).call(this),(function(){var n,i,s=function(d,c){function p(){this.constructor=d}for(var h in c)o.call(c,h)&&(d[h]=c[h]);return p.prototype=c.prototype,d.prototype=new p,d.__super__=c.prototype,d},o={}.hasOwnProperty;r.SnapshotRenderer=(function(d){function c(p,h,m){this.currentSnapshot=p,this.newSnapshot=h,this.isPreview=m,this.currentHeadDetails=this.currentSnapshot.headDetails,this.newHeadDetails=this.newSnapshot.headDetails,this.currentBody=this.currentSnapshot.bodyElement,this.newBody=this.newSnapshot.bodyElement}return s(c,d),c.prototype.render=function(p){return this.shouldRender()?(this.mergeHead(),this.renderView((function(h){return function(){return h.replaceBody(),h.isPreview||h.focusFirstAutofocusableElement(),p()}})(this))):this.invalidateView()},c.prototype.mergeHead=function(){return this.copyNewHeadStylesheetElements(),this.copyNewHeadScriptElements(),this.removeCurrentHeadProvisionalElements(),this.copyNewHeadProvisionalElements()},c.prototype.replaceBody=function(){var p;return p=this.relocateCurrentBodyPermanentElements(),this.activateNewBodyScriptElements(),this.assignNewBody(),this.replacePlaceholderElementsWithClonedPermanentElements(p)},c.prototype.shouldRender=function(){return this.newSnapshot.isVisitable()&&this.trackedElementsAreIdentical()},c.prototype.trackedElementsAreIdentical=function(){return this.currentHeadDetails.getTrackedElementSignature()===this.newHeadDetails.getTrackedElementSignature()},c.prototype.copyNewHeadStylesheetElements=function(){var p,h,m,v,g;for(v=this.getNewHeadStylesheetElements(),g=[],h=0,m=v.length;m>h;h++)p=v[h],g.push(document.head.appendChild(p));return g},c.prototype.copyNewHeadScriptElements=function(){var p,h,m,v,g;for(v=this.getNewHeadScriptElements(),g=[],h=0,m=v.length;m>h;h++)p=v[h],g.push(document.head.appendChild(this.createScriptElement(p)));return g},c.prototype.removeCurrentHeadProvisionalElements=function(){var p,h,m,v,g;for(v=this.getCurrentHeadProvisionalElements(),g=[],h=0,m=v.length;m>h;h++)p=v[h],g.push(document.head.removeChild(p));return g},c.prototype.copyNewHeadProvisionalElements=function(){var p,h,m,v,g;for(v=this.getNewHeadProvisionalElements(),g=[],h=0,m=v.length;m>h;h++)p=v[h],g.push(document.head.appendChild(p));return g},c.prototype.relocateCurrentBodyPermanentElements=function(){var p,h,m,v,g,_,P;for(_=this.getCurrentBodyPermanentElements(),P=[],p=0,h=_.length;h>p;p++)v=_[p],g=n(v),m=this.newSnapshot.getPermanentElementById(v.id),i(v,g.element),i(m,v),P.push(g);return P},c.prototype.replacePlaceholderElementsWithClonedPermanentElements=function(p){var h,m,v,g,_,P,O;for(O=[],v=0,g=p.length;g>v;v++)P=p[v],m=P.element,_=P.permanentElement,h=_.cloneNode(!0),O.push(i(m,h));return O},c.prototype.activateNewBodyScriptElements=function(){var p,h,m,v,g,_;for(g=this.getNewBodyScriptElements(),_=[],h=0,v=g.length;v>h;h++)m=g[h],p=this.createScriptElement(m),_.push(i(m,p));return _},c.prototype.assignNewBody=function(){return document.body=this.newBody},c.prototype.focusFirstAutofocusableElement=function(){var p;return(p=this.newSnapshot.findFirstAutofocusableElement())!=null?p.focus():void 0},c.prototype.getNewHeadStylesheetElements=function(){return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails)},c.prototype.getNewHeadScriptElements=function(){return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails)},c.prototype.getCurrentHeadProvisionalElements=function(){return this.currentHeadDetails.getProvisionalElements()},c.prototype.getNewHeadProvisionalElements=function(){return this.newHeadDetails.getProvisionalElements()},c.prototype.getCurrentBodyPermanentElements=function(){return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot)},c.prototype.getNewBodyScriptElements=function(){return this.newBody.querySelectorAll("script")},c})(r.Renderer),n=function(d){var c;return c=document.createElement("meta"),c.setAttribute("name","turbolinks-permanent-placeholder"),c.setAttribute("content",d.id),{element:c,permanentElement:d}},i=function(d,c){var p;return(p=d.parentNode)?p.replaceChild(c,d):void 0}}).call(this),(function(){var n=function(s,o){function d(){this.constructor=s}for(var c in o)i.call(o,c)&&(s[c]=o[c]);return d.prototype=o.prototype,s.prototype=new d,s.__super__=o.prototype,s},i={}.hasOwnProperty;r.ErrorRenderer=(function(s){function o(d){var c;c=document.createElement("html"),c.innerHTML=d,this.newHead=c.querySelector("head"),this.newBody=c.querySelector("body")}return n(o,s),o.prototype.render=function(d){return this.renderView((function(c){return function(){return c.replaceHeadAndBody(),c.activateBodyScriptElements(),d()}})(this))},o.prototype.replaceHeadAndBody=function(){var d,c;return c=document.head,d=document.body,c.parentNode.replaceChild(this.newHead,c),d.parentNode.replaceChild(this.newBody,d)},o.prototype.activateBodyScriptElements=function(){var d,c,p,h,m,v;for(h=this.getScriptElements(),v=[],c=0,p=h.length;p>c;c++)m=h[c],d=this.createScriptElement(m),v.push(m.parentNode.replaceChild(d,m));return v},o.prototype.getScriptElements=function(){return document.documentElement.querySelectorAll("script")},o})(r.Renderer)}).call(this),(function(){r.View=(function(){function n(i){this.delegate=i,this.htmlElement=document.documentElement}return n.prototype.getRootLocation=function(){return this.getSnapshot().getRootLocation()},n.prototype.getElementForAnchor=function(i){return this.getSnapshot().getElementForAnchor(i)},n.prototype.getSnapshot=function(){return r.Snapshot.fromHTMLElement(this.htmlElement)},n.prototype.render=function(i,s){var o,d,c;return c=i.snapshot,o=i.error,d=i.isPreview,this.markAsPreview(d),c!=null?this.renderSnapshot(c,d,s):this.renderError(o,s)},n.prototype.markAsPreview=function(i){return i?this.htmlElement.setAttribute("data-turbolinks-preview",""):this.htmlElement.removeAttribute("data-turbolinks-preview")},n.prototype.renderSnapshot=function(i,s,o){return r.SnapshotRenderer.render(this.delegate,o,this.getSnapshot(),r.Snapshot.wrap(i),s)},n.prototype.renderError=function(i,s){return r.ErrorRenderer.render(this.delegate,s,i)},n})()}).call(this),(function(){var n=function(i,s){return function(){return i.apply(s,arguments)}};r.ScrollManager=(function(){function i(s){this.delegate=s,this.onScroll=n(this.onScroll,this),this.onScroll=r.throttle(this.onScroll)}return i.prototype.start=function(){return this.started?void 0:(addEventListener("scroll",this.onScroll,!1),this.onScroll(),this.started=!0)},i.prototype.stop=function(){return this.started?(removeEventListener("scroll",this.onScroll,!1),this.started=!1):void 0},i.prototype.scrollToElement=function(s){return s.scrollIntoView()},i.prototype.scrollToPosition=function(s){var o,d;return o=s.x,d=s.y,window.scrollTo(o,d)},i.prototype.onScroll=function(s){return this.updatePosition({x:window.pageXOffset,y:window.pageYOffset})},i.prototype.updatePosition=function(s){var o;return this.position=s,(o=this.delegate)!=null?o.scrollPositionChanged(this.position):void 0},i})()}).call(this),(function(){r.SnapshotCache=(function(){function n(s){this.size=s,this.keys=[],this.snapshots={}}var i;return n.prototype.has=function(s){var o;return o=i(s),o in this.snapshots},n.prototype.get=function(s){var o;if(this.has(s))return o=this.read(s),this.touch(s),o},n.prototype.put=function(s,o){return this.write(s,o),this.touch(s),o},n.prototype.read=function(s){var o;return o=i(s),this.snapshots[o]},n.prototype.write=function(s,o){var d;return d=i(s),this.snapshots[d]=o},n.prototype.touch=function(s){var o,d;return d=i(s),o=this.keys.indexOf(d),o>-1&&this.keys.splice(o,1),this.keys.unshift(d),this.trim()},n.prototype.trim=function(){var s,o,d,c,p;for(c=this.keys.splice(this.size),p=[],s=0,d=c.length;d>s;s++)o=c[s],p.push(delete this.snapshots[o]);return p},i=function(s){return r.Location.wrap(s).toCacheKey()},n})()}).call(this),(function(){var n=function(i,s){return function(){return i.apply(s,arguments)}};r.Visit=(function(){function i(o,d,c){this.controller=o,this.action=c,this.performScroll=n(this.performScroll,this),this.identifier=r.uuid(),this.location=r.Location.wrap(d),this.adapter=this.controller.adapter,this.state="initialized",this.timingMetrics={}}var s;return i.prototype.start=function(){return this.state==="initialized"?(this.recordTimingMetric("visitStart"),this.state="started",this.adapter.visitStarted(this)):void 0},i.prototype.cancel=function(){var o;return this.state==="started"?((o=this.request)!=null&&o.cancel(),this.cancelRender(),this.state="canceled"):void 0},i.prototype.complete=function(){var o;return this.state==="started"?(this.recordTimingMetric("visitEnd"),this.state="completed",typeof(o=this.adapter).visitCompleted=="function"&&o.visitCompleted(this),this.controller.visitCompleted(this)):void 0},i.prototype.fail=function(){var o;return this.state==="started"?(this.state="failed",typeof(o=this.adapter).visitFailed=="function"?o.visitFailed(this):void 0):void 0},i.prototype.changeHistory=function(){var o,d;return this.historyChanged?void 0:(o=this.location.isEqualTo(this.referrer)?"replace":this.action,d=s(o),this.controller[d](this.location,this.restorationIdentifier),this.historyChanged=!0)},i.prototype.issueRequest=function(){return this.shouldIssueRequest()&&this.request==null?(this.progress=0,this.request=new r.HttpRequest(this,this.location,this.referrer),this.request.send()):void 0},i.prototype.getCachedSnapshot=function(){var o;return!(o=this.controller.getCachedSnapshotForLocation(this.location))||this.location.anchor!=null&&!o.hasAnchor(this.location.anchor)||this.action!=="restore"&&!o.isPreviewable()?void 0:o},i.prototype.hasCachedSnapshot=function(){return this.getCachedSnapshot()!=null},i.prototype.loadCachedSnapshot=function(){var o,d;return(d=this.getCachedSnapshot())?(o=this.shouldIssueRequest(),this.render(function(){var c;return this.cacheSnapshot(),this.controller.render({snapshot:d,isPreview:o},this.performScroll),typeof(c=this.adapter).visitRendered=="function"&&c.visitRendered(this),o?void 0:this.complete()})):void 0},i.prototype.loadResponse=function(){return this.response!=null?this.render(function(){var o,d;return this.cacheSnapshot(),this.request.failed?(this.controller.render({error:this.response},this.performScroll),typeof(o=this.adapter).visitRendered=="function"&&o.visitRendered(this),this.fail()):(this.controller.render({snapshot:this.response},this.performScroll),typeof(d=this.adapter).visitRendered=="function"&&d.visitRendered(this),this.complete())}):void 0},i.prototype.followRedirect=function(){return this.redirectedToLocation&&!this.followedRedirect?(this.location=this.redirectedToLocation,this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation,this.restorationIdentifier),this.followedRedirect=!0):void 0},i.prototype.requestStarted=function(){var o;return this.recordTimingMetric("requestStart"),typeof(o=this.adapter).visitRequestStarted=="function"?o.visitRequestStarted(this):void 0},i.prototype.requestProgressed=function(o){var d;return this.progress=o,typeof(d=this.adapter).visitRequestProgressed=="function"?d.visitRequestProgressed(this):void 0},i.prototype.requestCompletedWithResponse=function(o,d){return this.response=o,d!=null&&(this.redirectedToLocation=r.Location.wrap(d)),this.adapter.visitRequestCompleted(this)},i.prototype.requestFailedWithStatusCode=function(o,d){return this.response=d,this.adapter.visitRequestFailedWithStatusCode(this,o)},i.prototype.requestFinished=function(){var o;return this.recordTimingMetric("requestEnd"),typeof(o=this.adapter).visitRequestFinished=="function"?o.visitRequestFinished(this):void 0},i.prototype.performScroll=function(){return this.scrolled?void 0:(this.action==="restore"?this.scrollToRestoredPosition()||this.scrollToTop():this.scrollToAnchor()||this.scrollToTop(),this.scrolled=!0)},i.prototype.scrollToRestoredPosition=function(){var o,d;return o=(d=this.restorationData)!=null?d.scrollPosition:void 0,o!=null?(this.controller.scrollToPosition(o),!0):void 0},i.prototype.scrollToAnchor=function(){return this.location.anchor!=null?(this.controller.scrollToAnchor(this.location.anchor),!0):void 0},i.prototype.scrollToTop=function(){return this.controller.scrollToPosition({x:0,y:0})},i.prototype.recordTimingMetric=function(o){var d;return(d=this.timingMetrics)[o]!=null?d[o]:d[o]=new Date().getTime()},i.prototype.getTimingMetrics=function(){return r.copyObject(this.timingMetrics)},s=function(o){switch(o){case"replace":return"replaceHistoryWithLocationAndRestorationIdentifier";case"advance":case"restore":return"pushHistoryWithLocationAndRestorationIdentifier"}},i.prototype.shouldIssueRequest=function(){return this.action==="restore"?!this.hasCachedSnapshot():!0},i.prototype.cacheSnapshot=function(){return this.snapshotCached?void 0:(this.controller.cacheSnapshot(),this.snapshotCached=!0)},i.prototype.render=function(o){return this.cancelRender(),this.frame=requestAnimationFrame((function(d){return function(){return d.frame=null,o.call(d)}})(this))},i.prototype.cancelRender=function(){return this.frame?cancelAnimationFrame(this.frame):void 0},i})()}).call(this),(function(){var n=function(i,s){return function(){return i.apply(s,arguments)}};r.Controller=(function(){function i(){this.clickBubbled=n(this.clickBubbled,this),this.clickCaptured=n(this.clickCaptured,this),this.pageLoaded=n(this.pageLoaded,this),this.history=new r.History(this),this.view=new r.View(this),this.scrollManager=new r.ScrollManager(this),this.restorationData={},this.clearCache(),this.setProgressBarDelay(500)}return i.prototype.start=function(){return r.supported&&!this.started?(addEventListener("click",this.clickCaptured,!0),addEventListener("DOMContentLoaded",this.pageLoaded,!1),this.scrollManager.start(),this.startHistory(),this.started=!0,this.enabled=!0):void 0},i.prototype.disable=function(){return this.enabled=!1},i.prototype.stop=function(){return this.started?(removeEventListener("click",this.clickCaptured,!0),removeEventListener("DOMContentLoaded",this.pageLoaded,!1),this.scrollManager.stop(),this.stopHistory(),this.started=!1):void 0},i.prototype.clearCache=function(){return this.cache=new r.SnapshotCache(10)},i.prototype.visit=function(s,o){var d,c;return o==null&&(o={}),s=r.Location.wrap(s),this.applicationAllowsVisitingLocation(s)?this.locationIsVisitable(s)?(d=(c=o.action)!=null?c:"advance",this.adapter.visitProposedToLocationWithAction(s,d)):window.location=s:void 0},i.prototype.startVisitToLocationWithAction=function(s,o,d){var c;return r.supported?(c=this.getRestorationDataForIdentifier(d),this.startVisit(s,o,{restorationData:c})):window.location=s},i.prototype.setProgressBarDelay=function(s){return this.progressBarDelay=s},i.prototype.startHistory=function(){return this.location=r.Location.wrap(window.location),this.restorationIdentifier=r.uuid(),this.history.start(),this.history.replace(this.location,this.restorationIdentifier)},i.prototype.stopHistory=function(){return this.history.stop()},i.prototype.pushHistoryWithLocationAndRestorationIdentifier=function(s,o){return this.restorationIdentifier=o,this.location=r.Location.wrap(s),this.history.push(this.location,this.restorationIdentifier)},i.prototype.replaceHistoryWithLocationAndRestorationIdentifier=function(s,o){return this.restorationIdentifier=o,this.location=r.Location.wrap(s),this.history.replace(this.location,this.restorationIdentifier)},i.prototype.historyPoppedToLocationWithRestorationIdentifier=function(s,o){var d;return this.restorationIdentifier=o,this.enabled?(d=this.getRestorationDataForIdentifier(this.restorationIdentifier),this.startVisit(s,"restore",{restorationIdentifier:this.restorationIdentifier,restorationData:d,historyChanged:!0}),this.location=r.Location.wrap(s)):this.adapter.pageInvalidated()},i.prototype.getCachedSnapshotForLocation=function(s){var o;return(o=this.cache.get(s))!=null?o.clone():void 0},i.prototype.shouldCacheSnapshot=function(){return this.view.getSnapshot().isCacheable()},i.prototype.cacheSnapshot=function(){var s,o;return this.shouldCacheSnapshot()?(this.notifyApplicationBeforeCachingSnapshot(),o=this.view.getSnapshot(),s=this.lastRenderedLocation,r.defer((function(d){return function(){return d.cache.put(s,o.clone())}})(this))):void 0},i.prototype.scrollToAnchor=function(s){var o;return(o=this.view.getElementForAnchor(s))?this.scrollToElement(o):this.scrollToPosition({x:0,y:0})},i.prototype.scrollToElement=function(s){return this.scrollManager.scrollToElement(s)},i.prototype.scrollToPosition=function(s){return this.scrollManager.scrollToPosition(s)},i.prototype.scrollPositionChanged=function(s){var o;return o=this.getCurrentRestorationData(),o.scrollPosition=s},i.prototype.render=function(s,o){return this.view.render(s,o)},i.prototype.viewInvalidated=function(){return this.adapter.pageInvalidated()},i.prototype.viewWillRender=function(s){return this.notifyApplicationBeforeRender(s)},i.prototype.viewRendered=function(){return this.lastRenderedLocation=this.currentVisit.location,this.notifyApplicationAfterRender()},i.prototype.pageLoaded=function(){return this.lastRenderedLocation=this.location,this.notifyApplicationAfterPageLoad()},i.prototype.clickCaptured=function(){return removeEventListener("click",this.clickBubbled,!1),addEventListener("click",this.clickBubbled,!1)},i.prototype.clickBubbled=function(s){var o,d,c;return this.enabled&&this.clickEventIsSignificant(s)&&(d=this.getVisitableLinkForNode(s.target))&&(c=this.getVisitableLocationForLink(d))&&this.applicationAllowsFollowingLinkToLocation(d,c)?(s.preventDefault(),o=this.getActionForLink(d),this.visit(c,{action:o})):void 0},i.prototype.applicationAllowsFollowingLinkToLocation=function(s,o){var d;return d=this.notifyApplicationAfterClickingLinkToLocation(s,o),!d.defaultPrevented},i.prototype.applicationAllowsVisitingLocation=function(s){var o;return o=this.notifyApplicationBeforeVisitingLocation(s),!o.defaultPrevented},i.prototype.notifyApplicationAfterClickingLinkToLocation=function(s,o){return r.dispatch("turbolinks:click",{target:s,data:{url:o.absoluteURL},cancelable:!0})},i.prototype.notifyApplicationBeforeVisitingLocation=function(s){return r.dispatch("turbolinks:before-visit",{data:{url:s.absoluteURL},cancelable:!0})},i.prototype.notifyApplicationAfterVisitingLocation=function(s){return r.dispatch("turbolinks:visit",{data:{url:s.absoluteURL}})},i.prototype.notifyApplicationBeforeCachingSnapshot=function(){return r.dispatch("turbolinks:before-cache")},i.prototype.notifyApplicationBeforeRender=function(s){return r.dispatch("turbolinks:before-render",{data:{newBody:s}})},i.prototype.notifyApplicationAfterRender=function(){return r.dispatch("turbolinks:render")},i.prototype.notifyApplicationAfterPageLoad=function(s){return s==null&&(s={}),r.dispatch("turbolinks:load",{data:{url:this.location.absoluteURL,timing:s}})},i.prototype.startVisit=function(s,o,d){var c;return(c=this.currentVisit)!=null&&c.cancel(),this.currentVisit=this.createVisit(s,o,d),this.currentVisit.start(),this.notifyApplicationAfterVisitingLocation(s)},i.prototype.createVisit=function(s,o,d){var c,p,h,m,v;return p=d??{},m=p.restorationIdentifier,h=p.restorationData,c=p.historyChanged,v=new r.Visit(this,s,o),v.restorationIdentifier=m??r.uuid(),v.restorationData=r.copyObject(h),v.historyChanged=c,v.referrer=this.location,v},i.prototype.visitCompleted=function(s){return this.notifyApplicationAfterPageLoad(s.getTimingMetrics())},i.prototype.clickEventIsSignificant=function(s){return!(s.defaultPrevented||s.target.isContentEditable||s.which>1||s.altKey||s.ctrlKey||s.metaKey||s.shiftKey)},i.prototype.getVisitableLinkForNode=function(s){return this.nodeIsVisitable(s)?r.closest(s,"a[href]:not([target]):not([download])"):void 0},i.prototype.getVisitableLocationForLink=function(s){var o;return o=new r.Location(s.getAttribute("href")),this.locationIsVisitable(o)?o:void 0},i.prototype.getActionForLink=function(s){var o;return(o=s.getAttribute("data-turbolinks-action"))!=null?o:"advance"},i.prototype.nodeIsVisitable=function(s){var o;return(o=r.closest(s,"[data-turbolinks]"))?o.getAttribute("data-turbolinks")!=="false":!0},i.prototype.locationIsVisitable=function(s){return s.isPrefixedBy(this.view.getRootLocation())&&s.isHTML()},i.prototype.getCurrentRestorationData=function(){return this.getRestorationDataForIdentifier(this.restorationIdentifier)},i.prototype.getRestorationDataForIdentifier=function(s){var o;return(o=this.restorationData)[s]!=null?o[s]:o[s]={}},i})()}).call(this),(function(){(function(){var n,i;if((n=i=document.currentScript)&&!i.hasAttribute("data-turbolinks-suppress-warning")){for(;n=n.parentNode;)if(n===document.body)return console.warn(`You are loading Turbolinks from a
- @endpush
-
diff --git a/Updated_Cms/resources/themes/dusk/views/user/me.blade.php b/Updated_Cms/resources/themes/dusk/views/user/me.blade.php
deleted file mode 100644
index fcc7739bbb..0000000000
--- a/Updated_Cms/resources/themes/dusk/views/user/me.blade.php
+++ /dev/null
@@ -1,212 +0,0 @@
-
- @push('title', __('Welcome to the best hotel on the web!'))
-
-
-
-
-
-
-
-
-
-
- Hey {{ Auth::user()->username }}!
-
-
-
{{ Auth::user()->motto }}
-
-
-
-
-
-
-
-
-
- {{ auth()->user()->credits }}
-
-
- {{ __('Credits') }}
-
-
-
-
- {{ auth()->user()->currency('duckets') }}
-
-
- {{ __('Duckets') }}
-
-
-
-
- {{ auth()->user()->currency('diamonds') }}
-
-
- {{ __('Diamonds') }}
-
-
-
-
-
-
- {{-- Articles --}}
-
-
-
-
-
-
-
-
-
-
-
-
-
- @foreach($articles as $article)
-
- @endforeach
-
-
-
-
-
-
-
-
-
-
{{ __('Online Friends') }}
-
-
-
- @foreach ($onlineFriends as $friend)
-
-
-
-
-
-
- {{ $friend->username }}
-
-
-
- {{ __('Motto') }}: {{ $friend->motto }}
- {{ __('Online Since') }}
- : {{ date(config('habbo.site.date_format'), $friend->last_online) }}
-
-
-
- @endforeach
-
-
-
-
-
-
-
- {{ sprintf(__('User Referrals (%s/%s)'), auth()->user()->referrals->referrals_total ?? 0, setting('referrals_needed')) }}
-
-
-
- {{ __('Referral new users and be rewarded by in-game goods') }}
-
-
-
- {{ __('Here at :hotel we have added a referral system, allowing you to obtain a bonus for every :needed users that registers through your referral link will allow you to claim a reward of :amount diamonds!', ['hotel' => setting('hotel_name'), 'needed' => setting('referrals_needed'), 'amount' => setting('referral_reward_amount')]) }}
-
-
-
- {{ __('Boosting referrals by making own accounts will lead to removal of all progress, currency, inventory and a potential ban') }}
-
-
-
-
-
-
-
- {{ __('Copy code') }}
-
-
-
-
-
- @if (auth()->user()->referrals?->referrals_total >= (int) setting('referrals_needed'))
-
-
- {{ __('Claim your referrals reward!') }}
-
-
- @else
-
- {{ sprintf(__('You need to refer :needed more users, before being able to claim your reward', ['needed' =>auth()->user()->referralsNeeded() ?? 0]),auth()->user()->referrals->referrals_total ?? 0) }}
-
- @endif
-
-
-
-
- @push('javascript')
-
- @endpush
-
diff --git a/Updated_Cms/resources/themes/dusk/views/user/profile.blade.php b/Updated_Cms/resources/themes/dusk/views/user/profile.blade.php
deleted file mode 100644
index 26993c781e..0000000000
--- a/Updated_Cms/resources/themes/dusk/views/user/profile.blade.php
+++ /dev/null
@@ -1,209 +0,0 @@
-
- @push('title', $user->username)
-
-
-
-
-
-
-
-
-
- {{ __('My name is,') }}
-
-
-
- {{ $user->username }}
-
-
-
-
{{ $user->motto }}
-
Last online: {{ date('Y-m-d', $user->last_online) }}
-
-
-
-
-
-
- {{ auth()->user()->credits }}
-
-
- {{ __('Credits') }}
-
-
-
-
- {{ auth()->user()->currency('duckets') }}
-
-
- {{ __('Duckets') }}
-
-
-
-
- {{ auth()->user()->currency('diamonds') }}
-
-
- {{ __('Diamonds') }}
-
-
-
-
-
-
-
- @foreach($user->badges as $badge)
-
-
-
- @endforeach
-
-
-
-
-
-
-
-
-
-
-
- {{ __('Rooms') }}
-
-
-
- @forelse($user->rooms as $room)
-
-
-
-
-
-
-
-
- {{ $room->name }}
-
-
- @empty
-
-
This user currently does not have any rooms
-
- @endforelse
-
-
-
-
-
-
- {{ __('Guestbook') }}
-
-
-
- @foreach($guestbook as $post)
-
-
-
-
-
-
-
- {{ $post->user?->username }}
-
-
- @if($post->profile_id === Auth::id() || $user->id === Auth::id() || Auth::user()->rank > (int)setting('min_staff_rank'))
-
- @endif
-
-
-
{{ Str::limit($post->message, 30) }}
-
-
-
- @endforeach
-
-
-
-
-
-
-
-
- @push('javascript')
-
- @endpush
-
diff --git a/Updated_Cms/resources/themes/dusk/views/user/settings/account.blade.php b/Updated_Cms/resources/themes/dusk/views/user/settings/account.blade.php
deleted file mode 100644
index a1f2a0b491..0000000000
--- a/Updated_Cms/resources/themes/dusk/views/user/settings/account.blade.php
+++ /dev/null
@@ -1,70 +0,0 @@
-
- @push('title', __('Account settings'))
-
-
-
-
-
-
-
-
- {{ __('Account settings') }}
-
-
-
- {{ __('Manage your account settings') }}
-
-
-
-
-
-
diff --git a/Updated_Cms/resources/themes/dusk/views/user/settings/password.blade.php b/Updated_Cms/resources/themes/dusk/views/user/settings/password.blade.php
deleted file mode 100644
index 2652cfbcdd..0000000000
--- a/Updated_Cms/resources/themes/dusk/views/user/settings/password.blade.php
+++ /dev/null
@@ -1,68 +0,0 @@
-
- @push('title', __('Password settings'))
-
-
-
-
-
-
-
-
- {{ __('Password settings') }}
-
-
-
- {{ __('Change your password by filling out the fields below') }}
-
-
-
-
-
-
diff --git a/Updated_Cms/resources/themes/dusk/views/user/settings/session-logs.blade.php b/Updated_Cms/resources/themes/dusk/views/user/settings/session-logs.blade.php
deleted file mode 100644
index 1e022d31c0..0000000000
--- a/Updated_Cms/resources/themes/dusk/views/user/settings/session-logs.blade.php
+++ /dev/null
@@ -1,72 +0,0 @@
-
- @push('title', __('Session logs'))
-
-
-
-
-
-
-
-
- {{ __('Session logs') }}
-
-
-
- {{ __('Keep an eye on all your active sessions') }}
-
-
-
-
-
-
-
- {{ __('IP') }}
-
-
- {{ __('IP Current Device') }}
-
-
- {{ __('Is Desktop') }}
-
-
- {{ __('Platform') }}
-
-
- {{ __('Browser') }}
-
-
- {{ __('Last Activity') }}
-
-
-
-
-
- @forelse ($logs as $log)
-
-
- {{ $log->ip_address }}
-
-
- {{ $log->is_current_device ? 'true' : 'false' }}
-
- {{ $log->agent['is_desktop'] ? 'true' : 'false' }}
- {{ $log->agent['platform'] }}
-
- {{ $log->agent['browser'] }}
-
- {{ $log->last_active }}
-
- @empty
-
-
- {{ __('No session logs found') }}
-
-
- @endforelse
-
-
-
-
-
-
diff --git a/Updated_Cms/resources/themes/dusk/views/user/settings/two-factor.blade.php b/Updated_Cms/resources/themes/dusk/views/user/settings/two-factor.blade.php
deleted file mode 100644
index c2fe3550e3..0000000000
--- a/Updated_Cms/resources/themes/dusk/views/user/settings/two-factor.blade.php
+++ /dev/null
@@ -1,107 +0,0 @@
-
- @push('title', __('Two factor'))
-
-
-
-
-
-
-
-
- {{ __('Two factor authentication') }}
-
-
-
- {{ __('Add an extra layer of security to your account by enabling two-factor authentication') }}
-
-
-
- @if (auth()->user()->two_factor_confirmed)
-
-
- {{-- 2FA enabled but not yet confirmed, we show the QRcode and ask for confirmation --}}
- @elseif(auth()->user()->two_factor_secret)
- {{ __('Validate your two-factor enabling by scanning the following QR-code and enter your auto-generated 2-factor code from your phone.') }}
-
-
-
-
-
- {!! auth()->user()->twoFactorQrCodeSvg() !!}
-
-
-
-
- {{ __('Recovery codes:') }}
-
-
-
- @foreach (auth()->user()->recoveryCodes() as $code)
- {{ $code }}
- @endforeach
-
-
-
-
-
-
-
- {{ __('Please save your recovery codes somewhere safe! If you lose access to your 2FA codes, those recovery codes will be needed to regain access your account.') }}
-
-
-
-
- @else
-
-
-
- {{ __('Here at :hotel we take security very serious and therefore we offer you as a user a way to secure your beloved account even further, by allowing you to enable Googles 2-factor authentication!', ['hotel' => setting('hotel_name')]) }}
-
-
-
- {{ __('2-factor authentication adds an extra layer of security to your account, making it physical impossible to access it without having access to your mobile phone as only your phone will contain the 2-factor authentication code which will be re-generated every 30 seconds automatically') }}
-
-
-
-
-
- @endif
-
-
-
diff --git a/Updated_Cms/resources/views/components/content/installation-content-section.blade.php b/Updated_Cms/resources/views/components/content/installation-content-section.blade.php
deleted file mode 100644
index 35b1fab749..0000000000
--- a/Updated_Cms/resources/views/components/content/installation-content-section.blade.php
+++ /dev/null
@@ -1,22 +0,0 @@
- @props(['icon' => '', 'classes' => ''])
-
-
-
-
-
-
-
-
{{ $title }}
-
- @if(isset($underTitle))
-
{{ $underTitle }}
- @endif
-
-
-
-
-
diff --git a/Updated_Cms/resources/views/components/currency-box.blade.php b/Updated_Cms/resources/views/components/currency-box.blade.php
deleted file mode 100644
index 3c3bffa1b1..0000000000
--- a/Updated_Cms/resources/views/components/currency-box.blade.php
+++ /dev/null
@@ -1,11 +0,0 @@
-@props(['primaryColor', 'secondaryColor'])
-
-
-
- {{ $icon }}
-
-
-
- {{ $slot }}
-
-
\ No newline at end of file
diff --git a/Updated_Cms/resources/views/components/icons/cart.blade.php b/Updated_Cms/resources/views/components/icons/cart.blade.php
deleted file mode 100644
index 444ca0e952..0000000000
--- a/Updated_Cms/resources/views/components/icons/cart.blade.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/Updated_Cms/resources/views/components/icons/chevron-down.blade.php b/Updated_Cms/resources/views/components/icons/chevron-down.blade.php
deleted file mode 100644
index 5cfb5b1f0c..0000000000
--- a/Updated_Cms/resources/views/components/icons/chevron-down.blade.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
diff --git a/Updated_Cms/resources/views/components/icons/eye.blade.php b/Updated_Cms/resources/views/components/icons/eye.blade.php
deleted file mode 100644
index e2f9bd0d08..0000000000
--- a/Updated_Cms/resources/views/components/icons/eye.blade.php
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
diff --git a/Updated_Cms/resources/views/components/icons/fullscreen.blade.php b/Updated_Cms/resources/views/components/icons/fullscreen.blade.php
deleted file mode 100644
index 24257f01ba..0000000000
--- a/Updated_Cms/resources/views/components/icons/fullscreen.blade.php
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
diff --git a/Updated_Cms/resources/views/components/icons/gift.blade.php b/Updated_Cms/resources/views/components/icons/gift.blade.php
deleted file mode 100644
index fa856c6261..0000000000
--- a/Updated_Cms/resources/views/components/icons/gift.blade.php
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/Updated_Cms/resources/views/components/icons/home.blade.php b/Updated_Cms/resources/views/components/icons/home.blade.php
deleted file mode 100644
index a2528ca0d6..0000000000
--- a/Updated_Cms/resources/views/components/icons/home.blade.php
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
diff --git a/Updated_Cms/resources/views/components/icons/moon.blade.php b/Updated_Cms/resources/views/components/icons/moon.blade.php
deleted file mode 100644
index ef950484af..0000000000
--- a/Updated_Cms/resources/views/components/icons/moon.blade.php
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
diff --git a/Updated_Cms/resources/views/components/icons/reload.blade.php b/Updated_Cms/resources/views/components/icons/reload.blade.php
deleted file mode 100644
index 972c4d71aa..0000000000
--- a/Updated_Cms/resources/views/components/icons/reload.blade.php
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
diff --git a/Updated_Cms/resources/views/components/icons/user.blade.php b/Updated_Cms/resources/views/components/icons/user.blade.php
deleted file mode 100644
index 4a0180263c..0000000000
--- a/Updated_Cms/resources/views/components/icons/user.blade.php
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
diff --git a/Updated_Cms/resources/views/filament/forms/components/ck-editor.blade.php b/Updated_Cms/resources/views/filament/forms/components/ck-editor.blade.php
deleted file mode 100644
index 688c48159f..0000000000
--- a/Updated_Cms/resources/views/filament/forms/components/ck-editor.blade.php
+++ /dev/null
@@ -1,230 +0,0 @@
-
-
- @unless($isDisabled())
-
- @else
-
true,
- ])
- >
- @endunless
-
-
-
-@once
- @push('scripts')
-
-
-
-
- @endpush
-@endonce
diff --git a/Updated_Cms/resources/views/filament/infolists/components/time-line-icon-entry.blade.php b/Updated_Cms/resources/views/filament/infolists/components/time-line-icon-entry.blade.php
deleted file mode 100644
index 450cbf7bd3..0000000000
--- a/Updated_Cms/resources/views/filament/infolists/components/time-line-icon-entry.blade.php
+++ /dev/null
@@ -1,57 +0,0 @@
-@php
- use Filament\Infolists\Components\IconEntry\IconEntrySize;
-@endphp
-
-
- merge($getExtraAttributes(), escape: false)
- ->class([
- 'absolute flex items-center justify-center w-6 h-6 bg-gray-200 rounded-full -start-3 ring-4 ring-white dark:bg-gray-700 dark:ring-gray-900',
- ])
- }}
- >
- @if (count($arrayState = \Illuminate\Support\Arr::wrap($getState())))
- @foreach ($arrayState as $state)
- @if ($icon = $getIcon($state))
- @php
- $color = $getColor($state) ?? 'gray';
- $size = $getSize($state) ?? IconEntrySize::Large;
- @endphp
-
-
'fi-in-icon-item-size-xs h-3 w-3',
- IconEntrySize::Small, 'sm' => 'fi-in-icon-item-size-sm h-4 w-4',
- IconEntrySize::Medium, 'md' => 'fi-in-icon-item-size-md h-5 w-5',
- IconEntrySize::Large, 'lg' => 'fi-in-icon-item-size-lg h-6 w-6',
- IconEntrySize::ExtraLarge, 'xl' => 'fi-in-icon-item-size-xl h-7 w-7',
- IconEntrySize::TwoExtraLarge, IconEntrySize::ExtraExtraLarge, '2xl' => 'fi-in-icon-item-size-2xl h-8 w-8',
- default => $size,
- },
- match ($color) {
- 'gray' => 'fi-color-gray text-gray-400 dark:text-gray-500',
- default => 'fi-color-custom text-custom-500 dark:text-custom-400',
- },
- ])
- @style([
- \Filament\Support\get_color_css_variables(
- $color,
- shades: [400, 500],
- alias: 'infolists::components.icon-entry.item',
- ) => $color !== 'gray',
- ])
- />
- @endif
- @endforeach
- @elseif (($placeholder = $getPlaceholder()) !== null)
-
- {{ $placeholder }}
-
- @endif
-
-
diff --git a/Updated_Cms/resources/views/filament/infolists/components/time-line-propertie-entry.blade.php b/Updated_Cms/resources/views/filament/infolists/components/time-line-propertie-entry.blade.php
deleted file mode 100644
index 5654ded4fa..0000000000
--- a/Updated_Cms/resources/views/filament/infolists/components/time-line-propertie-entry.blade.php
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
- {{ $getModifiedState() ?? (!is_array($getState()) ? $getState() ?? $getPlaceholder() : null) }}
-
-
-
diff --git a/Updated_Cms/resources/views/filament/infolists/components/time-line-repeatable-entry.blade.php b/Updated_Cms/resources/views/filament/infolists/components/time-line-repeatable-entry.blade.php
deleted file mode 100644
index 5f7fbb0119..0000000000
--- a/Updated_Cms/resources/views/filament/infolists/components/time-line-repeatable-entry.blade.php
+++ /dev/null
@@ -1,53 +0,0 @@
-@php
- $isContained = $isContained();
-@endphp
-
-
-
-
- merge([
- 'id' => $getId(),
- ], escape: false)
- ->merge($getExtraAttributes(), escape: false)
- ->class([
- 'fi-in-repeatable',
- 'fi-contained' => $isContained,
- ])
- }}
- >
- @if (count($childComponentContainers = $getChildComponentContainers()))
-
-
- @foreach ($childComponentContainers as $container)
- $isContained,
- ])
- >
- {{ $container }}
-
- @endforeach
-
-
- @elseif (($placeholder = $getPlaceholder()) !== null)
-
- {{ $placeholder }}
-
- @endif
-
-
diff --git a/Updated_Cms/resources/views/filament/infolists/components/time-line-title-entry.blade.php b/Updated_Cms/resources/views/filament/infolists/components/time-line-title-entry.blade.php
deleted file mode 100644
index 305ab6bc3d..0000000000
--- a/Updated_Cms/resources/views/filament/infolists/components/time-line-title-entry.blade.php
+++ /dev/null
@@ -1,13 +0,0 @@
-
- merge($getExtraAttributes(), escape: false)
- ->class(['fi-in-text w-full -mt-6'])
- }}
- >
-
- {{ $getModifiedState() }}
-
-
-
diff --git a/Updated_Cms/resources/views/filament/pages/badge-page.blade.php b/Updated_Cms/resources/views/filament/pages/badge-page.blade.php
deleted file mode 100644
index 6d969da60d..0000000000
--- a/Updated_Cms/resources/views/filament/pages/badge-page.blade.php
+++ /dev/null
@@ -1,3 +0,0 @@
-
- {{ $this->form }}
-
diff --git a/Updated_Cms/resources/views/filament/pages/logs-manager.blade.php b/Updated_Cms/resources/views/filament/pages/logs-manager.blade.php
deleted file mode 100644
index 30db49f2f7..0000000000
--- a/Updated_Cms/resources/views/filament/pages/logs-manager.blade.php
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
- {{ $this->search }}
-
- @if(config('filament-log-manager.allow_delete'))
-
-
- {{ __('filament-log-manager::translations.delete') }}
-
-
- @endif
- @if(config('filament-log-manager.allow_download'))
-
-
- {{ __('filament-log-manager::translations.download') }}
-
-
- @endif
-
-
-
-
-
- @forelse($this->getLogs() as $key => $log)
-
-
-
-
{{$log['text']}}
- @if(!empty($log['stack']))
-
-
{{ trim($log['stack']) }}
-
- @endif
-
-
- @empty
-
{{ __('filament-log-manager::translations.no_logs') }}
- @endforelse
-
-
-
-
-
- {{ __('filament-log-manager::translations.modal_delete_heading') }}
-
-
- {{ __('filament-log-manager::translations.modal_delete_subheading') }}
-
-
-
- {{ __('filament-log-manager::translations.modal_delete_action_cancel') }}
-
-
- {{ __('filament-log-manager::translations.modal_delete_action_confirm') }}
-
-
-
-
diff --git a/Updated_Cms/resources/views/filament/pages/manage-badge-uploads.blade.php b/Updated_Cms/resources/views/filament/pages/manage-badge-uploads.blade.php
deleted file mode 100644
index 127f4f0bef..0000000000
--- a/Updated_Cms/resources/views/filament/pages/manage-badge-uploads.blade.php
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
Upload a New Badge
-
- {{-- Render the form --}}
-
-
-
diff --git a/Updated_Cms/resources/views/filament/tables/columns/activity-logs-properties.blade.php b/Updated_Cms/resources/views/filament/tables/columns/activity-logs-properties.blade.php
deleted file mode 100644
index e3dae29ab3..0000000000
--- a/Updated_Cms/resources/views/filament/tables/columns/activity-logs-properties.blade.php
+++ /dev/null
@@ -1,19 +0,0 @@
-
- @foreach($getState() as $key => $value)
-
- {{ $key }}
-
-
- @if(is_array($value))
-
- @foreach ($value as $nestedKey => $nestedValue)
-
- {{ $nestedKey }}: {{ is_array($nestedValue) ? json_encode($nestedValue) : $nestedValue }}
-
- @endforeach
-
- @else
- {{ $value }}
- @endif
- @endforeach
-
diff --git a/Updated_Cms/resources/views/filament/tables/columns/habbo-badge-column.blade.php b/Updated_Cms/resources/views/filament/tables/columns/habbo-badge-column.blade.php
deleted file mode 100644
index 5542edd570..0000000000
--- a/Updated_Cms/resources/views/filament/tables/columns/habbo-badge-column.blade.php
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/Updated_Cms/resources/views/filament/tables/columns/user-avatar.blade.php b/Updated_Cms/resources/views/filament/tables/columns/user-avatar.blade.php
deleted file mode 100644
index 6b8e791d30..0000000000
--- a/Updated_Cms/resources/views/filament/tables/columns/user-avatar.blade.php
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/Updated_Cms/resources/views/filament/widgets/articles-aggregate-chart.blade.php b/Updated_Cms/resources/views/filament/widgets/articles-aggregate-chart.blade.php
deleted file mode 100644
index 784d725ca0..0000000000
--- a/Updated_Cms/resources/views/filament/widgets/articles-aggregate-chart.blade.php
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- {{-- Widget content --}}
-
-
diff --git a/Updated_Cms/resources/views/filament/widgets/top-dashboard-overview.blade.php b/Updated_Cms/resources/views/filament/widgets/top-dashboard-overview.blade.php
deleted file mode 100644
index 784d725ca0..0000000000
--- a/Updated_Cms/resources/views/filament/widgets/top-dashboard-overview.blade.php
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- {{-- Widget content --}}
-
-
diff --git a/Updated_Cms/resources/views/installation/index.blade.php b/Updated_Cms/resources/views/installation/index.blade.php
deleted file mode 100644
index 98b949c7ba..0000000000
--- a/Updated_Cms/resources/views/installation/index.blade.php
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
- {{ __('Welcome to Atom CMS') }}
-
-
-
- {{ __('We are delighted of having you trying Atom CMS') }}
-
-
-
-
- {{ __('Hello there! We are truly grateful that you have chosen Atom CMS for your hotel.') }}
-
-
-
- {{ __('Atom CMS is built with the community in mind, meaning we highly value community input, rather than only bringing our own ideas & vision to the CMS we try our very best to implement suggestions made by our beloved community. We want everyone to be able to contribute or customise Atom CMS to their needs without having a bachelor in programming.') }}
-
-
-
{{ __('Atom CMS sole purpose is to empower hotel owners like you. We want you to be able to run your hotel with ease. Our user-friendly interface, robust features, and helpful community are here to ensure that your experience with Atom CMS is nothing short of exceptional!') }}
-
-
- {{ __('As you dive into Atom CMS, we encourage you to explore the extensive range of features we have curated to help you bring your vision to life. From customizable templates to seamless integrations with clients like Nitro, we will have you set up in no time.') }}
-
-
-
- {!! __('To get started, we recommend checking out our comprehensive documentation , which will guide you through the initial setup and help you make the most of your Atom CMS experience.', ['documentation_link' => 'https://github.com/atom-retros/atomcms/wiki']) !!}
-
-
-
- {!! __('And remember, please join our Discord . If you have any questions or need assistance, please do not hesitate to reach out. We are here to help you every step of the way.', ['discord_link' => 'https://discord.gg/pP6HyZedAj']) !!}
-
-
-
- {{ __('Once again, thank you for choosing Atom CMS, and we cannot wait to see the incredible project you will create.') }}
-
-
-
- {{ __('With everything being said we just want to wish you a warm welcome to the Atom CMS family!') }}
-
-
-
-
- {{ __('To avoid any third-party party abuse, please provide the installation code, which can be found in your database inside the "website_installation" table under the column "installation_key".') }}
-
-
-
-
-
-
diff --git a/Updated_Cms/resources/views/installation/step-1.blade.php b/Updated_Cms/resources/views/installation/step-1.blade.php
deleted file mode 100644
index 87f3ac878e..0000000000
--- a/Updated_Cms/resources/views/installation/step-1.blade.php
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
- {{ __('Welcome to Atom CMS') }}
-
-
-
- {{ __('We are delighted of having you trying Atom CMS') }}
-
-
-
-
-
-
-
-
-
diff --git a/Updated_Cms/resources/views/installation/step-2.blade.php b/Updated_Cms/resources/views/installation/step-2.blade.php
deleted file mode 100644
index 442cd92ff1..0000000000
--- a/Updated_Cms/resources/views/installation/step-2.blade.php
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
- {{ __('Welcome to Atom CMS') }}
-
-
-
- {{ __('We are delighted of having you trying Atom CMS') }}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Updated_Cms/resources/views/installation/step-3.blade.php b/Updated_Cms/resources/views/installation/step-3.blade.php
deleted file mode 100644
index 6c6371027d..0000000000
--- a/Updated_Cms/resources/views/installation/step-3.blade.php
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
- {{ __('Welcome to Atom CMS') }}
-
-
-
- {{ __('We are delighted of having you trying Atom CMS') }}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Updated_Cms/resources/views/installation/step-4.blade.php b/Updated_Cms/resources/views/installation/step-4.blade.php
deleted file mode 100644
index 89b164ac56..0000000000
--- a/Updated_Cms/resources/views/installation/step-4.blade.php
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
- {{ __('Welcome to Atom CMS') }}
-
-
-
- {{ __('We are delighted of having you trying Atom CMS') }}
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Updated_Cms/resources/views/installation/step-5.blade.php b/Updated_Cms/resources/views/installation/step-5.blade.php
deleted file mode 100644
index 949c7a99dc..0000000000
--- a/Updated_Cms/resources/views/installation/step-5.blade.php
+++ /dev/null
@@ -1,76 +0,0 @@
-
-
-
- {{ __('Welcome to Atom CMS') }}
-
-
-
- {{ __('We are delighted of having you trying Atom CMS') }}
-
-
-
-
- {{ __('Congratulations on successfully completing the Atom CMS setup! You have now taken the first steps towards an exciting new journey. With Atom CMS, you can effortlessly manage various aspect of your hotel, while giving your new visitors an easy gateway into a world of joy.') }}
-
-
-
- {{ __('You can at any time change the settings you went through. All it takes is for you to hop into your database and find the "website_settings" table and then tweak the settings you wish. Who knows... As you explore the features and functionalities of Atom CMS, you might discover features that will improve you and your users experience & helping you achieve your online goals!') }}
-
-
-
- {!! __('We also have written a throughout documentation, explaining tons of things regarding managing Atom CMS & other aspect of your hotel. You can visit our comprehensive documentation right here . Our goal is to keep expanding our coverage, so keep checking it from time to time.') !!}
-
-
-
- {{ __('Lastly, we just want to show our gratitude by letting your know how delighted we are to be a part of your journey and we hope you will gain some amazing memories. So, here is to your new hotel, the boundless creativity it will inspire, and the endless possibilities that lie ahead.') }}
-
-
-
- {{ __('Once again, congratulations and best of wishes for you & your hotel!') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @if (setting('cms_color_mode') === 'dark')
-
- @endif
-
diff --git a/Updated_Cms/resources/views/layouts/installation.blade.php b/Updated_Cms/resources/views/layouts/installation.blade.php
deleted file mode 100644
index 85619333fa..0000000000
--- a/Updated_Cms/resources/views/layouts/installation.blade.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{ setting('hotel_name') }} - @stack('title')
-
-
-
-
-
-
- @vite(['resources/css/global.scss', 'resources/js/global.js'], 'build')
- @stack('scripts')
-
-
-
-
- {{ $slot }}
-
-
-
diff --git a/Updated_Cms/resources/views/vendor/turnstile/.gitkeep b/Updated_Cms/resources/views/vendor/turnstile/.gitkeep
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/Updated_Cms/resources/views/vendor/turnstile/components/turnstile-widget.blade.php b/Updated_Cms/resources/views/vendor/turnstile/components/turnstile-widget.blade.php
deleted file mode 100644
index dab6179b49..0000000000
--- a/Updated_Cms/resources/views/vendor/turnstile/components/turnstile-widget.blade.php
+++ /dev/null
@@ -1,22 +0,0 @@
-@props([
- 'callback' => '',
- 'errorCallback' => '',
- 'theme' => 'auto',
- 'language' => 'en-US',
- 'size' => 'normal',
-])
-
-merge([
- 'class' => 'cf-turnstile',
- 'data-sitekey' => config('turnstile.turnstile_site_key'),
- 'data-callback' => $callback,
- 'data-error-callback' => $errorCallback,
- 'data-theme' => $theme,
- 'data-language' => $language,
- 'data-size' => $size,
- 'name' => 'cf-turnstile',
- 'id'=>'cf-turnstile-widget',
-]) }}>
-
-
-
diff --git a/Updated_Cms/routes/api.php b/Updated_Cms/routes/api.php
deleted file mode 100644
index 6897f85468..0000000000
--- a/Updated_Cms/routes/api.php
+++ /dev/null
@@ -1,19 +0,0 @@
-name('api.fetch-user')->middleware('throttle:50,1');
-Route::get('/online-users', [HotelApiController::class, 'onlineUsers'])->name('api.online-users')->middleware('throttle:50,1');
-Route::get('/online-count', [HotelApiController::class, 'onlineUserCount'])->name('api.online-count')->middleware('throttle:50,1');
diff --git a/Updated_Cms/routes/channels.php b/Updated_Cms/routes/channels.php
deleted file mode 100644
index 89f9832126..0000000000
--- a/Updated_Cms/routes/channels.php
+++ /dev/null
@@ -1,16 +0,0 @@
- (int) $user->id === (int) $id);
diff --git a/Updated_Cms/routes/console.php b/Updated_Cms/routes/console.php
deleted file mode 100644
index 35b675eb76..0000000000
--- a/Updated_Cms/routes/console.php
+++ /dev/null
@@ -1,19 +0,0 @@
-comment(Inspiring::quote());
-})->purpose('Display an inspiring quote');
diff --git a/Updated_Cms/routes/web.php b/Updated_Cms/routes/web.php
deleted file mode 100644
index ed89cceeb0..0000000000
--- a/Updated_Cms/routes/web.php
+++ /dev/null
@@ -1,211 +0,0 @@
-name('language.select');
-
-// Installation routes
-Route::prefix('installation')->controller(InstallationController::class)->group(function (): void {
- Route::get('/', 'index')->name('installation.index');
- Route::get('/step/{step}', 'showStep')->name('installation.show-step');
-
- Route::post('/start-installation', 'storeInstallationKey')->name('installation.start-installation');
- Route::post('/restart-installation', 'restartInstallation')->name('installation.restart');
- Route::post('/previous-step', 'previousStep')->name('installation.previous-step');
- Route::post('/save-step', 'saveStepSettings')->name('installation.save-step');
- Route::post('/complete', 'completeInstallation')->name('installation.complete');
-});
-
-// All routes within this group is protected by maintenance, ban and 2FA middleware
-Route::middleware(['maintenance', 'check.ban', 'force.staff.2fa'])->group(function (): void {
- // Maintenance route
- Route::get('/maintenance', MaintenanceController::class)->name('maintenance.show');
-
- // Banned route
- Route::get('/banned', BannedController::class)->name('banned.show');
-
- // Exceptions to the 2FA check and must only be visited if not logged in
- Route::middleware(['guest', 'throttle:15,1'])->withoutMiddleware('force.staff.2fa')->group(function (): void {
- Route::get('/login', static fn () => to_route('welcome'))->name('login');
- Route::get('/', HomeController::class)->name('welcome');
-
- Route::get('/register', [RegisteredUserController::class, 'create']);
-
- Route::post('/register', [RegisteredUserController::class, 'store'])
- ->name('register');
-
- Route::get('/register/{referral_code}', UserReferralController::class)->name('register.referral');
-
- // Password
- Route::get('forgot-password', ForgotPasswordController::class)->name('forgot.password.get');
- Route::post('forgot-password', [ForgotPasswordController::class, 'submitForgetPassword'])->name('forgot.password.post');
- Route::get('reset-password/{token}', [ForgotPasswordController::class, 'showResetPassword'])->name('reset.password.get');
- Route::post('reset-password/{token}', [ForgotPasswordController::class, 'submitResetPassword'])->name('reset.password.post');
- });
-
- // Can only be accessed if logged in
- Route::middleware('auth')->group(function (): void {
- Route::prefix('user')->group(function (): void {
- Route::get('/me', MeController::class)->name('me.show');
- Route::get('/claim/referral-reward', ReferralController::class)->name('claim.referral-reward');
-
- // User settings routes
- Route::prefix('settings')->group(function (): void {
- Route::get('/account', [AccountSettingsController::class, 'edit'])->name('settings.account.show');
- Route::put('/account', [AccountSettingsController::class, 'update'])->name('settings.account.update');
-
- Route::get('/password', [PasswordSettingsController::class, 'edit'])->name('settings.password.show');
- Route::put('/password', [PasswordSettingsController::class, 'update'])->name('settings.password.update');
-
- Route::get('/session-logs', [AccountSettingsController::class, 'sessionLogs'])->name('settings.session-logs');
-
- Route::get('/two-factor', [TwoFactorAuthenticationController::class, 'index'])->name('settings.two-factor');
- Route::post('/user/settings/two-factor-authentication', [TwoFactorAuthenticationController::class, 'store'])->name('user.two-factor.enable');
- Route::post('/2fa-verify', [TwoFactorAuthenticationController::class, 'verify'])->name('two-factor.verify');
- Route::delete('/user/settings/two-factor-authentication', [TwoFactorAuthenticationController::class, 'destroy'])->name('user.two-factor.disable');
- });
- });
-
- // Drawbadge
- Route::get('/draw-badge', [BadgeController::class, 'show'])->name('draw-badge');
- Route::post('/buy-badge', [BadgeController::class, 'buy'])->name('badge.buy');
-
- // Profiles
- Route::get('/profile/{user:username}', ProfileController::class)->name('profile.show');
- Route::post('/profile/{user}/guestbook', [GuestbookController::class, 'store'])->name('guestbook.store');
- Route::delete('/profile/{user}/{guestbook}/delete', [GuestbookController::class, 'destroy'])->name('guestbook.destroy');
-
- // Community routes
- Route::prefix('community')->group(function (): void {
- Route::get('/photos', PhotosController::class)->name('photos.index');
-
- // Allowed to be visited without being logged in
- Route::withoutMiddleware('auth')->group(function (): void {
- Route::get('/articles', [ArticleController::class, 'index'])->name('article.index');
- Route::get('/article/{article:slug}', [ArticleController::class, 'show'])->name('article.show');
- });
-
- Route::get('/staff', StaffController::class)->name('staff.index');
- Route::get('/teams', WebsiteTeamsController::class)->name('teams.index');
-
- Route::get('/staff-applications', [StaffApplicationsController::class, 'index'])->name('staff-applications.index');
- Route::get('/staff-applications/{position}', [StaffApplicationsController::class, 'show'])->name('staff-applications.show');
- Route::post('/staff-applications/{position}', [StaffApplicationsController::class, 'store'])->name('staff-applications.store');
-
- Route::post('/article/{article:slug}/comment', [WebsiteArticleCommentsController::class, 'store'])->name('article.comment.store');
- Route::delete('/article/{comment}/comment', [WebsiteArticleCommentsController::class, 'destroy'])->name('article.comment.destroy');
- Route::post('/article/{article:slug}/toggle-reaction', [ArticleController::class, 'toggleReaction'])
- ->name('article.toggle-reaction')
- ->middleware('throttle:30,1');
- });
-
- // Leaderboard routes
- Route::get('/leaderboard', LeaderboardController::class)->name('leaderboard.index');
-
- // Shop routes
- Route::prefix('shop')->group(function (): void {
- Route::get('/{category:slug?}', ShopController::class)->name('shop.index');
-
- Route::post('/purchase/{package}', [ShopController::class, 'purchase'])->name('shop.buy');
- Route::post('/voucher', ShopVoucherController::class)->name('shop.use-voucher');
- });
-
- // Help center
- Route::prefix('help-center')->as('help-center.')->withoutMiddleware('check.ban')->group(function (): void {
- Route::get('/', HelpCenterController::class)->name('index');
-
- Route::prefix('tickets')->as('ticket.')->group(function (): void {
- Route::get('/create', [TicketController::class, 'create'])->name('create');
- Route::post('/store', [TicketController::class, 'store'])->name('store');
-
- Route::get('/show/{ticket}', [TicketController::class, 'show'])->name('show');
- Route::get('/edit/{ticket}', [TicketController::class, 'edit'])->name('edit');
- Route::put('/edit/{ticket}', [TicketController::class, 'update'])->name('update');
- Route::delete('/delete/{ticket}', [TicketController::class, 'destroy'])->name('destroy');
-
- Route::put('/toggle-status/{ticket}', [TicketController::class, 'toggleTicketStatus'])->name('toggle-status');
-
- Route::post('/reply/{ticket}/store', [TicketReplyController::class, 'store'])->name('reply.store');
- Route::delete('/reply/{reply}/delete', [TicketController::class, 'destroy'])->name('reply.destroy');
-
- // All open tickets
- Route::get('/all', [TicketController::class, 'index'])->name('index');
- });
-
- // Rules
- Route::get('/rules', WebsiteRulesController::class)->name('rules.index')->withoutMiddleware('auth');
- });
-
- // Paypal routes
- Route::controller(PayPalController::class)->prefix('paypal')->group(function (): void {
- Route::get('/process-transaction', 'process')->name('paypal.process-transaction');
- Route::get('/successful-transaction', 'successful')->name('paypal.successful-transaction');
- Route::get('/cancelled-transaction', 'cancelled')->name('paypal.cancelled-transaction');
- });
-
- // Rare values routes
- Route::get('/values', [WebsiteRareValuesController::class, 'index'])->name('values.index');
- Route::post('/values/search', [WebsiteRareValuesController::class, 'search'])->name('values.search');
- Route::get('/values/category/{category}', [WebsiteRareValuesController::class, 'category'])->name('values.category');
- Route::get('/values/{value}', [WebsiteRareValuesController::class, 'value'])->name('values.value');
-
- // Client route
- Route::prefix('game')->middleware(['findretros.redirect', 'vpn.checker'])->group(function (): void {
- Route::get('/nitro', NitroController::class)->name('nitro-client');
- Route::get('/flash', FlashController::class)->name('flash-client');
- });
-
- // Logo generator
- Route::get('/logo-generator', [LogoGeneratorController::class, 'index'])->name('logo-generator.index');
- Route::post('/logo-generator', [LogoGeneratorController::class, 'store'])->name('store.generated-logo');
- });
-});
-
-if (Features::enabled(Features::twoFactorAuthentication())) {
- $twoFactorLimiter = config('fortify.limiters.two-factor');
-
- Route::post('/two-factor-challenge', [TwoFactorAuthenticatedSessionController::class, 'store'])
- ->middleware(
- array_filter([
- 'guest:' . config('fortify.guard'),
- $twoFactorLimiter ? 'throttle:' . $twoFactorLimiter : null,
- ]),
- );
-}
diff --git a/Updated_Cms/storage/clockwork/.gitignore b/Updated_Cms/storage/clockwork/.gitignore
deleted file mode 100644
index 3fac1bff87..0000000000
--- a/Updated_Cms/storage/clockwork/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*.json
-*.json.gz
-index
diff --git a/Updated_Cms/storage/debugbar/.gitignore b/Updated_Cms/storage/debugbar/.gitignore
deleted file mode 100644
index d6b7ef32c8..0000000000
--- a/Updated_Cms/storage/debugbar/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/Updated_Cms/tests/CreatesApplication.php b/Updated_Cms/tests/CreatesApplication.php
deleted file mode 100644
index e3ad27ecf4..0000000000
--- a/Updated_Cms/tests/CreatesApplication.php
+++ /dev/null
@@ -1,21 +0,0 @@
-make(Kernel::class)->bootstrap();
-
- return $app;
- }
-}
diff --git a/Updated_Cms/tests/Feature/AuthenticationTest.php b/Updated_Cms/tests/Feature/AuthenticationTest.php
deleted file mode 100644
index 0e8ab19d4c..0000000000
--- a/Updated_Cms/tests/Feature/AuthenticationTest.php
+++ /dev/null
@@ -1,27 +0,0 @@
-create();
-
- $response = $this->post('/login', [
- 'username' => $user->username,
- 'password' => 'password',
- ]);
-
- expect($response->status())->toBe(302)
- ->and(auth()->check())->toBeTrue()
- ->and(parse_url((string) $response->headers->get('Location'), PHP_URL_PATH))->toBe('/user/me');
-});
-
-test('users can not authenticate with invalid password', function (): void {
- $user = User::factory()->create();
-
- $this->post('/login', [
- 'username' => $user->username,
- 'password' => 'wrong-password',
- ]);
-
- expect(auth()->guest())->toBeTrue();
-});
diff --git a/Updated_Cms/tests/Feature/RegistrationTest.php b/Updated_Cms/tests/Feature/RegistrationTest.php
deleted file mode 100644
index 1ac56a7547..0000000000
--- a/Updated_Cms/tests/Feature/RegistrationTest.php
+++ /dev/null
@@ -1,17 +0,0 @@
-post('/register', [
- 'username' => 'Test_User',
- 'mail' => 'test@example.com',
- 'password' => 'password',
- 'password_confirmation' => 'password',
- 'terms' => true,
- ]);
-
- expect(auth()->check())->toBeTrue()
- ->and($response->status())->toBe(302)
- ->and(parse_url((string) $response->headers->get('Location'), PHP_URL_PATH))->toBe(parse_url(RouteServiceProvider::HOME, PHP_URL_PATH));
-});
diff --git a/Updated_Cms/tests/Pest.php b/Updated_Cms/tests/Pest.php
deleted file mode 100644
index 4da3fb6212..0000000000
--- a/Updated_Cms/tests/Pest.php
+++ /dev/null
@@ -1,54 +0,0 @@
-in('Feature');
-
-/*
-|--------------------------------------------------------------------------
-| Expectations
-|--------------------------------------------------------------------------
-|
-| When you're writing tests, you often need to check that values meet certain conditions. The
-| "expect()" function gives you access to a set of "expectations" methods that you can use
-| to assert different things. Of course, you may extend the Expectation API at any time.
-|
-*/
-
-expect()->extend('toBeOne', fn () => $this->toBe(1));
-
-/*
-|--------------------------------------------------------------------------
-| Functions
-|--------------------------------------------------------------------------
-|
-| While Pest is very powerful out-of-the-box, you may have some testing code specific to your
-| project that you don't want to repeat in every file. Here you can also expose helpers as
-| global functions to help you to reduce the number of lines of code in your test files.
-|
-*/
-
-function installHotel(): void
-{
- WebsiteInstallation::query()->insert(['completed' => true, 'installation_key' => 'key']);
-
- WebsiteSetting::query()->insert([
- 'key' => 'max_accounts_per_ip',
- 'value' => 10,
- 'comment' => '',
- ]);
-}
diff --git a/Updated_Cms/tests/TestCase.php b/Updated_Cms/tests/TestCase.php
deleted file mode 100644
index bca3bde927..0000000000
--- a/Updated_Cms/tests/TestCase.php
+++ /dev/null
@@ -1,51 +0,0 @@
-createTestDatabase();
-
- // Run migrations (including CoreSqlFile migration)
- $this->artisan('migrate:fresh');
-
- // Force TestingSeeder to run
- $this->artisan('db:seed', ['--class' => TestingSeeder::class]);
-
- RefreshDatabase::$migrated = true;
- }
-
- $this->beginDatabaseTransaction();
- }
-
- protected function createTestDatabase(): void
- {
- $database = config('database.connections.mariadb.database');
- $connection = config('database.connections.mariadb');
-
- // Connect to MariaDB without specifying database
- $tempConnection = [
- 'driver' => 'mysql',
- 'host' => $connection['host'],
- 'port' => $connection['port'],
- 'username' => $connection['username'],
- 'password' => $connection['password'],
- ];
-
- config(['database.connections.temp' => $tempConnection]);
-
- DB::connection('temp')->statement("CREATE DATABASE IF NOT EXISTS `{$database}`");
- DB::purge('temp');
- }
-}
diff --git a/Updated_Cms/tests/Unit/ExampleTest.php b/Updated_Cms/tests/Unit/ExampleTest.php
deleted file mode 100644
index 963bc0ca9e..0000000000
--- a/Updated_Cms/tests/Unit/ExampleTest.php
+++ /dev/null
@@ -1,5 +0,0 @@
-toBeTrue();
-});
diff --git a/Updated_Cms/vite.config.js b/Updated_Cms/vite.config.js
deleted file mode 100644
index 060f63eb50..0000000000
--- a/Updated_Cms/vite.config.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import { defineConfig } from "vite";
-import laravel from "laravel-vite-plugin";
-import path from "path";
-import tailwindcss from "tailwindcss";
-
-export default defineConfig({
- plugins: [
- laravel({
- input: [
- "resources/css/global.css",
- "resources/js/global.js",
- ],
- }),
-
- {
- name: "blade",
- handleHotUpdate({ file, server }) {
- if (file.endsWith(".blade.php")) {
- server.ws.send({
- type: "full-reload",
- path: "*",
- });
- }
- },
- },
- ],
- resolve: {
- alias: {
- "@": "/resources/js",
- },
- },
- css: {
- postcss: {
- plugins: [
- tailwindcss({
- config: path.resolve(__dirname, "tailwind.config.js"),
- }),
- ],
- },
- },
-});